51微控制器定時器的簡單配置

2021-10-23 01:18:02 字數 1964 閱讀 2958

先上一張圖 問就是很有用

定時器有兩個功能 定時 和 計數

定時器和計數器是微控制器內部的同乙個模組,通過配置 sfr(特殊功能暫存器)可以實現兩種不同的功能,我們大多數情況下是使用定時器功能

1. 定時器的初步認識

在了解定時器之前我們來了解一下 時鐘週期 與 機械週期

這個定時器就是每過乙個機器週期的時間,也就是 12/11059200 秒,數字自動加 1,有乙個特別注意的地方,就是鐘錶是加到 60 後,秒就自動變成 0 了,這種情況在微控制器或計算機裡我們稱之為溢位。那定時器加到多少才會溢位呢?後面會講到定時器有多種工作模式,分別使用不同的位寬(指使用多少個二進位制位),假如是 16 位的定時器,也就是 2 個位元組,最大值就是 65535,那麼加到 65535 後,再加 1 就算溢位,如果用其他位數的話,道理是一樣的,對於 51 微控制器來說,溢位後,這個值會直接變成 0。從某乙個初始值開始,經過確定的時間後溢位,這個過程就是定時的含義。

2.定時器的暫存器

標準的 51 微控制器內部有 t0 和 t1 這兩個定時器,t 就是 timer 的縮寫對於微控制器的每乙個功能模組,都是由它的 sfr,也就是特殊功能暫存器來控制。與定時器有關的特殊功能暫存器,有以下三個

表 5-6 列出的就是定時器的 4 種工作模式,其中模式 0 是為了相容老的 8048 系列微控制器而設計的,現在的 51 幾乎不會用到這種模式,而模式 3 根據我的應用經驗,它的功能用模式 2 完全可以取代,所以基本上也是不用的,那麼**我們就重點來學習模式 1 和模式 2。**模式 1,是 thn 和 tln 組成了乙個 16 位的定時器,計數範圍是 0~65535,溢位後,只要不對 thn 和 tln 重新賦值,則從 0 開始計數。模式 2,是 8 位自動重裝載模式,只有 tln做加 1 計數,計數範圍 0~255,thn 的值並不發生變化,而是保持原值,tln 溢位後,tfn就直接置 1 了,並且 thn 原先的值直接賦給 tln,然後 tln 從新賦值的這個數字開始計數。這個功能可以用來產生串列埠的通訊波特率,我們講串列埠的時候要用到。

3.定時器的應用

第一步:設定特殊功能暫存器 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。

//實現小燈一秒亮一秒滅

#include

sbit led = p0^0;

void

main()}}}

最後獻上我的思維導圖吧

51微控制器 定時器

定時 計數器的結構和工作原理 定時 計數器的實質是加1計數器 16位 由高8位和低8位兩個暫存器組成。80c51 微控制器定時 計數器的工作是由兩個特殊功能暫存器控制的。tmod是定時 計數器的工 作方式暫存器,確定工作方式和功能,低四位用於t0,高四位用於t1。t con是控制寄 存器,控制t0和...

51微控制器 定時器

標準的51微控制器內部有t0和t1兩個定時器。定時器的計數值儲存在暫存器中。th0 tl0用於t0,th1 tl1用於t1.定時器儲存暫存器 名稱描述 sfr位址 復位值th0 t0高位元組 0x8c 0x00 tl0t0低位元組 0x8a 0x00 th1t1高位元組 0x8d 0x00 tl1t...

微控制器定時器雙擊 關於51微控制器定時器的靈活使用

前段時間,做乙個專案,有串列埠收發指令判斷,按鍵型別判斷,長短按之類,power的定時關電,事件的輪詢掃瞄更新和display的定時掃瞄。這些要求就對定時器提出了要求,但是我的51微控制器只有兩個定時器,其中乙個又有debug口的波特率產生之用。於是乎我可以用的定時器就只剩下了乙個。怎麼辦?可能大家...