獨立按鍵驅動(dòng)程序
下面是獨立按鍵驅動(dòng)程序,特點(diǎn)是利用TIMER0中斷,CPU在不停的掃描程序,60ms到,執行按鍵驅動(dòng),函數在48ms執行一次,60ms再次執行,避免了CPU資源的浪費
bit ltkey = 0; //防止按鍵被長(cháng)按bit am_led = 0;uchar unitTemp = 0xff;bit amkey;bit remsg = 0;bit send = 0;bit delay100 = 0;bit mtoa = 0;void KeyScn(void) //按鍵掃描模塊{uchar NowKeyValue;bit NowAMKeyValue;//檢測按鍵if(pic == 10) //首次按鍵檢測{amkey = AMKEY;unitTemp = P2;}if(pic == 13) //12ms后,再次執行檢測{NowKeyValue = P2;NowAMKeyValue = AMKEY;if(NowKeyValue != unitTemp) //如果兩次檢測到的結果不同,則認為是抖動(dòng),不做處理{unitTemp = 0xff;}if((NowAMKeyValue == amkey) (amkey == 0)) //如果狀態(tài)鍵按鍵有效{if(ltkey == 0){ //AM狀態(tài)LED位,0為自動(dòng),1為手動(dòng)am_led = !am_led;if(am_led == 0) //如果是從手動(dòng)切回自動(dòng),切回到CH1{unitTemp = 0xf7;mtoa = 1; //由手動(dòng)切到自動(dòng)后的標志位}AMLED = am_led; //狀態(tài)燈,變化時(shí)寫(xiě)入ltkey = 1;}}else{ltkey = 0;}}}
評論