第6章 89S51的定時計數(shù)器 副本_第1頁
第6章 89S51的定時計數(shù)器 副本_第2頁
第6章 89S51的定時計數(shù)器 副本_第3頁
第6章 89S51的定時計數(shù)器 副本_第4頁
第6章 89S51的定時計數(shù)器 副本_第5頁
已閱讀5頁,還剩41頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、2022-5-271 在工業(yè)檢測與控制中,許多場合都要用到在工業(yè)檢測與控制中,許多場合都要用到計數(shù)計數(shù)或或定時定時功能。功能。例如:例如: 1、計數(shù)計數(shù):在包裝流水線上,當(dāng)裝入規(guī)定個數(shù)的物品后才啟:在包裝流水線上,當(dāng)裝入規(guī)定個數(shù)的物品后才啟動打包機進行打包,因此,打包之前需要對裝入物品的個數(shù)進動打包機進行打包,因此,打包之前需要對裝入物品的個數(shù)進行計數(shù)。行計數(shù)。 2、定時定時:通過產(chǎn)生精確的定時時間,可以設(shè)計電子時鐘、:通過產(chǎn)生精確的定時時間,可以設(shè)計電子時鐘、設(shè)定設(shè)備在何時開始動作、動作執(zhí)行的時間等。設(shè)定設(shè)備在何時開始動作、動作執(zhí)行的時間等。第第6章章 89S51的定時的定時/ /計數(shù)器計數(shù)

2、器 AT89S51單片機內(nèi)部單片機內(nèi)部有兩個可編程的定時器有兩個可編程的定時器/計數(shù)器計數(shù)器T0、 T1,可滿足對定時、計數(shù)的需求。,可滿足對定時、計數(shù)的需求。2022-5-272第第6章章 89S51的定時的定時/ /計數(shù)器計數(shù)器定時定時/計數(shù)器的計數(shù)器的結(jié)構(gòu)和控制結(jié)構(gòu)和控制6.1定時定時/ /計數(shù)器的計數(shù)器的工作模式工作模式6.2定時定時/ /計數(shù)器的計數(shù)器的工作方式工作方式6.3定時定時/ /計數(shù)器的計數(shù)器的應(yīng)用和程序設(shè)計應(yīng)用和程序設(shè)計6.42022-5-273定時定時/ /計數(shù)器的結(jié)構(gòu)計數(shù)器的結(jié)構(gòu)6.1 6.1 定時定時/ /計數(shù)器的結(jié)構(gòu)和控制計數(shù)器的結(jié)構(gòu)和控制 2022-5-274工

3、作方式寄存器工作方式寄存器TMOD 76543210TMODGATEC/TM1M0GATEC/TM1M0字節(jié)地址:字節(jié)地址:89HTMOD字節(jié)地址字節(jié)地址89H,不能進行位尋址。,不能進行位尋址。低低4位,控制位,控制T0;高;高4位,控制位,控制T1。對定時對定時/ /計數(shù)器的控制,是通過計數(shù)器的控制,是通過TMOD、TCON實現(xiàn)的。實現(xiàn)的。2022-5-275工作方式寄存器工作方式寄存器TMOD 76543210TMODGATEC/TM1M0GATEC/TM1M0字節(jié)地址:字節(jié)地址:89HGATEGATE:門控位。:門控位。GATEGATE0 0時,只要時,只要TRxTRx為為1 1,就可

4、啟動計數(shù)器工作;,就可啟動計數(shù)器工作;GATEGATE1 1時,除了時,除了TRxTRx為為1 1,定時器的啟動還要加上,定時器的啟動還要加上INTxINTx引腳為高電平這一條件。引腳為高電平這一條件。 v C/TC/T:模式選擇位。清:模式選擇位。清0 0為定時模式,置為定時模式,置1 1為計數(shù)模式。為計數(shù)模式。v M1M0M1M0:工作方式選擇位。可設(shè)置四種工作方式。:工作方式選擇位??稍O(shè)置四種工作方式。2022-5-276M1M0M1M0 工作方式工作方式說說 明明0000方式方式0 01313位定時位定時/ /計數(shù)器計數(shù)器0101方式方式1 11616位定時位定時/ /計數(shù)器計數(shù)器10

