试了一个简单的方波控制程序,用定时器0设定波长,定时器1设定占空比,程序部分如下: void Tim1_int(void) interrupt 3 using 1 { PWM = 1; //PWM输出高电平
TH0 -= PWMRegH; //设定占空比 TL0 -= PWMRegL; TR0 = 1;
TH1 -= 800/256; TL1 -= 800%256;
} void Tim0_int(void) interrupt 1 using 1 //定时器0响应函数 { PWM = 0; //输出低电平 TR0 = 0; //定时器停止计数 }
根据程序,如果用12M的晶振可以产生1us的精确定时的话,那整个波长应该是800us,可是我用示波器看只有600多us,是我理解的不对,还是单片机的定时不准? |