欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標(biāo)題: 單片機(jī)狀態(tài)檢測(cè)程序示例 [打印本頁]

作者: lincheng15    時(shí)間: 2021-2-25 19:02
標(biāo)題: 單片機(jī)狀態(tài)檢測(cè)程序示例
基本每個(gè)程序都會(huì)用到狀態(tài)檢測(cè),這里分享一下個(gè)人的處理方式,例如充電狀態(tài)檢測(cè)
void ChargeScanf(void)
{
    unsigned char state=0;//當(dāng)前狀態(tài)緩存
    static unsigned char statebk; //上一次狀態(tài)存儲(chǔ)   
    static unsigned char statecnt;//穩(wěn)定計(jì)算
    state = CHECK_PIN;
    if(state == statebk){
        if(statecnt < 10){//10次消抖
            statecnt++;//消抖時(shí)間不夠的話繼續(xù)累積
        }else{
           //消抖完成,記錄狀態(tài)

            if(state){
                //正在充電,可以用一個(gè)全局標(biāo)志位存
            }else{
                //停止充電
            }
        }
    }else{
        statebk = state;//狀態(tài)切換,保存當(dāng)前狀態(tài),留下次進(jìn)入函數(shù)時(shí)判斷用
        statecnt = 0;//消抖計(jì)數(shù)清零
    }

}
此方法我已經(jīng)用了好多年了,挺好用的,可以避免一些誤觸發(fā)
也可以同時(shí)檢測(cè)兩個(gè)充電狀態(tài)腳
例如
state = CHECK_PIN1 ? 0 :1;
state |= CHECK_PIN2 ? 0 :2;
這樣就可以檢測(cè)出充電中 充電拔除,充電完成,幾種狀態(tài)
因?yàn)槌绦蛳妒且源螖?shù)去計(jì)算,所以,此函數(shù)放到1MS任務(wù)或者2MS任務(wù)里面掃描,消抖時(shí)間就是10MS-20MS效果比較理想

這個(gè)思路也可以用于按鍵掃描,這種方式不長時(shí)間占用MCU資源,適合應(yīng)用于實(shí)際項(xiàng)目應(yīng)用,稍微改動(dòng)一下就可以檢測(cè)獨(dú)立按鍵單擊,雙擊,連續(xù)N擊,長按,或者多個(gè)按鍵組合鍵檢測(cè)







歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1