KEYBUF EQU 30H
DISPBUF EQU 31H
DISPBIT EQU 35H
COLKEY:
MOV P1,#0F0H
MOV A,P1
ANL A,#0F0H
XRL A,#0F0H
JZ NOKEY
LCALL DELAY
MOV A,P1
ANL A,#0F0H
XRL A,#0F0H
JZ NOKEY
MOV A,P1
ANL A,#0F0H
CJNE A,#070H,NCK1
MOV KEYBUF,#0
AJMP ROWKEY
NCK1: CJNE A,#0B0H,NCK2
MOV KEYBUF,#1
AJMP ROWKEY
NCK2: CJNE A,#0D0H,NCK3
MOV KEYBUF,#2
AJMP ROWKEY
NCK3: CJNE A,#0E0H,NCK4
MOV KEYBUF,#3
AJMP ROWKEY
NCK4: NOP
ROWKEY:
MOV P1,#0FH
MOV A,P1
ANL A,#0FH
MOV R1,A
MOV A,KEYBUF
CJNE R1,#0EH,NRK1
ADD A,#0
AJMP DK
NRK1: CJNE R1,#0DH,NRK2
ADD A,#4
AJMP DK
NRK2: CJNE R1,#0BH,NRK3
ADD A,#8
AJMP DK
NRK3: CJNE R1,#07H,NRK3
ADD A,#12
AJMP DK
NRK4: NOP
DK:
MOV KEYBUF,A
LOOP:
MOV A,P1
ANL A,#0FH
XRL A,#0FH
JZ NOKEY
LCALL VALUE
LCALL DISP
LJMP LOOP
NOKEY:
LCALL VALUE
LCALL DISP
LJMP COLKEY
DELAY: MOV R5,#5
D1: MOV R6,#248
DJNZ R6,$
DJNZ R5,D1
RET
VALUE:
MOV A,KEYBUF
MOV B,#10
DIV AB
MOV DISPBUF,A
MOV A,B
MOV DISPBUF+1,A
MOV A,#16
MOV DISPBUF+2,A
MOV A,KEYBUF
MOV DISPBUF+3,A
RET
DISP:
MOV A,#DISPBUF
ADD A,DISPBIT
MOV R0,A
MOV A,@R0
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV P3,#0FFH ;消影
MOV P2,A
MOV A,DISPBIT
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV P3,A
INC DISPBIT
MOV A,DISPBIT
CJNE A,#04H,DISP
MOV DISPBIT,#00H
RET
TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H,40H
TAB: DB 0FEH,0FDH,0FBH,0F7H
END
效果: