STC单片机的定时器怎么计算

公式:N=65536-(Fosc/FD/(Freq));

 

      N      : 定时器16位计数器   

      Fosc: 晶振频率,系统频率

      FD    : 分频(Frequency division),通过分频可增大计数器的定时范围

      Freq : 频率(Freq=1000000(微秒)/TIME(微秒),TIME:所定时间)

 

 

例:22.1184HZ晶振,T0作为定时器,定时每5ms进一次定时器,那么换算一下频率就是200HZ。

代码:

#define FOSC 22118400L          //系统频率
#define T0_TIM (65536-(Fosc/1/200))
void tm0_init()                     //定时器0初始化函数
{
    AUXR |= 0x80;                   //定时器0为1T模式
//  AUXR &= 0x7f;                   //定时器0为12T模式

    TMOD = 0x00;                    //设置定时器为模式0(16位自动重装载)
    TL0 = T0_TIM%256;//初始化计时值
    TH0 = T0_TIM/256;
    TR0 = 1;                        //定时器0开始计时
    ET0 = 1;                        //使能定时器0中断
    EA = 1;
}

 

void tm0_isr() interrupt 1 using 1
{
   //定时器到执行这里
}

 

 

 

 

你可能感兴趣的:(单片机)