zhang32568 发表于 2024-5-20 15:51:50

简单写几行代码 开天斧试试频率计原理

本帖最后由 zhang32568 于 2024-5-20 16:06 编辑

unsigned int cont,fos;


void Timer0_Init(void)                //1000微秒@35MHz
{
      AUXR |= 0x80;                        //定时器时钟1T模式
      TMOD &= 0xF0;                        //设置定时器模式
      TL0 = 0x48;                              //设置定时初始值
      TH0 = 0x77;                              //设置定时初始值
      TF0 = 0;                              //清除TF0标志
      TR0 = 1;                              //定时器0开始计时
      ET0 = 1;                              //使能定时器0中断
      EA = 1 ;
}
void Timer0_Isr(void) interrupt 1
{unsigned int d;
      d++;
      if(d>=1000)
      {
      d=0;
    INTCLKO &= 0xbf; //关闭
   fos = cont; //fos用LED显示出来
   cont = 0;
INTCLKO |= 0x40;//重新打开INT4端口P30
      }

void Int4Isr()interrupt 16//采用外部中断4P30端口测试。
      
{
cont++;
}



实际测试1KHZ显示1001,500HZ显示505   5KHZ显示4080
显示不准 估计是1毫秒基准不准确 。但是原理应该就是这样。
如果要求很稳定 该采取什么措施?

soma 发表于 2024-5-20 16:19:07

使用精准度更高的有源温补晶振
页: [1]
查看完整版本: 简单写几行代码 开天斧试试频率计原理