單片機(jī)定時器_第1頁
單片機(jī)定時器_第2頁
單片機(jī)定時器_第3頁
單片機(jī)定時器_第4頁
單片機(jī)定時器_第5頁
已閱讀5頁,還剩51頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第第6 6章章 MCS-51MCS-51的定時器的定時器/ /計數(shù)器計數(shù)器 v第一節(jié)第一節(jié) 定時器定時器/ /計數(shù)器的結(jié)構(gòu)與工作原理計數(shù)器的結(jié)構(gòu)與工作原理v第二節(jié)第二節(jié) 定時器定時器/ /計數(shù)器方式寄存器和控制寄存器計數(shù)器方式寄存器和控制寄存器v第三節(jié)第三節(jié) 定時器定時器/ /計數(shù)器的計數(shù)器的4 4種工作方式種工作方式v第四節(jié)第四節(jié) 編程舉例編程舉例6.16.1定時定時/ /計數(shù)器的結(jié)構(gòu)與工作原理計數(shù)器的結(jié)構(gòu)與工作原理1 1、 定時定時/ /計數(shù)器組成核心是計數(shù)器組成核心是1616位的加位的加1 1計數(shù)計數(shù)2 2、 提供給定時提供給定時/ /計數(shù)器實(shí)現(xiàn)加計數(shù)器實(shí)現(xiàn)加1 1的信號脈沖有兩個來源:

2、的信號脈沖有兩個來源:(1 1) 外部事件提供的計數(shù)脈沖通過引腳外部事件提供的計數(shù)脈沖通過引腳T0T0、T1T1端口送加端口送加1 1計數(shù)器;計數(shù)器;(2 2) 單片微機(jī)內(nèi)部的時鐘脈沖經(jīng)過單片微機(jī)內(nèi)部的時鐘脈沖經(jīng)過1212分頻后送加分頻后送加1 1計數(shù)器計數(shù)器3 3、 2 2種種工作模式工作模式:(1 1)計數(shù)器工作模式)計數(shù)器工作模式: :(2 2)定時器工作模式)定時器工作模式: :其計數(shù)脈沖周期為單片微機(jī)的機(jī)器周期。設(shè)其計數(shù)脈沖周期為單片微機(jī)的機(jī)器周期。設(shè)晶振為晶振為12MHZ12MHZ,則:,則: TcyTcy=12=12* *(1/12M)=1us(1/12M)=1us 4 4、 當(dāng)

3、不斷加當(dāng)不斷加1 1計數(shù)到達(dá)設(shè)定值時,計數(shù)到達(dá)設(shè)定值時,1616位計數(shù)器將由全位計數(shù)器將由全“1”1”回歸為全回歸為全“0”0”,計數(shù)器產(chǎn)生回,計數(shù)器產(chǎn)生回0 0溢出脈沖,置位中斷系統(tǒng)溢出脈沖,置位中斷系統(tǒng)的中斷請求標(biāo)志位,請求主機(jī)進(jìn)行中斷處理。的中斷請求標(biāo)志位,請求主機(jī)進(jìn)行中斷處理。5 5、 可以編程,形成不同的可以編程,形成不同的四種工作方式四種工作方式。6 6、定時器定時器/ /計數(shù)器對輸入信號的要求計數(shù)器對輸入信號的要求 通過通過T0T0、T1T1對外部信號計數(shù),下降沿觸發(fā)計數(shù),計算機(jī)對外部信號計數(shù),下降沿觸發(fā)計數(shù),計算機(jī)需要用兩個機(jī)器周期來識別需要用兩個機(jī)器周期來識別1 1次計數(shù),因

4、而最大計數(shù)速率為次計數(shù),因而最大計數(shù)速率為振蕩頻率的振蕩頻率的1/241/24。即輸入信號的高、低電平至少要保持一即輸入信號的高、低電平至少要保持一個機(jī)器周期。個機(jī)器周期。 例如選用例如選用1212MHzMHz頻率晶體,最高輸入頻率晶體,最高輸入500500KHzKHz外部脈沖。外部脈沖。 外部外部脈沖如圖(脈沖如圖(TcyTcy為機(jī)器周期):為機(jī)器周期):6.6.2 2定時器定時器/ /計數(shù)器方式寄存器和控制寄存器計數(shù)器方式寄存器和控制寄存器TMOD門控位門控位計數(shù)定時模式選擇位計數(shù)定時模式選擇位工作方式選擇位工作方式選擇位TCON低低4 4位與外部中斷有關(guān)位與外部中斷有關(guān)計數(shù)溢出標(biāo)志位計數(shù)

5、溢出標(biāo)志位計數(shù)運(yùn)行控制位計數(shù)運(yùn)行控制位工作方式控制寄存器控制寄存器一、定時器一、定時器/ /計數(shù)器工作方式控制寄存器計數(shù)器工作方式控制寄存器TMODTMOD 8位分為兩組,高位分為兩組,高4位控制位控制T1,低低4位控制位控制T0。(1 1)M1M1、M0M0工作方式選擇位工作方式選擇位 M1 M0 M1 M0 工工 作作 方方 式式 0 0 0 0 方式方式0 0,1313位定時器位定時器/ /計數(shù)器。計數(shù)器。 0 1 0 1 方式方式1 1,1616位定時器位定時器/ /計數(shù)器。計數(shù)器。 1 0 1 0 方式方式2 2,8 8位常數(shù)自動重新裝載位常數(shù)自動重新裝載 1 1 1 1 方式方式3

6、 3,僅適用于,僅適用于T0T0,T0T0分成兩個分成兩個8 8位位 計數(shù)器,計數(shù)器,T1T1停止工作。停止工作。(2)GATE門控位門控位0:以:以TR0、TR1啟動定時器啟動定時器/計數(shù)器運(yùn)行(軟件方式)計數(shù)器運(yùn)行(軟件方式)1:用外中斷引腳用外中斷引腳/INT0、/INT1上的電平和上的電平和TR0、TR1啟動定時器啟動定時器/計數(shù)器運(yùn)行(硬件方式)計數(shù)器運(yùn)行(硬件方式) (3)C/計數(shù)器模式和定時器模式選擇位計數(shù)器模式和定時器模式選擇位0:定時器模式。:定時器模式。1:計數(shù)器模式。計數(shù)器模式。注意:注意:TMODTMOD不能位尋址,只能用字節(jié)傳送指令設(shè)置不能位尋址,只能用字節(jié)傳送指令設(shè)

7、置定時器工定時器工作作方式。復(fù)位時,方式。復(fù)位時,TMODTMOD所有位均為零。所有位均為零。例:例:設(shè)定時器設(shè)定時器1 1為定時工作方式,要求由軟件啟動定時器為定時工作方式,要求由軟件啟動定時器1 1工工作,按照方式作,按照方式2 2工作。定時器工作。定時器0 0為計數(shù)方式,要求由軟件啟動為計數(shù)方式,要求由軟件啟動定時器定時器0 0工作,按照方式工作,按照方式1 1工作。工作。則:則:MOVMOVTMODTMOD,#25H#25H二、定時器二、定時器/ /計數(shù)器控制寄存器計數(shù)器控制寄存器TCONTCON 低低4 4位與外部中斷有關(guān)。位與外部中斷有關(guān)。 高高4 4位的功能如下:位的功能如下:

8、(1) TF1(1) TF1、TF0TF0計數(shù)溢出標(biāo)志位計數(shù)溢出標(biāo)志位 (2) TR1(2) TR1、TR0TR0計數(shù)運(yùn)行控制位計數(shù)運(yùn)行控制位 1 1:啟動定時器啟動定時器/ /計數(shù)器工作計數(shù)器工作 0 0:停止定時器停止定時器/ /計數(shù)器工作計數(shù)器工作 6 6. .3 3 定時器定時器/ /計數(shù)器的計數(shù)器的4 4種工作方式種工作方式 一、方式一、方式0 0( M1M1、M0M0為為0000,1313位定時器位定時器/ /計數(shù)器)計數(shù)器) 定時器定時器/ /計數(shù)器框圖:計數(shù)器框圖: N=2N=21313x=8192xx=8192xT=T=N NT Tcycy=(8192-x)=(8192-x)

9、TcyTcy1INT1二、方式二、方式1 1( M1M1、M0M0為為0 01 1,1616位定時器位定時器/ /計數(shù)器)計數(shù)器) N=2N=21616-x=65536-x-x=65536-xT=T=N NT Tcycy=(65536-x)=(65536-x)T Tcycy三、方式三、方式2 2M1M1、M0M0為為10108 8位自動重裝初值定時器位自動重裝初值定時器/ /計數(shù)器計數(shù)器 N=2N=28 8-x=256-x -x=256-x T=T=N NTcyTcy=(256-x)=(256-x)TcyTcy 可自動恢復(fù)初值(初值自動再裝入)可自動恢復(fù)初值(初值自動再裝入)省去省去用戶軟件中

10、重用戶軟件中重裝初值的程序,精確的定時。裝初值的程序,精確的定時。適合用作較精確的定時脈沖信號發(fā)生器。適合用作較精確的定時脈沖信號發(fā)生器。特別適用于串行口波特率發(fā)生器。特別適用于串行口波特率發(fā)生器。四、方式四、方式3 3(M1M1、M0M0為為1111,只適用于定時器,只適用于定時器/ /計數(shù)器計數(shù)器T0T0) T0分為兩個獨(dú)立的8位計數(shù)器:TL0和TH0TL0-TR0-TF0TL0-TR0-TF0TH0-TR1-TF1TH0-TR1-TF11 1工作方式工作方式3 3下的下的T0T0v TL0TL0其功能和操作與方式其功能和操作與方式0 0、方式、方式1 1完全相同,可定時亦可計數(shù)。完全相同

11、,可定時亦可計數(shù)。v TH0TH0被固定為一個被固定為一個8 8位定時器(不能對外部計數(shù)),并使用定位定時器(不能對外部計數(shù)),并使用定時器時器T1T1的運(yùn)行控制位的運(yùn)行控制位TR1TR1,同時占用定時器同時占用定時器T1T1的中斷請求源的中斷請求源TF1TF1。2T0工作在方式工作在方式3下下T1的各種工作方式的各種工作方式 (1 1)T1T1工作在方式工作在方式0 0 T0 T0工作在方式工作在方式3 3時,時,T1T1可定為方式可定為方式0 0、方式、方式1 1和方式和方式2 2,用來作為串行口的波特率發(fā)生器,或不需要中斷的場合。用來作為串行口的波特率發(fā)生器,或不需要中斷的場合。(2 2

12、) T1T1工作在方式工作在方式1 1 (3 3) T1T1工作在方式工作在方式2 2 6 6. .4 4 定時器定時器/ /計數(shù)器的編程和應(yīng)用計數(shù)器的編程和應(yīng)用 一、定時器一、定時器/ /計數(shù)器的初始化計數(shù)器的初始化1 1計數(shù)器初值的計算計數(shù)器初值的計算 設(shè)計數(shù)器的最大計數(shù)值為設(shè)計數(shù)器的最大計數(shù)值為M,則,則計數(shù)初值計數(shù)初值X的公式如下的公式如下:2 2定時器初值的計算定時器初值的計算 定時器定時器模式下,計數(shù)器由振蕩脈沖模式下,計數(shù)器由振蕩脈沖fosc經(jīng)經(jīng)12分頻后計分頻后計數(shù)數(shù)。則。則定時初值定時初值X的公式如下的公式如下: X=M-(定時值定時值)/(機(jī)器周期(機(jī)器周期)X=M-計數(shù)值

13、計數(shù)值3 3最大計數(shù)值、最大定時值最大計數(shù)值、最大定時值M MM=2M=213138192方式方式0方式方式1 1方式方式2方式方式3 3M=2M=2161665536M=2M=28 8256M=2M=28 8256若設(shè)單片機(jī)系統(tǒng)主頻為若設(shè)單片機(jī)系統(tǒng)主頻為12MHz12MHz(機(jī)器周期機(jī)器周期=1 =1 s s ) 例:在例:在6MHZ6MHZ的主頻下,如果要產(chǎn)生的主頻下,如果要產(chǎn)生1ms1ms的定時的定時時間時間, , 如何如何設(shè)置定時初值?設(shè)置定時初值?解解:設(shè)要求:設(shè)要求在方式在方式1 1情況下工作情況下工作,則初值:,則初值: X=M-( X=M-(定時值定時值)/)/(機(jī)器周期)(機(jī)

14、器周期) = =2 21616-1000/2-1000/2 =65036 =65036 =FE0CH =FE0CH4 4定時器定時器/ /計數(shù)器使用前初始化計數(shù)器使用前初始化 確定確定TMODTMOD控制字,編程時將控制字送控制字,編程時將控制字送TMODTMOD; 計算計數(shù)器的計數(shù)計算計數(shù)器的計數(shù)初值;初值; 編程時將計數(shù)初值送編程時將計數(shù)初值送THXTHX、TLXTLX; 如果使用如果使用中斷中斷方式,則要開中斷;方式,則要開中斷; 如果使用查詢方式,則不要開中斷。如果使用查詢方式,則不要開中斷。 TR0TR0、TR1TR1位控制定時器的啟動和停止。位控制定時器的啟動和停止。二、定時器二、

15、定時器/ /計數(shù)器的編程和應(yīng)用計數(shù)器的編程和應(yīng)用 1 1、方式方式1 1應(yīng)用應(yīng)用 例例 假設(shè)系統(tǒng)時鐘頻率采用假設(shè)系統(tǒng)時鐘頻率采用6 6MHzMHz,要在要在P1.0P1.0上輸出上輸出 一個周期為一個周期為2 2msms的方波,如圖所示。的方波,如圖所示。 4 4種工作方式中,方式種工作方式中,方式0 0與方式與方式1 1基本相同,由于方式基本相同,由于方式0 0是為兼容是為兼容MCS-48MCS-48而而設(shè),初值計算復(fù)雜,在實(shí)際應(yīng)用中,一般不用方式設(shè),初值計算復(fù)雜,在實(shí)際應(yīng)用中,一般不用方式0 0,而采用方式,而采用方式1 1。思路思路:1 1、讓讓定時器定時定時器定時1ms1ms, ,每每

16、隔隔1 1msms計數(shù)溢出計數(shù)溢出1 1次次, ,產(chǎn)生產(chǎn)生一次一次中斷中斷; ;2 2、CPUCPU響應(yīng)中斷后,響應(yīng)中斷后,在中斷服務(wù)程序中對在中斷服務(wù)程序中對P1.0P1.0取反取反。 (2)(2)計算初值計算初值X X X=M-( X=M-(定時值定時值)/)/(機(jī)器周期)(機(jī)器周期) =2 =21616-1000/2=65536-500=65036=FE0CH-1000/2=65536-500=65036=FE0CH T0T0的初值為:的初值為:TH0=0FEH TL0=0CHTH0=0FEH TL0=0CH(3)(3)初始化程序設(shè)計初始化程序設(shè)計 對寄存器對寄存器TMODTMOD、TC

17、ONTCON、IPIP、IEIE的值或相應(yīng)位進(jìn)行設(shè)置的值或相應(yīng)位進(jìn)行設(shè)置 (TMODTMOD、TR0TR0、EAEA、ET0ET0);); 將計數(shù)初值送入定時器中。將計數(shù)初值送入定時器中。 (1) (1) 確定確定TMODTMOD 設(shè)為工作方式設(shè)為工作方式1 1,方波的周期用方波的周期用T0T0來定時來定時 TMOD=01TMOD=01晶振晶振6MHz6MHz,則機(jī)器周期為,則機(jī)器周期為2us2us( (4 4) )程序設(shè)計程序設(shè)計 ORG 0000HORG 0000HRESET: AJMP MAIN RESET: AJMP MAIN ;轉(zhuǎn)主程序轉(zhuǎn)主程序 ORG ORG 000BH000BH

