本帖最后由 tj_zhaozq 于 2010-3-30 20:53 编辑
if(RI0){ //是发送中断还是接收中断
RI0 = 0; //清接收标志位
#if 0
if (++g_nFifoRecvEnd != g_nFifoRecvStart)
UartRecvBuf[g_nFifoRecvEnd-1] = SBUF0; //保存接收到的数据//之前漏写了-1
else
g_nFifoRecvEnd--;
#else
if (g_nFifoRecvEnd +1 != g_nFifoRecvStart)
UartRecvBuf[g_nFifoRecvEnd++] = SBUF0; //保存接收到的数据
#endif
}
注:
1. 串口中断是最高优先级,不可能有最高的优先级的中断将其打断。
2 . 红色部分能够正常工作,而蓝色的确有时会出问题。 |