/********************************************************/
/****** 名称:广州塔 ***************************/
/****** 编写:忧伤的季节 ***************************/
/****** 时间:2014年12月01日 ***************************/
/********************************************************/
#include
#include
#define uchar unsigned char
#define uint unsigned int
uchar i,k,a;
uint cy,cy1,pw;
uchar code table[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};// 一个灯顺时针流水
uchar code table1[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};// 一个灯顺时针流水
uchar code table2[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};
uchar code table3[]={0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe};
uchar code table4[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
uchar code table5[]={0x00,0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f};
uchar code table6[]={0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00};
uchar code table7[]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00};
uchar code table8[]={0x55,0xaa};
uchar code table9[]={0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff};
uchar code table10[]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};
void delay1(uint z)
{
uint x,y;
for(x=250;x>0;x--)
for(y=z;y>0;y--);
}
void delay2(uint x)
{
uint a,b;
for(a=x;a>0;a--)
for(b=5;b>0;b--);
}
/******************两层向上*********************/
void yiceng()
{
for(k=0;k<8;k++){P3=table[k];P2=table[k];delay1(200);}
}
/******************两层向下*********************/
void yiceng1()
{
for(k=0;k<8;k++){P3=table1[k];P2=table1[k];delay1(200);}
}
/******************两条单个顺时针滴水*********************/
void dishushun()
{
for(i=0;i<8;i++)
{
P1=table4[i];
P0=table2[i];
for(k=0;k<8;k++){P2=table1[k];delay1(5);}P2=0xff;
for(k=0;k<8;k++){P3=table1[k];delay1(5);}P3=0xff;
}
}
/******************两条单个逆时针滴水*********************/
void dishuni()
{
for(i=0;i<8;i++)
{
P1=table2[i];
P0=table4[i];
for(k=0;k<8;k++){P2=table1[k];delay1(5);}P2=0xff;
for(k=0;k<8;k++){P3=table1[k];delay1(5);}P3=0xff;
}
}
/******************滴水下*********************/
void liangdix()
{
for(i=0;i<8;i++)
{
P1=table2[i];
P0=table4[i];
for(k=0;k<8;k++){P2=table1[k];delay1(50);}P2=0xff;
for(k=0;k<8;k++){P3=table1[k];delay1(50);}P3=0xff;
}
}
/******************滴水上*********************/
void liangdis()
{
for(i=0;i<8;i++)
{
P1=table4[i];
P0=table2[i];
for(k=0;k<8;k++){P2=table[k];delay1(50);}P2=0xff;
for(k=0;k<8;k++){P3=table[k];delay1(50);}P3=0xff;
}
}
/******************两层从中间向上下拉伸*********************/
void sxl()
{
P1=0xff;
P0=0xff;
for(k=0;k<8;k++){P3=table4[k];P2=table4[k];delay1(200);}
}
/******************两层从顶向下拉伸*********************/
void sxl1()
{
P1=0xff;
P0=0xff;
for(k=0;k<8;k++){P3=table6[k];P2=table6[k];delay1(400);}
}
/******************两层从中间向上下拉伸*********************/
void sxls()
{
P1=0xff;
P0=0xff;
for(k=0;k<8;k++){P3=table6[k];P2=table7[k];delay1(200);}
}
/******************单层从底向上旋转*********************/
void danxuan()
{ P2=0xff;P3=0xff;
for(i=0;i<8;i++)
{
P1=0x00;P0=0x00;
P3=table[i];
for(k=0;k<8;k++){P0=table5[k];delay1(200);}
for(k=0;k<8;k++){P1=table3[k];delay1(200);}
}P3=0xff;
for(i=0;i<8;i++)
{
P1=0x00;P0=0x00;
P2=table[i];
for(k=0;k<8;k++){P0=table5[k];delay1(200);}
for(k=0;k<8;k++){P1=table3[k];delay1(200);}
}P2=0xff;
}
/******************单层从顶向上旋转*********************/
void danxuand()
{ P2=0xff;P3=0xff;
for(i=0;i<8;i++)
{
P1=0x00;P0=0x00;
P2=table1[i];
for(k=0;k<8;k++){P0=table5[k];delay1(200);}
for(k=0;k<8;k++){P1=table3[k];delay1(200);}
}P2=0xff;
for(i=0;i<8;i++)
{
P1=0x00;P0=0x00;
P3=table1[i];
for(k=0;k<8;k++){P0=table5[k];delay1(200);}
for(k=0;k<8;k++){P1=table3[k];delay1(200);}
}P3=0xff;
}
/******************两层竖立向圆顺时针合围*********************/
void shw()
{
P2=0x00;P3=0x00;
for(k=0;k<8;k++){P0=table5[k];P1=table3[k];delay1(700);}
}
/******************两层竖立向圆顺时针回收*********************/
void shw1()
{
P2=0x00;P3=0x00;
for(k=0;k<8;k++){P0=table6[k];P1=table7[k];delay1(700);}
}
/******************两层竖立向圆逆时针回收*********************/
void shw3()
{
P2=0x00;P3=0x00;
for(k=0;k<8;k++){P0=table7[k];P1=table6[k];delay1(700);}
}
/******************两层竖立向圆逆时针合围*********************/
void shw2()
{
P2=0x00;P3=0x00;
for(k=0;k<8;k++){P0=table9[k];P1=table10[k];delay1(700);}
}
/******************四条单个顺时针滴水闪*********************/
void sidisun()
{
for(i=0;i<2;i++)
{
P1=table8[i];
P0=table8[i];
for(k=0;k<8;k++){P2=table1[k];delay1(50);}P2=0xff;
for(k=0;k<8;k++){P3=table1[k];delay1(50);}P3=0xff;delay1(700);
}
}
/******************四条单个顺时针滴水闪*********************/
void sidisun1()
{
for(i=0;i<2;i++)
{
P1=table8[i];
P0=table8[i];
for(k=0;k<8;k++){P2=table1[k];delay1(50);}P2=0xff;
for(k=0;k<8;k++){P3=table1[k];delay1(50);}P3=0xff;
}
}
/******************四条单个顺时针滴水转*********************/
void sisunz()
{ P2=0x00;
P3=0x00;
for(i=0;i<2;i++)
{
P1=table8[i];
P0=table8[i];
delay1(1000);
}
}
/******************呼吸灯*********************/
void hxd()
{
P0=0xff;P1=0xff;
for(pw=1;pw
{
P2=0x55;P3=0x55;delay2(pw);
P2=0xff;P3=0xff;delay2(cy1-pw);
}
for(pw=1;pw
{
P2=0xaa;P3=0xaa;delay2(pw);
P2=0xff;P3=0xff;delay2(cy1-pw);
}
}
/******************半层呼吸灯*********************/
void bhxd()
{
P0=0xff;P1=0xff;
for(pw=1;pw
{
P2=0x00;P3=0xff;delay2(pw);
P2=0xff;P3=0x00;delay2(cy-pw);
}
}
/******************四滴下闪*********************/
void sxs()
{
P1=0x55;
P0=0x55;
for(k=0;k<8;k++){P2=table1[k];delay1(500);}P2=0xff;
for(k=0;k<8;k++){P3=table1[k];delay1(500);}P3=0xff;
}
/******************四滴上闪*********************/
void sxss()
{
P1=0xaa;
P0=0xaa;
for(k=0;k<8;k++){P3=table[k];delay1(500);}P2=0xff;
for(k=0;k<8;k++){P2=table[k];delay1(500);}P3=0xff;
}
void main()
{
cy=2000,cy1=1200,pw=1;
while(1)
{
bhxd();//半层呼吸
for(a=0;a<5;a++){P0=0xff;P1=0xff;yiceng();}//两层上跳动
for(a=0;a<5;a++){P0=0xff;P1=0xff;yiceng1();}//两层下跳动
for(a=0;a<5;a++){P0=0xff;P1=0xff;yiceng();yiceng1();}//两层上下跳动
for(a=0;a<8;a++){dishushun();} //两条单个顺时针滴水
for(a=0;a<8;a++){dishuni();} //两条单个逆时针滴水
for(a=0;a<5;a++){dishushun();dishuni();}//两条单个顺时+逆时针滴水
for(a=0;a<5;a++){liangdix();}//两滴掉下
for(a=0;a<5;a++){liangdis();}//两滴掉上
for(a=0;a<5;a++){sxl();}
for(a=0;a<4;a++){sidisun();}
for(a=0;a<2;a++){hxd();}//呼吸灯
for(a=0;a<2;a++){shw();shw2();}//两层竖立向圆顺+逆时针合围
for(a=0;a<2;a++){shw1();shw3();}//两层竖立向圆顺+逆时针回收
for(a=0;a<4;a++){sxl1();}//两层从顶向下拉伸
for(a=0;a<5;a++){sxls();}//两层从中间向上下拉伸
for(a=0;a<4;a++){sisunz();}
danxuan();//单层从底向上旋转
danxuand();//单层从顶向下旋转
for(a=0;a<3;a++){shw();} //两层竖立向圆顺时针合围
for(a=0;a<3;a++){shw2();}//两层竖立向圆逆时针合围
for(a=0;a<2;a++){shw1();}//两层竖立向圆顺时针回收
for(a=0;a<2;a++){shw3();}//两层竖立向圆逆时针回收
for(a=0;a<4;a++){sidisun1();}
sxs();//四滴下闪
sxss();//四滴上闪
}
}
/********************* the end******************************/