新聞中心

        EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 獨(dú)立按鍵的長(zhǎng)按與短按

        獨(dú)立按鍵的長(zhǎng)按與短按

        作者: 時(shí)間:2016-11-26 來(lái)源:網(wǎng)絡(luò) 收藏
        按鍵掃描函數(shù),支持按鍵長(zhǎng)按短按,長(zhǎng)按與短按的區(qū)別可以放到10ms的定時(shí)里面,根據(jù)需要設(shè)置判斷次數(shù)

        本文引用地址:http://www.104case.com/article/201611/321949.htm

        //按鍵處理函數(shù)
        //返回按鍵值
        //mode:0,不支持連續(xù)按;1,支持連續(xù)按;
        //0,沒(méi)有任何按鍵按下
        //1,KEY0按下
        //2,KEY1按下
        //3,KEY2按下
        //4,KEY3按下 WK_UP
        //注意此函數(shù)有響應(yīng)優(yōu)先級(jí),KEY0>KEY1>KEY2>KEY3!!
        u8 Key_Scan(u8 mode)
        {
        static u8 key_up=1;//按鍵按松開(kāi)標(biāo)志
        if(mode)key_up=1;//支持連按
        if(key_up&&(KEY0==0||KEY1==0||KEY2==0||KEY3==1))
        {
        delay_ms(10);//去抖動(dòng)
        key_up=0;
        if(KEY0==0)return KEY_RIGHT;
        else if(KEY1==0)return KEY_DOWN;
        else if(KEY2==0)return KEY_LEFT;
        else if(KEY3==1)return KEY_UP;
        }else if(KEY0==1&&KEY1==1&&KEY2==1&&KEY3==0)key_up=1;
        return 0;// 無(wú)按鍵按下
        }


        //0,沒(méi)有任何按鍵按下
        //1,長(zhǎng)按
        //2,短按

        u8 Key_long_short(void)
        {
        static u8 oldkey,newkey;
        static u8 keylongnum;
        static u8 keylongflag;
        u8 key;

        newkey = Key_Scan(1);

        if(newkey!=0)
        {
        if(oldkey==newkey)
        {

        keylongnum++;
        if(keylongnum>100)
        {
        keylongnum=0;
        keylongflag=1;
        key = 1;
        }

        }

        }
        else
        {

        if((oldkey!=0)&&(keylongflag!=1))
        {
        key = 2;
        }
        else
        {
        key = 0;
        }
        keylongnum=0;
        keylongflag=0;
        }
        oldkey=newkey;
        return(key);
        }



        評(píng)論


        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 沽源县| 沙洋县| 界首市| 湖南省| 宣汉县| 南和县| 荥经县| 宁夏| 林芝县| 象山县| 周宁县| 江阴市| 灵川县| 郓城县| 石门县| 桦南县| 桦川县| 格尔木市| 郁南县| 于都县| 宣武区| 和平县| 翼城县| 荥经县| 五大连池市| 密山市| 彩票| 巢湖市| 达州市| 景泰县| 宜丰县| 东方市| 岫岩| 宁海县| 金山区| 通城县| 龙山县| 石渠县| 新化县| 吉安市| 柏乡县|