1. 程式人生 > >STC微控制器的定時器怎麼計算

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
{
   //定時器到執行這裡
}