#include <reg52.h>
#include "T0_
time.h"
#include "MacroAndConst.h"
#define MaxLedPWM 99
#define MinLedPWM 0
uchar num,LedCount,LedPWM;
bit ledflag;
sbit led=P3^7;
void T0_timeinit(void) //定时200微妙中断一次
{
TMOD&=0xf0;
TMOD |= 0x01;
TH0=0xff;
TL0=0x47;
TR0=1;
ET0=1;
}
void T0_time() interrupt 1
{
TH0=0xff;
TL0=0x47;
if(++LedCount>=100) //20ms*100=2s,2s内灯由暗变亮
{
LedCount=0;
if((num<=MaxLedPWM)&&(0==ledflag)) //ledflag为标志,控制灯变亮
{
num++;
if(num>MaxLedPWM)
{
num=MaxLedPWM;
ledflag=1;
}
}
if((num>=MinLedPWM)&&(1==ledflag)) //ledflag标志控制等变暗
{
num--;
if(num<MinLedPWM)
{
num=MinLedPWM;
ledflag=0;
}
}
LedPWM=num;
} //当跳出循环的时候,根据占空比发生相应的变化
if(LedPWM>0)
{
led=0;
LedPWM--;
}
else
led=1;
}
谢了。。。只有你一个答了问题十分感谢
一周热门 更多>