打印

串行通讯疑问

[复制链接]
1475|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yanshi|  楼主 | 2011-8-12 18:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yanshi 于 2011-8-12 18:22 编辑

一个设备通过串口输出数据,接收输出数据格式上说明是15个字节,而我用12MHz的STC89C52单片机经过MAX232转化电平后接收数据,设备可设置成1秒发送一次数据,但是我用如下程序无法跳出接收循环。这个设备一上电就开始传输数据
其中接收的前两个字节是帧头0xAA,第三个字节是数据长度0x0d,最后一个字节是校验字我没有使用
请问谁能指教一下这个循环为什么跳不出?

do{
  for(i=0;i<15;i++)
   {
    while(!RI);
    str=SBUF;
    RI=0;
   }
  SCON=0;
  if((str[0]==0xAA)&&(str[1]==0xAA))
    {
   
     a=str[9];
     b=str[10];   
     i=0;
     flag=1;
     flag3=1;

   }
  else SCON=0x50;
} while(!flag3);

相关帖子

沙发
草履虫| | 2011-8-15 18:58 | 只看该作者
str++ = SBUF;同时把scon = 0及else scon= 0x50这两句去掉.

使用特权

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

本版积分规则

0

主题

20

帖子

1

粉丝