第七章定時(shí)器及應(yīng)用_第1頁
第七章定時(shí)器及應(yīng)用_第2頁
第七章定時(shí)器及應(yīng)用_第3頁
第七章定時(shí)器及應(yīng)用_第4頁
第七章定時(shí)器及應(yīng)用_第5頁
已閱讀5頁,還剩44頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、定時(shí)器及應(yīng)用定時(shí)器及應(yīng)用教學(xué)內(nèi)容教學(xué)內(nèi)容基本要求基本要求:掌握計(jì)數(shù):掌握計(jì)數(shù)/ /定時(shí)器的應(yīng)用及編程方法定時(shí)器的應(yīng)用及編程方法重點(diǎn):重點(diǎn):定時(shí)器定時(shí)器/ /計(jì)數(shù)器工作模式及應(yīng)用計(jì)數(shù)器工作模式及應(yīng)用難點(diǎn):難點(diǎn):定時(shí)器定時(shí)器/ /計(jì)數(shù)器的應(yīng)用編程計(jì)數(shù)器的應(yīng)用編程 定時(shí)器定時(shí)器/ /計(jì)數(shù)器的結(jié)構(gòu)及功能計(jì)數(shù)器的結(jié)構(gòu)及功能定時(shí)器定時(shí)器/ /計(jì)數(shù)器的控制計(jì)數(shù)器的控制定時(shí)器定時(shí)器/ /計(jì)數(shù)器的計(jì)數(shù)器的4 4種工作模式及其應(yīng)用種工作模式及其應(yīng)用定時(shí)器定時(shí)器/ /計(jì)數(shù)器的編程方法計(jì)數(shù)器的編程方法7.1 7.1 定時(shí)器概述定時(shí)器概述v89C51單片機(jī)內(nèi)有兩個(gè)16位定時(shí)器/計(jì)數(shù)器,即定時(shí)器0(T0)和定時(shí)器1(T1

2、),都是16位加1計(jì)數(shù)器。v功能:定時(shí)和事件計(jì)數(shù),可用于定時(shí)控制、延時(shí)、對(duì)外部件計(jì)數(shù)和檢測等場合。vT0由兩個(gè)8位特殊功能寄存器TH0和TL0構(gòu)成;T1由TH1和TL1構(gòu)成。v每個(gè)定時(shí)器都可由軟件設(shè)置為定時(shí)工作方式或 計(jì)數(shù)工作方式。由特殊功能寄存器TMOD和TCON所控制。v定時(shí)器工作不占用CPU時(shí)間,除非定時(shí)器/計(jì)數(shù)器溢出,才能中斷CPU的當(dāng)前操作。v定時(shí)器/計(jì)數(shù)器有四種工作模式。 定時(shí)器計(jì)數(shù)89C51片內(nèi)振蕩器輸出經(jīng)12分頻后的脈沖,即每個(gè)機(jī)器周期使定時(shí)器(T0或T1)的數(shù)值加1直至計(jì)滿溢出。 當(dāng)89C51采用12MHz晶振時(shí),一個(gè)機(jī)器周期為1s,計(jì)數(shù)頻率為1MHz。定時(shí)工作方式定時(shí)工作方

3、式 若89C51采用6MHz晶振,計(jì)數(shù)頻率為多少?v通過引腳T0(P3.4)和T1(P3.5)對(duì)外部脈沖信號(hào)計(jì)數(shù)。當(dāng)輸入脈沖信號(hào)產(chǎn)生由1至0的下降沿時(shí)計(jì)數(shù)器的值加1。vCPU檢測一個(gè)檢測一個(gè)1至至0的跳變需要兩個(gè)機(jī)器周期,故最的跳變需要兩個(gè)機(jī)器周期,故最高計(jì)數(shù)頻率為振蕩頻率的高計(jì)數(shù)頻率為振蕩頻率的1/24。v為了確保某個(gè)電平在變化之前被采樣一次,要求電平保持時(shí)間至少是一個(gè)完整的機(jī)器周期Tcy。計(jì)數(shù)工作方式計(jì)數(shù)工作方式TcyTcy 定時(shí)器共有兩個(gè)控制字,由軟件寫定時(shí)器共有兩個(gè)控制字,由軟件寫TMOD和和TCON兩個(gè)兩個(gè)8位寄存器,用來設(shè)置位寄存器,用來設(shè)置T0和和T1的工作模式和控制功能。單片機(jī)

