打印

红色代码和蓝色代码在编译后的执行结果上会不一样。

[复制链接]
1561|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tj_zhaozq|  楼主 | 2010-3-28 15:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 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 . 红色部分能够正常工作,而蓝色的确有时会出问题。

相关帖子

沙发
ejack| | 2010-3-28 16:41 | 只看该作者
实现的功能都不一样,怎么比较?
两种语句通过指针写入的偏移是不同的。

使用特权

评论回复
板凳
tj_zhaozq|  楼主 | 2010-3-30 20:54 | 只看该作者
呵...漏写了-1了.
指针这次相同了.

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

97

主题

155

帖子

0

粉丝