📄 h39.asm
字号:
; 硬件实验三十九 压力(温度)传感器实验
CS0809 equ 0a000h ; AD0809片选
OUTBIT equ 08002h ; 位控制口
OUTSEG equ 08004h ; 段控制口
IN equ 08001h ; 键盘读入口
LEDBuf equ 60h ; 显示缓冲
Num equ 70h ; 显示的数据
DelayT equ 75h ;
ADResult equ 76h ; A/D转换结果
org 0
ljmp Start
AD0809Read:
mov dptr, #CS0809
mov a, #0
movx @dptr, a ; 起动 A/D
mov a, #40h
djnz ACC, $ ; 延时 > 100us
movx a, @dptr ; 读入结果
mov ADResult, a
ret
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 acc, DelayLoop
ret
SearchLedMap:
anl a, #0fh
mov dptr, #LEDMAP
movc a, @a+dptr
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 dptr, #OUTSEG
movx @dptr,a
mov dptr, #OUTBIT
mov a, r2
movx @dptr, a ; 显示一位八段管
mov a, #01
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
Start:
nop
call AD0809Read
mov LEDBuf+0, #40h
mov LEDBuf+1, #40h
mov LEDBuf+2, #40h
mov LEDBuf+3, #40h
mov a, ADResult
swap a
call SearchLedMap
mov LEDBuf+4, a
mov a, ADResult
call SearchLedMap
mov LEDBuf+5, a
mov DelayT,#80
DisplayAgain:
call DisplayLED
djnz DelayT,DisplayAgain
nop
sjmp Start
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -