#define KEY_DELAY__TIME 100
#define KEY_LONG__TIME 200
unsigned char key1_lock_flag;//锁标志
//unsigned char key1_cnt;//消抖计数
unsigned int key1_cnt;//消抖计数
unsigned char Key_Scan()
{
unsigned char KeyNum=0;//标志按下的是哪个按键
if(KEY1)//未按下
{
key1_lock_flag=0;//清零
key1_cnt=0;//清零
if(key1_short_flag)
{
key1_short_flag=0;
KeyNum=1;//短按的编码
}
}
else if(!key1_lock_flag)//按键按下且为第一次按下
{
key1_cnt++;//消抖计数
if(key1_cnt>KEY_DELAY_TIME)
{
key1_short_flag=1;//短按的标志置1
}
if(key1_cnt>KEY_LONG__TIME)
{
key1_cnt=0;
key1_short_flag=0;
key1_lock_flag=1;//锁住,防止重复触发
KeyNum=11;//长按的编码
}
}
return KeyNum;//返回按键标志号
}
void Key_Service()
{
switch(Key_Scan())
{
case 0:break;//没有按键按下
case 1://第一个按键按下
}
}
2-2 独立按键短按与长按
最新推荐文章于 2024-07-23 08:01:53 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)