关于KEY_Scan函数的理解

2019-08-22 15:33发布

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)) //因为key0和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;//无按键按下
        return 0;
}

函数如上所示,就是不明白这个按键松开的意思是认为的通过设置mode告诉单片机这个按键现在是松开的还是按下的?

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
4条回答
szczyb1314
2019-08-23 02:06
本帖最后由 szczyb1314 于 2017-4-8 13:22 编辑
Enoch 发表于 2017-4-8 13:02
谢谢,不过还有两个问题,一个是,什么是连按,第二个是这个函数每次调用都会重新声明一个static的key_up, ...

连按就是按住长时间不松开,这时候你按一次但是是长时间没松开,会多次识别,单片机认为你按下了好多次。
按下锁定就是按下一次不松开单片机只认为是按了一次,等你松开再按一次就再识别一次。
这个函数可以通过mode区分连按识别多次还是按一次识别一次。

一周热门 更多>