📄 elec_clock.asm
字号:
org 00h
sjmp start
org 03h
ajmp INT_int0
org 13h
ajmp INT_int1
org 0bh
ajmp int_t0
org 30h
start: mov sp,#70h
mov tmod,#01h ;工作模式
mov tl0,#0b0h ;定时初值
mov th0,#3ch ;
mov b,#20
mov r3,#0 ;中断次数空置量
mov 30h,#00h ;开辟空间 分别保存时 分 秒
mov 31h,#00h
mov 32h,#00h
mov ie,#87h
mov tcon,#5h
clr tr0 ;开定时器
aa: acall display ;调用显示子程序
sjmp aa
display:
mov dptr,#table
again: mov r0,#30h
mov r2,#0feh
next: sjmp next1
next2: mov p2,r2
mov p1,#40h
acall delay
mov a,r2
rl a
mov r2,a
next1: mov a,@r0
swap a
anl a,#0fh
movc a,@a+dptr
mov p2,r2
mov p1,a
acall delay
mov a,r2
rl a
mov r2,a
mov a,@r0
anl a,#0fh
movc a,@a+dptr
mov p2,r2
mov p1,a
acall delay
mov a,r2
rl a
mov r2,a
inc r0
cjne r0,#33h,next2
ajmp again
ret
int_t0: push psw
push acc
mov tl0,#0b0h
mov th0,#3ch
djnz b,exit
mov b,#20
mov a,32h
add a,#1
da a
mov 32h,a
cjne a,#60h,exit
mov 32h,#00h
mov a,31h
add a,#1
da a
mov 31h,a
cjne a,#60h,exit
mov 31h,#00h
mov a,30h
add a,#1
da a
mov 30h,a
cjne a,#24h,exit
mov 30h,#00h
exit: pop acc
pop psw
reti
INT_int0:
mov a,r3
add a,#1
mov r3,a
cjne r3,#1,kaishi
mov 30h,#00h ;开辟空间 分别保存时 分 秒
mov 31h,#00h
mov 32h,#00h
setb tr0
sjmp return
kaishi: cjne r3,#2,ks
clr tr0
sjmp return
ks: mov 30h,#00h ;开辟空间 分别保存时 分 秒
mov 31h,#00h
mov 32h,#00h
mov r3,#0
return:
reti
INT_int1:
reti
delay: mov r6,#10 ;延时为4毫秒
del: mov r7,100
djnz r7,$
djnz r6,del
ret
table: db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -