一、KEY_Scan1函数,此处结构直接使用了正点原子资料里面的按键识别函数,稍有改动.
1.添加了定时器清零及定时器内部计数的清零(TH1_Reload与TL1_Reload,Flag3).
2.添加了按键计数标志KEY_Times.
3.return返回方式改为直接赋值给全局变量KEY_Select.
uint8_t KEY_Select=0;//按键选择
uint8_t KEY_Mode=0; //按键模式
void KEY_Scan1(uint8_t mode) //mode为0不支持连按 为1支持连按 此处选择0
{
static uint8_t key_up=1;//按键按松开标志
if(mode)key_up=1; //支持连按
if(key_up&&(GET_PD4!=0||GET_PC3==0||GET_PC4==0))
{
Delay_Ms(5);//去抖动 连按模式
key_up=0;
TH1=TH1_Reload;
TL1=TL1_Reload;
Flag3=0;
KEY_Times++;//按键次数加一
if(GET_PD4!=0) {KEY_Select = KEY1_PRES;}
else if(GET_PC3==0){KEY_Select = KEY2_PRES;}
else if(GET_PC4==0){KEY_Select = KEY3_PRES;}
}
else if(GET_PD4==0&&GET_PC3!=0&&GET_PC4!=0)
{
key_up