單片機原理及應(yīng)用:第6章 單片機的定時器計數(shù)器_第1頁
單片機原理及應(yīng)用:第6章 單片機的定時器計數(shù)器_第2頁
單片機原理及應(yīng)用:第6章 單片機的定時器計數(shù)器_第3頁
單片機原理及應(yīng)用:第6章 單片機的定時器計數(shù)器_第4頁
單片機原理及應(yīng)用:第6章 單片機的定時器計數(shù)器_第5頁
已閱讀5頁,還剩57頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 第6章 單片機的定時器/計數(shù)器6.1 定時/計數(shù)器的結(jié)構(gòu)與工作原理6.2 定時器的控制6.3 定時/計數(shù)器的工作方式6.4 定時/計數(shù)器的編程和應(yīng)用6.1 定時定時/計數(shù)器的結(jié)構(gòu)與工作原理計數(shù)器的結(jié)構(gòu)與工作原理 6.1.1 定時定時/計數(shù)器的基本原理計數(shù)器的基本原理 6.1.2 定時定時/計數(shù)器的結(jié)構(gòu)計數(shù)器的結(jié)構(gòu)6.2 定時器的控制6.3 定時/計數(shù)器的工作方式6.4 定時/計數(shù)器的編程和應(yīng)用第6章單片機的定時器/計數(shù)器純軟件純軟件定時/計數(shù)方法:定時空循環(huán)預(yù)定周次,等待預(yù)定時間計數(shù)讀取I/O口電平,統(tǒng)計變化次數(shù)基本思路基本思路:由CPU統(tǒng)計狀態(tài)變化次數(shù),待預(yù)定結(jié)果出現(xiàn)后結(jié)束統(tǒng)計。delay

2、(unsigned int time ) unsigned int j = 0; for(;time0;time-) for(j=0;j125;j+);存在問題存在問題:占用過多CPU機時第6章單片機的定時器/計數(shù)器單片機軟硬件聯(lián)合軟硬件聯(lián)合定時/計數(shù)方法:等待CPU響應(yīng)系統(tǒng)時鐘脈沖加1計數(shù)器溢出標(biāo)志溢出定時器外來信號脈沖加1計數(shù)器溢出標(biāo)志溢出等待CPU響應(yīng)計數(shù)器外來信號脈沖加1計數(shù)器溢出標(biāo)志溢出等待CPU響應(yīng)系統(tǒng)時鐘脈沖K定時/計數(shù)器定時器的本質(zhì)是計數(shù)器定時器的本質(zhì)是計數(shù)器(對時鐘脈沖計數(shù)對時鐘脈沖計數(shù)),計數(shù)器則是對外來脈沖計數(shù),計數(shù)器則是對外來脈沖計數(shù).第6章單片機的定時器/計數(shù)器計數(shù)器

3、的溢出空間可隨計數(shù)初值改變定時時間tt =(計數(shù)器最大空間-計數(shù)初值)機器周期 =(2n-a)12/fosc (s)基本工作原理:t與與n、a、fosc三個因素有關(guān)三個因素有關(guān) TFx(X = 0、1)Tx端(每個機器周期產(chǎn)生一個計數(shù)脈沖) 第6章單片機的定時器/計數(shù)器邏輯開關(guān) 功能: = 0定時器方式, = 1計數(shù)器方式 TCTCTC第6章單片機的定時器/計數(shù)器 TFx(X = 0、1)Tx端計數(shù)值N = (計數(shù)器滿計數(shù)值 - 計數(shù)初值) = (2 n a ) N與與n、a兩個因素有關(guān)兩個因素有關(guān)6.1 定時定時/計數(shù)器的結(jié)構(gòu)與工作原理計數(shù)器的結(jié)構(gòu)與工作原理 6.1.1 定時定時/計數(shù)器的基

4、本原理計數(shù)器的基本原理 6.1.2 定時定時/計數(shù)器的結(jié)構(gòu)計數(shù)器的結(jié)構(gòu)6.2 定時器的控制6.3 定時/計數(shù)器的工作方式6.4 定時/計數(shù)器的編程和應(yīng)用第6章單片機的定時器/計數(shù)器定時/計數(shù)器的結(jié)構(gòu)第6章單片機的定時器/計數(shù)器2個16位計數(shù)器T0 (TH0、TL0)和T1 (TH1、TL1)加1計數(shù)器2個控制寄存器TCON和TMOD管理計數(shù)器的運行2個外部引腳T0(P3.4)和T1(P3.5)接入外部脈沖6.1 定時/計數(shù)器的結(jié)構(gòu)與工作原理6.2 定時器定時器/計數(shù)器的控制計數(shù)器的控制6.3 定時/計數(shù)器的工作方式6.4 定時/計數(shù)器的編程和應(yīng)用第6章單片機的定時器/計數(shù)器定時/計數(shù)器的控制關(guān)

5、系(以T1為例)門控位門控位GATE=0-允許TR1啟動計數(shù)器GATE=1-允許INT1啟動計數(shù)器啟動控制位啟動控制位TR1=1-啟動計數(shù)器TR1=0-停止計數(shù)器外部中斷外部中斷1參與定時器的啟停管理中斷請求標(biāo)志位中斷請求標(biāo)志位TF1=1-請求TR1=0-復(fù)位 T1第6章單片機的定時器/計數(shù)器TCTC模式選擇位模式選擇位 =0-定時 =1-計數(shù)定時器方式寄存器TMOD定時器控制寄存器TCON第6章單片機的定時器/計數(shù)器T0TF1TR1TF0TR0IE1IT1IE0IT08FH8DH8CH8BH8AH89H88HTCON8EH(88H)定時器控制位外部中斷控制位 T1 T0 TF0 TR0 T0

6、腳INT0注意注意,系統(tǒng)上電默認(rèn)值為TCON = 0,則默認(rèn)狀態(tài)應(yīng)為:TR0和TR1均為關(guān)閉狀態(tài)、電平中斷觸發(fā)方式、沒有外部中斷請求第6章單片機的定時器/計數(shù)器GATEC/TM1M0GATEC/TM1M0D7D5D4D3D2D1D0TMODD6(89H) T1 T0/C T /C T T1方式選擇位方式選擇位00-方式001-方式110-方式2T1工作狀態(tài) T1 T0 TF0 TR0 T0腳INT0T0方式選擇位方式選擇位00-方式001-方式110-方式211-方式3T0工作狀態(tài)第6章單片機的定時器/計數(shù)器GATEC/TM1M0GATEC/TM1M0D7D5D4D3D2D1D0TMODD6(

7、89H) T1 T0/C T /C T 注意注意:TMOD只能以字節(jié)方式進行初始化例如例如,設(shè)置T0為定時器方式1,允許TR0啟動; T1為計數(shù)器方式0,允許INT1啟動。則 TMOD = 1100 0001B =0 xc1又如又如,系統(tǒng)上電默認(rèn)值為TMOD = 0,則默認(rèn)狀態(tài)應(yīng)為:T0和TI均為定時器方式0,允許TR0、TR1啟動。第6章單片機的定時器/計數(shù)器6.1 定時/計數(shù)器的結(jié)構(gòu)與工作原理6.2 定時器/計數(shù)器的控制6.3 定時定時/計數(shù)器的工作方式計數(shù)器的工作方式6.4 定時/計數(shù)器的編程和應(yīng)用第6章單片機的定時器/計數(shù)器第6章單片機的定時器/計數(shù)器M1M0工作方式功能說明00110

8、101012313位定時/計數(shù)器16位定時/計數(shù)器8位自動重裝定時/計數(shù)器3種定時/計數(shù)器關(guān)系T0工作方式注意注意:T0有4種工作方式,每種工作方式都有定時和計數(shù)2種方式。T1只有3種工作方式(T0的方式3中占用了T1的部分資源)。M1M0工作方式功能說明00101001213位定時/計數(shù)器16位定時/計數(shù)器8位自動重裝定時/計數(shù)器T1工作方式學(xué)習(xí)順序:方式1方式2 方式0 方式3 (1) 方式1定時時間:t = (216- a)12/fosc (s)使用16位定時/計數(shù)器(THx+TLx)(M0 M1為01組合時)第6章單片機的定時器/計數(shù)器定時范圍為165,536 s(65ms)。 最大定

