⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 th32.asm

📁 请认真阅读您的文件包然后写出其具体功能(至少要20个字)。尽量不要让站长把时间都花费在为您修正说明上。压缩包解压时不能有密码。系统会自动删除debug和release目录
💻 ASM
字号:
OUTBIT  equ 7F02h  ; 位控制口
OUTSEG  equ 7F01h  ; 段控制口
CTL     equ 7F00H  ;控制口
LEDBuf  equ  60h   ; 显示缓冲
Hour    equ  40h
Minute  equ  41h
Second  equ  42h
C100us  equ  43h

Tick    equ  10000
T100us  equ  256-50

       ljmp  Start

       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, #27h;#high(Tick)
       mov     C100us+1, #10h;#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

Delay:               ; 延时子程序
       mov   r7, #0FFH
DelayLoop:
       djnz  r7, DelayLoop
       djnz  r6, DelayLoop
       ret


LEDMAP:              ; 八段管显示码
       db    3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h
       db    7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71h
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   dptr, #OUTSEG
       movx  @dptr,a
       mov   dptr, #OUTBIT
       mov   a, r2
       movx  @dptr, a        ; 显示一位八段管
       mov   r6, #01H
       acall 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     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, #27h;#high(Tick)
       mov     C100us+1, #10h;#low(Tick)
       setb    TR0                ; 启动定时器0
       MOV     A,    #3
       MOV     DPTR,#CTL
       MOVX    @DPTR,A
MLoop:
       mov     a, Hour
       mov     b, #10
       div     ab
       acall    ToLED
       mov     LEDBuf, a
       mov     a, b
       acall    ToLED
       orl     a, #80h
       mov     LEDBuf+1, a
       mov     a, Minute
       mov     b, #10
       div     ab
       acall    ToLED
       mov     LEDBuf+2, a
       mov     a, b
       acall    ToLED
       orl     a, #80h
       mov     LEDBuf+3, a
       mov     a, Second
       mov     b, #10
       div     ab
       acall    ToLED
       mov     LEDBuf+4, a
       mov     a, b
       acall    ToLED
       mov     LEDBuf+5, a
       acall    DisplayLED
       ljmp    MLoop

       end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -