长短按触发c语言程序,分析一个按键程序(长按 短按 双击)

本文详细分析了一个C语言实现的按键处理程序,涵盖按键的长短按、双击检测逻辑。通过STATE_KIDEL、STATE_KDOWN、STATE_KUP三个状态,实现了对按键状态的跟踪,包括长按、短按和双击的识别与响应。程序通过计数器和状态切换来判断不同类型的按键事件,并将相应事件向上层应用报告。
摘要由CSDN通过智能技术生成

STATE_KIDEL:

如果有按键,查表,看是第几个按键。(排除8个IO口中,你不用做按键的那些IO。另外也是keyport中是从0开始的,而记在temp中是从0开始的)。

Key_ThisValue=temp+1;       当前键值

KeyState=STATTE_KDOWN;   按键状态

KeyDn_Cnt=KEY_LONGTIME; 按键按下持续时间置为KEY_LONGTIME,减到0就表示长按时间到了。

如果没有按键,break跳出。

STATE_KDOWN:

如果按键松开了,判断长按时间到。

--> 如果长按时间到了,

Key_OldValue=0;

KeyState=STATE_KIDEL;回到闲置状态

gKeyBuf=Key_ThisValue+LONG_KEY_UP;

gbHaveKey=TRUE;

——————> 长按

--> 如果长按时间还没有到,如果按键抬起了,有可能是双击。

KeyState=STATE_KUP;设置了KeyState为STATE_UP,如果时间到了,表示按键按下后,又弹起,弹起的时间够了。

KeyUp)Cnt=KEY_TWICETIME;

如果按键没有松开

--> 如果长按时间到了

Key_ThisValue+=LONG_KEY;

gKey

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值