第06章定時器-計數(shù)器ppt課件_第1頁
第06章定時器-計數(shù)器ppt課件_第2頁
第06章定時器-計數(shù)器ppt課件_第3頁
第06章定時器-計數(shù)器ppt課件_第4頁
第06章定時器-計數(shù)器ppt課件_第5頁
已閱讀5頁,還剩61頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、6.1 定時器定時器/計數(shù)器概述計數(shù)器概述6.2 定時器定時器/計數(shù)器的控制計數(shù)器的控制 6.3 定時器定時器/計數(shù)器的四種模式及應(yīng)用計數(shù)器的四種模式及應(yīng)用 6.4 思考題與習(xí)題思考題與習(xí)題第六章第六章 定時器定時器/計數(shù)器計數(shù)器6.1 定時器定時器/計數(shù)器概述計數(shù)器概述6.1.1 89S51定時器定時器/計數(shù)器結(jié)構(gòu)計數(shù)器結(jié)構(gòu)6.1.2 89S51定時器定時器/計數(shù)器功能計數(shù)器功能6.1.1 89S51定時器定時器/計數(shù)器結(jié)構(gòu)計數(shù)器結(jié)構(gòu) 89S51定時器定時器/計數(shù)器的結(jié)構(gòu)如計數(shù)器的結(jié)構(gòu)如 圖圖 所示。所示。 有兩個有兩個16位的定時器位的定時器/計數(shù)器,即定時器計數(shù)器,即定時器0T0和定時器

2、和定時器1T1),都是),都是16位加位加1計數(shù)器。計數(shù)器。 T0由兩個由兩個8位特殊功能寄存器位特殊功能寄存器TH0和和TL0構(gòu)成;構(gòu)成;T1由由TH1和和TL1構(gòu)成。構(gòu)成。2022-2-289S51定時器定時器/計數(shù)器結(jié)構(gòu)圖計數(shù)器結(jié)構(gòu)圖6.1.2 89S51定時器定時器/計數(shù)器功能計數(shù)器功能 每個定時器每個定時器/計數(shù)器都可由軟件設(shè)置為計數(shù)器都可由軟件設(shè)置為 定時工作定時工作方式或方式或 計數(shù)工作方式。由特殊功能寄存器計數(shù)工作方式。由特殊功能寄存器TMOD和和TCON所控制。所控制。 定時器定時器/計數(shù)器有四種工作模式。其中模式計數(shù)器有四種工作模式。其中模式0-2對對T0和和T1是一樣的,

3、模式是一樣的,模式3對兩者不同。對兩者不同。2022-2-2定時工作方式定時工作方式定時器計數(shù)定時器計數(shù)89S5189S51片內(nèi)振蕩器輸出經(jīng)片內(nèi)振蕩器輸出經(jīng)1212分頻后的分頻后的脈沖,即每個機(jī)器周期使定時器脈沖,即每個機(jī)器周期使定時器T0T0或或T1T1的數(shù)值的數(shù)值加加1 1直至計滿溢出。計數(shù)速率是直至計滿溢出。計數(shù)速率是fosc/12fosc/12。例:當(dāng)例:當(dāng)89S51采用采用12MHz晶振時,一個機(jī)器周晶振時,一個機(jī)器周期為期為1s,計數(shù)頻率為,計數(shù)頻率為1MHz。2022-2-2計數(shù)工作方式計數(shù)工作方式 通過引腳通過引腳T0P3.4和和T1P3.5能對間隔可能不能對間隔可能不相等的外

4、部脈沖進(jìn)行統(tǒng)計計數(shù)。當(dāng)達(dá)到所要求的計相等的外部脈沖進(jìn)行統(tǒng)計計數(shù)。當(dāng)達(dá)到所要求的計數(shù)值時數(shù)值時,單片機(jī)進(jìn)行相應(yīng)的操作。單片機(jī)進(jìn)行相應(yīng)的操作。 當(dāng)輸入脈沖信號產(chǎn)生由當(dāng)輸入脈沖信號產(chǎn)生由1至至0的下降沿時計數(shù)器的值的下降沿時計數(shù)器的值加加1。 CPU檢測一個檢測一個1至至0的跳變需要兩個機(jī)器周期,的跳變需要兩個機(jī)器周期,故最快計數(shù)速率是故最快計數(shù)速率是fosc/24。2022-2-2MCS-51T0 ( T1) 端口端口外部脈沖外部脈沖外部外部設(shè)備設(shè)備89S51定時定時/計數(shù)器的工作原理計數(shù)器的工作原理 (1):何時控制啟動計數(shù)器?):何時控制啟動計數(shù)器? 考慮:考慮: (2):如何控制是定時還是計

5、數(shù)?):如何控制是定時還是計數(shù)? (3):如何控制定時):如何控制定時/計數(shù)的長短?計數(shù)的長短?N位增量計數(shù)器位增量計數(shù)器TFN位初值寄存器位初值寄存器系統(tǒng)內(nèi)部系統(tǒng)內(nèi)部時鐘時鐘fosc/12啟動控制啟動控制 TR外部脈沖外部脈沖T0或或T1引腳引腳定時定時/計數(shù)計數(shù)控制控制C/T計數(shù)器溢出計數(shù)器溢出(中斷信號)(中斷信號)計數(shù)脈沖計數(shù)脈沖CPC/T=0C/T=1MCS-51單片機(jī)定時器單片機(jī)定時器/計數(shù)器模型計數(shù)器模型 由啟動控制開關(guān)由啟動控制開關(guān)TR來控制計數(shù)器是否計數(shù):來控制計數(shù)器是否計數(shù):當(dāng)當(dāng)TR=0時:計數(shù)器計數(shù)脈沖被斷開,所以停止工作;時:計數(shù)器計數(shù)脈沖被斷開,所以停止工作;當(dāng)當(dāng)TR

6、=1時:計數(shù)器的計數(shù)脈沖輸入端與信號源接通,時:計數(shù)器的計數(shù)脈沖輸入端與信號源接通, 計數(shù)器開始計數(shù)工作)。計數(shù)器開始計數(shù)工作)。 定時、計數(shù)方式由定時、計數(shù)方式由C/T控制??刂啤.?dāng)當(dāng)C/T=0時:多路器選擇的是系統(tǒng)時鐘時:多路器選擇的是系統(tǒng)時鐘fosc/12),), 即定時方式;即定時方式;當(dāng)當(dāng)C/T=1時:多路器選擇的是外部時:多路器選擇的是外部T0或或T1引腳輸入,引腳輸入, 即計數(shù)方式。即計數(shù)方式。 定時定時/計數(shù)的長短由初值寄存器中的計數(shù)初值來設(shè)定。計數(shù)的長短由初值寄存器中的計數(shù)初值來設(shè)定。6.2 定時器定時器/計數(shù)器的控制計數(shù)器的控制 6.2.1 工作模式寄存器工作模式寄存器 T

7、MOD 6.2.2 控制器寄存器控制器寄存器 TCON2022-2-26.2.1 工作模式寄存器工作模式寄存器 TMOD TMOD用于控制用于控制T0和和T1的工作模式。的工作模式。 TMOD不能位尋址,只能用字節(jié)設(shè)置定時器的工作模式,低不能位尋址,只能用字節(jié)設(shè)置定時器的工作模式,低半字節(jié)設(shè)置半字節(jié)設(shè)置T0,高半字節(jié)設(shè)置,高半字節(jié)設(shè)置T1。 89S51系統(tǒng)復(fù)位時,系統(tǒng)復(fù)位時,TMOD的所有位被清的所有位被清0。 TMOD各位的定義格式如圖所示。各位的定義格式如圖所示。定時器定時器T1定時器定時器T0TMOD(89H) D7 D6 D5 D4 D3 D2 D1 D0GATE C/ T M1 M0

8、GATE C/ T M1 M02022-2-2表表6-1 M1,M0控制的四種工作模式控制的四種工作模式2022-2-22022-2-26.2.2 控制器寄存器控制器寄存器 TCON TCON除可字節(jié)尋址外,各位還可位尋址。除可字節(jié)尋址外,各位還可位尋址。 89S51系統(tǒng)復(fù)位時,系統(tǒng)復(fù)位時,TCON的所有位被清的所有位被清0。 TCON各位的定義格式如圖所示。各位的定義格式如圖所示。TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0TCON(88H) 8FH 8EH 8DH 8CH 8BH 8AH 89H 88H控制寄存器控制寄存器TCON的位定義的位定義2022-2-22022-

9、2-26.3 定時器定時器/計數(shù)器的四種模式及應(yīng)用計數(shù)器的四種模式及應(yīng)用 6.3.1 形式形式 0 及其應(yīng)用及其應(yīng)用6.3.2 形式形式 1 及其應(yīng)用及其應(yīng)用6.3.3 形式形式 2 及其應(yīng)用及其應(yīng)用6.3.4 形式形式 3 及其應(yīng)用及其應(yīng)用6.3.5 綜合應(yīng)用舉例綜合應(yīng)用舉例6.3.1 形式形式 0 及其應(yīng)用及其應(yīng)用一、形式一、形式 0 的邏輯電路結(jié)構(gòu)的邏輯電路結(jié)構(gòu)(T0模式模式 0 的邏輯電路結(jié)構(gòu)與的邏輯電路結(jié)構(gòu)與T1相同)相同)二、形式二、形式 0 工作特點工作特點三、形式三、形式 0 的應(yīng)用舉例的應(yīng)用舉例2022-2-2TH1 TL1震蕩器震蕩器 1/12(8位位)(低低5位位)TF1

10、中斷中斷啟動控制啟動控制T1 引腳引腳TR1GATEINT1高三位棄用高三位棄用C/T=0C/T=113位加位加1計數(shù)器計數(shù)器一、形式一、形式 0 的邏輯電路結(jié)構(gòu)的邏輯電路結(jié)構(gòu)* 模式模式0時定時器時定時器T0同同T1二、形式二、形式 0 工作特點工作特點 在這種模式下,在這種模式下,16位寄存器位寄存器TH0和和TL0只用了只用了13位。位。其中其中TL0的高的高3位未用。當(dāng)位未用。當(dāng)TL0的低的低5位溢出時,向位溢出時,向TH0進(jìn)位;進(jìn)位;TH0溢出時,向中斷標(biāo)志溢出時,向中斷標(biāo)志TF0進(jìn)位硬件置位進(jìn)位硬件置位TF0),并申),并申請中斷。請中斷。 定時時間為:定時時間為: t=(213T

11、0初值初值)振蕩周期振蕩周期12 計數(shù)工作方式時計數(shù)長度為:計數(shù)工作方式時計數(shù)長度為: L=(213T0初值初值) 個外部脈沖個外部脈沖2022-2-2三、形式三、形式 0 的應(yīng)用舉例的應(yīng)用舉例例例6-1:設(shè)晶振為:設(shè)晶振為12MHz,試計算定時器,試計算定時器T0工作于模式工作于模式0時的最時的最大定時時間大定時時間T。解:加解:加1計數(shù)器為計數(shù)器為13位,定時時間為:位,定時時間為: t=(213T0初值初值)振蕩周期振蕩周期12 最大定時時間為最大定時時間為“T0初值初值=0時。時。122T13 振振蕩蕩周周期期12101212613 ms192.81081926 2022-2-2例例6

12、-2:設(shè)定時器:設(shè)定時器T0用于定時用于定時10ms,晶振為,晶振為6MHz。試確定。試確定T0初值。并編寫定時器初值。并編寫定時器T0初始化程序段。初始化程序段。解:解:1確定確定T0初值初值定時時間:定時時間:120T2(T13 振振蕩蕩周周期期初初值值)所以:所以:120T2(ms1013 振振蕩蕩周周期期初初值值)12106101020T6313 初初值值T0初值初值=3192=C78H =0000 1100 0111 1000 B即:(即:(TH0)=0110 0011 B=63H高高8位)位) (TL0)=1 1000 B=18H低低5位)位)2022-2-2 TMOD的低四位為T

