分享一块很有意思的C代码(四),如何一次性检测7种按键信号状态?跳变沿检测?一次检测?持续检测?【原创】


前言

本文内容灵感来自于工作中接触的项目代码(但又不同,我稍加优化了一下。。。

按键有哪7种状态?

因为实时性系统中信号只会判断第一次,即第二次及以后的信号不判断,且在一些场景下我们会检测信号跳变,而且有的信号只检测一次就行,有的信号要持续检测,因此举例了以下7种状态,在伪代码中可以很好看到

第1个时间片:第一次不按=第一次低电平=会仅判断一次
第2个时间片:第二次不按=第二次保持低电平=会持续判断
第3个时间片:第三次按下不松开=第三次低电平切换到高电平的高电平=信号跳变要判断
第4个时间片:第四次按下不松开=第四次保持高电平=会仅判断一次
第5个时间片:第五次按下不松开=第五次保持高电平=会持续判断
第6个时间片:第六次松开=第六次高电平切换到低电平的低电平=信号跳变要判断
第7个时间片:第七次松开=第七次保持低电平=会仅判断一次

第一次不按是起始状态=状态1
第二次不按与第一次不按相比较状态未改变=状态2
第三次按下不松开与第二次不按相比较状态改变=状态3
第四次按下不松开与第三次按下不松开相比较状态未改变=状态4
第五次按下不松开与第四次按下不松开相比较状态未改变=状态5
第六次松开与第五次按下不松开相比较状态改变=状态6
第七次松开与第六次松开相比较状态未改变=状态7

其中,状态3与状态6看起来都是状态改变,但是实际上状态改变后的结果并不

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值