51单片机定时器设定好初值,为什么走的比计算的慢

部分程序

void init(void)
{
TMOD=0x01; //定时器0, 16位
TH0=0X4D; // 设定定时器 初值,50毫秒/、11.0952MHz
TL0=0X00;
EA=1; //开启 总中断
ET0=1; //开启定时器 0 中断
TR0=1; //定时器 0 启动计数
}

void time0(void) interrupt 1
{
count++; //
if(count==20) //用变量20, count 延长到100ms
{
count=0;
second++;
为什么最后外部显示的second每分钟才走了四十多秒,明显慢啊

第1个回答  2012-11-25
你的TH0和TL0的初始值有点不对吧?比较精确的应该是TH0=(65536-45872)/256;TH0=(65536-45872)%256;最好用12M的晶振,那样定时就很准确了。还有,这也许和你的其他程序,比如主函数的内容有关
第2个回答  2012-11-25
void timer0() interrupt 1
{
TH0 = 0x4d;
TL0 = 0x00;
count++
...
}本回答被提问者采纳