|
请问 PC机与AT89S51串口通信为什么会错呢?
[复制链接]
各位高手,我上位机用的串口助手V2.2 下位机是51单片机,两个之间的硬件链接绝对正确,绝对可靠。且二个比特率都是9600,最常用最简单那种工作方式。用单片机向PC机发送数据永远正常,没有错误。
可是我做实验时候用串口助手发送4个16进制数 比如“F8 00 AA 8F”,51再把接收到的4个16进制数发送给PC,问题就出来了,串口助手显示的接收到的4个16进制数没有几次是正确的。我郁闷 这是为什么啊?我觉得是我51的接收程序有问题,可是我怎么也查不出来啊,请指教 谢谢。
代码:
void init_uart() //初始化串口函数
{
TMOD = 0x20;
TH1 = 250;
TL1 = 250;
TR1 = 1;
PCON = 0x80;
SCON = 0x50;
}
void recev() //接收程序
{
RI = 0;
while(!RI)
sheet[0] = SBUF;
RI = 0;
RI = 0;
while(!RI)
sheet[1] = SBUF;
RI = 0;
while(!RI)
sheet[2] = SBUF;
RI = 0;
while(!RI)
sheet[3] = SBUF;
RI = 0;
}
开始我觉得上面这个这个程序不好,写成循环的也不行,望高手严厉批评
void recev() //接收程序
{
for(k=0;k<4;k++)
{
RI = 0;
while(!RI)
sheet[k] = SBUF;
}
}
|
|