关于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条回答
Enoch
2019-08-22 22:39
谢谢,不过还有两个问题,一个是,什么是连按,第二个是这个函数每次调用都会重新声明一个static的key_up,这个函数里面也不会重复用到 if (key_up&&(KEY0==0||KEY1==0||WK_UP==1)) ,所以key_up似乎不会在一次调用中进行两次判断,所以您之前说的   “由于它是static的,下次判断if(key_up&&(KEY0==0||KEY1==0||WK_UP==1))时key_up为0就不再执行”  这个其实是没有第二次判断的情况出现的?

一周热门 更多>