4、系的工作模式和控制功能。單片機(jī)系統(tǒng)復(fù)位時(shí),兩個(gè)寄存器所有位都被清統(tǒng)復(fù)位時(shí),兩個(gè)寄存器所有位都被清0。 6.2 定時(shí)器的控制定時(shí)器的控制 TMOD用于用于控制控制T0和和T1的工作模式的工作模式,其各位的定義格式如下圖所示。其各位的定義格式如下圖所示。 一、工作模式寄存器一、工作模式寄存器TMOD(89H) M1、M0形成四種編碼控制四種工作模式形成四種編碼控制四種工作模式 TMOD (89H) 工作模式工作模式 00模式模式001模式模式110模式模式211模式模式3 功能選擇功能選擇 1計(jì)數(shù)計(jì)數(shù)0定時(shí)定時(shí) 選通控制選通控制 1受受/INT1控制控制0不受不受/INT1控制控制TMOD不能位尋

5、址,只能字節(jié)尋址。不能位尋址,只能字節(jié)尋址。C/T:定時(shí)器:定時(shí)器 /計(jì)數(shù)器方式選擇位計(jì)數(shù)器方式選擇位 C/T=0:定時(shí)方式:定時(shí)方式 計(jì)數(shù)片內(nèi)脈沖(即對(duì)機(jī)器周期計(jì)數(shù),計(jì)數(shù)片內(nèi)脈沖(即對(duì)機(jī)器周期計(jì)數(shù),周期確定周期確定) C/T=0:計(jì)數(shù)方式:計(jì)數(shù)方式 計(jì)數(shù)片外脈沖(即對(duì)通過計(jì)數(shù)片外脈沖(即對(duì)通過P3.4/P3.5來自片外的計(jì)來自片外的計(jì)數(shù)信號(hào)計(jì)數(shù),數(shù)信號(hào)計(jì)數(shù),周期不定周期不定)GATE:門控位:門控位 GATE =0:軟件使:軟件使TR0/TR1置置1,即可啟動(dòng)定時(shí)器,即可啟動(dòng)定時(shí)器 GATE =1:只有:只有INT0/INT1輸入信號(hào)為高電平,輸入信號(hào)為高電平,軟件使軟件使TR0/TR1置置

6、1,才可啟動(dòng)定時(shí)器,才可啟動(dòng)定時(shí)器定時(shí)器的使用:定時(shí)器的使用:設(shè)置工作方式設(shè)置工作方式-置初值置初值-啟動(dòng)啟動(dòng)-溢出中斷溢出中斷二、控制寄存器二、控制寄存器TCON(88H) TCON各位的作用如下:各位的作用如下: TF1(TCON.7)T1溢出標(biāo)志位。溢出標(biāo)志位。 TF0(TCON.5)T0溢出標(biāo)志位。溢出標(biāo)志位。 TR1(TCON.6)T1運(yùn)行控制位運(yùn)行控制位。 TR0(TCON.4)T0運(yùn)行控制位運(yùn)行控制位。 IE1,IT1,IE0和和IT0(TCON.3TCON.0)外外部中斷部中斷INT1,INT0請(qǐng)求及請(qǐng)求方式控制位。請(qǐng)求及請(qǐng)求方式控制位。 89C51復(fù)位后,復(fù)位后,TCON的所

7、有位被清的所有位被清0。 TCON (88H) T0運(yùn)行控制(軟件)運(yùn)行控制(軟件) 1啟動(dòng)啟動(dòng)0禁止禁止 T0溢出標(biāo)志(硬件)溢出標(biāo)志(硬件) 1溢出溢出0未溢出未溢出 T1運(yùn)行控制(軟件)運(yùn)行控制(軟件) 1啟動(dòng)啟動(dòng)0禁止禁止 T1溢出標(biāo)志(硬件)溢出標(biāo)志(硬件) 1溢出溢出0未溢出未溢出7.3 定時(shí)器的四種模式及應(yīng)用定時(shí)器的四種模式及應(yīng)用 89C51單片機(jī)的定時(shí)單片機(jī)的定時(shí)/計(jì)數(shù)器計(jì)數(shù)器T0和和T1可由可由軟件對(duì)特殊功能寄存器軟件對(duì)特殊功能寄存器TMOD中控制位中控制位C/T進(jìn)進(jìn)行設(shè)置,以選擇定時(shí)功能或計(jì)數(shù)功能。對(duì)行設(shè)置,以選擇定時(shí)功能或計(jì)數(shù)功能。對(duì)M1和和M0位的設(shè)置對(duì)應(yīng)于四種工作模式

8、,即模式位的設(shè)置對(duì)應(yīng)于四種工作模式,即模式0、模式模式1、模式、模式2和模式和模式3。在模式在模式0、模式、模式1和模和模式式2時(shí),時(shí),T0和和T1的工作模式相同;在模式的工作模式相同;在模式3時(shí),時(shí),兩個(gè)定時(shí)器的工作模式不同兩個(gè)定時(shí)器的工作模式不同。一、模式一、模式 0 0 及其應(yīng)用及其應(yīng)用(一)模式(一)模式 0 的邏輯電路結(jié)構(gòu)的邏輯電路結(jié)構(gòu)(以以T0為例為例) 模式模式0是選擇定時(shí)器(是選擇定時(shí)器(T0或或T1)的)的高高8位位和和低低5位位組成的一個(gè)組成的一個(gè)13位位定時(shí)器定時(shí)器/計(jì)數(shù)器。計(jì)數(shù)器。定時(shí)計(jì)數(shù) 在這種模式下,在這種模式下,1616位寄存器(位寄存器(TH0TH0和和TL0T

9、L0)只用)只用了了。其中。其中TL0TL0的高的高3 3位未用,其余位未用,其余5 5位為整個(gè)位為整個(gè)1313位位的低的低5 5位,位,TH0TH0占高占高8 8位。當(dāng)位。當(dāng)TL0TL0的低的低5 5位溢出時(shí),向位溢出時(shí),向TH0TH0進(jìn)位;進(jìn)位;TH0TH0溢出時(shí),向中斷標(biāo)志溢出時(shí),向中斷標(biāo)志TF0TF0進(jìn)位(硬件置進(jìn)位(硬件置位位TF0TF0),并申請(qǐng)中斷。),并申請(qǐng)中斷。 TH0TL08位5位(二)模式(二)模式 0 工作特點(diǎn)工作特點(diǎn)(二)模式(二)模式 0 工作特點(diǎn)工作特點(diǎn)如何得到所需的時(shí)間? 當(dāng)當(dāng)C/ T =0時(shí),控制開關(guān)接通時(shí),控制開關(guān)接通振蕩器振蕩器12分頻輸出端,分頻輸出端,

10、T0對(duì)機(jī)器對(duì)機(jī)器周期計(jì)數(shù)。這就是定時(shí)工作方式。周期計(jì)數(shù)。這就是定時(shí)工作方式。 定時(shí)時(shí)間為:定時(shí)時(shí)間為:t=(213T0初值初值)振蕩周期振蕩周期12 當(dāng)當(dāng)C/ T =1時(shí),時(shí),T0對(duì)外部輸入計(jì)數(shù)。對(duì)外部輸入計(jì)數(shù)。計(jì)數(shù)長度為:計(jì)數(shù)長度為: L=(213T0初值初值)(個(gè)外部脈沖)(個(gè)外部脈沖)例例1:設(shè)晶振為:設(shè)晶振為12MHz,試計(jì)算定時(shí)器,試計(jì)算定時(shí)器T0工作于模式工作于模式0時(shí)時(shí)的最大定時(shí)時(shí)間的最大定時(shí)時(shí)間T。解:解:當(dāng)當(dāng)T0處于處于工作模式工作模式0時(shí),加時(shí),加1計(jì)數(shù)器為計(jì)數(shù)器為13位位。 定時(shí)時(shí)間為:定時(shí)時(shí)間為: t=(213T0初值初值)振蕩周期振蕩周期12 最大定時(shí)時(shí)間為最大定時(shí)時(shí)

11、間為“T0初值初值=0”時(shí)。時(shí)。所以:所以:122T13 振振蕩蕩周周期期12101212613 ms192.81081926 例例2:設(shè)定時(shí)器:設(shè)定時(shí)器T0用于定時(shí)用于定時(shí)10ms,晶振為,晶振為6MHz。編。編程實(shí)現(xiàn):程實(shí)現(xiàn):P1.0輸出周期為輸出周期為20ms的方波。的方波。 解:解:1)確定)確定T0初值初值 當(dāng)當(dāng)T0處于工作模式處于工作模式0時(shí),加時(shí),加1計(jì)數(shù)器為計(jì)數(shù)器為13位。位。定時(shí)時(shí)間:定時(shí)時(shí)間:120T2(T13 振振蕩蕩周周期期初初值值)所以:所以:120T2(ms1013 振振蕩蕩周周期期初初值值)12106101020T6313 初初值值T0T0初值初值=3192=C7

