呼吸灯
代码
#include"reg52.h"
typedef unsigned int u16;
typedef unsigned char u8;
sbit pwm=P2^1;
bit dir;
u16 count,timer,value; //全局变量
void tim0_init() //定时器初始化函数
{
TMOD=0x01; //定时器0 方式一
TH0=0XFF;
TL0=0XFF;
EA=1; //中断总允许位
ET0=1; //定时器中断允许位
TR0=1; //开启定时器
}
void main()
{
tim0_init();
while(1)
{
if(count>50) //调节呼吸灯速率
{
count=0;
if(dir==0) //方向
value--;
if(dir==1)
value++;
}
if(timer>1000) //周期
timer=0;
if(value==1000)
dir=0;
if(value==0)
dir=1;
if(timer<value)
pwm=1;
else
pwm=0;
}
}
void tim0() interrupt 1 //中断服务函数
{
TH0=0XFF;
TL0=0XFF;
count++;
timer++;
}