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

[复制链接]
2127|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

粉丝
快速回复 在线客服 返回列表 返回顶部