用汇编改了一下,没有调试过,不保证正确。
org 0000h
jmp start
org 000bh
jmp timer0
org 0030h
timer0: mov th0,#3ch
mov tl0,#0bfh
djnz r0,hour2
mov r0,#10
second: inc r7
cjne r7,#60h,minute
mov r7,#00h
inc r6
minute: cjne r6,#60h,hour
mov r6,#00h
inc r5
hour: cjne r5,#24h,hour2
mov r5,#00h
hour2: reti
org 0100h
start: mov r5,#00h ;hour
mov r6,#00h ;minute
mov r7,#00h ;second
mov tmod,#01h
mov th0,#3ch
mov tl0,#0bfh
setb et0
setb tr0
setb ea
loop: call show
jmp loop
show: clr c
mov p2,#20h
mov a,r5
mov b,#10
div ab
mov dptr,#seg
movc a,@a+dptr
mov p1,a
call delay
mov a,p2
rrc a
mov p2,a
mov a,b
movc a,@a+dptr
mov p1,a
call delay
mov a,p2
rrc a
mov p2,a
mov a,r6
mov b,#10
div ab
mov dptr,#seg
movc a,@a+dptr
mov p1,a
call delay
mov a,p2
rrc a
mov p2,a
mov a,b
movc a,@a+dptr
mov p1,a
call delay
mov a,p2
rrc a
mov p2,a
mov a,r7
mov b,#10
div ab
mov dptr,#seg
movc a,@a+dptr
mov p1,a
call delay
mov a,p2
rrc a
mov p2,a
mov a,b
movc a,@a+dptr
mov p1,a
call delay
mov p2,#00h
ret
delay: mov r4,#50
dl0: djnz r4,dl0
ret
seg: db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h
end