PIC單片機人機接口模塊獨立式按鍵的程序設計
程序清單(設I/O口為P1口)如下:
本節所講的模塊中,在按鍵按下或彈起時(shí)經(jīng)常會(huì )出現一些毛刺,所以在首次檢測到輸入的值后應添加一個(gè)延時(shí)程序DELAY。
這個(gè)延時(shí)程序延時(shí)100ms左右,延時(shí)后再檢測輸入的值,如果改變了,則證明此時(shí)按鍵按下或彈起時(shí)讀出的值是不準確的,再調用延時(shí)程序DELAY,延時(shí)100ms之后,再繼續查看。
本例采用4MHz的品振,時(shí)鐘周期是250ms,由于PIC單片機的指令周期是4倍時(shí)鐘周期,即1μs,要延時(shí)100ms,可以設置兩層循環(huán),另外,跳轉指令GOTO需要兩個(gè)指令周期,自減1并且判斷指令DECFSZ需要一個(gè)指令月期,所以要進(jìn)行100000/(2+1)約為33333個(gè)指令周期。
現設內部循環(huán)為256次,則外部循環(huán)約為130次,因為本例對延時(shí)的精度要求并不很高,所以本例中的設計只進(jìn)行了近似的計算,程序流程如圖所示。
圖 程序流程
?。?)主程序。
首先設置端口C為輸入口,端口D為輸出口,然后循環(huán)檢測端口C的狀態(tài),若有鍵按下,則延時(shí)去抖動(dòng),再由端口D顯示。
評論