找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2581|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

用狀態(tài)機(jī)來(lái)做鍵盤(pán)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:105323 發(fā)表于 2016-2-12 19:16 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
  以前的軟件消抖常用的方法是讀相應(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利用率。

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

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表