




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第五章第五章 MCS-51的定時(shí)器的定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器 兩個(gè)可編程的定時(shí)器兩個(gè)可編程的定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器T1、T0。兩種工作模式:兩種工作模式:(1)計(jì)數(shù)器工作模式)計(jì)數(shù)器工作模式(2)定時(shí)器工作模式)定時(shí)器工作模式4種工作方式種工作方式(方式方式0-方式方式3)。5.1 定時(shí)器定時(shí)器/計(jì)數(shù)器的結(jié)構(gòu)計(jì)數(shù)器的結(jié)構(gòu)TMOD:選擇定時(shí)器選擇定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器T0、T1的工作模式的工作模式 和工作方式和工作方式 TCON: 控制控制T0、T1的啟動(dòng)和停止計(jì)數(shù),同時(shí)包含的啟動(dòng)和停止計(jì)數(shù),同時(shí)包含 了了T0、T1的狀態(tài)。的狀態(tài)。單片機(jī)復(fù)位時(shí),兩個(gè)寄存器的所有位都被清單片機(jī)復(fù)位時(shí),兩個(gè)寄存器的所有位都
2、被清0。 5.1.1 工作方式控制寄存器工作方式控制寄存器TMOD TMOD 8位分為兩組,高位分為兩組,高4位控制位控制T1,低低4位控制位控制T0。(1) GATE門控位門控位 0:以運(yùn)行控制位以運(yùn)行控制位TRX(X=0,1)來啟動(dòng)定時(shí)器來啟動(dòng)定時(shí)器/計(jì)計(jì) 數(shù)器運(yùn)行。數(shù)器運(yùn)行。1:用外中斷引腳用外中斷引腳(INT0*或或INT1*)上的高電平來啟動(dòng)上的高電平來啟動(dòng)定時(shí)器定時(shí)器/計(jì)數(shù)器運(yùn)行。計(jì)數(shù)器運(yùn)行。(2) M1、M0工作方式選擇位工作方式選擇位 M1 M0 工工 作作 方方 式式 0 0 方式方式0,13位定時(shí)器位定時(shí)器/計(jì)數(shù)器。計(jì)數(shù)器。 0 1方式方式1,16位定時(shí)器位定時(shí)器/計(jì)數(shù)器。
3、計(jì)數(shù)器。 1 0 方式方式2,8位常數(shù)自動(dòng)重新裝載位常數(shù)自動(dòng)重新裝載 1 1 方式方式3,僅適用于,僅適用于T0,T0分成兩個(gè)分成兩個(gè)8位定時(shí)位定時(shí)/ 計(jì)數(shù)器,計(jì)數(shù)器,T1停止計(jì)數(shù)。停止計(jì)數(shù)。(3) C/T* 計(jì)數(shù)器模式和定時(shí)器模式選擇位計(jì)數(shù)器模式和定時(shí)器模式選擇位 0:定時(shí)器模式。:定時(shí)器模式。 1:計(jì)數(shù)器模式。計(jì)數(shù)器模式。 5.1.2 定時(shí)器定時(shí)器/計(jì)數(shù)器控制寄存器計(jì)數(shù)器控制寄存器TCON 低低4位與外部中斷有關(guān),已介紹。高位與外部中斷有關(guān),已介紹。高4位的功能如下:位的功能如下: (1) TF1、TF0計(jì)數(shù)溢出標(biāo)志位計(jì)數(shù)溢出標(biāo)志位 (2) TR1、TR0計(jì)數(shù)運(yùn)行控制位計(jì)數(shù)運(yùn)行控制位 1:
4、啟動(dòng)定時(shí)器:啟動(dòng)定時(shí)器/計(jì)數(shù)器工作計(jì)數(shù)器工作 0:停止定時(shí)器:停止定時(shí)器/計(jì)數(shù)器工作計(jì)數(shù)器工作 5.2 定時(shí)器定時(shí)器/計(jì)數(shù)器的計(jì)數(shù)器的4種工作方式種工作方式 5.2.1 方式方式0 M1、M0為為00 ,定時(shí)器,定時(shí)器/計(jì)數(shù)器的框圖:計(jì)數(shù)器的框圖: 為為13位的計(jì)數(shù)器位的計(jì)數(shù)器 ,C/T* 位控制的電子開關(guān)決定了定時(shí)位控制的電子開關(guān)決定了定時(shí)器器/計(jì)數(shù)器的工作模式。計(jì)數(shù)器的工作模式。 0:電子開關(guān)打在上面,為定時(shí)器工作模式;:電子開關(guān)打在上面,為定時(shí)器工作模式; 1:電子開關(guān)打在下面,為計(jì)數(shù)器工作模式,計(jì)數(shù)脈沖為:電子開關(guān)打在下面,為計(jì)數(shù)器工作模式,計(jì)數(shù)脈沖為P3.4、P3.5引腳上的外部輸入
5、脈沖,當(dāng)引腳上發(fā)生負(fù)跳變時(shí),引腳上的外部輸入脈沖,當(dāng)引腳上發(fā)生負(fù)跳變時(shí),計(jì)數(shù)器加計(jì)數(shù)器加1。 GATE位的狀態(tài)決定定時(shí)器位的狀態(tài)決定定時(shí)器/計(jì)數(shù)器運(yùn)行控制取決于計(jì)數(shù)器運(yùn)行控制取決于TRX一個(gè)條件還是一個(gè)條件還是TRX和引腳這兩個(gè)條件。和引腳這兩個(gè)條件。 (1)0:A點(diǎn)是否計(jì)數(shù)點(diǎn)是否計(jì)數(shù),僅取決于僅取決于TRX的狀態(tài)。的狀態(tài)。 (2)1:B點(diǎn)電位由點(diǎn)電位由INTX*的輸入電平和的輸入電平和TRX的狀態(tài)這兩個(gè)的狀態(tài)這兩個(gè)條件來確定。計(jì)數(shù)器是否計(jì)數(shù)是由條件來確定。計(jì)數(shù)器是否計(jì)數(shù)是由TRX和和INTX*二個(gè)條件二個(gè)條件來控制的。來控制的。5.2.2 方式方式1 M1、M0為為01,16位的計(jì)數(shù)器。位的
6、計(jì)數(shù)器。 5.2.3 方式方式2 M1、M0=10 ,計(jì)數(shù)滿后自動(dòng)裝入計(jì)數(shù)初值。,計(jì)數(shù)滿后自動(dòng)裝入計(jì)數(shù)初值。 方式方式2為自動(dòng)恢復(fù)初值的(初值自動(dòng)裝入)為自動(dòng)恢復(fù)初值的(初值自動(dòng)裝入)8位定位定時(shí)器時(shí)器/計(jì)數(shù)器,計(jì)數(shù)器,TLX作為常數(shù)緩沖器,當(dāng)作為常數(shù)緩沖器,當(dāng)TLX計(jì)數(shù)溢計(jì)數(shù)溢出時(shí),在置出時(shí),在置“1”溢出標(biāo)志溢出標(biāo)志TFX的同時(shí),還自動(dòng)的將的同時(shí),還自動(dòng)的將THX中的初值送至中的初值送至TLX,使使TLX從初值開始重新計(jì)數(shù)。從初值開始重新計(jì)數(shù)。定時(shí)器定時(shí)器/計(jì)數(shù)器的方式計(jì)數(shù)器的方式2工作過程如圖工作過程如圖4-5所示所示(X=0,1)。 方式方式2可省去用戶軟件中重裝初值的程序??墒∪ビ脩?/p>
7、軟件中重裝初值的程序。精確的確定定時(shí)時(shí)間。精確的確定定時(shí)時(shí)間。5.2.4 方式方式3 增加一個(gè)附加的增加一個(gè)附加的8位定時(shí)器位定時(shí)器/計(jì)數(shù)器,從而使計(jì)數(shù)器,從而使MCS-51具具有有3個(gè)定時(shí)器個(gè)定時(shí)器/計(jì)數(shù)器。計(jì)數(shù)器。 只適用于定時(shí)器只適用于定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器T0 ,T1不能工作在方式不能工作在方式3。T1方式方式3時(shí)相當(dāng)于時(shí)相當(dāng)于TR1=0,停止計(jì)數(shù)(此時(shí)停止計(jì)數(shù)(此時(shí)T1可用來作串行可用來作串行口波特率產(chǎn)生器)??诓ㄌ芈十a(chǎn)生器)。1工作方式工作方式3下的下的T0 T0分為兩個(gè)獨(dú)立的分為兩個(gè)獨(dú)立的8位計(jì)數(shù)器位計(jì)數(shù)器: TL0和和TH0 。TL0使用使用T0的狀態(tài)控制位的狀態(tài)控制位C/T*、
8、GATE、TR0、,、,而而TH0被固定為被固定為一個(gè)一個(gè)8位定時(shí)器(不能作外部計(jì)數(shù)模式),并使用定時(shí)器位定時(shí)器(不能作外部計(jì)數(shù)模式),并使用定時(shí)器T1的狀態(tài)控制位的狀態(tài)控制位TR1和和TF1,同時(shí)占用定時(shí)器同時(shí)占用定時(shí)器T1的中斷請(qǐng)的中斷請(qǐng)求源求源TF1。 2T0工作在方式工作在方式3下下T1的各種工作方式的各種工作方式 當(dāng)當(dāng)T1用作串行口的波特率發(fā)生器時(shí),用作串行口的波特率發(fā)生器時(shí), T0才工作才工作在方式在方式3。T0處于方式處于方式3時(shí),時(shí), T1可定為方式可定為方式0、方式、方式1和方式和方式2,用來作為串行口的波特率發(fā)生器,或不,用來作為串行口的波特率發(fā)生器,或不需要中斷的場合。需
9、要中斷的場合。(1)T1工作在方式工作在方式0 (2) T1工作在方式工作在方式1 (3) T1工作在方式工作在方式2 5.3 定時(shí)器定時(shí)器/計(jì)數(shù)器對(duì)輸入信號(hào)的要求計(jì)數(shù)器對(duì)輸入信號(hào)的要求 外部輸入的計(jì)數(shù)脈沖的最高頻率為系統(tǒng)振蕩器外部輸入的計(jì)數(shù)脈沖的最高頻率為系統(tǒng)振蕩器頻率的頻率的1/24,例如選用,例如選用12MHz頻率的晶體,則可輸頻率的晶體,則可輸入入500KHz的外部脈沖。的外部脈沖。 對(duì)于外部輸入信號(hào)的占空比并沒有什么限制,對(duì)于外部輸入信號(hào)的占空比并沒有什么限制,但為了確保某一給定的電平在變化之前能被采樣一但為了確保某一給定的電平在變化之前能被采樣一次,則這一電平至少要保持一個(gè)機(jī)器周期
10、。圖中次,則這一電平至少要保持一個(gè)機(jī)器周期。圖中Tcy為機(jī)器周期。為機(jī)器周期。5.4 定時(shí)器定時(shí)器/計(jì)數(shù)器的編程和應(yīng)用計(jì)數(shù)器的編程和應(yīng)用 4種工作方式中,方式種工作方式中,方式0與方式與方式1基本相同,由于方基本相同,由于方式式0是為兼容是為兼容MCS-48而設(shè),其計(jì)數(shù)初值計(jì)算復(fù)雜,在而設(shè),其計(jì)數(shù)初值計(jì)算復(fù)雜,在實(shí)際應(yīng)用中,一般不用方式實(shí)際應(yīng)用中,一般不用方式0,而采用方式,而采用方式1。5.4.1 方式方式1應(yīng)用應(yīng)用 例例5-1 假設(shè)系統(tǒng)時(shí)鐘頻率采用假設(shè)系統(tǒng)時(shí)鐘頻率采用6MHz,要在要在P1.0上輸出一上輸出一個(gè)周期為個(gè)周期為2ms的方波,如圖所示。的方波,如圖所示。 方波的周期用方波的周期
11、用T0來確定,讓來確定,讓T0每隔每隔1ms計(jì)數(shù)溢出計(jì)數(shù)溢出1次,即次,即T0每隔每隔1ms產(chǎn)生一次中斷,產(chǎn)生一次中斷,CPU相應(yīng)中斷后,在相應(yīng)中斷后,在中斷服務(wù)程序中對(duì)中斷服務(wù)程序中對(duì)P1.0取反。取反。 (1) 計(jì)算初值計(jì)算初值 設(shè):需要裝入設(shè):需要裝入T0的初值為的初值為X,則有則有:(216-X)210-6=110-3 216-X=500 X=65036 X化為化為16進(jìn)制,即進(jìn)制,即X=FE0CH=1111111000001100B。 T0的初值為:的初值為: TH0=0FEH TL0=0CH (2) 初始化程序設(shè)計(jì)初始化程序設(shè)計(jì) 包括定時(shí)器初始化和中斷系統(tǒng)初始化,主要是包括定時(shí)器初
12、始化和中斷系統(tǒng)初始化,主要是對(duì)寄存器對(duì)寄存器IP、IE、TCON、TMOD的相應(yīng)位進(jìn)行正的相應(yīng)位進(jìn)行正確的設(shè)置,將計(jì)數(shù)初值送入定時(shí)器中。確的設(shè)置,將計(jì)數(shù)初值送入定時(shí)器中。 (3) 程序設(shè)計(jì)程序設(shè)計(jì) 中斷服務(wù)程序除了完成要求的產(chǎn)生方波這一工作中斷服務(wù)程序除了完成要求的產(chǎn)生方波這一工作之外,還要注意將計(jì)數(shù)初值重新裝入定時(shí)器中,為之外,還要注意將計(jì)數(shù)初值重新裝入定時(shí)器中,為下一次產(chǎn)生中斷作準(zhǔn)備。下一次產(chǎn)生中斷作準(zhǔn)備。 參考程序:參考程序: ORG 0000HRESET: AJMP MAIN ;轉(zhuǎn)主程序轉(zhuǎn)主程序 ORG 000BH ;T0的中斷入口的中斷入口 AJMP IT0P ;轉(zhuǎn)轉(zhuǎn)T0中斷處理程序
13、中斷處理程序IT0P ORG 0100H MAIN: MOV SP,#60H ;設(shè)堆棧指針設(shè)堆棧指針 MOV TMOD, #01H ;設(shè)置設(shè)置T0為方式為方式1 ACALL PT0M0 ;調(diào)用子程序調(diào)用子程序PT0M0HERE: AJMP HERE ;自身跳轉(zhuǎn)自身跳轉(zhuǎn)PT0M0: MOV TL0,#0CH ;初始化程序,設(shè)置初始化程序,設(shè)置T0初值初值 MOV TH0,#0FEH SETB TR0 ;啟動(dòng)啟動(dòng)T0 SETB ET0 ;允許允許T0中斷中斷 SETB EA ;CPU開中斷開中斷 RETITOP: MOV TL0,#0CH ;T0中斷服務(wù)子程序,中斷服務(wù)子程序,T0置初值置初值 M
14、OV TH0,#0FEH CPL P1.0 ;P1.0的狀態(tài)取反的狀態(tài)取反 RETI查詢方式的參考程序查詢方式的參考程序: MOV TMOD,#01H ;設(shè)置設(shè)置T0為方式為方式1 SETB TR0 ;接通接通T0LOOP: MOV TH0, #0FEH ;T0置初值置初值 MOV TL0, # 0CHLOOP1: JNB TF0, LOOP1 ;查詢查詢TF0標(biāo)志標(biāo)志 CLR TF0 ;T0溢出,清溢出,清TF0標(biāo)志標(biāo)志 CPL P1.0 ;P1.0的狀態(tài)求反的狀態(tài)求反 SJMP LOOP 例例5-2 假設(shè)系統(tǒng)時(shí)鐘為假設(shè)系統(tǒng)時(shí)鐘為6MHz,編寫定時(shí)器編寫定時(shí)器T0產(chǎn)生產(chǎn)生1秒定時(shí)的程秒定時(shí)的
15、程序。序。 (1)定時(shí)器)定時(shí)器T0工作方式的確定工作方式的確定 因定時(shí)時(shí)間較長,采用哪一種工作方式?由定時(shí)器各種工因定時(shí)時(shí)間較長,采用哪一種工作方式?由定時(shí)器各種工作方式的特性,可計(jì)算出:作方式的特性,可計(jì)算出: 方式方式0最長可定時(shí)最長可定時(shí)16.384ms; 方式方式1最長可定時(shí)最長可定時(shí)131.072ms; 方式方式2最長可定時(shí)最長可定時(shí)512 s。 選方式選方式1,每隔,每隔100ms中斷一次,中斷中斷一次,中斷10次為次為1s。 (2)計(jì)算計(jì)數(shù)初值)計(jì)算計(jì)數(shù)初值 因?yàn)椋阂驗(yàn)椋?216-X)210-6 = 10-1 所以:所以:X=15536=3CB0H 因此:因此:TH0=3CH,
16、TL0=B0H (3)10次計(jì)數(shù)的實(shí)現(xiàn)次計(jì)數(shù)的實(shí)現(xiàn) 對(duì)于中斷對(duì)于中斷10次計(jì)數(shù),可使次計(jì)數(shù),可使T0工作在計(jì)數(shù)方式,工作在計(jì)數(shù)方式,也可用循環(huán)程序的方法實(shí)現(xiàn)。本例采用循環(huán)程序也可用循環(huán)程序的方法實(shí)現(xiàn)。本例采用循環(huán)程序法。法。(4)程序設(shè)計(jì))程序設(shè)計(jì) ORG 0000HRESET: LJMP MAIN ;上電,轉(zhuǎn)主程序入口上電,轉(zhuǎn)主程序入口MAIN ORG 000BH ;T0的中斷入口的中斷入口 LJMP IT0P;轉(zhuǎn)轉(zhuǎn)T0中斷處理程序中斷處理程序IT0P ORG 1000H MAIN: MOV SP,#60H ;設(shè)堆棧指針設(shè)堆棧指針 MOV B,#0AH ;設(shè)循環(huán)次數(shù)設(shè)循環(huán)次數(shù)10次次 MOV
17、 TMOD,#01H ;設(shè)設(shè)T0工作在方式工作在方式1 MOV TL0,#0B0H ;給給T0設(shè)初值設(shè)初值 MOV TH0,#3CH SETB TR0 ;啟動(dòng)啟動(dòng)T0 SETB ET0 ;允許允許T0中斷中斷 SETB EA ;CPU開放中斷開放中斷 HERE: SJMP HERE ;等待中斷等待中斷 ITOP: MOV TL0,#0B0H ;T0中斷子程序,重裝初值中斷子程序,重裝初值 MOV TH0,#3CH ; DJNZ B,LOOP CLR TR0 ;1s定時(shí)時(shí)間到,停止定時(shí)時(shí)間到,停止T0工作工作 LOOP: RETI 5.4.2 方式方式2的應(yīng)用的應(yīng)用 省去程序中重裝初值的指令,并
18、可產(chǎn)生相當(dāng)精確的定時(shí)時(shí)省去程序中重裝初值的指令,并可產(chǎn)生相當(dāng)精確的定時(shí)時(shí)間。間。 例例5-3 當(dāng)當(dāng)T0(P3.4)引腳上發(fā)生負(fù)跳變時(shí),從引腳上發(fā)生負(fù)跳變時(shí),從P1.0引腳上引腳上輸出一個(gè)周期為輸出一個(gè)周期為1ms的方波的方波,如圖所示。(系統(tǒng)時(shí)鐘為如圖所示。(系統(tǒng)時(shí)鐘為6MHz)(1)工作方式選擇)工作方式選擇 T0為方式為方式1計(jì)數(shù),初值計(jì)數(shù),初值 0FFFFH,即外部計(jì)數(shù)輸入端即外部計(jì)數(shù)輸入端T0(P3.4)發(fā)生一發(fā)生一次負(fù)跳變時(shí),次負(fù)跳變時(shí),T0加加1且溢出,溢出標(biāo)志且溢出,溢出標(biāo)志TF0置置“1”,發(fā)中斷請(qǐng)求。在進(jìn)入,發(fā)中斷請(qǐng)求。在進(jìn)入T0中斷程序后,把中斷程序后,把F0標(biāo)志置標(biāo)志置“
19、1”,說明,說明T0引腳上已接收了負(fù)跳變信號(hào)。引腳上已接收了負(fù)跳變信號(hào)。T1定定義為方式義為方式2定時(shí)。在定時(shí)。在T0引腳產(chǎn)生一次負(fù)跳變后,啟動(dòng)引腳產(chǎn)生一次負(fù)跳變后,啟動(dòng)T1每每500 s產(chǎn)生一次中產(chǎn)生一次中斷,在中斷服務(wù)程序中對(duì)斷,在中斷服務(wù)程序中對(duì)P1.0求反,使求反,使P1.0產(chǎn)生周期產(chǎn)生周期1ms的方波。的方波。(2)計(jì)算)計(jì)算T1初值初值 設(shè)設(shè)T1的初值為的初值為X: 則則 (28-X)210-6=510-4 X=28-250=6=06H(3)程序設(shè)計(jì)程序設(shè)計(jì) ORG 0000H RESET: LJMP MAIN ;復(fù)位入口轉(zhuǎn)主程序復(fù)位入口轉(zhuǎn)主程序 ORG 000BH JMP IT0
20、P ;轉(zhuǎn)轉(zhuǎn)T0中斷服務(wù)程序中斷服務(wù)程序 ORG 001BH LJMP IT1P ;轉(zhuǎn)轉(zhuǎn)T1中斷服務(wù)程序中斷服務(wù)程序 ORG 0100HMAIN: MOV SP,#60H ACALL PT0M2 ;調(diào)用對(duì)調(diào)用對(duì)T0,T1初始化子程序初始化子程序LOOP: MOV C,F0 ;T0產(chǎn)生過中斷了嗎,產(chǎn)生過中產(chǎn)生過中斷了嗎,產(chǎn)生過中 斷,則斷,則F0=1 JNC LOOP ;T0沒有產(chǎn)生過中斷,則跳到?jīng)]有產(chǎn)生過中斷,則跳到 LOOP,等待等待T0中斷中斷 SETB TR1 ;啟動(dòng)啟動(dòng)T1 SETB ET1 ;允許允許T1中斷中斷HERE: AJMP HERE PT0M2: MOV TMOD,#25H
21、;初始化,初始化,T1為方式為方式2定定 時(shí),時(shí),T0 為方式為方式1計(jì)數(shù)計(jì)數(shù) MOV TL0,#0FFH ;T0置初值置初值 MOV TH0,#0FFH SETB TR0 ;啟動(dòng)啟動(dòng)T0 SETB ET0 ;允許允許T0中斷中斷 MOV TL1,#06H ;T1置初值置初值 MOV TH1,#06H CLR F0 ;把把T0已發(fā)生中斷標(biāo)志已發(fā)生中斷標(biāo)志F0清清0 SETB EA RET IT0P: CLR TR0 ;T0中斷服務(wù)程序,停止中斷服務(wù)程序,停止T0計(jì)數(shù)計(jì)數(shù) SETB F0 ;建立產(chǎn)生中斷標(biāo)志建立產(chǎn)生中斷標(biāo)志 RETIIT1P: CPL P1.0 ;T1中斷服務(wù),中斷服務(wù),P1.0
22、位取反位取反 RETI 在在T1定時(shí)中斷服務(wù)程序定時(shí)中斷服務(wù)程序IT1P中,由于方式中,由于方式2是初值可以自是初值可以自動(dòng)重新裝載的,省去了動(dòng)重新裝載的,省去了T1中斷服務(wù)程序中重新裝入初值中斷服務(wù)程序中重新裝入初值06H的指令。的指令。 例例5-4: 利用定時(shí)器利用定時(shí)器T1的方式的方式2對(duì)外部信號(hào)計(jì)數(shù),要求每計(jì)滿對(duì)外部信號(hào)計(jì)數(shù),要求每計(jì)滿100個(gè)數(shù),將個(gè)數(shù),將P1.0取反。取反。 本例是方式本例是方式2計(jì)數(shù)模式的應(yīng)用。計(jì)數(shù)模式的應(yīng)用。 (1)選擇工作方式)選擇工作方式 外部信號(hào)由外部信號(hào)由T1(P3.5) 腳輸入腳輸入,每發(fā)生一次負(fù)跳變計(jì)數(shù)器加每發(fā)生一次負(fù)跳變計(jì)數(shù)器加1,每輸入,每輸入1
23、00個(gè)脈沖,計(jì)數(shù)器產(chǎn)生溢出中斷,在中斷服務(wù)程個(gè)脈沖,計(jì)數(shù)器產(chǎn)生溢出中斷,在中斷服務(wù)程序中將序中將P1.0取反一次。取反一次。 T1工作在方式工作在方式2的控制字為的控制字為TMOD=60H。不使用不使用T0時(shí),時(shí),TMOD的低的低4位可任取,但不能使位可任取,但不能使T0進(jìn)入方式進(jìn)入方式3,這里取全,這里取全0。(2)計(jì)算)計(jì)算T1的初值的初值X=28-100=156=9CH 因此,因此,TL1的初值為的初值為9CH,重裝初值寄存器重裝初值寄存器TH1=9CH(3)程序設(shè)計(jì)程序設(shè)計(jì) ORG 0000HLJMP MAINORG 001BH ;T1中斷服務(wù)程序入口中斷服務(wù)程序入口 CPL P1.0
24、 ;P1.0位取反位取反 RETI ORG 0100HMAIN: MOV TMOD,#60H ;設(shè)設(shè)T1為方式為方式2計(jì)數(shù)計(jì)數(shù) MOV TL0,#9CH ;T0置初值置初值 MOV TH0,#9CH SETB TR1 ;啟動(dòng)啟動(dòng)T1HERE: AJMP HERE5.4.3 方式方式3的應(yīng)用的應(yīng)用 T0工作在方式工作在方式3時(shí),時(shí),TL0和和TH0被分成兩個(gè)獨(dú)立的被分成兩個(gè)獨(dú)立的8位定位定時(shí)器時(shí)器/計(jì)數(shù)器。其中,計(jì)數(shù)器。其中,TL0可作為可作為8位的定時(shí)器位的定時(shí)器/計(jì)數(shù)器;而計(jì)數(shù)器;而TH0只能作為只能作為8位的定時(shí)器。位的定時(shí)器。 當(dāng)當(dāng)T1用作串行口波特率發(fā)生器時(shí),用作串行口波特率發(fā)生器時(shí),
25、T0才設(shè)置為方式才設(shè)置為方式3。此時(shí),。此時(shí),常把常把T1設(shè)置為方式設(shè)置為方式2,用作波特率發(fā)生器。,用作波特率發(fā)生器。 例例5-5 假設(shè)某假設(shè)某MCS-51應(yīng)用系統(tǒng)的兩個(gè)外中斷源已被占用,設(shè)置應(yīng)用系統(tǒng)的兩個(gè)外中斷源已被占用,設(shè)置T1工作在方式工作在方式2,作波特率發(fā)生器用?,F(xiàn)要求增加一個(gè)外部中斷源,作波特率發(fā)生器用?,F(xiàn)要求增加一個(gè)外部中斷源,并控制并控制P1.0引腳輸出一個(gè)引腳輸出一個(gè)5kHz的方波。設(shè)系統(tǒng)時(shí)鐘為的方波。設(shè)系統(tǒng)時(shí)鐘為6MHz。(1)選擇工作方式)選擇工作方式 設(shè)置設(shè)置TL0工作在方式工作在方式3計(jì)數(shù),把計(jì)數(shù),把T0引腳(引腳(P3.4)作附加的外作附加的外中斷輸入端,中斷輸入
26、端,TL0初值設(shè)為初值設(shè)為0FFH,當(dāng)檢測(cè)到當(dāng)檢測(cè)到T0引腳電平出現(xiàn)負(fù)引腳電平出現(xiàn)負(fù)跳變時(shí),跳變時(shí),TL0溢出,申請(qǐng)中斷,這相當(dāng)于跳沿觸發(fā)的外部中斷源。溢出,申請(qǐng)中斷,這相當(dāng)于跳沿觸發(fā)的外部中斷源。TH0為為8位方式位方式3定時(shí)模式,定時(shí)控制定時(shí)模式,定時(shí)控制P1.0輸出輸出5kHz的方波信號(hào)。的方波信號(hào)。如圖所示。如圖所示。 (2)初值計(jì)算)初值計(jì)算 TL0的初值設(shè)為的初值設(shè)為0FFH。 5kHz的方波的周期為的方波的周期為200 s,因此因此TH0的定時(shí)時(shí)的定時(shí)時(shí)間為間為100 s。TH0初值初值X計(jì)算如下:計(jì)算如下: (28-X)210-6=110-4 X=28-50=206=CEH(3
27、)程序設(shè)計(jì))程序設(shè)計(jì) ORG 0000H LJMP MAIN ORG 000BH ;T0中斷入口中斷入口 LJMP TL0INT ;跳跳T0中斷服務(wù)程序中斷服務(wù)程序 ORG 001BH ;在在T1方式方式3時(shí),時(shí),TH0占用占用T1的中斷的中斷 LJMP TH0INT ;跳跳TH0中斷服務(wù)程序中斷服務(wù)程序 ORG 0100HMAIN:MOV TMOD,#27H ;T0方式方式3計(jì)數(shù),計(jì)數(shù),T1方式方式2定時(shí)定時(shí) MOV TL0,#0FFH ;置置TL0初值初值 MOV TH0,#0CEH ;置;置TH0初值初值 MOV TL1,#dataL ;data為波特率常數(shù)為波特率常數(shù) MOV TH1,
28、#dataH MOV TCON,#15H;啟動(dòng)啟動(dòng)T0 MOV IE,#9FH ;允許允許T0中斷中斷 TL0INT:MOV TL0,#0FFH;TL0中斷服務(wù)程序,中斷服務(wù)程序,TL0重新裝入初值重新裝入初值 CLR TR0 SETB TR1 中斷處理中斷處理 RETI TH0INT:MOV TH0,#0CEH ;TH0中斷服務(wù)程序,中斷服務(wù)程序,TH0重新裝入初值重新裝入初值 CPL P1.0 ;P1.0位取反輸出位取反輸出 RETI 5.4.4 門控制位門控制位GATE的應(yīng)用的應(yīng)用測(cè)量脈沖寬度測(cè)量脈沖寬度 介紹門控制位介紹門控制位GATE1的應(yīng)用。的應(yīng)用。GATE1可使定時(shí)可使定時(shí)器器/
29、計(jì)數(shù)器計(jì)數(shù)器T1的啟動(dòng)計(jì)數(shù)受的啟動(dòng)計(jì)數(shù)受INT1*的控制,可測(cè)量引的控制,可測(cè)量引腳腳INT1*(P3.3)上正脈沖的寬度(機(jī)器周期數(shù))。上正脈沖的寬度(機(jī)器周期數(shù))。參考程序:參考程序: ORG 0000HRESET: AJMP MAIN ;復(fù)位入口轉(zhuǎn)主程序復(fù)位入口轉(zhuǎn)主程序 ORG 0100H MAIN: MOV SP,#60H MOV TMOD,#90H ;T1為方式為方式1定時(shí)控制字定時(shí)控制字 MOV TL1,#00H MOV TH1,#00H LOOP: JB P3.3,LOOP ;等待等待INT1*低低 SETB TR1 ;如果如果INT1*為低,啟動(dòng)為低,啟動(dòng)T1 LOOP1: JNB P3.3,LOOP1;等待等待INT1*升高升高 LOOP2: JB P3.3,LOOP2 ;等待等待INT1*降低降低 CLR TR1;停止停止T1計(jì)數(shù)計(jì)數(shù) MOV A,TL1;T1計(jì)數(shù)值送計(jì)數(shù)值送A將將A中的中的T1計(jì)數(shù)計(jì)數(shù)值送顯示緩沖區(qū)值送顯示緩沖區(qū) 轉(zhuǎn)換成顯示的代碼轉(zhuǎn)換成顯示的代碼 LOOP3: LCALL DIR ;調(diào)用顯示子程序調(diào)用顯示子程序DIR(略)顯示略)顯示T1計(jì)數(shù)值計(jì)數(shù)值 AJMP LOOP3 ; 執(zhí)行程序,使執(zhí)行程序,使INT1*引腳上出現(xiàn)的正脈沖寬度以機(jī)器周引腳上出現(xiàn)的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 倉庫轉(zhuǎn)租簡易合同范本
- 2025年掃瞄隧道顯微鏡項(xiàng)目合作計(jì)劃書
- 廚具安裝銷售合同范本
- 化肥購銷合同范本
- 合伙開店合作合同范例
- 共同招商合作合同范本
- 合伙經(jīng)營合同范本格式
- 合成車間轉(zhuǎn)讓合同范本
- 吉林2009造價(jià)合同范本
- 棉被代加工合同范本
- 2025年高考百日誓師大會(huì)校長致辭(二)
- 2025年河南機(jī)電職業(yè)學(xué)院單招職業(yè)技能測(cè)試題庫及參考答案
- 2025年黑龍江能源職業(yè)學(xué)院單招職業(yè)傾向性測(cè)試題庫完整
- 學(xué)校垃圾處理運(yùn)輸服務(wù)合同
- 廣西2025年01月南寧市良慶區(qū)公開考試招考專職化城市社區(qū)工作者筆試歷年典型考題(歷年真題考點(diǎn))解題思路附帶答案詳解
- 注塑產(chǎn)品生產(chǎn)流程
- 統(tǒng)編版(2025)七年級(jí)下冊(cè)道德與法治教學(xué)計(jì)劃
- 七年級(jí)數(shù)學(xué)下冊(cè) 第11章 單元測(cè)試卷(蘇科版 2025年春)
- 2024年天津市建筑安全員A證考試題庫及答案
- 2021年江蘇省公務(wù)員考試行測(cè)+申論真題及答案解析(A類卷)
- 2024年皖西衛(wèi)生職業(yè)學(xué)院單招職業(yè)適應(yīng)性測(cè)試題庫及答案解析
評(píng)論
0/150
提交評(píng)論