Key_Lock按键锁防止按键连按

常用按键检测函数会出现按键按下连续触发的问题,在每次按键触发前判断按键所处的状态会避免这个问题。

函数如下:


void Read_Keyvalue()
{
/************************************/
if(KEY1 != 1) //按键未按下
{
key1_Lock = 0;
}
if(KEY1 == 1)
{
delay_ms(50); //消抖
if(KEY1 == 1)
{
if(key1_Lock == 0) //按键之前没有按下
{
printf("Key1 pressed \r\n"); //TestCode
key_num = 1;
}
}
key1_Lock = 1; //按键按下 上锁
}
/************************************/


/************************************/
if(KEY2 != 0)//按键未按下
{
key2_Lock = 0;
}
if(KEY2 == 0)
{
delay_ms(50);
if(KEY2 == 0)
{
if(key2_Lock == 0)
{
printf("Key2 pressed \r\n");
key_num = 2;
}
}
key2_Lock = 1;
}

}

每次按键按下前先检测按键状态,按键没有按下,将Lock置0。按键按下时先判断Lock的置值,当Lock=0时,表示之前的按键是没有按下的,可以进入按键触发,然后将Lock置1,按键没有抬起就一直为1。当Lock=1时,表示当前按键处于按下状态,即上一次按键按下还未抬起,就不进入按键触发。这样可以避免按键按下一次连续返回按键触发的动作。这种处理在按键按下一次返回一次值的需求时非常有效。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值