#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char //宏定义
#define uint unsigned int
uchar led;
void delay(uint z) //延时子函数体
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void main()
{
led=0xfe; //赋初值
while(1)
{
P1=led; //点亮第一个小灯
delay(100); //延时100毫秒
led=_crol_(led,1); 将led的变量左移给下一位
}
}
/*8个发光管间隔200ms由上至下,返回再由上至下,一个个往下亮,后全亮
由下至上,返回再由下至上,一个个往下亮,后全亮
再重复2次,
然后全部熄灭再以500ms间隔
全部闪烁3次。重复此过程*/
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar led;
uint i,j;
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void main()
{
while(1)
{
for(j=0;j<2;j++)
{
led=0xfe; //赋初值
for(i=0;i<8;i++)
{
P1=led; //点亮第一个小灯
delay(200); //延时200毫秒
led=_crol_(led,1); //将led变量循环左移给下一位
}
led=0xfe; //赋初值
@go下弦
for(i=0;i<8;i++)
{
P1=led; //点亮第一个小灯
delay(200); //延时200毫秒
led<<=1; //左移给下一位
}
led=0x7f; //赋初值
for(i=0;i<8;i++)
{
P1=led; //点亮第一个小灯
delay(200); //延时200毫秒
led=_cror_(led,1); //将led变量循环右移给下一位
}
led=0x7f; //赋初值
for(i=0;i<8;i++)
{
P1=led; //点亮第一个小灯
delay(200); //延时200毫秒
led>>=1; //右移给下一位
}
}
for(j=0;j<6;j++)
{
P1=~P1; //全部取反6次,即闪烁5次
delay(500); //延时500毫秒
}
}
} |