第五章-定時器計數(shù)器_第1頁
第五章-定時器計數(shù)器_第2頁
第五章-定時器計數(shù)器_第3頁
第五章-定時器計數(shù)器_第4頁
第五章-定時器計數(shù)器_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第5章

定時計數(shù)技術(shù)單片機(jī)控制系統(tǒng)中常常用到的定時與計數(shù)問題。定時計數(shù)概述

MCS-51單片機(jī)的定時計數(shù)器

定時/計數(shù)器概述

1、定時的定義:定時是對周期固定、已知的脈沖計數(shù)。2、計數(shù)的定義:計數(shù)是對外界產(chǎn)生的周期不固定的未知脈沖計數(shù)。計數(shù)器的計數(shù)方式可以是加1計數(shù),也可以是減1計數(shù)。3、定時/計數(shù)的實現(xiàn)方法:定時/計數(shù)的實現(xiàn)方法有3種(比較):⑴硬件數(shù)字電路:用555構(gòu)成的定時器/計數(shù)器等(不能編程)。⑵軟件編程:

缺點:占用CPU資源⑶可編程定時/計數(shù)器

優(yōu)點:靈活且不占CPU資源軟件編程例:編制一個延時2mS左右的子程序。

D2MS:MOVR7,#2;1個機(jī)器周期

D2MS0:MOVR6,#250;1個機(jī)器周期

DJNZR6,$;2個機(jī)器周期

DJNZR7,D2MS0;2個機(jī)器周期

RET;2個機(jī)器周期例:統(tǒng)計開關(guān)按動次數(shù),并存于30H單元。

MOV30H,#0UP:JBP1.0,$JNBP1.0,$INC30HSJMPUP可編程定時/計數(shù)器

有的控制系統(tǒng)是按時間間隔來進(jìn)行控制的,如定時的溫度檢測等。雖然可以利用延遲程序來取得定時的效果,但這會降低CPU的工作效率。如果能用一個可編程的實時時鐘,以實現(xiàn)定時或延時控制,則CPU不必通過等待來實現(xiàn)延時,就可以提高CPU的效率。另外也有些控制是按計數(shù)的結(jié)果來進(jìn)行的,因此在微機(jī)控制系統(tǒng)中常使用可編程的硬件定時/計數(shù)器。現(xiàn)在有很多專門用作定時/計數(shù)器的接口芯片。單片機(jī)內(nèi)帶有硬件定時/計數(shù)器可以簡化系統(tǒng)設(shè)計。

可編程定時/計數(shù)器不論是獨立的定時器芯片(8253)還是單片機(jī)內(nèi)的定時器,都有以下特點:1.定時/計數(shù)器可以有多種工作方式,可以是計數(shù)方式也可以是定時方式等等。2.計數(shù)器模值是可變的,當(dāng)然計數(shù)的最大值是有一定限制的,這取決于計數(shù)器的位數(shù)。計數(shù)的最大值也就限制了定時的最大值。3.可以按照規(guī)定的定時或計數(shù)值,當(dāng)定時的時間到或者計數(shù)終止時,可發(fā)出中斷申請,以便實現(xiàn)定時或計數(shù)控制。除了上述共同特點外,各種定時器還會有各自的特點,各自的工作方式和控制方式。MCS51單片機(jī)內(nèi)部的定時/計數(shù)器

定時/計數(shù)器結(jié)構(gòu)定時/計數(shù)器工作方式定時/計數(shù)器應(yīng)用1.定時/計數(shù)器結(jié)構(gòu)

MCS51單片機(jī)內(nèi)有2個獨立的16位的可編程定時/計數(shù)器T0和T1。它們的結(jié)構(gòu)相似。T0的結(jié)構(gòu)如圖所示:振蕩器÷12C/T=0C/T=1&+加1計數(shù)器TF0合/斷T0TR0GATE0INT0TCONTMODTH0TL0TH1TL1

