|
|
前往: |
| 在程序调试中遇到的串口打印输出问题 |
| 发表人 | 内容 | |
|---|---|---|
| 2011/11/15 12:49 |
|
|
|
[楼主位] ljc2046
等级:
注册时间:![]() 2011/08/30 14:00 文章: 1 离线 |
一.问题
以上的问题是我在程序调试中实验的结果: 实际遇到的问题是:要验证读写寄存器是否正确,如 把数据写入寄存器地址: WriteRegister( adderss, data ); WriteRegister( 1, 15 ); 读数据寄存器地址: ReadRegister(address); ReadRegister(1); 二.设计的解决问题方法 但这个过程是在单片机里面实现的,现在程序不能通过,我不能确认出现是在那个地方出现了问题。 现在要设计一个步骤来检查子程序是否正确。我觉得pfintf是一个好方式,可以这样设计: unsigned char i; i= ReadRegister(1); printf("i的值为:%d ;",i); 这样可以认为i=15那么我的读写寄存器子程序就没有问题,如i=别的值这个读写寄存器子程序就不正确。 三.串口打印中遇到的问题 printf("15\n "); 在打印输出中可以得到结果:15. 而换一种方式: i=15; printf("i的值为:%d ;",i); 可以得到i的值为:3840. 想知道原因,求解决办法。 四.对问题的总结 2.所有问题是怎么验证在编程过程中我所编的子程序正确性,如果本身语法没有问题。对于像我这种刚学习编程的人来说,手里面没有验证过的保证正确的子程序,是个很大的问题。 如果谁又好的方法请不吝赐教,我在这膜拜了。 3.求解printf是否能读出寄存器里面的值 printf输出是个好方法,但不是这么直接用,我在网上少见有人讨论,我了解的是要把十六进制转换成ASICII后才能显示。 我不晓得事实是不是这样,如果是,请高手指教。 |
|
|
||
| 2011/11/15 12:56 |
|
|
|
[1楼] 正点原子
等级:
注册时间:![]() 2010/12/02 10:41 文章: 8089 来自: 湖南 在线 |
回复【楼主位】 ljc2046 :
--------------------------------- 思路是对的. 至于i是3840,我也表示怀疑.不应该是3840的. printf可以设置输出格式的.如果是%d,表示十进制. 楼主可以参考下我们的usmart,你的这些在usmart上直接就有实现. 搜索论坛. |
|
|
我的淘宝小店:http://shop62103354.taobao.com |
||
|
||
|
|
||
|
| 前往: |