PIC16F877課程內容:微處理器輸入介紹
一般而言,機械按鍵彈跳的產生是無法避免的,只是長短的問題而己。無論如何,彈跳
都會在 20mS 內結束而趨於穩定。要不要消除彈跳現象,就必須與應用的對象來做判斷。通
常,若按鍵是和〞計數〞有關的應用時,為怕彈跳造成計數的錯誤,就必須對消除彈跳對電
路的影響。
改善彈跳的方法:
消除彈跳的方法有很多種,但可分為硬體及軟體消除彈跳二大類。硬體方面可採用正反
器、鎖相迴路等數位邏輯電路來消除。而軟體消除的方式,則需利用程式設計來想方法。由
於按鍵時所產生的彈跳時間不超過20mS,因此,當單晶片偵測到按鍵電路邏輯改變時(1->0)
時,立刻延遲 20mS後再執行按鍵所要執行的工作即可。當然,不是每按鍵彈跳時間都要 20mS
時間,可根據自己使用的情形來做判斷。
;;程式範例:加入消除彈跳的程式方法
;;方法(一),一段式檢查法
5V PORTD,0
EX1:
PIC
16F877
R=10KΩ BTFSC PORTD,0 ;;;利用 BTFSC偵測按鍵狀態
GOTO EX1 ;;;高電位繼續偵測
CALL DELAY_20MS ;;;低電路則執行 20mS 延遲程式
SW
……
;;方法(二),採用DOUBLE CHECK 二段式檢查法
EX2:
BTFSC PORTD,0 ;;;偵測 PORTD,0 的電位狀態
GOTO EX2 ;;;若仍高電位,則繼續偵測
EX_CHECK: ;;;若偵測到低電位,代表按鍵被按下
CALL DELAY_20MS ;;;延長 20MS時間來消除彈跳
BTFSS PORTD,0 ;;;檢查按鍵是否己經穩定,回到高電位
GOTO EX_CHECK ;;;若沒有,代表按鍵仍處於彈跳狀態,回到 EX_CHECK 繼續延長等待
……… ;;;.程式繼續執行按鍵所要的工作