#include?//51系列单片机定义文件
#define?uchar?unsigned?char?//定义无符号字符

#define?uint?unsigned?int?//定义无符号整数
void?delay(uint);?//声明延时函数
void?main(void)
{?
uint?i;
uchar?temp;?
while(1)
{
temp=0x01;
for(i=0;i<8;i++)?//8个流水灯逐个闪动
{
P0=~temp;
delay(100);?//调用延时函数
temp<<=1;
}
temp=0x80;
for(i=0;i<8;i++)?//8个流水灯反向逐个闪动
{
P0=~temp;
delay(100);?//调用延时函数
temp>>=1;

}
temp=0xFE;
for(i=0;i<8;i++)?//8个流水灯依次全部点亮
{
P0=temp;
delay(100);?//调用延时函数
temp<<=1;
}
temp=0x7F;
for(i=0;i<8;i++)?//8个流水灯依次反向全部点亮
{
P0=temp;
delay(100);?//调用延时函数
temp>>=1;
}
}
}
void?delay(uint?t)?//定义延时函数
{
register?uint?bt;

for(;t;t--)
for(bt=0;bt<255;bt++);
}
单片机P0~P3复位时都等于0FFH,也就是高电平。所以初始时让这里的P0为0.再就是在主函数内的最后面加一条挂起语句:while(1);这是为了保证运行到此结束,否则加载后的程序可能一直往下运行,从而出现无法预知的结果。


