📄 shuzipinlvji.asm
字号:
TTL EQU 30H
TTH EQU 31H
org 0000h
ajmp main
org 000bh
ajmp T0S
ORG 0150H
ORG 01FFH
MAIN: ACALL PTF
main1:mov r0,#79h ;显示器的始端口
mov r1,#02h
mov r3,TTL ;十进制调整
mov r2,TTH
acall loop2
mov a,r6 ;拆为非压缩的BCD数
acall loop4
mov a,r5
acall loop4
acall disp
sjmp main1
ptf: mov tmod,#51h ;t0工作于定时器方式1,t1工作于计数器方式1
mov th0,#3ch ;t0初始化,产生50ms定时中断
mov tl0,#0b0h
mov ie,#82h ;中断初始化,ea=1,et0=1
mov 33h,#14h ;中断20次
setb tr0 ;允许t0计数
setb tr1 ;允许t1计数
RET
t0s: mov th0,#3ch
mov tl0,#0b0h
djnz 33h,next
mov 33h,#14h
MOV TTL,TL1
MOV TTH,TH1
MOV TL1,#00H
MOV TH1,#00H
NEXT: reti
loop2:clr a ;二进制转换为十进制
mov r4,a
mov r5,a
mov r6,a
mov r7,#16
loop3:clr c
mov a,r3
rlc a
mov r3,a
mov a,r2
rlc a ;c为bi
mov r2,a ;(r4r5r6)+(r4r5r6)=(r4r5r6)*2+c
;十进制加
mov a,r6
addc a,r6
da a
mov r6,a
mov a,r5
addc a,r5
da a
mov r5,a
mov a,r4
addc a,r4
da a
mov r4,a
djnz r7,loop3
ret
loop4:mov 32h,a
anl a,#0fh ;拆为非压缩的BCD数
mov @r0,a
inc r0
mov a,32h
swap a
djnz r1,loop4
mov r1,#02h
ret
disp: mov r0,#79h ;设79H-7C为显示缓冲器
mov r3,#1
mov a,#0efh
gg: mov r4,a ;数码管动态显示
mov p0,#00h
mov p2,a
mov a,@r0
mov dptr,#aa
movc a,@a+dptr
ee: mov p0,a
acall bb
inc r0
MOV A,R3
JB ACC.3,ff
RL A
MOV R3,A
mov a,r4
rl a
SJMP gg
ff: ret
aa: DB 0EDH,28H,0CBH,0ABH,2EH ;0,1,2,3,4
DB 0A7H,0E7H,29H,0EFH,0AFH ;5,6,7,8,9
bb: 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 + -