|
//花樣流水燈,拉幕花樣+左移位+右移位+循環(huán)左移+循環(huán)右移
#include<reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
uchar y,aa;
void delay(uint i) //延時(shí)子函數(shù)
{
uint m;
uchar n;
for(m=i;m>0;m--)
for(n=110;n>0;n--);
}
void main()
{
while(1)
{
uchar k;
for(k=0;k<2;k++)
{
P1=0xff;
delay(1000); //拉幕花樣
P1=0x7e;
delay(1000);
P1=0x3c;
delay(1000);
P1=0x18;
delay(1000);
P1=0x00;
delay(1000);
P1=0x00;
delay(1000);
P1=0x18;
delay(1000);
P1=0x3c;
delay(1000);
P1=0x7e;
delay(1000);
P1=0xff;
delay(1000);
P1=0; //燈閃爍1次
delay(1000);
P1=0xff;
delay(1000);
}
y=8; // y=8時(shí),不需要里面的for循環(huán)就可以,流水燈為1次,改變y的值可以改變亮燈的位數(shù)。
while(y--) //這里如果不加while語(yǔ)句,燈會(huì)亂跳幾下后,就去執(zhí)行后面的程序了
{ //如果需要多次流水燈,就需要for循環(huán)語(yǔ)句,改變K的值就可以改變次數(shù)
uchar k;
for(k=0;k<2;k++) //流水循環(huán)次數(shù)
{
P1 = P1 << 1; //按位左移
delay(1000); //延時(shí)
if(P1 == 0) //如果P1等于零,
{ /*則跳到下一步,P1全送高電平*/
P1 = 0xff;
delay(1000);
}
}
}
y=8;
while(y--)
{
uchar k;
for(k=0;k<2;k++) //流水循環(huán)次數(shù)
{
P1 = P1 >> 1; //按位右移
delay(1000); //延時(shí)
if(P1 == 0) //如果P1等于零,
{ /*則跳到下一步,P1全送高電平*/
P1 = 0xff;
delay(1000);
}
}
}
aa=0xfe;
y=8;
while(y--)
{
P1 = aa;
delay(1000);
aa=_crol_(aa,1); //循環(huán)左移
}
aa=0x7f;
y=8;
while(y--)
{
P1 = aa;
delay(1000);
aa=_cror_(aa,1); //循環(huán)右移
}
}
}
|
評(píng)分
-
查看全部評(píng)分
|