9、時時間(a=0,fosc =12MHz):t = 216(s) = 65536 (s)定時方式定時方式最大計數(shù)值:N = 65536 (脈沖)第6章單片機的定時器/計數(shù)器計數(shù)值: N = (216 a ) 由于檢測一個負(fù)跳變需要2個機器周期,即24個振蕩周期,故最高計數(shù)頻率= 。oscf241計數(shù)方式計數(shù)方式故,對于12MHz晶振,最大外部脈沖的頻率為0.5MHz 。實例實例1 1 設(shè)單片機的fosc=12MHz,采用T0定時方式1在P1.0腳上輸出周期為2ms的方波。虛擬示波器第6章單片機的定時器/計數(shù)器分析分析:周期為2ms的方波由2個半周期為1ms的正負(fù)脈沖組成方波輸出原理:定時1ms后

10、將端口輸出電平取反。2ms1msTH0 = 0 xfc TL0 = 0 x181ms定時的計數(shù)初值應(yīng)為:a = 216 t* fos / 12 = 216 1000* 12/ 12 = 64536 = 0 xfc18 注意注意:需要不斷重裝計數(shù)初值。第6章單片機的定時器/計數(shù)器(1)查詢方式查詢方式#include sbit P1_0 = P10;main () TMODTMOD = = 0 x010 x01; /設(shè)置設(shè)置T T0 0定時方式定時方式1 1(0000 0001B) TR0=1; /啟動T0 for(;) TH0TH0 = = 0 0 xfcxfc; /裝載計數(shù)初值裝載計數(shù)初值

11、TL0TL0 = = 0 0 x18x18; do while(!TF0)do while(!TF0); /等待等待TF0TF0溢出溢出 P1_0 =!P1_0; /定時時間到P1.0反相 TF0TF0 = = 0 0; /TF0TF0標(biāo)志標(biāo)志清清0 0 T0第6章單片機的定時器/計數(shù)器圖6.14 實例1仿真波形圖第6章單片機的定時器/計數(shù)器(2)中斷方式中斷方式#include sbit P1_0=P10;timer0 () interrupt 1 timer0 () interrupt 1 /T0中斷函數(shù) P1_0 = !P1_0; /P1.0取反 TH0 = 0 xfc;TH0 = 0

12、xfc; /裝載計數(shù)初值 TL0 = 0 x18;TL0 = 0 x18;main () TMOD = 0 x01TMOD = 0 x01; /T0定時方式1TH0 = 0 xfc;TH0 = 0 xfc;/裝載計數(shù)初值 TL0 = 0 x18;TL0 = 0 x18; EA=1; EA=1; /開總中斷 ET0=1; ET0=1; /開T0中斷 TR0=1; TR0=1; /啟動T0while(1);注意注意:中斷響應(yīng)后系統(tǒng)可自動將TFx標(biāo)志位清0第6章單片機的定時器/計數(shù)器小結(jié):使用定時/計數(shù)器的步驟強調(diào)強調(diào):TMOD的設(shè)置只能以字節(jié)形式給出T0 (1)設(shè)置TMOD確定定時/計數(shù)器的工作狀

13、態(tài)第6章單片機的定時器/計數(shù)器T0定時計數(shù)01230123T1定時計數(shù)012012 (2)計算計數(shù)初值產(chǎn)生期望的定時間隔計數(shù)初值 a = 216- tfosc/12 (t 65536 s)THx = a / 256 TLx = a % 256 裝載計數(shù)初值:第6章單片機的定時器/計數(shù)器3)確定采用何種方式處理溢出結(jié)果若是查詢方式采用條件判斷語句若是中斷方式中斷初始化設(shè)置和中斷服務(wù)程序:do while (!TFx) ; / x=0或1 第6章單片機的定時器/計數(shù)器ETx =1; /開定時x中斷,x=0或1EA = 1; /開總中斷tx_srv () interrupt n n /n=1或3 4

14、)啟動定時器: TR0 = 1 或 TR1= 1 5)進行定時或計數(shù)結(jié)束后的其它工作6)為下次定時/計數(shù)做準(zhǔn)備(清TFx標(biāo)志+重裝載計數(shù)初值) 若是中斷方式,則無需軟件清TFx標(biāo)志位; 若是查詢方式,需要軟件清除TFx標(biāo)志位。第6章單片機的定時器/計數(shù)器 采用8位計數(shù)器位計數(shù)器,延時時間 t = (28-a)12/fosc (微秒) 12MHz時的最大定時量為256s; 可自動重裝載計數(shù)初值可自動重裝載計數(shù)初值(TLx溢出后, THx數(shù)值可自動裝入TLx); 因沒有裝載計數(shù)初值造成的定時延誤,方式2定時精度相對較高。(2) 方式2第6章單片機的定時器/計數(shù)器(1)查詢方式查詢方式#includ

15、e sbit P1_0 = P10;main() TMOD = 0 x00 x02 2; THTH0 0= = TLTL0 = 0 = 0 x060 x06; TR0=1; for(;) do while(!TF0); P1_0 =!P1_0; TF0 = 0; (2)中斷方式中斷方式#include sbit P1_0=P10;timer0 () interrupt 1 P1_0 = !P1_0; main() TMOD = 0 x0 0 x02 2; TH0 = TL0 = 0 x06;TH0 = TL0 = 0 x06; EA= ET0 = 1; TR0=1; while(1);實例實例

16、2 2 采用T0定時方式2在P1.0口輸出周期為0.5ms的方波(設(shè)fosc=12MHz)。分析分析:計數(shù)初值TL0= 256-250*12/12= 0 x06,TMOD = 0 x02第6章單片機的定時器/計數(shù)器周期為0.5ms方波第6章單片機的定時器/計數(shù)器第6章單片機的定時器/計數(shù)器實例實例3 將第4章實例5“計數(shù)顯示器”中的軟件查詢法進行按鍵檢測改用T0計數(shù)器方式2,并以中斷方式編程?!窘饨狻吭瓐D中按鍵是由I/O口P3.7引腳接入的,本實例需要將其改由T0(P3.4)引腳接入。 第6章單片機的定時器/計數(shù)器分析分析:將T0設(shè)置為計數(shù)器方式2,設(shè)法使其在1個外部脈沖到來時就能溢出(即計數(shù)

17、溢出周次為1)產(chǎn)生中斷請求。計數(shù)初值為: a = 2 8 1 = 255 = 0 xff初始化TMOD = 0000 0110B = 0 x06第6章單片機的定時器/計數(shù)器實例3參考程序第6章單片機的定時器/計數(shù)器運行效果(3)工作方式0使用13位位的定時/計數(shù)器(THi7-0+TLi4-0)定時時間 t = (213 - a)12/fosc (s)計數(shù)初值 a = 213 - tfosc/1212MHz時的最大定時量t=213s = 8.192ms第6章單片機的定時器/計數(shù)器解:計數(shù)初值a=213-500012/12=3192= 1100 0111 1000BTH0TL00 1 1 0 0

18、0 1 1 0 0 0 1 1 0 0 0 6 3 1 8 H 實例實例4 計算T0方式0定時5ms的計數(shù)初值a(設(shè)fosc=12MHz)由于方式0的TL0高3位未用(一般填0) ,因此 a= 0110 0011 0001 1000 = 6318H即,TH0 = 0 x63; TL0 = 0 x18;第6章單片機的定時器/計數(shù)器第6章單片機的定時器/計數(shù)器除計數(shù)器位數(shù)不同外,方式0與方式1的邏輯結(jié)構(gòu)并無差異。方式0采用13位計數(shù)器是為了與早期產(chǎn)品MCS-48單片機兼容。方式0的初值計算比較麻煩,一般采用方式1替代。方式0方式1(4)方式)方式33種組合狀態(tài)T1仍可設(shè)置為方式02;通常將T1設(shè)定

19、為定時方式2(作為波特率發(fā)生器使用)第6章單片機的定時器/計數(shù)器TH0+TF1+TR1組成的8位定時器TL0+TF0+TR0組成的8位定時/計數(shù)器T1組成的無中斷功能的定時器特點特點:方式3下T0可有2個具有中斷功能的8位定時器6.1 定時/計數(shù)器的結(jié)構(gòu)與工作原理6.2 定時器/計數(shù)器的控制6.3 定時/計數(shù)器的工作方式6.4 定時定時/計數(shù)器的編程和應(yīng)用計數(shù)器的編程和應(yīng)用第6章單片機的定時器/計數(shù)器應(yīng)用: 定時器用于定時控制,或作為分頻器發(fā)生各種不同頻率的方波; 計數(shù)器用于外部脈沖統(tǒng)計或外部中斷源擴充; 復(fù)雜應(yīng)用需要將定時與計數(shù)結(jié)合起來。第6章單片機的定時器/計數(shù)器實例實例5 5 由P3.4

