|
void main()
{
char n=0;
IE=0x82; //启用T0中断
TMOD=0x01; //定时器T0工作模式1
LED_OUT=0; //先设置LED输出为关
while(1) //无限循环检测
{
if(!PWM_IN) //如果脉冲是低电平
{
while(!PWM_IN); //等待脉冲到高电平
TH0=TH_M1; //初始定时器高8位
TL0=TL_M1; //初始定时器低8位
TR0=1; //启动定时器
while(!TF0); //等待1.5ms后定时器中断
TF0=0; //中断标志清零
n++;
if(n>=50)//50个脉冲约1秒的周期
n=0;
if((PWM_IN==1)&&(n<25)) //1.5ms后检测PWM脉冲是不是高电平,
LED_OUT=1; //如果是高电平,且n是前半周期,输出打开
else
LED_OUT=0; //否则是低电平,输出关闭
}
}
} |
|