I have done it. Sorry for my English level. It's complex, so I have to use Chinese.
依据8031的CPU手册,发送串口数据给CPU的时候,CPU需要一位一位的收取,如果上一位还没收取完成,就送下一位,肯定会覆盖掉前一位的数据。另外,如果CPU处于中断状态,串口中断优先级最低,也会造成数据丢失。
解决办法是: 1,在8031的ROM里将串口中断优先级提高,不要轻易 CLR EA 2,在游戏驱动里,将连续发送的的字符先存入队列,例如 #include <queue> std::queue<int> m_fifo; //串口缓冲 然后等上一个数据发送完成,并且CPU回调的时候,再发送下一个数据。
|