T个月 2022-11-02 21:00 采纳率: 79.2%
浏览 23
已结题

单片机I/O口模拟UART串口通信程序,两次检测低电平为什么一次取非,一次不取

单片机I/O口模拟UART串口通信程序,最开始进入StartRXD()函数前检测低电平,写的是whike(PIN_RXD)。但是后面进入中断之后再次确认是否是低电平,又写的是if(!PIN_RXD),这里对PIN_RXD取非了,那么同样检测低电频,为什么两次程序不一样呢
程序如下

img

img

img

img

  • 写回答

1条回答 默认 最新

  • Star ZY 2022-11-03 14:06
    关注

    额,我觉得你没理解好吧,你画出来书上的两条线也解释得很清楚了。第一次检测到低电平,开定时器,然后进入中断,在中断里面再次判断一下电平信号是不是还是处于低电平的状态,如果还是低电平那么if( !RXD ) 这个对RXD取非得条件就成立了,就清空缓冲区准备接收数据了。如果不是低电平,就是干扰信号不接收了。所以你前半段理解是对得,它确实是要再检测一次低电平,但是为什么是if( !RXD )呢,是因为它要利用这低电平做一个条件去执行一些东西。因为低电平RXD = 0,取非 (!RXD)就等于1,然后就能进去if()里面去干活去了。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月13日
  • 已采纳回答 11月5日
  • 创建了问题 11月2日

悬赏问题

  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效