单片机矩阵键盘汇编语言程序

单片机矩阵键盘汇编语言程序
单片机矩阵键盘汇编语言程序

51单片机4*4矩阵键盘汇编语言程序示例(原创)

,欢迎咨询

线反转法

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

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

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

MOV P3,R2

KEY0:JB ,KEY1

MOV R1,#00H

LJMP NUM

KEY1:

JB ,KEY2

`

MOV R1,#04H

LJMP NUM

KEY2:

JB ,KEY3

MOV R1,#08H

LJMP NUM

KEY3:

JB ,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

相关主题
相关文档
最新文档