#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
#define Q 50000
//延时函数声明
void delay(uint t);
//主函数
void main(void)
{
uchar i,a,b,c;
//从左到右依次点亮一个小灯;
c=0xfe;
for(i=0;i<8;i++)
{
a=c<<i; //切不可写成a=P0<<i; 不要把IO口做为中间变量运算;单片机会随时读取IO口状态;
b=c>>(8-i); //P0=~(0x01<<i)
P0=a|b;
delay(Q);
}
//从右到左依次点亮一个小灯;
P0=0xff;
for(i=0;i<8;i++)
{
P0=~(0x80>>i); //1000 0000右移i(0)位1000 0000 取反0111 1111;
delay(Q); //右侧第一灯亮延时;
}
//从左到右依次点亮小灯;
P0=0xff;
for(i=0;i<8;i++)
{
P0<<=1; //每次左移一位;
delay(Q); //每移一位进行一次延时;
}
//从右到左依次点亮小灯
P0=0xff; //关闭所有LED灯;
for(i=0;i<8;i++)
{
P0>>=1;
delay(Q);
}
//两个LED分别从中间像外侧流动
P0=0xff;
for(i=0;i<3;i++)
{
P0=0xe7;
delay(Q);
P0=0xdb;
delay(Q);
P0=0xbd;
delay(Q);
P0=0x7e;
delay(Q);
}
//两个LED分别从两侧向中间流动
P0=0xff;
for(i=0;i<3;i++)
{
P0=0x7e;
delay(Q);
P0=0xbd;
delay(Q);
P0=0xdb;
delay(Q);
P0=0xe7;
delay(Q);
}
//奇偶灯交替闪烁
for(i=0;i<6;i++)
{
P0=0x55;
delay(Q);
P0=~P0;
delay(Q);
}
//四个灯交替闪烁
for(i=0;i<6;i++)
{
P0=0xf0;
delay(Q);
P0=~P0;
delay(Q);
}
//整体闪烁三次
P0=0xff;
for(i=0;i<6;i++)
{
P0=~P0;
delay(Q);
}
while(1);
}
//延时函数
void delay(uint t)
{
while(--t);
}
C51简单花样流水灯
最新推荐文章于 2023-09-26 20:12:50 发布