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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

會計學1第六講-定時器軟件編程例:編制一個延時2mS的子程序。

D2MS:MOVR7,#2D2MS0:MOVR6,#250DJNZR6,$DJNZR7,D2MS0RET例:統(tǒng)計開關按動次數,并存于30H單元。

MOV30H,#0UP:JBP1.0,$JNBP1.0,$INC30HSJMPUP第1頁/共18頁可編程定時/計數器

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

5.2MCS51單片機內部的定時/計數器

5.2.1定時/計數器結構5.2.2定時/計數器工作方式5.2.3定時/計數器應用第3頁/共18頁

5.2.1定時/計數器結構

MCS51單片機內有2個獨立的16位的可編程定時/計數器T0和T1。它們的結構相似。T0的結構如圖所示:振蕩器÷12C/T=0C/T=1&+加1計數器TF0合/斷T0TR0GATE0INT0TCONTMODTH0TL0TH1TL1第4頁/共18頁

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

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

T0溢出中斷標志位。當T0計數溢出時,TF0=1。在允許中斷的情況下,CPU響應T0中斷,轉向T0中斷服務程序,此時由硬件自動將TF0清0。該標志位可由軟件查詢,也可用軟件清0或置1。TR0:為T0啟動控制位。當TR0=1時,啟動T0;TR0=0時,關閉T0。該位由軟件進行設置。TF0:

T0溢出中斷標志位。當T0計數溢出時,TF0=1。在允許中斷的情況下,CPU響應T0中斷,轉向T0中斷服務程序,此時由硬件自動將TF0清0。該標志位可由軟件查詢,也可用軟件清0或置1。TR0:為T0啟動控制位。當TR0=1時,啟動T0;TR0=0時,關閉T0。該位由軟件進行設置。第6頁/共18頁振蕩器÷12C/T=0C/T=1&+加1計數器TF0合/斷T0TR0GATE0INT0

MCS-51單片機內部有兩個16位的定時/計數器T0和T1。每個定時/計數器占用兩個特殊功能寄存器:

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

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

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

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

在方式1下,定時/計數器T0和T1的方式1都是相同的。以下僅以T0為例。T0構成一個16位的計數器,由TH0的8位和TL0的8位組成,滿計數值為216。

T0啟動后立即加1計數,當TL0計數溢出時向TH0進位,TH0計數溢出則對相應的溢出標志位TF0置位,以此作為定時器溢出中斷標志。當單片機進入中斷服務程序時,由內部硬件自動清除該標志。TH0TL0方式1計數器第10頁/共18頁振蕩器÷12C/T=0C/T=1&+TF0合/斷T0TR0GATE0INT0

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

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

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

計數方式時:X=M—計數模值

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

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

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

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

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

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

AT0:MOVTMOD,#00HMOVTH0,#0E0HDJNZR7,AT1CPLP1.0MOVR7,#50AT1:RETI例如:我們可以在主程序中設定一個初值為20的軟件計數器和使T0定時50ms。這樣,每當T0定時到50ms時CPU就響應它的溢出中斷請求,從而進入它的中斷服務程序。在中斷服務程序中,CPU先使軟件計數器減1,然后判斷它是否為零。若為零,則說明1S時間到,完成所需操作后返回主程序;若不為零,則說明1S時間未到,不進行任何操作,直接返回主程序。第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等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論