4.2定時計數(shù)器資料_第1頁
4.2定時計數(shù)器資料_第2頁
4.2定時計數(shù)器資料_第3頁
4.2定時計數(shù)器資料_第4頁
4.2定時計數(shù)器資料_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、模塊模塊4 4 定時與中斷系統(tǒng)定時與中斷系統(tǒng)4.2 4.2 定時定時/ /計數(shù)器計數(shù)器定時定時/計數(shù)器計數(shù)器 單片機之所以在工業(yè)控制中得到大量應(yīng)用,就是在于它有獨特的定時、計數(shù)功能。89C51單片機內(nèi)部有兩個16位可編程的定時/計數(shù)器,即定時/計數(shù)器T0和T1。它們既有定時功能又有計數(shù)功能,通過適當(dāng)?shù)卦O(shè)置與它們有關(guān)的特殊功能寄存器,可以選擇啟用定時功能或計數(shù)功能。定時器的初步認(rèn)識單片機工作的基本時序單片機工作的基本時序 (1 1) 振蕩周期振蕩周期: : 也稱也稱時鐘周期時鐘周期, , 是指為單片機提供是指為單片機提供時鐘脈沖信號的振蕩源的周期,實驗板上為時鐘脈沖信號的振蕩源的周期,實驗板上為

2、11.0592MHZ11.0592MHZ。 (2 2) 狀態(tài)周期狀態(tài)周期: : 每個狀態(tài)周期為時鐘周期的每個狀態(tài)周期為時鐘周期的 2 2 倍倍, , 是振蕩周期經(jīng)二分頻后得到的。是振蕩周期經(jīng)二分頻后得到的。 (3 3) 機器周期機器周期: : 一個機器周期包含一個機器周期包含 6 6 個狀態(tài)周期個狀態(tài)周期S1S6, S1S6, 也就是也就是 12 12 個時鐘周期個時鐘周期。 在一個機器周期內(nèi)在一個機器周期內(nèi), , CPUCPU可以完成一個獨立的操作??梢酝瓿梢粋€獨立的操作。(4 4) 指令周期指令周期: : 它是指它是指CPUCPU完成一條操作所需的全完成一條操作所需的全部時間。部時間。 每

3、條指令執(zhí)行時間都是有一個或幾個機器每條指令執(zhí)行時間都是有一個或幾個機器周期組成。周期組成。MCS - 51 MCS - 51 系統(tǒng)中系統(tǒng)中, , 有單周期指令、雙周有單周期指令、雙周期指令和四周期指令。期指令和四周期指令。 定時器就是用來進行定時的。定時器內(nèi)部有一個寄定時器內(nèi)部有一個寄存器存器,我們讓它開始計數(shù)后,這個寄存器的值每經(jīng)寄存器的值每經(jīng)過一個機器周期就會加過一個機器周期就會加1 1一次一次,因此,我們可以把機器周期理解為定時器的計數(shù)周期。我們的秒表,每經(jīng)過一秒,數(shù)字加1,而這個定時器就是每過一個機器周期的時間,也就是12/11059200秒,數(shù)字加1。圖 定時/計數(shù)器的結(jié)構(gòu) 一、定時

4、一、定時/計數(shù)器的結(jié)構(gòu)計數(shù)器的結(jié)構(gòu) 定時定時/計數(shù)器的實質(zhì)是加計數(shù)器的實質(zhì)是加1計數(shù)器(計數(shù)器(16位),由高位),由高8位和低位和低8位兩個寄存器組成。位兩個寄存器組成。TMOD是定時是定時/計數(shù)器的工作方式寄存計數(shù)器的工作方式寄存器,確定工作方式和功能;器,確定工作方式和功能;TCON是控制寄存器,控制是控制寄存器,控制T0、T1的啟動和停止及設(shè)置溢出標(biāo)志的啟動和停止及設(shè)置溢出標(biāo)志。 一一 定時定時/計數(shù)器的結(jié)構(gòu)和工作原理計數(shù)器的結(jié)構(gòu)和工作原理二、定時二、定時/計數(shù)器的工作原理計數(shù)器的工作原理 加加1計數(shù)器計數(shù)器輸入的計數(shù)脈沖有兩個來源輸入的計數(shù)脈沖有兩個來源,一個是由一個是由系統(tǒng)的時鐘振

5、蕩器輸出脈沖經(jīng)系統(tǒng)的時鐘振蕩器輸出脈沖經(jīng)12分頻后送來;一個分頻后送來;一個是是T0或或T1引腳輸入的外部脈沖源。每來一個脈沖引腳輸入的外部脈沖源。每來一個脈沖計數(shù)器加計數(shù)器加1,當(dāng)加到計數(shù)器為全,當(dāng)加到計數(shù)器為全1時,再輸入一個脈時,再輸入一個脈沖就使計數(shù)器回零,且計數(shù)器的溢出使沖就使計數(shù)器回零,且計數(shù)器的溢出使TCON中中TF0或或TF1置置1,向,向CPU發(fā)出中斷請求(定時發(fā)出中斷請求(定時/計數(shù)計數(shù)器中斷允許時)。如果定時器中斷允許時)。如果定時/計數(shù)器工作于定時模計數(shù)器工作于定時模式,則表示定時時間已到;如果工作于計數(shù)模式,式,則表示定時時間已到;如果工作于計數(shù)模式,則表示計數(shù)值已滿

6、。則表示計數(shù)值已滿。 可見,由溢出時計數(shù)器的值減去計數(shù)初值才是加可見,由溢出時計數(shù)器的值減去計數(shù)初值才是加1計數(shù)器的計數(shù)值計數(shù)器的計數(shù)值。 圖4.4 定時/計時器的工作原理框圖 小提示小提示單片機雖然具有對外來脈沖計數(shù)的功能,但并不是任意頻率的脈沖都可直接計數(shù),單片機的晶振頻率限制了所測計數(shù)脈沖的最高頻率最高頻率。計數(shù)脈沖來自相應(yīng)的外部輸入引腳T0(P3.4)或T1(P3.5),CPU確認(rèn)一次脈沖負(fù)跳沿需要花兩個機器周期,即24個振蕩周期,因此外部計數(shù)脈沖的最高頻率為晶振頻率的1/24。例如選用12 MHz頻率的晶振,則最高可輸入500 kHz的外部脈沖。3. 定時定時/計數(shù)器的方式寄存器和控

7、制寄存器計數(shù)器的方式寄存器和控制寄存器單片機在使用定時/計數(shù)器功能時,通過對兩個與定時/計數(shù)器有關(guān)的寄存器(方式寄存器TMOD和控制寄存器TCON)中的內(nèi)容進行設(shè)置,從而達到對定時/計數(shù)器進行控制的目的。TMOD用于確定定時用于確定定時/計數(shù)器的工作方式和功能;計數(shù)器的工作方式和功能;TCON用于用于控制控制T0、T1的啟動、停止和設(shè)置溢出標(biāo)志等。的啟動、停止和設(shè)置溢出標(biāo)志等。1) 方式寄存器方式寄存器TMODTMOD的格式如下:TMOD的高4位用于設(shè)置定時器T1,低4位用于設(shè)置定時器T0。 (1) GATE:門控制位:門控制位。GATE=0:軟件啟動方式,定時/計數(shù)器的啟動與停止僅受TCON

8、寄存器中TR0或TR1的控制;GATE=1:硬件軟件共同啟動方式,定時/計數(shù)器的啟動與停止由TCON中的TR0或TR1和外部中斷引腳(P3.2)或(P3.3)共同控制。(2) C/:功能模式選擇位:功能模式選擇位。C/=0:定時:定時功能模式;C/=1:計數(shù)計數(shù)功能模式。(3) M1、M0:工作方式選擇位。:工作方式選擇位。定時/計數(shù)器有4種工作方式,可由M1M0來設(shè)定 INT0INT1TTT2) 控制寄存器控制寄存器TCONTCON的的格式如下:格式如下:TCON的高的高4位用于定時位用于定時/計數(shù)器計數(shù)器;低低4位用于外部中斷位用于外部中斷。各對應(yīng)位的含義如表所示。 8051單片機的定時/