13、0的控制位 模式0:M1M0=00, 定時器方式:C/T=0, 門控位不受INT0的影響:GATE=0, 模式字為 TMOD=0000 0000 B=00H定時器定時器T1定時器定時器T0GATE C/ T M1 M0 GATEM1C/ TM0TMOD(89H) D7 D6 D5 D4 D3 D2 D1 D0解:解:2確定確定TMOD的初值的初值2022-2-2解:解:3編寫定時器編寫定時器T0的初始化程序段的初始化程序段主程序:主程序: ORG 0100HMAIN: MOV SP,#60H ;設(shè)堆棧指針;設(shè)堆棧指針 MOV TMOD,#00H ;選擇工作模式;選擇工作模式 MOV TH0,#

14、63H ;送初值;送初值 MOV TL0,#18H SETB TR0 ;啟動定時;啟動定時 2022-2-2例例6-3:設(shè)定時器:設(shè)定時器T1工作于模式工作于模式0,晶振為,晶振為6MHz。編程實現(xiàn):每。編程實現(xiàn):每10ms時間時間P1.0取反的程序取反的程序50Hz的方波)。的方波)。解:解:1確定確定T1初值同例初值同例2) (TH1)=0110 0011 B=63H高高8位)位) (TL1)=1 1000 B=18H低低5位)位)2確定確定TMOD的初值的初值TMOD=0000 0000 B=00H2022-2-220ms10ms 10ms解:解:3編寫程序編寫程序初始化引導(dǎo)程序:初始化

15、引導(dǎo)程序: ORG 0000HRESET: AJMP MAIN ;跳過中斷服務(wù)程序;跳過中斷服務(wù)程序區(qū)區(qū) ORG 001BH ;中斷服務(wù)程序入口;中斷服務(wù)程序入口 AJMP ITOP主程序:主程序: ORG 0100HMAIN: MOV SP,#60H ;設(shè)堆棧指針;設(shè)堆棧指針 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 ;等待

16、時間到,轉(zhuǎn)入;等待時間到,轉(zhuǎn)入中斷服務(wù)程序中斷服務(wù)程序2022-2-2中斷服務(wù)程序中斷服務(wù)程序: ORG 0150HITOP: MOV TL1,#18H;重新裝入初值;重新裝入初值 MOV TH1,#63H CPL P1.0 ;P1.0取反取反 RETI;中斷返回;中斷返回例例6-4:利用:利用T0的工作模式的工作模式0產(chǎn)生定時,在產(chǎn)生定時,在P1.0引腳輸出周期為引腳輸出周期為10ms的方波。設(shè)晶振頻率的方波。設(shè)晶振頻率fosc=12MHz。編程實現(xiàn)其功能。編程實現(xiàn)其功能分別采用查詢方式和中斷方式)。分別采用查詢方式和中斷方式)。解:要在解:要在P1.0引腳輸出周期為引腳輸出周期為10ms的

17、方波,只要使的方波,只要使P1.0每隔每隔5ms取反一次即可。取反一次即可。 計算計算5ms定時定時T0的初值的初值:T = (213T0初值初值)(1/12)10-612 = 510-3 sT0初值初值 = 3192 D = C78 H = 01100011 11000 BT0的低的低5位:位:11000 B=18H 即即 (TL0)=18HT0的高的高8位:位:01100011 B=63H 即即 (TH0)=63H 2022-2-2(3采用查詢方式的程序采用查詢方式的程序程序清單:程序清單: ORG 0000HLJMP MAIN ;初始化引導(dǎo)程序;初始化引導(dǎo)程序ORG 0080HMAIN:

18、MOV TMOD,#00H ;設(shè)置;設(shè)置T0為模式為模式0 MOV TL0,#18H ;送初值;送初值 MOV TH0,#63HSETB P1.0 SETB TR0 ;啟動定時;啟動定時LP:JBC TF0,NEXT ;查詢定時時間到否;查詢定時時間到否 SJMP LPNEXT:MOV TL0,#18H ;重裝計數(shù)初值;重裝計數(shù)初值 MOV TH0,#63H CPL P1.0 ;取反;取反 SJMP LP ;重復(fù)循環(huán);重復(fù)循環(huán)2022-2-2查詢也可用以下指令查詢也可用以下指令LOOP: JNB TF0,LOOP ;查詢定時時間到否;查詢定時時間到否 CLR TF0 ;產(chǎn)生溢出,清標(biāo)志位產(chǎn)生溢

19、出,清標(biāo)志位(4采用定時器溢出中斷方式的程序采用定時器溢出中斷方式的程序 ORG 0000H ; 主程序主程序RESET: AJMP MAIN ; 跳過中斷服務(wù)程序區(qū)跳過中斷服務(wù)程序區(qū) ORG 000BH;定時器;定時器T0中斷矢量中斷矢量 AJMP CTC0;轉(zhuǎn)入中斷服務(wù)程序;轉(zhuǎn)入中斷服務(wù)程序 ORG 0030H MAIN:MOV TMOD,#00H;設(shè)置;設(shè)置T0為模式為模式0 MOV TL0,#18H ;送初值;送初值 MOV TH0,#63H SETB EA ;CPU開中斷開中斷 SETB ET0 ;T0中斷允許中斷允許 SETB TR0 ;啟動定時;啟動定時 HERE:SJMP HE

20、RE ;等待中斷;等待中斷 ORG 0120H ;中斷服務(wù)程序;中斷服務(wù)程序 CTC0: MOV TL0,#18H ;重新裝入初值;重新裝入初值 MOV TH0,#63H CPL P1.0 ;P1.0取反取反 RETI;中斷返回;中斷返回6.3.2 形式形式 1 及其應(yīng)用及其應(yīng)用一、形式一、形式 1 的邏輯電路結(jié)構(gòu):的邏輯電路結(jié)構(gòu): (T0模式模式 1 的邏輯電路結(jié)構(gòu)與的邏輯電路結(jié)構(gòu)與T1相同)相同)二、形式二、形式 1 工作特點工作特點三、形式三、形式 1 的應(yīng)用舉例的應(yīng)用舉例2022-2-2GATE=0時時,TR1=1開始定時開始定時/計數(shù)計數(shù); GATE=1時時(門控方式門控方式), T

21、R=1且且INT1=1時時,開始工作開始工作.此種方式主要用于測量加在此種方式主要用于測量加在INT1腳上一個正脈沖的腳上一個正脈沖的脈寬。脈寬。一、形式一、形式 1 的邏輯電路結(jié)構(gòu)的邏輯電路結(jié)構(gòu)TL1TH1震蕩器震蕩器 1/12(8位位)(8位位)TF1中斷中斷啟動控制啟動控制T1 引腳引腳TR1GATEINT1C/T=0C/T=116位加位加1計數(shù)器計數(shù)器二、形式二、形式 1 工作特點工作特點 該模式對應(yīng)的是一個該模式對應(yīng)的是一個16位的定時器位的定時器/計數(shù)器。計數(shù)器。 用于定時工作方式時,定時時間為:用于定時工作方式時,定時時間為: t=(216 t=(216T0T0初值初值) )振蕩

22、周期振蕩周期1212 用于計數(shù)工作方式時,計數(shù)長度為:用于計數(shù)工作方式時,計數(shù)長度為: (216 (216T0T0初值初值) )(個外部脈沖)(個外部脈沖)2022-2-2三、形式三、形式 1 的應(yīng)用舉例的應(yīng)用舉例例例6-5:1、設(shè)定時器、設(shè)定時器T0選擇工作模式選擇工作模式1的計數(shù)器工作方式,的計數(shù)器工作方式,其計數(shù)器初值為其計數(shù)器初值為FFFFH,問此時定時器,問此時定時器T0的實的實際用途是什么?際用途是什么?解:因其初值為解:因其初值為FFFFH,只要隨機(jī)外來一脈沖即可,只要隨機(jī)外來一脈沖即可溢出,向溢出,向CPU申請中斷,故這一內(nèi)部中斷源實申請中斷,故這一內(nèi)部中斷源實質(zhì)上已作為外部中

23、斷源使用。因此此定時器質(zhì)上已作為外部中斷源使用。因此此定時器T0并不用于定時或計數(shù)。并不用于定時或計數(shù)。2022-2-22 2、設(shè)晶振為、設(shè)晶振為12MHz12MHz,試計算定時器,試計算定時器T0T0工作于模式工作于模式1 1時時的最大定時時間的最大定時時間T T。解:定時時間為:解:定時時間為: t=(216 t=(216T0T0初值初值) )振蕩周期振蕩周期1212 最大定時時間為最大定時時間為“T0“T0初值初值=0=0時。時。所以:所以:122T16 振振蕩蕩周周期期12101212616 ms536.6510655366 2022-2-2例例6-6 :脈沖寬度的測量。測量輸入到單片

24、機(jī):脈沖寬度的測量。測量輸入到單片機(jī)P3.3引腳引腳上的周期性脈沖信號的脈沖寬度。上的周期性脈沖信號的脈沖寬度。分析:由前面的介紹可知,當(dāng)分析:由前面的介紹可知,當(dāng)GATE=1時,是一種采用時,是一種采用軟件和硬件聯(lián)合控制的方法來實現(xiàn)計數(shù)器運行與否軟件和硬件聯(lián)合控制的方法來實現(xiàn)計數(shù)器運行與否的控制。這一功能,可測量引腳的控制。這一功能,可測量引腳P3.3上的周期性脈上的周期性脈沖信號的脈沖寬度。沖信號的脈沖寬度。匯編語言源程序如下匯編語言源程序如下:ORG 0000H; 復(fù)位入口復(fù)位入口AJMP MAINORG 0030HMAIN:MOV SP,#60H; 系統(tǒng)初始化系統(tǒng)初始化MOV TMOD

25、,#90H ; T1定時,方式定時,方式1,且,且GATE=1MOV TH1, #00H ; T1從從0開始作加開始作加1計數(shù)計數(shù)MOV TL1, #00HCLRTR1JBP3.3, $; 等待等待P3.3引腳的第一個下降沿引腳的第一個下降沿JNBP3.3, $; 等待等待P3.3引腳的第一個上升沿引腳的第一個上升沿SETB TR1; 啟動啟動T1開始定時開始定時JBP3.3, $; P3.3為高電平時,為高電平時,CPU等待等待CLR TR1; P3.3變?yōu)榈碗娖綍r停止變?yōu)榈碗娖綍r停止T1計數(shù)計數(shù)LCALL Display; 調(diào)用顯示子程序,顯示測量結(jié)果即脈調(diào)用顯示子程序,顯示測量結(jié)果即脈沖

26、寬度沖寬度 例例6-7:脈沖信號的產(chǎn)生。設(shè)晶振頻率為:脈沖信號的產(chǎn)生。設(shè)晶振頻率為12MHz,要求,要求在在P1.0引腳上輸出周期為引腳上輸出周期為2ms的方波。的方波。分析:設(shè)分析:設(shè)T1為定時器模式,方式為定時器模式,方式1。周期為。周期為2ms的方波的方波要求定時間隔為要求定時間隔為1ms,每次定時,每次定時1ms時間到,就將時間到,就將P1.0取反。取反。計數(shù)周期計數(shù)周期=1s,定時,定時1ms=1000s,需計數(shù)次數(shù),需計數(shù)次數(shù)=1000。加加1計數(shù)器賦初值:計數(shù)器賦初值:655361000=64536=FC18H,在在C51語言中相當(dāng)于語言中相當(dāng)于1000。1、匯編語言程序設(shè)計采用

27、中斷方式、匯編語言程序設(shè)計采用中斷方式 )ORG0000H; 復(fù)位入口復(fù)位入口AJMPSTARTORG001BH ; T1溢出中斷入口溢出中斷入口AJMPT1INTORG0030HSTART:MOVSP,#60H; 系統(tǒng)初始化系統(tǒng)初始化MOVTMOD, #10H; 設(shè)置設(shè)置T1工作于定時工作方式工作于定時工作方式1MOVTH1,#0FCH ; 設(shè)置加設(shè)置加1計數(shù)器的計數(shù)初值高字節(jié)計數(shù)器的計數(shù)初值高字節(jié)MOVTL1,#18H; 設(shè)置加設(shè)置加1計數(shù)器的計數(shù)初值低字節(jié)計數(shù)器的計數(shù)初值低字節(jié)SETBTR1; 啟動啟動T1開始定時開始定時SETBET1; 開開T1溢出中斷溢出中斷SETBEA; 開總允許

28、中斷開總允許中斷MAIN: AJMPMAIN; 主程序等待主程序等待T1溢出中斷)溢出中斷)T1INT: CPLP1.0; T1溢出中斷服務(wù)程序溢出中斷服務(wù)程序MOVTH1,#0FCH ; T1重賦初值重賦初值MOVTL1,#18HRETI2、 C51高級語言程序段的設(shè)計采用中斷方式高級語言程序段的設(shè)計采用中斷方式 )#include sbitrect_wave = P10;/ 方波信號由方波信號由P1.0口輸出口輸出void main(void) TMOD = 0 x10;/ 設(shè)置設(shè)置T1工作于定時工作方式工作于定時工作方式1TH1 = -1000/256; / 設(shè)置加設(shè)置加1計數(shù)器的計數(shù)初

