立即注冊 登錄
返回首頁

uid:208050的個人空間

日志

51單片機總結(jié)之定時器

已有 1149 次閱讀2017-6-5 15:54 | 單片機, 寄存器, 定時器, 聯(lián)想, C語言

1.引言

我開始看單片機的書籍比較早,只有C語言基礎(chǔ)而沒有數(shù)電基礎(chǔ)(不知道要學(xué)),所以我在很多地方概念都是模模糊糊的。尤其是什么控制位什么寄存器什么邏輯電路都不懂,只純粹的想寫C語言操作單片機就行了,F(xiàn)在有了一定的基礎(chǔ),發(fā)現(xiàn)了很多以前知其然不知其所以然的東西,所以在這里稍微的總結(jié)一下,同時我想可能對基礎(chǔ)不扎實的同學(xué)有一定的幫助(其實我基礎(chǔ)也不扎實~嘻嘻)。


2.定時器的控制寄存器

對硬件(單片機)的操作,從本質(zhì)上將就是對寄存器的操作。一個寄存器通常是1字節(jié),即8位。每一位(bit)可以聯(lián)想成一個開關(guān),打開這個開關(guān)就能做一件事,關(guān)閉這個開關(guān)就能停止做一件事。


8051系列的單片機中定時器由兩個寄存器控制,這兩個寄存器名稱分別是TMOD(Time Mode,工作方式寄存器)和TCON(Time Configuration,控制寄存器)。因為這些寄存器是操作單片機中定時器的,有特殊功能作用,所以屬于特殊功能寄存器而不是通用寄存器。另外想要記住這兩個寄存器的名稱也很簡單,用英文全稱來記憶。


下面先對兩個控制寄存器各個位進行總結(jié):

2.1 工作方式寄存器(TMOD)

TCOMD7D6D5D4D3D2D1D0
位名稱GATEC/TM1M0GATEC/TM1M0
功能門控位定時/計數(shù)方式選擇工作方式選擇門控位定時/計數(shù)方式選擇工作方式選擇
說明高4位控制T1低4位控制T0
 TOMD的結(jié)構(gòu)和各位名稱、功能

51單片機有兩個定時器,其中TMOD的高四位控制定時器1,低四位控制定時器0。

2.1.1 門控位(GATE)

我初學(xué)的時候沒有用到這個位,不過我還是簡單對它總結(jié)一下吧:

可以通過編程對這個位置1或清零。

當(dāng)GATE = 0時,只要使TCON中的TR0或TR1置1,就可以啟動定時器了。

當(dāng)GATE = 1時,除了使TCON中的TR0和TR1置1以外,還需要外部中斷INT0或INT1為高電平,才能啟動定時器。即比GATE = 0時多一個啟動條件。

2.1.2 定時/計數(shù)模式選擇位(C/T)

其中C的英文全稱是Count,意思是計數(shù)器。T是Timer,定時器。置1為選擇計數(shù)器工作模式,置0為選擇定時器工作模式。(T上面應(yīng)該畫一橫的,表示低電平有效)。

當(dāng)C/T = 0時,為定時模式。此時定時器計數(shù)的時間是一個機器周期,一個機器周期的時間長度和晶振頻率有關(guān)。大家都知道周期T和頻率f是互為倒數(shù)的關(guān)系。而知道了晶振頻率fosc后,還要除以12(硬件內(nèi)部結(jié)構(gòu)12分頻的結(jié)果),它的倒數(shù)就是一個機器周期。即如果單片機采用12MHz的晶振,那么機器周期就是1微秒。

每經(jīng)過一個機器周期,定時器的數(shù)值就會加1,直到計數(shù)器產(chǎn)生溢出,最后產(chǎn)生中斷執(zhí)行自己寫的程序,這個程序就是你想讓單片機計數(shù)結(jié)束后做什么的程序。


當(dāng)C/T = 1時,為計數(shù)模式,這里不詳細總結(jié)了。


另外上電復(fù)位后,這里的控制位默認是0,即定時模式。

2.1.3 工作方式選擇(M1和M2)

M1M0工作方式說明
00方式013位定時器
01方式116位定時器
10方式28位自動重裝定時器
11方式3T0分成兩個獨立的8位定時器;T1停止使用
 定時器工作方式設(shè)置表

2.1.4 注意事項

TMOD不能單獨對一個位置1或清零。只能一個字節(jié)的寫入TCOM設(shè)置定時器。

另外,CPU復(fù)位時TCOM所有的位都清零。

2.2 控制寄存器(TCON)

TCOND7D6D5D4D3D2D1D0
位名稱TF1TR1TF0TR0IE1IT1IE0IT0
功能T1中斷標(biāo)志T1運行開關(guān)T0中斷標(biāo)志位T0運行開關(guān)----
 TCON的結(jié)構(gòu)、位名稱和功能

這里主要關(guān)注TCON高四位,低四位是和外部中斷有關(guān)的控制位。

2.2.1 溢出中斷請求標(biāo)志位(TFn)

標(biāo)題上的TFn中的n表示0或1,即溢出中斷請求標(biāo)志位分別有TF0和TF1。TF的英文全稱是Timer overflow Flag,即定時器溢出標(biāo)志位。

當(dāng)定時器Tn(n=0、1)計數(shù)溢出后,相應(yīng)的TFn由硬件自動置1,然后向CPU申請中斷,執(zhí)行中斷程序。

CPU響應(yīng)中斷后,硬件自動對TFn清零。


另外,TFn也可以在程序中置1或清零。

2.2.2 定時器運行控制位(TRn)

TR的英文全稱是Timer Run,即定時器運行(控制位)。

當(dāng)TRn = 1時,定時器n運行;

當(dāng)TRn = 0是,定時器n停止。


3.定時器的結(jié)構(gòu)

知道了如何控制定時器之后,現(xiàn)在再來看一下定時器的結(jié)構(gòu)。

定時器的實質(zhì)是加一計數(shù)器(16位),由高8位和低8位兩個寄存器組成(THn和TLn)。


不同工作方式(M1M0控制),THn和TLn也有不同的功能。我最常用的是使用工作方式1——16位定時器。所以也只是稍微總結(jié)一下,因為足夠用了,能做很多事情了。

在這個工作方式下,THn和TLn合起來作為16位計數(shù)器。由TLn作為低8位,THn作為高8位(因為L是low,H為High)。當(dāng)16位計數(shù)器溢出時,TFn置1。然后產(chǎn)生中斷,進入并執(zhí)行中斷程序。

若使用12MHZ的晶振,定時器每加1則需要1微秒時間,如果把THn和THn都置為00H,當(dāng)定時器溢出并產(chǎn)生中斷的時候,就已經(jīng)過了65536微秒(2^13次方微秒)。


路過

雞蛋

鮮花

握手

雷人

全部作者的其他最新日志

評論 (0 個評論)

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

返回頂部