18、;T0T0的中斷入口的中斷入口 AJMP IT0PAJMP IT0P ;轉(zhuǎn)轉(zhuǎn)T0T0中斷處理程序中斷處理程序IT0PIT0P ORG 0100H ORG 0100HMAIN: MOV SP,#60H MAIN: MOV SP,#60H ;設(shè)堆棧指針設(shè)堆棧指針 MOV TMOD,#01HMOV TMOD,#01H ;設(shè)置設(shè)置T0T0為方式為方式1 1 MOV TL0,#0CH MOV TL0,#0CH ;置初值置初值 MOV TH0,#0FEH MOV TH0,#0FEH SETB TR0 SETB TR0 ;啟動啟動T0T0 SETB ET0 SETB ET0 ;允許允許T0T0中斷中斷 SE

19、TB EA SETB EA ;CPUCPU開中斷開中斷HERE: AJMP HEREHERE: AJMP HERE ;自身跳轉(zhuǎn)自身跳轉(zhuǎn) ITOPITOP: MOV TL0,#0CH : MOV TL0,#0CH ;T0T0中斷服務(wù)子程序,重置初值中斷服務(wù)子程序,重置初值 MOV TH0,#0FEHMOV TH0,#0FEH CPL CPL P1.0 P1.0 ;P1.0P1.0的狀態(tài)取反的狀態(tài)取反 RETIRETI中斷服務(wù)程序除產(chǎn)生方波外,還要注意將計數(shù)初值重新裝中斷服務(wù)程序除產(chǎn)生方波外,還要注意將計數(shù)初值重新裝入定時器中,為下一次中斷作準(zhǔn)備。入定時器中,為下一次中斷作準(zhǔn)備。 查詢方式的參考程

