第六講-定時(shí)器_第1頁
第六講-定時(shí)器_第2頁
第六講-定時(shí)器_第3頁
第六講-定時(shí)器_第4頁
第六講-定時(shí)器_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

會(huì)計(jì)學(xué)1第六講-定時(shí)器軟件編程例:編制一個(gè)延時(shí)2mS的子程序。

D2MS:MOVR7,#2D2MS0:MOVR6,#250DJNZR6,$DJNZR7,D2MS0RET例:統(tǒng)計(jì)開關(guān)按動(dòng)次數(shù),并存于30H單元。

MOV30H,#0UP:JBP1.0,$JNBP1.0,$INC30HSJMPUP第1頁/共18頁可編程定時(shí)/計(jì)數(shù)器

有的控制系統(tǒng)是按時(shí)間間隔來進(jìn)行控制的,如定時(shí)的溫度檢測(cè)等。雖然可以利用延遲程序來取得定時(shí)的效果,但這會(huì)降低CPU的工作效率。如果能用一個(gè)可編程的實(shí)時(shí)時(shí)鐘,以實(shí)現(xiàn)定時(shí)或延時(shí)控制,則CPU不必通過等待來實(shí)現(xiàn)延時(shí),就可以提高CPU的效率。另外也有些控制是按計(jì)數(shù)的結(jié)果來進(jìn)行的,因此在微機(jī)控制系統(tǒng)中常使用可編程的硬件定時(shí)/計(jì)數(shù)器。現(xiàn)在有很多專門用作定時(shí)/計(jì)數(shù)器的接口芯片。單片機(jī)內(nèi)帶有硬件定時(shí)/計(jì)數(shù)器可以簡(jiǎn)化系統(tǒng)設(shè)計(jì)。不論是獨(dú)立的定時(shí)器芯片還是單片機(jī)內(nèi)的定時(shí)器,都有以下特點(diǎn):1.定時(shí)/計(jì)數(shù)器可以有多種工作方式,可以是計(jì)數(shù)方式也可以是定時(shí)方式等等。2.計(jì)數(shù)器模值是可變的,當(dāng)然計(jì)數(shù)的最大值是有一定限制的,這取決于計(jì)數(shù)器的位數(shù)。計(jì)數(shù)的最大值也就限制了定時(shí)的最大值。3.可以按照規(guī)定的定時(shí)或計(jì)數(shù)值,當(dāng)定時(shí)的時(shí)間到或者計(jì)數(shù)終止時(shí),發(fā)出中斷申請(qǐng),以便實(shí)現(xiàn)定時(shí)或計(jì)數(shù)控制。除了上述共同特點(diǎn)外,各種定時(shí)器還會(huì)有各自的特點(diǎn),各自的工作方式和控制方式。第2頁/共18頁

5.2MCS51單片機(jī)內(nèi)部的定時(shí)/計(jì)數(shù)器

5.2.1定時(shí)/計(jì)數(shù)器結(jié)構(gòu)5.2.2定時(shí)/計(jì)數(shù)器工作方式5.2.3定時(shí)/計(jì)數(shù)器應(yīng)用第3頁/共18頁

5.2.1定時(shí)/計(jì)數(shù)器結(jié)構(gòu)

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

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

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

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

T0溢出中斷標(biāo)志位。當(dāng)T0計(jì)數(shù)溢出時(shí),TF0=1。在允許中斷的情況下,CPU響應(yīng)T0中斷,轉(zhuǎn)向T0中斷服務(wù)程序,此時(shí)由硬件自動(dòng)將TF0清0。該標(biāo)志位可由軟件查詢,也可用軟件清0或置1。TR0:為T0啟動(dòng)控制位。當(dāng)TR0=1時(shí),啟動(dòng)T0;TR0=0時(shí),關(guān)閉T0。該位由軟件進(jìn)行設(shè)置。第6頁/共18頁振蕩器÷12C/T=0C/T=1&+加1計(jì)數(shù)器TF0合/斷T0TR0GATE0INT0

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

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

T1由TH1和TL1兩個(gè)8位計(jì)數(shù)器組成,字節(jié)地址分別是8DH和8BH。用于存放定時(shí)或計(jì)數(shù)的初值。當(dāng)計(jì)數(shù)器工作時(shí),其值隨計(jì)數(shù)脈沖做加1變化。計(jì)數(shù)寄存器TH0TL0第7頁/共18頁由于T0由TL0(低8位)和TH0(高8位)組成;T1由TH和THl組成。所以T0、T1都是16位計(jì)數(shù)器。但是若將它們?cè)O(shè)置成不同的工作方式,其計(jì)數(shù)長度(最大值)和計(jì)數(shù)方式都可變化。內(nèi)部定時(shí)/計(jì)數(shù)器一共有四種工作方式,由TMOD的相關(guān)位設(shè)置。

5.2.2定時(shí)/計(jì)數(shù)器的工作方式GATE1C/T1M11M10GATE1C/T1M11M10M1和M2:兩位用來確定To(T1)的具體工作模式。M1、M2的四種組合剛好與四種工作模式對(duì)應(yīng)。定時(shí)/計(jì)數(shù)器工作模式如下:M1M0模式說明00方式013位定時(shí)/計(jì)數(shù)器(TH高8位加上TL中的低5位)01方式116位定時(shí)/計(jì)數(shù)器10方式2自動(dòng)重裝初值的8位定時(shí)/計(jì)數(shù)器11方式3模式3只針對(duì)T0,T0分成兩個(gè)獨(dú)立的8位定時(shí)/計(jì)數(shù)器;T1無模式3方式0方式1方式2方式3第8頁/共18頁振蕩器÷12C/T=0C/T=1&+TF0合/斷T0TR0GATE0INT0在方式0下,T0構(gòu)成一個(gè)13位的計(jì)數(shù)器,由TH0的8位和TL0的低5位組成,TL0的高3位未用,滿計(jì)數(shù)值為213。

T0啟動(dòng)后立即加1計(jì)數(shù),當(dāng)TL0的低5位計(jì)數(shù)溢出時(shí)向TH0進(jìn)位,TH0計(jì)數(shù)溢出則對(duì)相應(yīng)的溢出標(biāo)志位TF0置位,以此作為定時(shí)器溢出中斷標(biāo)志。當(dāng)單片機(jī)進(jìn)入中斷服務(wù)程序時(shí),由內(nèi)部硬件自動(dòng)清除該標(biāo)志。TH0D5方式0×××D4D3D2D1D0TL0當(dāng)選擇了定時(shí)或計(jì)數(shù)工作方式后,定時(shí)/計(jì)數(shù)脈沖卻不一定能到達(dá)計(jì)數(shù)器輸入端,只有當(dāng)控制開關(guān)合上時(shí),計(jì)數(shù)脈沖才能到達(dá)計(jì)數(shù)器輸入端,開始加1計(jì)數(shù)??刂崎_關(guān)閉合的條件如下:①GATE=0時(shí),開關(guān)的打開、合上取決于TR0,只要TR0是1,開關(guān)就合上,計(jì)數(shù)脈沖得以暢通無阻,而如果TR0等于0則開關(guān)打開,計(jì)數(shù)脈沖無法通過,因此定時(shí)/計(jì)數(shù)是否工作,只取決于TR0。②GATE=1時(shí),控制開關(guān)不僅要由TR0來控制,而且還要受到引腳的控制,只有TR0為1,且INT0引腳也是高電平,開關(guān)才合上,計(jì)數(shù)脈沖才得以通過。計(jì)數(shù)器第9頁/共18頁振蕩器÷12C/T=0C/T=1&+TF0合/斷T0TR0GATE0INT0

在方式1下,定時(shí)/計(jì)數(shù)器T0和T1的方式1都是相同的。以下僅以T0為例。T0構(gòu)成一個(gè)16位的計(jì)數(shù)器,由TH0的8位和TL0的8位組成,滿計(jì)數(shù)值為216。

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

在方式2下,定時(shí)/計(jì)數(shù)器T0和T1的方式1都是相同的。以下僅以T0為例。TH0和TL0被當(dāng)作兩個(gè)8位計(jì)數(shù)器,計(jì)數(shù)過程中,TH0寄存8位初值并保持不變,由TL0進(jìn)行8位計(jì)數(shù)。當(dāng)?shù)?位計(jì)數(shù)溢出時(shí),除了可產(chǎn)生中斷申請(qǐng)外,還將TH0中保存的內(nèi)容向TL0重新裝人,以便于重新計(jì)數(shù),而TH0中的初值仍然保留,以便下次再行對(duì)TL0進(jìn)行重裝。方式2對(duì)于連續(xù)計(jì)數(shù)比較有利。這時(shí)不需要在溢出后用軟件重新裝入計(jì)數(shù)初值,而是可以自動(dòng)裝入,但此時(shí)計(jì)數(shù)的長度將受到很大的限制,只有28=256次。TH0TL0方式2計(jì)數(shù)器第11頁/共18頁振蕩器÷12C/T=0C/T=1&+TF0合/斷T0TR0GATE0INT0方式3只適用于定時(shí)/計(jì)數(shù)器T0。這種工作方式下,定時(shí)/計(jì)數(shù)器T0被拆成2個(gè)獨(dú)立的定時(shí)/計(jì)數(shù)器來用。

