按键松手检测

您所在的位置:网站首页 c语言按键检测 按键松手检测

按键松手检测

2024-07-10 11:10| 来源: 网络整理| 查看: 265

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