单片机通讯程序问题

2019-07-15 17:49发布

最近做一个单片机的通讯程序,问题很怪!求解!
1.晶振采用12MHZ,初始化为4800的波特率,有大概0.16%误差!
2.接收采用中断接收,发送采用查询方式,放在主程序里面。
3.如果没有中断,则发送A代码,接受数据正确返回B代码,接受错误返回C代码,分别置有标志位。
4.另外还有一个定时器中断作为显示输出。
5.主程序中增加了I2C的读写程序。
目前的现象为:
在程序测试的时候,有接近一半的几率返回的数据不对,如果没有通讯中断的时候,所有返回的数据是正确的。一旦通讯中断,会返回错误的数据(错误的数据一般由A数据的一部分和B(或者C)数据的一部分组成。)如果将数据发送频率加快以后,所有数据又会恢复正常。如果硬件重新上电,则又会错误?

调试完成后DATA 115. 用的stc90C51.  A,B,C发送代码放在一个数组里面。
求解!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。