📄 做好调时间的电子钟程序.txt
字号:
org 0000h
ajmp start
org 000bh
ajmp time0
org 0040h
start: mov tmod,#01h
mov th0,#3ch
mov tl0,#0b0h
setb ea
setb et0
setb tr0
/*以上是为定时器工作做的设定工作*/
a_m equ 20h
b_m equ 21h
a_h equ 23h
b_h equ 24h
temp equ 25h
temp2 equ 26h
s_bit equ 27h
mov s_bit,#0ffh
mov temp,#0
mov temp2,#0
mov 32h,#0
mov 33h,#0
mov 30h,#0
mov 31h,#0
mov r0,#0
mov r1,#0
mov p3,#0ffh
stlop:acall disply
mov a,r0
cjne a,#57,dsp//如果时间不准可以调这个数字
inc temp
mov r0,#0
dsp:mov a,temp
cjne a,#60,next//60秒重计数.
inc temp2
mov temp,#0
next: push acc
dsp2:mov a,temp2
cjne a,#24,next2
mov temp2,#0
next2:pop acc
jb p3.2,th
lcall d10ms
jb p3.2,th
inc temp
lcall d1ms
th:jb p3.4,th2
lcall d10ms
jb p3.4,th2
inc temp2
lcall d1ms
th2:jb p3.3,th3
lcall d10ms
jb p3.3,th3
dec temp
lcall d1ms
th3:jb p3.5,th4
lcall d10ms
jb p3.5,th4
dec temp2
lcall d1ms
th4:
ljmp stlop
disply:mov a,temp
mov b,#10
div ab
mov b_m,a
mov a_m,b
mov dptr,#nemtab
dplop:mov a,a_m
movc a,@a+dptr
mov p0,a//送显示
clr p2.2
acall d1ms
setb p2.2
mov a,b_m
movc a,@a+dptr
mov p0,a
clr p2.3
acall d1ms
setb p2.3
/* 分钟完 */
push acc
push b
mov a,temp2
mov b,#10
div ab
mov b_h,a
mov a_h,b
mov dptr,#nemtab
mov a,a_h
movc a,@a+dptr
mov p0,a//送显示
clr p2.4
acall d1ms
setb p2.4
mov a,b_h
movc a,@a+dptr
mov p0,a
clr p2.5
acall d1ms
setb p2.5
pop b
pop acc
/*小时显示完毕,以下是闪点显示*/
push acc
push b
mov a,s_bit
mov p0,a//送显示
clr p2.4
acall d1ms
setb p2.4
pop b
pop acc
ret
/*小时完*/
d1ms:mov r7,#10
d1:mov r6,#200
d2:djnz r6,$
djnz r7,d1
ret
d10ms:mov r7,#200
d3:mov r6,#200
d4:djnz r6,$
djnz r7,d3
ret
time0:
push acc
push psw
inc 30h
inc 31h
mov a,30h
cjne a,#20,tnext
inc r0
mov 30h,#0
mov 32h,#0
/*以上是处理分钟的,下面处理闪点的*/
tnext:mov a,31h
cjne a,#10,tnext2
cpl s_bit.7
mov 31h,#0
mov 33h,#0
mov 34h,#0
tnext2:mov th0,#3ch
mov tl0,#0b0h
pop psw
pop acc
reti
nemtab:db 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -