问题
基于正点原子的按键例程,将KEY_Scan(u8 mode)中的mode改为1,并不能直接实现连按功能。
实现按键连按功能
1.功能:按下按键则灯亮,松开则灯灭(注意WK_UP是高电平有效,另外两个是低电平有效)
2.程序:main函数中改为KEY_Scan(1),其他程序不变,KEY_Scan(u8 mode)函数改为如下所示
u8 KEY_Scan(u8 mode)
{
static u8 key_up=1;//按键按松开标志
if(mode)
key_up=1; //支持连按
if(key_up&&(KEY0==0||KEY1==0||WK_UP==1))//三个按键有任意一个按键按下
{
delay_ms(10);//去抖动
key_up=0;
if(KEY0==0)
return KEY0_PRES;
else if(KEY1==0)
return KEY1_PRES;
else if(WK_UP==1)
return WKUP_PRES;
}
else if(KEY0==1&&KEY1==1&&WK_UP==0)//三个按键没有被按下
{
key_up=1;
LED0 = 1;
LED1 = 1;
}
return 0;// 无按键按下
}
在最后一个else if中加入LED0 = 1和LED1 = 1;同时不要忘记引入key.h头文件