这只适合要求不高的场合
设T0每1MS中断一次
简单示意代码
sbit PWM1 = P00;
sbit PWM2 = P01;
unsigned char pwm1 = 256*0.5; // PWM1高电平周期,可变即PWM,总周期256MS,此处不可变
unsigned char pwm2 = 256*0.8;
unsigned char pwm1_counter = 0;
unsigned char pwm2_counter = 0;
void ISR_T0(void) interrupt 1
{
// 重装初值代码省略
if(pwm1_counter == 0){
PWM1 = 1;
}else if(pwm1_counter == pwm1){
PWM1 = 0;
}
if(pwm2_counter == 0){
PWM2 = 1;
}else if(pwm2_counter == pwm2){
PWM2 = 0;
}
pwm1_counter++;
pwm2_counter++;
}
|