5、10方式方式2 28 8位自動重裝定時位自動重裝定時/ /計數(shù)器計數(shù)器1111方式方式3 3TL0TL0:8 8位定時位定時/ /計數(shù)器;計數(shù)器;TH0TH0:8 8位定時器;位定時器;T1T1停止計數(shù),用作波特率發(fā)生器。停止計數(shù),用作波特率發(fā)生器。2022-5-277控制寄存器控制寄存器TCON 76543210TCONTF1TR1TF0TR0字節(jié)地址:字節(jié)地址:88HTFxTFx:TxTx的中斷溢出標(biāo)志位。的中斷溢出標(biāo)志位。 響應(yīng)中斷后,響應(yīng)中斷后,TFxTFx由硬件自動清由硬件自動清0 0。TRxTRx:TxTx的計數(shù)啟??刂莆弧5挠嫈?shù)啟??刂莆?。 置置1 1,啟動計數(shù);,啟動計數(shù); 清

6、清0 0,停止計數(shù)。,停止計數(shù)。 TRxTRx要由軟件置要由軟件置1 1或清或清0 0(不是自動的)。(不是自動的)。2022-5-278T0T0,T1T1:既可以用作定時器,也可以用作計數(shù)器。:既可以用作定時器,也可以用作計數(shù)器。定時器定時器:對內(nèi)部時鐘進行計數(shù)對內(nèi)部時鐘進行計數(shù)。(關(guān)注:定時的時間關(guān)注:定時的時間)計數(shù)器計數(shù)器:對外部脈沖進行計數(shù)對外部脈沖進行計數(shù)。(關(guān)注:事件的個數(shù)關(guān)注:事件的個數(shù))6.2 6.2 定時定時/ /計數(shù)器的工作模式計數(shù)器的工作模式不論是定時器,還是計數(shù)器,都需要對脈沖信號進行計數(shù)。不論是定時器,還是計數(shù)器,都需要對脈沖信號進行計數(shù)。但是,計數(shù)的信號源不同。但

7、是,計數(shù)的信號源不同。2022-5-279定時器模式:對內(nèi)部定時器模式:對內(nèi)部機器周期信號機器周期信號計數(shù)。計數(shù)。 信號來自單片機內(nèi)部。信號來自單片機內(nèi)部。( (晶振晶振1212分頻分頻) ) 計數(shù)值乘以機器周期就是定時時間。計數(shù)值乘以機器周期就是定時時間。 t = t = TcyTcy * * N N 通過通過設(shè)置設(shè)置TMOD,可選擇,可選擇T0、T1的工作的工作模式:模式:計數(shù)器模式:對計數(shù)器模式:對外部事件外部事件計數(shù)。計數(shù)。 信號由信號由T0T0(P3.4P3.4)或)或T1(P3.5)T1(P3.5)引腳輸入。引腳輸入。 2022-5-27106.3 6.3 定時定時/ /計數(shù)器的工

8、作方式計數(shù)器的工作方式方式方式0 0:13位定時位定時/ /計數(shù)器計數(shù)器2022-5-2711 方式方式0:13位的定時位的定時/計數(shù)器,它是計數(shù)器,它是AT89S51為了兼容為了兼容MCS-48單片機而保留下來的。單片機而保留下來的。 而在而在AT89S51單片機中,具有功能更為強大的單片機中,具有功能更為強大的16位定時位定時/計數(shù)器,使用非常方便,因此,在計數(shù)器,使用非常方便,因此,在AT89S51單片機中,方單片機中,方式式0已基本不用,而是使用方式已基本不用,而是使用方式1,即,即16位的工作方式。位的工作方式。2022-5-2712方式方式1 1:16位定時位定時/ /計數(shù)器計數(shù)器

9、2022-5-2713門控位門控位GATE的作用的作用當(dāng)當(dāng)GATE=0=0時時僅由僅由TR0TR0控制計數(shù)的啟動。與門輸出控制計數(shù)的啟動。與門輸出1 1時,控制開關(guān)時,控制開關(guān)接通,計數(shù)開始。接通,計數(shù)開始。 當(dāng)當(dāng)GATE=1=1時時由由INT0INT0和和TR0TR0共同控制計數(shù)的啟動。這種方式可以用共同控制計數(shù)的啟動。這種方式可以用來測量來測量INT0INT0引腳上正脈沖的寬度。引腳上正脈沖的寬度。 2022-5-2714方式方式1 1:初值的計算與裝入初值的計算與裝入 確定計數(shù)值確定計數(shù)值N N。例如:在定時器中,。例如:在定時器中,N=t/Tcy。 計數(shù)初值計數(shù)初值X=216-N=65

10、536-N。 計數(shù)初值要計數(shù)初值要分成分成2個字節(jié)個字節(jié)分別送入分別送入TH0、TL0 。 MOV TL0,#初值的低字節(jié)初值的低字節(jié) MOV TH0,#初值的高字節(jié)初值的高字節(jié)2022-5-2715【例例5-4】若要求定時器若要求定時器T0T0工作于方式工作于方式1 1,定時時間為,定時時間為1ms,當(dāng)晶振為當(dāng)晶振為6MHz時,求送入時,求送入TH0TH0和和TL0TL0的計數(shù)初值各為多少?的計數(shù)初值各為多少?應(yīng)怎樣送入應(yīng)怎樣送入TH0TH0和和TL0TL0?解:由于晶振為解:由于晶振為6MHz6MHz,所以機器周期,所以機器周期TcyTcy為為2 2S S,因此:,因此: 計數(shù)值計數(shù)值 N

11、=N=t/Tcyt/Tcy=1=11010-3-3/2/21010-6-6500500 計數(shù)初值計數(shù)初值 X X2 21616-N-N65536-50065536-5006503665036FE0CH FE0CH 也可以利用以下也可以利用以下2 2條指令完成:條指令完成:v MOV TL0, #(65536-500) MOV TL0, #(65536-500)%256 ; 256 ; 余數(shù)余數(shù)為計數(shù)初值的為計數(shù)初值的低字節(jié)低字節(jié)v MOV TH0, #(65536-500) MOV TH0, #(65536-500)/ /256 ; 256 ; 商商為計數(shù)初值的為計數(shù)初值的高字節(jié)高字節(jié)用傳送指

12、令分別將用傳送指令分別將FEHFEH送入送入TH0TH0中,中,0CH0CH送入送入TL0TL0中即可。中即可。2022-5-2716 方式方式0 0和方式和方式1 1的最大特點是計數(shù)溢出后,計數(shù)的最大特點是計數(shù)溢出后,計數(shù)器為全器為全0 0。因此在循環(huán)定時或循環(huán)計數(shù)時就存在用指。因此在循環(huán)定時或循環(huán)計數(shù)時就存在用指令反復(fù)裝入計數(shù)初值的問題。這不僅影響定時精度,令反復(fù)裝入計數(shù)初值的問題。這不僅影響定時精度,也給程序設(shè)計帶來麻煩。也給程序設(shè)計帶來麻煩。 方式方式2 2就是針對此問題而設(shè)置的。就是針對此問題而設(shè)置的。2022-5-2717方式方式2 2:8 8位自動重裝初值的定時位自動重裝初值的定

13、時/ /計數(shù)器計數(shù)器 計數(shù)初值計數(shù)初值X=2X=28 8-N=256-N -N=256-N 計數(shù)范圍:計數(shù)范圍:1 1256256 自動重裝,無耽擱,常用于精確定時。自動重裝,無耽擱,常用于精確定時。2022-5-2718方式方式3 3:T0T0分成獨立的分成獨立的TL0TL0和和TH0TH0,T1T1停止計數(shù)。停止計數(shù)。 TL0 TL0:8 8位定時位定時/ /計數(shù)器,使用計數(shù)器,使用TR0TR0和和TF0TF0。 TH0 TH0:8 8位定時器(位定時器(借用借用TR1TR1、TF1TF1)。)。 T1 T1:用作波特率發(fā)生器。:用作波特率發(fā)生器。( (不觸發(fā)中斷不觸發(fā)中斷) )2022-

14、5-2719 T0 T0工作在方式工作在方式3 3時,時,T1T1的各種工作方式的各種工作方式 圖6-9 T0工作在方式3時,T1為方式0的工作示意圖2022-5-2720 T0 T0工作在方式工作在方式3 3時,時,T1T1的各種工作方式的各種工作方式 圖圖6-10 T0工作在方式3時,T1為方式1的工作示意圖2022-5-2721 T0 T0工作在方式工作在方式3 3時,時,T1T1的各種工作方式的各種工作方式 圖圖6-11 T0工作在方式3時,T1為方式2的工作示意圖2022-5-2722注意:注意:對比,是為了將來使用時合理的選擇。對比,是為了將來使用時合理的選擇。 定時定時/ /計數(shù)

