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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3078|回復: 0
收起左側

單片機狀態檢測程序示例

[復制鏈接]
ID:693038 發表于 2021-2-25 19:02 | 顯示全部樓層 |閱讀模式
基本每個程序都會用到狀態檢測,這里分享一下個人的處理方式,例如充電狀態檢測
void ChargeScanf(void)
{
    unsigned char state=0;//當前狀態緩存
    static unsigned char statebk; //上一次狀態存儲   
    static unsigned char statecnt;//穩定計算
    state = CHECK_PIN;
    if(state == statebk){
        if(statecnt < 10){//10次消抖
            statecnt++;//消抖時間不夠的話繼續累積
        }else{
           //消抖完成,記錄狀態

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

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

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


評分

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

查看全部評分

回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

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