HI,各位大神:
小弟写的利用Timer1产生PWM信号做呼吸灯程序
while(1)
{
if(flag)
{
flag=0;
/********************UP/DOWN**************************/
if(i==0)
{
if(j<65000)
{
j=j+250; //步长太小时呼吸时间过长
DutyCycleSet(j);
}
else
{
i=1;
DutyCycleSet(j);
}
}
else if(i==1)
{
if(j>0)
{
j=j-250;
DutyCycleSet(j);
}
else
{
i=0;
DutyCycleSet(j);
}
}
}
DelayMS(3); //必要的延时,间隔时间太短将会无反应,最小3ms
}
其中
void DutyCycleSet(uint16 cmp)
{
T1CC1L=(uint8)cmp;
T1CC1H=(uint8)(cmp>>8);
T1CNTL=0; //复位计数器
T1CTL |=1; //Free-Run模式
}
为什么这里必须要加一个延时呢,没有延时或者延时太小就灯就没反应了,难道太快了与什么东西冲突吗?
求解!!!