SCAN:
MOV R3,#1FH
LOOP8:
LCALL GET_KEY
JNC SCAN
DJNZ R3,LOOP8
PUSH ACC
LOOP2:
MOV R3,#1FH
LOOP4:
LCALL GET_KEY
JC LOOP2
DJNZ R3,LOOP4
POP ACC
RET
GET_KEY:
MOV A,#0FEH
MOV R6,#04H
LOOP5:
MOV P2,A
MOV R7,A
MOV A,P0
ANL A,#0FH
CJNE A,#0FH,LOOP9
MOV A,R7
RL A
DJNZ R6,LOOP5
CLR C
SJMP LOOP10
LOOP9:
MOV R7,A
MOV A,#04H
CLR C
SUBB A,R6
MOV R6,A
MOV A,R7
NOP
MOV R5,#04H
LOOP6:
RRC A
JNC LOOP7
INC R6
INC R6
INC R6
INC R6
DJNZ R5,LOOP6
LOOP7:
SETB C
MOV A,R6
LOOP10:
RET
LOOKUP:
MOV R2,A
MOV DPTR,#TABLE
LABEL_1:
CLR A
MOVC A,@A+DPTR
CJNE A,02,LABEL_2
MOV A,DPL
ADD A,#10H
MOV DPL,A
CLR A
MOVC A,@A+DPTR
RET
LABEL_2:
INC DPTR
MOV A,R2
LJMP LABEL_1
TABLE:
DB 0x00,0x04,0x08,0x01,0x05,0x09,0x02,0x06,0x0a,0x03,0x07,0x0b,0x0c,0x00,0x00,0x00,0x0a,0x00,0x0b,0x07,0x08,0x09,0x04,0x05,0x06,0x01,0x02,0x03,0x0c,0x00