微機(jī)原理第六章_第1頁
微機(jī)原理第六章_第2頁
微機(jī)原理第六章_第3頁
微機(jī)原理第六章_第4頁
微機(jī)原理第六章_第5頁
已閱讀5頁,還剩59頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、青海大學(xué)青海大學(xué)第六章第六章 定時定時/ /計數(shù)器計數(shù)器 主講教師: 司楊水利電力學(xué)院電工教研室第六章第六章 定時定時/計數(shù)器計數(shù)器 p第一節(jié)第一節(jié) 定時器定時器/計數(shù)器的結(jié)構(gòu)計數(shù)器的結(jié)構(gòu)p第二節(jié)第二節(jié) MCS5l的定時器的定時器/計數(shù)器控制計數(shù)器控制p51系列單片機(jī)內(nèi)部提供系列單片機(jī)內(nèi)部提供2個定時個定時/計數(shù)器計數(shù)器T0和和T1,即可用作,即可用作定時器定時器,也可用作計,也可用作計數(shù)數(shù)器器,還可作為串行口的,還可作為串行口的波特率發(fā)生器波特率發(fā)生器第一節(jié)第一節(jié) 定時器定時器/計數(shù)器的結(jié)構(gòu)計數(shù)器的結(jié)構(gòu)1.計數(shù)概念的引入從選票的統(tǒng)計談起:畫“正”。這就是計數(shù),生活中計數(shù)的例子處處可見。例:錄

2、音機(jī)上的計數(shù)器、家里面用的電度表、汽車上的里程表等等,再舉一個工業(yè)生產(chǎn)中的例子,線纜行業(yè)在電線生產(chǎn)出來之后要計米,也就是測量長度,怎么測法呢?用尺量?不現(xiàn)實(shí),太長不說,要一邊做一邊量呢,怎么辦呢?行業(yè)中有很巧妙的方法,用一個周長是1米的輪子,將電纜繞在上面一周,由線帶輪轉(zhuǎn),這樣輪轉(zhuǎn)一周不就是線長1米嘛,所以只要記下輪轉(zhuǎn)了多少圈,就可以知道走過的線有多長了。2.定時8051中的計數(shù)器除了可以作為計數(shù)之用外,還可以用作時鐘,時鐘的用途當(dāng)然很大,如打鈴器,電視機(jī)定時關(guān)機(jī),空調(diào)定時開關(guān)等等,那么計數(shù)器是如何作為定時器來用的呢?一個鬧鐘,將它定時在1個小時后鬧響,換言之,也可以說是秒針走了3600次,所

3、以時間就轉(zhuǎn)化為秒針走的次數(shù)的,也就是計數(shù)的次數(shù)了,可見,計數(shù)的次數(shù)和時間之間的確十分相關(guān)。那么它們的關(guān)系是什么呢?那就是秒針每一次走動的時間正好是1秒。第一節(jié) 定時器/計數(shù)器的結(jié)構(gòu)3.計數(shù)器的容量從一個生活中的例子看起:一個水盆在水龍頭下,水龍沒關(guān)緊,水一滴滴地滴入盆中。水滴不斷落下,盆的容量是有限的,過一段時間之后,水就會逐漸變滿。錄音機(jī)上的計數(shù)器最多只計到999.那么單片機(jī)中的計數(shù)器有多大的容量呢?8031單片機(jī)中有兩個計數(shù)器,分別稱之為T0和T1,這兩個計數(shù)器分別是由兩個8位的RAM單元組成的,即每個計數(shù)器都是16位的計數(shù)器,最大的計數(shù)量是65536。4.溢出讓我們再來看水滴的例子,當(dāng)水

4、不斷落下,盆中的水不斷變滿,最終有一滴水使得盆中的水滿了。這時如果再有一滴水落下,就會發(fā)生什么現(xiàn)象?水會漫出來,用個術(shù)語來講就是“溢出”。 水溢出是流到地上,而計數(shù)器溢出后將使得TF0變?yōu)椤?”。至于TF0是什么我們稍后再談。一旦TF0由0變成1,就是產(chǎn)生了變化,產(chǎn)生了變化就會引發(fā)事件,就象定時的時間一到,鬧鐘就會響一樣。這個事件就是中斷5.任意定時及計數(shù)的方法剛才已研究過,計數(shù)器的容量是16位,也就是最大的計數(shù)值到65536,因此計數(shù)計到65536就會產(chǎn)生溢出。這個沒有問題,問題是我們現(xiàn)實(shí)生活中,經(jīng)常會有少于65536個計數(shù)值的要求,如包裝線上,一打?yàn)?2瓶,一瓶藥片為100粒,怎么樣來滿足

5、這個要求呢?如果是一個空的盆要1萬滴水滴進(jìn)去才會滿,我在開始滴水之前就先放入一勺水,還需要10000滴嘛?顯然我們采用預(yù)置數(shù)的方法,我要計100,那我就先放進(jìn)65436,再來100個脈沖,不就到了65536了嗎。1)單片機(jī)中的定時器和計數(shù)器是一個東西,只不過計數(shù)器是記錄的外界發(fā)生的事情,而定時器則是由單片機(jī)提供一個非常穩(wěn)定的計數(shù)源。在MCS51中有兩個定時器/計數(shù)器T0、T1。3)當(dāng)定時器/計數(shù)器發(fā)生溢出時,則向CPU申請中斷。T0的中斷入口地址是000BH, T1的中斷入口地址是001BH4)對定時器/計數(shù)器預(yù)置常數(shù),就可以控制發(fā)生溢出的時間或次數(shù)。且該常數(shù)愈大,發(fā)生溢出的時間愈短,次數(shù)愈少

6、。2)單片機(jī)中用工作方式來確定定時器/計數(shù)器TH、TL的容量。方式0:13位計數(shù)器;方式1:16位計數(shù)器;方式2:自動再裝入8位計數(shù)器 ;方式3:T0為二個8位計數(shù)器 ,T1對外停止計數(shù)TRi1.1.計數(shù)器的工作條件計數(shù)器的工作條件1 1)控制信號有效)控制信號有效“1” 21” 2)有計數(shù)信號源有計數(shù)信號源2.2.脈沖輸入方式脈沖輸入方式: :1 1)定時:)定時:C/T=0C/T=0,計數(shù),計數(shù)脈沖脈沖fosc/12fosc/122 2)計數(shù):)計數(shù): C/T=1C/T=1,計數(shù),計數(shù)脈沖從脈沖從TiTi端輸入端輸入二、單片機(jī)的定時器/計數(shù)器結(jié)構(gòu)1)定時方式)定時方式:C/T=0,當(dāng)控制信

7、號為,當(dāng)控制信號為“1”時,每一個時,每一個機(jī)器周期,加機(jī)器周期,加1計數(shù)器做一次計數(shù)器做一次加加1操作操作,直至加到全,直至加到全“1”,再過一個機(jī)器周期,計數(shù)恢復(fù)為全,再過一個機(jī)器周期,計數(shù)恢復(fù)為全“0”,且,且TFi=1。2)計數(shù)方式)計數(shù)方式:C/T=1,當(dāng)控制信號為,當(dāng)控制信號為“1”時,外部計時,外部計數(shù)脈沖加在數(shù)脈沖加在T0(P3.4)或或T1(P3.5)引腳上,在該引腳引腳上,在該引腳上每產(chǎn)生一個上每產(chǎn)生一個下降沿下降沿,加,加1計數(shù)器做一次計數(shù)器做一次加加1操作操作,直至加到全直至加到全“1”,再產(chǎn)生一個下降沿,計數(shù)恢復(fù)為,再產(chǎn)生一個下降沿,計數(shù)恢復(fù)為全全“0”,且,且TFi

8、=1。其計數(shù)頻率比定時器方式低,。其計數(shù)頻率比定時器方式低,應(yīng)不大于應(yīng)不大于fosc/24。定時定時/計數(shù)器的工作方式分別有計數(shù)器的工作方式分別有8位、位、13位和位和16位三種長度,它在后臺運(yùn)行,程序的運(yùn)行位三種長度,它在后臺運(yùn)行,程序的運(yùn)行和定時和定時/計數(shù)器的加計數(shù)器的加1操作是并行的。我們可操作是并行的。我們可通過通過查詢查詢TFi的狀態(tài)的狀態(tài)來了解它的工作情況??蓙砹私馑墓ぷ髑闆r??赏ㄟ^預(yù)設(shè)計數(shù)器的初值來改變計數(shù)長度通過預(yù)設(shè)計數(shù)器的初值來改變計數(shù)長度4.定時器的名稱及相關(guān)寄存器vMCS-51有2個16位定時器:T0T1T2(52系列有)v相關(guān)的寄存器:定時器控制寄存器TCON定時器

9、方式寄存器TMOD第二節(jié)第二節(jié) MCS5l的定時器的定時器/計數(shù)器控制計數(shù)器控制2 2個個1616位位定時器定時器/ /計數(shù)器計數(shù)器 ( (5252系列有系列有3 3個個1616位位Timer)Timer)定時器定時器: :對片內(nèi)機(jī)器時鐘對片內(nèi)機(jī)器時鐘( (周期方波周期方波) )進(jìn)行計數(shù)進(jìn)行計數(shù)計數(shù)器計數(shù)器: :對對TxTx引腳引腳輸入的負(fù)脈沖進(jìn)行計數(shù)輸入的負(fù)脈沖進(jìn)行計數(shù)與與TimerTimer工作有關(guān)的工作有關(guān)的特殊功能寄存器:特殊功能寄存器: TCON TCON 和和 TMODTMODTimer的2個特殊功能寄存器(TCON,TMOD)TF1 TR1 TF0 TR0 IE1 IT1 IE0

10、 IT0一、定時器一、定時器控制控制寄存器寄存器TCON TCON (88H)(88H)TFxTFx: Timer0/1: Timer0/1計數(shù)溢出標(biāo)志位。計數(shù)溢出標(biāo)志位。 =1 =1 計數(shù)溢出計數(shù)溢出; =0 =0 計數(shù)未滿計數(shù)未滿 TFxTFx標(biāo)志位標(biāo)志位可用于可用于申請中斷申請中斷或或供供CPUCPU查詢查詢。 在進(jìn)入中斷服務(wù)程序時會自動清零;但在在進(jìn)入中斷服務(wù)程序時會自動清零;但在 查詢方式時必須軟件清零。查詢方式時必須軟件清零。TRxTRx: Timer0/1: Timer0/1運(yùn)行控制位。運(yùn)行控制位。 =1 =1 啟動計數(shù);啟動計數(shù); =0 =0 停止計數(shù)停止計數(shù)TR0/TR1TR

11、0/TR1:Timer0/1Timer0/1運(yùn)行控制位運(yùn)行控制位: TR0/TR1 =0 TR0/TR1 =0 時,時,Timer0/1Timer0/1停止計數(shù)停止計數(shù) TR0/TR1 =1 TR0/TR1 =1 時,時,Timer0/1Timer0/1啟動計數(shù)啟動計數(shù)二、定時器T0/T1 中斷申請過程 在已經(jīng)開放在已經(jīng)開放T0/T1T0/T1中斷允許且已被啟動的前提下:中斷允許且已被啟動的前提下: T0/T1T0/T1加滿溢出加滿溢出時時 TF0/TF1TF0/TF1標(biāo)志位自動置標(biāo)志位自動置“1 1” 檢測到檢測到TCONTCON中中TF0/TF1TF0/TF1變變“1 1”后后, ,將產(chǎn)生

12、指令:將產(chǎn)生指令: LCALL 000BHLCALL 000BH/ /LCALL 001BHLCALL 001BH 執(zhí)行中斷服務(wù)程序執(zhí)行中斷服務(wù)程序, , TF0/TF1TF0/TF1標(biāo)志位會自動清標(biāo)志位會自動清“0 0”, ,以備下次中斷申請。以備下次中斷申請。 定時定時/ /計數(shù)器可按片內(nèi)計數(shù)器可按片內(nèi)機(jī)器周期機(jī)器周期定時,也可對由定時,也可對由T0/T1T0/T1引腳輸入一個引腳輸入一個負(fù)脈沖負(fù)脈沖進(jìn)行加法計數(shù)進(jìn)行加法計數(shù)TF1 TF1 TR1TR1 TF0 TF0 TR0TR0 IE1 IT1 IE0 IT0IE1 IT1 IE0 IT0TCON TCON (88H)(88H)GATE

13、 C / T M1 M0 GATE C / T M1 M0三、定時器三、定時器方式方式寄存器寄存器TMOD TMOD (89H)(89H)T1T1T0T0M1,M0M1,M0:工作方式定義位工作方式定義位 ( ( 定義定義4 4 種方式種方式 ):):C/T C/T :計數(shù)器計數(shù)器/ /定時器選擇位定時器選擇位 = 1 = 1 外部事件外部事件計數(shù)器計數(shù)器。對。對TxTx引腳的引腳的負(fù)脈沖負(fù)脈沖計數(shù);計數(shù); = 0 = 0 片內(nèi)時鐘片內(nèi)時鐘定時器定時器。對。對機(jī)器周期脈沖機(jī)器周期脈沖計數(shù)定時計數(shù)定時0 00 0:1313位位 TimerTimer用它無益用它無益, ,不要記它!不要記它!0 1

14、0 1:1616位位 TimerTimer經(jīng)常用到經(jīng)常用到1 01 0:可自動重裝的:可自動重裝的 8 8位位 TimerTimer經(jīng)常用到經(jīng)常用到1 11 1:T0 T0 分為分為2 2個個8 8位位 TimerTimer;T1 T1 此時不工作此時不工作 因?yàn)闆]有帶來甚麼好處,因?yàn)闆]有帶來甚麼好處,幾乎幾乎無無用用GATE C / T M1 M0 GATE C / T M1 M0T1T0GATEGATE門控位門控位: : TimerTimer可由軟件與硬件兩者控制可由軟件與硬件兩者控制 GATE = 0 GATE = 0 普通用法普通用法 TimerTimer的的啟啟/ /停停由由軟件軟件

15、對對TRxTRx位寫位寫“1 1”/ /“0 0”控制控制定時器定時器方式方式寄存器寄存器TMODTMOD(續(xù))(續(xù))(89H)(89H) GATE = 1 GATE = 1 門控用法門控用法 TimerTimer的的啟啟/ /停停由由軟件軟件對對TRxTRx位寫位寫“1 1”/ /“0 0” 和和在在INTxINTx引腳引腳上出現(xiàn)的信號的上出現(xiàn)的信號的高高/ /低低共同控制共同控制考慮下面幾個定時器應(yīng)用的問題:考慮下面幾個定時器應(yīng)用的問題:例例1 1: : 晶振晶振=6MHz,=6MHz,估算估算TimerTimer的定時時長的定時時長 (max,minmax,min)例例2 2: : 要求

16、對要求對T0T0產(chǎn)生產(chǎn)生100mS100mS定時進(jìn)行初始定時進(jìn)行初始 化?;?( (晶振晶振=6MHz=6MHz) )例例3 3: : 產(chǎn)生產(chǎn)生T=2mST=2mS方波方波( (改為方式改為方式2)2)例例4 4: : 請改為方式請改為方式1 1或或2 2再閱讀再閱讀, ,務(wù)請大家務(wù)請大家 不要陷入方式不要陷入方式0 0的困惑之中!的困惑之中!例例5 5: : 定時定時1 1 秒秒例例6 6: : 方式方式3 3(雙(雙8 8位定時器)的應(yīng)用位定時器)的應(yīng)用四、定時器結(jié)構(gòu)與工作方式四、定時器結(jié)構(gòu)與工作方式1.1.工作方式工作方式1 1:1616位的定時位的定時/ /計數(shù)器計數(shù)器振蕩器振蕩器

17、12TLx THx (8位位) (8位位)TFx申請申請中斷中斷TxTx端端TRxTRx位位GATEGATE位位INTxINTx端端11& &C/T=0C/T=1控制控制 =1開關(guān)接通開關(guān)接通或門或門與門與門 THx/TLxTHx/TLx賦初值賦初值:THxTHx賦高賦高8 8位,位,TLxTLx賦低賦低8 8位位工作方式工作方式1 1 的編程要點(diǎn)的編程要點(diǎn) TMODTMOD選方式選方式: 寫寫“M1,M0M1,M0”=01 =01 b b 選方式選方式1 1 若不用門控位若不用門控位, ,直接用軟件寫直接用軟件寫TRxTRx控制啟控制啟/ /停停 若使用門控位,先置位若使用門控位,先置位TR

18、xTRx,然后由,然后由INTxINTx端端 的的高高/ /低電平低電平來控制其啟來控制其啟/ /停停 若要允許若要允許中斷中斷,還須先置位,還須先置位ETxETx、EAEA等中斷等中斷 允許控制位,并編寫允許控制位,并編寫中斷服務(wù)中斷服務(wù)程序程序 若不用中斷,可若不用中斷,可查詢查詢“計數(shù)溢出標(biāo)志計數(shù)溢出標(biāo)志TFxTFx” 的方式工作,但溢出標(biāo)志的方式工作,但溢出標(biāo)志TFxTFx須軟件清須軟件清0 0定時器定時器( (方式方式1)1)應(yīng)用程序舉例應(yīng)用程序舉例:分析分析:已知:已知foscfosc = 6MHz = 6MHz 則:則: (振蕩周期)(振蕩周期)1Tc=1/6MHz1Tc=1/6

19、MHz (機(jī)器周期)(機(jī)器周期)1Tm=12Tc=12/6MHz=1Tm=12Tc=12/6MHz=2 2 S S 粗略地說:粗略地說:Tmin Tmin 2 2 S S 16 16位定時器最大數(shù)值為:位定時器最大數(shù)值為:2 21616=65536=0FFFFH+1=65536=0FFFFH+1 故選擇故選擇方式方式 1 1 工作可以得到:工作可以得到: Tmax = 65536Tmax = 65536 2 = 1310722 = 131072 S S131.072mS131.072mS例例1 1:若晶振頻率為:若晶振頻率為6MHz6MHz,計算單片機(jī)的最小,計算單片機(jī)的最小與最大與最大定時時

20、間:定時時間:分析分析:已知:已知foscfosc = 6MHz = 6MHz 則:則: (機(jī)器周期)(機(jī)器周期)1Tm=12Tc=12/6MHz=21Tm=12Tc=12/6MHz=2 S S 100mS 100mS2 2 S = S = 5000050000 16 16位定時器最大數(shù)值為:位定時器最大數(shù)值為: 2 216 16 = = 6553665536 (=0FFFFH+1) (=0FFFFH+1) 故選擇方式故選擇方式1 1工作可以滿足要求。工作可以滿足要求。計算計算初值初值:655366553650000=15536=50000=15536=3CB03CB0H H例例2 2:要求對

21、:要求對T0T0產(chǎn)生產(chǎn)生100mS100mS定時進(jìn)行初始化。定時進(jìn)行初始化。 ( (晶振晶振=6MHz)=6MHz)定時器定時器( (方式方式1)1)應(yīng)用程序舉例應(yīng)用程序舉例:GATE C / T M1 M0 GATE C / T M1 M0定時器方式定時器方式寄存器寄存器TMOD由分析得知:由分析得知:T0T0選擇方式選擇方式1 1,初值,初值=3CB0H=3CB0H X X X X 0 0 X X X X 0 0 0 10 1初始化:初始化:MOV TMODMOV TMOD,# #01H01H ; ;選選 T0 T0 方式方式 1 1TMOD=0 x01;TMOD=0 x01; MOV T

22、H0MOV TH0, # #3CH ;3CH ;賦初值高賦初值高8 8位位TH0=0 x3c;TH0=0 x3c; MOV TL0MOV TL0, #0#0B0H ;B0H ;賦初值低賦初值低8 8位位TL0=0 xb0;TL0=0 xb0; SETB TR0SETB TR0 ; ;啟動啟動 T0T0定時定時TR0=1;TR0=1;若需要定時器若需要定時器0 0產(chǎn)生中斷產(chǎn)生中斷還應(yīng)當(dāng)寫如下語句:還應(yīng)當(dāng)寫如下語句: SETB ET0SETB ET0 ; ;開開T0T0中斷允許中斷允許 SETB EASETB EA ; ;開總中斷允許開總中斷允許以及相應(yīng)的以及相應(yīng)的中斷服務(wù)程序中斷服務(wù)程序。2.2

23、.工作方式工作方式2 2:8 8 位自動重裝的定時位自動重裝的定時/ /計數(shù)器計數(shù)器振蕩器振蕩器 12TLx (8位位)TFx申請申請中斷中斷TxTx端端TRxTRx位位GATEGATE位位INTxINTx端端11& &C/T=0C/T=1控制控制 =1開關(guān)接通開關(guān)接通或門或門與門與門THx (8位位)溢溢出出位位門開門開 THx/TLx THx/TLx賦相同初值賦相同初值 在在TLxTLx計數(shù)達(dá)到計數(shù)達(dá)到0FF0FFH H 再加再加“1 1”時,時,TL0TL0 將溢出將溢出, ,進(jìn)位位進(jìn)位位直接進(jìn)入直接進(jìn)入“TFxTFx”去申請去申請 中斷中斷, ,同時同時打開三態(tài)門打開三態(tài)門,使,使TH

24、xTHx中的值中的值 自動自動重裝重裝(Copy)(Copy)進(jìn)進(jìn)TLxTLx工作方式工作方式 2 2 的編程:的編程: TMOD TMOD寄存器選方式:寄存器選方式: 寫寫“M1M1,M0M0” = = 1010 b b 選中方式選中方式2 2 其他用法與各種方式其他用法與各種方式1 1完全相同完全相同分析:分析:foscfosc = 6MHz = 6MHz 1 1機(jī)器周期機(jī)器周期 = 2 = 2 S S 1KHz1KHz方波周期方波周期 = 1 = 1 mS mS 半半個方個方波波周期周期 =500=500 S S 500uS 500uS2 uS = 250 2 uS = 250 若選擇方

25、式若選擇方式2 2 工作工作,8,8位位定時器最大數(shù)值為:定時器最大數(shù)值為: 2 28 8 =256 =0FFH + 1 =256 =0FFH + 1 可以滿足要求??梢詽M足要求。計算初值計算初值:256256250=250=6 6例例3(3(改改):):從從P1.0 P1.0 腳輸出頻率腳輸出頻率=1KHz=1KHz方波。方波。設(shè):晶振設(shè):晶振=6MHz=6MHz。利用。利用T1T1定時中斷。定時中斷。Th:半周期:半周期T:周期:周期定時器(方式定時器(方式2 2)應(yīng)用)應(yīng)用程序舉例:程序舉例:inttest.DSN ORG 0000HORG 0000H AJMP AJMP MAINMAI

26、N ORG 001BH ORG 001BH ;T1T1的中斷矢量的中斷矢量 CPL P1.0 CPL P1.0 ;中斷服務(wù):中斷服務(wù):P1.0P1.0取非取非 RETI RETI ;中斷返回;中斷返回MAIN:MAIN: MOV TMOD MOV TMOD,#20H#20H MOV TH0 MOV TH0, #6#6 MOV TL0 MOV TL0, #6#6 SETB ET1 SETB ET1 SETB EA SETB EA SETB TR1 SETB TR1 HERE: HERE: AJMP AJMP HERE HERE ;原地等待中斷;原地等待中斷 ENDEND初初始始化化;選;選T1T

27、1方式方式2 2;賦;賦重裝值重裝值;賦;賦初值初值;開;開T1T1中斷中斷;開總中斷;開總中斷;啟動;啟動T1T1 main() main() TMOD=0 x20;TMOD=0 x20;TH0=6;TH0=6;TL0=6;TL0=6;ET1=1ET1=1EA=1EA=1TR1=1 TR1=1 While(1)While(1);原地等待中斷;原地等待中斷 Void timeIT() interrupt 1Void timeIT() interrupt 1 P10=P10=P10P10; 初初始始化化選選T1T1方式方式2 2賦賦重裝值重裝值賦賦初值初值開開T1T1中斷中斷開總中斷開總中斷啟動

28、啟動T1T1T0T0: 組織成組織成TL0TL0和和TH0TH0兩個兩個8 8位定時位定時/ /計數(shù)器計數(shù)器3.Timer3.Timer工作方式工作方式 3 3T1T1: 不再是不再是定時定時/ /計數(shù)器了計數(shù)器了 T1T1 的的TR1TR1和和TF1TF1出借給出借給TH0TH0當(dāng)控制位使用當(dāng)控制位使用, , 剩下的剩下的TH1/TL1TH1/TL1寄存器只能當(dāng)作普通寄存寄存器只能當(dāng)作普通寄存 器用。器用。振蕩器振蕩器 12TL0 (8位位)TF0申請申請中斷中斷T0T0端端TR0TR0位位GATEGATE位位INT0INT0端端11& &C/T=0C/T=1控制控制 =1開關(guān)接通開關(guān)接通或

29、門或門與門與門TH0 (8位位)TF1申請申請中斷中斷TR1TR1位位控制控制 =1TimerTimer工作方式工作方式 3 3 結(jié)構(gòu):結(jié)構(gòu):T0T0成為雙成為雙 8 8位位Timer Timer T1T1不再有不再有TimerTimer功能功能 TF1TF1,TR1TR1出借給出借給TH0TH0 4.4.長定時舉例(長定時舉例(設(shè)設(shè)晶振晶振= =6MHz6MHz,要定時,要定時1 1秒秒): : ORG 0000H ORG 0000H AJMPAJMP MAIN MAIN ORG 001BH ORG 001BH AJMP AJMP TINT ;TINT ;見下一頁見下一頁MAIN:MAIN:

30、 MOV TMOD,#10H ; MOV TMOD,#10H ;選選T1T1方式方式1 1 MOV TH1, #3CH ; MOV TH1, #3CH ;賦賦初值初值3CB0H=155363CB0H=15536( (只能定只能定100mS)100mS) MOV TL1 MOV TL1,#0B0H#0B0H MOV MOV 30H30H,#10#10 ; ;軟件計數(shù)單元軟件計數(shù)單元30H 30H 初值初值=10=10 CLR F0 ;CLR F0 ;芯片復(fù)位時已經(jīng)是芯片復(fù)位時已經(jīng)是“0 0”,此句可有可,此句可有可無無 SETB ET1 ;SETB ET1 ;開開T1T1中斷中斷 SETB EA

31、 ;SETB EA ;開總中斷開總中斷 SETB TR1 ;SETB TR1 ;啟動啟動T1 T1 HEREHERE: JBC : JBC F0,F0,TIMEUP ;TIMEUP ;原地等待原地等待“1 1秒到秒到”的標(biāo)志的標(biāo)志 F0F0 AJMP AJMP HEREHERETIMEUP:TIMEUP:(do something) ;(do something) ;定時定時1 1秒到了以后要做的事情秒到了以后要做的事情 AJMP AJMP HEREHERE中斷中斷服務(wù)服務(wù)在主在主程序程序中中長定時舉例(續(xù))長定時舉例(續(xù)): : ORG 0000HORG 0000H AJMP MAIN AJ

32、MP MAIN ORG 001BH ORG 001BH AJMP TINT AJMP TINTMAIN: MAIN: TINTTINT:DJNZ 30H,DJNZ 30H,RTNRTN ; ;若中斷不到若中斷不到1010次就返回次就返回 SETB F0 ;SETB F0 ;已經(jīng)中斷夠已經(jīng)中斷夠1010次了次了“置置1 1”標(biāo)志位標(biāo)志位 MOV 30H,#10 MOV 30H,#10 ; ;為下一個為下一個1 1秒定時做準(zhǔn)備秒定時做準(zhǔn)備RTN:RTN: MOV TH1,#3CH MOV TH1,#3CH ; ;再賦定時再賦定時100mS100mS的初值的初值3CB0H3CB0HMOV TL1,#

33、0B0HMOV TL1,#0B0H RETI RETI ; ;中斷返回中斷返回 ENDEND4.4.長定時舉例(長定時舉例(設(shè)設(shè)晶振晶振= =6MHz6MHz,要定時,要定時1 1秒秒): :Char F=0;Char F=0;Main()Main() TMOD=0 x10;TMOD=0 x10;TH1=0 x3c;TH1=0 x3c;TL1=0 xb0;TL1=0 xb0;ET1=1;ET1=1;EA=1;EA=1;TR1=1;TR1=1;While(1)While(1) if(F=10)if(F=10) F=0;F=0;定時定時1 1秒到了以后要做的事情秒到了以后要做的事情; ; 中斷中斷

34、服務(wù)服務(wù)在主在主程序程序中中長定時舉例(續(xù))長定時舉例(續(xù)): :Void TINT() interrupt 3Void TINT() interrupt 3 F+;F+; TH1=0 x3c;TH1=0 x3c;TL1=0 xb0;TL1=0 xb0;TR1=1;TR1=1; 定時方式工作 intled.dsn ORG 0000H AJMP START ORG 000BH AJMP TIME0 ORG 0030HSTART:MOV P1,#0FFH ;關(guān)所有的燈 MOV 30H,#00H ;軟件計數(shù)器預(yù)清0 MOV TMOD,#01H ;T0工作方式1 MOV TH0,#0ECH MOV T

35、L0,#78H ;預(yù)置數(shù)60536 SETB EA ;開總中斷允許 SETB ET0 ;開T0允許 SETB TR0 ;T0開始計數(shù)LOOP: AJMP LOOP ;等待中斷 TIME0: PUSH ACC PUSH PSW ; 保護(hù)現(xiàn)場 INC 30H;(30H)+1 30H MOV A,30H CJNE A,#64H,T_RET ;(30H)=100?T_L1: CPL P1.0 ;到了,取反P1.0 MOV 30H,#00H ;清軟件計數(shù)器T_RET: MOV TH0,#3CH MOV TL0,#0B7H ;重置定時常數(shù) POP PSW;恢復(fù)現(xiàn)場 POP ACC RETI END思路:1

36、秒=1000ms=10ms100,因此定時器定時t=10ms中斷一次,中斷時使30H的數(shù)加1,加到100時,P1.0取反,使LED滅或亮。關(guān)鍵是確定初值x。 x =216- t /機(jī)器周期,晶振頻率為6Mz時,機(jī)器周期為2 10-6秒。即x =216- (10 10-3) /( 2 10-6) =60536=EC78H,所以,TH00ECH,TL078H用定時器0實(shí)現(xiàn)P1.0所控制的LED每秒鐘閃爍一次。1、選擇工作方式和定時/計數(shù),確定TMOD2、根據(jù)定時時間或脈沖數(shù)計算初值, t=(2N-x) 機(jī)器周期,N為指定工作方式下對應(yīng)的計數(shù)器的位數(shù)。3、編寫程序。一般形式如下: 主程序 OGR 0

37、000H LJMP MAIN ORG 000BH LJMP T0 ORG 001BH LJMP T1 ORG 0030HSTART:MOV TMOD,#;確定工作方式 MOV THx,#;置初值 MOV TLx,# MOV IE,#;開中斷 SETB TRx;啟動計數(shù)LOOP: ;執(zhí)行正常程序 SJMP LOOP 中斷服務(wù)程序 OGR xxxxHT0:PUSH xx;保護(hù)現(xiàn)場 MOV THx,#;重置初值, MOV TLx,#;方式2不要 實(shí)際中斷操作內(nèi)容 POP xx;恢復(fù)現(xiàn)場 RETI ;中斷返回定時器小結(jié):定時器小結(jié): (2 2個個1616位加法計數(shù)器)位加法計數(shù)器)運(yùn)行運(yùn)行/ /停止停

38、止由由TRxTRx位控制,位控制,( (當(dāng)當(dāng)GATE=1GATE=1時:時: 由由TRxTRx位和位和TxTx引腳上的信號共同控制引腳上的信號共同控制) )工作方式工作方式由由TMODTMOD決定決定; ; 計數(shù)計數(shù)/ /定時定時由由C/TC/T位決定位決定 工作方式工作方式0 0(1313位)位) 永遠(yuǎn)不用永遠(yuǎn)不用 工作方式工作方式3 3(T0T0拆為雙拆為雙8 8位)位) 幾乎幾乎無無用用 工作方式工作方式1 1(1616位)位) 經(jīng)常用到經(jīng)常用到 工作方式工作方式2 2(8 8位自動重裝)位自動重裝) 經(jīng)常用到經(jīng)常用到從初值按機(jī)器周期或外部脈沖遞加,溢出位從初值按機(jī)器周期或外部脈沖遞加,

