close

 

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 繼續延長等待
 ………     ;;;.程式繼續執行按鍵所要的工作

http://www.hyivs.tnc.edu.tw/pic/EX3/PIC16F877%E8%AA%B2%E7%A8%8B%E5%85%A7%E5%AE%B9%EF%BC%9A%E5%BE%AE%E8%99%95%E7%90%86%E5%99%A8%E8%BC%B8%E5%85%A5%E4%BB%8B%E7%B4%B9.pdf

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 chenni037 的頭像
    chenni037

    Kenny's Blog

    chenni037 發表在 痞客邦 留言(0) 人氣()