ORG 00H
JMP START
ORG 0BH
JMP TIM0
START: MOV SP,#70H
MOV 28H,#00
MOV 2AH,#12H
MOV 2BH,#00
MOV 2CH,#00
MOV TMOD,#00000001B
MOV TH0,#HIGH(65536-4000)
MOV TL0,#LOW(65536-4000)
MOV IE,#10000010B
MOV R4,#250
SETB TR0
LOOP: JB P0.0,N2
CALL DELAY
MOV A,2CH
ADD A,#01
DA A
MOV 2CH,A
CJNE A,#60H,N1
MOV 2CH,#00
N1: JNB P0.0,$
CALL DELAY
N2: JB P0.1,N4
CALL DELAY
MOV A,2BH
ADD A,#01
DA A
MOV 2BH,A
CJNE A,#60H,N3
MOV 2BH,#00
N3: JNB P0.1,$
CALL DELAY
N4: JB P0.2,LOOP
CALL DELAY
MOV A,2AH
ADD A,#01
DA A
MOV 2AH,A
CJNE A,#24H,N5
MOV 2AH,#00
N5: JNB P0.2,$
CALL DELAY
JMP LOOP
TIM0: MOV TH0,#HIGH(65536-4000)
MOV TL0,#LOW(65536-4000)
PUSH ACC
PUSH PSW
DJNZ R4,X2
MOV R4,#250
CALL CLOCK
CALL DISP
X2: CALL SCAN
POP PSW
POP ACC
RETI
SCAN: MOV R0,#28H
INC @R0
CJNE @R0,#6,X3
MOV @R0,#0
X3: MOV A,@R0
ADD A,#20H
MOV R1,A
MOV A,@R0
SWAP A
ORL A,@R1
MOV P1,A
RET
CLOCK: MOV A,2CH
ADD A,#1
DA A
MOV 2CH,A
CJNE A,#60H,X4
MOV 2CH,#00
MOV A,2BH
ADD A,#1
DA A
MOV 2BH,A
CJNE A,#60H,X4
MOV 2BH,#00
MOV A,2AH
ADD A,#1
DA A
MOV 2AH,A
CJNE A,#24H,X4
MOV 2AH,#00
X4: RET
DISP:
MOV R1,#20H
MOV A,2CH
MOV B,#10H
DIV AB
MOV @R1,B
INC R1
MOV @R1,A
INC R1
MOV A,2BH
MOV B,#10H
DIV AB
MOV @R1,B
INC R1
MOV @R1,A
INC R1
MOV A,2AH
MOV B,#10H
DIV MOV INC MOV RET
DELAY: D1: DJNZ DJNZ RET
AB
@R1,B
R1
@R1,A
MOV MOV R7,$
R6,D1
R6,#60
R7,#248
END