版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
89C51單片機(jī)原理及應(yīng)用89C51單片機(jī)定時(shí)器/計(jì)數(shù)器
單片機(jī)的定時(shí)/計(jì)數(shù)器
單片機(jī)應(yīng)用系統(tǒng)中定時(shí)計(jì)數(shù)的需求:
如用單片機(jī)控制的打鈴器、空調(diào)的定時(shí)開關(guān)、啤酒自動(dòng)生產(chǎn)線上對(duì)酒瓶的計(jì)數(shù)裝置等。
89C51單片機(jī)片內(nèi)的定時(shí)/計(jì)數(shù)器:
兩個(gè)16位可編程的定時(shí)/計(jì)數(shù)器:T0和T1,都能定時(shí)和對(duì)外部事件進(jìn)行計(jì)數(shù)。此外,T1還可以作為串行接口的波特率發(fā)生器。定時(shí)/計(jì)數(shù)器的結(jié)構(gòu)1.定時(shí)和計(jì)數(shù)的原理(1)計(jì)數(shù)
定時(shí)/計(jì)數(shù)器的實(shí)質(zhì)是在處置基礎(chǔ)上的加1計(jì)數(shù)器(16位),16位定時(shí)/計(jì)數(shù)器的計(jì)數(shù)容量是65536單片機(jī)是對(duì)脈沖個(gè)數(shù)計(jì)數(shù),計(jì)數(shù)器每接收到一個(gè)脈沖,計(jì)數(shù)值加1,當(dāng)接收滿65535個(gè)脈沖后,再來一個(gè)脈沖,計(jì)數(shù)值清0表明這一輪計(jì)數(shù)結(jié)束,同時(shí)將標(biāo)志位TF0或TF1置1。
(2)定時(shí)單片機(jī)內(nèi)部的計(jì)數(shù)器用作定時(shí)器時(shí),是對(duì)標(biāo)準(zhǔn)的時(shí)鐘進(jìn)行了計(jì)數(shù),每來一個(gè)時(shí)鐘脈沖,計(jì)數(shù)器加1,只要保證計(jì)數(shù)脈沖的間隔相等,則計(jì)數(shù)值就代表了時(shí)間的流逝。計(jì)數(shù)器如何能作為定時(shí)器使用呢?單片機(jī)中的定時(shí)器和計(jì)數(shù)器其實(shí)是一個(gè)器件:計(jì)數(shù)器:是對(duì)外部發(fā)生的事件進(jìn)行計(jì)數(shù),定時(shí)器:是對(duì)單片機(jī)內(nèi)部的標(biāo)準(zhǔn)時(shí)鐘脈沖進(jìn)行計(jì)數(shù)。單片機(jī)內(nèi)部的標(biāo)準(zhǔn)時(shí)鐘脈沖是如何獲得的呢?由單片機(jī)的晶振經(jīng)過12分頻后得到。由于晶振的頻率很準(zhǔn),所以這個(gè)時(shí)鐘脈沖的時(shí)間間隔也很準(zhǔn)。當(dāng)單片機(jī)采用12MHz的晶振時(shí),它提供給計(jì)數(shù)器的脈沖頻率是12MHz/12=1MHz,脈沖周期就是1微秒。定時(shí)/計(jì)數(shù)器T0的結(jié)構(gòu)示意圖獲得標(biāo)準(zhǔn)時(shí)間單片機(jī)內(nèi)部的16位定時(shí)/計(jì)數(shù)器由高8位和低8位兩個(gè)寄存器組成:
T0由TH0和TL0組成,
T1由TH1和TL1組成,定時(shí)/計(jì)數(shù)器的計(jì)數(shù)值就存放在這里面。定時(shí)/計(jì)數(shù)器T1的結(jié)構(gòu)與T0相同。定時(shí)器/計(jì)數(shù)器的控制寄存器TMOD:選擇定時(shí)器/計(jì)數(shù)器T0、T1的工作模式和工作方式。TCON:控制T0、T1的啟動(dòng)和停止計(jì)數(shù),同時(shí)包含了
T0、T1的狀態(tài)。定時(shí)/計(jì)數(shù)器的結(jié)構(gòu)單片機(jī)復(fù)位時(shí),兩個(gè)寄存器的所有位都被清0。定時(shí)器/計(jì)數(shù)器控制寄存器TCON
低4位與外部中斷有關(guān),已介紹。高4位的功能如下:
(1)TF1、TF0——計(jì)數(shù)溢出標(biāo)志位(2)TR1、TR0——計(jì)數(shù)運(yùn)行控制位 1:?jiǎn)?dòng)定時(shí)器/計(jì)數(shù)器工作
0:停止定時(shí)器/計(jì)數(shù)器工作
工作方式控制寄存器TMOD8位分為兩組,高4位控制T1,低4位控制T0。(1)GATE——門控位 0:以TRX(X=0,1)來啟動(dòng)定時(shí)器/計(jì)數(shù)器運(yùn)行。 1:用外中斷引腳(INT0*或INT1*)上的高電平和TRX來啟動(dòng)定時(shí)器/計(jì)數(shù)器運(yùn)行。(2)M1、M0——工作方式選擇位M1M0工作方式00 方式0,13位定時(shí)器/計(jì)數(shù)器。01 方式1,16位定時(shí)器/計(jì)數(shù)器。10 方式2,8位常數(shù)自動(dòng)重新裝載11 方式3,僅適用于T0,T0分成兩個(gè)8位計(jì)數(shù)器,T1停止計(jì)數(shù)。(3)C/T*——計(jì)數(shù)器模式和定時(shí)器模式選擇位
0:定時(shí)器模式。 1:計(jì)數(shù)器模式。
定時(shí)/計(jì)數(shù)器的工作方式一.方式0方式0是13位的定時(shí)/計(jì)數(shù)方式,因而最大計(jì)數(shù)值為2的13次冪,等于8192。如計(jì)數(shù)值為N,則置入的初值X為:
X=8192-N例如定時(shí)/計(jì)數(shù)器T0的計(jì)數(shù)值為1000,則初值為7192,轉(zhuǎn)換成二進(jìn)制數(shù)為1110000011000B,則TH0=11100000B,TL0=00011000B。工作方式0為13位的計(jì)數(shù)器,C/T*位決定工作模式:
0:開關(guān)打在上面,為定時(shí)器工作模式; 1:開關(guān)打在下面,為計(jì)數(shù)器工作模式,計(jì)數(shù)脈沖為P3.4、P3.5引腳上的外部輸入脈沖,當(dāng)引腳上發(fā)生負(fù)跳變時(shí),計(jì)數(shù)器加1。GATE位:決定定時(shí)器/計(jì)數(shù)器的運(yùn)行取決于TRx一個(gè)條件還是TRx和INTx*引腳兩個(gè)條件。(1)0:A點(diǎn)是否計(jì)數(shù),僅取決于TRx的狀態(tài)。(2)1:B點(diǎn)電位由INTX*的輸入電平和TRX的狀態(tài)這兩個(gè)條件來確定。是否計(jì)數(shù)是由TRx和INTx*二個(gè)條件來控制的。二、方式1方式1是16位的定時(shí)/計(jì)數(shù)方式,因而最大計(jì)數(shù)值為2的16次冪,等于65536。如計(jì)數(shù)值為N,則置入的初值X為:X=65536-N如定時(shí)/計(jì)數(shù)器T0的計(jì)數(shù)值為1000,則初值為65536-1000=64536,轉(zhuǎn)換成二進(jìn)制數(shù)為1111110000011000B,則TH0=11111100B,TL0=00011000B。三.方式2方式2,16位的計(jì)數(shù)器只用了8位來計(jì)數(shù),用的是TL0(或TL1)的8位來進(jìn)行計(jì)數(shù),而TH0(或TH1)用于保存初值。當(dāng)TL0(或TL1)計(jì)滿時(shí)則溢出,一方面使TF0(或TF1)置位,另一方面溢出信號(hào)又會(huì)觸發(fā)三態(tài)門,使三態(tài)門導(dǎo)通,TH0(或TH1)的值就自動(dòng)裝入TL0(或TL1)。TLX作為常數(shù)緩沖器,當(dāng)TLX計(jì)數(shù)溢出時(shí),在置“1”溢出標(biāo)志TFX的同時(shí),還自動(dòng)的將THX中的初值送至TLX,使TLX從初值開始重新計(jì)數(shù)。特別適合于產(chǎn)生比較精確的連續(xù)脈沖信號(hào)。由于是8位的定時(shí)/計(jì)數(shù)方式,因而最大計(jì)數(shù)值為2的8次冪,等于256。如計(jì)數(shù)值為N,則置入的初值X為:
X=256-N
如定時(shí)/計(jì)數(shù)器T0的計(jì)數(shù)值為100,則初值為256-100=156,轉(zhuǎn)換成二進(jìn)制數(shù)為10011100B,則TH0=TL0=10011100B。注意:
由于方式2計(jì)滿后,溢出信號(hào)會(huì)觸發(fā)三態(tài)門自動(dòng)地把TH0(或TH1)的值裝入TL0(或TL1)中,因而如果要重新實(shí)現(xiàn)N個(gè)單位的計(jì)數(shù),不用重新置入初值。方式3只有定時(shí)/計(jì)數(shù)器T0才有,當(dāng)M1M0兩位為11時(shí),定時(shí)/計(jì)數(shù)器T0工作于方式3,定時(shí)/計(jì)數(shù)器T0被分為兩個(gè)部分TL0和TH0,其中,TL0可作為定時(shí)/計(jì)數(shù)器使用,占用T0的全部控制位:GATE、C/T、TR0和TF0;而TH0固定只能作定時(shí)器使用,對(duì)機(jī)器周期進(jìn)行計(jì)數(shù),這時(shí)它占用定時(shí)/計(jì)數(shù)器T1的TR1位、TF1位和T1的中斷資源。四、方式3工作方式3相當(dāng)于增加一個(gè)附加的8位定時(shí)器/計(jì)數(shù)器,從而具有3個(gè)定時(shí)器/計(jì)數(shù)器。只適用于定時(shí)器/計(jì)數(shù)器T0。T1不能工作在方式3,T1方式3時(shí)相當(dāng)于TR1=0,停止計(jì)數(shù)(此時(shí)T1可用來作串行口波特率產(chǎn)生器)。1.工作方式3下的T0T0分為兩個(gè)獨(dú)立的8位計(jì)數(shù)器:TL0和TH0。TL0使用T0的狀態(tài)控制位C/T*、GATE、TR0、,而TH0被固定為一個(gè)8位定時(shí)器(不能作外部計(jì)數(shù)模式),并使用定時(shí)器T1的狀態(tài)控制位TR1和TF1,同時(shí)占用定時(shí)器T1的中斷請(qǐng)求源TF1。2.T0工作在方式3下T1的各種工作方式
當(dāng)T1用作串行口的波特率發(fā)生器時(shí),T0才工作在方式3。T0處于方式3時(shí),T1可定為方式0、方式1和方式2,用來作為串行口的波特率發(fā)生器,或不需要中斷的場(chǎng)合。定時(shí)器/計(jì)數(shù)器對(duì)輸入信號(hào)的要求
外部計(jì)數(shù)脈沖的最高頻率為系統(tǒng)振蕩器頻率的1/24,例如選用12MHz頻率的晶體,則可輸入500KHz的外部脈沖。輸入信號(hào)的高、低電平至少要保持一個(gè)機(jī)器周期。如圖所示,圖中Tcy為機(jī)器周期。定時(shí)器/計(jì)數(shù)器的初始化定時(shí)/計(jì)數(shù)器的方式寄存器TMOD其中:M1、M0為工作方式選擇位,用于對(duì)T0的四種工作方式,T1的三種工作方式進(jìn)行選擇,選擇情況如下C/T:定時(shí)或計(jì)數(shù)方式選擇位,當(dāng)C/T=1時(shí)工作于計(jì)數(shù)方式;當(dāng)C/T=0時(shí)工作于定時(shí)方式。GATE:門控位,用于控制定時(shí)/計(jì)數(shù)器的啟動(dòng)是否受外部中斷請(qǐng)求信號(hào)的影響。定時(shí)/計(jì)數(shù)器的控制寄存器TCON其中:TF1:定時(shí)/計(jì)數(shù)器T1的溢出標(biāo)志位,當(dāng)定時(shí)/計(jì)數(shù)器T1計(jì)滿時(shí),由硬件使它置位,如中斷允許則觸發(fā)T1中斷。進(jìn)入中斷處理后由內(nèi)部硬件電路自動(dòng)清除。TR1:定時(shí)/計(jì)數(shù)器T1的啟動(dòng)位,可由軟件置位或清零,當(dāng)TR1=1時(shí)啟動(dòng);TR1=0時(shí)停止。16位定時(shí)/計(jì)數(shù)器計(jì)滿65536個(gè)脈沖時(shí),也會(huì)發(fā)生溢出。
定時(shí)/計(jì)數(shù)器溢出后標(biāo)志位TF0(或TF1)由0變1,由此能夠引發(fā)定時(shí)中斷(在中斷定時(shí)方式下),這就像定時(shí)的時(shí)間一到,鬧鐘就會(huì)響一樣。
如果采用12MHz的晶振,對(duì)應(yīng)的脈沖周期是1微秒,計(jì)滿65536個(gè)脈沖所對(duì)應(yīng)的時(shí)間就是65.536ms。定時(shí)/計(jì)數(shù)值的設(shè)置
計(jì)數(shù)器的道理是一樣的,只要用預(yù)置數(shù)的方法先在計(jì)數(shù)容器內(nèi)存入一個(gè)初值,如我們要計(jì)100,那就存入65436,只要再來100個(gè)脈沖,就剛好會(huì)溢出,引發(fā)中斷。在時(shí)鐘頻率為12MHz的情況下,每個(gè)時(shí)鐘脈沖是1微秒,則計(jì)滿65536個(gè)脈沖需65.536毫秒,如要定時(shí)10毫秒則存入初值55536,(10毫秒是10000微秒,需計(jì)數(shù)10000個(gè)脈沖)??梢?,
定時(shí)器的定時(shí)時(shí)間長(zhǎng)短與系統(tǒng)時(shí)鐘和定時(shí)器初值有關(guān)。
說明
1.當(dāng)定時(shí)/計(jì)數(shù)器用作計(jì)數(shù)器時(shí),通過引腳P3.4、P3.5對(duì)外部輸入脈沖計(jì)數(shù)。
2.定時(shí)/計(jì)數(shù)器T0(T1)啟動(dòng)運(yùn)行后,會(huì)按設(shè)定的工作方式獨(dú)立進(jìn)行計(jì)數(shù),不再占用CPU時(shí)間。當(dāng)計(jì)數(shù)器T0(T1)計(jì)滿溢出時(shí),TF0(TF1)置1,向CPU發(fā)出中斷請(qǐng)求信號(hào)。定時(shí)器初值的設(shè)置定時(shí)器/計(jì)數(shù)器初值計(jì)算
定時(shí)器/計(jì)數(shù)器用于定時(shí)或計(jì)數(shù)時(shí),必須按照需要給計(jì)數(shù)器設(shè)置初值。定時(shí)器/計(jì)數(shù)器在計(jì)數(shù)初值的基礎(chǔ)上以加1的方式進(jìn)行計(jì)數(shù),在計(jì)數(shù)器從全1變?yōu)槿?時(shí),將自動(dòng)產(chǎn)生溢出中斷請(qǐng)求。(1)計(jì)數(shù)初值計(jì)算假設(shè)要計(jì)數(shù)的值為X,由于計(jì)數(shù)器是加工計(jì)數(shù)器,所以定時(shí)器/計(jì)數(shù)器的初值為2-X:其中n的值依賴于工作方式, 對(duì)于方式0,n=
13;即初值=8192-X 對(duì)于方式1,n=
16;即初值=65536-X 對(duì)于方式2和方式3,n=8;即初值=256-Xn2)定時(shí)初值計(jì)算定時(shí)就是定時(shí)間,假設(shè)晶振頻率為f,定時(shí)時(shí)間為T,對(duì)應(yīng)的計(jì)數(shù)值為X,此時(shí)計(jì)數(shù)器是將系統(tǒng)時(shí)鐘12分頻后作為計(jì)數(shù)脈沖,則以下等式成立。要裝入的計(jì)數(shù)器初值CI=2-T·fosc/12。例如:已知晶振的頻率為6MHz,要求定時(shí)為2ms,則當(dāng)為方式0時(shí),應(yīng)裝入的計(jì)數(shù)初值為;8192-2×10×6×10/12=8192-1000=7192n36
定時(shí)時(shí)間常數(shù)初值X:方式0X=8192-T(fosc/12)
方式1X=65536-T(fosc/12)
方式2、方式3X=256-T(fosc/12)
其中T是需要定時(shí)的時(shí)間,單位是微秒;fosc是晶振
計(jì)數(shù)時(shí)間常數(shù)X:方式0X=8192-S
方式1X=65536-S
方式2、方式3X=256-S
說明:式中S是需要計(jì)數(shù)的次數(shù)
定財(cái)器/計(jì)數(shù)器初始化步驟
1)確定工作方式:把工作方式控制字寫入到TMOD中;
2)設(shè)置定時(shí)或計(jì)數(shù)的初值:根據(jù)問題要求,求出定時(shí)或計(jì)數(shù)的初值,寫入到寄存器THO、TLO或THI、TLI中。
3)如果需要中斷,使定時(shí)器中斷允許位ET0或ETI置位,如果要求中斷嵌套,還應(yīng)設(shè)置相應(yīng)的中斷優(yōu)先級(jí),然后置位EA,使CPU開放中斷;如果不需要中斷,僅以軟件方式對(duì)計(jì)數(shù)器溢出標(biāo)志TFO或TFI進(jìn)行查詢,則可略去此步驟;
4)啟動(dòng)定時(shí)器/計(jì)數(shù)器:將TRO或TRI置1即可啟動(dòng)定時(shí)器/計(jì)數(shù)器。定時(shí)器/計(jì)數(shù)器的編程和應(yīng)用
4種工作方式中,方式0與方式1基本相同,由于方式0是為兼容MCS-48而設(shè),初值計(jì)算復(fù)雜,在實(shí)際應(yīng)用中,一般不用方式0,而采用方式1。方式1應(yīng)用
例1
假設(shè)系統(tǒng)時(shí)鐘頻率采用6MHz,要在P1.0上輸出一個(gè)周期為2ms的方波,如圖所示。
方波的周期用T0來確定,讓T0每隔1ms計(jì)數(shù)溢出1次(每1ms產(chǎn)生一次中斷),CPU響應(yīng)中斷后,在中斷服務(wù)程序中對(duì)P1.0取反。(1)計(jì)算初值X
設(shè)初值為X,則有: (216-X)×2×10-6=1×10-3216-X=500X=65036X化為16進(jìn)制,即所以,T0的初值為:TH0=0FEHTL0=0CH例2假設(shè)系統(tǒng)時(shí)鐘為6MHz,編寫定時(shí)器T0產(chǎn)生1秒定時(shí)的程序。(1)T0工作方式的確定定時(shí)時(shí)間較長(zhǎng),采用哪一種工作方式?
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)院感染控制及管理方案
- 教育資源供應(yīng)保證承諾書(6篇)
- 行業(yè)流程優(yōu)化與執(zhí)行工具
- 營(yíng)收表現(xiàn)承諾保證承諾書8篇范文
- 軟件開發(fā)中需求分析與設(shè)計(jì)流程手冊(cè)
- 員工績(jī)效評(píng)價(jià)綜合打分模板
- 企業(yè)財(cái)務(wù)成本控制分析報(bào)表模板
- 采購(gòu)成本控制與策略工具包
- 雨中的溫情故事讀后感14篇
- 高校學(xué)生心理健康管理實(shí)施方案
- 《經(jīng)典常談》分層作業(yè)(解析版)
- TSGT5002-2025電梯維護(hù)保養(yǎng)規(guī)則
- 紀(jì)法教育微型課件
- 2025至2030中國(guó)牙科探針行業(yè)產(chǎn)業(yè)運(yùn)行態(tài)勢(shì)及投資規(guī)劃深度研究報(bào)告
- 辦公設(shè)備維護(hù)保養(yǎng)合同
- 畢業(yè)論文寫作與答辯(第三版)課件 專題三 資料收集
- 陶瓷減阻涂層研發(fā)-洞察及研究
- 2025年安全生產(chǎn)法電子版
- 萬科施工管理辦法
- 2025至2030中國(guó)養(yǎng)老健康行業(yè)深度發(fā)展研究與企業(yè)投資戰(zhàn)略規(guī)劃報(bào)告
- Roland羅蘭樂器AerophoneAE-20電吹管ChineseAerophoneAE-20OwnersManual用戶手冊(cè)
評(píng)論
0/150
提交評(píng)論