9、計數(shù)器有四種工作方式,它們分別是工作方式03。1. 工作方式工作方式0設(shè)置M1M0為00,則定時器工作于方式0,此時為13位的定時/計數(shù)器。其邏輯結(jié)構(gòu)如圖4.5所示。以T0為例,定時/計數(shù)器T1的結(jié)構(gòu)和操作與定時/計數(shù)器T0相同。此方式下,16位寄存器(TH0和TL0)只用13位,就是TH0的8位和TL0的低5位,其中TL0的高3位沒有用。C/=0時,計數(shù)脈沖來自于內(nèi)部時鐘脈沖12分頻的機器周期脈沖;C/=1時,計數(shù)脈沖來自于外部事件脈沖輸入引腳T0(P3.4)。啟動控制由TR0、GATE和共同決定,GATE=0時,或門被TT4.2.2 定時定時/計數(shù)器的工作方式計數(shù)器的工作方式封鎖,信號無效

10、,TR0直接控制定時/計數(shù)器T0的啟動和停止;GATE=1時,或門被打開,和TR0共同控制定時/計數(shù)器T0的啟動和停止。在加1脈沖的作用下開始加1計數(shù),當(dāng)TL0的低5位計滿后向TH0進一位,直到把TH0也計滿,向溢出標(biāo)志位TF0進位(稱硬件置位TF0)。TH0、TL0可設(shè)置初值,并從設(shè)置的初值開始加法計數(shù),直到溢出,所設(shè)置的初值不同,計數(shù)值就不同。當(dāng)初值為0時,就有最大的計數(shù)值M=213=8192。INT0INT0圖4.5 定時/計數(shù)器T0方式0邏輯結(jié)構(gòu)圖 2. 工作方式工作方式1設(shè)置M1M0為01,則定時器工作于方式1,此時為16位的定時/計數(shù)器。其邏輯結(jié)構(gòu)如圖4.6所示。此方式下,16位寄

11、存器(TH0和TL0)全部用上。在加1脈沖的作用下開始加1計數(shù),當(dāng)TL0的8位計滿后向TH0進一位,直到把TH0也計滿,向溢出標(biāo)志位TF0進位。最大的計數(shù)值M=216=65 536。圖4.6 定時/計數(shù)器T0方式1邏輯結(jié)構(gòu)圖 3. 工作方式工作方式2設(shè)置M1M0為10,則定時器工作于方式2,此時為初值自動重載的8位定時/計數(shù)器。其邏輯結(jié)構(gòu)如圖4.7所示。此方式下,TL0作為8位加1計數(shù)器使用,TH0作為初值寄存器使用,兩者由軟件在初始化時賦相同的初值。在加1脈沖的作用下開始加1計數(shù),當(dāng)TL0的8位計滿后,向溢出標(biāo)志位TF0進位。同時發(fā)出重裝載信號,硬件電路自動將TH0中的初值裝入TL0中,使8

12、位計數(shù)器TL0又從初值重新開始計數(shù)。最大的計數(shù)值M=28=256。 圖4.7 定時/計數(shù)器T0方式2邏輯結(jié)構(gòu)圖 4. 工作方式工作方式3設(shè)置M1M0為11,則定時器工作于方式3,工作方式3僅對T0有意義。此時定時器T0被分成兩個互相獨立工作的8位計數(shù)器TH0和TL0。其邏輯結(jié)構(gòu)如圖4.8所示。TL0既能用于定時,又能用于計數(shù),它占用T0的控制位、引腳和中斷源,包括、GATE、TR0、TF0、T0(P3.4)引腳和 (P3.2)引腳;TH0只能用于定時功能,不能對外部事件計數(shù),它占用T1的控制位TF1和TR1,同時還占用了T1的中斷源,其啟動和關(guān)閉僅受TR1控制。最大的計數(shù)值M=28=256。T

13、C/INT0圖4-8 定時/計數(shù)器T0方式2的邏輯結(jié)構(gòu)圖小提示小提示定時器T0工作在方式3時,原則上定時器T1仍可設(shè)置為方式02,但由于TR1、TF1和T1中斷源均被T0占用,使T1的功能受限,只能用在不需要中斷功能和啟??刂频膱龊?。此時T1僅有控制位切換其定時或計數(shù)功能模式,計數(shù)溢出時只能將溢出送入串行口。在這種情況下,T1一般設(shè)置為方式2,用作串行口波特率發(fā)生器。方式3適用于要求增加一個額外的8位定時器的場合。 定時/計數(shù)器是單片機應(yīng)用系統(tǒng)中的重要組成部件,其工作方式的靈活應(yīng)用對提高編程技巧、減輕CPU負(fù)擔(dān)和簡化外圍電路有很大好處。1. 定時定時/計數(shù)器的初始化計數(shù)器的初始化由于89C51

