單片機(jī)定時(shí)器/計(jì)數(shù)器的基本結(jié)構(gòu)及工作原理
本文主要學(xué)習(xí)定時(shí)器/計(jì)數(shù)器的基本結(jié)構(gòu)。對(duì)結(jié)構(gòu)的學(xué)習(xí)首先要明確定時(shí)器/計(jì)數(shù)器的功能,可參考第一節(jié)的內(nèi)容來(lái)理解。目前常用的單片機(jī)中往往都配備了定時(shí)器/計(jì)數(shù)器。在A(yíng)T89S52芯片內(nèi)包含有三個(gè)16位的定時(shí)器/計(jì)數(shù)器:T0、T1和T2,其核心是加1計(jì)數(shù)器。我們主要要求掌握T0和T1的結(jié)構(gòu)和功能。學(xué)習(xí)中要注意從電路結(jié)構(gòu)上來(lái)理解功能的實(shí)現(xiàn)。定時(shí)器/計(jì)數(shù)器方式寄存器TMOD和定時(shí)器/計(jì)數(shù)器控制寄存器TCON是用以設(shè)定定時(shí)器/計(jì)數(shù)器的工作方式、定時(shí)或計(jì)數(shù)功能,控制啟動(dòng)或停止以及產(chǎn)生溢出中斷的重要模塊,應(yīng)該對(duì)這兩個(gè)寄存器中的逐位的定義和功能進(jìn)行學(xué)習(xí)和掌握。 一、定時(shí)器/計(jì)數(shù)器的功能AT89S52單片機(jī)定時(shí)器/計(jì)數(shù)器的基本部件是兩個(gè)8位的計(jì)數(shù)器(T1計(jì)數(shù)器分為高8位TH1和低8位TL1,T0計(jì)數(shù)器的高8位是TH0,低8位是TL0)。如圖1所示。
圖1 T0和T1的基本構(gòu)成
定時(shí)器/計(jì)數(shù)器的核心是一個(gè)加1計(jì)數(shù)器,在作定時(shí)器使用時(shí),它對(duì)機(jī)器周期進(jìn)行計(jì)數(shù),每過(guò)一個(gè)機(jī)器周期計(jì)數(shù)器加1,直到計(jì)數(shù)器計(jì)滿(mǎn)溢出。
當(dāng)它用作對(duì)外部事件計(jì)數(shù)時(shí),計(jì)數(shù)器接相應(yīng)的外部輸入引腳T0(P3.4)或T1(P3.5)并在每個(gè)機(jī)器周期的S5P2時(shí)采樣,當(dāng)采樣到1—0的負(fù)跳變時(shí),計(jì)數(shù)器加1。
二、定時(shí)器/計(jì)數(shù)器的結(jié)構(gòu)AT89S52單片機(jī)內(nèi)部的定時(shí)/計(jì)數(shù)器的結(jié)構(gòu)如圖2所示。定時(shí)器T0由特殊功能寄存器TL0(低8位)和TH0(高8位)構(gòu)成,定時(shí)器T1由特殊功能寄存器TL1(低8位)和TH1(高8位)構(gòu)成。每個(gè)寄存器均可單獨(dú)訪(fǎng)問(wèn)。
圖2 定時(shí)器/計(jì)數(shù)器的內(nèi)部結(jié)構(gòu) 三、TMOD和TCON
AT89S52的定時(shí)器/計(jì)數(shù)器是一種可編程部件,在定時(shí)器/計(jì)數(shù)器開(kāi)始工作之前,CPU必須將一些命令(控制字)寫(xiě)入定時(shí)/計(jì)數(shù)器。
例如:選擇哪一個(gè)定時(shí)器/計(jì)數(shù)器在何種工作方式下工作?
是用作定時(shí)器計(jì)時(shí)功能還是用作計(jì)數(shù)器的計(jì)數(shù)功能?
是否啟動(dòng)定時(shí)器/計(jì)數(shù)器的運(yùn)行?
……
這些設(shè)置的功能是通過(guò)對(duì)特殊功能寄存器TMOD和TCON的設(shè)置來(lái)實(shí)現(xiàn)。在初始化過(guò)程中,要將工作方式控制字寫(xiě)入方式寄存器(初始化工作的一部分),工作狀態(tài)字寫(xiě)入控制寄存器,CPU就會(huì)按設(shè)定的工作方式獨(dú)立運(yùn)行。
1.定時(shí)器/計(jì)數(shù)器方式寄存器TMOD
定時(shí)器/計(jì)數(shù)器方式控制寄存器TMOD在特殊功能寄存器中,字節(jié)地址為89H。TMOD不能進(jìn)行位尋址,只能用字節(jié)傳送指令設(shè)置定時(shí)器工作方式,低半字節(jié)定義為定時(shí)器/計(jì)數(shù)器0,高半字節(jié)定義為定時(shí)器/計(jì)數(shù)器1。復(fù)位時(shí),TMOD所有位均為0。TMOD的格式
如下表所示。
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
GATE | C/ | M1 | M0 | GATE | C/ | M1 | M0 |
T1方式控制字 | T0方式控制字 |
M1、M0:工作方式選擇位。用來(lái)定義定時(shí)器/計(jì)數(shù)器的四種工作方式。
C/:功能選擇位:C/位為定時(shí)器方式或計(jì)數(shù)器方式選擇位。C/=1時(shí),為計(jì)數(shù)器方式;C/=0時(shí),為定時(shí)器方式。
GATE:門(mén)控制位,確定定時(shí)器的開(kāi)啟與關(guān)閉。當(dāng)GATE=0時(shí),只要定時(shí)器控制寄存器TCON中的TR0(或TR1)被置1時(shí),T0(或T1)被允許開(kāi)始計(jì)數(shù)(TCON各位含義見(jiàn)后面敘述)。
當(dāng)GATE=1時(shí),外部中斷引腳或的輸入電平控制T0或T1的開(kāi)啟與關(guān)閉。
2.定時(shí)器/計(jì)數(shù)器控制寄存器TCON
TCON是T0和T1的控制寄存器,它同時(shí)也用來(lái)鎖存T0、T1的溢出中斷請(qǐng)求源和外部中斷請(qǐng)求源。TCON寄存器復(fù)位時(shí)為00H,可以進(jìn)行位尋址。定時(shí)器/計(jì)數(shù)器控制寄存器TCON字節(jié)地址為88H。TCON寄存器各位定義如下表
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
TF1 | TR1 | TF0 | TR0 | IE1 | IT1 | IE0 | IT0 |
用于外部中斷 |
TCON中各標(biāo)志位的功能是:
TF1(D7):定時(shí)器1溢出標(biāo)志位。當(dāng)T1計(jì)滿(mǎn)溢出時(shí),由硬件使TF1置1,申請(qǐng)中斷。進(jìn)入中斷服務(wù)程序后,由硬件自動(dòng)清0,在查詢(xún)方式下用軟件清0。
TR1(D6):定時(shí)器1運(yùn)行控制位。TR1置1,啟動(dòng)定時(shí)器1;TR1置0則停止工作。TR1由軟件置1或清零
TF0(D5):定時(shí)器0溢出標(biāo)志。其功能及操作情況同TF1。
TR0(D4):定時(shí)器0運(yùn)行控制位。其功能及操作情況同TR1。
IE1(D3):外部中斷1中斷請(qǐng)求標(biāo)志。IT1=1時(shí),外部中斷1引腳上的電平由1變0時(shí),IE1由硬件置位,外部中斷1請(qǐng)求中斷。當(dāng)CPU響應(yīng)中斷并轉(zhuǎn)向該中斷服務(wù)程序執(zhí)行時(shí),由內(nèi)部硬件自動(dòng)清0。
IT1(D2):外部中斷1()電平觸發(fā)方式或者脈沖觸發(fā)方式控制位。IT1=1時(shí),外部中斷1為負(fù)邊沿觸發(fā)方式,引腳上的電平從高到低負(fù)跳變有效。IT1=0時(shí),外部中斷1為電平觸發(fā)方式。上輸入低電平有效。
IE0(D1):外部中斷0中斷請(qǐng)求標(biāo)志。如果IT0置1,則當(dāng)上的電平由1變0時(shí),IE0由硬件置位。在CPU把控制轉(zhuǎn)到中斷服務(wù)程序時(shí)由硬件使IE0復(fù)位。
IT0(D0):外部中斷源0觸發(fā)方式控制位,其含義同IT1。
3.TMOD和TCON的控制功能可以通過(guò)一個(gè)具體的電路結(jié)構(gòu)來(lái)加強(qiáng)理解
圖3TMOD和TCON控制功能的實(shí)現(xiàn)
在圖3中,清楚的表示了TMOD和TCON中的控制位對(duì)工作方式、定時(shí)/計(jì)數(shù)模式、啟動(dòng)、溢出中斷的控制的實(shí)現(xiàn)。
編輯:admin 最后修改時(shí)間:2018-05-08