基于蓝桥杯的单片机模块练习——长按键处理
功能概述
可以对按下一个键的时间长短,来分别执行不同的处理。当按住一个键的时长超过规定的长按键标准时,可以执行长按键的相应处理,当按住一个键的时长没达到规定的长按键标准时,可以执行短按键的相应处理。
C代码
unsigned char count = 0;
unsigned char t_s = 0;
unsigned char t_ms = 0;
void Init_Timer0()
{
TMOD = 0x01;
TH0 = (65536 - 50000) / 256;
TL0 = (65536 - 50000) % 256;
EA = 1;
ET0 = 1;
TR0 = 1;
}
void Servise_Timer0() interrupt 1
{
TH0 = (65536 - 50000) / 256;
TL0 = (65536 - 50000) % 256;
//********长按键的延时*************
t_ms++;
if(t_ms == 20)
{
t_s++;
t_ms = 0;
if(t_s == 3)//3s
{
t_s = 0;
count = 1;
}
}
}
void KeyScan()
{
if(P33 == 0)
{
Delay_1ms(10);
if(P33 == 0) //S4关闭闹钟
{
count = 0;
t_s = 0;
t_ms = 0;
while(!P33)
{
Display_Dynamic();
}
if(count == 1 ) //长按键的时间到
{
//......
}
else //长按键的时间未到,则执行短按操作
{
//......
}
}
}
}