29、值高字節(jié)計數(shù)器的計數(shù)初值高字節(jié)TL1 = -1000%256;/ 設(shè)置加設(shè)置加1計數(shù)器的計數(shù)初值低字節(jié)計數(shù)器的計數(shù)初值低字節(jié)IE = 0 x00;/ 禁止中斷禁止中斷ET1 = 1;/ 開開T1溢出中斷溢出中斷EA = 1;/ 開總允許中斷開總允許中斷TR1 = 1;/ 啟動啟動T1開始定時開始定時for ( ; ; );/ 等待等待T1溢出中斷溢出中斷void int1() interrupt 3 /*T1溢出中斷服務(wù)程序溢出中斷服務(wù)程序*/TH1 = -1000/256;/ T1重賦初值重賦初值TL1 = -1000%256;rect_wave = !rect_wave;/ 輸出取反輸出取

30、反6.3.3 形式形式 2 及其應(yīng)用及其應(yīng)用一、形式一、形式 2 的邏輯電路結(jié)構(gòu)的邏輯電路結(jié)構(gòu)(T0模式模式 2 的邏輯電路結(jié)構(gòu)與的邏輯電路結(jié)構(gòu)與T1相同)相同)二、形式二、形式 2 工作特點工作特點三、形式三、形式 2 的應(yīng)用舉例的應(yīng)用舉例2022-2-2一、形式一、形式 2 的邏輯電路結(jié)構(gòu)的邏輯電路結(jié)構(gòu)TL1(8位位)TH1(8位位)震蕩器震蕩器1/12TF1中斷中斷控制控制T1 引腳引腳TR1GATEINT1C/T=1C/T=08位加位加1計數(shù)器計數(shù)器8位初值寄存器位初值寄存器 該模式把該模式把TL0(TL1)配置成一個可以自動重裝載的配置成一個可以自動重裝載的8位定時器位定時器/計數(shù)器

31、。計數(shù)器。二、形式二、形式 2 工作特點工作特點 該模式為自動重裝載的該模式為自動重裝載的8位定時器位定時器/計數(shù)器。計數(shù)器。 TL0用作用作8位計數(shù)器,位計數(shù)器,TH0用以保存初值。在程序初用以保存初值。在程序初始化時,始化時,TL0和和TH0由軟件賦予相同的初值。由軟件賦予相同的初值。 用于定時工作方式時,定時時間為:用于定時工作方式時,定時時間為: t=(28TL0初值初值)振蕩周期振蕩周期12 用于計數(shù)工作方式時,計數(shù)長度為:用于計數(shù)工作方式時,計數(shù)長度為: (28TL0初值初值) (個外部脈沖)(個外部脈沖) 該模式可省去軟件中重裝常數(shù)的語句,并可產(chǎn)生相當(dāng)該模式可省去軟件中重裝常數(shù)的

