# include & ltreg 51 . h & gt;
typedef無符號字符uchar
#定義Ton 40
#定義LED P0
sbit leds=p1^4;
sbit led 0 = p0^0;
sbit led 1 = p0^1;
sbit led 2 = p0^2;
sbit led 3 = p0^3;
sbit led 4 = p0^4;
sbit led 5 = p0^5;
sbit led 6 = p0^6;
sbit led 7 = p0^7;
無符號字符mai Kuan = 0;
靜態無符號字符ledon[8] = {0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0x Fe };
uchar occupate _ led;//占空比越大,燈越亮。
比特光;
uchar m;
void Inittime()
{
TMOD = 0x 02;//定時器0,工作模式2,自動重裝
TH0 = 256噸;
TL0 = 256噸;
ET0 = 1;
EA = 1;
TR0 = 1;
}
//定時器0中斷
void time0()使用0中斷1
{
邁寬++;
}
void main()
{
無符號字符i = 0,j = 0;//初始化I,j
發光二極管= 0;
init time();
while (1)
{
//第1,3,5,7燈半亮,其余全亮。
for(I = 254;我& gt0;我-)
{
而(麥寬!=20)
{
LED = 0x00
}
而(麥寬!=200)
{
LED = 0x55
}
麥寬= 0;
}
//最難的部分:八盞燈從第壹盞開始逐漸亮起,直到最後壹盞。然後從最後壹張開始淡入淡出,直到第壹張。如此循環往復。
for(j = 0;j & lt=7;j++)
{
I = 0;
而(我!=255) //從暗到亮
{
If( Maikuan == 0) //亮起。
{
LED = ledon[j];
}
If(Maikuan == i) //熄滅
{
LED = 0xff
}
if(邁寬== 255)
{
i++;
}
}
}
for(j = 7;j & gt=0;j -)
{
I = 0;
而(我!=255) //從亮到暗
{
If(Maikuan == 0) //熄滅
{
LED = 0xff
}
If( Maikuan == i) //亮起。
{
LED = ledon[j];
}
if(邁寬== 255)
{
i++;
}
}
}
//所有的燈光逐漸由暗轉全亮,再由全亮轉暗。
for(m = 254;m & gt0;m -)
{
而(麥寬!= occupate _ led)
{
LED = 0x00
}
而(麥寬!=127)
{
LED = 0xff
}
麥寬= 0;
如果(輕)
{
occupate _ led++;
}
其他
{
occupate _ led-;
}
if(occupate _ led = = 128)
{
occupate _ led = 127;
光=!光;
}
if(occupate _ led & gt;128)
{
occupate _ led = 0;
光=!光;
}
}
}
}