1.双灯的移动——可以直接用左右移函数实现
#include<reg52.h>
#include<intrins.h>
void delay(unsigned int ms)
{
unsigned char j;
for(;ms>0;ms--)
for(j=125;j>0;j++);
}
void main()
{
P0=0xfc; //三灯类似,该十六进制的数就行
while(1)
{
delay(1000);
P0=_crol_(P0,1); //此处是一格一格的移,还可以改为n格n格的移
}
}
2.多种复杂的移动组合——先右移后左移,然后亮灭三次
#include<reg52.h>
#include<intrins.h>
void delay(unsigned int ms)
{
unsigned char j;
for(;ms>0;ms--)
for(j=125;j>0;j++);
}
void main()
{
int i;
P0=0xfc;
for(i=0;i<6;i++) //注意开始付了初值给P0灯已经亮了一次,所以i<6
{
delay(1000);
P0=_crol_(P0,1); //这里面使用左右移函数会比较简单
}
for(i=0;i<7;i++)
{
delay(1000);
P0=_cror_(P0,1);
}
for(i=0;i<3;i++)
{
P0=0x00;
delay(1000);
P0=0xff;
delay(1000);
}
}