用单片机led去实现呼吸灯
include<reg52.h>
sbit led=P2^0; //定义一个引脚
unsigned int i,j,,k,b=0;
void Timer0Init(void) //1毫秒@11.0592MHz
{ TMOD &= 0xF0; //设置定时器模式
TMOD |= 0x01; //设置定时器模式
TL0 = 0x33; //设置定时初值
TH0 = 0xFE; //设置定时初值
TR0 = 1; //定时器0开始计时
ET0=1;
EA=1;
}
void main() //主函数
{
Timer0Init();
while(1);
}
void init0() interrupt 1 // 中断服务函数
{ i++;
j++;
TL0 = 0x33; //定时器赋初值
TH0 = 0xFE;
if(j==300) //变量j,控制呼吸灯的频率
{
j=0;
if(b==0) //变量b,使k进行反转
{
k++;
if(k==10)
b=1;
}
else
{
k--;
if(k==1)
b=0;
}
}
if(i==k) //通过变量i来设置pwm的占空比
{
led=0;
}
if(i==10) //这个10代表PWM的周期
{
i=0;
led=1;
}
}