谁有这样的单片机流水灯程序:八个灯中有两个灯同时从两端相向点亮,交替循环。

2025-01-21 12:04:06
推荐回答(4个)
回答1:

for(i=1;i<5;i++)//8个灯有2个同时运动,闪四次为一个周期
{
led=0xff;//变量清空,即默认全灭
led&=~(1< led&=~(1<<(9-i));//第二个灯置位
PORTA=led;//送出显示
}

回答2:

org 0000h
loop: mov p1,#01111110b ;p1口的两端灯同亮
acall del300ms ;延迟300ms
mov p1,#10111101b ;p1口的两端灯内移
acall del300ms
mov p1,#11011011b ;再内移
acall del300ms
mov p1,#11100111b ;再内移
acall del300ms
mov p1,#11011011b ;向外移
acall del300ms
mov p1,#10111101b ;向外移
acall del300ms
mov p1,#01111110b ;向外移
acall del300ms
mov p1,#11111111b ;全灭
acall del300ms
ajmp loop ;重复上述过程

;=======================300ms延迟===
del300ms: mov r0,#02h
loop3: mov r1,#00h
loop4: mov r2,#00h
loop5: djnz r2,$
djnz r1,loop4
djnz r0,loop3
ret
end
;修改r0的值,产生不同长度的延迟时间.
;
回复:可以啊!

回答3:

#include
unsigned char j,temp,x,a,b,m;
unsigned int i;
void delay()
{
for(i=1;i<=1500;i++)
{
for(j=1;j<=125;j++);
}
}
main()
{
temp=0x18;
while(1)
{
P1=~temp;
delay();
for(x=1;x<4;x++)
{
a=(temp&0xf0)<b=(temp&0x0f)>>x;
P1=~(a|b); delay();
}
}
}

更多在这里
http://ouravr.com/bbs/bbs_content.jsp?bbs_sn=986795&bbs_page_no=1&bbs_id=1006

回答4:

太简单了