15、器計數(shù)器4 4種工作方式的比較種工作方式的比較方式方式0 0:13位位,為兼容,為兼容MCS-48而設(shè)置,計數(shù)范圍而設(shè)置,計數(shù)范圍1213 。方式方式1 1:16位位,計數(shù)范圍計數(shù)范圍 1216,即,即165536 。( (計數(shù)范圍大計數(shù)范圍大) )方式方式2 2:8位位,自動重裝。計數(shù)范圍,自動重裝。計數(shù)范圍1256。 (最大優(yōu)勢:自動重新裝入計數(shù)初值,精確定時)(最大優(yōu)勢:自動重新裝入計數(shù)初值,精確定時)方式方式3 3:TL0,8位定時位定時/計數(shù)器;計數(shù)器; TH0,8位定時器。位定時器。 T1用作用作波特率發(fā)生器。波特率發(fā)生器。 2022-5-2723n 對外部輸入的計數(shù)信號的要求對外

16、部輸入的計數(shù)信號的要求 當(dāng)定時器/計數(shù)器工作在計數(shù)器模式時,計數(shù)脈沖來自外部輸入引腳T0或T1。 當(dāng)輸入信號產(chǎn)生負(fù)跳變時,計數(shù)器的值增1。 每個機器周期的S5P2期間,都對外部輸入引腳T0或T1進行采樣。如在第一個機器周期采樣的值為1,而在下一個機器周期采樣的值為0,則在緊跟著的再下一個機器周期S3P1期間,計數(shù)器加1。由于確認(rèn)一次負(fù)跳變要花2個機器周期,因此外部輸入的計數(shù)脈沖的最高頻率為系統(tǒng)振蕩器頻率的1/24。 例如,選用6MHz頻率的晶體,允許輸入的脈沖頻率最高為250kHz。如果選用12MHz頻率的晶體,則可輸入最高頻率為500kHz的外部脈沖。 2022-5-2724 對于外部輸入信

17、號的占空比并沒有什么限制,但為了確保某一電平在變化之前能被采樣一次,則這一電平至少要保持一個機器周期。 故對外部輸入信號的要求如下圖所示,Tcy為機器周期。2022-5-2725定時定時/ /計數(shù)器的使用方法:計數(shù)器的使用方法: 1 1、設(shè)置定時、設(shè)置定時/ /計數(shù)器的工作模式和工作方式。計數(shù)器的工作模式和工作方式。 2 2、計算并裝入初值。、計算并裝入初值。 3 3、啟動計數(shù)。、啟動計數(shù)。 4 4、計數(shù)溢出時,使、計數(shù)溢出時,使TF0TF0或或TF1TF1置置1 1,向,向CPUCPU發(fā)出中斷請求。發(fā)出中斷請求。6.4 6.4 定時定時/ /計數(shù)器的應(yīng)用和程序設(shè)計計數(shù)器的應(yīng)用和程序設(shè)計202

18、2-5-2726初始化程序應(yīng)完成的工作:初始化程序應(yīng)完成的工作:v1、對、對TMOD賦值,以確定賦值,以確定T0和和T1的工作方式;的工作方式; (具體包括哪些內(nèi)容?)(具體包括哪些內(nèi)容?)v2、求初值,并裝入、求初值,并裝入TH0、TL0或或TH1、TL1;v3、中斷方式時,要對、中斷方式時,要對IE賦值,開放中斷;賦值,開放中斷;v4、使、使TR0或或TR1置置1,啟動定時,啟動定時/計數(shù)器工作。計數(shù)器工作。2022-5-2727計數(shù)器的應(yīng)用計數(shù)器的應(yīng)用【例例】有一包裝流水線,產(chǎn)品每計數(shù)有一包裝流水線,產(chǎn)品每計數(shù)2424瓶時發(fā)出一個包裝控瓶時發(fā)出一個包裝控制信號。試編寫程序完成這一計數(shù)任務(wù)

