|
以前的軟件消抖常用的方法是讀相應(yīng)管腳是否有按鍵按下,然后延時10ms再讀,最后用個while(不松手)等待抬手,這樣做方便時方便,一般隨便用用也可以,但是死等的時間太多,不利于系統(tǒng)的實時響應(yīng)。 狀態(tài)機就是把掃描鍵盤的過程分為3個狀態(tài),然后用定時器做個10ms定時,時間一到掃描相應(yīng)端口。假設(shè)開始狀態(tài)為沒有按鍵按下,相應(yīng)端口電平為高,設(shè)為state_0。然后,隔10ms再掃描一次,如果此時仍然為高,則還是處于state_0,如果此時電平為低,則進入state_1,下一個10ms定時如果仍然為低,則說明有按鍵按下,進入state_2等待松手,如果為高,則說明剛才是抖動,回到state_0,進入state_2后只要讀到電平變高了說明松手了,這樣一次按鍵就完成了,就可以執(zhí)行相應(yīng)的按鍵操作了。state_1到state_2之間的10ms相當(dāng)于軟件消抖。這種方法的好處是在掃描按鍵時還可以做別的事,提高了CPU利用率。
|
|