20、口輸入一個外部低頻窄脈沖信號。當(dāng)該信號出現(xiàn)負(fù)跳變時,由P3.0口輸出寬度為500s的同步脈沖,如此往復(fù)。要求據(jù)此設(shè)計一個波形展寬程序(fosc= 6MHz)。第6章單片機的定時器/計數(shù)器1)將T0設(shè)置為1 1次計數(shù)方式次計數(shù)方式2 2,初值設(shè)為0 xff。這樣P3.4一旦發(fā)生負(fù)跳變T0就會產(chǎn)生溢出;2)查詢TF0標(biāo)志位。當(dāng)TF0=1時將T0設(shè)置為500500 s s定時方式定時方式2 2,初值a為0 x06(=256-5006/12),同時使P3.0輸出低電平;3)查詢TF0標(biāo)志位。待T0再次溢出后使P3.0輸出高電平,然后將T0設(shè)置為1 1次計數(shù)方式次計數(shù)方式2 2,如此往復(fù)進行。分析分析:

21、可以采取如下做法:第6章單片機的定時器/計數(shù)器T0實例5參考程序第6章單片機的定時器/計數(shù)器實例5仿真運行效果第6章單片機的定時器/計數(shù)器P3.0P3.4實例實例6 6 采用10MHz晶振,在P1.0腳上輸出周期為2.5s,高電平占空比為20%的脈沖信號。分析分析:10兆晶振,方式1最大定時為54.613ms;可以采用定時中斷與軟件計數(shù)聯(lián)合定時中斷與軟件計數(shù)聯(lián)合法:利用定時中斷進行中斷次數(shù)統(tǒng)計;若取10ms產(chǎn)生定時,則2.5s =250次中斷之和;則500ms(20%占空比)相當(dāng)于50次中斷之和。a = 216-1000012/10=0 xd1202.5s0.5s第6章單片機的定時器/計數(shù)器實

22、例6參考程序第6章單片機的定時器/計數(shù)器實例6仿真運行效果第6章單片機的定時器/計數(shù)器實例實例7 7 采用定時中斷控制流水燈,實現(xiàn)每秒1位,自上而下循環(huán)功能(fosc=12MHz)。第6章單片機的定時器/計數(shù)器分析:分析:可以利用20次50ms的定時中斷方案,計數(shù)初值為: a = 65536-5000012/12 = 0 x3cb0第6章單片機的定時器/計數(shù)器中斷函數(shù)的任務(wù)過多,不利于實時控制。如何減少中斷函數(shù)任務(wù)?新方案新方案:中斷函數(shù)中僅做中斷次數(shù)統(tǒng)計和計數(shù)初值重入,控制操作改在主函數(shù)中進行。實例實例6 6的問題:的問題:第6章單片機的定時器/計數(shù)器實例7參考程序?qū)嵗?運行效果第6章單片機

23、的定時器/計數(shù)器實例實例8 8 測量從P3.2(INT0)輸入的正脈沖的寬度,測量結(jié)果以BCD碼形式存放在片內(nèi)RAM 40H開始的單元處(設(shè)40H地址存放個位,系統(tǒng)時鐘為12MHz,被測脈沖信號周期不超過100ms) 。0第6章單片機的定時器/計數(shù)器分析分析:GATE=TR0=1時允許INT0的脈沖控制定時器的啟停,則根據(jù)T0先啟動、再關(guān)閉后的計數(shù)值可算出被測脈沖寬度。INT0端信號T0中的脈沖數(shù)實例8參考程序第6章單片機的定時器/計數(shù)器INT0端信號T0中的脈沖數(shù)0第6章單片機的定時器/計數(shù)器實例8電路 脈沖設(shè)置(100ms)第6章單片機的定時器/計數(shù)器在在Proteus軟件中實現(xiàn)軟件中實現(xiàn)C51源碼級調(diào)試源碼級調(diào)試的方法:形成OMF (absolute objectmodule format files,絕對目標(biāo)文件) 格式文件。 omf文件設(shè)置omf文件加載第6章單片機的定時器/計數(shù)器啟動調(diào)試omf文件窗口第6章單片機的定時器/計數(shù)器片內(nèi)RAM窗口實例8的運行結(jié)果第6章單片機的定時器/計數(shù)器結(jié)果:計數(shù)值為50000脈沖脈寬值為50ms。運行到光標(biāo)實例8小結(jié)1、測量未知脈沖寬度的方法利用INTx引腳接入待測脈沖設(shè)置Tx定時方式 THx和TL

溫馨提示

  • 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

提交評論