本帖最后由 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);
|