频率计为什么不能正常工作


按书上抄的一个频率计实验.

T0每2.5ms中断一次(TH0=0xfe),4次即10ms.
T1作为计数器,用来保存10ms内机器周期的个数.并显示出来.

理论分析,10ms内计到的周期数应是10ms/12/11.0592MHz=9216次,所以频率应该是921.6KHz.但程序显示的是115.1KHz.

为什么?  程序如下 proteus仿真图见附件
顺便问一下,在proteus中4060如何使用?      谢谢大侠们的回答

#include <reg51.h>
unsigned char dispbuf[4];
unsigned int period;
unsigned int timecount=0;
unsigned int count_1s;
unsigned char code table[]={0x42,0xee,0x58,0x68,0xe4,0x61,0x41,0xea,0x40,0x60};

HEX_TO_BCD(unsigned int n)
{
        dispbuf[3]=n/1000;
        dispbuf[2]=(n/100)%10;
        dispbuf[1]=(n/10)%10;
        dispbuf[0]=n%10;
}

void scandisp(void)
{
         unsigned char posi=0x01;
         unsigned char i,j,temp;
         for(i=0;i<4;i++)
         {
                  temp=dispbuf;
                  temp=table[temp];
                  if(i==1) { for(j=0;j<200;j++) {P2=posi;P0=temp & 0xbf;}}
                  else { for(j=0;j<200;j++) {P2=posi;P0=temp;}}
                  posi<<=1;
         }
}

void INIT_TMR1INT(void)
{
         TMOD=0x11;
         ET1=1;
         ET0=1;
         EA=1;
         TR0=1;
         TR1=1;
}

void timer0(void) interrupt 1
{
         TH0=0xf7;
         if(++count_1s>4)
         {
                  count_1s=0;
                  timecount=TH1*256+TL1;
                  TL1=0x00;
                  TH1=0x00;
                  period=timecount/10;
                  if((timecount%10)>4) period++;
                  timecount=0;
                  HEX_TO_BCD(period);
         }
}

void main(void)
{
         INIT_TMR1INT();
         while(1)
         {
                  scandisp();
         }
}

proteus.rar
(2008-08-30 01:21:08, Size: 15.1 KB, Downloads: 0)