4*4矩阵……下按键 对应显示0--15,可是只要 超过10后,在按下10以内的按键数字显示就不对了……如图:
这个是按键9,理论上应该显示的是09才对,可是按过10键后在按9就是这个样子,9以前显示的都不对……程序中用了BCD码调整,程序如下,理论上应该对呀……ORG 0000H
START: MOV R0,#0
MOV R1,#4
MOV R2,#11111110B
SCAN: MOV A,R2
MOV P2,A
JNB P2.4,KEYIN//检测没列按键情况
INC R0
JNB P2.5,KEYIN
INC R0
JNB P2.6,KEYIN
INC R0
JNB P2.7,KEYIN
INC R0
MOV A,R2//下一行信号扫描
RL A
MOV R2,A
DJNZ R1,SCAN
JMP START
KEYIN: CALL DEBOUNCE//显示部分
MOV A,R0
DA A
MOV P1,A
MOV A,#0
JMP START
DEBOUNCE:MOV R7,#50//延时
D1: MOV R6,#200
DJNZ R6,$
DJNZ R7,D1
RET
END
一周热门 更多>