STC微控制器的定時器怎麼計算
阿新 • • 發佈:2019-02-10
公式: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
{
//定時器到執行這裡
}