📄 shizhong1.asm
字号:
org 0000h
ajmp main
org 000bh
ajmp ptf0
main:mov 7ch,#00h ;时十位清零
mov 7bh,#00h ;时个位清零
mov 7ah,#00h ;分十位清零
mov 79h,#00h ;分个位清零
mov 78h,#00h ;秒清零
mov th0,#03ch ;t0初始化
mov tl0,#0b0h ;定时50ms
mov tmod,#01h
mov ip,#02h
mov ie,#82h ;中断初始化
setb tr0
mov 30h,#14h ;t0溢出中断次数计数单元初始化20(1s)
mov 32h,#3ch
mov 33h,#0ah
mov 34h,#06h
mov 35h,#0ch
mov 36h,#0ah
ld: acall disp
jb p2.3,ld1 ;时十位校正
acall delay
jnb p2.3,ld1
mov a,7ch
cjne a,#02h,w
mov 7ch,#0ffh
w: inc 7ch ;时十位加1
mov 78h,#00h ;秒清零
ld1: jb p2.2,ld2 ;时个位校正
acall delay
jnb p2.2,ld2
mov a,7bh
cjne a,#09h,w1
mov 7bh,#0ffh
w1: inc 7bh ;时个位加1
mov 78h,#00h ;秒清零
ld2: jb p2.1,ld3 ;分十位校正
acall delay
jnb p2.1,ld3
mov a,7ah
cjne a,#05h,w2
mov 7ah,#0ffh
w2: inc 7ah ;分十位加1
mov 78h,#00h ;秒清零
ld3: jb p2.0,ld4 ;分个位校正
acall delay
jnb p2.0,ld4
mov a,79h
cjne a,#09h,w3
mov 79h,#00h
w3: inc 79h ;分个位加1
mov 78h,#00h ;秒清零
ld4: mov a,30h ;调用报时程序
cjne a,#14h,ld5
setb p1.2
mov a,79h
jnz ld5
mov a,7ah
jnz ld5
clr p1.2
ld5: sjmp ld
ptf0:mov th0,#03ch ;中断服务子程序
mov tl0,#0b0h
djnz 30h,ptf0r ;1秒到否?
inc 78h ;秒加1
mov 30h,#14h ;恢复中断次数计数单元20
djnz 32h,ptf0r ;1分到否?
mov 78h,#00h
inc 79h
mov 32h,#3ch
djnz 33h,ptf0r ;分个位到十否?
mov 79h,#00h
mov 33h,#0ah
inc 7ah
djnz 34h,ptf0r ;分十位到六否?
mov 7ah,#00h
mov 34h,#06h
inc 7bh
djnz 35h,pp1 ;12小时到否?
mov 35h,#0ch
mov 7ch,#00h
mov 7bh,#00h
sjmp ptf0r
pp1: djnz 36h,ptf0r ;时个位到十否?
mov 7bh,#00h
mov 36h,#0ah
inc 7ch
ptf0r: reti
disp:mov r0,#79h ;设79H-7C为显示缓冲器
mov r3,#1
mov a,#0efh
gg: mov r4,a ;数码管动态显示
mov p0,#00h
mov p2,a
mov a,30h
cjne a,#14h,loop ;1秒到小数点闪烁
mov a,r4
jb acc.6,loop
mov dptr,#tab1
sjmp san
loop:mov dptr,#tab
san: mov a,@r0
movc a,@a+dptr
ee: mov p0,a
acall delay
inc r0
MOV A,R3
JB ACC.3,ff
RL A
MOV R3,A
mov a,r4
rl a
SJMP gg
ff: ret
tab: DB 0EDH,28H,0CBH,0ABH,2EH ;0,1,2,3,4
DB 0A7H,0E7H,29H,0EFH,0AFH ;5,6,7,8,9
tab1:DB 0FDH,38H,0DBH,0BBH,3EH ;0.,1.,2.,3.,4.
DB 0B7H,0F7H,39H,0FFH,0BFH ;5.,6.,7.,8.,9.
delay:MOV R7,#02H ;延时子程序
cc: MOV R6,#0ffH
dd: DJNZ R6,dd
DJNZ R7,cc
RET
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -