1,你要設定要好各個中斷的優先等級,100uS的定時器中斷時間是很短的,你要根據你自己的實際要求來設定好優先等級,默認的等級都是一樣的,但查詢是有先后順序的,當定時器進入中斷之后,串口中斷就被阻斷了
2,更改PWM占空比在主函數更改,定時器只作一個加載的,調節會慢一點,但不會有太大影響的,給個代碼參考一下
void timer1_pwm()interrupt 3 //利用t1定時器產生PWM波形
{
TF1 = 0; //清除TF1標志
if(HI)
{
TH1=pwm_l_H; //低電平時間
TL1=pwm_l_L; //
HI=0;
PWM=0;
}
else
{
TH1=pwm_h_H; //高電平時間
TL1=pwm_h_L; //
HI=1;
PWM=1;
}
TR1 = 1; //定時器1開始計時
}
在主函數調節pwm_l_H和pwm_l_L這兩個全局變量就可以了 |