#include<reg52.h> //五種花樣流水燈
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
uint a,b=7,e,f=4,h;
uchar c,d;
uchar code deng[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//流水燈位置
void delay(uint x)
{
uint i,j;
for(i=x;i>0;i--)
for(j=110;j>0;j--);
} //延時
void y1() //第壹流水燈程序 指針
{
while(h<=16&&h>=0)
{
P1=*(deng+a);
delay(200);
a++;
if(a==8)
a=0;h++;
}
}
void y2() //第二流水燈程序 數組
{
while(h<=30&&h>16)
{
P1=deng[b];
delay(100);
b--;
if(b==0)
b=7;h++;
}
}
void y3() //第三流水燈程序 左右移
{
c=0xe7;
while(h<=43&&h>30)
{
P1=c;
delay(500);
c=c>>1;
c=c<<2;h++;
}
}
void y4() //第四流水燈程序 庫函數
{
d=0xaa;
while(h<=51&&h>43)
{
P1=d;
delay(100);
d=_crol_(d,1);h++;
}
}
void y5() //第五流水燈 定時器
{
TMOD=0x01;
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
EA=1;
ET0=1;
TR0=1;
while(h>51)
{
P1=deng[f];h++;
}
}
void y() interrupt 1
{
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
e++;
if(e==6)
e=0;
f++;
if(f==8)
f=0;
}
void main()
{
while(1)
{
y1();
y2();
y3();
y4();
y5();
}
}