按键松手检测 |
您所在的位置:网站首页 › c语言按键检测 › 按键松手检测 |
u8 KEY_Scan(void)
{
static u8 keyup=1; //防止检测多次
if(keyup&&(KEY0==0||KEY1==0||KEY3==0))
{
delay_ms(50);//去抖
if(KEY0==0||KEY1==0||KEY3==0)
{
keyup=0;
if (KEY0==0)
return KEY0_PRES;
else if(KEY1==0)
return KEY1_PRES;
else if(KEY3==0)
return WKUP_PRES;
}
}
else if(KEY0==1&&KEY1==1&&KEY3==1) //若按键全部松开
keyup=1;
return 0;
}
今天写按键的一个小程序,发现没有松手检测,如果一直按着按键不松开,会一直触发,执行程序。然后发现例程的检测程序,感觉不错。 设置一个静态变量,当此变量为一,并且有按键按下时,进入按键判断函数。进入后把变量设置为0。若一直按着按键,一直执行不到最后若按键全部松开,keyup=1,所以,不会执行多次。 还可以设置一个参数,确定是否需要检测多次: u8 KEY_Scan(u8 mode) { static u8 key_up=1;//按键按松开标志 if(mode) key_up=1; //支持连按 if(key_up&&(KEY0==0||KEY1==0||KEY3==0)) { delay_ms(10);//去抖动 key_up=0; if(KEY0==0)return KEY0_PRES; else if(KEY1==0)return KEY1_PRES; else if(KEY3==0)return WKUP_PRES; }else if(KEY0==1&&KEY1==1&&KEY3==1)key_up=1; return 0;// 无按键按下 } 若mode置一,说明支持连按,则keyup一直为一,会重复检测2016/1/16
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |