/*实现流水灯双向循环,并且在每次来回滚动后添加全亮或者全灭的闪烁效果 #include"reg52.h"
#include"intrins.h"
#define uint unsigned int
#define uchar unsigned char
inti,j;
voiddelay1ms(uint) ;
void delay1ms(uint) ;
voidmain()
{
while(1)
{
P2=0xfe;
delay1ms(60);
for(i=0;i<7;i++) //注意左移六次而不是7次和8次。i=0为第一个灯跳到第二个灯后,第二个灯亮。所以为了跳到第八个灯,i=6;即i<7
{
P2=_crol_(P2,1);
delay1ms(60);
}
for(j=0;j<7;j++)
{
P2=_cror_(P2,1);
delay1ms(60);
}
P2=0xff;
P2=0x00;
P2=0xfe; //为什么不能实现先全亮再全灭的效果?是因为一个口不能先后被多个数赋值吗,那应该如何解决 }
}
voiddelay1ms(uint z)
{
uint x,y;
for(x=450;x>0;x--)
for(y=z;y>0;y--);
}
|