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

📄 th20_电子时钟.asm

📁 单片机杭州天煌教仪自带例程单片机杭州天煌教仪自带例程
💻 ASM
字号:
;电子时钟
LEDBuf  equ  60h   ; 显示缓冲
Hour    equ  40h
Minute  equ  41h
Second  equ  42h
C100us  equ  43h

Tick    equ  10000
T100us  equ  156;256-100
        ORG    0000H
        ljmp   Start
        org    000bh
        LJMP   T0Int
        ORG    0100H
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  ; 从左边开始显示
       MOV   P1,#0FFH
Loop:  mov   P1, #0          ; 关所有八段管
       mov   a, @r0                 
       mov   P0, A   
       mov   a, r2
       mov   P1, 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
       
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 + -