12、8H=3192=C78H = =011000110110001111000 B11000 B即:(即:(TH0)=0110 0011 B=63H(高(高8位)位) (TL0)=1 1000 B=18H(低(低5位)位)3192 32商為高商為高8位,位,余數(shù)為低余數(shù)為低5位位 TMOD的低四位為的低四位為T0的控制位的控制位 模式模式0:M1M0=00, 定時(shí)器方式:定時(shí)器方式:C/T=0, 門控位不受門控位不受INT0的影響:的影響:GATE=0, 其余位:其余位:為為 0。 模式字為模式字為 TMOD=0000 0000 B=00H定時(shí)器定時(shí)器T1定時(shí)器定時(shí)器T0GATE C/ T M1

13、M0 GATEM1C/ TM0TMOD(89H) D7 D6 D5 D4 D3 D2 D1 D0解:解:2 2)確定確定TMOD的初值的初值解:解:3)編寫程序編寫程序方法一:采用查詢方式方法一:采用查詢方式 #include vvoid main()v TMOD=0 x00;v TH0=0 x63; TL0=0 x18;v ET0=1; EA=1;v TR0=1;v P1_0=1;v while(1)v if(TF0=1)v v TF0=0;v TH0=0 x63; TL0=0 x18;v P1_0=P1_0; v v v解:解:3)編寫程序編寫程序方法二:定時(shí)器溢出中斷方式實(shí)現(xiàn)方法二:定時(shí)

