PIC单片机键盘扫描汇编程序

时间:2012-12-11来源:网络

;**********键盘去抖子程序(约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

1 2

关键词: PIC单片机 键盘扫描 汇编程序

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版