在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 單片機(jī)檢測按鍵短擊,連擊c程序

            單片機(jī)檢測按鍵短擊,連擊c程序

            作者: 時(shí)間:2012-08-25 來源:網(wǎng)絡(luò) 收藏
            /****************************************///文 件 名:key.c//功    能:短擊//調(diào)用方法:unsigned char keyValue = ReadKey();//說    明:該程序不適用于陣列鍵盤.//        該程序不需要使用定時(shí)器.// 調(diào)用處要加入switch語句來判斷相應(yīng)按鍵按下并執(zhí)行相應(yīng)動作.// 如需要在按鍵松開后執(zhí)行動作,則調(diào)用函數(shù)需要定義一個bit標(biāo)志位,
            在default語句里判斷標(biāo)志位狀態(tài).// KEY_WOBBLE_TIME 指程序程序執(zhí)行次數(shù).實(shí)際應(yīng)用中要根據(jù)程序的長短來調(diào)整成合適的數(shù)值.//                   //備注:程序思路是當(dāng)按鍵被按下時(shí)開始計(jì)算程序的執(zhí)行次數(shù),如小于KEY_WOBBLE_TIME,
            則認(rèn)為按鍵沒有被按下.// 引用自http://www.rupeng.com/forum/thread-12239-1-1.html,略做更改. // KEIL編譯時(shí)會提示W(wǎng)ARNING C291: not every exit path returns a value.
            不影響使用.// 如有朋友發(fā)現(xiàn)問題所在請聯(lián)系我.                  /*********************************************************/#include reg52.h>#define KEY_IO P1             //按鍵所連的IO口#define NO_KEY_VALUE 0xf      //當(dāng)按鍵沒有被按下時(shí)IO口的值#define KEY_WOBBLE_TIME 150   //去抖動時(shí)間(待定)#define KEY_OVER_TIME 500     //等待進(jìn)入時(shí)間(待定),該常數(shù)要比正常 //按鍵時(shí)間要長,防止非目的性進(jìn)入模式#define KEY_QUICK_TIME 200   //等待按鍵抬起的連擊時(shí)間(待定)typedef unsigned char uchar;typedef unsigned int uint;uchar  ReadKey(){                            //判斷哪個鍵被按下static uchar lastKey = NO_KEY_VALUE ;static uint  keyCount = 0;static uint  keyOverTime = KEY_OVER_TIME;uchar  keyTemp = NO_KEY_VALUE ;keyTemp = KEY_IO  NO_KEY_VALUE ;        //讀取鍵值if(keyTemp == NO_KEY_VALUE ){           //無按鍵按下時(shí)keyCount = 0;keyOverTime = KEY_OVER_TIME;return NO_KEY_VALUE ;}else{                                 //有按鍵按下時(shí)if(keyTemp==lastKey){if(++keyCount == KEY_WOBBLE_TIME){ //不是第1次按下判斷抖動是否結(jié)束return keyTemp;               //去抖結(jié)束,返回鍵值}else{if(keyCount>keyOverTime){keyCount = 0;keyOverTime = KEY_QUICK_TIME;}return NO_KEY_VALUE ;}}else{         //是第1次按下則保存鍵值,下次執(zhí)行此函數(shù)時(shí)與讀到的鍵值作比較lastKey = keyTemp ;    //保存第1次讀到的鍵值keyCount = 0;          //延時(shí)計(jì)數(shù)器清零keyOverTime = KEY_OVER_TIME ;return NO_KEY_VALUE ;}}}/////////////////////////////////////////////////////////以上程序例子我用三個按鍵連在P1^0,P1^1,P1^2,使用中根據(jù)實(shí)際需要更改KEY_IO P1 , NO_KEY_VALUE ,KEY_WOBBLE_TIME , KEY_OVER_TIME 500,#define KEY_QUICK_TIME 200 .如只需要判斷單擊,把判斷連擊的代碼刪除即可.拋磚引玉^^


            關(guān)鍵詞: 單片機(jī) 按鍵短擊 連擊

            評論


            相關(guān)推薦

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

            關(guān)閉