求助定时器的问题
时间:10-02
整理:3721RD
点击:
请前辈帮忙看看这一段。就是最简单的一个秒表。
我是STC12C5A60S2,晶振22.1184MHz,但是我算下来感觉依然是12T一个周期啊,是不是我对这个1T和12T的理解有误?另外。我按12T算出来的10ms初值B800,但是运行起来还是比1秒要慢10%左右。请问是什么原因。
void main()
{
TMOD=0x01; //TO为16位定时器模式
TH0=0XB8;
TL0=0X00;
EA=1;
ET0=1; //开TO中断
TR0=1;
while(1)
{
if(n==100)
{
EA=0;
n=0;
m++;
tmp[3] = m%10 + 0x30;
tmp[2] = m%100/10 + 0x30;
tmp[1] = m%1000/100 + 0x30;
tmp[0] = m/1000 + 0x30;
Display_ASCII8X16_Color(88,92,tmp,YELLOW,BLACK);
EA=1;
}
}
}
void InterruptTimer0() interrupt 1
{
TH0 = 0XB8;
TL0 = 0X00;
n++;
}
我是STC12C5A60S2,晶振22.1184MHz,但是我算下来感觉依然是12T一个周期啊,是不是我对这个1T和12T的理解有误?另外。我按12T算出来的10ms初值B800,但是运行起来还是比1秒要慢10%左右。请问是什么原因。
void main()
{
TMOD=0x01; //TO为16位定时器模式
TH0=0XB8;
TL0=0X00;
EA=1;
ET0=1; //开TO中断
TR0=1;
while(1)
{
if(n==100)
{
EA=0;
n=0;
m++;
tmp[3] = m%10 + 0x30;
tmp[2] = m%100/10 + 0x30;
tmp[1] = m%1000/100 + 0x30;
tmp[0] = m/1000 + 0x30;
Display_ASCII8X16_Color(88,92,tmp,YELLOW,BLACK);
EA=1;
}
}
}
void InterruptTimer0() interrupt 1
{
TH0 = 0XB8;
TL0 = 0X00;
n++;
}