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

本文介绍了如何在C语言中一次性检测7种按键状态,包括首次按下、持续按住、释放等,强调了实时系统中信号的判断策略,并通过伪代码展示了实现方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


前言

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

按键有哪7种状态?

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

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

第一次不按是起始状态=状态1
第二次不按与第一次不按相比较状态未改变=状态2
第三次按下不松开与第二次不按相比较状态改变=状态3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值