新手求助,按键长按+短按,定时器怎么写?
求助论坛的大大,我百度了好多案例,感觉都不合适,也许是我不会搜索 。现在有2个按键,3个LED灯,当S1 长按5秒后,然后间歇的安S2按键,3个LED灯会有2的3次方=8个变化。请问下,这个按键实现我想用定时器实现,应该怎么写?求指导或者例子也行,或者有哪个帖子适合的,麻烦网址告知一下。先谢谢各位了。
定时器只用用来设定某一个时间片到达后就进入中断,其实就是相当于一个延时~只是用了时间片的思想啦~下面是我常用的一段扫描按键的方法~
/***按键扫描******/
void KeyScan()
{
static unsigned char state=0;
unsigned char temp;
if(key1==0) temp=key1_Value;
else if(key2==0) temp=key2_Value;
else if(key3==0) temp=key3_Value;
else if(key4==0) temp=key4_Value;
else temp=0;
switch(state)
{
case 0: if(temp!=0) state=1;
break;
case 1:state=2;
break;
case 2: if(temp!=0) {state=3; KeyPress=temp;}
else state=0;
break;
case 3: if(temp==0) {HandleKeyPress(); state=0;} / /按键扫描后的处理
break;
}
}
你只需要在定义一个变量,如ms_1=10,让它在中断里面做减减~然后用
if(ms_1<=0)
{
KeyScan();
ms_1=10;
}
这样就可以扫描按键实现消抖。中断一般也就这么用的吧。看不懂小编的问题,希望对你有用~
先判断出按钮的按下动作,然后计数,根据定时器的定时时间计时就行了吧
非常感谢。磕磕碰碰的终于自己搞定了一个小程序。