Fazer relógio em Assembly sem usar interrupções usando o 8051

Boa tarde,

Estou iniciando a aprender Assembly e estou com dificuldades em fazer um relógio para um display multiplexado. Não estou conseguindo fazer com que ele zere quando chega em 23:59.
Já tentei várias formas, mas estou tendo dificuldade em criar o código. Agradeço desde já pela a ajuda. Segue o código que eu fiz:

tabela:	DB	11000000b	; 0
DB	11111001b	; 1
DB	10100100b	; 2  	
DB	10110000b	; 3
DB	10011001b	; 4
DB	10010010b	; 5
DB	10000010b	; 6
DB	11111000b	; 7
DB	10000000b	; 8
DB	10010000b	; 9

ORG	00H

MOV	DPTR, #tabela

INICIO: MOV R0, #10
MOV R1, #00
MOV R2, #00
MOV R3, #10
MOV R4, #06
MOV R5, #00
MOV R6, #10
MOV R7, #00

D1: LCALL DISPLAY1
LCALL ATRASO
D2: LCALL DISPLAY2
LCALL ATRASO
D3: LCALL DISPLAY3
LCALL ATRASO
D4: LCALL DISPLAY4
LCALL ATRASO

CJNE 	R1,#09,END01

END01: INC R1
DJNZ R3, D1
MOV R3, #10
MOV R1, #00

CJNE 	R2,#06,END02

END02: INC R2
DJNZ R4, D1
CJNE R4,#00,D1
MOV R4, #06
MOV R2, #00
JMP CONTD3

CONTD3: CJNE R5,#09,END03
END03: INC R5
DJNZ R6, D1
CJNE R6,#00,D1
CJNE R5,#09,ZERAR5
ZERAR5: MOV R5,#00
MOV R6,#10
JMP CONTD4

CONTD4: CJNE R7,#02,END04
END04: INC R7
DJNZ R0, D1

DISPLAY1:
MOV P1, #0FFH
MOV A, R1
MOVC A, @A+DPTR
MOV B, #0FEH
MOV P0, B
MOV P1, A
RET

DISPLAY2:
MOV P1, #0FFH
MOV A, R2
MOVC A, @A+DPTR
MOV B, #0FDH
MOV P0, B
MOV P1, A
RET

DISPLAY3:
MOV P1, #0FFH
MOV A, R5
MOVC A, @A+DPTR
MOV B, #0FBH
MOV P0, B
MOV P1, A
RET

DISPLAY4:
MOV P1, #0FFH
MOV A, R7
MOVC A, @A+DPTR
MOV B, #0F7H
MOV P0, B
MOV P1, A
RET

ATRASO: MOV B, #10
DJNZ B, $
RET

END