51微控制器定時器初值計算問題

2021-10-03 11:39:07 字數 1825 閱讀 4422

最近在看51微控制器的定時器與中斷,作為51微控制器比較重點的內容,很多人也花費了很長時間在這上面,有些問題網上的資料方法各不相同,也看得雲裡霧裡,比如定時器的初值計算問題,在此我想以此篇作為學習筆記,希望可以對大家有所幫助。

定時器內部一暫存器,每隔乙個機器週期就會自動加1,直到加到65535就會溢位。比如假設51微控制器的晶振頻率為11.05926mhz,那麼時鐘週期為1/11059260,51微控制器的機器週期為12個時鐘週期,(週期單位為s)計算一下這個機器週期長度為12*(1/11059260),即每隔12*(1/11059260)(s)加1,我們可以發現從0開始加到65535所需的時間一共是12*(1/11059260)*65535 = 0.07110964s = 71.10964ms.

如果我們定義10ms,那麼需要計算從哪乙個初值加到65535所需時間正好為10ms,我們設初值為x,(65535-x)*機器週期 = 0.01s.可以計算出x = 56319,假設定時器工作在模式1,此時th0 和 tl0 組成乙個 16 位的定時器,th0是定時器 1 高八字節,tl0是定時器 1 低八字節,如何計算高八字節與低八字節呢?

我們給出乙個數42,怎麼計算十位數和各位數呢?其實在c語言中,十位數 = 42/10,個位數為42%10.同理,我們可以類似得出高八字節、低八字節的計算方法,2的8次方為256,那麼高八字節th0 = 56319/256,低八字節tl0 = 56319%256。然後設定好定時器控制暫存器便可以寫出c51程式。

**如下所示:

#includesbit led = p2^0;

unsigned char cnt = 0;

void main()

} }}

此程式為時隔1sled閃爍程式

大家是否注意到stc官方手冊上定時器的使用方法呢,下圖為stc89c52rc官方手冊定時器部分截圖:

這是stc官網文件上給出的計算定時器初值的方法。

第一行是定義晶振頻率,後面的l表示長整型資料,重點來看第二行,

我們已經知道:51微控制器中,機器週期等於12個時鐘週期(所有微控制器不一定都是12),機器週期 = 12*(1/fosc);機器週期還等於計數次數,因為經過乙個機器週期加1;

機器週期 = 計數次數= 12*(1/fosc);

1s中有多少機器週期 = 1s中有多少計數次數= fosc /12;

1ms中有多少機器週期 = 1ms中有多少計數次數= fosc /12/1000;

那麼如果我們定義1ms,此時定時器初值 = 65535 - fosc /12/1000;

根據th0、tl0分別為高八位與低八位,

th0 = (65535 - fosc /12/1000)/256;

tl0 = (65535 - fosc /12/1000)%256;

或者令t1ms = 65535 - fosc /12/1000;

tl0 = t1ms;

th0 = t1ms>>8;

**如下圖(下圖定義的為10ms):

#includesbit led = p2^0;

#define fosc 11059200l

#define t1ms (65535-fosc/12/100)

unsigned char cnt = 0;

void main()

} }}

此程式為時隔1sled閃爍程式

此篇只作為學習筆記,如有錯誤,敬請批評指正!

51微控制器定時器初值計算

菜鳥關於51類微控制器的定時器初值計算問題的計算 首先先來介紹微控制器的幾個週期 1 時鐘週期,也稱為振盪週期 定義為時鐘脈衝的倒數,在微控制器中也就等於晶振的倒數。51微控制器中把乙個時鐘週期定義為乙個節拍 用p表示 2個節拍定義為狀態週期 用s表示 時鐘週期是微控制器中最小的時間單位。eg 12...

51微控制器定時器初值的計算

什麼是時鐘週期?什麼是機器週期?什麼是指令週期?時鐘週期1.晶振12m 12mhz除12為1mhz,也就是說一秒 1000000次機器週期。10ms 10000次 機器週期。65536 10000 55536 d8f0 th0 0xd8,tl0 0xf0 2.晶振11.0592m 11.0592mh...

單 片 機 定 時 器 初 值 例項計 算

一 10ms定時器初值的計算 1.晶振12m 12mhz除12為1mhz,也就是說一秒 1000000次機器週期。10ms 10000次 機器週期。65536 10000 55536 d8f0 th0 0xd8,tl0 0xf0 2.晶振11.0592m 11.0592mhz除12為921600hz...