5 4 定時器的應用

2021-09-30 18:59:14 字數 1061 閱讀 4118

了解了定時器相關的暫存器,那麼我們下面就來做乙個定時器的程式,鞏固一下我們學到的內容。我們這節課的程式先使用定時器 0,在使用定時器的時候,需要以下幾個步驟:

第一步:設定特殊功能暫存器 tmod,配置好工作模式。

第二步:設定計數暫存器 th0 和 tl0 的初值。

第三步:設定 tcon,通過 tr0 置 1 來讓定時器開始計數。

第四步:判斷 tcon 暫存器的 tf0 位,監測定時器溢位情況。

寫程式之前,我們要先來學會計算如何用定時器定時時間。我們的晶振是 11.0592m,時鐘週期就是 1/11059200,機器週期是 12/11059200,假如要定時 20ms,就是 0.02 秒,要經過x 個機器週期得到 0.02 秒,我們來算一下 x*12/11059200=0.02,得到 x= 18432。16 位定時器的溢位值是 65536(因 65535 再加 1 才是溢位),於是我們就可以這樣操作,先給 th0 和 tl0乙個初始值,讓它們經過 18432 個機器週期後剛好達到 65536,也就是溢位,溢位後可以通過檢測 tf0 的值得知,就剛好是 0.02 秒。那麼初值 y = 65536 - 18432 = 47104,轉成 16 進製就是 0xb800,也就是 th0 = 0xb8,tl0 = 0x00。

這樣 0.02 秒的定時我們就做出來了,細心的同學會發現,如果初值直接給乙個 0x0000,一直到 65536 溢位,定時器定時值最大也就是 71ms 左右,那麼我們想定時更長時間怎麼辦呢?用你小學學過的邏輯,倍數關係就可以解決此問題。

好了,我們下面就用程式來實現這個功能。

#include sbit led = p0^0;

sbit addr0 = p1^0;

sbit addr1 = p1^1;

sbit addr2 = p1^2;

sbit addr3 = p1^3;

sbit enled = p1^4;

void main()

} }}

程式中都寫了注釋,結合前幾章學的內容,自己分析一下,不難理解。本程式實現的結果是開發板上最右邊的小燈點亮一秒,熄滅一秒,也就是以 0.5hz 的頻率進行閃爍。

定時器應用

本文屬於定時器的應用部分,分別用於實現與時間相關的四個應用,包括時鐘 倒計時 秒錶和鬧鐘。與時間相關需要用到時間和日期物件date,可自行查閱。開啟定時器 setinterval 函式,時間 間隔型 function show setinterval show,1000 每隔1000毫秒執行一次sh...

定時器的應用

timertask類 new timer schedule new timertask 3000 過多少時間再執行run方法 單位是毫秒 5000,3000 先過5秒執行一次,之後3秒迴圈執行一次 有時候可能會碰到一些需求,要你先2秒執行一次,再之後4秒執行一次,再之後2秒執行一次,再之後4秒執行一...

8051定時器應用

8051系列微控制器中的定時器如何用來測量外部脈衝的週期。有看到過相關資料談及使用定時器來測量外部脈衝的週期,但不夠詳細,這次在試驗的過程中遇到乙個類似的問題,在教科書上只是簡單提及,究竟怎麼樣使用,沒有詳細說明,使用方法也不難,要使用定時器來測量外部脈衝的週期,首先對定時器初始化,方式選擇依據你的...