声明变量
unsigned char upled=0x04;
uint8_t key_val;
uint8_t key_down,key_up,key_old;
uint32_t key_time;
uint8_t key_temp,key_flag;
消抖(三行代码)
key_down=key_val&(key_val^key_old);
key_up=~key_val&(key_val^key_old);
key_old=key_val;
长按与短按
if(key_down==1)//短按与长按
{
key_time=0;
}
if(key_time<800)
{
if(key_up==1)
{led_show(0x01);}
}
else
{
if(key_val==1)
{
led_show(0x02);
}
}
单击与双击
if(key_up)
{
key_temp=key_up;
if(key_flag==0)
{
key_time=0;
key_flag=1;
}
else
key_flag=0;
}
if(key_flag==1)
{
if(key_time<300)
{
if(key_down==2&&key_temp==2)
{
led_show(0x08);
}
}
else
{
if(key_temp==2)
{
led_show(0x04);
key_flag=0;
}
}
}
}
总结:
要牢记几个变量的运用以及逻辑