20、序查詢方式的參考程序: : MOV TMOD,#01H MOV TMOD,#01H ;設(shè)置設(shè)置T0T0為方式為方式1 1 LOOP: SETB TR0 LOOP: SETB TR0 ;啟動啟動T0T0 MOV TH0,#0FEH MOV TH0,#0FEH ;T0T0置初值置初值 MOV TL0,# 0CH MOV TL0,# 0CHLOOP1LOOP1:JBC TF0,LOOP1 JBC TF0,LOOP1 ;查詢查詢TF0TF0標(biāo)志標(biāo)志 CLR TR0 CLR TR0 ;T0T0溢出,關(guān)閉溢出,關(guān)閉T0T0 CPL P1.0 CPL P1.0 ;P1.0P1.0的狀態(tài)求反的狀態(tài)求反 SJM

21、P LOOP SJMP LOOP例例 設(shè)系統(tǒng)時鐘為設(shè)系統(tǒng)時鐘為12MHz12MHz,編寫定時器編寫定時器T0T0產(chǎn)生產(chǎn)生1 1秒定時的程序。秒定時的程序。思路:思路:定時時間較長,采用哪一種工作方式?定時時間較長,采用哪一種工作方式? 方式方式1 1最長可定時最長可定時65.536ms,選方式選方式1 1,每隔,每隔50ms50ms 中斷一次,中斷中斷一次,中斷2020次為次為1 1s s。 (1 1)確定)確定TMOD=01HTMOD=01H(2 2)計算計數(shù)初值)計算計數(shù)初值 X = X = 2 21616- -(50ms/150ms/1 s) =15536=3CB0H=15536=3CB

22、0H 因此:因此:TH0=3CHTH0=3CH,TL0=B0H TL0=B0H (3 3)2020次計數(shù)的實(shí)現(xiàn)次計數(shù)的實(shí)現(xiàn) 采用循環(huán)程序法。采用循環(huán)程序法。(4 4)程序設(shè)計)程序設(shè)計 ORG 0000HORG 0000HRESETRESET: LJMP MAIN LJMP MAIN ;主程序入口主程序入口MAINMAIN ORG 000BHORG 000BH ;T0T0的中斷入口的中斷入口 LJMP IT0PLJMP IT0P ;轉(zhuǎn)轉(zhuǎn)T0T0中斷程序中斷程序IT0PIT0P ORG 1000HORG 1000H MAINMAIN: MOV SP,#60H MOV SP,#60H ;設(shè)堆棧指針

23、設(shè)堆棧指針 MOV B,#14H MOV B,#14H ;設(shè)循環(huán)次數(shù)設(shè)循環(huán)次數(shù)2020次次 MOV TMOD,#01H MOV TMOD,#01H ;設(shè)設(shè)T0T0工作在方式工作在方式1 1 MOV TL0,#0B0H MOV TL0,#0B0H ;給給T0T0設(shè)初值設(shè)初值 MOV TH0,#3CHMOV TH0,#3CH SETB TR0 SETB TR0 ;啟動啟動T0T0 SETB ET0 SETB ET0 ;允許允許T0T0中斷中斷 SETB EA SETB EA ;CPUCPU開放中斷開放中斷 HERE HERE: SJMP HERE SJMP HERE ;等待中斷等待中斷 ITOPI

24、TOP: MOV MOV TL0,#0B0H TL0,#0B0H ;T0T0中斷子程序,重裝初值中斷子程序,重裝初值 MOV TH0,#3CH MOV TH0,#3CH DJNZ B DJNZ B,LOOPLOOP CLR TR0 CLR TR0 ;1s1s定時時間到,停止定時時間到,停止T0T0工作工作 LOOP LOOP: RETI RETI 2 2、方式方式2 2的應(yīng)用的應(yīng)用 程序程序中免重裝初值,定時時間較精確。中免重裝初值,定時時間較精確。 例例 當(dāng)當(dāng)T0T0(P3.4P3.4)引腳上發(fā)生負(fù)跳變時,從引腳上發(fā)生負(fù)跳變時,從P1.0P1.0引腳上輸出周引腳上輸出周 期為期為1MS1MS

