📄 pic单片机键盘电路四例源程序.txt
字号:
中断服务程序清单如下:
ORG 0004H ;中断入口
CALL JPSM ;调用键盘扫描显示处理
RETFIE ;返回断点
JPSM BCF STATUS,5
CALL DELAY10MS ;延迟10ms
MOVLW 0F0H ;再次判断是否有键按下
MOVWF PORTB ;送W内容到PORTB,使PORTB高4位高电平
MOVLW B'11110000' ;送0F0H到W寄存器
ANDWF PORTB,W ;PORTB内容和0F0H相与,结果送W
SUBLW B'11110000' ;W内容和0F0H相减
BTFSC STATUS,Z ;由Z标志位判断运算结果是否为0
RETURN ;结果为0,Z标志位置1,无键按下,返回
MOVLW B'11111110' ;有键按下,送B'11111110'到W寄存器
MOVWF PORTB ;送W内容到PORTB,以检测第一行
BTFSS PORTB,4 ;判断0键是否按下
GOTO KYE0 ;按下,执行键0对应程序
BTFSS PORTB,5 ;没按下,判断1键是否按下
GOTO KYE1 ;按下,执行键1对应程序
BTFSS PORTB,6 ;没按下,判断2键是否按下
GOTO KYE2 ;按下,执行键2对应程序
BTFSS PORTB,7 ;没按下,判断3键是否按下
GOTO KYE3 ;按下,执行键3对应程序
MOVLW B'11111101' ;送B'11111101'到W寄存器
MOVWF PORTB ;送W内容到PORTB,以检测第二行
BTFSS PORTB,4 ;判断4键是否按下
GOTO KYE4 ;按下,执行键4对应程序
BTFSS PORTB,5 ;没按下,判断5键是否按下
GOTO KYE5 ;按下,执行键5对应程序
BTFSS PORTB,6 ;没按下,判断6键是否按下
GOTO KYE6 ;按下,执行键6对应程序
BTFSS PORTB,7 ;没按下,判断7键是否按下
GOTO KYE7 ;按下,执行键7对应程序
MOVLW B'11111011' ;送B'11111011'到W寄存器
MOVWF PORTB ;送W内容到PORTB,以检测第三行
BTFSS PORTB,4 ;判断8键是否按下
GOTO KYE8 ;按下,执行键8对应程序
BTFSS PORTB,5 ;没按下,判断9键是否按下
GOTO KYE9 ;按下,执行键9对应程序
BTFSS PORTB,6 ;没按下,判断10键是否按下
GOTO KYE10 ;按下,执行键10对应程序
BTFSS PORTB,7 ;没按下,判断11键是否按下
GOTO KYE11 ;按下,执行键11对应程序
MOVLW B'11110111' ;送B'11110111'到W寄存器
MOVWF PORTB ;送W内容到PORTB,以检测第四行
BTFSS PORTB,4 ;判断12键是否按下
GOTO KYE12 ;按下,执行键12对应程序
BTFSS PORTB,5 ;没按下,判断13键是否按下
GOTO KYE13 ;按下,执行键13对应程序
BTFSS PORTB,6 ;没按下,判断14键是否按下
GOTO KYE14 ;按下,执行键14对应程序
BTFSS PORTB,7 ;没按下,判断15键是否按下
GOTO KYE15 ;按下,执行键15对应程序
RETUNR ;都没按下,则返回
KYE0 CALL SF_KEY ;调用释放子程序
MOVLW D’00’
MOVWF PORTD
RETURN
KYE1 CALL SF_KEY ;调用释放子程序
MOVLW D’01’
MOVWF PORTD
RETURN
KYE2 .
.
.
KYE15 CALL SF_KEY ;调用释放子程序
MOVLW D’15’
MOVWF PORTD
RETURN
SF_KEY MOVLW 0F0H ;按键释放送0F0H到W
MOVWF PORTB ;B口低4位全为低电平状态
MOVLW B'11110000'
ANDWF PORTB,W ;屏蔽低4位
SUBLW B'11110000' ;与W内容相减
BTFSC STATUS,Z ;由Z标志位判B口高4位是否全为1
GOTO SF_KEY ;不全为1,键未释放,继续进行判断
CALL DELAY10MS ;调用10ms延时
MOVLW 0F0H ;再判一次
MOVWF PORTB ;B口低4位全为低电平状态
MOVLW B'11110000'
ANDWF PORTB,W ;屏蔽低4位
SUBLW B'11110000' ;与W内容相减
BTFSC STATUS,Z ;由Z标志位判B口高4位是否全为1
GOTO SF_KEY ;刚才是虚假释放,返回继续判断
RETURN ;键释放,返回
DELAY10MS ;10MS软件延时子程序略去
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -