一个按键怎么实现长短按键,以实现两种或多种功能?
老师们,请问问一个按键怎么实现不同的功能呢?简单的根据变量的值不同,来执行不同的功能已经会了。
现在的问题是:硬件只有一个按键,比如一般按下键(一般500MS,1S钟)就给一个变量 "VALUE",加一,然后送给打印机打印。比如长按按键(达到5S钟以上),就将这个变量 VALUE 清零。这个怎么做呢要,?谢谢大家。
现在用了死的键盘检测程序:可以实现按一下打印一下变量
VALUE 的值了。长短按的不知道怎么实现,谢谢大家!
sbit KEY1 = P2^2;
if (KEY1 == 0)
{
delay_ms(10);
if(KEY1 == 0)
{
VALUE ++;
if(VALUE >= 100 )
{
VALUE = 0;
}
while(KEY1 == 0);
Print_data();//打印数据VALUE函数
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
/*
中断调用函数
5MS中断
*/
void Keys()// 0 表示 无效 1 表示 短按, 2 表示 长按
{
Key_U = 1;
if(!Key_U)
{
if(Key_Num < 250)//不到3 s
Key_Num++;// Key_Num * 20ms
else
Key_U_N = 2;//如果键被按下 3 秒
}
else//如果松开了按键
{
if(Key_Num > 3 & Key_Num < 250)//如果键被按下不到 3 秒 不能用 0 < Key_Num <150
{
Key_U_N = 1;//短按
}
Key_Num = 0;
}
Key_D = 1;
if(!Key_D)
{
if(Key_Num1 < 250)//不到3 s
Key_Num1++;// Key_Num * 20ms
else
Key_D_N = 2;//如果键被按下 3 秒
}
else//如果松开了按键
{
if(Key_Num1 > 3 & Key_Num1 < 250)//如果键被按下不到 3 秒 不能用 0 < Key_Num <150
{
Key_D_N = 1;//短按
}
Key_Num1 = 0;
}
}
一周热门 更多>