14、器溢出中斷方式實(shí)現(xiàn)v#include vvoid main()v v TMOD=0 x00;v TH0=0 x63; TL0=0 x18;v ET0=1; EA=1;v TR0=1;v P1_0=1;v while(1);vvvoid timer_0() interrupt 1vv TH0=0 x63;v TL0=0 x18; v P1_0=P1_0; v思考:設(shè)定時(shí)器設(shè)定時(shí)器T0用于定用于定時(shí)時(shí)10ms,晶振為,晶振為6MHz。編程實(shí)現(xiàn):編程實(shí)現(xiàn):P1.0輸出周期輸出周期為為40ms,高電平寬為高電平寬為10ms,低電平寬為低電平寬為30ms的矩形波。的矩形波。如何編程如何編程? 二、二、

15、模式模式 1 及其應(yīng)用及其應(yīng)用該模式對(duì)應(yīng)的是一個(gè)該模式對(duì)應(yīng)的是一個(gè)16位的定時(shí)器位的定時(shí)器/計(jì)數(shù)器。計(jì)數(shù)器。其結(jié)構(gòu)與操作幾乎與模式其結(jié)構(gòu)與操作幾乎與模式0完全相同,唯一的完全相同,唯一的差別是:在模式差別是:在模式1中,寄存器中,寄存器TH0和和TL0是以是以全部全部16位位參與操作。參與操作。用于定時(shí)工作方式時(shí),定時(shí)時(shí)間為:用于定時(shí)工作方式時(shí),定時(shí)時(shí)間為: 用于計(jì)數(shù)工作方式時(shí),計(jì)數(shù)長度為:用于計(jì)數(shù)工作方式時(shí),計(jì)數(shù)長度為: (216T0初值初值)(個(gè)外部脈沖)(個(gè)外部脈沖)。 例例3 3:設(shè)定時(shí)器:設(shè)定時(shí)器T0T0選擇工作模式選擇工作模式1 1的計(jì)數(shù)器工作方式,的計(jì)數(shù)器工作方式,其計(jì)數(shù)器初值為

16、其計(jì)數(shù)器初值為FFFFFFFFH H,問此時(shí)定時(shí)器,問此時(shí)定時(shí)器T0T0的實(shí)際的實(shí)際用途是什么?用途是什么?解:因其初值為解:因其初值為FFFFHFFFFH,只要隨機(jī)外來一脈沖即可溢,只要隨機(jī)外來一脈沖即可溢出,向出,向CPUCPU申請(qǐng)中斷,故這一內(nèi)部中斷源實(shí)質(zhì)上申請(qǐng)中斷,故這一內(nèi)部中斷源實(shí)質(zhì)上已作為外部中斷源使用。因此此定時(shí)器已作為外部中斷源使用。因此此定時(shí)器T0T0并不用并不用于定時(shí)或計(jì)數(shù)。于定時(shí)或計(jì)數(shù)。例例4 4:設(shè)晶振為:設(shè)晶振為12MHz12MHz,試計(jì)算定時(shí)器,試計(jì)算定時(shí)器T1T1工作于模式工作于模式1 1時(shí)的最大定時(shí)時(shí)間時(shí)的最大定時(shí)時(shí)間T T。解:解:當(dāng)當(dāng)T1T1處于處于工作模式

17、工作模式1 1時(shí),加時(shí),加1 1計(jì)數(shù)器為計(jì)數(shù)器為1616位位。 定時(shí)時(shí)間為: t=(216T1初值)振蕩周期12 最大定時(shí)時(shí)間為“T1初值=0”時(shí)。所以:122T16 振振蕩蕩周周期期12101212616 ms536.6510655366 例例5 5:用定時(shí)器:用定時(shí)器T1T1產(chǎn)生一個(gè)產(chǎn)生一個(gè)50Hz50Hz的方波,由的方波,由 P1.1P1.1輸出。輸出。foscfosc=6MHz=6MHz。解:1)確定定時(shí)器T1初值 方波周期T=1/50 =0.02s = 20ms 用T1定時(shí)10ms,時(shí)間到P1.1引腳電平取反。121T2t16 振振蕩蕩周周期期初初值值)(定定時(shí)時(shí)時(shí)時(shí)間間:12t21

18、T16 振振蕩蕩周周期期初初值值121061ms1021T616 初初值值H78EC605361T 初初值值(TH1TH1)=ECH=ECH,(,(TL1TL1)=78H=78H20ms10ms 10ms解:解:2 2)確定工作模式寄存器)確定工作模式寄存器TMODTMOD的值的值 定時(shí)器T1工作于模式1的定時(shí)器工作方式, 高四位:高四位: GATE=0,C/T=0,M1M0=01 ,低四位:取,低四位:取0。 (TMODTMOD)=0001 0000 B = 10H=0001 0000 B = 10H3)編程(查詢方式)編程(查詢方式) #include void main() TMOD=0

19、 x10; TH1=0 xec; TL1=0 x78; ET1=1; EA=1; TR1=1; P1_1=1; while(1) if(TF1=1) TF1=0; TH1=0 x63; TL1=0 x18; P1_1=P1_1; 3)編程(定時(shí)器溢出中斷方式)編程(定時(shí)器溢出中斷方式) #include void main() TMOD=0 x10; TH1=0 xec; TL1=0 x78; ET1=1; EA=1; TR1=1; P1_1=1; while(1);void timer_1() interrupt 3 TH1=0 x63; TL1=0 x18; P1_1=P1_1; 模式模式

20、2把把TL0(或或TL1)配置成一個(gè)可以配置成一個(gè)可以自動(dòng)重裝自動(dòng)重裝載載的的8位位定時(shí)器定時(shí)器/計(jì)數(shù)器,邏輯電路結(jié)構(gòu)如下圖。計(jì)數(shù)器,邏輯電路結(jié)構(gòu)如下圖。三、三、 模式模式 2 及其應(yīng)用及其應(yīng)用TL0計(jì)數(shù)溢出時(shí),不僅使溢出中斷標(biāo)志位計(jì)數(shù)溢出時(shí),不僅使溢出中斷標(biāo)志位TF0置置1,而,而且還自動(dòng)把且還自動(dòng)把TH0中的內(nèi)容重新裝載到中的內(nèi)容重新裝載到TL0中。中。v在程序初始化時(shí),在程序初始化時(shí),TL0TL0和和TH0TH0由軟件賦予相同的初值由軟件賦予相同的初值。v用于定時(shí)工作方式時(shí),定時(shí)時(shí)間為: t=(28TL0初值)振蕩周期12v用于計(jì)數(shù)工作方式時(shí),計(jì)數(shù)長度為:用于計(jì)數(shù)工作方式時(shí),計(jì)數(shù)長度為:

21、 (2(28 8TL0TL0初值初值) ) (個(gè)外部脈沖)(個(gè)外部脈沖)v該模式可省去軟件中重裝常數(shù)的語句,并可產(chǎn)生相該模式可省去軟件中重裝常數(shù)的語句,并可產(chǎn)生相當(dāng)精確的定時(shí)時(shí)間,適合于作串行口波特率發(fā)生器當(dāng)精確的定時(shí)時(shí)間,適合于作串行口波特率發(fā)生器。 例例6:當(dāng):當(dāng)P3.4引腳上的電平發(fā)生負(fù)跳變時(shí),從引腳上的電平發(fā)生負(fù)跳變時(shí),從P1.0輸出輸出一個(gè)一個(gè)500s的同步脈沖。的同步脈沖。編程實(shí)現(xiàn)該功能,fosc=6MHz。 解解: 首先選首先選T0為模式為模式2,外部事件計(jì)數(shù)方式。當(dāng),外部事件計(jì)數(shù)方式。當(dāng)P3.4引引腳上的電平發(fā)生負(fù)跳變時(shí),腳上的電平發(fā)生負(fù)跳變時(shí),T0計(jì)數(shù)器加計(jì)數(shù)器加1,溢出標(biāo)志

22、,溢出標(biāo)志TF0置置1;然后改變;然后改變T0為為500s定時(shí)工作方式,并使定時(shí)工作方式,并使P1.0輸出由輸出由1變?yōu)樽優(yōu)?。T0定時(shí)到產(chǎn)生溢出,使定時(shí)到產(chǎn)生溢出,使P1.0引腳引腳恢復(fù)輸出高電平,恢復(fù)輸出高電平,T0又恢復(fù)外部事件方式。又恢復(fù)外部事件方式。(2)計(jì)算T0初值v T0T0工作在外部事件計(jì)數(shù)方式工作在外部事件計(jì)數(shù)方式: 題目要求題目要求T0T0引腳出現(xiàn)一次外部事件時(shí),引起引腳出現(xiàn)一次外部事件時(shí),引起T0T0中中斷。斷。 所以:設(shè)計(jì)計(jì)數(shù)器初值為所以:設(shè)計(jì)計(jì)數(shù)器初值為FFHFFH,當(dāng)計(jì)數(shù)器再加,當(dāng)計(jì)數(shù)器再加1 1就就溢出。溢出。 即即: T0: T0初值初值+1=2+1=28 8

