今日头条
关于51单片机,串口中断发送与接收出现数据丢失问题
串口中断的接收器具有双缓冲结构,即在从接收寄存器中读出前一个已收到的字节之前,便能接收第2个字节,如果第2个字节已经接收完毕,第1个字节还没有被读出,则将丢失其中一个字节,所以在发送完SBUF中的字节后,就必须立刻进入中断,而且CPU此时,也必须是空闲的。若在发送与接收之间,CPU是忙状态,就会出现丢失数据现象。
因此,串口中断必须是这样一个结构。
if(flag==1)
{
flag=0;
Serial_SendByte();//此函数发送完数据会进入串口中断
//此处不能有任何数据出现,否则会占用CPU时间,处于忙状态,就不能无间隔的去处理中断。
}
全部0条评论
快来发表一下你的评论吧 !