C程序怎样样判断连续两次按键

C程序怎样样判断连续两次按键,第1张

首先,连续两次按键不是C的功能(严格讲,C标准没有按键这个功能的)而是你渗昌的 *** 作系统或平台的功能(如单片机和PC肯定不同)windwos下,1般编译器有1个kbhit()函数(VC,gcc,c++builder都有)它可判断是不是有键按下,这样就能够实现你的要胡颤求以下程序连丛做扒续两次按键后退出#includeconio.hintmain(){while(kbhit()==0)getch()///按了1次while(kbhit()==0)getch()///按了2次return0}固然,如果你是单片机或其它平台,kbhit()或许就要自己实现了

我实验过单按键的多功能 *** 作:单按,长按,双按,不过是用C做的,用状态机做的,也相对比较复杂,不是一两个语句可以实现的,很久没用汇编了,手头也没有可以实验的板子,程序就不写了,大致写法可以说下:

10ms为检测间隔——检测到按钮按下——去抖,若连续两次检测到,则确认按钮被按下第一次——等待按钮释放——计时50毫秒(5间隔),在此时间内若又一次检测到按钮按下,视作抖动——等待释放,时间清0,重新计时——50毫秒后再孙春检测到连续两次以上的按钮按渗态下状丛凯源态,则双按确认。

每种协议都是不一样的,比如是日立的协议吧,就是通常说的一种,长按时发的第一个32位是对应的地址码,命令码及其反码,但是按键一直按下时,则每隔固定时间发送的是重复码,这个重复是固定知橘一组编码,与你按键对应的的地址和命令没搭乎团有任何关系,也就是说任何长按的重复码都是一样的;

而连续按则不同,按键松开后再按,则再次发送对应地址码,命令码及其反码,不发送重复码。

程序可以根据具体的编码时序分支处理,若是连续按,则顷宽跳入一个分支,否则跳入长按处理,长按里面判断很简单,则将上一次的结果重复一次即可。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12279280.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-22
下一篇2023-05-22

发表评论

登录后才能评论

评论列表(0条)

    保存