23、T0T0初值初值 = 2= 28 8 1=11111111B=0FFH1=11111111B=0FFH 即:(TH0)=(TL0)=FFHv T0 T0工作在定時(shí)工作方式:工作在定時(shí)工作方式: 因?yàn)榫д耦l率為因?yàn)榫д耦l率為6MHz6MHz,定時(shí),定時(shí)500s500s。 所以:所以:(2(28 8T0T0初值初值) )2s=500s2s=500s 得出:得出:T0T0初值初值 =6=06H=6=06H, 即:(TH0)=(TL0)=06H(3)程序清單:v#include vbit flag=0;vmain()vv TMOD=0 x06;v TH0=0 xff;v TL0=0 xff;v P1_

24、0=1;v ET0=1;v EA=1;v TR0=1;v while(1); vvvoid timer_0() interrupt 1vv TR0=0;v flag=flag;v if (flag=0)v v P1_0=1;v TMOD=0 x06;v TH0=0 xff;v TL0=0 xff;v TR0=1;v v elsev v P1_0=0;v TMOD=0 x02;v TH0=0 x06;v TL0=0 x06;v TR0=1;v v例6-8完例例7 7:利用定時(shí)器:利用定時(shí)器T1T1的模式的模式2 2對(duì)外部信號(hào)計(jì)數(shù)。要求每計(jì)對(duì)外部信號(hào)計(jì)數(shù)。要求每計(jì)滿滿100100次,將次,將 P1

25、.0P1.0端取反。端取反。解:(1)選擇模式 外部信號(hào)由T1(P3.5)引腳輸入,每發(fā)生一次負(fù)跳變計(jì)數(shù)器加1,每輸入100個(gè)脈沖,計(jì)數(shù)器發(fā)生溢出中斷,中斷服務(wù)程序?qū)1.0取反一次。 T1計(jì)數(shù)工作方式模式2的模式字為(TMOD)=60H。 T0不用時(shí),TMOD的低4位可任取,但不能進(jìn)入模式3,一般取0。(2)計(jì)算T1的計(jì)數(shù)初值 X= 28 100=156=9CH 因此:TL1的初值為9CH,重裝初值寄存器TH1=9CH。(3)程序清單v#includevmain()vv TMOD=0 x60;v TH1=0 x9c;v TL1=0 x9c;v ET1=1;v EA=1;v TR1=1;v w

26、hile(1);vvvoid timer_1() interrupt 3vv P1_1=P1_1;v四、四、 模式模式 3 3 及其應(yīng)用及其應(yīng)用 工作模式工作模式3對(duì)對(duì)T0和和T1大不相同。大不相同。 若將若將T0設(shè)置為設(shè)置為模式模式3,TL0和和TH0被分成為兩個(gè)相互獨(dú)立的被分成為兩個(gè)相互獨(dú)立的8位計(jì)位計(jì)數(shù)器數(shù)器,邏輯圖如下圖:,邏輯圖如下圖: T0設(shè)置為模式3,TL0和TH0被分成兩個(gè)相互獨(dú)立的8位計(jì)數(shù)器。TL0: 用原T0的各控制位、引腳和中斷源,即C/T,GATE,TR0,TF0,T0(P3.4)引腳,INT0(P3.2)引腳。 TL0可工作在定時(shí)器方式和計(jì)數(shù)器方式。其功能和操作與模式

27、0、模式1相同(只是8位)。TH0: 只可用作簡單的內(nèi)部定時(shí)功能。 TH0占用了定時(shí)器T1的控制位TR1和T1的中斷標(biāo)志TF1,其啟動(dòng)和關(guān)閉僅受TR1的控制。v定時(shí)器T1無工作模式3狀態(tài)。在T0用作模式3時(shí),T1仍可設(shè)置為模式02。vT0模式3下T1的邏輯電路結(jié)構(gòu)見書圖6-11所示。v由于TR1和TF1被定時(shí)器T0占用,計(jì)數(shù)器開關(guān)K已被接通,此時(shí),僅用T1控制位C/T切換其定時(shí)或計(jì)數(shù)器工作方式就可使T1運(yùn)行。當(dāng)計(jì)數(shù)器溢出時(shí),只能將輸出送入串行口或用于不需要中斷的場合,一般作波特率發(fā)生器。例例8 8:設(shè)某用戶系統(tǒng)已使用了兩個(gè)外部中斷源,并置:設(shè)某用戶系統(tǒng)已使用了兩個(gè)外部中斷源,并置定時(shí)器定時(shí)器T