TL0方式3計(jì)數(shù)器振蕩器÷12TF1TH0計(jì)數(shù)器TR1合/斷在方式3下,T0和T1的工作有很大的不同。⑴若把T1置于方式3,則Tl停止計(jì)數(shù),定時(shí)器T1保持其內(nèi)容不變。所以,一般不會(huì)把T1置于方式3。⑵若把T0置于方式3,則16位計(jì)數(shù)器拆開為兩個(gè)獨(dú)立工作的8位計(jì)數(shù)器TL0和TH0。但這兩個(gè)8位計(jì)數(shù)器的工作是有差別的。首先是工作方式的不同:①對(duì)TL0來說它既可以按計(jì)數(shù)方式工作,也可以按定時(shí)方式工作,②而TH0則只能按定時(shí)方式工作。另外是控制方式的不同。一般情況下,當(dāng)定時(shí)/計(jì)數(shù)器T0處于工作方式3時(shí),定時(shí)/計(jì)數(shù)器T1可工作為方式0、1、2,但由于此時(shí)其已沒有控制通斷和溢出中斷的功能,T1只能作為串行口的波特率發(fā)生器使用,或不需要中斷的場(chǎng)合。第12頁/共18頁

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

計(jì)數(shù)方式時(shí):X=M—計(jì)數(shù)模值

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

UP:SETBP1.0LCALLD2MSCLRP1.0LCALLD2MSSJMPUP方法2:用T0定時(shí)2mS,查詢TF0①確定工作方式方式0②計(jì)算初值E018H③編程

MOVTMOD,#00HSETBTR0LOOP:MOVTH0,#0E0HMOVTL0,#18HJNBTF0,$CPLP1.0

CLRTF0SJMPLOOP例1使P1.0輸出一個(gè)周期為2mS的方波。方法3:用T0定時(shí)2mS,中斷。

ORG0000HLJMPMAINORG000BHLJMPAT0MAIN:MOVTMOD,#00HMOVTH0,#0E0HMOVTL0,#18HSETBEASETBET0SETBTR0SJMP$AT0:MOVTMOD,#00HMOVTH0,#0E0HCPLP1.0RETI第15頁/共18頁欲產(chǎn)生周期為2秒的方波,定時(shí)器T0必須能定時(shí)1秒,這個(gè)值已經(jīng)超過了定時(shí)器的最大定時(shí)時(shí)間。為此,我們只有采用定時(shí)器定時(shí)和軟件計(jì)數(shù)相結(jié)合的方法才能解決問題。例2使P1.1輸出一個(gè)周期為2S的方波。

ORG0000HLJMPMAINORG000BHLJMPAT0MAIN:MOVTMOD,#01HMOVTH0,#0B1HMOVTL0,#0E0HMOVIE,#82HSETBTR0MOVR7,#50SJMP$

AT0:MOVTMOD,#00HMOVTH0,#0E0HDJNZR7,AT1CPLP1.0MOVR7,#50AT1:RETI例如:我們可以在主程序中設(shè)定一個(gè)初值為20的軟件計(jì)數(shù)器和使T0定時(shí)50ms。這樣,每當(dāng)T0定時(shí)到50ms時(shí)CPU就響應(yīng)它的溢出中斷請(qǐng)求,從而進(jìn)入它的中斷服務(wù)程序。在中斷服務(wù)程序中,CPU先使軟件計(jì)數(shù)器減1,然后判斷它是否為零。若為零,則說明1S時(shí)間到,完成所需操作后返回主程序;若不為零,則說明1S時(shí)間未到,不進(jìn)行任何操作,直接返回主程序。第16頁/共18頁

ORG0000HAJMPMAINORG000BHAJMPTIMEORG001BHAJMPDISP

MAIN:

MOVIE,#8AHMOVTMOD,#11HMOVSP,#70HMOVR3,#0MOVR4,#0MOVR5,#0MOVR6,#0MOVTL1,#30HMOVTH1,#0F8HMOVTL0,#0B0HMOVTH0,#3CHMOVR7,#20SETBTR1SETBTR0MOVR0,#0SJMP$例3分秒表TIME:

MOVTL0,#0B0HMOVTH0,#3CHDJNZR7,TIMEFMOVR7,#20INCR3CJNER3,#0AH,TIMEFMOV

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論