org 0000h
sjmp main
org 000bh
ljmp t0int
org 0030h
main: mov sp,#60h
mov tmod,#01h
mov th0, #3ch ;5000微秒
mov tl0,#0b0h
setb et0 ;允许t0中断
setb tr0 ;显示t0
setb ex0 ;允许外部中断0
setb ex1 ;允许外部中断1
setb ea ;开总中断
mov R0,#20
mov 26h,#59
mov 27h,#50
mov 28h,#23
re: call disp
sjmp re
disp:
mov A ,26h
mov B,#10
div AB ;取余
mov 20h,B ;秒个位
mov 21h,A ;秒十位
mov A,20h
mov dptr,#tab
movc A,@A+dptr
setb p2.5
mov p1,A ;显示秒个位
call del ;延时
clr p2.5
mov A,21h
mov dptr,#tab
movc A,@A+dptr
setb p2.4
mov p1,A ;显示秒十位
call del ;延时
clr p2.4
mov A ,27h
mov B,#10
div AB ;取余
mov 22h,B ;分个位
mov 23h,A ;分十位
mov A,22h
mov dptr,#tab
movc A,@A+dptr
setb p2.3 ;选数码管
mov p1,A ;显示分个位
call del ;延时
clr p2.3
mov A,23h
mov dptr,#tab
movc A,@A+dptr
setb p2.2 ;选数码管
mov p1,A ;显示分十位
call del ;延时
clr p2.2
mov A ,28h
mov B,#10
div AB ;取余
mov 24h,B ;时个位
mov 25h,A ;时十位
mov A,24h
mov dptr,#tab
movc A,@A+dptr
setb p2.1 ;选数码管
mov p1,A ;显示时个位
call del ;延时
clr p2.1
mov A,25h
mov dptr,#tab
movc A,@A+dptr
setb p2.0 ;选数码管
mov p1,A ;显示时十位
call del ;延时
clr p2.0
ret
t0int: mov th0,#3ch
mov tl0,#0b0h ;5000us
djnz R0,rere
mov R0,#20 ;1s
inc 26h
mov A,26h
cjne A,#60,rere ;秒满60跳
mov 26h,#0 ;;清零
inc 27h
mov A,27h
cjne A,#60,rere ;分满六十跳
mov 27h,#0 ;清零
inc 28h
mov A ,28h
cjne A,#24,rere ;时满24跳 24小时制
mov 28h,#0 ;清零
rere: reti
tab:db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h
DEL:MOV R7,#0AH ;延时子程序
AA:DJNZ R7,AA
ret
end
2021-06-28 15:56:05
43KB
时钟
仿真
1