单片机通讯程序问题

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发送代码放在一个数组里面。
求解!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
agebaby
1楼-- · 2019-07-15 18:02
错误发生了以后,采用原有的代码单独测试了通讯的接收和发送程序,不会出现错误!
但是一旦加入了其它的读写程序,则会出现问题。
是否程序占用空间太大了的原因,数据存储读取不正常了?
lwx2010
2楼-- · 2019-07-15 19:09
agebaby 发表于 2015-2-8 21:08
错误发生了以后,采用原有的代码单独测试了通讯的接收和发送程序,不会出现错误!
但是一旦加入了其它的读 ...

那肯定是读写操作出错了,可能是读写时序不对
zzjlwxl
3楼-- · 2019-07-15 20:25
“定时器中断作为显示输出”这部分移到主程序
agebaby
4楼-- · 2019-07-15 22:04
 精彩回答 2  元偷偷看……

一周热门 更多>