新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > PIC單片機人機接口模塊獨立式按鍵的程序設計

        PIC單片機人機接口模塊獨立式按鍵的程序設計

        作者: 時間:2013-03-14 來源:網絡 收藏
          下面是查詢方式下的鍵盤程序,程序中沒有使用散轉指令,也沒有軟件防抖動措施,只包括按鍵查詢、鍵功能程序轉移。FP0~FP7為功能程序入口地址標號,PROM0~PROM7分別為每個按鍵的功能程序。

          程序清單(設I/O口為P1口)如下:

          由此程序可以看出,各按鍵由軟件設置了優先級,優先級順序依次為0~7。

          本節所講的模塊中,在按鍵按下或彈起時經常會出現一些毛刺,所以在首次檢測到輸入的值后應添加一個延時程序DELAY。

          這個延時程序延時100ms左右,延時后再檢測輸入的值,如果改變了,則證明此時按鍵按下或彈起時讀出的值是不準確的,再調用延時程序DELAY,延時100ms之后,再繼續查看。

          本例采用4MHz的品振,時鐘周期是250ms,由于的指令周期是4倍時鐘周期,即1μs,要延時100ms,可以設置兩層循環,另外,跳轉指令GOTO需要兩個指令周期,自減1并且判斷指令DECFSZ需要一個指令月期,所以要進行100000/(2+1)約為33333個指令周期。

          現設內部循環為256次,則外部循環約為130次,因為本例對延時的精度要求并不很高,所以本例中的設計只進行了近似的計算,程序流程如圖所示。

          圖 程序流程

          (1)主程序。

          首先設置端口C為輸入口,端口D為輸出口,然后循環檢測端口C的狀態,若有鍵按下,則延時去抖動,再由端口D顯示。


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 夏邑县| 台北县| 昭苏县| 金秀| 富源县| 陆河县| 萝北县| 长葛市| 沛县| 和林格尔县| 钦州市| 六枝特区| 拜城县| 靖州| 布拖县| 金阳县| 肇庆市| 达州市| 罗田县| 青田县| 晋州市| 安国市| 边坝县| 夏邑县| 繁峙县| 姚安县| 博野县| 连平县| 花莲市| 鲁山县| 锡林郭勒盟| 柳河县| 苍梧县| 靖江市| 县级市| 沽源县| 沁水县| 公主岭市| 石屏县| 碌曲县| 澎湖县|