應廣單片機有兩種硬體pwm,一種是8bit,另外一種是11bit,8bit的配置稍微簡單一些.現在以pms133/psm134為例子,貼一個11bit pwm配置的例子.修改一下可以應用于應廣其他系列的單片機中.要注意的是pms152的11bit pwm無法仿真,配置也稍微有點不同.在使用的時候要注意一下.再強調一遍,pms152的 11bit pwm 無法用仿真器仿真.隻能通過燒片測試.
計算公式如下:

配置
/*11bit pwm輸出OK*/
void PwmG0Init(void)
{
word usTmr;
usTmr=800;
/*上限低3位*/
pwmg0cubl=(usTmr<<5);
/*上限高8位*/
pwmg0cubh=(usTmr>>3);
usTmr=300;
/*占空比低3位*/
pwmg0dtl=usTmr<<5;
/*占空比高8位*/
pwmg0dth=usTmr>>3;
/*b7@0=計數值為0産生中斷
b6:5@01=預分頻為4
4:0@1-32分頻*/
pwmg0s=0b1_10_10011;
/*b7@1=啟用pwm
b6@預設,生成器輸出狀态
b5@0=輸出極性不反轉
b4@1=g2計數值清零
b3:b1@001=PB5;011=PA0;100=PB4
b0@1=(IHRC*2)*/
pwmg0c=0b1_0_0_1_100_0;
}
/*設定占空比*/
void SetRightPwmDt(void)
{
/*重新開啟,可能出現關閉pwm的狀況,是以設定占空比的的時候重新打開*/
pwmg0c=0b1_0_0_1_100_0;
/*占空比低3位*/
pwmg0dtl=usPwmCnt<<5;
/*占空比高8位*/
pwmg0dth=usPwmCnt>>3;
}
注意:8bit的pwm在使用的時候,即使設定占空比為0,仍有零星的波形輸出.為了安全起見,11bit的pwm還是采用關閉pwm輸出的政策去設定占空比為0
/*關閉*/
void ClosePwm(void)
{
pwmg0c=0b1_0_0_1_000_0;