按键程序大体可分为两类:支持连按和不支持连按
支持连按的程序如下,此程序不会检查是否之前已经按下,而是只要是按下的状态就一直返回按下的有效值。
u8 Key_Scan(void)
{
if(Key按下)
{
delay_ms(10); //延时10ms消抖
if(Key确实按下而不是抖动)
{
return Key_Value;
}
return 无效值;
}
}
以下是不支持连按的程序,使用了static变量(初始化只有一次,后面每次进入函数不会被初始化,以及离开函数后不会被清零)
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 没有按下
}
版权声明:本文为qq_36228216原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。