📄 led自检.asm
字号:
;-----------led自检---------
;雪
;使用:r0-r3
;注意没有设置堆栈
;---------------------
led0 equ 30h ;显示缓冲区 (7段码)LED0--LED7
led1 equ 31h ;显示的高位--低位
led2 equ 32h
led3 equ 33h
led4 equ 34h
self_check: mov b,#0 ;B寄存器赋值,作用是给A寄存器换值(A寄存器使用率太高)
mov r1,#8h ;设定循环次数
zj: mov r0,#led0
mov dptr,#showtab
mov a,b
movc a,@a+dptr
mov @r0,a ;r0放字段码
inc r0
mov @r0,a
inc r0
mov @r0,a
inc r0
mov @r0,a
inc r0
mov @r0,a
lcall display
inc b
djnz r1,zj
ajmp self_check
display: push a
push psw
clr rs0
clr rs1
mov a,led0
mov p0,a
lcall sel1
lcall ledys
mov p0,led1
lcall sel2
lcall ledys
mov p0,led2
lcall sel3
lcall ledys
mov p0,led3
lcall sel4
lcall ledys
mov p0,led4
lcall sel5
lcall ledys
pop psw
pop a
ret
ledys: mov r2,#0a0h ;延时
dd: mov r4,#7h
dd0: mov r3,#0a0h
dd1 : djnz r3,dd1
djnz r4,dd0
djnz r2,dd
ret
sel1: clr p2.7 ;位选
clr p2.6
clr p2.5
ret
sel2: clr p2.5
clr p2.6
setb p2.7
ret
sel3: clr p2.7
setb p2.6
clr p2.5
ret
sel4: clr p2.5
setb p2.6
setb p2.7
ret
sel5: setb p2.5
clr p2.6
clr p2.7
ret
showtab: db 01h,02h,04h,08h,10h,20h,40h,80h ;字段码
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -