求由AT89S52单片机,8个LED,流水灯程序,要求八灯一盏接一盏闪烁,且循环不灭,,要求用c语

2024-12-04 21:07:49
推荐回答(1个)
回答1:

/**************************************************************
51单片机流水灯
C语言源程序

文件说明:流水灯C程序

程序说明:
MCU采用AT89S52,外接11.0592M晶振,P2口输出

*************************************************************/
#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
个流水灯逐个闪动

{
P2=~temp;
delay(100); //
调用延时函数

temp<<=1;
}
temp=0x80;
for(i=0;i<8;i++) //8
个流水灯反向逐个闪动

{
P2=~temp;
delay(100); //
调用延时函数

temp>>=1;
}
temp=0xFE;
for(i=0;i<8;i++) //8
个流水灯依次全部点亮

{
P2=temp;
delay(100); //
调用延时函数

temp<<=1;
}
temp=0x7F;
for(i=0;i<8;i++) //8
个流水灯依次反向全部点亮

{
P2=temp;
delay(100); //
调用延时函数

temp>>=1;
}
}
}
void delay(uint t) //
定义延时函数

{
register uint bt;
for(;t;t--)
for(bt=0;bt<255;bt++);
}