14、的定時/計數(shù)器是可編程的,即它的功能是由軟件編程確定的,因此一般在使用定時/計數(shù)器前需對其進行初始化,使其按設(shè)定的功能工作。1) 基本步驟(1) 確定T0和T1的工作方式,對TMOD賦值。(2) 計算初值,并將初值寫入TH0、TL0或TH1、TL1。(3) 根據(jù)需要開放中斷,中斷方式時,對IE賦值;查詢方式時,此步驟沒有。(4) 對TR0或TR1置位,啟動定時/計數(shù)器工作。三三 定時定時/計數(shù)器的應(yīng)用計數(shù)器的應(yīng)用2) 計算初值X(1) 計數(shù)功能:X=最大計數(shù)值N-計數(shù)值n(2) 定時功能:X=最大計數(shù)值N-t/T,其中t為定時時間;T為機器周期?!纠?】 選擇T0方式0用于定時,實現(xiàn)在P3.6

15、上輸出頻率為1 kHz的方波,晶振頻率fosc=12 MHz。分析:1 kHz的方波信號其周期為1 ms,只要使P3.6每隔半個周期(即500 s)取反一次,即可得到輸出頻率為1 kHz的方波。因而T0的定時時間為500 s,可選方式0和方式1,因定時時間不長,這里取方式0即可,M1M0=00。定時/計數(shù)器用于定時,所以=0;在此用軟件啟動T0,所以GATE=0。T1這里不用,方式字可任意設(shè)置,一般取0。故TMOD=0 x00。TC/66osc131212T10 s1sf12 102500X76921111000001100B1機器周期TH=11110000B=0 xf0TL=00001100

16、B=0 x0c2. 定時定時/計數(shù)器的應(yīng)用計數(shù)器的應(yīng)用【例2】 單片機系統(tǒng)晶體振蕩器的頻率為12 MHz,利用定時/計數(shù)器0實現(xiàn)在P3.6引腳上輸出周期為500 s的方波。分析:要在P3.6引腳上輸出周期為500 s的方波,只要每半個周期即250 s取反一次即可,因此只要利用定時/計數(shù)器實現(xiàn)定時250 s,定時時間到取反就可以實現(xiàn)。利用T0讓其在工作方式2下實現(xiàn)定時,對應(yīng)TMOD=0X01,TH0=TL0=256-250=6。程序如下:#includesbit P3_6=P36; void main( ) TMOD=0 x02; / T0工作于方式2,用于定時TH0=6; / 設(shè)置定時/計數(shù)器

17、0的計數(shù)初值TL0=6;P3_6=1;TR0=1; / 啟動定時while(1) if(TF0=1) / 判斷定時時間到了沒有P3_6=!P3_6; / 定時時間到了,波形取反TF0=0; / 查詢方式下用軟件將溢出標(biāo)志位清零 程序如下程序如下:#includesbit P3_6=P36; void timer0 ();void main( ) TMOD=0 x02; / T0工作于方式2,用于定時 TR0=1; / 啟動定時 While(1) P3_6=1; void timer0 (); P3_6=0; / 定時時間到了,波形取反 void timer0 (); void timer0 (

18、) / 定義定時函數(shù) TH06; / 設(shè)置定時/計數(shù)器0的計數(shù)初值,以確定定時時間250 us TL06;while(TF0=0) ; / 判斷定時時間250 us到了沒有,沒有到則等待 TF0=0; / 溢出標(biāo)志清零 【例3】 一交通路口設(shè)紅、黃、綠三盞交通燈,當(dāng)紅燈亮2 s后,黃燈亮400 ms,綠燈亮1 s,試用單片機模擬交通燈控制。分析:單片機采用發(fā)光二極管模擬交通燈控制,即利用P1.0P1.2分別接紅燈(LED0)、黃燈(LED1)、綠燈(LED2)三個發(fā)光二極管,電路如圖所示。問題是這里用到三個不同定時時間(2 s、400 ms、1 s),是不是每個定時時間都編寫不同的定時程序?其實不需要,可以采用軟件定時器的方式,即找到這幾個定時時間的公約數(shù)如50 ms,利

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論