19、。用制信號。試編寫程序完成這一計數(shù)任務(wù)。用T0T0完成計數(shù),用完成計數(shù),用P1.0P1.0發(fā)出控制信號。發(fā)出控制信號。確定工作方式:確定工作方式:T0T0工作在何種方式?工作在何種方式?GATE=0GATE=0, C/T=C/T=?,?,M1M0=M1M0=?求計數(shù)初值求計數(shù)初值X:X: N= N=? X= X=?2022-5-2728【例例】有一包裝流水線,產(chǎn)品每計數(shù)有一包裝流水線,產(chǎn)品每計數(shù)2424瓶時發(fā)出一個包裝控瓶時發(fā)出一個包裝控制信號。試編寫程序完成這一計數(shù)任務(wù)。用制信號。試編寫程序完成這一計數(shù)任務(wù)。用T0T0完成計數(shù),用完成計數(shù),用P1.0P1.0發(fā)出控制信號。發(fā)出控制信號。確定方

20、式字:確定方式字:T0T0工作在計數(shù)器方式工作在計數(shù)器方式2 2 :GATE=0 GATE=0 ,C/T=1C/T=1,M1M0=10M1M0=10方式控制字為方式控制字為06H06H 求計數(shù)初值求計數(shù)初值X:X:N=24N=24X=256-24=232=E8HX=256-24=232=E8H應(yīng)將應(yīng)將E8HE8H送入送入TH0TH0和和TL0TL0中中 2022-5-2729 ORG 0000H ORG 0000H LJMP MAIN LJMP MAIN ORG 000BH ;T0ORG 000BH ;T0中斷入口中斷入口 LJMP DVT0 LJMP DVT0 ORG 0100HORG 01

21、00HMAIN:MOV TMOD,#06H ;MAIN:MOV TMOD,#06H ;置置T0T0計數(shù)方式計數(shù)方式2 2 MOV TL0,#0E8H ; MOV TL0,#0E8H ;裝入計數(shù)初值裝入計數(shù)初值 MOV TH0,#0E8H ; MOV TH0,#0E8H ;備份,自動重裝備份,自動重裝 SETB EA ;CPU SETB EA ;CPU開中斷開中斷 SETB ET0 ;T0 SETB ET0 ;T0開中斷開中斷 SETB TR0 ;SETB TR0 ;啟動啟動T0T0 SJMP $ ; SJMP $ ;等待中斷到來等待中斷到來DVT0:SETB P1.0 DVT0:SETB P1

22、.0 NOP NOP NOP NOP CLR P1.0 CLR P1.0 RETI RETI END END主程序主程序 中斷服務(wù)程序中斷服務(wù)程序 中斷如何產(chǎn)生?中斷如何產(chǎn)生? 2022-5-2730定時器的應(yīng)用定時器的應(yīng)用 1、定時時間較小時(小于定時時間較小時(小于65ms65ms)。 晶振為晶振為12MHz12MHz時,時,TcyTcy為為1 1S S??芍苯硬捎梅绞健?芍苯硬捎梅绞? 1完成定時任務(wù)。完成定時任務(wù)。 【例例5-6】利用定時利用定時/ /計數(shù)器計數(shù)器T0T0的方式的方式1 1,產(chǎn)生,產(chǎn)生10ms10ms的定時,并的定時,并使使P1.0P1.0引腳上輸出周期為引腳上輸出周期

23、為20ms20ms的方波,采用中斷方式,設(shè)系的方波,采用中斷方式,設(shè)系統(tǒng)的晶振頻率為統(tǒng)的晶振頻率為12 MHz12 MHz。 確定方式字:確定方式字:T0T0的工作方式?的工作方式?GATE=0 GATE=0 ,C/T=C/T=?,?,M1M0=M1M0=?求計數(shù)初值求計數(shù)初值X:X: TcyTcy= =? N= N=? X= X=? 定時器的最大計數(shù)值是定時器的最大計數(shù)值是2 216 16 = = 65536。(方式方式1 1:1616位)位) 晶振為晶振為12MHz12MHz時,時,TcyTcy為為1 1S S,則最大定時時間為,則最大定時時間為65.536ms65.536ms。 2022

24、-5-2731【例例】利用定時利用定時/ /計數(shù)器計數(shù)器T0T0的方式的方式1 1,產(chǎn)生,產(chǎn)生10ms10ms的定時,并使的定時,并使P1.0P1.0引腳上輸出周期為引腳上輸出周期為20ms20ms的方波,采用中斷方式,設(shè)系統(tǒng)的方波,采用中斷方式,設(shè)系統(tǒng)的晶振頻率為的晶振頻率為12 MHz12 MHz。 確定方式字:確定方式字:T0T0工作在定時器方式工作在定時器方式1 1:GATE=0 GATE=0 ,C/T=0C/T=0,M1M0=01M1M0=01方式控制字為方式控制字為0101H H 求計數(shù)初值求計數(shù)初值X:X: TcyTcy為為1 1S S N=10ms/1 N=10ms/1S=10

25、S=10 000000 X=65536-10000=D8F0H X=65536-10000=D8F0H 應(yīng)將應(yīng)將D8D8送送TH0, F0HTH0, F0H送送TL0TL0 2022-5-2732 ORG 0000H ORG 0000H LJMP MAIN LJMP MAIN ORG 000BH ;T0ORG 000BH ;T0中斷入口中斷入口 LJMP DVT0 LJMP DVT0 ORG 0100HORG 0100HMAIN:MOV TMOD,#01H ;MAIN:MOV TMOD,#01H ;置置T0T0方式方式1 1 MOV TH0,#0D8H ; MOV TH0,#0D8H ;裝入計

26、數(shù)初值裝入計數(shù)初值 MOV TL0,#0F0H MOV TL0,#0F0H SETB EA ;CPU SETB EA ;CPU開中斷開中斷 SETB ET0 ;T0 SETB ET0 ;T0開中斷開中斷 SETB TR0 ;SETB TR0 ;啟動啟動T0T0 SJMP $ ; SJMP $ ;等待中斷到來等待中斷到來DVT0:CPL P1.0 DVT0:CPL P1.0 MOV TH0,#0D8H MOV TH0,#0D8H MOV TL0,#0F0H MOV TL0,#0F0H RETI RETI END END主程序主程序 中斷服務(wù)程序中斷服務(wù)程序 中斷過程:中斷過程: T0溢出溢出 置

27、置TF0為為1 向向CPU申請中斷申請中斷 2022-5-2733采用軟件查詢方式完成的源程序如下:采用軟件查詢方式完成的源程序如下: ORG 0000H ORG 0000H LJMP MAIN ; LJMP MAIN ;跳轉(zhuǎn)到主程序跳轉(zhuǎn)到主程序 ORG 0100H ORG 0100H MAIN:MOV TMOD,#01H ;T0MAIN:MOV TMOD,#01H ;T0工作于計數(shù)器方式工作于計數(shù)器方式1 1 LOOP:MOV TH0,#0D8H ; LOOP:MOV TH0,#0D8H ;裝入計數(shù)初值裝入計數(shù)初值 MOV TL0,#0F0H MOV TL0,#0F0H SETB TR0 ;

28、 SETB TR0 ;啟動定時器啟動定時器T0T0 JNB TF0,$ ;JNB TF0,$ ;查詢查詢TF0TF0 CLR TF0 ;TF0CLR TF0 ;TF0清清0 0 CPL P1.0 ;P1.0 CPL P1.0 ;P1.0取反輸出取反輸出 SJMP LOOP SJMP LOOP END END2022-5-2734 2、定時時間較大時(大于定時時間較大時(大于65ms65ms)。)。 定時時間長度定時時間長度t=t=TcyTcy * * N N 定時時間太長,超過了定時時間太長,超過了1616位的最大定時長度。位的最大定時長度。 實現(xiàn)方法:實現(xiàn)方法: 方法方法1 1:采用:采用1

29、 1個定時器定時一定的間隔(如個定時器定時一定的間隔(如20ms20ms),然后),然后 用軟件進行循環(huán)計數(shù);用軟件進行循環(huán)計數(shù); 方法方法2 2:采用:采用2 2個定時器級聯(lián),兩個定時器用來分別定時一個定時器級聯(lián),兩個定時器用來分別定時一段時間(如段時間(如20ms20ms為周期),一個定時到,則啟動另一個開始定為周期),一個定時到,則啟動另一個開始定時。時。 2022-5-2735【例例】編寫程序,實現(xiàn)用定時編寫程序,實現(xiàn)用定時/ /計數(shù)器計數(shù)器T0T0定時,使定時,使P1.7P1.7引腳引腳輸出周期為輸出周期為2s2s的方波。設(shè)系統(tǒng)的晶振頻率為的方波。設(shè)系統(tǒng)的晶振頻率為12MHz12MH

30、z。確定方式字:確定方式字:T0T0工作在定時器方式工作在定時器方式1 1:GATE=0GATE=0,C/T=0C/T=0,M1M0=01M1M0=01方式控制字為方式控制字為0101H H 求計數(shù)初值求計數(shù)初值X:X: TcyTcy為為1 1S S N=20ms/1 N=20ms/1S=20000S=20000 X=65536-20000=4E20H X=65536-20000=4E20H 應(yīng)將應(yīng)將4E4E送送TH0, 20HTH0, 20H送送TL0TL0 采用定時采用定時20ms20ms,然后再計數(shù),然后再計數(shù)5050次的方法實現(xiàn)。次的方法實現(xiàn)。2022-5-2736 ORG 0000H

31、 ORG 0000H LJMP MAIN LJMP MAIN ORG 000BH ORG 000BH LJMP DVT0 LJMP DVT0 ORG 0030HORG 0030HMAIN:MOV TMOD,#01H ;T0MAIN:MOV TMOD,#01H ;T0定時器方式定時器方式1 1 MOV TH0,#4EH ; MOV TH0,#4EH ;裝入計數(shù)初值裝入計數(shù)初值 MOV TL0,#20H MOV TL0,#20H MOV R7,#50MOV R7,#50 ; ;計數(shù)計數(shù)5050次次 SETB ET0 ;T0 SETB ET0 ;T0開中斷開中斷 SETB EA ;CPUSETB E

32、A ;CPU開中斷開中斷 SETB TR0 ;SETB TR0 ;啟動啟動T0T0 SJMP $ ; SJMP $ ;等待中斷等待中斷DVT0:DJNZ R7,NT0DVT0:DJNZ R7,NT0 CPL P1.7 CPL P1.7 MOV R7,#50 MOV R7,#50 NT0:MOV TH0,#4EH NT0:MOV TH0,#4EH MOV TL0,#20H MOV TL0,#20H RETI RETI END END主程序主程序 中斷服務(wù)程序中斷服務(wù)程序 2022-5-2737n 方式方式3 3的應(yīng)用的應(yīng)用 T0 T0工作在方式工作在方式3 3時,分為獨立的時,分為獨立的TL0T

33、L0和和TH0TH0。其中,。其中,TL0TL0可作為可作為8 8位的定時器位的定時器/ /計數(shù)器,而計數(shù)器,而TH0TH0只能作為只能作為8 8位的定時器。位的定時器。此時此時T1T1可工作在方式可工作在方式0 0、1 1或或2 2。 一般情況下,當(dāng)一般情況下,當(dāng)T1T1用作串行口波特率發(fā)生器時,用作串行口波特率發(fā)生器時,T0T0才才設(shè)置為方式設(shè)置為方式3 3。此時,常把。此時,常把T1T1設(shè)置為方式設(shè)置為方式2 2,用作波特率發(fā),用作波特率發(fā)生器。生器。2022-5-2738【例例6-6】假設(shè)某假設(shè)某AT89S51AT89S51單片機應(yīng)用系統(tǒng)的兩個外部中斷源已單片機應(yīng)用系統(tǒng)的兩個外部中斷源

34、已被占用,設(shè)置被占用,設(shè)置T1T1工作在方式工作在方式2 2,用作波特率發(fā)生器。現(xiàn)要求增,用作波特率發(fā)生器?,F(xiàn)要求增加一個外部中斷源,并控制加一個外部中斷源,并控制P1.0P1.0引腳輸出一個引腳輸出一個5kHz5kHz(周期為(周期為200200 s s)的方波。設(shè)時鐘為)的方波。設(shè)時鐘為12MHz12MHz。基本思想基本思想: 設(shè)置設(shè)置T0T0工作在方式工作在方式3 3:TL0TL0計數(shù)模式,初值為計數(shù)模式,初值為0FFH0FFH,當(dāng)檢,當(dāng)檢測到測到T0T0腳信號出現(xiàn)負(fù)跳變時,腳信號出現(xiàn)負(fù)跳變時,TL0TL0溢出,同時向溢出,同時向CPUCPU申請中斷,申請中斷,即此時即此時T0T0腳相當(dāng)

35、于一個下降沿觸發(fā)的外部中斷請求輸入端。腳相當(dāng)于一個下降沿觸發(fā)的外部中斷請求輸入端。 在中斷處理子程序中,啟動在中斷處理子程序中,啟動TH0TH0,TH0TH0定時定時100100 s s,從而控,從而控制制P1.0P1.0輸出周期為輸出周期為200200 s s的方波信號。的方波信號。2022-5-2739(1 1)初值)初值X X計算計算 TL0 TL0的初值設(shè)為的初值設(shè)為0FFH0FFH。 5kHz 5kHz方波的周期為方波的周期為200200 s s,因此,因此TH0TH0的定時時間為的定時時間為100100 s s。 初值初值X X計算:計算:(2(28 8 X)X) 1 1 1010

36、6 6 = = 1 1 10104 4 X X = = 2 28 8 100100 = = 156156 = = 9CH9CH(2 2)程序設(shè)計)程序設(shè)計 ORG 0000H ORG 0000H LJMP MAIN LJMP MAIN ORG 000BH ORG 000BH;TL0TL0中斷入口,中斷入口,TL0TL0使用使用T0T0的中斷的中斷 LJMP TL0INT LJMP TL0INT;跳向跳向TL0TL0中斷服務(wù)程序,中斷服務(wù)程序,TL0TL0占用占用T0T0中斷中斷2022-5-2740 ORG 001BH ORG 001BH ;TH0TH0中斷入口,中斷入口,T1T1為方式為方式

37、3 3時,時, ;TH0TH0使用了使用了T1T1的中斷的中斷 LJMP TH0INT LJMP TH0INT ;跳向;跳向TH0TH0中斷服務(wù)程序中斷服務(wù)程序 ORG 0100H ORG 0100H ;主程序入口;主程序入口MAINMAIN:MOVMOVTMODTMOD,#27H #27H ;T0T0方式方式3 3,T1T1方式方式2 2定時作串定時作串 ;行口波特率發(fā)生器;行口波特率發(fā)生器 MOV MOVTL0TL0,#0FFH #0FFH ;置;置TL0TL0初值初值 MOV MOVTH0TH0,#9CH#9CH ;置;置TH0TH0初值初值 MOV MOVTL1TL1,# #datal

38、datal ;TL1TL1裝入串口波特率常數(shù)裝入串口波特率常數(shù)MOV MOV TH1TH1,# #datahdatah ;TH1TH1裝入串口波特率常數(shù)裝入串口波特率常數(shù) MOV MOV TCONTCON,#15H#15H ;允許;允許T0T0中斷中斷2022-5-2741 MOV IEMOV IE,#9FH#9FH;設(shè)置中斷允許,總中斷允許設(shè)置中斷允許,總中斷允許 ;TH0TH0、TL0TL0中斷允許中斷允許HEREHERE:AJMP HERE AJMP HERE ;循環(huán)等待;循環(huán)等待TL0INTTL0INT:MOV TL0MOV TL0,#0FFH#0FFH ;TL0TL0中斷服務(wù)處理子程

39、序中斷服務(wù)處理子程序;TL0TL0重新裝入初值重新裝入初值 SETB TR1SETB TR1 ;開始啟動;開始啟動TH0TH0定時定時 RETI RETITH0INTTH0INT:MOV TH0MOV TH0,#9CH#9CH;TH0TH0中斷服務(wù)程序中斷服務(wù)程序 ;TH0TH0重新裝入初值重新裝入初值 CPL CPLP1.0P1.0 ;P1.0P1.0位取反輸出位取反輸出 RETI RETI2022-5-2742門控位的應(yīng)用門控位的應(yīng)用【例例】 測量測量INT0INT0引腳上出現(xiàn)的引腳上出現(xiàn)的正脈沖寬度正脈沖寬度( (時間長度時間長度) ),并將,并將結(jié)果(以機器周期的形式)存結(jié)果(以機器周

40、期的形式)存放在放在30H30H和和31H31H兩個單元中。兩個單元中。如何測量正脈沖的寬度?如何測量正脈沖的寬度?1 1、脈沖寬度、脈沖寬度= =TcyTcy * * N N,所以只需求出正脈沖對應(yīng)所以只需求出正脈沖對應(yīng)的計數(shù)值,再乘以的計數(shù)值,再乘以TcyTcy。2 2、GATE=1GATE=1時,時,INT0INT0引腳引腳對計數(shù)器的控制作用。對計數(shù)器的控制作用。 2022-5-27431 1、將、將T0T0設(shè)置為定時器方式設(shè)置為定時器方式1 1,GATE=1GATE=1,計數(shù)器初值為,計數(shù)器初值為0 0,將將TR0TR0置置1 1。 2 2、INT0INT0引腳上出現(xiàn)高電平時,計數(shù)器開始對機器周期引腳上出現(xiàn)

溫馨提示

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

評論

0/150

提交評論