PIC單片機鍵盤掃描匯編程序
;**********鍵盤去抖子程序(約8ms的延時)** ***************
KEYDELAY
MOVLW 0X0A
MOVWF DEYH
AGAIN2 MOVLW 0XFF
MOVWF DEYL
AGAIN1 DECFSZ DEYL,1
GOTO AGAIN1
DECFSZ DEYH,1
GOTO AGAIN2
RETURN
;***************鍵服務子程序****************
;確定鍵值的子程序
KEYSERVE
JIANZHI BCF PORTB,1
BCF PORTA,3
MOVLW 0X03
MOVWF PORTE ;K1,K2置低電平,K3,K4置高電平
NOP
NOP ;使引腳電平穩定
BTFSS PORTB,4
GOTO K1K2 ;RB4為0,表示按鍵為K1,K2中的一個
GOTO K3K4 ;RB4為1,表示按鍵為K3,K4中的一個
K1K2 BCF PORTB,1
BSF PORTA,3 ;K1置低電平,K2置高電平
NOP
NOP ;使引腳電平穩定
BTFSS PORTB,4
GOTO K1 ;RB4為0,表示按鍵為K1
GOTO K2 ;RB4為1,表示按鍵為K2
K3K4 BCF PORTE,0
BSF PORTE,1 ;K3置低電平,K4置高電平
NOP
NOP ;使引腳電平穩定
BTFSS PORTB,4
GOTO K3 ;RB4為0,表示按鍵為K3
GOTO K4 ;RB4為1,表示按鍵為K4
K1 MOVLW 0X03
MOVWF JIANR
GOTO JIANW
K2 MOVLW 0X05
MOVWF JIANR
BCF PORTA,3
GOTO JIANW
K3 MOVLW 0X07
MOVWF JIANR
GOTO JIANW
K4 MOVLW 0X09
MOVWF JIANR ;以上根據按下的鍵把相應的值送給JIANR
BCF PORTE,1
JIANW BTFSS PORTB,4
GOTO JIANW ;為了防止一次按鍵多次識別,等鍵松開才返回
RETURN
;****************************************
MAIN NOP
CALL INITIAL ;調用初始化子程序
LOOP
CALL KEYSCAN ;查鍵
BTFSC FLAG,F0
CALL KEYDELAY ;若檢測到有鍵按下,則調用軟件延時子程序去抖動
BTFSC FLAG,F0
CALL KEYSCAN ;若第一次掃描到有鍵按下,則經過前面的延時去抖后
;再次進行鍵掃描
BTFSC FLAG,F0
CALL KEYSERVE ;若確認有鍵按下,則需要調用鍵服務程序
BTFSS FLAG,F0
GOTO LOOP ;如果無鍵按下,則反復進行鍵掃描
MOVF JIANR,W
CALL CONVERT ;把按鍵對應的數字轉換成待顯示的段碼
CALL DISPLAY ;調用顯示子程序
GOTO LOOP
END
單片機相關文章:單片機教程
單片機相關文章:單片機視頻教程
單片機相關文章:單片機工作原理
評論