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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3003|回復: 0
打印 上一主題 下一主題
收起左側

單片機狀態(tài)檢測程序示例

[復制鏈接]
跳轉到指定樓層
樓主
ID:693038 發(fā)表于 2021-2-25 19:02 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
基本每個程序都會用到狀態(tài)檢測,這里分享一下個人的處理方式,例如充電狀態(tài)檢測
void ChargeScanf(void)
{
    unsigned char state=0;//當前狀態(tài)緩存
    static unsigned char statebk; //上一次狀態(tài)存儲   
    static unsigned char statecnt;//穩(wěn)定計算
    state = CHECK_PIN;
    if(state == statebk){
        if(statecnt < 10){//10次消抖
            statecnt++;//消抖時間不夠的話繼續(xù)累積
        }else{
           //消抖完成,記錄狀態(tài)

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

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

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


評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表