流水灯的本质就是使八个LED灯依次点亮,本文所采用的LED灯为低电平有效,故对八个LED灯依次赋低电平。对此,我们通过使用指令(RL:累加器循环左移)实现循环点亮。

代码如下:
ORG 0000H
AJMP MAIN
MAIN:
MOV R0,#50H %给R0,R1赋初值,用于延时函数的循环次数
MOV R1,#0F0H
MOV P2,#0FEH %P2端口与LED灯相连,设置灯的初始状态为1111 1110,即D0亮
S1: %RL为累加器循环左移,故设置P2的状态,需要先将P2的给累加器A
MOV A,P2
RL A
MOV P2,A
LCALL DEL %调用延时子程序
AJMP S1
DEL:
MOV R0,#50H %重新赋值
DJNZ R0,$ %原地跳转,内层循环
DJNZ R1,DEL %外层循环
MOV R1,#0F0H %重新赋值
RET
END
该程序通过RL指令实现八个LED灯的循环点亮效果,LED灯为低电平有效。首先设定P2端口与LED灯连接,初始状态为11111110,然后利用累加器A的循环左移操作改变P2端口的状态,配合延时子程序实现灯的依次点亮。程序包含内外两层循环,确保每个LED都能依次亮起。


&spm=1001.2101.3001.5002&articleId=128909556&d=1&t=3&u=286f7e1c5aeb4be8b6f53d6cc397bba2)
1万+

被折叠的 条评论
为什么被折叠?



