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

📄 noname1.asm

📁 单片机实验程序-13种-17.4M-pdf.zip
💻 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 + -