這個延時應該怎么用其他方式代替
uj5u.com熱心網友回復:
用定時中斷去讀KEY1的值,不需要用外中斷uj5u.com熱心網友回復:
這樣就行啦,或者用TIM/Systick定時器uj5u.com熱心網友回復:
消都這個代碼在實際應用中根本不能用的,因為單片機要做其他作業,可以用計數判斷的方法,比如1ms檢測一次按鍵,有按下計數加一,沒有就計數減一。然后判斷計數的大小來判斷按鍵是否按下,這個方法消抖特別好uj5u.com熱心網友回復:
那不能就干等1ms吧,uj5u.com熱心網友回復:
中斷都是給時間要求高的設備準備的,中斷程式里停留的時間越短越好,
這種還要檢測消抖的程式不適合用中斷來處理。
uj5u.com熱心網友回復:
消抖應該在大回圈里判斷,當發生按下的情況時來始記錄一個時間值,無論如何當按鍵松開的時候,計時清零。
然后每次回圈判斷這個時間值和當前時間值的時間差是不是達到一定的量了,
如果是,那就是判定按鍵按下,如果不是,繼續回圈。
uj5u.com熱心網友回復:
用狀態機,可以參考http://www.51hei.com/bbs/dpj-78867-1.htmluj5u.com熱心網友回復:
中斷里不要出現延時uj5u.com熱心網友回復:
單片機產生一個20ms的中斷,中斷里面去讀取按鍵的電平,判斷電平是否發生改變從而判斷按鍵狀態。我用類似的方法一次掃描100多個按鍵。uj5u.com熱心網友回復:
定時器做一個查詢,大于100ms 才不是抖動轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/94231.html
標籤:單片機/工控
上一篇:FPGA&RAM
下一篇:24C02低電壓供電讀資料例外
