前言
? 一般按鍵消抖用的方式是延時(shí)10ms,這種方式將會(huì)連續(xù)占用單片機(jī)CPU10ms的時(shí)間什么問(wèn)題都不能處理,極大的浪費(fèi)單片機(jī)CPU的性能。本文介紹不用延時(shí)的方法進(jìn)行按鍵消抖并獲取IO信息。
原理
? 設(shè)定每10ms掃描一次按鍵信息,如果檢測(cè)到按鍵按下,判斷是第幾次連續(xù)檢測(cè)到按鍵按下,如果是第二次,那么認(rèn)為按鍵已正常按下,若檢測(cè)到按鍵未被按下,將對(duì)按鍵按下記錄信息清零。
代碼
//按鍵查找
void GivePower(void)
{
static unsigned short itimen = 0;
unsigned char Ntimes = 1;//消抖判斷次數(shù)
if(按鍵狀態(tài) == 目標(biāo)按鍵狀態(tài))
{
if(itimen< Ntimes)
{
itimen++;
}//如果是剛按下
else
{
if(itimen == Ntimes)
{
itimen++;
按鍵已經(jīng)按下,執(zhí)行按鍵信息
}//消逗后確認(rèn)按下了
}//不是剛按下
}//檢測(cè)到按鍵按下
else
{
itimen = 0;
}
}
結(jié)論
? 這種方法可以避免延時(shí)同時(shí)可以消抖
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