1. 程式人生 > >5.1.定時器及其暫存器

5.1.定時器及其暫存器

1.定時器介紹

1.1什麼是定時器

(1)定時器是SoC的一個內部外設。SoC可以理解為CPU,什麼是內部外設,很久以前,CPU只有CPU,定時器是接在外面的裝置叫做外設,後來因為技術發展,把定時器製作到CPU內,就叫做內部外設。
(2)定時器就是CPU的鬧鐘,負責給CPU提供時間參考。
(3)定時器是計數器的原理實現的,每過一個脈衝訊號就計數一次,就像我們的鐘表,每過一定時間就加一秒。

1.2.定時器如何工作

第一步:先設定定時器的時鐘源
第二步:初始化時鐘相關的暫存器
第三步:設定定時時間
第四步:設定中斷處理程式
第五步:開啟定時器
最後,當定時器計數到設定的時間後產生中斷,然後執行中斷isr

2.暫存器介紹

2.1.什麼是暫存器

(1)暫存器register,是軟體控制硬體的關鍵,為什麼程式碼可以控制一個LED亮滅?就是靠的暫存器。暫存器一般是按位使用,按位定義的。
(2)暫存器的內容是可以變化的,硬體根據暫存器值的不同而產生不同的反應,
(3)暫存器使用地址訪問,程式設計上像記憶體一樣。(我感覺這句話的意思就是C語言中指標出現的必然性了。CPU通過計算出地址直接定址,CPU也可以通過暫存器中的地址去訪問該地址,稱作間接定址)

2.2.暫存器的工作原理

(1)暫存器和硬體時相互影響的。軟體可以讀寫暫存器中的值,暫存器也可以更新硬體反應的值。比如,程式設計控制暫存器1,led滅,暫存器0,led亮,按鍵被按下,暫存器變成1,按鍵彈起,暫存器變成0。每一個外設都有一個暫存器。
2.3.微控制器學習的關鍵就是各種暫存器
(1)微控制器的學習主要包括2個:CPU和各種內部外設,每一種外設都有一個暫存器,通過其對應的暫存器來控制相應的外設。
(2)各種內部外設的程式設計介面就是暫存器,暫存器時位移能夠操控外設的介面。
(3)熟悉一款微控制器其實就是熟悉他的暫存器
(4)暫存器會隨著微控制器的複雜化而變複雜
(5)學會使用C語言操作暫存器

3.定時器/計數器的暫存器介紹

3.1.51微控制器CPU是8位的,但是暫存器是16位的,CPU一次無法訪問16位,所以暫存器分為高8位和低8位。分兩次讀寫,比如0x1234,高8位存放12,低8位存放34。

定時器/計數器 有兩個關鍵的暫存器TCON、TMOD
1.TCON暫存器。timer control 控制暫存器
2.TDOD暫存器。timer mode 模式暫存器

1.暫存器的總描述

(1)TCON是定時器的控制暫存器,TMOD是定時器的模式暫存器。每一個暫存器都有8位,每一位的功能不同。.
(2)TL0、TL1、TH0、TH1是存放定時時間的地方。

1.1.TCON 暫存器

(1)TF1 定時器1的溢位標誌位,一旦定時器1發生溢位,CPU執行定時器1的中斷,中斷完成後,對該標誌為清零。

(2)TR1 定時器1的執行控制位,當我們設定好定時時間後,TR置一執行定時器1.(TR和GATE也有關聯)

(3)IE1,IE是一個標誌位,用來展示硬體的狀態,IE1對應外部中斷1(INT1),平時沒有中斷時,IE1 = 0,產生中斷時,IE1= 1,處理完中斷以後,硬體清零IE1.

(4)IT1是設定外部中斷的觸發方式,1:邊沿觸發。(1)上升沿(2)下降沿。2:電平觸發。(1)低電平觸發(2)高電平觸發。

1.2.TMOD 暫存器
(1)C/T設定工作在定時器模式還是計數器模式

(2)M1、M2:2個位表示T0/T1處於哪種工作模式下,一般有4中,13位,16位,8位自動過載,雙8位。這個網工作模式指的是存放定時器時間的16位有多少位來存放時間。

(3)GATE:GATE是TMOD暫存器中的,也有2個分別對應T0、T1。GATE位中文名字叫門控位,工作方式是:定時器工作模式時,GATE = 0時,此時定時器開關就只受TR位影響,也就是TR=1,就開始定時,TR=0,結束定時。計數器工作模式時,設定GATE=1時,是否計數不僅取決於TR,還得看INT1引腳,(P3.3),當TR=1,並且INT1為高電平時才會計數。

總結:每一個外設都有一個暫存器,通過操作其暫存器來操作其外設,暫存器一般是按位使用,每一位都是不同的功能。這裡簡單的介紹了定時器/計數器的暫存器。下篇文章寫一些程式碼來驗證。