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这两个全局变量就可以了 |