51单片机用汇编语言如何设计8个轮流呼吸的呼吸灯?

我是一个51单片机的初学者,我想设计8个呼吸灯并用PROTEUS仿真,从第一个灯开始,逐渐亮再逐渐灭,接着下一个灯逐渐亮逐渐灭,以此类推,请问大神们用汇编语言可如何编写并仿真这个程序,诚心求教!谢谢!

第1个回答  2022-04-19
因为我不知道你这个板子的硬件,我就假设一下吧,你自己对照着看看,关键是流程
假设如下这八个灯依次接在P0口的八个口上,高电平为灯亮,低电平为灯灭,程序如下
ORG 0000H
AJMP START
START:MOV P0,#01H;()只有第一个灯亮
ACALL DELAY;延迟,不加延迟的话 你根本看不起清到底那个灯亮的
MOV P0,#02H;()只有第二个灯亮
ACALL DELAY
MOV P0,#04H;()只有第三个灯亮
ACALL DELAY
MOV P0,#08H;()只有第四个灯亮
ACALL DELAY
MOV P0,#10H;()只有第五个灯亮
ACALL DELAY
MOV P0,#20H;()只有第六个灯亮
ACALL DELAY
MOV P0,#40H;()只有第七个灯亮
ACALL DELAY
MOV P0,#80H;()只有第八个灯亮
ACALL DELAY
AJMP START;周而复始
DELAY: MOV R6,#40;延迟程序,晶振为3.57MHZ时大概是0.1S
0.1SL1: MOV R5,#246
0.1SL2: NOP
DJNZ R5,0.1SL2
DJNZ R6,0.1SL1
RET
END
第2个回答  2022-04-18
两个思路,一个思路用io口输出pwm调整占空比实现,一个思路是用da转换实现,用pwm只需要一组io口,用da转换需要两组io口。
第3个回答  2022-04-20
51的意思:唯一(谐音)
相似回答