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

📄 h23.asm

📁 (1)完成键盘
💻 ASM
字号:


LowTemp   equ -99   ; A/D 0
HighTemp  equ 99    ; A/D 255

ADPort    equ 09000h
CurTemp   equ 51h

OUTBIT   equ 08002h
OUTSEG   equ 08004h  ; 段控制口
IN       equ 08001h

LEDBuf   equ 60h

       ORG   0000H
       ljmp  Start

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
       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, #1
       call  Delay

       mov   a, r2
       rr    a
       mov   r2, a

       inc   r0

       djnz  r1, Loop

       mov   dptr, #OUTBIT
       mov   a, #0
       movx  @dptr, a

       ret
; ================================
DisplayResult:
       mov   a, CurTemp
       jnb   acc.7, GE0

       mov   LEDBuf, #40h    ; '-'
       dec   a
       cpl   a
       jmp   Goon
GE0:
       mov   LEDBuf, #0  ; ' '
Goon:
       mov   b, #10
       div   ab
       mov   dptr, #LEDMAP
       movc  a, @a+dptr
       mov   LEDBuf+1, a

       mov   a, b
       movc  a, @a+dptr
       mov   LEDBuf+2, a

       mov   LEDBuf+3, #0   ; ' '
       mov   LEDBuf+4, #0   ; ' '
       mov   LEDBuf+5, #0   ; ' '

       ret


ReadAD:
       mov   dptr, #ADPort
       clr   a
       movx  @dptr, a       ; start A/D

       mov   a, #80
       djnz  acc, $         ; delay

       movx  a, @dptr
       mov   b,a
       mov   a,#0ffh
       clr   c
       subb  a,b
       ret

ReadTemp:
       mov   r1, #0
       mov   r2, #0
       mov   r0, #16
RLoop:
       call  ReadAD
       add   a, r2
       mov   r2, a
       jnc   GN1
       inc   r1
GN1:
       djnz  r0, RLoop

       mov   a, r2
       swap  a
       anl   a, #0fh
       xch   a, r1
       swap  a
       anl   a, #0f0h
       orl   a, r1            ; a = r1r2/16

       mov   b, #(HighTemp-LowTemp)
       mul   ab
       mov   a, b             ; /256
       add   a, #LowTemp
       mov   CurTemp, a
       ret

Start:
       mov   sp, #70h
MLoop:

       call  DisplayResult
       call  DisplayLED
       call  ReadTemp
       sjmp  MLoop

       end

⌨️ 快捷键说明

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