39、溢出位 TFxTFx申請中斷申請中斷;中斷允許中斷允許由由ETxETx位和位和EAEA位控制,位控制,p作業(yè):作業(yè):p編寫程序?qū)崿F(xiàn)一個LED每1秒閃爍一次,要求用定時器實(shí)現(xiàn).p編寫程序?qū)崿F(xiàn)一個LED每0.5秒閃爍一次,同時另一個LED每1秒閃爍一次v定時定時/計數(shù)器是可編程的,程序員只需對幾個計數(shù)器是可編程的,程序員只需對幾個特殊功能寄存器進(jìn)行簡單的操作,既可完成特殊功能寄存器進(jìn)行簡單的操作,既可完成對定時對定時/計數(shù)器的操作。這幾個特殊功能寄存計數(shù)器的操作。這幾個特殊功能寄存器為器為TH1、TL1,TH0、TL0,TCON和和TMODv TH0、TL0和和TH1、TL1分別是定時分別是定時/

40、計數(shù)器計數(shù)器的計數(shù)核心,但加的計數(shù)核心,但加1計數(shù)器的運(yùn)行則由計數(shù)器的運(yùn)行則由TMOD和和TCON來控制。來控制。一、定時器方式寄存器一、定時器方式寄存器TMODTMOD格式如下:格式如下:1、定時、定時/計數(shù)器工作方式選擇位計數(shù)器工作方式選擇位TMODD7D6D5D4D3D2D1D088H GATE C/TM1M0GATE C/TM1M0定時器定時器1定時器定時器01、定時、定時/計數(shù)器工作方式選擇位計數(shù)器工作方式選擇位表表5.1 方式選擇位意義方式選擇位意義M1 M0工作方式工作方式功能說明功能說明0 0方式方式013位計數(shù)器位計數(shù)器0 1方式方式116位計數(shù)器位計數(shù)器1 0方式方式2自動

41、再裝入自動再裝入8位計數(shù)器位計數(shù)器1 1方式方式32、C/T功能選擇功能選擇C/T=0 對內(nèi)部脈沖計數(shù),計數(shù)頻率為對內(nèi)部脈沖計數(shù),計數(shù)頻率為fosc/12C/T=1對對Ti引腳輸入脈沖計數(shù),計數(shù)頻率不大于引腳輸入脈沖計數(shù),計數(shù)頻率不大于fosc/24。GATE=0,由,由TRi來啟動和停止定時來啟動和停止定時/計數(shù)器計數(shù)器GATE=1,TRi必須同必須同INTi一起來啟動和停止定時一起來啟動和停止定時/計計數(shù)器,即數(shù)器,即TRi=INTi=1時,定時器啟動,其中一個為時,定時器啟動,其中一個為“0”時,停止計數(shù)。時,停止計數(shù)。注意:注意:T0和和T1的控制是嚴(yán)格獨(dú)立的的控制是嚴(yán)格獨(dú)立的TMOD

