按键扫描(支持连按)
u8 KEY_Scan(void)
{
if (KEY按下)
{
delay_ms(10); // 延时10-20ms,防抖
if (KEY确实按下)
{
return KEY_Value;
}
}
return 没有按下;
}
按键扫描(不支持连按)
u8 KEY_Scan(void)
{
static u8 key_up = 1;
if (key_up && KEY按下)
{
delay_ms(10); // 延时消抖
key_up = 0;
if (KEY确实按下)
{
return KEY_Value;
}
} else if (KEY没有按下)
key_up = 1;
return 没有按下;
}
二者合并
u8 KEY_Scan(u8 mode) // mode: 0-不支持连按 1-支持连按
{
static u8 key_up = 1;
if (mode == 1) key_up = 1; // !!! 增加了这一句
if (key_up && KEY按下)
{
delay_ms(10); // 延时消抖
key_up = 0;
if (KEY确实按下)
{
return KEY_Value;
}
} else if (KEY没有按下)
key_up = 1;
return 没有按下;
}