下面的代码是自己写的串口通信收发程序。从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;转到中断返回子程序
|