版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、定時(shí)器/計(jì)數(shù)器及其應(yīng)用,,2,定時(shí)器/計(jì)數(shù)器及其應(yīng)用,定時(shí)器/計(jì)數(shù)器的應(yīng)用場(chǎng)合: 定時(shí)或延時(shí)控制、對(duì)外部事件的檢測(cè)、計(jì)數(shù)等;MCS-51系列8031、8051單片機(jī)有兩個(gè)16位定時(shí)器/計(jì)數(shù)器(即T0和T1);8032、8052單片機(jī)有3個(gè)16位定時(shí)器/計(jì)數(shù)器(即T0、 T1和T2);,3,定時(shí)器/計(jì)數(shù)器及其應(yīng)用,所謂計(jì)數(shù)器就是對(duì)外部輸入脈沖的計(jì)數(shù);所謂定時(shí)器也是對(duì)脈沖進(jìn)行計(jì)數(shù)完成的,計(jì)數(shù)的是MCS-51內(nèi)部產(chǎn)生的標(biāo)準(zhǔn)脈沖,通
2、過(guò)計(jì)數(shù)脈沖個(gè)數(shù)實(shí)現(xiàn)定時(shí)。所以,定時(shí)器和計(jì)數(shù)器本質(zhì)上是一致的,在以后的敘述中將定時(shí)器/計(jì)數(shù)器籠統(tǒng)稱為定時(shí)器。,4,,,,5,第5章 定時(shí)器/計(jì)數(shù)器及其應(yīng)用,5.1 定時(shí)器的結(jié)構(gòu)及工作原理5.2 定時(shí)器的TMOD和TCON寄存器5.3 定時(shí)器的工作方式5.3.1 方式05.3.2 方式15.3.3 方式25.3.4 方式35.4 定時(shí)器的編程和應(yīng)用,6,第5章 定時(shí)器/計(jì)數(shù)器及其應(yīng)用,5.1 定時(shí)器的結(jié)構(gòu)及工作原理,7,
3、5.1 定時(shí)器的結(jié)構(gòu)及工作原理,組成:兩個(gè)16位的定時(shí)器T0和T1,以及他們的工作方式寄存器TMOD和控制寄存器TCON等組成。內(nèi)部通過(guò)總線與CPU相連。定時(shí)器T0和T1各由兩個(gè)8位特殊功能寄存器TH0、TL0、TH1、TL1構(gòu)成。工作方式寄存器TMOD:用于設(shè)置定時(shí)器的工作模式和工作方式;控制寄存器TCON:用于啟動(dòng)和停止定時(shí)器的計(jì)數(shù),并控制定時(shí)器的狀態(tài);單片機(jī)復(fù)位時(shí),兩個(gè)寄存器的所有位都被清0。,8051定時(shí)器內(nèi)部結(jié)
4、構(gòu)框圖,8,5.1 定時(shí)器的結(jié)構(gòu)及工作原理,兩個(gè)可編程的定時(shí)器/計(jì)數(shù)器T1、T0。每個(gè)定時(shí)器內(nèi)部結(jié)構(gòu)實(shí)際上就是一個(gè)可編程的加法計(jì)數(shù)器,由編程來(lái)設(shè)置它工作在定時(shí)狀態(tài)還是計(jì)數(shù)狀態(tài)。兩種工作模式: (1) 計(jì)數(shù)器工作模式就是對(duì)外部事件進(jìn)行計(jì)數(shù)。計(jì)數(shù)脈沖來(lái)自相應(yīng)的外部輸入引腳T0(P3.4)或T1(P3.5)。當(dāng)輸入信號(hào)發(fā)生由1至0的負(fù)跳變(下降沿)時(shí),計(jì)數(shù)器(TH0,TL0或TH1,TL1)的值增1。計(jì)數(shù)的最高頻率一般為振蕩頻率
5、的1/24。Why?(2) 定時(shí)器工作模式也是通過(guò)計(jì)數(shù)實(shí)現(xiàn)的。計(jì)數(shù)脈沖來(lái)自內(nèi)部時(shí)鐘脈沖,每個(gè)機(jī)器周期計(jì)數(shù)值增1,每個(gè)機(jī)器周期=12個(gè)振蕩周期,因此計(jì)數(shù)頻率為振蕩頻率的1/12。所以定時(shí)時(shí)間=計(jì)數(shù)值×機(jī)器周期。4種工作方式 (方式0-方式3) 。,9,5.1 定時(shí)器的結(jié)構(gòu)及工作原理,當(dāng)控制信號(hào) 定時(shí)器工作在定時(shí)方式;加1計(jì)數(shù)器對(duì)脈沖f進(jìn)行計(jì)數(shù),每來(lái)一個(gè)脈沖,計(jì)數(shù)器加1,直到計(jì)時(shí)器計(jì)滿溢出; 因
6、為 ,即一個(gè)計(jì)數(shù)脈沖的周期就是一個(gè)機(jī)器周期;計(jì)數(shù)器計(jì)數(shù)的是機(jī)器周期脈沖個(gè)數(shù)。從而實(shí)現(xiàn)定時(shí)。當(dāng)控制信號(hào) 定時(shí)器工作在計(jì)數(shù)方式;加1計(jì)數(shù)器對(duì)來(lái)自輸入引腳T0(P3.4)和T1(P3.5)的外信號(hào)脈沖進(jìn)行計(jì)數(shù),每來(lái)一個(gè)脈沖,計(jì)數(shù)器加1,直到計(jì)時(shí)器計(jì)滿溢出;,,10,,控制信號(hào)K可以控制計(jì)數(shù)器的“啟動(dòng)”和“停止”,,11,振蕩周期:是振蕩脈沖的周期,也成為“拍”,用P表示。就是晶體振蕩器的周期,或外
7、部振蕩脈沖的周期。是MCS-51單片機(jī)的最小時(shí)序單位。,時(shí)鐘周期:是振蕩源信號(hào)經(jīng)二分頻后形成的時(shí)鐘脈沖信號(hào),用S表示。每個(gè)時(shí)鐘周期分成P1、P2兩個(gè)節(jié)拍,又被稱為一個(gè)狀態(tài)。是MCS-51單片機(jī)的最基本的時(shí)序單位。,機(jī)器周期:通常將完成一個(gè)基本操作所需的時(shí)間稱為機(jī)器周期,由6個(gè)狀態(tài)(12拍)組成,所以一個(gè)機(jī)器周期可以依次表示為S1P1、S2P2……S6P1、S6P2。通常算術(shù)邏輯操作發(fā)生在節(jié)拍P1期間,而內(nèi)部寄存器到寄存器的傳送發(fā)生在節(jié)拍
8、P2期間。,指令周期:是指CPU執(zhí)行一條指令所需要的時(shí)間。是MCS-51單片機(jī)的最大的時(shí)序單位,由若干個(gè)振蕩周期組成。一個(gè)指令周期通常含有1~4個(gè)機(jī)器周期,MCS-51典型的指令周期為一個(gè)機(jī)器周期。,振蕩周期、時(shí)鐘周期、機(jī)器周期和指令周期,12,5.1 定時(shí)器的結(jié)構(gòu)及工作原理,在每個(gè)機(jī)器周期的S5P2期間采樣檢測(cè)引腳輸入電平。若前一個(gè)機(jī)器周期采樣值為“1”,后一個(gè)機(jī)器周期采樣值為“0”,則計(jì)數(shù)器加1。新的計(jì)數(shù)值在檢測(cè)到輸入引腳電
9、平發(fā)生“1”到“0”的負(fù)跳變(下降沿)后,于下一個(gè)機(jī)器周期的S3P1期間裝入計(jì)數(shù)器中。由于CPU需要兩個(gè)機(jī)器周期來(lái)識(shí)別一個(gè)“1”到“0”的跳變信號(hào),所以最高的計(jì)數(shù)頻率為振蕩周期的1/24。,,,,,13,5.1 定時(shí)器的結(jié)構(gòu)及工作原理,定時(shí)/計(jì)數(shù)器對(duì)輸入信號(hào)的要求外部計(jì)數(shù)脈沖的最高頻率為系統(tǒng)振蕩器頻率的1/24,例如選用12MHz頻率的晶體,則可輸入500KHz的外部脈沖。輸入信號(hào)的高、低電平至少要分別保持一個(gè)機(jī)器周期。如圖
10、所示,圖中Tcy為機(jī)器周期。,14,可編程定時(shí)器的工作方式、啟動(dòng)、停止、溢出標(biāo)志、計(jì)數(shù)器等都是可編程的——通過(guò)設(shè)置寄存器TMOD,TCON,TH0,TL0,TH1和TL1 實(shí)現(xiàn)。當(dāng)設(shè)置了定時(shí)器的工作方式并啟動(dòng)定時(shí)器工作后,定時(shí)器就按被設(shè)定好的工作方式獨(dú)立工作,不再占用CPU,只有在計(jì)數(shù)器計(jì)滿溢出時(shí)才向CPU申請(qǐng)中斷,占用CPU。由此可見(jiàn),定時(shí)器是單片機(jī)中工作效率高且應(yīng)用靈活的部件。,5.1 定時(shí)器的結(jié)構(gòu)及工作原理,15,第5章
11、 定時(shí)器/計(jì)數(shù)器及其應(yīng)用,5.2 定時(shí)器的TMOD和TCON寄存器,16,5.2 定時(shí)器的TMOD和TCON寄存器,8051單片機(jī)定時(shí)器主要有幾個(gè)特殊功能寄存器組成:TMOD,TCON,TH0,TL0,TH1,TL1。TMOD:設(shè)置定時(shí)器的工作方式;TCON:控制定時(shí)器的啟動(dòng)和停止;TH0和TL0 :存放定時(shí)器T0的初值或計(jì)數(shù)結(jié)果; TH0存放高8位,TL0 存放低8位;TH1和TL1 :存放定時(shí)器T1的初值或計(jì)數(shù)結(jié)果;
12、 TH1存放高8位,TL1 存放低8位;,17,5.2.1 工作方式控制寄存器TMOD,8位分為兩組,高4位控制T1,低4位控制T0。(1) GATE — 門控位 0: 以TRX (X=0,1) 來(lái)啟動(dòng)定時(shí)器/計(jì)數(shù)器運(yùn)行。1: 用外中斷引腳 (INT0*或INT1*) 上的高電平和TRX來(lái)啟動(dòng)定時(shí)器/計(jì)數(shù)器運(yùn)行。,(2) M1、M0 — 工作方式選擇位 M1 M0 工 作 方 式
13、 0 0 方式0,13位定時(shí)器/計(jì)數(shù)器。 0 1方式1,16位定時(shí)器/計(jì)數(shù)器。 1 0 方式2,8位常數(shù)自動(dòng)重新裝載 1 1 方式3,僅適用于T0,T0分成兩個(gè)8位計(jì)數(shù)器,T1停止計(jì)數(shù)。,(3) C/T* — 計(jì)數(shù)器模式和定時(shí)器模式選擇位0: 定時(shí)器模式。 1: 計(jì)數(shù)器模式。,,,(4) TMOD無(wú)位地址,不能位尋
14、址。(5) 復(fù)位時(shí),TMOD所有位均為“0”。,18,低4位與外部中斷有關(guān),后面介紹。高4位的功能如下: (1) TF1、TF0 —計(jì)數(shù)溢出標(biāo)志位 定時(shí)器T0或T1計(jì)數(shù)溢出時(shí),由硬件自動(dòng)將此位置“1”;TFx可以由程序查詢,也是定時(shí)中斷的請(qǐng)求源;(2) TR1、TR0 —計(jì)數(shù)運(yùn)行控制位 TRx=1: 啟動(dòng)定時(shí)器/計(jì)數(shù)器工作 TRx=0: 停止定時(shí)器/計(jì)數(shù)器工作,5.2.2 控制寄存器TCON,,
15、,19,,,20,5.2.3 定時(shí)/計(jì)數(shù)器的初始化,MCS-51單片機(jī)的定時(shí)器/計(jì)數(shù)器是可編程的,但在進(jìn)行定時(shí)或計(jì)數(shù)之前要對(duì)程序進(jìn)行初始化,具體步驟如下:(1)對(duì)TMOD賦值,以確定定時(shí)器的工作模式;(2)置定時(shí)/計(jì)數(shù)器初值,直接將初值寫入寄存器的TH0、TL0或TH1、TL1;(3)根據(jù)需要,對(duì)IE置初值,開(kāi)放定時(shí)器中斷;(4)對(duì)TCON寄存器中的TR0或TR1置位,啟動(dòng)定時(shí)/計(jì)數(shù)器,置位以后,計(jì)數(shù)器即按規(guī)定的工作模式和初
16、值進(jìn)行計(jì)數(shù)或開(kāi)始定時(shí)。,21,,,5.2.3 定時(shí)/計(jì)數(shù)器的初始化,初值計(jì)算: 設(shè)計(jì)數(shù)器的最大值為M,則置入的初值X為: 計(jì)數(shù)方式:X=M-計(jì)數(shù)值 定時(shí)方式:由(M-X)T=定時(shí)值,得X=M-定時(shí)值/T T為計(jì)數(shù)周期,是單片機(jī)的機(jī)器周期。(模式0: M為213,模式1: M為216,模式2和3: M為28),例如:機(jī)器周期為1μs 時(shí), 若工作在模式0,則最大定時(shí)值為:213×1μs =8.192m
17、s 若工作在模式1,則最大定時(shí)值為: 216×1μs =65.536ms,22,第5章 定時(shí)器/計(jì)數(shù)器及其應(yīng)用,5.3 定時(shí)器的工作方式,23,MCS-51的定時(shí)器T0有4種工作方式:即:方式0,方式1,方式2,方式3。MCS-51的定時(shí)器T1有3種工作方式:即:方式0,方式1,方式2。,5.3 定時(shí)器的工作方式,24,5.2.1 方式0 M1、M0設(shè)置為00 ,為13位計(jì)數(shù)器,以T1為例,
18、其框圖如下:,5.3 定時(shí)器的工作方式——方式0,計(jì)數(shù)脈沖輸入,加1計(jì)數(shù)器,25,5.3 定時(shí)器的工作方式——方式0,在這種方式下,16位寄存器TH1和TL1只用13位,由TH1的8位和TL1的低5位組成。TL1的高3位不定。當(dāng)TL1的低5位計(jì)數(shù)溢出時(shí),向TH1進(jìn)位。而TH1計(jì)數(shù)溢出時(shí),則向中斷標(biāo)志位TF1進(jìn)位(即硬件將TF1置1),并請(qǐng)求中斷。可通過(guò)查詢TF1是否置“1”或考察中斷是否發(fā)生來(lái)判定定時(shí)器T1的操作完成與否。,26,,
19、5.3 定時(shí)器的工作方式——方式0,當(dāng)C/T=0時(shí),為定時(shí)工作模式,開(kāi)關(guān)接到振蕩器的12分頻器輸出上,計(jì)數(shù)器對(duì)機(jī)器周期脈沖計(jì)數(shù)。其定時(shí)時(shí)間為:(213-初值)×振蕩周期×12例如:若晶振頻率為12MHz,則最長(zhǎng)的定時(shí)時(shí)間為(213-0)×(1/12)×12us=8.191ms當(dāng)C/T=1時(shí),為計(jì)數(shù)工作模式,開(kāi)關(guān)與外部引腳T1(P3.5)接通,計(jì)數(shù)器對(duì)來(lái)自外部引腳的輸入脈沖計(jì)數(shù)。當(dāng)
20、外部信號(hào)發(fā)生負(fù)跳變時(shí)計(jì)數(shù)器加1。,27,5.3 定時(shí)器的工作方式——方式0,GATE控制定時(shí)器Tx(T1或T0)的條件:(1) 當(dāng)GATE=0時(shí),“或門”輸出恒為1,“與門”的輸出信號(hào)K由TRx決定(即此時(shí)K=TRx),定時(shí)器不受INTx輸入電平的影響,由TRx直接控制定時(shí)器的啟動(dòng)和停止。TRx=1;計(jì)數(shù)啟動(dòng);TRx=0;計(jì)數(shù)停止;(2) 當(dāng)GATE=1時(shí), “與門”的輸出信號(hào)K由INTx輸入電平和TRx位的狀態(tài)一起
21、決定(即此時(shí)K=TRx·INTx),當(dāng)且僅當(dāng)TRx=1且INTx=1(高電平)時(shí),計(jì)數(shù)啟動(dòng);否則,計(jì)數(shù)停止。,返回,28,5.3.2 方式1 M1、M0=01,為16位的計(jì)數(shù)器,除位數(shù)外,其他與方式0相同。其定時(shí)時(shí)間為:(216-初值)×振蕩周期×12例如:若晶振頻率為12MHz,則最長(zhǎng)的定時(shí)時(shí)間為(216-0)×(1/12)&
22、#215;12us=65.536ms,5.3 定時(shí)器的工作方式——方式1,29,5.3.3 方式2 M1、M0=10 ,為自動(dòng)恢復(fù)初值的8位計(jì)數(shù)器,等效框圖如下: TLx作為8位計(jì)數(shù)器,THx作為重置初值的緩沖器。,5.3 定時(shí)器的工作方式——方式2,THx作為常數(shù)緩沖器,當(dāng)TLx計(jì)數(shù)溢出時(shí),在置“1”溢出標(biāo)志TFx的同時(shí),還自動(dòng)的將THx中的初值送至TLx,使TLx從初值開(kāi)始重新計(jì)數(shù)。定時(shí)器/計(jì)數(shù)器的方式2工作過(guò)程如圖 (x=
23、0, 1) 。,30,優(yōu)點(diǎn):方式0和方式1用于循環(huán)重復(fù)定時(shí)或計(jì)數(shù)時(shí),在每次計(jì)數(shù)器擠滿溢出后,計(jì)數(shù)器復(fù)0。若要進(jìn)行新一輪的計(jì)數(shù),就得重新裝入計(jì)數(shù)初值。這樣一來(lái)不僅造成編程麻煩,而且影響定時(shí)精度。而方式2具有初值自動(dòng)裝入的功能,避免了這個(gè)缺點(diǎn),可實(shí)現(xiàn)精確的定時(shí)。缺點(diǎn):只有8位計(jì)數(shù)器,定時(shí)時(shí)間短、計(jì)數(shù)范圍小。其定時(shí)時(shí)間為: (28-初值)×振蕩周期×12若晶振頻率為12MHz,則最長(zhǎng)的定時(shí)時(shí)間為(2
24、8-0)×(1/12)×12us=0.256ms,5.3 定時(shí)器的工作方式——方式2,方式2工作過(guò)程圖 (x=0, 1) 。,31,5.3.4 方式3 只適用于定時(shí)器/計(jì)數(shù)器T0。T1不能工作在方式3。如果將T1置為方式3,則相當(dāng)于TR1=0,停止計(jì)數(shù) (此時(shí)T1可用來(lái)作串行口波特率產(chǎn)生器) 。1. 工作方式3下的T0 T0在方式3時(shí)被拆成兩個(gè)獨(dú)立的8位計(jì)數(shù)器:TH0和TL0。8位計(jì)數(shù)器TL0使
25、用T0的狀態(tài)控制位C/T*、GATE、TR0、INT0,它既可以工作在定時(shí)方式,也可以工作在計(jì)數(shù)方式。8位定時(shí)器TH0被固定為一個(gè)8位定時(shí)器(不能作外部計(jì)數(shù)模式) ,并使用定時(shí)器T1的狀態(tài)控制位TR1,同時(shí)占用定時(shí)器T1的中斷請(qǐng)求源TF1。此時(shí),定時(shí)器TH0的啟動(dòng)或停止只受TR1控制。TR1=1時(shí),啟動(dòng)TH0的計(jì)數(shù); TR1=0時(shí),停止TH0的計(jì)數(shù),5.3 定時(shí)器的工作方式——方式3,32,5.3 定時(shí)器的工作方式,各引腳與T0的
26、邏輯關(guān)系如圖所示:,,,33,2. T0工作在方式3下T1的各種工作方式 注意:當(dāng)T0處于方式3時(shí), T1仍可設(shè)置為方式0、方式1和方式2。當(dāng)時(shí)由于TR1、TF1和T1的中斷源都已被定時(shí)器T0(中的TH0)占用,所以定時(shí)器T1 僅有控制位C/T來(lái)決定其工作在定時(shí)方式或計(jì)數(shù)方式。當(dāng)計(jì)數(shù)器計(jì)滿溢出時(shí),不能置位“TF1”,而只能將輸出送往串口。所以,此時(shí)定時(shí)器T1一般用作串口的波特率發(fā)生器,或不需要中斷的場(chǎng)合。(1) T1工作在方式
27、0,5.3 定時(shí)器的工作方式,34,(2) T1工作在方式1,(3) T1工作在方式2,5.3 定時(shí)器的工作方式,35,第5章 定時(shí)器/計(jì)數(shù)器及其應(yīng)用,5.4 定時(shí)器的編程和應(yīng)用,36,5.4 定時(shí)器的編程和應(yīng)用,編程說(shuō)明MCS-51單片機(jī)的定時(shí)器是可編程的,但在進(jìn)行定時(shí)或計(jì)數(shù)之前要對(duì)程序進(jìn)行初始化,具體步驟如下:(1)確定工作方式字:對(duì)TMOD寄存器正確賦值;(2)確定定時(shí)初值:計(jì)算初值,直接將初值寫入寄存器的TH0、
28、TL0或TH1、TL1;初值計(jì)算: 設(shè)計(jì)數(shù)器的最大值為M,則置入的初值X為: 計(jì)數(shù)方式:X=M-計(jì)數(shù)值 定時(shí)方式:由(M-X)T=定時(shí)值,得X=M-定時(shí)值/T T為計(jì)數(shù)周期,是單片機(jī)的機(jī)器周期。(模式0 M為213,模式1 M為216,模式2和3 M為28)(3)根據(jù)需要,對(duì)IE置初值,開(kāi)放定時(shí)器中斷;(4)啟動(dòng)定時(shí)/計(jì)數(shù)器,對(duì)TCON寄存器中的TR0或TR1置位,置位以后,計(jì)數(shù)器即按規(guī)定的工
29、作模式和初值進(jìn)行計(jì)數(shù)或開(kāi)始定時(shí)。,37,5.4 定時(shí)器的編程和應(yīng)用,例5-1 要在P1.0上輸出一個(gè)周期為2ms的方波,假設(shè)系統(tǒng)振蕩頻率采用12MHz。 利用T0方式0產(chǎn)生1ms的定時(shí)方波的周期用T0來(lái)確定,讓T0每隔1ms計(jì)數(shù)溢出1次,即TF0=1;查詢到TF0=1 則CPU對(duì)P1.0取反。,即要使P1.0每隔1ms取反一次。,38,5.4 定時(shí)器的編程和應(yīng)用,第一步: 確定工作方式字 方式0 (
30、13位)最長(zhǎng)可定時(shí) 8.192ms; 方式1 (16位)最長(zhǎng)可定時(shí) 65.536ms; 方式2 (8位)最長(zhǎng)可定時(shí) 256?s。T0為方式0, ? M1M0=00 定時(shí)工作狀態(tài), ? C/T=0GATE=0,不受INT0控制,T1不用全部取“0”值。故TMOD=00H,39,5.4 定時(shí)器的編程和應(yīng)用,第二步: 計(jì)算1ms定時(shí)的初值X 設(shè)初值為X,則有: (213-X) ×12
31、15;10-6 ×1/12=1×10-3可求得:X=8192-1000=7192X化為16進(jìn)制,即X=1C18H=1,1100,000 1,1000B。所以,T0的初值為: TH0=E0H TL0=18H,40,第三步: 程序設(shè)計(jì) 采用查詢TF0的狀態(tài)來(lái)控制P1.0的輸出,同時(shí)要重新裝入初值。,5.4 定時(shí)器的編程和應(yīng)用,41,參考程序: ORG 0100H
32、MAIN:MOV TMOD, #00H;設(shè)置T0為方式0MOVTL0,#18H;送計(jì)數(shù)初值 MOVTH0,#0E0H;送計(jì)數(shù)初值SETB TR0 ;啟動(dòng)T0LOOP:JBC TF0,NEXT ;查詢定時(shí)時(shí)間到,轉(zhuǎn)NEXT,同時(shí)清TF0SJMPLOOP;重復(fù)循環(huán)NEXT:MOV TL0, #18H ;T0重置初值 MOV
33、TH0, #0E0H ;T0重置初值 CPL P1.0 ;P1.0的狀態(tài)取反SJMPLOOP;重復(fù)循環(huán)END,42,例5-2 將[例5-1]中的輸出方波周期改為1秒。 分析: 周期為1s的方波要求500ms的定時(shí)。 (1) T0工作方式的確定因定時(shí)時(shí)間較長(zhǎng),采用哪一種工作方式?由各種工作方式的特性,可計(jì)算出: 方式0 (13位)最長(zhǎng)可定時(shí) 8.192
34、ms; 方式1 (16位)最長(zhǎng)可定時(shí) 65.536ms; 方式2 (8位)最長(zhǎng)可定時(shí) 256?s。 所以采用定時(shí)器定時(shí)加軟件計(jì)數(shù)的方法來(lái)實(shí)現(xiàn)延長(zhǎng)定時(shí)。選方式1,定時(shí)50ms,軟件計(jì)數(shù)10次。50ms ×10=500ms。 所以,TMOD=01H,5.4 定時(shí)器的編程和應(yīng)用,以上各方式都不滿足要求,43,(2) 計(jì)算計(jì)數(shù)初值因?yàn)? (216-X)×12×10
35、-6 ×1/12=50×10-3所以: X=15536=3CB0H因此: TH0=3CH,TL0=B0H (3) 10次計(jì)數(shù)的實(shí)現(xiàn)設(shè)計(jì)一個(gè)軟件計(jì)數(shù)器,初始值設(shè)為10。每隔50ms定時(shí)時(shí)間到,產(chǎn)生溢出標(biāo)志TF0,程序查詢到TF0=1,則軟件計(jì)數(shù)器減1。這樣減到0時(shí)就獲得了500ms的定時(shí)。,5.4 定時(shí)器的編程和應(yīng)用,44,(4) 程序設(shè)計(jì)(參考程序) MAIN: MOV TM
36、OD,#01H ;設(shè)T0工作在方式1MOV TL0,#0B0H ;給T0設(shè)初值MOV TH0,#3CHMOVR7,#10;軟件計(jì)數(shù)器初值SETB TR0 ;啟動(dòng)T0LOOP:JBCTF0, NEXT;查詢定時(shí)時(shí)間到,轉(zhuǎn)NEXT,同時(shí)清TF0SJMP LOOP NEXT: DJNZ R7,EXIT;R7不等于0,則不對(duì)P1.0取反CPLP1.0MOV
37、R7,#10;重置軟件計(jì)數(shù)器初值EXIT:MOV TL0,#0B0H ;T0中斷子程序,重裝初值MOV TH0,#3CH SJMPLOOPEND,45,以上的定時(shí)程序中,程序都要重置計(jì)時(shí)器初值,這樣從定時(shí)器溢出發(fā)出溢出標(biāo)志,到重裝完定時(shí)器初值,在開(kāi)始計(jì)數(shù),之間總會(huì)有一段時(shí)間間隔,使定時(shí)時(shí)間增加了若干微秒,造成定時(shí)不夠精確。為了減小這種定時(shí)誤差,單片機(jī)中設(shè)置了工作方式2(自動(dòng)重裝初值),則可避免上述
38、因素,省去程序中重裝初值的指令,實(shí)現(xiàn)精確定時(shí)。但是工作方式2的缺點(diǎn)是只有8位計(jì)數(shù)器,定時(shí)時(shí)間受到很大限制。,5.4 定時(shí)器的編程和應(yīng)用,46,例5-3 利用T0方式2產(chǎn)生250us的定時(shí),在P1.0引腳上輸出周期為500us的方波(要求精確定時(shí))。(設(shè)系統(tǒng)振蕩為12MHz)(1) 工作方式選擇實(shí)現(xiàn)精確定時(shí),采用方式2。對(duì)于12MHz晶振,方式2的最大計(jì)數(shù)時(shí)間為28=256us, 所以可實(shí)現(xiàn)250us的精確定時(shí)。
39、故,設(shè)置TMOD=02H。(2) 計(jì)算初值設(shè)初值為X: 則 (28-X) ×12×10-6×1/12=250×10-6 X=28-250=6=06H(3) 程序設(shè)計(jì)采用查詢TF0的狀態(tài)來(lái)控制P1.0的輸出。,5.4 定時(shí)器的編程和應(yīng)用,47,(4) 參考程序MAIN: MOVTMOD, #02H ;置T0方式2MOVTH0,#0
40、6H ;送計(jì)數(shù)初值MOVTL0,#06HSETB TR0 ;啟動(dòng)T0LOOP: JBCTF0,NEXT ;查詢定時(shí)時(shí)間到,轉(zhuǎn)NEXT,同時(shí)清TF0SJMP LOOPNEXT:CPLP1.0;輸出取反SJMPLOOP;重復(fù)循環(huán)END,5.4 定時(shí)器的編程和應(yīng)用,48,GATE門可使定時(shí)器Tx(T0或T1)的啟動(dòng)計(jì)數(shù)受INTx*的控制,可測(cè)量引腳INTx*(P3.2或P3.3
41、) 上正脈沖的寬度(機(jī)器周期數(shù)) 。以T1為例:,門控制位GATE的應(yīng)用—測(cè)量脈沖寬度,,回顧,當(dāng)GATE=1時(shí),K=TRx·INTx,K,49,例5-4 利用T1門控位GATE測(cè)試INT1*(P3.3)引腳上出現(xiàn)的正脈沖的寬度。分析:根據(jù)設(shè)計(jì)要求,將T1設(shè)定為定時(shí)工作模式、方式1、GATE=1;當(dāng)TR1=1時(shí),一旦INT1*(P3.3)引腳上出現(xiàn)高電平就開(kāi)始計(jì)數(shù),直到出現(xiàn)低電平為止。然后讀取TH1、TL1中的計(jì)數(shù)
42、值,分別送到寄存器A和B中。由于T1工作在定時(shí)方式,計(jì)數(shù)器計(jì)數(shù)的是機(jī)器周期的脈沖數(shù);將脈沖數(shù)轉(zhuǎn)化成時(shí)間,就可得到正脈沖的寬度。,門控制位GATE的應(yīng)用—測(cè)量脈沖寬度,50,,ORG 0100HMAIN: MOV TMOD, #90H ;T1為方式1定時(shí)控制字MOV TL1, #00H;計(jì)數(shù)器初值為0MOV TH1, #00HLOOP: JB P3
43、.3, LOOP;等待INT1*低SETB TR1;如INT1*為低,啟動(dòng)T1LOOP1: JNB P3.3, LOOP1;等待INT1*升高,開(kāi)始計(jì)數(shù)LOOP2: JB P3.3, LOOP2 ;等待INT1*降低,停止計(jì)數(shù)CLR TR1;停止T1計(jì)數(shù)MOV A, TL1;T1計(jì)數(shù)值的低8位送AMOV B, TH1
44、;T1計(jì)數(shù)值的高8位送B……由于定時(shí)器最長(zhǎng)為16位計(jì)數(shù)器,因此被測(cè)脈沖高電平的寬度不能超過(guò)65536個(gè)機(jī)器周期。,參考程序:,51,例5-5 當(dāng)T0(P3.4) 引腳上發(fā)生負(fù)跳變時(shí),從P1.0引腳上輸出一個(gè)周期為1ms的方波,如圖所示。(系統(tǒng)振蕩為6MHz) 兩個(gè)計(jì)數(shù)器同時(shí)使用,5.4 定時(shí)器的編程和應(yīng)用,52,(1) 工作方式選擇T0為方式1計(jì)數(shù),初值 0FFFFH,即外部計(jì)數(shù)輸入端T0(P3.4) 發(fā)生一次
45、負(fù)跳變時(shí),T0加1且溢出,溢出標(biāo)志TF0置“1”,發(fā)中斷請(qǐng)求。在進(jìn)入T0中斷程序后,把F0標(biāo)志置“1”,說(shuō)明T0引腳上已接收了負(fù)跳變信號(hào)。T1定義為方式2定時(shí)。在T0引腳產(chǎn)生一次負(fù)跳變后,啟動(dòng)T1每500?s產(chǎn)生一次中斷,在中斷服務(wù)程序中對(duì)P1.0求反,使P1.0產(chǎn)生周期1ms的方波。TMOD=0010,0101=25H(2) 計(jì)算T1初值設(shè)T1的初值為X: 則 (28-X) ×2×10-6=5
46、5;10-4 X=28-250=6=06H,5.4 定時(shí)器的編程和應(yīng)用,53,MAIN: MOV TMOD, #25H ;初始化,T1為方式2定時(shí),T0為方 式1計(jì)數(shù)MOV TL0, #0FFH ;T0置初值 MOV TH0, #0FFHSETB TR0 ;啟動(dòng)T0MOV TL1, #06H ;T1置初值MO
47、V TH1, #06HLOOP0:JBCTF0,NEXT0;查詢T0有無(wú)負(fù)跳變,有則轉(zhuǎn)到NEXT0SJMP LOOP0NETX0:CPLP1.0;P1.0取反SETB TR1;啟動(dòng)T1LOOP1:JBCTF1,NEXT1 ;查詢T1定時(shí)時(shí)間到否,到則轉(zhuǎn)到NEXT1SJMP LOOP1NEXT1:CPLP1.0;P1.0取反SJMP LOOP1
48、END,(3) 程序設(shè)計(jì),54,5.4 定時(shí)器的編程和應(yīng)用,T0 方式3時(shí),TL0和TH0被分成兩個(gè)獨(dú)立的8位定時(shí)器/計(jì)數(shù)器。其中, TL0: 8位定時(shí)器/計(jì)數(shù)器; TH0: 8位定時(shí)器。當(dāng)T1作串行口波特率發(fā)生器時(shí),T0才設(shè)置為方式3。,55,以上例題均采用查詢的方法,這種方法很簡(jiǎn)單,但是在定時(shí)器整個(gè)計(jì)數(shù)的過(guò)程中,CPU要不斷地查詢溢出標(biāo)志TFx的狀態(tài),很難執(zhí)行其他操作,占用了CPU的工作時(shí)間,使得CPU的工作效率不高。若采
49、用中斷的方式來(lái)實(shí)現(xiàn),可大大提高CPU的工作效率。我們下一章學(xué)習(xí)中斷,學(xué)習(xí)完之后再返回來(lái)分析和比較兩者的區(qū)別與特點(diǎn)。,5.4 定時(shí)器的編程和應(yīng)用,56,,本 章 結(jié) 束!,57,5.4 定時(shí)器的編程和應(yīng)用,例5-6 假設(shè)某MCS-51應(yīng)用系統(tǒng)的兩個(gè)外中斷源已被占用,設(shè)置T1工作在方式2,作波特率發(fā)生器用?,F(xiàn)要求增加一個(gè)外部中斷源,并控制P1.0引腳輸出一個(gè)5kHz的方波。設(shè)系統(tǒng)振蕩為6MHz。,58,(1) 選擇工作方式TL0
50、為方式3計(jì)數(shù),把T0引腳(P3.4) 作附加的外中斷輸入端,TL0初值設(shè)為0FFH,當(dāng)檢測(cè)到T0引腳電平出現(xiàn)負(fù)跳變時(shí),TL0溢出,申請(qǐng)中斷,這相當(dāng)于跳沿觸發(fā)的外部中斷源。TH0為8位方式3定時(shí),控制P1.0輸出5kHz的方波信號(hào)。如圖所示。,5.4.3 方式3的應(yīng)用,59,(2) 初值計(jì)算TL0的初值設(shè)為0FFH。5kHz的方波的周期為200?s,TH0的定時(shí)時(shí)間為100?s。TH0初值X計(jì)算如下: (28-X) &
51、#215;2×10-6=1×10-4X=28-100=156=9CH(3) 程序設(shè)計(jì)ORG 0000HLJMP MAINORG 000BH ;T0中斷入口LJMP TL0INT;跳T0中斷服務(wù)程序ORG 001BH ;在T1方式3時(shí),TH0占用T1的中斷LJMP TH0INT;跳TH0中斷服務(wù)程序,5.4.3 方式3的應(yīng)用,60,ORG
52、0100HMAIN: MOV TMOD, #27H ;T0方式3計(jì)數(shù),T1方式2定時(shí)MOV TL0, #0FFH ;置TL0初值MOV TH0, #9CH;置TH0初值MOV TL1, #dataL ;data為波特率常數(shù)MOV TH1, #dataHMOV TCON, #55H;啟動(dòng)T0、T1,設(shè)置外部中斷為跳沿觸發(fā)MOV IE, #9FH;開(kāi)中斷┆TL0INT: MO
53、V TL0, #0FFH ;TL0中斷服務(wù)程序,TL0重新裝入初值 中斷處理 TH0INT: MOV TH0, #9CH;TH0中斷服務(wù)程序,TH0重新裝入初值CPL P1.0 ;P1.0位取反輸出RETI,5.4.3 方式3的應(yīng)用,,61,1. 實(shí)時(shí)時(shí)鐘實(shí)現(xiàn)的基本思想 如何獲得1秒的定時(shí),可把定時(shí)時(shí)間定為100ms,采用中斷方式進(jìn)行溢出次數(shù)的累計(jì),計(jì)滿10次,即得到秒計(jì)時(shí)。片內(nèi)RAM中規(guī)定
54、3個(gè)單元作為秒、分、時(shí)單元,具體安排如下: 42H: “秒”單元 ;41H: “分”單元;40H: “時(shí)”單元從秒到分,從分到時(shí)是通過(guò)軟件累加并進(jìn)行比較的方法來(lái)實(shí)現(xiàn)的。,5.4.5 實(shí)時(shí)時(shí)鐘的設(shè)計(jì),62,2. 程序設(shè)計(jì) (1) 主程序的設(shè)計(jì)流程如圖所示。,5.4.5 實(shí)時(shí)時(shí)鐘的設(shè)計(jì),63,(2) 中斷服務(wù)程序的設(shè)計(jì)中斷服務(wù)程序的主要功能是實(shí)現(xiàn)秒、分、時(shí)的計(jì)時(shí)處理。參考程序略。,5.4.5 實(shí)時(shí)時(shí)鐘的設(shè)計(jì),64,
55、在讀取運(yùn)行中的定時(shí)器/計(jì)數(shù)器時(shí),需注意: 若恰好出現(xiàn)TLX溢出向THX進(jìn)位的情況,則讀得的(TLX) 值就完全不對(duì)。同樣,先讀(THX) 再讀(TLX) 也可能出錯(cuò)。方法: 先讀(THX) ,后讀(TLX) ,再讀(THX) 。若兩次讀得(THX) 相同,則讀的內(nèi)容正確。若前后兩次讀的(THX) 有變化,則再重復(fù)上述過(guò)程,這次重復(fù)讀得的內(nèi)容就應(yīng)是正確的。下面是有關(guān)的程序,讀得的(TH0) 和(TL0) 放置在R1和R0內(nèi)。,5.4.
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機(jī)定時(shí)器
- 51單片機(jī)定時(shí)器的應(yīng)用proteus仿真+源程序
- 單片機(jī)原理及應(yīng)用c語(yǔ)言版6mcs-51單片機(jī)定時(shí)器計(jì)數(shù)器
- 2認(rèn)識(shí)mcs-51單片機(jī)的定時(shí)器計(jì)數(shù)器6
- 單片機(jī)實(shí)驗(yàn)二 定時(shí)器
- 單片機(jī)定時(shí)器的應(yīng)用與誤差糾正
- 單片機(jī)定時(shí)器的使用總結(jié)
- 畢業(yè)論文 --單片機(jī)定時(shí)器設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)智能定時(shí)器
- 第五章-單片機(jī)定時(shí)器
- 單片機(jī)課程設(shè)計(jì)--秒表定時(shí)器
- 單片機(jī)課程設(shè)計(jì)--定時(shí)器實(shí)驗(yàn)
- 單片機(jī)課程設(shè)計(jì)---加熱定時(shí)器
- 智能定時(shí)器畢業(yè)設(shè)計(jì)--基于51單片機(jī)的智能定時(shí)控制器系統(tǒng)設(shè)計(jì)
- 電子定時(shí)器-單片機(jī)原理及應(yīng)用課程設(shè)計(jì)
- 單片機(jī)實(shí)驗(yàn)之定時(shí)器計(jì)數(shù)器應(yīng)用實(shí)驗(yàn)二
- 音樂(lè)提示定時(shí)器--單片機(jī)課程設(shè)計(jì)
- 單片機(jī)經(jīng)典數(shù)字定時(shí)器課程設(shè)計(jì)
- 單片機(jī)8051與定時(shí)器8253的擴(kuò)展
- 使用定時(shí)器延時(shí)單片機(jī)課程設(shè)計(jì)報(bào)告
評(píng)論
0/150
提交評(píng)論