标题: 请教C51单片机串口收发出现的奇怪问题,返回数据不正确 [打印本页]

作者: lsgzq    时间: 2019-8-8 16:29
标题: 请教C51单片机串口收发出现的奇怪问题,返回数据不正确
下面的代码是自己写的串口通信收发程序。从PC发给单片机16进制的数据,单片机收到后原样返回给PC机,程序能够运行,但单片机返回的数据有时候字符不正确(发送十次大约有一二次返回给PC的数据不正确,比如PC机发出的是7E,经过单片机返回的数据PC收到后不是7E),请教高手,看看是什么原因。


rs232:;串口中断处理程序
push dpl; 压栈保存断点
push dph;压栈保存断点
jnb ri,rett;判断是不是串口接收中断,不是接收中断就返回
mov a,sbuf;接收上位机发来的一个字节
clr ri;清接收中断
clr ti;清发送中断、
acall cc;调用延时程序,做为字符间隔
mov sbuf,a;将刚才上位机发来的一个字节通过串口再发送到上位机
acall cc;调用延时程序,做为字符间隔
clr ti;清发送中断
clr ri;清接收中断
ajmp rett;转到中断返回子程序



作者: ryan.lee    时间: 2020-7-20 11:07
可能是波特率不准确!用示波器看下一个BIT的脉宽是否正确
作者: SKYLAR123    时间: 2020-7-20 11:20
51单片机的9600波特率12MHZ的出错率为6%,如果是11.0952还会好点




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1