谁能看看串口通信部分接受多字节的部分程序对吗,为什么我的程序接收不到数据呢。
RI=0;
while(1) //等待接收第1个字节,触摸后,每组第1字节一定是0A0H
{
while(RI==0);
RI=0;
if(SBUF==0xA0) break;
};
while(RI==0);
RI=0;
x=SBUF; //接收第2个字节,低4位是X坐标的D9-D6位,高4位为0.
while(RI==0);
RI=0;
x=(x<<6)|SBUF; //收第3个字节,低6位时X坐标的D5-D0位,高2位为0.
while(RI==0);
RI=0;
y=SBUF; //接收第4个字节,低4位时Y坐标的D9-D6位,高4位为0.
while(RI==0);
RI=0;
y=(y<<6)|SBUF; //接收第5个字节,低6位时Y坐标的D5-D0位,高2位为0.
while(1) //等待接收第1个字节,触摸后,每组第1字节一定是0A0H
{
while(RI==0);
RI=0;
if(SBUF==0xA0) break;
while(RI==0);
RI=0;
x=SBUF; //接收第2个字节,低4位是X坐标的D9-D6位,高4位为0.
while(RI==0);
RI=0;
x=(x<<6)|SBUF; //收第3个字节,低6位时X坐标的D5-D0位,高2位为0.
while(RI==0);
RI=0;
y=SBUF; //接收第4个字节,低4位时Y坐标的D9-D6位,高4位为0.
while(RI==0);
RI=0;
y=(y<<6)|SBUF; //接收第5个字节,低6位时Y坐标的D5-D0位,高2位为0.
};
试试,都不知道你要干嘛的。
while(1) //等待接收第1个字节,触摸后,每组第1字节一定是0A0H
{
while(RI==0);
RI=0;
if(SBUF==0xA0) break;
};
这个之后能跳出来吗?
我不太清楚,因为这部分是网上找的,而且编的程序其他部分都对着呢除了这部分,但是不清楚这部分到底哪出错了,第一次写关于串行接收的程序,没经验,能给个串行接收多字节的程序最好。
我已经解决了,加了串行中断,但现在我还有个问题想问你。就是我要接受三次串行数据间隔为20ms,是不是每次接受完数据,都要清RI,然后再重新初始化串口,还是该怎么弄。
是,RI需要手动清零。不需要重新初始化串口程序。定时器是自动重装载TMOD=0x20;
支持支持,谢谢谢
支持支持,谢谢谢谢!