1、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
2、 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
3、 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 KEYS
4、CAN 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,
5、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
6、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 LCA
7、LL 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
8、 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 R
9、5,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
10、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






