定时器产生PWM理论总结通过网上查阅资料了解到定时器产生PWM的方法,在这里记录下来,和大家一起学习。
** 方法一 😗
通过2个定时器实现pwm:
- timer0可以用来控制工作频率(周期),timer1用来调节占空比,注意timer0计时周期要比timer1时间长,具体为什莫看下去应该就明白了。格式如下:
void timer0()interrupt 1
{
P0^0=1;
TR1=1;//启动定时器1
}
void timer1()interrupt 3
{
P0^0=0;
TR1=0;
}
这里我设置timer0计时周期为2ms,timer1计时周期为1ms,便可以实现50%占空比的pwm实现。
** 方法二:**
通过1个定时器实现pwm:
- 这里用timer0为例:
假设设备的工作频率为1000Hz(周期T=1ms),令T0计时周期为0.01ms
void timer0()interrupt 1
{
unsigned char count=0;
if(count<=49)
{
P0^0=1;
count++;
}
if(50<=count<100)
{
P0^0=0;
count++;
}
if(count==100)
{
count=0;
}
}
图这里就不画了,跟上面的差不多都是50%占空比。如果需要其他占空比,可以对定时器中的条件判断语句进行修改。