打印

串口通讯时被0x0d这个回车符搞晕了

[复制链接]
6915|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lijay|  楼主 | 2007-1-24 11:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这是我写的串口发送程序,目的是想显示百分比(hour_per),第二个数把第一个数覆盖掉,我在keil中仿真,串口显示正常的,但是连上硬件,用串口调试助手,百分比显示不能覆盖,而是一条龙地显示下去。我一为0x0d没有发送出去,但是我把0x0d改成别的字符却能够发送出去的,是不是硬件不认0X0D啊?
还有,是不是0x0d仅回车,0x0a仅换行啊?
高手帮忙!
void UART_send_hour_per(void)
{
    xdata uchar temp[4]={0x00,0x00,0x25,0x0d};
    uchar *p;
    IE&=~0x10;//disable uart interrupt
    temp[0]=(hour_per/10)+0x30;
    temp[1]=(hour_per%10)+0x30;
    p=&temp[0];
    do{
      SBUF0=*p++;
      while(TI0==0);//等待发送结束
      TI0=0;
      }while(!(0x0d==*(p-1)));
    IE|=0x10;//enable uart interrupt
}

相关帖子

沙发
lijay|  楼主 | 2007-1-24 14:11 | 只看该作者

晕啊!高手进来帮忙啊!

使用特权

评论回复
板凳
lijay|  楼主 | 2007-1-24 15:37 | 只看该作者

用超级终端调试

用超级终端调试,问题就不存在了
不知道这些个调试助手软件是怎么编的!
不过认识到一个问题:能用硬件仿真的情况下尽量别用软件仿真

使用特权

评论回复
地板
lixun00| | 2007-1-24 15:48 | 只看该作者

不知道你硬件怎么回事,但显示有坐标的概念,具体看怎么编码

在记事本里(txt文件)里换行表示为0d0a

使用特权

评论回复
5
yanfengzhu| | 2007-1-24 19:03 | 只看该作者

在keil软件仿真中,0x0d仅回车,0x0a仅换行。

在keil软件仿真中,0x0d仅回车,0x0a仅换行。但是在一些软件里0x0d被自动解释为回车换行。不一样的。

使用特权

评论回复
6
lijay|  楼主 | 2007-1-25 08:33 | 只看该作者

回楼上

keil里面的0D和0A正如楼上所说,但是我遇到的几种串口调试软件好像是把0A解释成了回车换行,而0D却不给予解释,就好像没收到一样(实际用十六进制显示是收到了)

使用特权

评论回复
7
zhaoyu2005| | 2007-1-25 19:57 | 只看该作者

是你没有找对串口调试工具

我用过的串口调试工具里就有你说的功能的,但是我了解的解释是这样的:0x0d和0x0a 一个是另起一行,一个是回到行首,我当初调试手机模块的时候里用到0d 0a,是一起用的,每一个返回值后面都有,不用16进制显示就自动另起一行

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

43

帖子

0

粉丝