#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毫秒
}
}
} |