定时器产生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%占空比。如果需要其他占空比,可以对定时器中的条件判断语句进行修改。
|