您的位置 首页 IOT

独立按键的长按与短按

按键扫描函数,支持按键长按和短按,长按与短按的区别可以放到10ms的定时里面,根据需要设置判断次数按键处理函数返回按键值mode:0,

按键扫描函数,支撑按键长按短按,长按与短按的差异能够放到10ms的守时里边,根据需要设置判别次数

//按键处理函数
//回来按键值
//mode:0,不支撑接连按;1,支撑接连按;
//0,没有任何按键按下
//1,KEY0按下
//2,KEY1按下
//3,KEY2按下
//4,KEY3按下 WK_UP
//留意此函数有呼应优先级,KEY0>KEY1>KEY2>KEY3!!
u8 Key_Scan(u8 mode)
{
static u8 key_up=1;//按键按松开标志
if(mode)key_up=1;//支撑连按
if(key_up&&(KEY0==0||KEY1==0||KEY2==0||KEY3==1))
{
delay_ms(10);//去颤动
key_up=0;
if(KEY0==0)return KEY_RIGHT;
else if(KEY1==0)return KEY_DOWN;
else if(KEY2==0)return KEY_LEFT;
else if(KEY3==1)return KEY_UP;
}else if(KEY0==1&&KEY1==1&&KEY2==1&&KEY3==0)key_up=1;
return 0;// 无按键按下
}

//0,没有任何按键按下
//1,长按
//2,短按

u8 Key_long_short(void)
{
static u8 oldkey,newkey;
static u8 keylongnum;
static u8 keylongflag;
u8 key;

newkey = Key_Scan(1);

if(newkey!=0)
{
if(oldkey==newkey)
{

keylongnum++;
if(keylongnum>100)
{
keylongnum=0;
keylongflag=1;
key = 1;
}

}

}
else
{

if((oldkey!=0)&&(keylongflag!=1))
{
key = 2;
}
else
{
key = 0;
}
keylongnum=0;
keylongflag=0;
}
oldkey=newkey;
return(key);
}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/yingyong/iot/258455.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部