25、的方波的方波, ,如圖所示。(系統(tǒng)時鐘為如圖所示。(系統(tǒng)時鐘為6MHz6MHz)(1)(1)思路思路 T0T0為方式為方式1 1計數(shù),初值計數(shù),初值 0 0FFFFHFFFFH,即外部計數(shù)輸入端即外部計數(shù)輸入端T0T0(P3.4P3.4)發(fā)生一次負(fù)跳變時,發(fā)生一次負(fù)跳變時,T0T0加加1 1且溢出,溢出標(biāo)志且溢出,溢出標(biāo)志TF0TF0置置“1 1”,發(fā)中斷請求。,發(fā)中斷請求。 在進(jìn)入在進(jìn)入T0T0中斷程序后,把中斷程序后,把F0F0標(biāo)志置標(biāo)志置“1 1”,說明,說明T0T0腳已接腳已接收了負(fù)跳變信號。收了負(fù)跳變信號。 T1T1定義為方式定義為方式2 2定時。在定時。在T0T0腳發(fā)生一次負(fù)跳變后

26、,啟動腳發(fā)生一次負(fù)跳變后,啟動T1T1每每500500 s s產(chǎn)生一次中斷,在中斷服務(wù)程序中對產(chǎn)生一次中斷,在中斷服務(wù)程序中對P1.0P1.0求反,使求反,使P1.0P1.0產(chǎn)生周期產(chǎn)生周期1 1msms的方波。的方波。(2 2)確定)確定TMOD=25HTMOD=25H(3 3)計算)計算T1T1初值初值T1T1的初值的初值 X=X=M-(-(定時值定時值)/)/(機(jī)器周期(機(jī)器周期) )= 256-500/2 =6= 06H= 256-500/2 =6= 06HT0T0的初值的初值 X=M-計數(shù)值計數(shù)值=65536-1 =65535= 0FFFFH65536-1 =65535= 0FFFF

27、H(3 3)程序設(shè)計程序設(shè)計 ORG 0000H ORG 0000H RESET: LJMP MAIN RESET: LJMP MAIN ;主程序入口主程序入口 ORG 000BHORG 000BH LJMP IT0P LJMP IT0P ;T0T0中斷服務(wù)程序入口中斷服務(wù)程序入口 ORG 001BH ORG 001BH LJMP IT1P LJMP IT1P ;T1T1中斷服務(wù)程序中斷服務(wù)程序入口入口 ORG 0100HORG 0100H MAIN: MOV SP,#60H MAIN: MOV SP,#60H ACALL PT0M2 ACALL PT0M2 ;調(diào)用;調(diào)用T0T0、T1T1初始

28、化子程序初始化子程序 LOOP: MOV C,F0 LOOP: MOV C,F0 ; JNC LOOP JNC LOOP;等待等待T0T0中斷中斷 SETB TR1 SETB TR1 ;啟動啟動T1T1 SETB ET1 SETB ET1 ;允許允許T1T1中斷中斷 HERE: AJMP HERE HERE: AJMP HERE ;等待等待T1T1中斷中斷 PT0M2: MOV TMOD,#PT0M2: MOV TMOD,#25H 25H ;T1T1為方式為方式2 2定時定時 ;T0T0為方式為方式1 1計數(shù)計數(shù) MOV TH0,#0FFH MOV TH0,#0FFH ;T0T0初值初值 MO

29、V TL0,#0FFHMOV TL0,#0FFH SETB TR0 SETB TR0 ;啟動啟動T0T0 SETB ET0 SETB ET0 ;允許允許T0T0中斷中斷 SETB EA SETB EA MOV TL1,#06H MOV TL1,#06H ;T1T1初值初值 MOV TH1,#06HMOV TH1,#06H CLR F0 CLR F0 ;標(biāo)志標(biāo)志F0F0清清0 0 RETRET 中斷服務(wù)程序中斷服務(wù)程序IT0P: CLR TR0 IT0P: CLR TR0 ;T0T0中斷,停止中斷,停止T0T0計數(shù)計數(shù) SETB F0 SETB F0 ;建立標(biāo)志建立標(biāo)志 RETIRETIIT1P

30、: CPL P1.0IT1P: CPL P1.0 ;T1T1中斷,中斷,P1.0P1.0位取反位取反 RETI RETI例例 利用利用T1T1的方式的方式2 2對外部信號計數(shù),要求每對外部信號計數(shù),要求每計滿計滿100100個數(shù),將個數(shù),將P1.0P1.0取反。取反。 (1 1)思路思路 外部外部信號由信號由T1(P3.5)T1(P3.5) 腳輸入腳輸入, ,每發(fā)生一次負(fù)跳變每發(fā)生一次負(fù)跳變計數(shù)器計數(shù)器加加1 1,每輸入,每輸入100100個脈沖,計數(shù)器產(chǎn)生溢出中斷,在中斷個脈沖,計數(shù)器產(chǎn)生溢出中斷,在中斷 服務(wù)程序服務(wù)程序中將中將P1.0P1.0取反一次取反一次。(2 2)確定)確定TMOD

31、=60HTMOD=60H(3 3)計算計算T1T1的初值的初值初值初值 X=M- X=M-計數(shù)值計數(shù)值= =256-100=156=9CH256-100=156=9CH TH1=TL1=9CHTH1=TL1=9CH(4 4)程序設(shè)計程序設(shè)計 ORG 0000HORG 0000H LJMP MAIN LJMP MAIN ORG 001BHORG 001BH ;T1T1中斷服務(wù)程序入口中斷服務(wù)程序入口 CPL P1.0CPL P1.0 ;P1.0P1.0位取反位取反 RETIRETI ORG 0100HORG 0100H MAIN: MAIN:MOV TMOD,#60H MOV TMOD,#60H

32、 ;設(shè)設(shè)T1T1為方式為方式2 2計數(shù)計數(shù) MOV TL0,#9CH MOV TL0,#9CH ;T0T0置初值置初值 MOV TH0,#9CH MOV TH0,#9CH SETB TR1SETB TR1 ;啟動啟動T1T1 HERE: HERE: AJMP HEREAJMP HERE3 3、方式方式3 3的應(yīng)用的應(yīng)用一般一般當(dāng)當(dāng)T1T1作串行口波特率發(fā)生器時,作串行口波特率發(fā)生器時,T0T0才設(shè)置為方式才設(shè)置為方式3 3例例 假設(shè)某假設(shè)某MCS-51MCS-51應(yīng)用系統(tǒng)的兩個外中斷源已被占用,并且應(yīng)用系統(tǒng)的兩個外中斷源已被占用,并且T1T1工作在方式工作在方式2 2,已作波特率發(fā)生器?,F(xiàn)要求

33、增加一個外部中,已作波特率發(fā)生器?,F(xiàn)要求增加一個外部中 斷源,并控制斷源,并控制P1.0P1.0引腳輸出引腳輸出5 5kHzkHz的方波。設(shè)系統(tǒng)時鐘的方波。設(shè)系統(tǒng)時鐘6 6MHzMHz。 (1 1)思路思路 TH0TH0為為8 8位方式位方式3 3定時,控制定時,控制P1.0P1.0輸出輸出5 5kHzkHz的方波信號。的方波信號。 TL0 TL0為方式為方式3 3計數(shù),把計數(shù),把T0T0引腳(引腳(P3.4P3.4)作擴(kuò)展的外中斷輸作擴(kuò)展的外中斷輸入端,入端,TL0TL0初值設(shè)為初值設(shè)為0 0FFHFFH,當(dāng)檢測到當(dāng)檢測到T0T0引腳電平出現(xiàn)負(fù)跳變引腳電平出現(xiàn)負(fù)跳變時,時,TL0TL0溢出,

34、申請中斷,這相當(dāng)于跳沿觸發(fā)的外部中斷源。溢出,申請中斷,這相當(dāng)于跳沿觸發(fā)的外部中斷源。(2 2)確定)確定TMOD=27HTMOD=27H(3 3)初值計算初值計算 TL0TL0的初值設(shè)為的初值設(shè)為0 0FFHFFH。 TH0 TH0初值初值X X計算如下:計算如下: X=256-100=156=9CHX=256-100=156=9CH5kHz5kHz的方波的周期為的方波的周期為200200 s s,TH0TH0的定時時間為的定時時間為100100 s s。 (4 4)程序設(shè)計程序設(shè)計 ORG 0000HORG 0000H LJMP MAIN LJMP MAIN ORG 000BH ORG 0

35、00BH ;T0T0中斷入口中斷入口 LJMP TL0INT LJMP TL0INT ; ORG 001BHORG 001BH ;TH0TH0中斷服務(wù)程序入口中斷服務(wù)程序入口 LJMP TH0INT LJMP TH0INT ;在在T0T0方式方式3 3時,時,TH0TH0占用占用T1T1的中斷的中斷 ORG 0100HORG 0100HMAINMAIN:MOV TMOD,#27H MOV TMOD,#27H ;T0T0方式方式3 3(TL0(TL0計數(shù)計數(shù)) ),T1T1方式方式2 2定時定時MOV TL0,#0FFH MOV TL0,#0FFH ;TL0TL0初值初值MOV TH0,#9CH

36、 MOV TH0,#9CH ;TH0TH0初值初值MOV TL1,#data MOV TL1,#data ;datadata為波特率常數(shù)為波特率常數(shù)MOV TH1,#dataMOV TH1,#dataSETB TR0SETB TR0 ;啟動啟動T0T0 SETB ETOSETB ETO ;允許允許T0T0中斷中斷 TL0INTTL0INT:CLR TR0 CLR TR0 ;TL0TL0中斷服務(wù)程序,關(guān)中斷服務(wù)程序,關(guān)TL0TL0 CLR ET0CLR ET0 ;關(guān);關(guān)TL0TL0中斷中斷 SETB TR1 SETB TR1 ;啟動;啟動TH0TH0 SETB ET1 SETB ET1 ;開中斷

37、;開中斷 RETI RETI TH0INTTH0INT:MOV TH0,#9CHMOV TH0,#9CH;TH0TH0中斷服務(wù)程序,重新裝入初值中斷服務(wù)程序,重新裝入初值 CPL P1.0CPL P1.0 ;P1.0P1.0位取反輸出位取反輸出 RETIRETI4 4、門控制位門控制位GATEGATE的應(yīng)用的應(yīng)用測量脈沖寬度測量脈沖寬度 GATE1GATE1可使定時器可使定時器/ /計數(shù)器計數(shù)器T1T1的啟動計數(shù)受的啟動計數(shù)受/INT1/INT1的控制,可的控制,可測量引腳測量引腳/INT1/INT1(P3.3P3.3)上正脈沖的寬度。上正脈沖的寬度。參考程序:參考程序: ORG 0000HO

38、RG 0000HRESET: AJMP MAINRESET: AJMP MAIN ORG 0100HORG 0100H MAIN: MOV SP,#60H MAIN: MOV SP,#60H MOV TMOD,#90H MOV TMOD,#90H ;T1T1為方式為方式1 1定時控制字定時控制字 MOV TL1,#00HMOV TL1,#00H MOV TH1,#00H MOV TH1,#00HLOOP0: JB P3.3,LOOP0LOOP0: JB P3.3,LOOP0;等待等待/INT1/INT1低低 SETB TR1SETB TR1;/INT1/INT1為低啟動為低啟動T1T1LOOP

39、1: JNB P3.3,LOOP1LOOP1: JNB P3.3,LOOP1;等待等待/INT1/INT1高高LOOP2: JB P3.3,LOOP2 LOOP2: JB P3.3,LOOP2 ;等待等待/INT1/INT1低低 CLR TR1CLR TR1;停止停止T1T1計數(shù)計數(shù) MOV A,TL1MOV A,TL1MOV 30H,AMOV 30H,A MOV A,TH1 MOV A,TH1 MOV 31H,A MOV 31H,A . . . . . . /INT1 /INT1上的正脈沖寬度以機(jī)器周期數(shù)存放在上的正脈沖寬度以機(jī)器周期數(shù)存放在 (31H) (31H)、(30H)(30H)中(

40、中(1616進(jìn)制數(shù))。進(jìn)制數(shù))。5 5、實(shí)時時鐘的設(shè)計實(shí)時時鐘的設(shè)計 1 1實(shí)時時鐘實(shí)現(xiàn)的基本思想如何獲得實(shí)時時鐘實(shí)現(xiàn)的基本思想如何獲得1 1秒的定時,可把定時時秒的定時,可把定時時間定為間定為100100msms(或(或50ms50ms),采用中斷方式進(jìn)行溢出次數(shù)的累計,),采用中斷方式進(jìn)行溢出次數(shù)的累計,計滿計滿1010次(或次(或2020次),即得到秒計時。次),即得到秒計時。 規(guī)定規(guī)定3 3個單元作為秒、分、時單元,如具體安排如下:個單元作為秒、分、時單元,如具體安排如下: 42 42H H“秒秒”單元單元 ;4141H H“分分”單元;單元;4040H H“時時”單元單元 從秒到分,從分到時,通過軟件累加實(shí)現(xiàn)。從秒到分,從分到時,通過軟件累加實(shí)現(xiàn)。 2 2程序設(shè)計程序設(shè)計 (1 1)主程序的設(shè)計)主程序的設(shè)計 流程如圖所示。流程如圖所示。 (2 2)中斷服務(wù)程序的設(shè)計)中斷服務(wù)程序的設(shè)計中斷服務(wù)程序中斷服務(wù)程序的主要功能是實(shí)現(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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論