前言
創(chuàng)新互聯(lián)主要從事成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、成都外貿(mào)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)蓮花,10年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專(zhuān)業(yè),歡迎來(lái)電咨詢(xún)建站服務(wù):18982081108? 一般按鍵消抖用的方式是延時(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)查看詳情吧