利用定时器0实现脉冲产生,通过改变占空比来调节亮度的变化。代码大体思路没问题,可能局部小瑕疵。
#include “reg52.h”
typedef unsigned int u16;
typedef unsigned char u8;
#define LED P2
void delay(u16 i)
{
while(i–);
}
void Timer0Init()
{
TMOD|=0X01;
TH0=0XFC;
TL0=0X18;
ET0=1;
EA=1;
TR0=1;
}
void main()
{
Timer0Init();
while(1);
}
void Timer0() interrupt 1
{
static u16 out, light;
static u16 i;
TH0=0XFC;
TL0=0X18;
i++;
if(i==1000) //1s
{
i=0;
for(light=0;light<=500;light++)
{
out=500-light;
LED=0xff;
delay(out);
LED=0x00;
delay(light);
}
for(out=0;out<=500;out)
{
bright_time=500-out;
LED=0x00;
delay(light);
LED=0xff;
delay(out);
}
}
}