KEYIN: JB P3.4,$
MOV A,P3
ANL A,#0FH
MOV DPTR,#TABLE
MOVC A,@A+DPTR
XRL A,#0AH
JNZ START0
WAIT2: JB P3.4,KEYIN1
MOV R1,#35H
CALL DISP
JMP WAIT2
KEYIN1: JB P3.4,$
MOV A,P3
ANL A,#0FH
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV 20H,A
XRL A,#0AH
JZ X1
MOV A,20H
XRL A,#0BH
JZ WAIT1
MOV A,20H
XCH A,33H
XCH A,34H
XCH A,35H
WAIT1: MOV R1,#35H
CALL DISP
JB P3.4,KEYIN1
JMP WAIT1
X1: JMP START0
DISP: MOV A,@R1
ADD A,#40H
MOV P1,A
CALL DELAY
DEC R1
MOV A,@R1
ADD A,#20H
MOV P1,A
CALL DELAY
DEC R1
MOV A,@R1
ADD A,#10H
MOV P1,A
CALL DELAY
RET
TIM0: PUSH ACC
PUSH PSW
MOV TH0,#HIGH (65536-50000)
MOV TL0,#LOW (65536-50000)
MOV A,35H
CJNE A,32H,T
MOV A,34H
CJNE A,31H,T
MOV A,33H
CJNE A,30H,T
JMP OFF
T: JC OFF
CLR P2.1
RETURN: POP PSW
POP ACC
RETI
OFF: SETB P2.1
JMP RETURN
DELAY: MOV R7,#06
D1: MOV R6,#248
DJNZ R6,$
DJNZ R7,D1
RET
TABLE: DB 01H,02H,03H,0FFH
DB 04H,05H,06H,0FFH
DB 07H,08H,09H,0FFH
DB 0AH,00H,0BH,0FFH
END