/*-----------------------------------------------
功能:花樣燈(實現(xiàn)多種閃爍)
作者:fei yu
日期:2010-6-15
------------------------------------------------*/
#include<reg52.h>
#define uint unsigned int
void delay(uint);
main()
{
uint fre=0x04;
uint fre1,fre2;
uint comp1=0xfe,comp2=0x80;
while(1)
{
/*----------------------------------------------------------------------------------
模塊一:循環(huán)單向閃爍,只有一個燈亮
執(zhí)行3次,轉(zhuǎn)入下一種閃爍
----------------------------------------------------------------------------------*/
P1=0xfe;
while(1!=fre--)
{
fre1=0x08;
while(1!=fre1--)
{
delay(30000);
P1<<=1;
P1|=0x01;
if(P1==0x7f)
{
delay(30000);
P1=0xfe;
}
}
}
/*----------------------------------------------------------------------------------
模塊2:循環(huán)單向閃爍,只有兩個燈亮
3次,轉(zhuǎn)入下一種閃爍執(zhí)行
----------------------------------------------------------------------------------*/
P1=0xfc;
while(3!=fre++)
{
fre2=0x04;
while(1!=fre2--)
{
delay(30000);
P1<<=2;
P1|=0x03;
if(P1==0x3f)
{
delay(30000);
P1=0xfc;
}
}
}
/*----------------------------------------------------------------------------------
模塊3:循環(huán)往復(fù)閃爍,只有一個燈亮
執(zhí)行3次,轉(zhuǎn)入下一種閃爍
----------------------------------------------------------------------------------*/
P1=0xfe;
fre1=0x04;
while(1!=fre1--)
{
while(P1!=0x7f)
{
delay(30000);
P1<<=1;
P1|=0x01;
}
while(P1!=0xfe)
{
delay(30000);
P1>>=1;
P1|=0x80;
}
}
/*----------------------------------------------------------------------------------
模塊4:全亮全滅
執(zhí)行3次,轉(zhuǎn)入下一模塊
----------------------------------------------------------------------------------*/
while(3!=fre1++)
{
delay(30000);
P1=0x00;
delay(30000);
P1=0xff;
}
/*----------------------------------------------------------------------------------
模塊5:順次點亮或者熄滅,
多個燈亮,執(zhí)行3次,轉(zhuǎn)入下一模塊
----------------------------------------------------------------------------------*/
while(1!=fre1--)
{
P1=0xfe;
while(P1!=0x00)
{
delay(30000);
P1<<=1;
}
delay(30000);
P1=0x80;
while(P1!=0xff)
{
delay(30000);
P1>>=1;
P1|=0x80;
}
}
/*----------------------------------------------------------------------------------
模塊6:順次點亮或者熄滅,多個燈亮,
一次點亮兩個,執(zhí)行3次,轉(zhuǎn)入下一模塊
----------------------------------------------------------------------------------*/
while(3!=fre1++)
{
P1=0xfc;
while(P1!=0x00)
{
delay(30000);
P1<<=2;
}
delay(30000);
P1=0xc0;
while(P1!=0xff)
{
delay(30000);
P1>>=2;
P1|=0xc0;
}
delay(30000);
}
/*----------------------------------------------------------------------------------
模塊7:雙端對稱往返閃爍
執(zhí)行3次,進(jìn)行下一輪循環(huán)
----------------------------------------------------------------------------------*/
P1=0x7e;
delay(30000);
while(1!=fre1--)
{
fre2=0x00;
while(6!=fre2++)
{
P1=0xff;
comp1<<=1;
comp1|=0x01;
comp2>>=1;
P1&=comp1;
P1^=comp2;
delay(3000000);
if(P1==0xe7)
{
comp1<<=1;
comp1|=0x01;
comp2>>=1;
}
if(comp2==0x01)
{
comp1=0xfe;
comp2=0x80;
}
}
}
}
}
void delay(uint cnt)
{
while(cnt--);
}
