標(biāo)題:
用狀態(tài)機(jī)來(lái)做鍵盤(pán)
[打印本頁(yè)]
作者:
51黑黑黑
時(shí)間:
2016-2-12 19:16
標(biāo)題:
用狀態(tài)機(jī)來(lái)做鍵盤(pán)
以前的軟件消抖常用的方法是讀相應(yīng)管腳是否有按鍵按下,然后延時(shí)10ms再讀,最后用個(gè)while(不松手)等待抬手,這樣做方便時(shí)方便,一般隨便用用也可以,但是死等的時(shí)間太多,不利于系統(tǒng)的實(shí)時(shí)響應(yīng)。 狀態(tài)機(jī)就是把掃描鍵盤(pán)的過(guò)程分為3個(gè)狀態(tài),然后用定時(shí)器做個(gè)10ms定時(shí),時(shí)間一到掃描相應(yīng)端口。假設(shè)開(kāi)始狀態(tài)為沒(méi)有按鍵按下,相應(yīng)端口電平為高,設(shè)為state_0。然后,隔10ms再掃描一次,如果此時(shí)仍然為高,則還是處于state_0,如果此時(shí)電平為低,則進(jìn)入state_1,下一個(gè)10ms定時(shí)如果仍然為低,則說(shuō)明有按鍵按下,進(jìn)入state_2等待松手,如果為高,則說(shuō)明剛才是抖動(dòng),回到state_0,進(jìn)入state_2后只要讀到電平變高了說(shuō)明松手了,這樣一次按鍵就完成了,就可以執(zhí)行相應(yīng)的按鍵操作了。state_1到state_2之間的10ms相當(dāng)于軟件消抖。這種方法的好處是在掃描按鍵時(shí)還可以做別的事,提高了CPU利用率。
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1