




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、3:326.1 6.1 定時器概述定時器概述6.2 6.2 定時器的控制定時器的控制 6.3 6.3 定時器的四種模式及應用定時器的四種模式及應用 6.4 6.4 思考題與習題思考題與習題第六章第六章 定時器及應用定時器及應用6.1 6.1 定時器概述定時器概述6.1.1 89C51定時器結構6.1.2 89C51定時器功能3:326.1.1 89C516.1.1 89C51定時器結構定時器結構 89C51定時器的結構如 圖6-1 所示。 有兩個16位的定時器/計數器,即定時器0(T0)和定時器1(T1)。都是16位加1計數器。 T0由兩個8位特殊功能寄存器TH0和TL0構成;T1由TH1和T
2、L1構成。3:323:326.1.2 89C516.1.2 89C51定時器功能定時器功能 每個定時器都可由軟件設置為 定時工作方式或 計數工作方式。由特殊功能寄存器TMOD和TCON所控制。 定時器工作不占用CPU時間,除非定時器/計數器溢出,才能中斷CPU的當前操作。 定時器/計數器有四種工作模式。其中模式0-2對T0和T1是一樣的,模式3對兩者不同。3:32定時工作方式定時工作方式定時器計數89C51片內振蕩器輸出經12分頻后的脈沖,即每個機器周期使定時器(T0或T1)的數值加1直至計滿溢出。當89C51采用12MHz晶振時,一個機器周期為1s,計數頻率為1MHz。3:32計數工作方式計
3、數工作方式 通過引腳T0(P3.4)和T1(P3.5)對外部脈沖信號計數。當輸入脈沖信號產生由1至0的下降沿時計數器的值加1。 CPU檢測一個檢測一個1至至0的跳變需要兩個機器周期,的跳變需要兩個機器周期,故最高計數頻率為振蕩頻率的故最高計數頻率為振蕩頻率的1/24。 為了確保某個電平在變化之前被采樣一次,要求電平保持時間至少是一個完整的機器周期。 對輸入脈沖信號的基本要求如 圖6-2所示。3:326.2 6.2 定時器的控制定時器的控制 6.2.1 工作模式寄存器 TMOD 6.2.2 控制器寄存器 TCON3:326.2.1 6.2.1 工作模式寄存器工作模式寄存器 TMODTMOD TM
4、OD用于控制T0和T1的工作模式。 TMOD不能位尋址,只能用字節設置定時器的工作模式,低半字節設置T0,高半字節設置T1。 89C51系統復位時,TMOD的所有位被清0。 TMOD各位的定義格式如 圖6-3 所示。 TMOD各位定義及具體的意義歸納如 圖6-4所示。3:32圖圖6-3 工作模式寄存器工作模式寄存器TMOD的位定義的位定義定時器定時器T1定時器定時器T0TMOD(89H) D7 D6 D5 D4 D3 D2 D1 D0GATE C/ T M1 M03:32GATE C/ T M1 M0 M1和M0操作模式控制位。 兩位可形成四種編碼,對應于四種模式。M1 M0工工作作模模式式功
5、功能能描描述述0 0模模式式 013 位位計計數數器器0 1模模式式 116 位位計計數數器器1 0模模式式 2自自動動再再裝裝入入 8 位位計計數數器器1 1模模式式 3定定時時器器 0:分分成成二二個個 8 位位計計數數器器 定定時時器器 1:停停止止計計數數表表6-1 M1,M0控制的四種工作模式控制的四種工作模式3:32 C/T計數器/定時器方式選擇位。 C/T=0,設置為定時方式。定時器計數89C51片內脈沖,即對機器周期計數。 C/T=1,設置為計數方式。計數器的輸入來自引腳T0(P3.4)或T1(P3.5)端的外部脈沖 。 3:32 GATE門控位。 GATE=0,只要用軟件使T
6、R0(或TR1)置1就可以啟動定時器,而不管INT0(或INT1)的電平是高還是低。 GATE=1,只有INT0(或INT1)引腳為高電平且由軟件使TR0(或TR1)置1時,才能啟動定時器工作。3:323:326.2.2 控制器寄存器控制器寄存器 TCON TCON除可字節尋址外,各位還可位尋址可位尋址。 89C51系統復位時,TCON的所有位被清0。 TCON各位的定義格式如 圖6-5所示。 TCON各位定義及具體的意義歸納如 圖6-6所示。TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0TCON(88H) 8FH 8EH 8DH 8CH 8BH 8AH 89H 88H圖圖6-
7、5 控制寄存器控制寄存器TCON的位定義的位定義3:32 TF1(TCON.7) T1溢出標志位。 當T1溢出時,由硬件自動使中斷觸發器TF1置1,并向CPU申請中斷。 當CPU響應中斷進入中斷服務程序后,TF1被硬件自動清0。TF1也可以用軟件清0。3:32 TF0(TCON.5) T0溢出標志位。 其功能和操作情況同TF1。 當T0溢出時,由硬件自動使中斷觸發器TF0置1,并向CPU申請中斷。 當CPU響應中斷進入中斷服務程序后,TF1被硬件自動清0。TF1也可以用軟件清0。3:32 TR1(TCON.6)T1運行控制位。 可通過軟件置1(TR1=1)或清0(TR1=0)來啟動或 關閉 T
8、1工作。 在程序中用指令“SETB TR1”使TR1位置1,定時器T1便開始計數。用“CLR TR1”使TR1清0,定時器停止工作。3:32 TR0(TCON.4)T0運行控制位。 其功能和操作情況同TR1。 可通過軟件置1(TR0=1)或清0(TR0=0)來啟動或 關閉 T0。 在程序中用指令“SETB TR0”使TR0位置1,定時器T0便開始計數。用“CLR TR0”使TR0清0,定時器停止工作。3:32 IE1,IT1,IE0,IT0(TCON.3TCON.0) 外部中斷INT1,INT0請求及請求方式控制位。前一章已經講過。 3:323:326.3 定時器的四種模式及應用定時器的四種模
9、式及應用 6.3.1 模式 0 及其應用6.3.2 模式 1 及其應用6.3.3 模式 2 及其應用6.3.4 模式 3 及其應用6.3.5 綜合應用舉例6.3.1 模式模式 0 及其應用及其應用一、模式一、模式 0 0 的邏輯電路結構的邏輯電路結構T0T0在模式在模式 0 0 的邏輯電路結構如的邏輯電路結構如圖圖6-76-7所示。(所示。(T1T1相同)相同)二、模式二、模式 0 0 工作特點工作特點三、模式三、模式 0 0 的應用舉例的應用舉例3:32二、模式二、模式 0 工作特點工作特點在這種模式下,在這種模式下,1616位寄存器(位寄存器(TH0TH0和和TL0TL0)只用了)只用了。
10、其中。其中TL0TL0的高的高3 3位未用,其余位未用,其余5 5位為整個位為整個1313位的低位的低5 5為,為,TH0TH0占高占高8 8位。當位。當TL0TL0的低的低5 5位溢位溢出時,向出時,向TH0TH0進位;進位;TH0TH0溢出時,向中斷標志溢出時,向中斷標志TF0TF0進位(硬件置位進位(硬件置位TF0TF0),),并申請中斷。并申請中斷。定時時間為:定時時間為: t=(2t=(21313T0T0初值初值) )振蕩周期振蕩周期1212用于計數工作方式時,計數長度為:用于計數工作方式時,計數長度為: L=(2L=(21313T0T0初值初值) )(個外部脈沖)(個外部脈沖) T
11、H0TL08位5位3:32三、模式三、模式 0 的應用舉例的應用舉例例6-1:設晶振為12MHz,試計算定時器T0工作于模式0時的最大定時時間T。解:當T0處于工作模式0時,加1計數器為13位。 因為:定時時間為:因為:定時時間為: t=(2t=(21313T0T0初值初值) )振蕩周期振蕩周期1212 最大定時時間為最大定時時間為“T0T0初值初值=0”=0”時。時。所以:所以:122T13 振振蕩蕩周周期期12101212613 ms192.81081926 3:32例6-2:設定時器T0用于定時10ms,晶振為6MHz。試確定T0初值。并編寫定時器T0初始化程序段。解:解:1 1)確定)
12、確定T0T0初值初值 當當T0處于工作模式處于工作模式0時,加時,加1計數器為計數器為13位。位。定時時間:定時時間:120T2(T13 振振蕩蕩周周期期初初值值)所以:所以:120T2(ms1013 振振蕩蕩周周期期初初值值)12106101020T6313 初初值值T0T0初值初值=3192=C78H=3192=C78H = =011000110110001111000 B11000 B即:(即:(TH0)=0110 0011 B=63H(高(高8位)位) (TL0)=1 1000 B=18H(低(低5位)位)3:32 TMOD的低四位為的低四位為T0的控制位的控制位 模式模式0:M1M0
13、=00, 定時器方式:定時器方式:C/T=0, 門控位不受門控位不受INT0的影響:的影響:GATE=0, 其余位:其余位:為為 0。 模式字為模式字為 TMOD=0000 0000 B=00H定時器定時器T1定時器定時器T0GATE C/ T M1 M0 GATEM1C/ TM0TMOD(89H) D7 D6 D5 D4 D3 D2 D1 D0解:解:2 2)確定確定TMOD的初值的初值3:32解:解:3 3)編寫定時器編寫定時器T0T0的初始化程序段的初始化程序段主程序:主程序: ORG 0100HORG 0100HMAIN: MOV SP,#60H MAIN: MOV SP,#60H ;
14、設堆棧指針;設堆棧指針 MOV TMOD,#00H MOV TMOD,#00H ;選擇工作模式;選擇工作模式 MOV TH0,#63HMOV TH0,#63H ;送初值;送初值 MOV TL0,#18HMOV TL0,#18H SETB TR0 SETB TR0 ;啟動定時;啟動定時 3:32例6-3:設定時器T1工作于模式0,晶振為6MHz。編程實現:每10ms時間P1.0取反的程序。解:解:1 1)確定)確定T1T1初值初值 T1處于工作模式處于工作模式0時,定時時間位時,定時時間位10ms(同例(同例2)。)。(TH1)=0110 0011 B=63H(高(高8位)位) (TL1)=1
15、1000 B=18H(低(低5位)位)121T2(T13 振振蕩蕩周周期期初初值值)定定時時時時間間:2 2)確定)確定TMODTMOD的初值的初值TMOD的高四位為T1的控制位 模式0:M1M0=00, 定時器方式:C/T=0, 門控位不受INT0的影響:GATE=0, 其余位:為 0。 模式字為 TMOD=0000 0000 B=00H3:32解:解:3 3)編寫程序)編寫程序初始化引導程序: ORG 0000HRESET: AJMP MAIN ; 跳過中斷服務程序區 ORG 001BH ;中斷服務程序入口 AJMP ITOP主程序: ORG 0100HMAIN: MOV SP,#60H
16、;設堆棧指針 MOV TMOD,#00H ;選擇工作模式 MOV TH1,#63H ;送初值 MOV TL1,#18H SETB P1.0 ;P1.0置1 SETB TR1 ;啟動定時 SETB ET1 ;T1開中斷 SETB EA ;CPU開中斷 HERE: AJMP HERE ;等待時間到,轉入中斷服務程序3:32中斷服務程序中斷服務程序 ORG 0150HITOP: MOV TL1,#18H;重新裝入初值 MOV TH1,#63H CPL P1.0 ;P1.0取反 RETI;中斷返回例例6-46-4:利用:利用T0T0的工作模式的工作模式0 0產生定時,在產生定時,在P1.0P1.0引腳
17、輸出周期為引腳輸出周期為10ms10ms的方波。設晶振頻率的方波。設晶振頻率foscfosc=12MHz=12MHz。編程實現其功能(。編程實現其功能(分別分別采用查詢方式和中斷方式采用查詢方式和中斷方式)。)。解: 要在P1.0引腳輸出周期為10ms的方波,只要使P1.0每隔5ms取反一次即可。 (1)選擇工作模式 T0的模式字為TMOD=00H,即: M1M0=00,C/T=0,GATE=0,其余位為0。(2)計算5ms定時T0的初值T = (213T0初值)(1/12)10-612 = 510-3 sT0初值 = 3192 D = C78 H = 01100011 11000 BT0的低
18、5位:11000 B=18H 即 (TL0)=18HT0的高8位:01100011 B=63H 即 (TH0)=63H 3:32(3)采用查詢方式的程序程序清單: ORG 0000HLJMPMAIN ;初始化引導程序ORG0080HMAIN:MOV TMOD,#00H ;設置T0為模式0 MOV TL0,#18H ;送初值 MOV TH0,#63HSETBP1.0 SETB TR0 ;啟動定時LP:JBC TF0,NEXT ;查詢定時時間到否 SJMP LPNEXT:MOV TL0,#18H ;重裝計數初值 MOV TH0,#63H CPL P1.0 ;取反 SJMP LP ;重復循環3:32
19、(4)采用定時器溢出中斷方式的程序 ORG 0000H ; 主程序RESET: AJMP MAIN ; 跳過中斷服務程序區 ORG 000BH;定時器T0中斷矢量 AJMP CTC0;轉入中斷服務程序 ORG 0030H MAIN:MOV TMOD,#00H;設置T0為模式0 MOV TL0,#18H ;送初值 MOV TH0,#63H SETB EA ;CPU開中斷 SETB ET0 ;T0中斷允許 SETB TR0 ;啟動定時 HERE:SJMP HERE ;等待中斷 ORG 0120H ;中斷服務程序 CTC0: MOV TL0,#18H ;重新裝入初值 MOV TH0,#63H CPL
20、 P1.0 ;P1.0取反 RETI;中斷返回3:32模式模式 0 的應用舉例的應用舉例完完6.3.2 模式模式 1 及其應用及其應用一、模式 1 的邏輯電路結構: T0在模式 1 的邏輯電路結構如 圖6-8所示。(T1相同)二、模式 1 工作特點三、模式 1 的應用舉例3:32二、模式二、模式 1 工作特點工作特點 該模式對應的是一個16位的定時器/計數器。 用于定時工作方式時,定時時間為:用于定時工作方式時,定時時間為: t=(2t=(21616T0T0初值初值) )振蕩周期振蕩周期1212 用于計數工作方式時,計數長度為:用于計數工作方式時,計數長度為: (2(21616T0T0初值初值
21、) )(個外部脈沖)(個外部脈沖)TH0TL08位8位3:32三、模式三、模式 1 的應用舉例的應用舉例例例6-56-5:設定時器:設定時器T0T0選擇工作模式選擇工作模式1 1的計數器工作方式,其的計數器工作方式,其計數器初值為計數器初值為FFFFFFFFH H,問此時定時器,問此時定時器T0T0的實際用途是什的實際用途是什么?么?解:因其初值為解:因其初值為FFFFHFFFFH,只要隨機外來一脈沖即可溢出,向,只要隨機外來一脈沖即可溢出,向CPUCPU申請中斷,故這一內部中斷源實質上已作為外部中申請中斷,故這一內部中斷源實質上已作為外部中斷源使用。因此此定時器斷源使用。因此此定時器T0T0
22、并不用于定時或計數。并不用于定時或計數。3:32例例6-66-6:設晶振為:設晶振為12MHz12MHz,試計算定時器,試計算定時器T0T0工作于模式工作于模式1 1時的最時的最大定時時間大定時時間T T。解:解:當當T0T0處于處于工作模式工作模式1 1時,加時,加1 1計數器為計數器為1616位位。 定時時間為: t=(216T0初值)振蕩周期12 最大定時時間為“T0初值=0”時。所以:122T16 振振蕩蕩周周期期12101212616 ms536.6510655366 3:32例例6-76-7:用定時器:用定時器T1T1產生一個產生一個50Hz50Hz的方波,由的方波,由 P1.1P
23、1.1輸出。使用程序查輸出。使用程序查詢方式,詢方式,foscfosc=6MHz=6MHz。解:1)確定定時器T1初值 方波周期 T = 1/50 = 0.02s = 20ms 用T1定時10ms,時間到P1.1引腳電平取反。121T2t16 振振蕩蕩周周期期初初值值)(定定時時時時間間:12t21T16 振振蕩蕩周周期期初初值值121061ms1021T616 初初值值H78EC605361T 初初值值(TH1TH1)=ECH=ECH,(,(TL1TL1)=78H=78H20ms10ms 10ms3:32解:解:2 2)確定工作模式寄存器)確定工作模式寄存器TMODTMOD的值的值 定時器T
24、1工作于模式1的定時器工作方式, 高四位:高四位: GATE=0,C/T=0,M1M0=01 ,低四位:取,低四位:取0。 (TMODTMOD)=0001 0000 B = 10H=0001 0000 B = 10H3)編程)編程 ORG 0000H LJMP START ORG 0080H START:MOV TMOD,#10H ;T1為模式1 MOV TL1,#78H ;送初值 MOV TH1,#0ECH SETB P1.1 ;P1.1置1 SETB TR1 ;啟動定時LOOP: JNB TF1,LOOP ;查詢定時時間到否 CLR TF1 ;產生溢出,清標志位 MOV TL1,#78H
25、;重新置初值 MOV TH1,#0ECH CPL P1.1 ;取反 SJMP LOOP ;重復循環3:32模式 1 的應用舉例完6.3.3 模式模式 2 及其應用及其應用一、模式一、模式 2 2 的邏輯電路結構的邏輯電路結構二、模式二、模式 2 2 工作特點工作特點三、模式三、模式 2 2 的應用舉例的應用舉例3:32一、模式一、模式 2 的邏輯電路結構的邏輯電路結構 T0T0在模式在模式 2 2 的邏輯電路結構如的邏輯電路結構如 圖圖6-96-9所示。(所示。(T1T1相同)相同) TL0TL0計數溢出時,不僅使溢出中斷標志位計數溢出時,不僅使溢出中斷標志位TF0TF0置置1 1,而且,而且
26、還自動把還自動把TH0TH0中的內容重新裝載到中的內容重新裝載到TL0TL0中。中。 TL0TL0用作用作8 8位計數器,位計數器,TH0TH0用以保存初值。用以保存初值。3:32二、模式二、模式 2 工作特點工作特點 該模式把該模式把TL0(TL1)TL0(TL1)配置成一個可以自動重裝載的配置成一個可以自動重裝載的8 8位定時器位定時器/ /計數器。計數器。 在程序初始化時,在程序初始化時,TL0TL0和和TH0TH0由軟件賦予相同的初值由軟件賦予相同的初值。 用于定時工作方式時,定時時間為: t=(28TL0初值)振蕩周期12 用于計數工作方式時,計數長度為:用于計數工作方式時,計數長度
27、為: (2(28 8TL0TL0初值初值) ) (個外部脈沖)(個外部脈沖) 該模式可省去軟件中重裝常數的語句,并可產生相該模式可省去軟件中重裝常數的語句,并可產生相當精確的定時時間,適合于作串行口波特率發生器當精確的定時時間,適合于作串行口波特率發生器。3:32三、模式三、模式 2 的應用舉例的應用舉例例6-8:當P3.4引腳(定時器T0的外部計數輸入端)上的電平發生負跳變時, 從P1.0輸出一個500s的同步脈沖。用查詢方式編程實現該功能,fosc=6MHz。3:32解:題目要實現的功能如 圖6-10 所示。 (1)確定TMOD值 門控位GATE=0,高四位取0,選T0為模式2(M1M0=
28、10), 首先為計數器工作方式(C/T=1):(TMOD)=0000 0110B=06H 當P3.4引腳上的電平發生負跳變時,T0計數器加1,溢出標志TF0置1; 然后改變T0為500s定時工作方式(C/T=0):(TMOD)=02H 當上面TF0=1時使P1.0輸出由1變為0。開始T0定時,到500s產生溢出,使P1.0輸出恢復高電平,T0又恢復外部事件計數方式。定時器定時器T1定時器定時器T0GATE C/ T M1 M0 GATEM1C/ TM0TMOD(89H) D7 D6 D5 D4 D3 D2 D1 D0(2)計算T0初值 T0T0工作在外部事件計數方式工作在外部事件計數方式: 題
29、目要求題目要求T0T0引腳出現一次外部事件時,引起引腳出現一次外部事件時,引起T0T0中斷。中斷。 所以:設計計數器初值為所以:設計計數器初值為FFHFFH,當計數器再加,當計數器再加1 1就溢出了。就溢出了。 即即: T0: T0初值初值+1=2+1=28 8 T0T0初值初值 = 2= 28 8 1=11111111B=0FFH1=11111111B=0FFH 即:(TH0)=(TL0)=0FFH T0 T0工作在定時工作方式:工作在定時工作方式: 因為晶振頻率為因為晶振頻率為6MHz6MHz,定時,定時500s500s。 所以:所以:(2(28 8T0T0初值初值) )2s=500s2s
30、=500s 得出:得出:T0T0初值初值 =6=06H=6=06H, 即:(TH0)=(TL0)=06H3:32(3)程序清單:ORG0000HLJMPSTARTORG0080HSTART:MOVTMOD,#06H;設置T0為模式2,外部計數方式 MOV TL0,#0FFH ;T0計數器初值 MOV TH0,#0FFH SETB TR0 ;啟動T0計數 LOOP1:JBC TF0,PTFO1 ;查詢T0溢出標志,TF0=1時轉,且清TF0=0 SJMP LOOP1 ; 等待T0溢出PTFO1:CLR TR0 ;停止計數 MOV TMOD,#02H ;設置T0為模式2,定時方式 MOV TL0,
31、#06H ;送初值,定時500s MOV TH0,#06H CLR P1.0 ; P1.0清0 SETB TR0 ;啟動定時500s LOOP2 :JBC TF0,PTFO2 ;查詢T0溢出標志,TF0=1時轉并清TF0=0 SJMP LOOP2 ;等待T0溢出中斷(定時時間到) PTFO2 :SETB P1.0 ; P1.0置1 CLR TR0 ;停止定時SJMP START ;轉向開始,重新等待T0引腳的脈沖3:32例6-8完例例6-96-9:利用定時器:利用定時器T1T1的模式的模式2 2對外部信號計數。要求每計滿對外部信號計數。要求每計滿100100次,將次,將 P1.0P1.0端取反
32、。端取反。解:(1)選擇模式 外部信號由T1(P3.5)引腳輸入,每發生一次負跳變計數器加1,每輸入100個脈沖,計數器發生溢出中斷,中斷服務程序將P1.0取反一次。 T1計數工作方式模式2的模式字為(TMOD)=60H。 T0不用時,TMOD的低4位可任取,但不能進入模式3,一般取0。3:32(2)計算T1的計數初值 X= 28 100=156=9CH 因此:TL1的初值為9CH,重裝初值寄存器TH1=9CH。(3)程序清單ORG0000HLJMPMAINORG 001BH ;中斷服務程序入口 CPL P1.0 RETI MAIN: MOV TMOD,#60H ;設置T1為模式2,外部計數方
33、式 MOV TL1,#9CH ;T1計數器初值 MOV TH1,#9CH MOV IE,#88H ; 定時器開中斷 SETB TR1 ;啟動T1計數 HERE:SJMP HERE ;等待中斷3:32模式 2 的應用舉例完6.3.4 模式模式 3 及其應用及其應用一、模式一、模式 3 3 的邏輯電路結構的邏輯電路結構工作模式3對T0和T1大不相同。1、T0模式3的邏輯電路結構2、T0模式3下T1的邏輯電路結構二、模式二、模式 3 3 的應用舉例的應用舉例3:321 1、T0T0模式模式3 3的邏輯電路結構的邏輯電路結構 T0模式3的邏輯電路結構如 圖6-11所示。 T0設置為模式3,TL0和TH
34、0被分成兩個相互獨立的8位計數器。 TL0: 用原T0的各控制位、引腳和中斷源,即C/T,GATE,TR0,TF0,T0(P3.4)引腳,INT0(P3.2)引腳。 TL0可工作在定時器方式和計數器方式。其功能和操作與模式0、模式1相同(只是8位)。 TH0: 只可用作簡單的內部定時功能。 TH0占用了定時器T1的控制位TR1和T1的中斷標志TF1,其啟動和關閉僅受TR1的控制。3:322 2、T0T0模式模式3 3下下T1T1的邏輯電路結構的邏輯電路結構 定時器T1無工作模式3狀態。在T0用作模式3時,T1仍可設置為模式02。 T0模式3下T1的邏輯電路結構如 圖6-12 所示。 由于TR1
35、和TF1被定時器T0占用,計數器開關K已被接通,此時,僅用T1控制位,C/T切換其定時或計數器工作方式就可使T1運行。當計數器溢出時,只能將輸出送入串行口或用于不需要中斷的場合。一般作波特率發生器3:32二、模式二、模式 3 的應用舉例的應用舉例例例6-106-10:設某用戶系統已使用了兩個外部中斷源,并置定時器:設某用戶系統已使用了兩個外部中斷源,并置定時器T1T1工作在模工作在模式式2 2,作串行口波特率發生器用。現要求再增加一個外部中斷源,并由,作串行口波特率發生器用。現要求再增加一個外部中斷源,并由P1.0P1.0引腳輸出一個引腳輸出一個5kHz5kHz的方波。的方波。FoscFosc
36、=12MHz.=12MHz.解:(1)工作模式 可設置T0工作在模式3計數器方式,把T0的引腳作附加的外部中斷輸入端,TL0的計數初值為FFH,當檢測到T0引腳電平出現由1至0的負跳變時,TL0產生溢出,申請中斷。 T0模式3下,TL0作計數用,而TH0用作8位的定時器,定時控制P1.0引腳輸出5kHz的方波信號。 3:32(2)計算初值TL0的計數初值為FFH。TH0的計數初值X為: P1.0方波周期T=1/(5kHz)=0.2ms=200s 用TH0作定時100s時, X=256-100 12/12=156(3)程序清單 MOV TMOD,#27H ;T0為模式3,計數方式, T1為模式2
37、,定時方式 MOV TL0,#0FFH ;TL0計數初值 MOV TH0,#156 ;TH0計數初值 MOV TL1,#data ;data是根據波特率,要求設置的常數(初值) MOV TH1,#data MOV TCON,#55H ;外中斷0,外中斷1邊沿觸發,啟動T0,T1 MOV IE,#9FH ; 開放全部中斷TL0溢出中斷服務程序(由000BH轉來)TL0INT:MOV TL0,#0FFH ;TL0重賦初值 (中斷處理) RETITH0溢出中斷服務程序(由001BH轉來)TH0INT:MOV TH0,#156 ;TH0重賦初值 CPL P1.0 ;P1.0取反輸出 RETI串行口及外
38、部中斷0,外部中斷1的服務程序略3:32模式3 的應用舉例完6.3.5 綜合應用舉例綜合應用舉例例6-11:設時鐘頻率為6MHz。編寫利用T0產生1s定時的程序。解:(1)定時器T0工作模式的確定模式0最長可定時16.384ms; 模式1最長可定時131.072ms; 模式2最長可定時512s;定時1s,可選用模式1,每隔100ms中斷一 次,中斷10次從而達到1s的定時。(2)求計數器初值X (216X)12/(6 106) =10010-3 s X=15536=3CB0H 因此:(TL0)=0B0H (TH0)=3CH(3)實現方法: 對于中斷10次計數,可使T0工作在計數方式,也可用循環
39、程序的方法實現。本例采用循環程序法。3:32(4)源程序清單 ORG0000H AJMP MAIN; 上電,轉向主程序 ORG 000BH ;T0的中斷服務程序入口地址 AJMP SERVE ;轉向中斷服務程序 ORG 0080H ;主程序MAIN : MOV SP,#60H ;設堆棧指針 MOV B,#0AH ;設循環次數 MOV TMOD,#01H;設置T0工作于模式1 MOV TL0,#0B0H;裝計數值低8位 MOV TH0,#3CH;裝計數值高8位 SETB TR0 ;啟動定時 SETB ET0;T0開中斷 SETB EA;CPU開中斷 SJMP $;等待中斷SERVE: MOV T
40、L0,#0B0H ;重新賦初值 MOV TH0,#3CH DJNZ B,LOOP ;B-1不為0,繼續定時 CLR TR0 ;1s定時到,停止T0工作LOOP: RETI ;中斷返回 END3:32 例6-11完例例6-126-12:設計實時時鐘程序。時鐘:設計實時時鐘程序。時鐘 就是以秒、分、時為單位進行計時。用定就是以秒、分、時為單位進行計時。用定時器與中斷的聯合應用時器與中斷的聯合應用。解:(1)實現時鐘計時的基本方法 計算計數初值。 時鐘計時的最小單位是秒,可把定時器的定時時間定為100ms,計數溢出10次即得到1秒;10次計數可用軟件方法實現。 假定使用定時器T0,以工作模式1進行1
41、00ms的定時。如fosc=6MHz,則計數初值X為: X=15536=3CB0H因此 : (TL0)=0B0H (TH0)=3CH 采用定時方式進行溢出次數的累計,計滿10次即得到秒計時。 設置軟件計數器初值為10,每100ms定時時間到溢出中斷,使軟件計數器減1,直到減到0,則1s到。3:32 從秒到分和從分到時的計時是通過累計和數值比較實現的。 設置幾個累加單元分別進行對1s,1min,1h進行計數。滿1s,秒位累加;滿60s,分位累加;滿60min,時位累加;滿24h全部累加單元清03:32(2)程序流程及程序清單 主程序流程如 圖所示。設設T1為模式為模式1設中斷次數設中斷次數清計時
42、單元清計時單元開中斷開中斷啟動啟動T1調用顯示子程序調用顯示子程序圖圖6-13 時鐘主程序流程時鐘主程序流程保護現場賦計數初值到1s?(32H)加1(32H)=60?(32H)清0(31H)加1(31H)=60?(31H)清0(30H)加1(30H)=24?(30H)清0恢復現場返回入口入口aaNNNNYYYY圖圖6-14 中斷服務程序流程圖中斷服務程序流程圖 中斷服務流程如 圖6-14所示。 源程序如下: ORG 0000H AJMP MAIN ; 上電,轉向主程序 ORG 001BH ;T1的中斷服務程序入口地址 AJMP SERVE ;轉向中斷服務程序 ORG 2000H ;主程序MAI
43、N: MOV SP,#60H ;設堆棧指針 MOV TMOD,#10H ;設置T1工作于模式1 MOV 20H,#0AH ;設循環次數 CLR A MOV 30H,A ;時單元清0 MOV 31H,A ;分單元清0 MOV 32H,A ;秒單元清0SETB ET1 ;T1開中斷 SETB EA ;CPU開中斷 MOV TL1,#0B0H ;裝計數值低8位 MOV TH1,#3CH ;裝計數值高8位 SETB TR1 ;啟動定時 SJMP $ ;等待中斷(可反復調用顯示子程序)3:32中斷服務程序: SERVE: PUSH PSW ;保護現場 PUSH ACC MOV TL1,#0B0H ;重新賦初值 MOV TH1,#3CH DJNZ 20H,RETUNT ;1s未到,返回 MOV 20H,#0AH ;重置中斷次數MOV A,#01H ADD A,32H ;“秒位”加1 DA A ;轉換為BCD碼 MOV
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 六一活動飾品活動策劃方案
- 六一游戲室活動方案
- 六一理財活動方案
- 六一粉絲活動策劃方案
- 六一節公司活動策劃方案
- 六一節慰問活動策劃方案
- 六一走進大自然活動方案
- 六一酒吧活動方案
- 六七十年代學生活動方案
- 六五環境日系列活動方案
- xx縣精神病醫院建設項目可行性研究報告
- ECMO技術參數要求
- 城市軌道交通供電技術442頁完整版教學課件匯總全書電子教案
- 高填深挖路基穩定性監控觀測方案
- 安全標準化現場評審所需資料清單(共14頁)
- 班組會議運作技巧ppt課件
- 鏈家房屋買賣合同范本(共10篇)
- 柱上變壓器臺與設備安裝標準
- 技術比武理論復習題(繼電保護)
- 鋸齒形板式熱水冷卻器的設計3.
- 科室醫療質量安全管理與持續改進記錄本模板.doc
評論
0/150
提交評論