for(i=1;i<5;i++)//8个灯有2个同时运动,闪四次为一个周期
{
led=0xff;//变量清空,即默认全灭
led&=~(1< led&=~(1<<(9-i));//第二个灯置位
PORTA=led;//送出显示
}
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的值,产生不同长度的延迟时间.
;
回复:可以啊!
#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)<
P1=~(a|b); delay();
}
}
}
更多在这里
http://ouravr.com/bbs/bbs_content.jsp?bbs_sn=986795&bbs_page_no=1&bbs_id=1006
太简单了