TMOD:89H只能按字節(jié)操作。振蕩器÷12C/T=0C/T=1&+加1計數(shù)器TF0合/斷T0TR0GATE0INT0GATEC/T:用來確定T0(T1)是工作在計數(shù)方式還是工作在定時方式。C/T=0為定時方式,C/T=1為計數(shù)方式。即對外部引腳的外部輸入脈沖計數(shù)。外部引腳上輸入的每一個脈沖的負(fù)跳變使計數(shù)值加1,由于外輸入脈沖的每個高、低電平持續(xù)時間各應(yīng)大于一個機(jī)器周期,因此最小的計數(shù)周期為兩個機(jī)器周期。例如,若單片機(jī)晶振頻率為12MHZ,則外部計數(shù)脈沖的最高頻率只能為500KHz。M1和M2:兩位用來確定T0(T1)的具體工作模式。M1、M2的四種組合剛好與四種工作模式對應(yīng),分別是方式0、方式1、方式2、方式3。GATE:一般稱為門控標(biāo)志。它對定時/數(shù)器的啟動起著控制作用。當(dāng)GATE=1時,定時計數(shù)器的啟動除了受TR控制外,還受INT引腳的控制。當(dāng)TR=0且INT引腳上出現(xiàn)高電平時才能啟動定時計數(shù)器。TMODC/TM1M0GATEC/TM1M0

TCON:88H可以按字節(jié)操作,也可以按位操作。TCONTF0:

T0溢出中斷標(biāo)志位。當(dāng)T0計數(shù)溢出時,TF0=1。在允許中斷的情況下,CPU響應(yīng)T0中斷,轉(zhuǎn)向T0中斷服務(wù)程序,此時由硬件自動將TF0清0。該標(biāo)志位可由軟件查詢,也可用軟件清0或置1。TR0:為T0啟動控制位。當(dāng)TR0=1時,啟動T0;TR0=0時,關(guān)閉T0。該位由軟件進(jìn)行設(shè)置。TF1:

T0溢出中斷標(biāo)志位。當(dāng)T0計數(shù)溢出時,TF0=1。在允許中斷的情況下,CPU響應(yīng)T0中斷,轉(zhuǎn)向T0中斷服務(wù)程序,此時由硬件自動將TF0清0。該標(biāo)志位可由軟件查詢,也可用軟件清0或置1。TR1:為T0啟動控制位。當(dāng)TR0=1時,啟動T0;TR0=0時,關(guān)閉T0。該位由軟件進(jìn)行設(shè)置。TF1TR1TF0TR0IE1IT1IE0IT0

TCON:88H可以按字節(jié)操作,也可以按位操作。振蕩器÷12C/T=0C/T=1&+加1計數(shù)器TF0合/斷T0TR0GATE0INT0TCONTF1TR1TF0TR0IE1IT1IE0IT0

MCS-51單片機(jī)內(nèi)部有兩個16位的定時/計數(shù)器T0和T1。每個定時/計數(shù)器占用兩個特殊功能寄存器:

T0由TH0和TL0兩個8位計數(shù)器組成,字節(jié)地址分別是8CH和8AH。

T1由TH1和TL1兩個8位計數(shù)器組成,字節(jié)地址分別是8DH和8BH。用于存放定時或計數(shù)的初值。當(dāng)計數(shù)器工作時,其值隨計數(shù)脈沖做加1變化。計數(shù)寄存器振蕩器÷12C/T=0C/T=1&+加1計數(shù)器TF0合/斷T0TR0GATE0INT0TH0TL0振蕩器÷12C/T=0C/T=1&+加1計數(shù)器TF0合/斷T0TR0GATE0INT0

MCS-51單片機(jī)內(nèi)部有兩個16位的定時/計數(shù)器T0和T1。每個定時/計數(shù)器占用兩個特殊功能寄存器:

T0由TH0和TL0兩個8位計數(shù)器組成,字節(jié)地址分別是8CH和8AH。

T1由TH1和TL1兩個8位計數(shù)器組成,字節(jié)地址分別是8DH和8BH。用于存放定時或計數(shù)的初值。當(dāng)計數(shù)器工作時,其值隨計數(shù)脈沖做加1變化。計數(shù)寄存器TH0TL0

由于T0由TL0(低8位)和TH0(高8位)組成;T1由TH和THl組成。所以T0、T1都是16位計數(shù)器。但是若將它們設(shè)置成不同的工作方式,其計數(shù)長度(最大值)和計數(shù)方式都可變化。內(nèi)部定時/計數(shù)器一共有四種工作方式,由TMOD的相關(guān)位設(shè)置。2.定時/計數(shù)器的工作方式GATE1C/T1M11M10GATE1C/T1M11M10M1和M2:兩位用來確定T0(T1)的具體工作模式。M1、M2的四種組合剛好與四種工作模式對應(yīng)。定時/計數(shù)器工作模式如下:M1M0模式說明00方式013位定時/計數(shù)器(TH高8位加上TL中的低5位)01方式116位定時/計數(shù)器10方式2自動重裝初值的8位定時/計數(shù)器11方式3模式3只針對T0,T0分成兩個獨立的8位定時/計數(shù)器;T1無模式3

