定時計數 總述

2022-03-31 08:44:28 字數 2324 閱讀 6913

上一節,稀里糊塗地照著demo測試了定時計數的效果,但對內部和引數的控制還是不解,準備從基礎原理學習定時計數器的工作原理和方式。

8051微控制器的結構是由一內部匯流排連線各功能模組,通過特殊功能暫存器(sfr)集中控制,不同型號引腳定義和sfr定義不同,因此乙個功能模組,可以從相關引腳功能和相關sfr功能學習了解該模組。

以8051為例,其定時計數模組的特點有

2個16位定時計數器,最大計數範圍:0h-ffffh;

相關的sfr:tmod、tcon、th0、tl0、th1、tl1;

相關引腳:t0、t1、int0、int1;

4種工作方式;

其中,t0、t1做為計數脈衝輸入,定時方式時不用,作i/o用,對應p3.4和p3.5;

int0、int1:與定時器執行控制有關,也可以無關,可程式設計設定;

gate選通門:gate=0時,只要trx=1,計數器就開始工作;gate=1時,只有intx腳和trx同時為1時,計數器才開始工作,主要用於測量intx腳上高電平脈衝的寬度。

c/t(計數/定時方式選擇位):c/t=1時,計數方式,即計數器的計數脈衝來自t0或t1引腳的外部事件,c/t=0時:定時方式,計數脈衝來自內部振盪頻率12分頻(1/12)。

m1、m0模式選擇:分別對應四種模式

m1mo=00,方式0:13位定時計數器;

m1m0=01,方式1:16位定時計數器;

m1m0=10,方式2:自動重裝入的8位定時計數器;

m1m0=11,方式3:t0成為兩個獨立的8位計數器;

模式 計數模 最大計數值 最大定時時間

模式0 2^13 8192 8.192ms

模式1 2^16 65536 65.536ms

模式2,3 2^8 256 0.256ms

根據上面的引數,可以得到乙個公式

定時時間=(最大計數值 - 計數初始值) * 脈衝週期

tf1,tf0定時器t1,t0的溢位標誌:計數器溢位時硬體自動置位,即tfx=1,進入中斷後再由硬體自動清除;

tr1,tr0計數器t1,t0的控制位:由軟體置位(計數器開始工作)或清零(計數器停止工作);

ie1,ie0外部中斷int1,int0的請求標誌:當微控制器檢測到intx引腳上有低電平或下降沿時,iex=1,申請中斷;

it1,it0外部中斷觸發型別控制:itx=1時,外部中斷訊號的下降沿觸發iex標誌,itx=0時,外部中斷訊號的低電平觸發iex標誌;

回到定時計數功能上,要搞清以下問題

1.何時控制啟動、停止計數;

2.如何控制定時還是計數;

3.如何控制定時/計數的長短;

4.如何用查詢或者中斷管理溢位事件;

定時/計數器執行控制方式

1.設定gate=0,則非gate=1,因此y=tr0,這樣:

tr0=1,啟動定時器t0執行

tr0=0,停止定時器t0執行

我們把這種控制定時器執行的方法叫軟觸發,最常用。

2.設定gate=1,則非gate=0,因此y=tr0*(非)int0電平,進上步令tr0=1,則y=非int0電平,這樣:

非int0為高電平,啟動定時器t0執行

非int0為低電平,停止定時器t0執行

我們把這種控制定時器執行的方法叫硬觸發,較少用,可以用來測量正脈衝的寬度。

定時器/計數器的初始化方式

1.根據要求給模式暫存器tmod送乙個模式控制字設定定時器的工作方式;(要考慮定時/計數範圍/重灌方式)

2.根據需要給c/t送初值以確定需要的定時時間或計數次數;(預設為0)

3.根據需要給中斷允許暫存器ie送中斷控制字,以開放相應的中斷和設定中斷優先順序;(可選)

4.給tcon送命令字以啟動或禁止c/t的執行

微控制器控制c/t的方式

1.採用查詢方式:程式一直檢測tf0(或tf1),若tf0=1(或tf1=1),說明定時時間到或計數滿,從而開始相應處理,如

while(tf0==0); //或while(!tf0)

tf0=0;            //清除標誌位

......                //開始處理溢位事件

2.採用中斷方式:程式初始化時,設定定時器溢位中斷允許後,內部硬體自動檢測到tf0=1(或tf1=1)時,自動響應中斷,進入中斷服務程式。

下面通過幾個例子,來驗證一下上面的知識點。

定時計數器

1 工作方式0 當tmod中的m1,m2設定成0,0時,定時器 計數器就工作在方式0,工作方式0是一種13位定時器 計數器方式。可用來測量外訊號的脈衝寬度所持續的時間。2 工作方式1 工作方式1為16位定時器 計數其結構和操作與工作方式0基本相同,唯一的區別是工作方式1的計數器由tl0的8位和th0...

Linux驅動入門 定時計數

第四章 定時計數 4.1 定時器基本概念 系統定時器頻率 節拍率 是通過靜態預處理器定義的,也就是hz。連續兩次時鐘的間隔時間叫做節拍,它等於1 hz秒。全域性變數jiffies用來記錄自系統啟動以來產生的節拍的總數,jiffies在 一秒內增加的值就是hz,系統執行的時間以秒為單位計算,就等於ji...

實驗6 8254定時 計數器實驗

實驗內容 基礎部分 1 編寫程式,是8254的計數器1分別工作在方式0 1 2 3下,在示波器上觀察各工作方式下out1的輸出波形。拓展部分 2 使用單脈衝開關手動生成8254的輸入時鐘,觀察方式0的輸出波形。3 編寫程式,在示波器上顯示週期為1s的方波。4 利用8254方式2或方式3精確定時,控制...