28、1T1工作在模式工作在模式2 2,作串行口波特率發(fā)生器用。,作串行口波特率發(fā)生器用?,F(xiàn)要求再增加一個(gè)外部中斷源,并由現(xiàn)要求再增加一個(gè)外部中斷源,并由P1.0P1.0引腳輸出引腳輸出一個(gè)一個(gè)5kHz5kHz的方波。的方波。FoscFosc=12MHz.=12MHz.解:(1)工作模式確定 可設(shè)置T0工作在模式3計(jì)數(shù)器方式,把T0的引腳作附加的外部中斷輸入端,TL0的計(jì)數(shù)初值為FFH,當(dāng)檢測到T0引腳電平出現(xiàn)由1至0的負(fù)跳變時(shí),TL0產(chǎn)生溢出,申請(qǐng)中斷。 T0模式3下,TL0作計(jì)數(shù)用,而TH0用作8位的定時(shí)器,定時(shí)控制P1.0引腳輸出5kHz的方波信號(hào)。 (2)計(jì)算初值TL0的計(jì)數(shù)初值為FFH。T

29、H0的計(jì)數(shù)初值X為: P1.0方波周期 T=1/(5kHz)=0.2ms=200s 用TH0作定時(shí)100s時(shí), X=256-100s/1s=156(3)程序清單 #include unsigned char temp;main() TMOD=0 x27; TL0=0 xff; TH0=156; TH1=temp; TL1=temp; TCON=0 x55; IE=0 x9f; while(1);void int_0() interrupt 0 void timer_l0() interrupt 1 TL0=0 xff;void int_1() interrupt 2 void timer_h0

30、() interrupt 3 TH0=156;void s_con() interrupt 4五、五、 綜合應(yīng)用舉例綜合應(yīng)用舉例例8:設(shè)時(shí)鐘頻率為6MHz。編程使P1.0所接的發(fā)光二極管閃爍,亮滅的時(shí)間分別為1S,利用T0定時(shí)。解:(1)定時(shí)器T0工作模式的確定模式0最長可定時(shí)16.384ms; 模式1最長可定時(shí)131.072ms; 模式2最長可定時(shí)512s;定時(shí)1s,可選用模式1,每隔100ms中斷一 次,中斷10次從而達(dá)到1s的定時(shí)。(2)求計(jì)數(shù)器初值X (216X)12/(6 106) =10010-3 s X=15536=3CB0H 因此:(TL0)=0B0H (TH0)=3CH(3)

31、實(shí)現(xiàn)方法: 對(duì)于中斷10次計(jì)數(shù),可使T0工作在計(jì)數(shù)方式,也可用循環(huán)程序的方法實(shí)現(xiàn)。本例采用循環(huán)程序法。(4)源程序清單v#include vunsigned char count=0;vmain()vv TMOD=0 x01;v TH0=0 xb0;v TL0=0 x3c;v ET0=1;v EA=0;v TR0=1;v while(count!=10);v TR0=0;v while(1);vvvoid timer_0() interrupt 1vv count+;v 例例9 9:設(shè)計(jì)實(shí)時(shí)時(shí)鐘程序。時(shí)鐘:設(shè)計(jì)實(shí)時(shí)時(shí)鐘程序。時(shí)鐘 就是以秒、分、時(shí)為單位進(jìn)行計(jì)就是以秒、分、時(shí)為單位進(jìn)行計(jì)時(shí)。用定時(shí)器與中斷的聯(lián)合應(yīng)用時(shí)。用定時(shí)器與中斷的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論