在方式0下,T0構(gòu)成一個13位的計數(shù)器,由TH0的8位和TL0的低5位組成,TL0的高3位未用,滿計數(shù)值為213。

T0啟動后立即加1計數(shù),當(dāng)TL0的低5位計數(shù)溢出時向TH0進(jìn)位,TH0計數(shù)溢出則對相應(yīng)的溢出標(biāo)志位TF0置位,以此作為定時器溢出中斷標(biāo)志。當(dāng)單片機(jī)進(jìn)入中斷服務(wù)程序時,由內(nèi)部硬件自動清除該標(biāo)志。方式0振蕩器÷12C/T=0C/T=1&+TF0合/斷T0TR0GATE0INT0TH0D5×××D4D3D2D1D0TL0計數(shù)器方式0①GATE=0時,計數(shù)器啟動控制開關(guān)只取決于TR0。(軟控制)②GATE=1時,計數(shù)器啟動控制開關(guān)不僅要由TR0來控制,而且還要受到引腳(INT0引腳)高電平控制。(軟+硬控制)振蕩器÷12C/T=0C/T=1&+TF0合/斷T0TR0GATE0INT0TH0D5×××D4D3D2D1D0TL0計數(shù)器

在方式1下,定時/計數(shù)器T0和T1的方式1都是相同的。以下僅以T0為例。T0構(gòu)成一個16位的計數(shù)器,由TH0的8位和TL0的8位組成,滿計數(shù)值為216。方式1振蕩器÷12C/T=0C/T=1&+TF0合/斷T0TR0GATE0INT0TH0TL0計數(shù)器

T0啟動后立即加1計數(shù),當(dāng)TL0計數(shù)溢出時向TH0進(jìn)位,TH0計數(shù)溢出則對相應(yīng)的溢出標(biāo)志位TF0置位,以此作為定時器溢出中斷標(biāo)志。當(dāng)單片機(jī)進(jìn)入中斷服務(wù)程序時,由內(nèi)部硬件自動清除該標(biāo)志。方式1振蕩器÷12C/T=0C/T=1&+TF0合/斷T0TR0GATE0INT0TH0TL0計數(shù)器

在方式2下,定時/計數(shù)器T0和T1的方式2都是相同的。以下僅以T0為例。TH0和TL0被當(dāng)作兩個8位計數(shù)器,計數(shù)過程中,TH0寄存8位初值并保持不變,由TL0進(jìn)行8位計數(shù)。當(dāng)?shù)?位計數(shù)溢出時,除了可產(chǎn)生中斷申請外,還將TH0中保存的內(nèi)容向TL0重新裝人,以便于重新計數(shù),而TH0中的初值仍然保留,以便下次再行對TL0進(jìn)行重裝。方式2振蕩器÷12C/T=0C/T=1&+TF0合/斷T0TR0GATE0INT0TH0TL0計數(shù)器

方式2對于循環(huán)計數(shù)比較有利。這時不需要在溢出后用軟件重新裝入計數(shù)初值,而是可以自動裝入,但此時計數(shù)的長度將受到很大的限制,只有28=256次。方式2振蕩器÷12C/T=0C/T=1&+TF0合/斷T0TR0GATE0INT0TH0TL0計數(shù)器方式3只適用于定時/計數(shù)器T0。這種工作方式下,定時/計數(shù)器T0被拆成2個獨立的定時/計數(shù)器來用。方式3振蕩器÷12C/T=0C/T=1&+TF0合/斷T0TR0GATE0INT0TL0計數(shù)器振蕩器÷12TF1TH0計數(shù)器TR1合/斷方式3在方式3下,T0和T1的工作有很大的不同。⑴若把T1置于方式3,則Tl停止計數(shù),定時器T1保持其內(nèi)容不變。所以,一般不會把T1置于方式3。⑵若把T0置于方式3,則16位計數(shù)器拆開為兩個獨立工作的8位計數(shù)器TL0和TH0。但這兩個8位計數(shù)器的工作是有差別的。首先是工作方式的不同:①對TL0來說它既可以按計數(shù)方式工作,也可以按定時方式工作,②而TH0則只能按定時方式工作。另外是控制方式的不同。一般情況下,當(dāng)定時/計數(shù)器T0處于工作方式3時,定時/計數(shù)器T1可工作為方式0、1、2,但由于此時其已沒有控制通斷和溢出中斷的功能,T1只能作為串行口的波特率發(fā)生器使用,或不需要中斷的場合。

