OUTBIT equ 08002h; 位控制口
OUTSEG equ 08004h; 段控制口
IN
equ 08001h; 键盘读入口
LEDBuf equ 60h
; 显示缓冲
Num
equ 70h
; 显示的数据
DelayT equ 75h
;
ljmpStart
LEDMAP:
; 八段管显示码
db
3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h
db
7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71h
Delay:
; 延时子程序
mov r7, #0
DelayLoop:
djnzr7, DelayLoop
djnzr6, 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 dptr, #OUTSEG
movx@dptr,a
mov dptr, #OUTBIT
mov a, r2
movx@dptr, a
; 显示一位八段管
mov r6, #01
callDelay
mov a, r2
; 显示下一位
rr
a
mov r2, a
inc r0
djnzr1, Loop
mov dptr, #OUTBIT
mov a, #0
movx@dptr, a
; 关所有八段管
ret
Start:
mov sp, #40h
mov Num, #0
MLoop:
inc Num
mov a, Num
mov b, a
mov r0, #LEDBuf
FillBuf:
mov a, b
anl a, #0fh
mov dptr, #LEDMap
movca, @a+dptr
; 数字转换成显示码
mov @r0,a
; 显示在码填入显示缓冲
inc r0
cjner0, #LEDBuf+6, FillBuf
mov DelayT,#30
DispAgain:
callDisplayLED
; 显示
djnzDelayT,DispAgain
ljmpMLoop
end
初学者老师给我的实验版LED数码管的源程序 看不太懂
谁帮我详细解释一下 能不能帮我分析一下电路是怎么接的
发邮箱也可以 [email protected]
51单片机
|