单片机I/O口模拟UART串口通信程序,最开始进入StartRXD()函数前检测低电平,写的是whike(PIN_RXD)。但是后面进入中断之后再次确认是否是低电平,又写的是if(!PIN_RXD),这里对PIN_RXD取非了,那么同样检测低电频,为什么两次程序不一样呢
程序如下
单片机I/O口模拟UART串口通信程序,两次检测低电平为什么一次取非,一次不取
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- Star ZY 2022-11-03 14:06关注
额,我觉得你没理解好吧,你画出来书上的两条线也解释得很清楚了。第一次检测到低电平,开定时器,然后进入中断,在中断里面再次判断一下电平信号是不是还是处于低电平的状态,如果还是低电平那么if( !RXD ) 这个对RXD取非得条件就成立了,就清空缓冲区准备接收数据了。如果不是低电平,就是干扰信号不接收了。所以你前半段理解是对得,它确实是要再检测一次低电平,但是为什么是if( !RXD )呢,是因为它要利用这低电平做一个条件去执行一些东西。因为低电平RXD = 0,取非 (!RXD)就等于1,然后就能进去if()里面去干活去了。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥20 wireshark抓不到vlan
- ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
- ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
- ¥15 stata安慰剂检验作图但是真实值不出现在图上
- ¥15 c程序不知道为什么得不到结果
- ¥40 复杂的限制性的商函数处理
- ¥15 程序不包含适用于入口点的静态Main方法
- ¥15 素材场景中光线烘焙后灯光失效
- ¥15 请教一下各位,为什么我这个没有实现模拟点击
- ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来