MCS-51的定時/計數(shù)器是可編程的,因此,在進(jìn)行定時或計數(shù)之前也要用對其進(jìn)行初始化。初始化一般應(yīng)包括以下幾個步驟:1、對TMOD寄存器賦值,以確定定時器的工作方式。2.置定時/計數(shù)器初值,直接將初值寫入寄存器的TH0,TL0或TH1,TLl。3.根據(jù)需要,對寄存器IE置初值,開放定時器中斷。4.對TCON寄存器中的TRl或TR0置位,啟動定時/計數(shù)器。啟動以后,計數(shù)器即按規(guī)定的工作方式和初值進(jìn)行計數(shù)或開始定時。3.定時/計數(shù)器的應(yīng)用例1例2定時/計數(shù)器初值在初始化過程中,要置入定時值或計數(shù)值的初值,這時要作一些計算。方法如下:設(shè)計數(shù)器的最大值為M(在不同的工作方式中,M可以為213,216或28),則置入的初值X可這樣來計算:

計數(shù)方式時:X=M—計數(shù)值

定時方式時:(M—X)·T=定時值,所以X=M—定時值/T。其中T為計數(shù)周期,它是單片機(jī)時鐘周期的12

倍。

定時/計數(shù)器初值當(dāng)時鐘周期為1/12MHZ時,計數(shù)周期為1us。在這種情況下,若定時器工作在方式0,則最大定時值213·X·1/12MHz(s)=8.192ms;若工作在方式1,則最大定時值為216·X·1/12MHz(s)=65.536ms例若單片機(jī)的頻率為12MHz,請計算2ms所需要的定時器初值。解:計數(shù)脈沖個數(shù)為2/0.001=2000若方式0,則計數(shù)初值為:213-2000=6192=1830HTH0=18H,TL0=30H若方式1,則計數(shù)初值為:216-2000=63536=F830HTH0=F8H,TL0=30H方法1:用延時程序?qū)崿F(xiàn)2mS的延時。

UP:SETBP1.0;拉高P1.0LCALLD1MS;

調(diào)用延時1ms子程序CLRP1.0;拉低P1.0LCALLD1MS;調(diào)用延時1ms子程序SJMPUP;繼續(xù)循環(huán)例1使P1.0輸出一個周期為2mS的方波。方法2:用T0定時2mS,查詢TF0

①確定工作方式方式0②計算初值E018H③編程

MOVTMOD,#00H;

定時器0工作方式0SETBTR0;啟動計數(shù)器LOOP:MOVTH0,#0E0H;初始化計數(shù)初值

MOVTL0,#18H;初始化計數(shù)初值

JNBTF0,$;查詢定時到?

CPLP1.0;P1.0反相

CLRTF0;清除溢出標(biāo)志位

SJMPLOOP;繼續(xù)循環(huán)例1使P1.0輸出一個周期為2mS的方波。例1使P1.0輸出一個周期為2mS的方波。方法3:用T0定時2mS,中斷。

ORG0000H;

復(fù)位中斷向量

LJMPMAIN;

轉(zhuǎn)到主程序

ORG000BH;

定時器0中斷向量

LJMPAT0;

轉(zhuǎn)到中斷服務(wù)程序處

MAIN:MOVTMOD,#00H;采用定時器T0工作方式0MOVTH0,#0E0H;初始化計數(shù)初值(高8位)

MOVTL0,#18H;初始化計數(shù)初值(低5位)

SETBEA;開放全局中斷總允許位

SETBET0;開放定時器T0中斷總允許位

SETBTR0;啟動定時器T0SJMP$;原地踏步

AT0:MOVTMOD,#00H;采用定時器T0工作方式0MOVTH0,#0E0H;初始化計數(shù)初值(高8位)

MOVTL0,#18H;初始化計數(shù)初值(低5位)

CPLP1.0;P1.0反相

RETI;中斷返回欲產(chǎn)生周期為2秒的方波,定時器T0必須能定時1秒,這個值已經(jīng)超過了定時器的最大定時時間。為此,我們只有采用定時器定時和軟件計數(shù)相結(jié)合的方法才能解決問題。例2使P1.1輸出一個周期為2S的方波。

ORG0000HLJMPMAINORG000BHLJMPAT0

MAIN:

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論