📄 maikuangceliang.asm
字号:
org 0000h
ajmp main
org 0003h
ajmp pint0s
main: mov sp,#60h ;中断初始化
mov tmod,#09h
mov th0,#00h
mov tl0,#00h
setb it0
setb ea
setb ex0
setb tr0
main1:mov r0,#79h ;显示器的始端口
mov r1,#02h
mov r3,30h ;读定时器t0的值
mov r2,31h
acall loop2 ;十进制调整
mov a,r6 ;BCD码调整
acall loop4
mov a,r5
acall loop4
main2:acall disp ;调用显示
djnz 33h,tt
sjmp main1
tt: sjmp main2
pint0s:mov 30h,tl0
mov 31h,th0
mov tl0,#00h
mov th0,#00h
reti
loop2:clr a ;二进制转换为十进制(r2r3=r4r5r6)
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 delay
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
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 + -