单片机串口通信多字节接收问题

来源:百度知道 编辑:UC知道 时间:2024/06/28 04:22:48
通过串口调试助手向单片机发送一串数据,在单片机上只能接收到第一个字节,请教下怎么解决。
例如我一次发2个字节,这样来接收
while(RI==0);
a[0]=SBUF;
RI=0;
while(RI==0);
a[1]=SBUF;
RI=0;
只有a[0]能接收到第一个字节,a[1]收不到第二个字节
我用keil模拟的时候没有这种问题
用仿真器模拟的时候就出现这种问题

第二个while(RI==0);有问题

你这样不行的,只有一帧数据发送完成了,RI才置位,需要手动清零。
可以改成
uchar x;
for(x=0;x<=2;)
{
while(RI)
{a[x]=SBUF;
RI=0;
x++;
}
}