#include<reg52.h>//delay呼吸灯
void delay(int z)//延时
{
while(z--);
}
void main()
{
int x=400,y=0,key;
while(1)
{
P1=0x00;
delay(y);//亮持续时间
P1=0xff;
delay(x-y);//灭持续时间
if(y==0)//key=1,y++,从灭到最亮
key=1;
if(y==400) //key=2,y--,从最亮到灭
key=2;
if(key==1)
y++;
else
y--;
}
}
#include<reg52.h>//定时器呼吸灯
uint pwm=0,cycle=800;
void t0()
{
TMOD=0x01;
TR0=1;
ET0=1;
EA=1;
}
void t0fw()interrupt 1
{
uint i;
static int a=1;
TL0=250;
TH0=250;//最大255
for(i=0;i<cycle-pwm;i++)
P1=0x00;
for(i=0;i<pwm;i++)
P1=0xff;
if(pwm==0)
a=1;
if(pwm==cycle)
a=-1;
pwm+=a;
}
void main()
{
t0();
while(1);
}