📄 noname1.asm
字号:
ljmp Start
Hour equ 40h
Minute equ 41h
Second equ 42h
C100us equ 43h
Tick equ 10000
T100us equ 256-50
org 000bh
T0Int:
push PSW
push ACC
mov a, C100us+1
jnz Goon
dec C100us
Goon:
dec C100us+1
mov a, C100us
orl a, C100us+1
jnz Exit
mov C100us, #high(Tick)
mov C100us+1, #low(Tick)
inc Second
mov a, Second
cjne a, #60, Exit
mov Second, #0
inc Minute
mov a, Minute
cjne a, #60, Exit
mov Minute, #0
inc Hour
mov a, Hour
cjne a, #24, Exit
mov Hour, #0
Exit:
pop ACC
pop PSW
reti
OUTBIT equ 0e101h ; 位控制口
CLK164 equ 0e102h ; 段控制口(接164时钟位)
DAT164 equ 0e102h ; 段控制口(接164数据位)
IN equ 0e103h ; 键盘读入口
LEDBuf equ 60h ; 显示缓冲
LEDMAP: ; 八段管显示码
db 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h
db 7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71h
Delay: ; 延时子程序
mov r7, #0
DelayLoop:
djnz r7, DelayLoop
djnz r6, DelayLoop
ret
DisplayLED:
mov r0, #LEDBuf
mov r1, #6 ; 共6个八段管
mov r2, #00100000b ; 从左边开始显示
Loop:
mov dptr, #OUTBIT
mov a, #0
movx @dptr, a ; 关所有八段管
mov a, @r0
mov B, #8 ; 送164
DLP:
rlc a
mov r3, a
mov acc.0, c
mov dptr, #DAT164
anl a,#0fdh
movx @dptr, a
mov dptr, #CLK164
orl a,#02h
movx @dptr, a
anl a,#0fdh
movx @dptr, a
mov a, r3
djnz B, DLP
mov dptr, #OUTBIT
mov a, r2
movx @dptr, a ; 显示一位八段管
mov r6, #1
call Delay
mov a, r2 ; 显示下一位
rr a
mov r2, a
inc r0
djnz r1, Loop
ret
; =================================================================================
ToLED:
mov dptr, #LEDMap
movc a, @a+dptr
ret
Start:
mov dptr,#0e100h
mov a,#03h
movx @dptr,a
mov TMOD, #02h ; 模式2, 定时器
mov TH0, #T100us
mov TL0, #T100us
mov IE, #10000010b ; EA=1, IT0 = 1
mov Hour, #0
mov Minute, #0
mov Second, #0
mov C100us, #high(Tick)
mov C100us+1, #low(Tick)
setb TR0 ; 启动定时器0
MLoop:
mov a, Hour
mov b, #10
div ab
call ToLED
mov LEDBuf, a
mov a, b
call ToLED
orl a, #80h
mov LEDBuf+1, a
mov a, Minute
mov b, #10
div ab
call ToLED
mov LEDBuf+2, a
mov a, b
call ToLED
orl a, #80h
mov LEDBuf+3, a
mov a, Second
mov b, #10
div ab
call ToLED
mov LEDBuf+4, a
mov a, b
call ToLED
mov LEDBuf+5, a
call DisplayLED
ljmp MLoop
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -