版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1第第6 6章章 AT89C51AT89C51的定時(shí)器的定時(shí)器/ /計(jì)數(shù)器計(jì)數(shù)器 概況:概況:2 2個(gè)個(gè)1616位定時(shí)計(jì)數(shù)器,加位定時(shí)計(jì)數(shù)器,加1 1計(jì)數(shù),溢出中斷,計(jì)數(shù),溢出中斷,4 4種工作方式,定時(shí)和計(jì)數(shù)模式。種工作方式,定時(shí)和計(jì)數(shù)模式。6.1 6.1 定時(shí)器定時(shí)器/ /計(jì)數(shù)器的結(jié)構(gòu)計(jì)數(shù)器的結(jié)構(gòu)6.2 6.2 定時(shí)器定時(shí)器/ /計(jì)數(shù)器的計(jì)數(shù)器的4 4種工作方式種工作方式6.3 6.3 計(jì)數(shù)器模式對(duì)輸入信號(hào)的要求計(jì)數(shù)器模式對(duì)輸入信號(hào)的要求6.4 6.4 定時(shí)器定時(shí)器/ /計(jì)數(shù)器的編程和應(yīng)用計(jì)數(shù)器的編程和應(yīng)用 2第第6 6章章 AT89C51AT89C51的定時(shí)器的定時(shí)器/ /計(jì)數(shù)器計(jì)數(shù)器
2、6.1 6.1 定時(shí)器定時(shí)器/ /計(jì)數(shù)器的結(jié)構(gòu)計(jì)數(shù)器的結(jié)構(gòu)兩個(gè)可編程的定時(shí)器兩個(gè)可編程的定時(shí)器/ /計(jì)數(shù)器計(jì)數(shù)器T1T1、T0T0。結(jié)構(gòu)如結(jié)構(gòu)如圖圖6-16-1所示所示 2 2種種工作模式工作模式:(1 1)計(jì)數(shù)器計(jì)數(shù)器工作模式工作模式(2 2)定時(shí)器定時(shí)器工作模式工作模式4 4種種工作方式工作方式( (方式方式0-0-方式方式3)3)。TMODTMOD:選擇定時(shí)器選擇定時(shí)器/ /計(jì)數(shù)器計(jì)數(shù)器T0T0、T1T1的工作模式和工作的工作模式和工作 方式。方式。 TCONTCON:控制控制T0T0、T1T1的啟動(dòng)和停止計(jì)數(shù),同時(shí)包含了的啟動(dòng)和停止計(jì)數(shù),同時(shí)包含了 T0T0、T1T1的狀態(tài)。的狀態(tài)。3
3、單片機(jī)復(fù)位時(shí),兩個(gè)寄存器都清單片機(jī)復(fù)位時(shí),兩個(gè)寄存器都清0 0。6.1.1 6.1.1 工作方式控制寄存器工作方式控制寄存器TMODTMOD 圖圖6-26-2圖圖6-16-148 8位分為兩組,位分為兩組,高高4 4位位控制控制T1T1,低低4 4位位控制控制T0T0。(1 1)GATEGATE門控位門控位 0 0:僅:僅以以TRTRX X(X=0,1X=0,1)來啟動(dòng)定時(shí)器來啟動(dòng)定時(shí)器/ /計(jì)數(shù)器運(yùn)行。計(jì)數(shù)器運(yùn)行。1 1:用引腳用引腳INT0INT0* * ( (或或INT1INT1* *) )上的高電平和上的高電平和TRXTRX兩個(gè)條兩個(gè)條 件件來控制定時(shí)器來控制定時(shí)器/ /計(jì)數(shù)器的運(yùn)行。
4、計(jì)數(shù)器的運(yùn)行。(2 2)M1M1、M0M0工作方式選擇位工作方式選擇位 表表6-1 6-1 M1M1、M0M0工作方式選擇工作方式選擇 M1 M0 M1 M0 工工 作作 方方 式式 0 0 0 0 方式方式0 0,1313位定時(shí)器位定時(shí)器/ /計(jì)數(shù)器。計(jì)數(shù)器。 0 1 0 1方式方式1 1,1616位定時(shí)器位定時(shí)器/ /計(jì)數(shù)器。計(jì)數(shù)器。 1 0 1 0 方式方式2 2,8 8位常數(shù)自動(dòng)重新裝載位常數(shù)自動(dòng)重新裝載 1 1 1 1 方式方式3 3,僅適用于,僅適用于T0T0,T0T0分成兩個(gè)分成兩個(gè)8 8 位計(jì)數(shù)器,位計(jì)數(shù)器,T1T1停止計(jì)數(shù)。停止計(jì)數(shù)。 (3) (3) C/TC/T* *計(jì)數(shù)器
5、模式和定時(shí)器計(jì)數(shù)器模式和定時(shí)器模式選擇位模式選擇位50 0:定時(shí)器模式。定時(shí)器模式。 1 1:計(jì)數(shù)器模式。計(jì)數(shù)器模式。6.1.2 6.1.2 定時(shí)器定時(shí)器/ /計(jì)數(shù)器控制寄存器計(jì)數(shù)器控制寄存器TCONTCON字節(jié)地址為字節(jié)地址為88H88H,可位尋址,可位尋址,位地址為位地址為88H88H8FH8FH。TCONTCON的格式的格式如如圖圖6-36-3所示。所示。 圖圖6-36-36低低4 4位與外部中斷有關(guān),已介紹。高位與外部中斷有關(guān),已介紹。高4 4位的功能如下:位的功能如下: (1) TF1(1) TF1、TF0TF0計(jì)數(shù)溢出標(biāo)志位計(jì)數(shù)溢出標(biāo)志位 (2) TR1 (2) TR1、TR0TR
6、0計(jì)數(shù)運(yùn)行控制計(jì)數(shù)運(yùn)行控制位位 1 1:?jiǎn)?dòng)定時(shí)器啟動(dòng)定時(shí)器/ /計(jì)數(shù)器工作的必要條件。計(jì)數(shù)器工作的必要條件。 0 0:停止定時(shí)器停止定時(shí)器/ /計(jì)數(shù)器工作計(jì)數(shù)器工作76.2 6.2 定時(shí)器定時(shí)器/ /計(jì)數(shù)器的計(jì)數(shù)器的4 4種工作方式種工作方式 6.2.1 6.2.1 方式方式0 0 M1M1、M0M0為為00 00 ,定時(shí)器,定時(shí)器/ /計(jì)數(shù)器的框圖:計(jì)數(shù)器的框圖: 圖圖6-46-48為為1313位的計(jì)數(shù)器位的計(jì)數(shù)器 ,C/TC/T* * 位位決定工作模式:決定工作模式: 0 0:開關(guān)打在上面,為開關(guān)打在上面,為定時(shí)器定時(shí)器工作模式;工作模式; 1 1:開關(guān)打在下面,為開關(guān)打在下面,為計(jì)數(shù)器
7、計(jì)數(shù)器工作模式,計(jì)數(shù)脈沖為工作模式,計(jì)數(shù)脈沖為P3.4P3.4、P3.5P3.5引腳上的外部輸入脈沖,當(dāng)引腳上發(fā)生負(fù)跳變時(shí),計(jì)數(shù)引腳上的外部輸入脈沖,當(dāng)引腳上發(fā)生負(fù)跳變時(shí),計(jì)數(shù)器加器加1 1。GATEGATE位:位:決定定時(shí)器決定定時(shí)器/ /計(jì)數(shù)器的計(jì)數(shù)器的運(yùn)行取決于運(yùn)行取決于TRxTRx一個(gè)條件還是一個(gè)條件還是TRxTRx和和INTxINTx* *引腳兩個(gè)條件引腳兩個(gè)條件。 (1 1)0 0:A A點(diǎn)(見圖點(diǎn)(見圖6-26-2)是否計(jì)數(shù))是否計(jì)數(shù), ,僅取決于僅取決于TRxTRx的狀態(tài)。的狀態(tài)。(2 2)1 1:B B點(diǎn)電位由點(diǎn)電位由INTXINTX* *的輸入電平和的輸入電平和TRXTRX
8、的狀態(tài)這兩個(gè)條件的狀態(tài)這兩個(gè)條件來確定。來確定。是否計(jì)數(shù)是由是否計(jì)數(shù)是由TRxTRx和和INTxINTx* *二個(gè)條件來控制的。二個(gè)條件來控制的。 96.2.2 6.2.2 方式方式1 1 M1 M1、M0M0=01=01,1616位位的計(jì)數(shù)器。的計(jì)數(shù)器。 6.2.3 6.2.3 方式方式2 2 計(jì)數(shù)滿后自動(dòng)裝入計(jì)數(shù)初值計(jì)數(shù)滿后自動(dòng)裝入計(jì)數(shù)初值。 M1M1、M0=M0=1010 ,等效框圖如下:,等效框圖如下: 圖圖6-56-510TLXTLX作為常數(shù)緩沖器作為常數(shù)緩沖器,當(dāng),當(dāng)TLXTLX計(jì)數(shù)溢出時(shí),在置計(jì)數(shù)溢出時(shí),在置“1”“1”溢出標(biāo)志溢出標(biāo)志TFXTFX的同時(shí),還的同時(shí),還自動(dòng)的將自動(dòng)
9、的將THXTHX中的初值送至中的初值送至TLXTLX,使使TLXTLX從初值從初值開始重新計(jì)數(shù)。開始重新計(jì)數(shù)。定時(shí)器定時(shí)器/ /計(jì)數(shù)器的方式計(jì)數(shù)器的方式2 2工作過程如工作過程如圖圖6-6-7 7 (X=0,1) (X=0,1)。圖圖6-66-611省去用戶軟件中重裝初值的程序,來省去用戶軟件中重裝初值的程序,來精確定時(shí)精確定時(shí)。6.2.4 6.2.4 方式方式3 3 增加一個(gè)增加一個(gè)附加附加的的8 8位定時(shí)器位定時(shí)器/ /計(jì)數(shù)器,從而具有計(jì)數(shù)器,從而具有3 3個(gè)定時(shí)器個(gè)定時(shí)器/ /計(jì)數(shù)計(jì)數(shù)器。器。圖圖6-76-712只適用于定時(shí)器只適用于定時(shí)器/ /計(jì)數(shù)器計(jì)數(shù)器T0T0。T1T1不能工作在方
10、式不能工作在方式3 3。T1T1方式方式3 3時(shí)時(shí)相當(dāng)于相當(dāng)于TR1=0TR1=0,停止計(jì)數(shù)(此時(shí)停止計(jì)數(shù)(此時(shí)T1T1可用來作串行口波特率產(chǎn)生可用來作串行口波特率產(chǎn)生器)。器)。1 1工作方式工作方式3 3下的下的T0T0T0T0分為分為兩個(gè)獨(dú)立兩個(gè)獨(dú)立的的8 8位計(jì)數(shù)器位計(jì)數(shù)器: :TL0TL0和和TH0TH0 。TL0TL0使用使用T0T0的狀態(tài)控制位的狀態(tài)控制位C/TC/T* *、GATEGATE、TR0TR0、,、,而而TH0TH0被固定為一個(gè)被固定為一個(gè)8 8位定時(shí)器(不能作外部計(jì)數(shù)模位定時(shí)器(不能作外部計(jì)數(shù)模式),并使用定時(shí)器式),并使用定時(shí)器T1T1的狀態(tài)控制位的狀態(tài)控制位TR
11、1TR1和和TF1TF1,同時(shí)同時(shí)占用占用定時(shí)器定時(shí)器T1T1的的中斷請(qǐng)求源中斷請(qǐng)求源TF1TF1。 各引腳與各引腳與T0T0的邏輯關(guān)系如的邏輯關(guān)系如圖圖6-86-8所示:所示: 13圖圖6-86-8(a a)圖圖6-86-8(b b)定時(shí)或計(jì)數(shù)定時(shí)或計(jì)數(shù)只能定時(shí)只能定時(shí)142 2T0T0工作在方式工作在方式3 3下下T1T1的各種工作方式的各種工作方式 當(dāng)當(dāng)T1T1用作用作串行口的波特率發(fā)生器串行口的波特率發(fā)生器時(shí),時(shí), T0T0才工作在方式才工作在方式3 3。T0T0為方式為方式3 3時(shí),時(shí), T1T1可定為方式可定為方式0 0、方式、方式1 1和方式和方式2 2,用來,用來作為串作為串行
12、口的波特率發(fā)生器,行口的波特率發(fā)生器,或不需要中斷的場(chǎng)合。或不需要中斷的場(chǎng)合。(1 1)T1T1工作在方式工作在方式0 0 圖圖6-96-915(2 2) T1T1工作在方式工作在方式1 1 (3 3) T1T1工作在方式工作在方式2 2 圖圖6-106-10圖圖6-116-1116(4 4)T1T1工作在方式工作在方式3 3。T1T1的控制字中的控制字中M1M1、M0M0 = = 1111時(shí),時(shí),T1T1停止計(jì)數(shù)停止計(jì)數(shù)。在在T0T0為方式為方式3 3時(shí),時(shí),T1T1運(yùn)行的控制條件只有兩個(gè),即運(yùn)行的控制條件只有兩個(gè),即C/TC/T* *和和M1M1、M0M0。 C/TC/T* *選擇定時(shí)器模
13、式或計(jì)數(shù)器模式,選擇定時(shí)器模式或計(jì)數(shù)器模式,M1M1、M0M0選擇選擇T1T1運(yùn)行的工運(yùn)行的工作方式。作方式。 176.3 6.3 計(jì)數(shù)器模式對(duì)輸入信號(hào)的要求計(jì)數(shù)器模式對(duì)輸入信號(hào)的要求 外部計(jì)數(shù)脈沖的最高頻率為系統(tǒng)振蕩器頻率的外部計(jì)數(shù)脈沖的最高頻率為系統(tǒng)振蕩器頻率的1/241/24,例如例如選選用用1212MHzMHz頻率的晶體,則可輸入頻率的晶體,則可輸入500500KHzKHz的外部脈沖。的外部脈沖。輸入信號(hào)的高、低電平至少要保持一個(gè)機(jī)器周期。輸入信號(hào)的高、低電平至少要保持一個(gè)機(jī)器周期。如如圖圖6-16-12 2所示,圖中所示,圖中TcyTcy為機(jī)器周期。為機(jī)器周期。圖圖6-126-121
14、86.4 6.4 定時(shí)器定時(shí)器/ /計(jì)數(shù)器的編程和應(yīng)用計(jì)數(shù)器的編程和應(yīng)用 4 4種工作方式中,種工作方式中,方式方式0 0與方式與方式1 1基本相同,由于方式基本相同,由于方式0 0是為兼容是為兼容MCS-48MCS-48而設(shè),而設(shè),初值計(jì)算復(fù)雜初值計(jì)算復(fù)雜,在實(shí)際應(yīng)用中,在實(shí)際應(yīng)用中,一般不用方式一般不用方式0 0,而采用方式,而采用方式1 1。6.4.1 6.4.1 方式方式1 1應(yīng)用應(yīng)用 例例6-16-1 假設(shè)系統(tǒng)時(shí)鐘頻率采用假設(shè)系統(tǒng)時(shí)鐘頻率采用6 6MHzMHz,要在要在P1.0P1.0上輸出一個(gè)周期上輸出一個(gè)周期為為2 2msms的方波,如的方波,如圖圖6-136-13所示。所示。
15、圖圖6-136-1319方波的周期用方波的周期用T0T0來確定,讓來確定,讓T0T0每隔每隔1 1msms計(jì)數(shù)溢出計(jì)數(shù)溢出1 1次次( (每每1 1msms產(chǎn)生產(chǎn)生一次中斷一次中斷) ),CPUCPU響應(yīng)中斷后,在中斷服務(wù)程序中對(duì)響應(yīng)中斷后,在中斷服務(wù)程序中對(duì)P1.0P1.0取取反。反。 (1) (1)計(jì)算初值計(jì)算初值X X 設(shè)初值為設(shè)初值為X X,則有則有: :(2(21616- -X)X)2 21010-6-6=1=11010-3-3 2 21616-X=500 X=65036-X=500 X=65036 X X化為化為1616進(jìn)制,即進(jìn)制,即X=FE0CH=111111100000110
16、0BX=FE0CH=1111111000001100B。 所以,所以,T0T0的初值為的初值為: TH0=0TH0=0FEHFEH TL0= TL0=0CH0CH (2)(2)初始化程序設(shè)計(jì)初始化程序設(shè)計(jì) 20對(duì)寄存器對(duì)寄存器IPIP、IEIE、TCONTCON、TMODTMOD的相應(yīng)位進(jìn)行正確設(shè)置,將計(jì)數(shù)的相應(yīng)位進(jìn)行正確設(shè)置,將計(jì)數(shù)初值送入定時(shí)器中。初值送入定時(shí)器中。 (3)(3)程序設(shè)計(jì)程序設(shè)計(jì) 中斷服務(wù)程序除產(chǎn)生方波外,還要注意將計(jì)數(shù)初值重新裝入定中斷服務(wù)程序除產(chǎn)生方波外,還要注意將計(jì)數(shù)初值重新裝入定時(shí)器中,為下一次中斷作準(zhǔn)備。時(shí)器中,為下一次中斷作準(zhǔn)備。 參考程序:參考程序: ORG
17、0000HORG 0000HRESET: AJMP MAIN RESET: AJMP MAIN ;轉(zhuǎn)主程序轉(zhuǎn)主程序 ORG 000BHORG 000BH ;T0T0的中斷入口的中斷入口 AJMP IT0P AJMP IT0P ;轉(zhuǎn)轉(zhuǎn)T0T0中斷處理程序中斷處理程序IT0PIT0P ORG 0100HORG 0100HMAIN: MOV SP,#60H MAIN: MOV SP,#60H ;設(shè)堆棧指針設(shè)堆棧指針 MOV TMOD,#01HMOV TMOD,#01H ;設(shè)置設(shè)置T0T0為方式為方式1 1 21 ACALL PT0M0ACALL PT0M0;調(diào)用子程序調(diào)用子程序PT0M0PT0M0H
18、ERE: AJMP HEREHERE: AJMP HERE ;自身跳轉(zhuǎn)自身跳轉(zhuǎn)PT0M0: MOV TL0,#0CHPT0M0: MOV TL0,#0CH;T0T0重新置初值重新置初值 MOV TH0,#0FEH MOV TH0,#0FEH SETB TR0 SETB TR0 ;啟動(dòng)啟動(dòng)T0T0 SETB ET0 SETB ET0 ;允許允許T0T0中斷中斷 SETB EA SETB EA ;CPUCPU開中斷開中斷 RETRETITOP: MOV TL0,#0CH ITOP: MOV TL0,#0CH ;T0T0中斷服務(wù)子程序,中斷服務(wù)子程序,T0T0置初值置初值 MOV TH0,#0FEH
19、MOV TH0,#0FEH CPL P1.0 CPL P1.0 ;P1.0P1.0的狀態(tài)取反的狀態(tài)取反 RETIRETI查詢方式查詢方式的參考程序的參考程序: : MOV TMOD,#01H MOV TMOD,#01H ;設(shè)置設(shè)置T0T0為方式為方式1 1 22 SETB TR0 SETB TR0 ;接通接通T0T0LOOP: MOV TH0,#0FEH LOOP: MOV TH0,#0FEH ;T0T0置初值置初值 MOV TL0,# 0CH MOV TL0,# 0CHLOOP1LOOP1:JNB TF0,LOOP1 JNB TF0,LOOP1 ;查詢查詢TF0TF0標(biāo)志標(biāo)志 CLR TR0
20、 CLR TR0 ;T0T0溢出,關(guān)閉溢出,關(guān)閉T0T0 CPL P1.0 CPL P1.0 ;P1.0P1.0的狀態(tài)求反的狀態(tài)求反 SJMP LOOP SJMP LOOP例例6-26-2 假設(shè)假設(shè)系統(tǒng)時(shí)鐘為系統(tǒng)時(shí)鐘為6 6MHzMHz,編寫定時(shí)器編寫定時(shí)器T0T0產(chǎn)生產(chǎn)生1 1秒定時(shí)秒定時(shí)的程的程序。序。(1 1)T0T0工作方式的確定工作方式的確定定時(shí)時(shí)間較長(zhǎng),采用哪一種工作方式?定時(shí)時(shí)間較長(zhǎng),采用哪一種工作方式? 由各種工作方式的特性,可計(jì)算出:由各種工作方式的特性,可計(jì)算出: 方式方式0 0最長(zhǎng)可定時(shí)最長(zhǎng)可定時(shí)16.38416.384msms; ; 23 方式方式1 1最長(zhǎng)可定時(shí)最長(zhǎng)可
21、定時(shí)131.072131.072msms; ; 方式方式2 2最長(zhǎng)可定時(shí)最長(zhǎng)可定時(shí)512512 s s。選方式選方式1 1,每隔,每隔100100msms中斷一次,中斷中斷一次,中斷1010次為次為1 1s s。 (2 2)計(jì)算計(jì)數(shù)初值)計(jì)算計(jì)數(shù)初值 因?yàn)椋阂驗(yàn)椋?2(21616- -X)X)2 21010-6 -6 = 10= 10-1-1 所以:所以:X=15536=3CB0HX=15536=3CB0H 因此:因此:TH0=3CHTH0=3CH,TL0=B0H TL0=B0H (3 3)1010次計(jì)數(shù)的實(shí)現(xiàn)次計(jì)數(shù)的實(shí)現(xiàn) 采用循環(huán)程序法。采用循環(huán)程序法。(4 4)程序設(shè)計(jì))程序設(shè)計(jì) 參考程序
22、參考程序 : : 24 ORG 0000HORG 0000HRESETRESET: LJMP MAIN LJMP MAIN ;上電,轉(zhuǎn)主程序入口上電,轉(zhuǎn)主程序入口MAINMAIN ORG 000BHORG 000BH ;T0T0的中斷入口的中斷入口 LJMP IT0PLJMP IT0P;轉(zhuǎn)轉(zhuǎn)T0T0中斷處理程序中斷處理程序IT0PIT0P ORG 1000HORG 1000H MAIN MAIN: MOV SP,#60H MOV SP,#60H ;設(shè)堆棧指針設(shè)堆棧指針 MOV B,#0AH MOV B,#0AH ;設(shè)循環(huán)次數(shù)設(shè)循環(huán)次數(shù)1010次次 MOV TMOD,#01H MOV TMOD,
23、#01H ;設(shè)設(shè)T0T0工作在方式工作在方式1 1 MOV TL0,#0B0H MOV TL0,#0B0H ;給給T0T0設(shè)初值設(shè)初值 MOV TH0,#3CHMOV TH0,#3CH SETB TR0 SETB TR0 ;啟動(dòng)啟動(dòng)T0T0 SETB ET0 SETB ET0 ;允許允許T0T0中斷中斷25 SETB EA SETB EA ;CPUCPU開放中斷開放中斷 HERE HERE: SJMP HERE SJMP HERE ;等待中斷等待中斷 ITOPITOP: MOV TL0,#0B0H MOV TL0,#0B0H ;T0T0中斷子程序,重裝初值中斷子程序,重裝初值 MOV TH0,
24、#3CH MOV TH0,#3CH ; DJNZ B DJNZ B,LOOPLOOP CLR TR0 CLR TR0 ;1s1s定時(shí)時(shí)間到,停止定時(shí)時(shí)間到,停止T0T0工作工作 LOOP LOOP: RETI RETI 6.4.2 6.4.2 方式方式2 2的應(yīng)用的應(yīng)用省去程序中重裝初值的指令,并可省去程序中重裝初值的指令,并可產(chǎn)生相當(dāng)精確的定時(shí)時(shí)間產(chǎn)生相當(dāng)精確的定時(shí)時(shí)間。 例例6-36-3 當(dāng)當(dāng)T0T0(P3.4P3.4)引腳上發(fā)生負(fù)跳變時(shí),從引腳上發(fā)生負(fù)跳變時(shí),從P1.0P1.0引腳上引腳上輸出一輸出一個(gè)周期為個(gè)周期為1 1msms的方波的方波, ,如如圖圖6-136-13所示。(假設(shè)時(shí)鐘
25、為所示。(假設(shè)時(shí)鐘為6 6MHzMHz)26(1 1)工作方式選擇)工作方式選擇T0T0為方式為方式1 1計(jì)數(shù)計(jì)數(shù),初值初值 0 0FFFFHFFFFH,即外部計(jì)數(shù)輸入端即外部計(jì)數(shù)輸入端T0T0(P3.4P3.4)發(fā)生發(fā)生一次負(fù)跳變一次負(fù)跳變時(shí),時(shí),T0T0加加1 1且溢出,溢出標(biāo)志且溢出,溢出標(biāo)志TF0TF0置置“1”“1”,發(fā)中斷請(qǐng)求。發(fā)中斷請(qǐng)求。在進(jìn)入在進(jìn)入T0T0中斷程序后,把中斷程序后,把F0F0標(biāo)志置標(biāo)志置“1”“1”,說說明明T0T0腳已接收了負(fù)跳變信號(hào)。腳已接收了負(fù)跳變信號(hào)。圖圖6-146-1427T1T1定義為方式定義為方式2 2定時(shí)定時(shí)。在。在T0T0腳發(fā)生一次負(fù)跳變后,啟
26、動(dòng)腳發(fā)生一次負(fù)跳變后,啟動(dòng)T1T1每每500500 s s產(chǎn)生一次中斷產(chǎn)生一次中斷,在中斷服務(wù)程序中對(duì),在中斷服務(wù)程序中對(duì)P1.0P1.0求反,使求反,使P1.0P1.0產(chǎn)生周期產(chǎn)生周期1 1msms的方波。的方波。(2 2)計(jì)算)計(jì)算T1T1初值初值設(shè)設(shè)T1T1的初值為的初值為X X: 則則 (2(28 8- -X)X)2 21010-6-6=5=51010-4-4 X=2 X=28 8-250=6=06H-250=6=06H(3 3)程序設(shè)計(jì)程序設(shè)計(jì) ORG 0000HORG 0000H RESET: LJMP MAIN RESET: LJMP MAIN ;復(fù)位入口轉(zhuǎn)主程序復(fù)位入口轉(zhuǎn)主程序
27、 ORG 000BHORG 000BH JMP IT0P JMP IT0P ;轉(zhuǎn)轉(zhuǎn)T0T0中斷服務(wù)程序中斷服務(wù)程序28 ORG 001BHORG 001BH LJMP IT1P LJMP IT1P ;轉(zhuǎn)轉(zhuǎn)T1T1中斷服務(wù)程序中斷服務(wù)程序 ORG 0100HORG 0100HMAIN: MOV SP,#60HMAIN: MOV SP,#60H ACALL PT0M2 ACALL PT0M2 ;調(diào)用對(duì);調(diào)用對(duì)T0T0,T1T1初始化子程序初始化子程序LOOP: MOV C,F0 LOOP: MOV C,F0 ;T0T0產(chǎn)生過中斷了嗎,產(chǎn)生過產(chǎn)生過中斷了嗎,產(chǎn)生過 ;中斷,則;中斷,則F0=1F0=
28、1 JNC LOOP JNC LOOP ;T0T0沒有產(chǎn)生過中斷,則跳到?jīng)]有產(chǎn)生過中斷,則跳到 ;LOOPLOOP,等待等待T0T0中斷中斷 SETB TR1 SETB TR1 ;啟動(dòng)啟動(dòng)T1T1 SETB ET1 SETB ET1 ;允許允許T1T1中斷中斷HERE: AJMP HEREHERE: AJMP HERE29 PT0M2: MOV TMOD,#26H PT0M2: MOV TMOD,#26H ;初始化,初始化,T1T1為方式為方式2 2定定 ;時(shí),;時(shí),T0T0為方式為方式1 1計(jì)數(shù)計(jì)數(shù) MOV TL0,#0FFH MOV TL0,#0FFH ;T0T0置初值置初值 MOV TH
29、0,#0FFHMOV TH0,#0FFH SETB TR0 SETB TR0 ;啟動(dòng)啟動(dòng)T0T0 SETB ET0 SETB ET0 ;允許允許T0T0中斷中斷 MOV TL1,#06H MOV TL1,#06H ;T1T1置初值置初值 MOV TH1,#06HMOV TH1,#06H CLR F0 CLR F0;把把T0T0已發(fā)生中斷標(biāo)志已發(fā)生中斷標(biāo)志F0F0清清0 0 SETB EASETB EA RETRET IT0P: CLR TR0 IT0P: CLR TR0 ;T0T0中斷服務(wù)程序,停止中斷服務(wù)程序,停止T0T0計(jì)數(shù)計(jì)數(shù) 30 SETB F0 SETB F0 ;建立產(chǎn)生中斷標(biāo)志建立
30、產(chǎn)生中斷標(biāo)志 RETIRETIIT1P: IT1P: CPL P1.0CPL P1.0 ;T1T1中斷服務(wù),中斷服務(wù),P1.0P1.0位取反位取反 RETIRETI在在T1T1定時(shí)中斷服務(wù)程序定時(shí)中斷服務(wù)程序IT1PIT1P中,省去了中,省去了T1T1中斷服務(wù)程中斷服務(wù)程序中重新裝入初值序中重新裝入初值0606H H的指令。的指令。 例例6-46-4 利用利用T1T1的方式的方式2 2對(duì)外部信號(hào)計(jì)數(shù),對(duì)外部信號(hào)計(jì)數(shù),要求每計(jì)滿要求每計(jì)滿100100個(gè)數(shù),將個(gè)數(shù),將P1.0P1.0取反。取反。 本例是本例是方式方式2 2計(jì)數(shù)模式計(jì)數(shù)模式的應(yīng)用。的應(yīng)用。(1 1)選擇工作方式)選擇工作方式 31外
31、部信號(hào)外部信號(hào)由由T1(P3.5)T1(P3.5) 腳輸入腳輸入, ,每發(fā)生一次負(fù)跳變計(jì)數(shù)器加每發(fā)生一次負(fù)跳變計(jì)數(shù)器加1 1,每輸入每輸入100100個(gè)脈沖,計(jì)數(shù)器產(chǎn)生溢出中斷,在中斷服務(wù)程序個(gè)脈沖,計(jì)數(shù)器產(chǎn)生溢出中斷,在中斷服務(wù)程序中將中將P1.0P1.0取反一次。取反一次。T1 T1 方式方式2 2的控制字的控制字為為TMOD=60HTMOD=60H。不使用不使用T0T0時(shí),時(shí),TMODTMOD的低的低4 4位可位可任取,但不能使任取,但不能使T0T0進(jìn)入方式進(jìn)入方式3 3,這里取全,這里取全0 0。(2 2)計(jì)算)計(jì)算T1T1的初值的初值X=2X=28 8-100=156=9CH-100
32、=156=9CH 因此,因此,TL1TL1的初值為的初值為9 9CHCH,重裝初值寄存器重裝初值寄存器TH1=9CHTH1=9CH(3 3)程序設(shè)計(jì)程序設(shè)計(jì) ORG 0000HORG 0000HLJMP MAINLJMP MAINORG 001BHORG 001BH;T1T1中斷服務(wù)程序入口中斷服務(wù)程序入口 32 CPL P1.0CPL P1.0;P1.0P1.0位取反位取反 RETIRETI ORG 0100HORG 0100H MAIN: MAIN:MOV TMOD,#60H MOV TMOD,#60H ;設(shè)設(shè)T1T1為方式為方式2 2計(jì)數(shù)計(jì)數(shù) MOV TL0,#9CH MOV TL0,#
33、9CH ;T0T0置初值置初值 MOV TH0,#9CH MOV TH0,#9CH SETB TR1SETB TR1 ;啟動(dòng)啟動(dòng)T1T1 HERE: HERE: AJMP HEREAJMP HERE6.4.3 6.4.3 方式方式3 3的應(yīng)用的應(yīng)用T0 T0 方式方式3 3時(shí),時(shí),TL0TL0和和TH0TH0被分成兩個(gè)獨(dú)立的被分成兩個(gè)獨(dú)立的8 8位定時(shí)器位定時(shí)器/ /計(jì)數(shù)器。計(jì)數(shù)器。其中,其中, TL0TL0:8 8位定時(shí)器位定時(shí)器/ /計(jì)數(shù)器;計(jì)數(shù)器; TH0 TH0:8 8位定時(shí)器。位定時(shí)器。 33當(dāng)當(dāng)T1T1作串行口波特率發(fā)生器時(shí),作串行口波特率發(fā)生器時(shí),T0T0才設(shè)置為才設(shè)置為方式方式
34、3 3。例例6-56-5 假設(shè)某假設(shè)某89C5189C51應(yīng)用系統(tǒng)的應(yīng)用系統(tǒng)的兩個(gè)外中斷源已被占用兩個(gè)外中斷源已被占用,設(shè)置,設(shè)置T1T1工作在方式工作在方式2 2,作波特率發(fā)生器,作波特率發(fā)生器用。用?,F(xiàn)要求增加一個(gè)外部中斷現(xiàn)要求增加一個(gè)外部中斷源,并控制源,并控制P1.0P1.0引腳輸出一個(gè)引腳輸出一個(gè)5 5kHzkHz的方波。的方波。設(shè)系統(tǒng)時(shí)鐘為設(shè)系統(tǒng)時(shí)鐘為6 6MHzMHz。圖圖6-156-1534(1 1)選擇工作方式)選擇工作方式TL0TL0為方式為方式3 3計(jì)數(shù)計(jì)數(shù),把,把T0T0引腳(引腳(P3.4P3.4)作附加的外中斷輸入端,作附加的外中斷輸入端,TL0TL0初值設(shè)為初值設(shè)
35、為0 0FFHFFH,當(dāng)檢測(cè)到當(dāng)檢測(cè)到T0T0引腳電平出現(xiàn)負(fù)跳變時(shí),引腳電平出現(xiàn)負(fù)跳變時(shí),TL0TL0溢出,申請(qǐng)中斷,這相當(dāng)于跳沿觸發(fā)的外部中斷源。溢出,申請(qǐng)中斷,這相當(dāng)于跳沿觸發(fā)的外部中斷源。TH0TH0為為8 8位方式位方式3 3定時(shí)定時(shí),控制,控制P1.0P1.0輸出輸出5 5kHzkHz的方波信號(hào)。如的方波信號(hào)。如圖圖6-156-15所示。所示。(2 2)初值計(jì)算初值計(jì)算TL0TL0的的初值初值設(shè)為設(shè)為0 0FFHFFH。 5kHz 5kHz的方波的的方波的周期為周期為200200 s s,TH0TH0的定時(shí)時(shí)間為的定時(shí)時(shí)間為35100100 s s。TH0TH0初值初值X X計(jì)算如下
36、:計(jì)算如下: (2(28 8- -X)X)2 21010-6-6=1=11010-4-4 X=2 X=28 8-100=156=9CH-100=156=9CH(3 3)程序設(shè)計(jì)程序設(shè)計(jì) ORG 0000HORG 0000H LJMP MAIN LJMP MAIN ORG 000BH ORG 000BH ;T0T0中斷入口中斷入口 LJMP TL0INTLJMP TL0INT;跳跳T0(TL0)T0(TL0)中斷服務(wù)程序中斷服務(wù)程序 ORG 001BHORG 001BH ;在在T0T0方式方式3 3時(shí),時(shí),TH0TH0占用占用T1T1的中的中斷斷 LJMP TH0INT LJMP TH0INT;
37、跳跳TH0TH0中斷服務(wù)程序中斷服務(wù)程序 ORG 0100HORG 0100H36MAINMAIN: MOV TMOD,#27H MOV TMOD,#27H ;TL0TL0方式方式3 3計(jì)數(shù)計(jì)數(shù),TH0,TH0定時(shí),定時(shí),T1T1方式方式2 2;定時(shí)(波特率發(fā)生器)定時(shí)(波特率發(fā)生器) MOV TL0,#0FFH MOV TL0,#0FFH ;置置TL0TL0初值初值 MOV TH0,#9CH MOV TH0,#9CH;置;置TH0TH0初值初值 MOV TL1,#dataL MOV TL1,#dataL ;datadata為波特率常數(shù)為波特率常數(shù) MOV TH1,#dataH MOV TH1
38、,#dataH MOV TCON,#55H MOV TCON,#55H;允許允許T0T0中斷中斷 MOV IE,#9FHMOV IE,#9FH;啟動(dòng)啟動(dòng)T1T1 中斷處理中斷處理TL0INTTL0INT:MOV TL0,#0FFH MOV TL0,#0FFH ;TL0TL0中斷服務(wù)程序,中斷服務(wù)程序, ;TL0TL0重新裝入初值重新裝入初值37 中斷處理中斷處理 TH0INTTH0INT:MOV TH0,#9CHMOV TH0,#9CH ;TH0TH0中斷服務(wù)程序,中斷服務(wù)程序,TH0TH0重重;新裝入初值;新裝入初值 CPL P1.0CPL P1.0 ;P1.0P1.0位取反輸出位取反輸出
39、RETI RETI 386.4.4 6.4.4 門控制位門控制位GATEGATE的應(yīng)用的應(yīng)用測(cè)量脈沖寬度測(cè)量脈沖寬度GATE1GATE1可使定時(shí)器可使定時(shí)器/ /計(jì)數(shù)器計(jì)數(shù)器T1T1的的啟動(dòng)計(jì)數(shù)啟動(dòng)計(jì)數(shù)受受INT1INT1* *的控制,的控制,可測(cè)可測(cè)量引腳量引腳INT1INT1* *(P3.3P3.3)上正脈沖的寬度上正脈沖的寬度(機(jī)器周期數(shù))。(機(jī)器周期數(shù))。圖圖6-166-1639參考程序:參考程序: ORG 0000HORG 0000HRESET: AJMP MAIN RESET: AJMP MAIN ;復(fù)位入口轉(zhuǎn)主程序復(fù)位入口轉(zhuǎn)主程序 ORG 0100HORG 0100H MAIN:
40、 MOV SP,#60H MAIN: MOV SP,#60H MOV TMOD,#90H MOV TMOD,#90H ;90H90H為為T1T1方式方式1 1定時(shí)控制字定時(shí)控制字 MOV TL1,#00HMOV TL1,#00H MOV TH1,#00H MOV TH1,#00HLOOP0: JB P3.3,LOOP0LOOP0: JB P3.3,LOOP0;INT1INT1* *高高, ,則循環(huán)則循環(huán) SETB TR1SETB TR1;如如INT1INT1* *為低,啟動(dòng)為低,啟動(dòng)T1T1LOOP1: JNB P3.3,LOOP1LOOP1: JNB P3.3,LOOP1;INT1INT1*
41、 *低,則循環(huán)低,則循環(huán)LOOP2: JB P3.3,LOOP2 LOOP2: JB P3.3,LOOP2 ;INT1INT1* *高高, ,T1T1計(jì)數(shù)計(jì)數(shù)則循環(huán)則循環(huán)40 CLR TR1CLR TR1;INT1INT1* *低,停止低,停止T1T1計(jì)數(shù)計(jì)數(shù) MOV A,TL1MOV A,TL1;T1T1計(jì)數(shù)值送計(jì)數(shù)值送A A將將A A中的中的T1T1計(jì)數(shù)計(jì)數(shù)值送顯示緩沖區(qū)值送顯示緩沖區(qū) 轉(zhuǎn)換成顯示的代碼轉(zhuǎn)換成顯示的代碼 LOOP3: LOOP3: LCALL DIR LCALL DIR ;調(diào)用顯示子程序調(diào)用顯示子程序DIRDIR;顯示;顯示T1T1計(jì)數(shù)值計(jì)數(shù)值 AJMP LOOP3 AJM
42、P LOOP3 ; 執(zhí)行程序,使執(zhí)行程序,使INT1INT1* *引腳上出現(xiàn)的引腳上出現(xiàn)的正脈沖寬度以機(jī)器周期數(shù)的正脈沖寬度以機(jī)器周期數(shù)的形式顯示在顯示器上。形式顯示在顯示器上。6.4.5 6.4.5 實(shí)時(shí)時(shí)鐘的設(shè)計(jì)實(shí)時(shí)時(shí)鐘的設(shè)計(jì) 1 1實(shí)時(shí)時(shí)鐘實(shí)現(xiàn)的基本思想實(shí)時(shí)時(shí)鐘實(shí)現(xiàn)的基本思想 41如何獲得如何獲得1 1秒的定時(shí),秒的定時(shí),可把可把定時(shí)時(shí)間定為定時(shí)時(shí)間定為100100msms,采用中斷方式采用中斷方式進(jìn)行溢出次數(shù)的累計(jì),進(jìn)行溢出次數(shù)的累計(jì),計(jì)滿計(jì)滿1010次次,即得到秒計(jì)時(shí)。,即得到秒計(jì)時(shí)。片內(nèi)片內(nèi)RAMRAM中規(guī)定中規(guī)定3 3個(gè)單元個(gè)單元作作為秒、分、時(shí)單元為秒、分、時(shí)單元,具體安排如下
43、:,具體安排如下: 4242H H:“秒秒”單元單元 ;4141H H:“分分”單元;單元;4040H H:“時(shí)時(shí)”單元單元從秒到分,從分到時(shí)從秒到分,從分到時(shí)是通過是通過軟件累加并進(jìn)行比較軟件累加并進(jìn)行比較的方法來實(shí)現(xiàn)的方法來實(shí)現(xiàn)的。的。 2 2程序設(shè)計(jì)程序設(shè)計(jì) (1 1)主程序的設(shè)計(jì))主程序的設(shè)計(jì)流程如流程如圖圖6-176-17所示。所示。 42(2 2)中斷服務(wù)程序的設(shè)計(jì))中斷服務(wù)程序的設(shè)計(jì)中斷服務(wù)程序主要功能是實(shí)現(xiàn)中斷服務(wù)程序主要功能是實(shí)現(xiàn)秒、秒、分、時(shí)分、時(shí)的的計(jì)時(shí)處理計(jì)時(shí)處理。參考程序略。參考程序略。圖圖6-176-17圖圖6-186-18主程序主程序43ORGORG1000H10
44、00H AJMPAJMPMAINMAIN; ;上電上電, , 跳向主程序跳向主程序 ORG ORG 000BH000BH;T0;T0的中斷入口的中斷入口 AJMP AJMP IT0PIT0PMAIN:MAIN:MOV MOV TMOD,#01HTMOD,#01H; ;設(shè)設(shè)T0T0為方式為方式1 1 MOV MOV 20H, #0AH 20H, #0AH ; ;裝入中斷次數(shù)裝入中斷次數(shù) CLR CLR A A MOV MOV 40H, A40H, A;“;“時(shí)時(shí)”單元清單元清“0”0” MOV MOV 41H, A41H, A;“;“分分”單元清單元清“0”0” MOV MOV 42H, A42
45、H, A;“;“秒秒”單元清單元清“0”0” SETB ET0SETB ET0; ;允許允許T0T0申請(qǐng)中斷申請(qǐng)中斷SETB EASETB EA; ;總中斷允許總中斷允許 MOV MOV TH0,#3CHTH0,#3CH; ;給給T0T0裝入計(jì)數(shù)初值裝入計(jì)數(shù)初值44MOV MOV TL0,#0B0HTL0,#0B0H SETB TR0SETB TR0; ;啟動(dòng)啟動(dòng)T0T0HERE: SJMP HEREHERE: SJMP HERE; ;等待中斷(也可調(diào)用顯示子程序)等待中斷(也可調(diào)用顯示子程序)IT0P:IT0P: PUSH PSWPUSH PSW;T0;T0中斷服務(wù)子程序入口中斷服務(wù)子程序入
46、口, , 保護(hù)現(xiàn)場(chǎng)保護(hù)現(xiàn)場(chǎng) PUSH AccPUSH Acc MOV MOV TH0,#3CHTH0,#3CH; ;重新裝入初值重新裝入初值 MOV MOV TL0,#0B0HTL0,#0B0H DJNZ 20H,RETURNDJNZ 20H,RETURN;1;1秒未到秒未到, , 返回返回 MOV MOV 20H, #0AH 20H, #0AH ; ;重置中斷次數(shù)重置中斷次數(shù) MOV MOV A, #01HA, #01H;“;“秒秒”單元增單元增1 1 ADD ADD A,42HA,42H DA DA A A;“;“秒秒”單元十進(jìn)制調(diào)整單元十進(jìn)制調(diào)整 MOV MOV 42H,A42H,A ;“ ;“秒秒” ” BCDBCD碼存回碼存回“秒秒”單元單元 CJNE A,#60,RETURNCJNE A,#60,RETURN; ;是否到是否到6060秒秒, , 未到則返回未到則返回 MOV MOV 42H, #00H42H, #00H; ;計(jì)滿計(jì)滿6060秒秒, “, “秒秒”單元清單元清“0”0” MOV MOV A, #01HA,
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 云南省昆明市嵩明一中2025屆生物高三第一學(xué)期期末聯(lián)考試題含解析
- 黑河市重點(diǎn)中學(xué)2025屆數(shù)學(xué)高二上期末調(diào)研模擬試題含解析
- 江蘇省徐州市重點(diǎn)初中2025屆生物高一上期末達(dá)標(biāo)檢測(cè)試題含解析
- 黑龍江省哈爾濱市第三十二中學(xué)2025屆高三英語(yǔ)第一學(xué)期期末檢測(cè)試題含解析
- 河北深州市長(zhǎng)江中學(xué) 2025屆數(shù)學(xué)高二上期末經(jīng)典試題含解析
- 2025屆吉林省長(zhǎng)春市第十九中學(xué)高二生物第一學(xué)期期末經(jīng)典試題含解析
- 2025屆山西省大同市平城區(qū)第一中學(xué)語(yǔ)文高三上期末檢測(cè)試題含解析
- 2025屆山東省菏澤市第一中學(xué)老校區(qū)語(yǔ)文高三上期末綜合測(cè)試模擬試題含解析
- 湖南平江二中2025屆高二上生物期末學(xué)業(yè)質(zhì)量監(jiān)測(cè)模擬試題含解析
- 山西省大同市平城區(qū)第一中學(xué)2025屆英語(yǔ)高三第一學(xué)期期末調(diào)研試題含解析
- 期中測(cè)試卷(1-4單元)(試題)-2024-2025學(xué)年人教版數(shù)學(xué)四年級(jí)上冊(cè)
- 應(yīng)用文寫作+以“A+Clean-up+Activity”為題給學(xué)校英語(yǔ)報(bào)寫一篇新聞報(bào)道+講義 高二上學(xué)期月考英語(yǔ)試題
- 校園反詐騙課件
- 2024-2030年中國(guó)工業(yè)脫水機(jī)行業(yè)發(fā)展?fàn)顩r及投資方向分析報(bào)告
- 網(wǎng)絡(luò)傳播法導(dǎo)論(第2版)課件 第五章 侵害名譽(yù)權(quán)
- 環(huán)評(píng)手續(xù)轉(zhuǎn)讓協(xié)議(2篇)
- 胸外科快速康復(fù)護(hù)理課件
- 醫(yī)院污水處理運(yùn)維服務(wù)投標(biāo)方案(技術(shù)方案)
- 2024年高考最后一套壓軸卷-文綜試題(全國(guó)甲卷)含解析
- 蘇教版數(shù)學(xué)長(zhǎng)方體與正方體表面積解析
- 2024年國(guó)家開放大學(xué)形考作業(yè)答案
評(píng)論
0/150
提交評(píng)論