;===================================
;实现矩阵键盘的扫描4*4显示0~f
;使用行值加列值的方法
; QQ 529404547
;2008.12.10
;===================================
ORG 00H
AJMP MAIN
ORG 0030H
MAIN: MOV P1, #01H
MOV R0, #00H ;程序开始 初始化
MOV R1, #00H ;R0为行值,r1为列值
FEN: MOV 30H, #0EFH ;30h存扫描初值
FF: MOV P0, 30H
MOV A, P0
MOV R0, #0
ZY: RRC A ;把p0口 状态读回来后右移
JNC DISPLAY ;进位为0显示
INC R0 ;不为0行值加1
CJNE R0, #4, ZY ;扫描4次否,否的话 继续
MOV A, 30H ;扫描完四次扫描码左移,扫描下一列
RL A
MOV 30H, A
MOV A, R1 ;列值加4
ADD A, #4
MOV R1, A
CJNE R1, #16, FF ;列值等于四否,否从新扫描
MOV R1, #0H ;等于16,赋初值0
AJMP MAIN ;从新开始
DISPLAY:MOV DPTR, #LAB ;显示
MOV A, R1 ;行值加列值
ADD A, R0
MOVC A, @A+DPTR
MOV P2, A
MOV P1, #01H
AJMP MAIN ;从新开始扫描
LAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H
DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H ;共阴数码管代码
END
文章评论(0条评论)
登录后参与讨论