32、語句,并可產(chǎn)生相當(dāng)精確的定時時間,適合于作串行口波特率發(fā)生器。精確的定時時間,適合于作串行口波特率發(fā)生器。2022-2-2三、形式三、形式 2 的應(yīng)用舉例的應(yīng)用舉例例例6-8:當(dāng):當(dāng)P3.4引腳定時器引腳定時器T0的外部計數(shù)輸入端上的外部計數(shù)輸入端上的電平發(fā)生負(fù)跳變時,的電平發(fā)生負(fù)跳變時, 從從P1.0輸出一個輸出一個500s的同步的同步脈沖。用查詢方式編程實現(xiàn)該功能,脈沖。用查詢方式編程實現(xiàn)該功能,fosc=6MHz。2022-2-2500usP3.4P1.0定時方式定時方式外部計數(shù)方式外部計數(shù)方式解:(解:(1確定確定TMOD值值首先為計數(shù)器工作方式首先為計數(shù)器工作方式C/T=1):):(

33、TMOD)=0000 0110B=06H 當(dāng)當(dāng)P3.4引腳上的電平發(fā)生負(fù)跳變時,引腳上的電平發(fā)生負(fù)跳變時,T0計數(shù)器加計數(shù)器加1,溢出,溢出標(biāo)志標(biāo)志TF0置置1; 然后改變?nèi)缓蟾淖僒0為為500s定時工作方式定時工作方式C/T=0):):(TMOD)=02H 當(dāng)上面當(dāng)上面TF0=1時使時使P1.0輸出由輸出由1變?yōu)樽優(yōu)?。開始。開始T0定時,到定時,到500s產(chǎn)生溢出,使產(chǎn)生溢出,使P1.0輸出恢復(fù)高電平,輸出恢復(fù)高電平,T0又恢復(fù)外部事件又恢復(fù)外部事件計數(shù)方式。計數(shù)方式。(2計算計算T0初值初值 T0工作在外部事件計數(shù)方式:工作在外部事件計數(shù)方式:要求要求T0引腳出現(xiàn)一次外部事件時,引起引腳

34、出現(xiàn)一次外部事件時,引起T0中斷。中斷。設(shè)計計數(shù)器初值為設(shè)計計數(shù)器初值為FFH T0初值初值 = 28 1=11111111B=0FFH 即:(即:(TH0)=(TL0)=0FFH T0工作在定時工作方式:工作在定時工作方式: 因為晶振頻率為因為晶振頻率為6MHz,定時,定時500s。 所以:所以:(28T0初值初值)2s=500s 得出:得出:T0初值初值 =6=06H, 即:(即:(TH0)=(TL0)=06H2022-2-2(3程序清單程序清單:ORG0000HLJMPSTARTORG0080HSTART:MOVTMOD,#06H ;設(shè)置;設(shè)置T0為模式為模式2,外部計數(shù)方式外部計數(shù)方式

35、 MOV TL0,#0FFH ;T0計數(shù)器初值計數(shù)器初值 MOV TH0,#0FFH SETB TR0 ;啟動;啟動T0計數(shù)計數(shù) LOOP1:JBC TF0,PTFO1 ;TF0=1時轉(zhuǎn),且清時轉(zhuǎn),且清TF0=0 SJMP LOOP1 ; 等待等待T0溢出溢出PTFO1:CLR TR0 ;停止計數(shù);停止計數(shù) MOV TMOD,#02H ;設(shè)置;設(shè)置T0為模式為模式2,定時方式,定時方式 MOV TL0,#06H ;送初值,定時;送初值,定時500s MOV TH0,#06H CLR P1.0 ; P1.0清清0 SETB TR0 ;啟動定時;啟動定時500s LOOP2 :JBC TF0,PT

36、FO2;TF0=1時轉(zhuǎn)并清時轉(zhuǎn)并清TF0=0 SJMP LOOP2 ;等待;等待T0溢出中斷定時時間到)溢出中斷定時時間到) PTFO2 :SETB P1.0 ; P1.0置置1 CLR TR0 ;停止定時;停止定時SJMP START ;轉(zhuǎn)向開始,重新等待;轉(zhuǎn)向開始,重新等待T0引腳的脈沖引腳的脈沖2022-2-2例例6-9:利用定時器:利用定時器T1的模式的模式2對外部信號計數(shù)。要求每計滿對外部信號計數(shù)。要求每計滿100次,將次,將 P1.0端取反。端取反。解:解:(1選擇模式選擇模式 T1計數(shù)工作方式模式計數(shù)工作方式模式2的模式字為的模式字為TMOD)=60H。 T0不用時,不用時,TM

37、OD的低的低4位可任取,但不能進(jìn)入模式位可任取,但不能進(jìn)入模式3,一,一般取般取0。2022-2-2(2計算計算T1的計數(shù)初值的計數(shù)初值 X= 28 100=156=9CH 因而因而:TL1的初值為的初值為9CH,重裝初值寄存器,重裝初值寄存器TH1=9CH。(3程序清單程序清單ORG 0000HLJMP MAINORG 001BH ;中斷服務(wù)程序入口;中斷服務(wù)程序入口 CPL P1.0 RETI MAIN: MOV TMOD,#60H;設(shè)置;設(shè)置T1為模式為模式2,外部計數(shù)外部計數(shù)方式方式 MOV TL1,#9CH ;T1計數(shù)器初值計數(shù)器初值 MOV TH1,#9CH MOV IE,#88H

38、 ;定時器開中斷;定時器開中斷 SETB TR1 ;啟動;啟動T1計數(shù)計數(shù) HERE:SJMP HERE ;等待中斷;等待中斷2022-2-26.3.4 形式形式 3 及其應(yīng)用及其應(yīng)用一、形式一、形式 3 的邏輯電路結(jié)構(gòu)的邏輯電路結(jié)構(gòu)工作模式工作模式3對對T0和和T1大不相同。大不相同。1、T0模式模式3的邏輯電路結(jié)構(gòu)的邏輯電路結(jié)構(gòu)2、T0模式模式3下下T1的邏輯電路結(jié)構(gòu)的邏輯電路結(jié)構(gòu)二、形式二、形式 3 的應(yīng)用舉例的應(yīng)用舉例2022-2-2 在這種模式中在這種模式中,單片機(jī)將單片機(jī)將T0和和T1重新進(jìn)行重新進(jìn)行“拆分、組合拆分、組合”,將將T0變?yōu)橛勺優(yōu)橛蒚H0,TL0組成的兩個獨立的組成的

39、兩個獨立的8位定時位定時/計數(shù)器。計數(shù)器。 將將T1設(shè)定在模式設(shè)定在模式3則相當(dāng)于停止工作。則相當(dāng)于停止工作。TL0震蕩器震蕩器 1/12TF0中斷中斷控制控制T0 引腳引腳TR0GATEINT0C/T=0C/T=1TH0TF1中斷中斷控制控制TR1Fosc/12模式模式3時的定時器時的定時器T0的結(jié)構(gòu)圖的結(jié)構(gòu)圖1、T0模式模式3的邏輯電路結(jié)構(gòu)的邏輯電路結(jié)構(gòu) 模式模式3下下T0TH0,TL0及及T1的各自特點的各自特點: 1、 TH0計數(shù)脈沖來自內(nèi)部計數(shù)脈沖來自內(nèi)部fosc,所以它只能處于定時方所以它只能處于定時方式式; 2、TH0分別借用了定時器分別借用了定時器T1的的TR1和和TF1為自己

40、服務(wù)為自己服務(wù),使使TH0能象能象TL0那樣用那樣用TR1啟動定時啟動定時,并用并用TF1來作為來作為TH0的溢的溢出中斷的標(biāo)志出中斷的標(biāo)志; 3、 當(dāng)當(dāng)T1缺少啟動控制信號缺少啟動控制信號TR1和溢出中斷標(biāo)志和溢出中斷標(biāo)志TR1(T0模式模式3時時), T1是如何啟動和工作的?是如何啟動和工作的? 沒有沒有TF1,則則T1就不用中斷方式工作就不用中斷方式工作(實際上連查詢也不行實際上連查詢也不行); 沒有啟動控制信號沒有啟動控制信號TR1,可以讓它在可以讓它在T0模式模式3之前就開始工之前就開始工作作,并且讓它事先設(shè)定為自動重裝模式并且讓它事先設(shè)定為自動重裝模式. 4、模式、模式3就是將單片

41、機(jī)原有的就是將單片機(jī)原有的T0,T1兩個計數(shù)器變成三個獨兩個計數(shù)器變成三個獨立的計數(shù)器立的計數(shù)器,其中其中T1要事先設(shè)定為模式要事先設(shè)定為模式2(串行口的波特率發(fā)生串行口的波特率發(fā)生器器)并啟動起來。并啟動起來。 注:注:8051系統(tǒng)只有系統(tǒng)只有T1能作串行口的波特率發(fā)生器。能作串行口的波特率發(fā)生器。模式模式3時時T0,T1的電路結(jié)構(gòu)的電路結(jié)構(gòu)TL0八位定時八位定時/計數(shù)器計數(shù)器TH0八位定時器八位定時器T1(TL1,TH1)自動重裝模式自動重裝模式TF0TF1將將T0分解為兩個計數(shù)器分解為兩個計數(shù)器TL0和和TH0,其中其中TH0借借用了用了T1的的TR1和和TF1T1已無已無TR1,TF1

42、功能功能,建議建議T1做波特率發(fā)生器做波特率發(fā)生器組成組成TH0,TL0和和T1三個計數(shù)器三個計數(shù)器二、形式二、形式 3 的應(yīng)用舉例的應(yīng)用舉例例例6-10:設(shè)某用戶系統(tǒng)已使用了兩個外部中斷源,并置定時器:設(shè)某用戶系統(tǒng)已使用了兩個外部中斷源,并置定時器T1工作在模式工作在模式2,作串行口波特率發(fā)生器用?,F(xiàn)要求再增加一,作串行口波特率發(fā)生器用?,F(xiàn)要求再增加一個外部中斷源,并由個外部中斷源,并由P1.0引腳輸出一個引腳輸出一個5kHz的方波。的方波。Fosc=12MHz.解:(解:(1工作模式工作模式 設(shè)置設(shè)置T0工作在模式工作在模式3方式,方式,TL0作計數(shù)用,作計數(shù)用,TH0用作用作8位位定時器

43、,定時控制定時器,定時控制P1.0引腳輸出引腳輸出5kHz的方波信號。的方波信號。 (2計算初值計算初值TL0的計數(shù)初值為的計數(shù)初值為FFH。TH0的計數(shù)初值的計數(shù)初值X為:為: P1.0方波周期方波周期T=1/(5kHz)=0.2ms=200sTH0定時定時100s, X=256-100 12/12=156(3程序清單程序清單 MOV TMOD,#27H ;T0模式模式3,計數(shù)方式,計數(shù)方式, T1模式模式2,定時方式,定時方式 MOV TL0,#0FFH ;TL0計數(shù)初值計數(shù)初值 MOV TH0,#156 ;TH0計數(shù)初值計數(shù)初值 MOV TL1,#data ;data是根據(jù)波特率要求設(shè)置

44、的常數(shù)是根據(jù)波特率要求設(shè)置的常數(shù) MOV TH1,#data MOV TCON,#55H ;外中斷;外中斷0,1邊沿觸發(fā),啟動邊沿觸發(fā),啟動T0,T1 MOV IE,#9FH ; 開放全部中斷開放全部中斷TL0溢出中斷服務(wù)程序由溢出中斷服務(wù)程序由000BH轉(zhuǎn)來)轉(zhuǎn)來)TL0INT:MOV TL0,#0FFH ;TL0重賦初值重賦初值 (中斷處理)(中斷處理) RETITH0溢出中斷服務(wù)程序由溢出中斷服務(wù)程序由001BH轉(zhuǎn)來)轉(zhuǎn)來)TH0INT:MOV TH0,#156 ;TH0重賦初值重賦初值 CPL P1.0 ;P1.0取反輸出取反輸出 RETI串行口及外部中斷串行口及外部中斷0,外部中斷,

45、外部中斷1的服務(wù)程序略的服務(wù)程序略主程序主程序:設(shè)設(shè)T0為為8ms定時定時MOV TMOD,#01HMOV TH0,#0E3HMOV TL0,#33HSETB EASETB ET0SETB TR0:MOV 0FH,#50CLR06HJNB06H,$:MOV 0FH,#125CLR06HJNB06H,$T0中斷服務(wù)中斷服務(wù):SETB RS0:DECR7MOV A,R7JNZNEXTSETB 06HNEXT:CLRRS0POPDPHPOPDPLPOPACCRETI6.3.5 綜合應(yīng)用舉例綜合應(yīng)用舉例例例6-11:定時功能定時功能程序設(shè)計程序設(shè)計例例6-12:設(shè)時鐘頻率為:設(shè)時鐘頻率為6MHz。編寫

46、利用。編寫利用T0產(chǎn)生產(chǎn)生1s定時的程序。定時的程序。解:(解:(1定時器定時器T0工作模式的確定工作模式的確定模式模式1最長可定時最長可定時131.072ms; 模式模式2最長可定時最長可定時512s;定時定時1s,可選用模式,可選用模式1,每隔,每隔100ms中斷一次,中斷中斷一次,中斷10次從而次從而達(dá)到達(dá)到1s的定時。的定時。 (2求計數(shù)器初值求計數(shù)器初值X (216X)12/(6 106) =10010-3 s X=15536=3CB0H (3實現(xiàn)方法:實現(xiàn)方法: 采用循環(huán)程序法對中斷完成采用循環(huán)程序法對中斷完成10次計數(shù)。次計數(shù)。(4源程序清單源程序清單ORG0000H AJMP

47、MAIN ORG 000BH AJMP SERVE ORG 0080HMAIN : MOV SP,#60H MOV B,#0AH;設(shè)循環(huán)次數(shù);設(shè)循環(huán)次數(shù) MOV TMOD,#01H; MOV TL0,#0B0H;計數(shù)值低;計數(shù)值低8位位 MOV TH0,#3CH;計數(shù)值高;計數(shù)值高8位位 SETB TR0 ;啟動定時;啟動定時 SETB ET0;T0開中斷開中斷 SETB EA;CPU開中斷開中斷 SJMP $;等待中斷;等待中斷SERVE: MOV TL0,#0B0H ;重新賦初值;重新賦初值MOV TH0,#3CH DJNZ B,LOOPCLR TR0 ;1s定時到,停止定時到,停止T0工

48、作工作 LOOP: RETI END例例6-13:設(shè)計實時時鐘程序。以秒、分、時為單位進(jìn)行計時,:設(shè)計實時時鐘程序。以秒、分、時為單位進(jìn)行計時,fosc=6MHz 。解:(解:(1實現(xiàn)時鐘計時的基本方法實現(xiàn)時鐘計時的基本方法 1秒的實現(xiàn)硬件秒的實現(xiàn)硬件+軟件計數(shù))軟件計數(shù))設(shè)定設(shè)定T1定時定時100ms,軟件計數(shù)溢出,軟件計數(shù)溢出10次即得到。次即得到。計算計數(shù)初值。計算計數(shù)初值。計數(shù)初值計數(shù)初值X為:為: X=15536=3CB0H, (TL1)=0B0H (TH1)=3CH2022-2-2 從秒到分和從分到時的計時是通過累計和從秒到分和從分到時的計時是通過累計和數(shù)值比較實現(xiàn)的。數(shù)值比較實現(xiàn)

49、的。 設(shè)置幾個累加單元分別進(jìn)行對設(shè)置幾個累加單元分別進(jìn)行對1s,1min,1h進(jìn)行計數(shù)。滿進(jìn)行計數(shù)。滿1s,秒位累加;滿,秒位累加;滿60s,分位累加;滿,分位累加;滿60min,時位累加;滿,時位累加;滿24h全部累加單元清全部累加單元清02022-2-2(2程序流程及程序清單程序流程及程序清單 時鐘主程序流程圖。時鐘主程序流程圖。設(shè)設(shè)T1為模式為模式1設(shè)中斷次數(shù)設(shè)中斷次數(shù)清計時單元清計時單元開中斷開中斷啟動啟動T1調(diào)用顯示子程序調(diào)用顯示子程序保護(hù)現(xiàn)場保護(hù)現(xiàn)場賦計數(shù)初值賦計數(shù)初值到到1s?(32H)加加1(32H)=60?(32H)清清0(31H)加加1(31H)=60?(31H)清清0(3

50、0H)加加1(30H)=24?(30H)清清0恢復(fù)現(xiàn)場恢復(fù)現(xiàn)場返回返回入口入口NNNNYYYY 中斷服務(wù)流程圖。中斷服務(wù)流程圖。 源程序如下:源程序如下: ORG 0000H AJMP MAIN ; 上電,轉(zhuǎn)向主程序上電,轉(zhuǎn)向主程序 ORG 001BH ;T1的中斷服務(wù)程序入口地址的中斷服務(wù)程序入口地址 AJMP SERVE ;轉(zhuǎn)向中斷服務(wù)程序;轉(zhuǎn)向中斷服務(wù)程序 ORG 2000H ;主程序;主程序MAIN: MOV SP,#60H ;設(shè)堆棧指針;設(shè)堆棧指針 MOV TMOD,#10H ;設(shè)置;設(shè)置T1工作于模式工作于模式1 MOV 20H,#0AH ;設(shè)循環(huán)次數(shù);設(shè)循環(huán)次數(shù) CLR A MO

51、V 30H,A ;時單元清;時單元清0 MOV 31H,A ;分單元清;分單元清0 MOV 32H,A ;秒單元清;秒單元清0SETB ET1 ;T1開中斷開中斷 SETB EA ;CPU開中斷開中斷 MOV TL1,#0B0H ;裝計數(shù)值低;裝計數(shù)值低8位位 MOV TH1,#3CH ;裝計數(shù)值高;裝計數(shù)值高8位位 SETB TR1 ;啟動定時;啟動定時 SJMP $ ;等待中斷可反復(fù)調(diào)用顯示子程序);等待中斷可反復(fù)調(diào)用顯示子程序)2022-2-2中斷服務(wù)程序:中斷服務(wù)程序: SERVE: PUSH PSW ;保護(hù)現(xiàn)場保護(hù)現(xiàn)場 PUSH ACC MOV TL1,#0B0H ;重新賦初值;重新賦初值 MOV TH1,#3CH DJNZ 20H,RETUNT ;1s未到,返回未到,返回 MOV 20H,#0AH ;重置中斷

溫馨提示

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

最新文檔

評論

0/150

提交評論