42、不能位尋址,使用時必須用字節(jié)傳送指不能位尋址,使用時必須用字節(jié)傳送指令,復(fù)位時,令,復(fù)位時,TMOD=0二、定時二、定時/計數(shù)器控制寄存器計數(shù)器控制寄存器TCONvTCON格式如下:格式如下:TFi:計數(shù)器溢出標(biāo)志,計數(shù)器溢出時,由硬件對計數(shù)器溢出標(biāo)志,計數(shù)器溢出時,由硬件對TFi置置“1” ,并申請中斷。進(jìn)入中斷后,由硬件自動清,并申請中斷。進(jìn)入中斷后,由硬件自動清零,也可由軟件清零。零,也可由軟件清零。TRi:計數(shù)器運(yùn)行控制位,由軟件置計數(shù)器運(yùn)行控制位,由軟件置“1”或清零來啟或清零來啟動和停止計數(shù)器。動和停止計數(shù)器。TCON8FH8EH8DH8CH8BH8AH89H88H88HTF1TR

43、1TF0TR0IE1IT1IE0IT0定時控制定時控制中斷控制中斷控制v其余位為有關(guān)中斷的控制其余位為有關(guān)中斷的控制,前面已經(jīng),前面已經(jīng)講過。講過。注意:注意:T0和和T1的控制是嚴(yán)格獨(dú)立的的控制是嚴(yán)格獨(dú)立的vTCON可位尋址,可分別用位名來進(jìn)行可位尋址,可分別用位名來進(jìn)行尋址,不必記憶位地址。尋址,不必記憶位地址。v復(fù)位時,復(fù)位時,TCON=0v通過前面的學(xué)習(xí),我們可以知道:通過對通過前面的學(xué)習(xí),我們可以知道:通過對C/T的不同選擇,可以選擇內(nèi)、外部脈沖計數(shù)方的不同選擇,可以選擇內(nèi)、外部脈沖計數(shù)方式。而對式。而對M1M0的設(shè)置,可以使的設(shè)置,可以使T0和和T1工作工作在四種工作方式。在四種工

44、作方式。1.方式方式013位定時位定時/計數(shù)器方式。由計數(shù)器方式。由TLi(40)和和THi(70)組成。組成。T=(213-A)*12/fosc 微秒微秒方式方式01、C/T=0v定時時間定時時間 T=(213-A)*12/fosc 微秒微秒v式中式中,A為定時器初值為定時器初值.2、C/T=13、GATE=04、GATE=12.方式方式1方式方式1為為16位定時位定時/計數(shù)器計數(shù)器方式。由方式。由TLi(70)和和THi(70)組成。其余與方式組成。其余與方式0相同。相同。v定時時間定時時間 T=(216-A)*12/fosc 微秒微秒v式中式中,A為定時器初值為定時器初值.方式方式2為能

45、為能自動重置自動重置計數(shù)器初值的工作方式,計數(shù)器初值的工作方式,TLi為為8位計數(shù)器,位計數(shù)器,THi為計數(shù)器初值暫存器。為計數(shù)器初值暫存器。v定時時間定時時間 T=(28-A)*12/fosc 微秒微秒v式中式中,A為定時器初值為定時器初值.方式方式3僅適用于僅適用于T0。此時,此時,TH0和和TL0分別為分別為2個個8位計數(shù)器,位計數(shù)器,TL0由由T0的控制位來控制,而的控制位來控制,而TH0則由則由T1的控制位來控制。而的控制位來控制。而T1則可工作在方式則可工作在方式0、1、2的任一方式,但其啟動則由控制方式控制,將的任一方式,但其啟動則由控制方式控制,將T1置置為方式為方式3時則停止

46、計數(shù)。時則停止計數(shù)。幾種方式的區(qū)別:幾種方式的區(qū)別:方式方式0、1、2僅在于位數(shù)不同,僅在于位數(shù)不同,方式方式3則是增加了一個計數(shù)器資源而已。則是增加了一個計數(shù)器資源而已。v定時定時/計數(shù)器是可編程的,在使用前,必須通計數(shù)器是可編程的,在使用前,必須通過軟件對其初始化。過軟件對其初始化。1、確定工作方式、確定工作方式對對TMOD置初值置初值2、置定時、置定時/計數(shù)器初值。計數(shù)器初值。即初始化即初始化TH0、TL0,TH1、TL1,在用作計數(shù)器時,除定量計數(shù)外,一般不設(shè),在用作計數(shù)器時,除定量計數(shù)外,一般不設(shè)初值。初值。v計數(shù):計數(shù):A=2n-待計數(shù)值待計數(shù)值v定時:定時: A=2n-定時值定時值*fosc/123、如需中斷,則開放中斷,否則略去。、如需中斷,則開放中斷,否則略去。4、啟動定時、啟動定時/計數(shù)器計數(shù)器;對;對TRi置置“1”。5、通過中斷或、通過中斷或TFi來獲知定時來獲知定時/計數(shù)器的工作狀態(tài)。計數(shù)器的工作狀態(tài)。6、停止定時、停止定時/計數(shù)器計數(shù)器;不需要再用時,應(yīng)對;不需要再用時,應(yīng)對TRi清零。清零。v例例5-4-1 利用利用T1在在P1.1口上輸出周期為口上輸出

溫馨提示

  • 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

提交評論