资源描述
51单片机4*4矩阵键盘汇编语言程序示例(原创)
QQ:342250023,欢迎咨询
线反转法
ORG 00H
LJMP MAIN
MAIN:MOV R0,#00H
MOV R1,#00H
MOV R2,#00H
MOV R3,#00H
MOV A,#00H
AJMP KEYSCAN
KEYSCAN:MOV P3,#0F0H
MOV A,P3
ANL A,#0F0H
XRL A,#0F0H
JNZ DELAY
DELAY:MOV R2,#05H
LOOP1:MOV R3,#0FAH
LOOP2:DJNZ R3,LOOP2
DJNZ R2,LOOP1
MOV A,P3
ANL A,#0F0H
MOV R0,A
XRL A,#0F0H
JNZ KEYSCAN1
LJMP KEYSCAN
KEYSCAN1:MOV A,#00H
MOV P3,#0FH
MOV A,P3
ANL A,#0FH
MOV R1,A
XRL A,#0FH
JNZ NUM
LJMP KEYSCAN
NUM:MOV A,R0
MOV B,R1
ORL A,B
MOV DPTR,#TAB
SJMP DISP0
DISP0:CJNE A,#0EEH,DISP1
MOV A,#00H
MOVC A,@A+DPTR
MOV P0,A
LCALL DELAY1
LJMP KEYSCAN
DISP1:CJNE A,#0EDH,DISP2
MOV A,#01H
MOVC A,@A+DPTR
MOV P0,A
LCALL DELAY1
LJMP KEYSCAN
DISP2:CJNE A,#0EBH,DISP3
MOV A,#02H
MOVC A,@A+DPTR
MOV P0,A
LCALL DELAY1
LJMP KEYSCAN
DISP3:CJNE A,#0E7H,DISP4
MOV A,#03H
MOVC A,@A+DPTR
MOV P0,A
LCALL DELAY1
LJMP KEYSCAN
DISP4:CJNE A,#0DEH,DISP5
MOV A,#04H
MOVC A,@A+DPTR
MOV P0,A
LCALL DELAY1
LJMP KEYSCAN
DISP5:CJNE A,#0DDH,DISP6
MOV A,#05H
MOVC A,@A+DPTR
MOV P0,A
LCALL DELAY1
LJMP KEYSCAN
DISP6:CJNE A,#0DBH,DISP7
MOV A,#06H
MOVC A,@A+DPTR
MOV P0,A
LCALL DELAY1
LJMP KEYSCAN
DISP7:CJNE A,#0D7H,DISP8
MOV A,#07H
MOVC A,@A+DPTR
MOV P0,A
LCALL DELAY1
LJMP KEYSCAN
DISP8:CJNE A,#0BEH,DISP9
MOV A,#08H
MOVC A,@A+DPTR
MOV P0,A
LCALL DELAY1
LJMP KEYSCAN
DISP9:CJNE A,#0BDH,DISPA
MOV A,#09H
MOVC A,@A+DPTR
MOV P0,A
LCALL DELAY1
LJMP KEYSCAN
DISPA:CJNE A,#0BBH,DISPB
MOV A,#0AH
MOVC A,@A+DPTR
MOV P0,A
LCALL DELAY1
LJMP KEYSCAN
DISPB:CJNE A,#0B7H,DISPC
MOV A,#0BH
MOVC A,@A+DPTR
MOV P0,A
LCALL DELAY1
LJMP KEYSCAN
DISPC:CJNE A,#07EH,DISPD
MOV A,#0CH
MOVC A,@A+DPTR
MOV P0,A
LCALL DELAY1
LJMP KEYSCAN
DISPD:CJNE A,#07DH,DISPE
MOV A,#0DH
MOVC A,@A+DPTR
MOV P0,A
LCALL DELAY1
LJMP KEYSCAN
DISPE:CJNE A,#07BH,DISPF
MOV A,#0EH
MOVC A,@A+DPTR
MOV P0,A
LCALL DELAY1
LJMP KEYSCAN
DISPF:CJNE A,#077H,KEY
MOV A,#0FH
MOVC A,@A+DPTR
MOV P0,A
LCALL DELAY1
LJMP KEYSCAN
DELAY1:MOV R2,#0FH
LOOP10:MOV R3,#0FAH
LOOP20:DJNZ R3,LOOP20
DJNZ R2,LOOP10
RET
KEY:LJMP MAIN
TAB:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H
END
行扫描法
ORG 00H
LJMP MAIN
MAIN:
LCALL KEYJUDGE
LCALL KEYSCAN
LCALL DISP
LJMP MAIN
KEYJUDGE:
MOV P3,#0F0H
MOV A,P3
XRL A,#0F0H
JNZ DELAY
LJMP MAIN
DELAY:MOV R4,#08H
LOOP1:MOV R5,#0FAH
LOOP2:DJNZ R5,LOOP2
DJNZ R4,LOOP1
MOV P3,#0F0H
MOV A,P3
XRL A,#0F0H
JZ MAIN
RET
KEYSCAN:
MOV R0,#00H
MOV R1,#00H
MOV R2,#0FEH
MOV R3,#04H
KEY:
MOV P3,R2
KEY0:JB P3.4,KEY1
MOV R1,#00H
LJMP NUM
KEY1:
JB P3.5,KEY2
MOV R1,#04H
LJMP NUM
KEY2:
JB P3.6,KEY3
MOV R1,#08H
LJMP NUM
KEY3:
JB P3.7,NEXT
MOV R1,#0CH
LJMP NUM
NEXT:
INC R0
MOV A,R2
RL A
MOV R2,A
DJNZ R3,KEY
LJMP NUM
NUM:
MOV A,R0
ADD A,R1
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV R6,A
RET
DISP:
MOV P0,R6
LCALL DELAY1
RET
DELAY1:
MOV R4,#0FH
LOOP10:MOV R5,#0FAH
LOOP20:DJNZ R5,LOOP20
DJNZ R4,LOOP10
RET
TAB:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H
END
展开阅读全文