版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第5章 單片機(jī)的中斷與定時系統(tǒng),學(xué)習(xí)目標(biāo),掌握中斷系統(tǒng)的基本概念 掌握中斷系統(tǒng)使用的相關(guān)寄存器 掌握中斷系統(tǒng)的編程方法及應(yīng)用 掌握計數(shù)/定時的基本概念 掌握計數(shù)/定時使用的相關(guān)寄存器 掌握計數(shù)/定時器的編程方法及應(yīng)用,主要內(nèi)容,5.1 中斷系統(tǒng) 5.1.1 中斷的基本概念 5.1.2 中斷源及中斷請求 5.1.3 中斷系統(tǒng)結(jié)構(gòu) 5.1.4 中斷控制 5.1.5 中斷處理過程 5.1.6 中斷系統(tǒng)的應(yīng)用 5.2 定時/計數(shù)器接口 5.2.1 定時/計數(shù)器的主要特性 5.2.2 定時/計數(shù)器T0、T1的結(jié)構(gòu) 5.2.3 定時/計數(shù)器的控制寄存器 5.2.4 定時/計數(shù)器的工作方式 5.2.5 定時
2、/計數(shù)器的初始化編程及應(yīng)用 5.3 中斷及定時系統(tǒng)綜合應(yīng)用,與上對比,單片機(jī)中也有同樣的問題。CPU正在執(zhí)行原程序,突然,被意外事情打斷,轉(zhuǎn)去執(zhí)行新程序。CPU執(zhí)行新程序結(jié)束后,又回到原程序中繼續(xù)執(zhí)行。這樣的過程就叫 。,什么叫中斷? 舉例:課堂教學(xué)中,當(dāng)老師正在按備課教案給同學(xué)們講課 時,課堂中任何一個同學(xué)都可能突然間提出問題,老師暫停正在講授的課程內(nèi)容,解答同學(xué)的問題,問題解決后,老師接著剛才的內(nèi)容繼續(xù)講授課程。這樣一個過程實質(zhì)上就是一個中斷過程。,5.1 51的中斷系統(tǒng) 5.1.1 中斷的概念,5.1 51的中斷系統(tǒng),5.1.1 中斷的概念 老師按教案講課是“主程序”;提問同學(xué)是“中斷源
3、”;提問打斷老師正常授課過程可稱為“中斷請求”;老師認(rèn)為有必要馬上回答這個問題,可稱為是“中斷允許”;暫停正在講授的課程內(nèi)容解答同學(xué)的疑問,可稱為“中斷響應(yīng)”;解答疑問的過程可稱為“中斷處理”;解答完疑問繼續(xù)講授課程內(nèi)容可稱之為“中斷返回”。,單片機(jī)實現(xiàn)上述中斷功能的部件稱為中斷系統(tǒng),采用中斷方式,CPU將只在外部設(shè)備提出請求時才中斷正在執(zhí)行的任務(wù),來執(zhí)行外部設(shè)備請求任務(wù),這樣極大地提升了CPU的使用效率。,5.1.2 中斷系統(tǒng)的結(jié)構(gòu) 80C51單片機(jī)的中斷源共有5個,其中2個為外部中斷源、2個定時中斷源和1個串行中斷源。,1、2個外部中斷源 外部中斷是由外部事件引起的中斷,分別由引腳P3.2
4、和P3.3 引入外部中斷請求有兩種信號方式 ,可通過設(shè)置控制位ITX(X=0,1)進(jìn)行定義。,2、 2個定時中斷源 定時中斷是為單片機(jī)的計數(shù)/定時器設(shè)置的中斷。當(dāng)定時器Tx對單片機(jī)內(nèi)部定時脈沖或?qū)ν獠坑嫈?shù)脈沖進(jìn)行計數(shù)發(fā)生溢出時,置位TFx,并向CPU申請中斷。 3、 1個串行中斷 串行中斷是為串行數(shù)據(jù)傳送的需要而設(shè)置的中斷。當(dāng)串行口接收完一幀串行數(shù)據(jù)時置位RI或當(dāng)串行口發(fā)送完一幀串行數(shù)據(jù)時置位TI,向CPU申請中斷。,5.1.3 中斷系統(tǒng)的結(jié)構(gòu) 80C51的中斷系統(tǒng)有5個中斷源,2個優(yōu)先級,可實現(xiàn)二級中斷嵌套 。,IT0 外部中斷0觸發(fā)方式控制位。 當(dāng)IT0=0時,為電平觸發(fā)方式。 當(dāng)IT0=
5、1時,為邊沿觸發(fā)方式(下降沿有效)。 IE0 外部中斷0中斷請求標(biāo)志位。 IT1 外部中斷1觸發(fā)方式控制位。 IE1 外部中斷1中斷請求標(biāo)志位。 TF0 定時/計數(shù)器T0溢出中斷請求標(biāo)志位。 TF1 定時/計數(shù)器T1溢出中斷請求標(biāo)志位。,1 TCON定時器與外部中斷控制寄存器,5.1.4 中斷控制,利用中斷請求標(biāo)志位來通知CPU 中斷請求!,2、SCON的中斷標(biāo)志,RI(SCON.0),串行口接收中斷標(biāo)志位。當(dāng)允許串行口接收數(shù)據(jù)時,每接收完一個串行幀,由硬件置位RI。但是,RI必須由軟件清除。 TI(SCON.1),串行口發(fā)送中斷標(biāo)志位。當(dāng)CPU將一個發(fā)送數(shù)據(jù)寫入串行口發(fā)送緩沖器時,就啟動了發(fā)
6、送過程。每發(fā)送完一個串行幀,由硬件置位TI。CPU響應(yīng)中斷時,不能自動清除TI,TI必須由軟件清除。,3.中斷允許控制 CPU對中斷系統(tǒng)所有中斷以及某個中斷源的開放和屏蔽是由中斷允許寄存器IE控制的。,EX0(IE.0),外部中斷0允許位; ET0(IE.1),定時/計數(shù)器T0中斷允許位; EX1(IE.2),外部中斷1允許位; ET1(IE.3),定時/計數(shù)器T1中斷允許位; ES(IE.4),串行口中斷允許位; EA (IE.7), CPU中斷允許(總允許)位。,若為“1”,開關(guān)接通,允許 例如 SETB EA 若為“0”,開關(guān)斷開,不允許 例如 CLR IE.7,為什么要有中斷優(yōu)先級?,
7、CPU同一時間只能響應(yīng)一個中斷請求。若同時來了兩個或兩個以上中斷請求,就必須有先有后。 !,為此將5個中斷源分成高級、低級兩個級別,高級優(yōu)先,由IP控制。,4. 中斷優(yōu)先級控制 51單片機(jī)有兩個中斷優(yōu)先級,即可實現(xiàn)二級中斷服務(wù)嵌套。每個中斷源的中斷優(yōu)先級都是由中斷優(yōu)先級寄存器IP中的相應(yīng)位的狀態(tài)來規(guī)定的 。,PX0(IP.0),外部中斷0優(yōu)先級設(shè)定位; PT0(IP.1),定時/計數(shù)器T0優(yōu)先級設(shè)定位; PX1(IP.2),外部中斷0優(yōu)先級設(shè)定位; PT1(IP.3),定時/計數(shù)器T1優(yōu)先級設(shè)定位; PS (IP.4),串行口優(yōu)先級設(shè)定位。,該位是“1”時,為高級優(yōu)先級 該位是“ 0”時,為低
8、級優(yōu)先級,當(dāng)CPU正在執(zhí)行某個中斷服務(wù)程序時,如果發(fā)生更高一級的中斷源請求中斷,CPU可以“中斷”正在執(zhí)行的低優(yōu)先級中斷,轉(zhuǎn)而響應(yīng)更高一級的中斷,這就是中斷嵌套。中斷優(yōu)先級是為中斷嵌套服務(wù)的。,5.中斷優(yōu)先級控制原則和控制邏輯,中斷嵌套,51單片機(jī)的中斷優(yōu)先級有三條原則:,CPU同時接收到幾個中斷時,首先響應(yīng)優(yōu)先級別最高的中斷請求。 正在進(jìn)行的中斷過程不能被新的同級或低優(yōu)先級的中斷請求所中斷。 正在進(jìn)行的低優(yōu)先級中斷服務(wù),能被高優(yōu)先級中斷請求所中斷。,為了實現(xiàn)上述后兩條原則,中斷系統(tǒng)內(nèi)部設(shè)有兩個用戶不能尋址的優(yōu)先級狀態(tài)觸發(fā)器。其中一個置1,表示正在響應(yīng)高優(yōu)先級的中斷,它將阻斷后來所有的中斷請求
9、;另一個置1,表示正在響應(yīng)低優(yōu)先級中斷,它將阻斷后來所有的低優(yōu)先級中斷請求。,同一級中的5個中斷源的優(yōu)先順序是:,5.1.5 單片機(jī)中斷處理過程,1單片機(jī)的響應(yīng)條件 有中斷源發(fā)出中斷請求。 中斷總允許位EA=1。 中斷源對應(yīng)的中斷允許位為1。 在滿足以上條件的基礎(chǔ)上,若有下列任何一種情況存在,中斷響應(yīng)都會受到阻斷。 CPU正在執(zhí)行一個同級或高優(yōu)先級的中斷服務(wù)程序。 正在執(zhí)行的指令尚未執(zhí)行完。 正在執(zhí)行中斷返回指令 RETI或者對專用寄存器IE、 IP進(jìn)行讀/寫的指令。,將相應(yīng)的優(yōu)先級狀態(tài)觸發(fā)器置1(以阻斷后來的同級或低級的中斷請求)。 執(zhí)行一條硬件LCALL指令,即把程序計數(shù)器PC的內(nèi)容壓入堆
10、棧保存,再將相應(yīng)的中斷服務(wù)程序的入口地址送入PC。 中斷處理執(zhí)行中斷服務(wù)程序。,2.中斷響應(yīng)過程,中斷響應(yīng)過程的前兩步是由中斷系統(tǒng)內(nèi)部自動完成的,而中斷服務(wù)程序則要由用戶編寫程序來完成。,2單片機(jī)的響應(yīng)過程 中斷處理就是執(zhí)行中斷服務(wù)程序,從中斷入口地址開始執(zhí)行,直到返回指令(RETI)為止。此過程一般包括三部分內(nèi)容: (1)保護(hù)現(xiàn)場 (2)處理中斷源的請求 (3)恢復(fù)現(xiàn)場,3. 中斷返回,中斷返回通過執(zhí)行中斷返回指令RETI來實現(xiàn),具體功能是: 將相應(yīng)中斷優(yōu)先級狀態(tài)觸發(fā)器清0,通知中斷系統(tǒng),中斷服務(wù)程序已執(zhí)行完畢。 將中斷響應(yīng)時壓入堆棧保存的斷點地址從棧頂彈出送回PC,CPU從原來中斷的地方繼
11、續(xù)執(zhí)行程序;,注意,不能用RET指令代替RETI指令。在中斷服務(wù)程序中PUSH指令與POP指令必須成對使用,否則不能正確返回斷點 。,響應(yīng)過程:(假設(shè)已使某中斷請求標(biāo)志置1) (1)先使相應(yīng)優(yōu)先級狀態(tài)觸發(fā)器置1; (2)執(zhí)行一個硬件子程序的調(diào)用, 1)硬件清零相應(yīng)中斷請求標(biāo)志(TI、RI除外) 2)將當(dāng)前PC內(nèi)容壓入堆棧保護(hù)斷點; 3)將中斷服務(wù)子程序入口地址送PC轉(zhuǎn)移。,返回過程:(RETI執(zhí)行后) (1)使相應(yīng)優(yōu)先級狀態(tài)觸發(fā)器清0。 (2)從堆棧中彈出棧頂?shù)膬蓚€字節(jié)內(nèi)容送PC恢復(fù)斷點。 (3)CPU接著中斷處繼續(xù)執(zhí)行原程序。,4中斷請求的撤除 CPU響應(yīng)某中斷請求后,在中斷返回前,應(yīng)該 撤
12、消該中斷請求,否則會引起另一次中斷。不同中斷 源中斷請求的撤除方法是不一樣的。 定時器溢出中斷請求的撤除 硬件會自動清除中斷請求標(biāo)志TF0或TFl。 串行口中斷的撤除 硬件不能清除中斷請求標(biāo)志TI和RI,要由軟件來清除相 應(yīng)的標(biāo)志。 外部中斷的撤除 外部中斷為電平觸發(fā)方式時,CPU響應(yīng)中斷后,硬件會自 動清除中斷請求標(biāo)志IE0或IEl,但由于加到或引腳的外部中斷 請求信號并未撤除,中斷請求標(biāo)志IE0或IEl會再次被置1,所 以在CPU響應(yīng)中斷后應(yīng)立即撤除或引腳上的低電平。,5.1.6 中斷系統(tǒng)的應(yīng)用,中斷系統(tǒng)示意圖,1中斷初始化 設(shè)置堆棧指針SP 定義中斷優(yōu)先級 定義外中斷觸發(fā)方式 開放中斷
13、安排好等待中斷或中斷發(fā)生前主程序 應(yīng)完成的操作內(nèi)容,5.1.6 中斷系統(tǒng)的應(yīng)用,2現(xiàn)場保護(hù)和現(xiàn)場恢復(fù) 將中斷時刻單片機(jī)中主要寄存器的數(shù)據(jù)或狀態(tài)送入堆棧中保存起來,這就是現(xiàn)場保護(hù)。中斷服務(wù)結(jié)束后,在返回主程序前,則需把保存的現(xiàn)場內(nèi)容從堆棧中彈出,以恢復(fù)那些寄存器的原有內(nèi)容,這就是現(xiàn)場恢復(fù)。 3中斷服務(wù)主程序 在中斷服務(wù)入口地址設(shè)置一條跳轉(zhuǎn)指令 轉(zhuǎn)移到中斷服務(wù)程序的實際入口處; 根據(jù)需要保護(hù)現(xiàn)場; 中斷源請求中斷服務(wù)要求的操作; 恢復(fù)現(xiàn)場。與保護(hù)現(xiàn)場相對應(yīng),注意先進(jìn) 后出、后進(jìn)先出操作原則; 中斷返回,最后一條指令必須是RETI。,例5-1 出租車計價器計程方法是車輪每運(yùn)轉(zhuǎn) 一圈產(chǎn)生2個負(fù)脈沖,從
14、外中斷(P3.2)引 腳輸入,行駛里程為輪胎周長運(yùn)轉(zhuǎn)圈數(shù), 設(shè)輪胎周長為2m,試實時計算出租車行駛 里程(單位米),數(shù)據(jù)由高字節(jié)到低字節(jié)依 次存放于32H、31H、30H。,分析:由32H、31H、30H三個字節(jié)存放計數(shù)結(jié)果,最大數(shù)值為224-1=16777215次,足以滿足出租車計程的使用。程序在初始化時,應(yīng)先將這些存放數(shù)據(jù)的內(nèi)存單元清零。另外,由于題目并未明確說明負(fù)脈沖的寬度,并且硬件上也沒有設(shè)計中斷請求撤除電路,所以應(yīng)該將外部中斷的觸發(fā)方式設(shè)置為下降沿脈沖觸發(fā)方式。 里程數(shù)決定了乘客的付費,必須準(zhǔn)確,所以應(yīng)將中斷優(yōu)先級設(shè)為最高。中斷服務(wù)程序主要任務(wù)是完成對32H、31H、30H三字節(jié)的加
15、1計數(shù)任務(wù)。主程序應(yīng)完成中斷初始化任務(wù),如設(shè)置堆棧、設(shè)定中斷優(yōu)先級、開中斷、對內(nèi)存單元清零等。,經(jīng)過以上分析,讀者可以劃出程序設(shè)計的流程圖,匯編語言程序如下: ORG 0000H ;復(fù)位地址 LJMP START ;轉(zhuǎn)初始化 ORG 0003H ;中斷入口地址 LJMP EINT0 ;轉(zhuǎn)中斷服務(wù)程序 ORG 0030H ;定義主程序首地址 START: MOV SP,#60H ;置堆棧指針 SETB IT0 ;置邊沿觸發(fā)方式 MOV IP,#01H ;置高優(yōu)先級 MOV 30H,#0 ;里程計數(shù)器清0 MOV 31H,#0 ; MOV 32H,#0 ; MOV IE,#81H ;開中斷 LJM
16、P $ ;等待中斷,ORG 0200H ;中斷服務(wù)子程序首地址 EINT0:PUSH Acc ;保護(hù)現(xiàn)場 PUSH PSW ; MOV A,30H ;讀低8位計數(shù)器 ADD A,#1 ;低8位計數(shù)器加1m MOV 30H,A ;低8位保存在30H單元 CLR A ; ADDC A,31H ;中8位計數(shù)器加進(jìn)位 MOV 31H,A ;中8位計數(shù)保存在31H單元 CLR A ; ADDC A,32H ;高8位計數(shù)器加進(jìn)位 MOV 32H,A ;高8位計數(shù)保存在32H單元 POP PSW ;恢復(fù)現(xiàn)場 POP Acc ; RETI ;中斷返回 END,例5-2 如圖5-7所示按鍵電路對應(yīng)于教學(xué)實驗板上
17、的脈沖產(chǎn)生電路,每按一次按鍵會在單片機(jī)引腳產(chǎn)生一個脈沖,使用C51編寫程序?qū)Π存I次數(shù)進(jìn)行計數(shù)。,脈沖產(chǎn)生電路,主要內(nèi)容,5.1 中斷系統(tǒng) 5.1.1 中斷的基本概念 5.1.2 中斷源及中斷請求 5.1.3 中斷系統(tǒng)結(jié)構(gòu) 5.1.4 中斷控制 5.1.5 中斷處理過程 5.1.6 中斷系統(tǒng)的應(yīng)用 5.2 定時/計數(shù)器接口 5.2.1 定時/計數(shù)器的主要特性 5.2.2 定時/計數(shù)器T0、T1的結(jié)構(gòu) 5.2.3 定時/計數(shù)器的控制寄存器 5.2.4 定時/計數(shù)器的工作方式 5.2.5 定時/計數(shù)器的初始化編程及應(yīng)用 5.3 中斷及定時系統(tǒng)綜合應(yīng)用,5.2 定時/計數(shù)器,在為學(xué)習(xí)本節(jié)內(nèi)容前,我們常
18、用軟件定時,軟件定時不占用硬件資源,但占用了CPU時間,降低了CPU的利用率。 實現(xiàn)定時功能,比較方便的辦法是利用單片機(jī)內(nèi)部的定時/計數(shù)器。 定時/計數(shù)器是51系列單片機(jī)的重要功能模塊之一。在檢測、控制及智能儀器應(yīng)用中,常用定時器作時鐘,以實現(xiàn)定時檢測、定時控制。還可用定時器產(chǎn)生寬度預(yù)先設(shè)定的脈沖信號,以驅(qū)動步進(jìn)電機(jī)一類的電器機(jī)械。計數(shù)器主要用于外部事件的計數(shù)。,5.2.1 定時/計數(shù)器的主要特性,51系列中51子系列有兩個16位的可編程定時/ 計數(shù)器,52子系列有三個。 每個定時/計數(shù)器既可以對系統(tǒng)時鐘計數(shù)實現(xiàn)定時,也可以對外部信號計數(shù)實現(xiàn)計數(shù)功能,通過編程設(shè)定初始值來實現(xiàn)。 每個定時/計數(shù)
19、器都有多種工作方式通過編程可設(shè)定工作于某種方式。 每一個定時/計數(shù)器定時計數(shù)時間到時產(chǎn)生溢出,使相應(yīng)的溢出位置位,溢出可通過查詢或中斷方式處理。,5.2.2 定時/計數(shù)器的結(jié)構(gòu),定時/計數(shù)器的實質(zhì)是加1計數(shù)器(16位),由高8位和低8位兩個寄存器組成。TMOD是定時/計數(shù)器的工作方式寄存器,確定工作方式和功能;TCON是控制寄存器,控制T0、T1的啟動和停止及設(shè)置溢出標(biāo)志。,5.2.3 定時/計數(shù)器的控制寄存器,80C51單片機(jī)定時/計數(shù)器的工作由兩個特殊功能寄存器控制。TMOD用于設(shè)置其工作方式;TCON用于控制其啟動和中斷申請。 1、工作方式寄存器TMOD 工作方式寄存器TMOD用于設(shè)置定
20、時/計數(shù)器的工作方式,低四位用于T0,高四位用于T1。其格式如下:,定時 / 計數(shù)器的四種工作模式,M1 M0 模式 說明 0 0 0 13位定時/計數(shù)器 高八位TH(7 0)+ 低五位TL( 4 0) 0 1 1 16位定時/計數(shù)器 TH(7 0)+ TL(7 0) 1 0 2 8位計數(shù)初值自動重裝的定時/計數(shù)器 TL(7 0) TH(7 0) 1 1 3 T0運(yùn)行為兩個獨立的8位定時/計數(shù),而T1停止工作。,2、定時 / 計數(shù)器控制寄存器TCON,TCON,能否啟動定時 / 計數(shù)器工作與GATE有關(guān),分兩種情況: GATE = 0 時,若TRi = 1,開啟Ti計數(shù)工作;(i = 0或1)
21、 若TRi = 0,停止Ti計數(shù)。 GATE = 1 時,若TRi = 1 且/INTi = 1時開啟Ti計數(shù); 若TRi = 1 且/INTi = 0時不能開啟Ti計數(shù)。 若TRi = 0, 停止Ti計數(shù)。,C/T = 0 定時; C/T = 1 對外計數(shù)。定時:機(jī)器周期Tcy = 12 / fosc,波形等間隔,次數(shù)已定,時間確定 即對機(jī)器周期進(jìn)行計數(shù)。,左圖定時時間為 N*Tcy,N個機(jī)器周期,Tcy,計數(shù):脈沖不等間隔。,每個下降沿計數(shù)一次 確認(rèn)一次負(fù)跳變需兩個機(jī)器周期, 所以,計數(shù)頻率最高為fosc / 24。,5.2.4 定時/計數(shù)器的工作方式 1、方式0 方式0為13位計數(shù),由T
22、L0的低5位(高3位未用)和TH0的8位組成。TL0的低5位溢出時向TH0進(jìn)位,TH0溢出時,置位TCON中的TF0標(biāo)志,向CPU發(fā)出中斷請求。,方式0 下T1、T0的等效邏輯結(jié)構(gòu),TLi (5位),THi (8位),TFi,中斷,04 07,計數(shù)寄存器TLi 低5位 + THi8位,計數(shù)初值計算的公式為: 定時器模式時有:Nt/ Tcy 定時器的初值還可以采用計數(shù)個數(shù)直接取補(bǔ)法獲得。 計數(shù)模式時,計數(shù)脈沖是T0引腳上的外部脈沖。,門控位GATE的作用: 當(dāng)GATE=0時,經(jīng)反相后使或門輸出為1,此時僅由TR0控制與門的開啟,與門輸出1時,控制開關(guān)接通,計數(shù)開始;當(dāng)GATE=1時,由外中斷引腳
23、信號控制或門的輸出,此時控制與門的開啟由外中斷引腳信號和TR0共同控制。當(dāng)TR0=1時,外中斷引腳信號引腳的高電平啟動計數(shù),外中斷引腳信號引腳的低電平停止計數(shù)。這種方式常用來測量外中斷引腳上正脈沖的寬度。,2、方式1 方式1的計數(shù)位數(shù)是16位,由TL0作為低8位、TH0作為高8位,組成了16位加1計數(shù)器 。,計數(shù)個數(shù)與計數(shù)初值的關(guān)系為:,與模式0相似。 與模式0的區(qū)別:計數(shù)位數(shù)不同。,方式1 下T1、T0的等效邏輯結(jié)構(gòu),THi(高8位)+ TLi(低8位),3、方式2 方式2為自動重裝初值的8位計數(shù)方式。,工作方式2特別適合于用作較精確的脈沖信號發(fā)生器。,計數(shù)個數(shù)與計數(shù)初值的關(guān)系為:,與模式0
24、、1的區(qū)別:1)計數(shù)位數(shù)不同; 2)初值自動重裝。,方式2 下T1、T0的等效邏輯結(jié)構(gòu),4、方式3 方式3只適用于定時/計數(shù)器T0,定時器T1處于方式3時相當(dāng)于TR1=0,停止計數(shù)。,工作方式3將T0分成為兩個獨立的8位計數(shù)器TL0和TH0。 方式3適用于要求增加一個額外的8位定時器的應(yīng)用場合。,T0定時/計數(shù),而T1停止計數(shù),但可作波特率發(fā)生器。T0分成兩獨立定時/計數(shù)器TL0和TH0,。 TL0使用C/T、GATE、TR0、/INT0、TF0可作定時/計數(shù)。 TH0使用TR1、TF1控制。 因此,只能用于定時。,(a)TL0可作8位定時/計數(shù)器,(b)TH0只能作8位定時器,TR1,方式3
25、 下T1、T0的等效邏輯結(jié)構(gòu),方式3時,T1可設(shè)為模式0、1、2的定時/計數(shù),用在任何不需要中斷控制的場合,典型應(yīng)用是用作串行通信的波特率發(fā)生器。,(a) T0模式3時T1模式0,(b) T0模式3時T1模式1,(c) T0模式3時T1模式2,5.2.5 定時/計數(shù)器的初始化編程及應(yīng)用,1、MCS-51單片機(jī)定時/計數(shù)器初始化編程步驟 根據(jù)要求選擇方式,確定方式控制字,寫入方式控制 寄存器TMOD。 根據(jù)要求計算定時/計數(shù)器的計數(shù)值,再由計數(shù)值求得 初值,寫入初值寄存器。 根據(jù)需要開放定時/計數(shù)器中斷(后面須編寫中斷服務(wù) 程序)。 設(shè)置定時/計數(shù)器控制寄存器TCON的值,啟動定時/計 數(shù)器開始
26、工作。 等待定時/計數(shù)的時間到,到則執(zhí)行中斷服務(wù)程序;如 用查詢處理,則編寫查詢程序判斷溢出標(biāo)志,溢出標(biāo) 志等于1,則進(jìn)行相應(yīng)處理。,2、編程前需確定的參數(shù): (1)定時/計數(shù)器 T0、T1選擇其一, (2)工作方式 C /T及GATA, (3)計數(shù)初值 加1計數(shù)、16位。,計數(shù)用 :初值X=MN;M=213=8192(模式0) M=216=65536(模式1) M=28=256 (模式2、模式式3) 定時用:初值X=MN =M t/Tcy(t為所要求的定時時間,Tcy為機(jī)器周期),(4)工作模式 M1、M0,5.2.5 定時/計數(shù)器的初始化編程及應(yīng)用,()計算計數(shù)初值 欲產(chǎn)生500s的等寬正
27、方波脈沖,只需在P1.0端以250us為周期交替輸出高低電平即可實現(xiàn),為此定時時間應(yīng)為250s。使用12MHz晶振,則一個機(jī)器周期為1s。方式0為13位計數(shù)結(jié)構(gòu)。設(shè)待求的計數(shù)初值為X,則N=213一X250s/ 1s=250 求解得:X=7942。二進(jìn)制數(shù)表示為1111100000110B。十六進(jìn)制表示,高8位為0F8H,低5位為06H。其中高8位放入TH1,即TH1=OF8H;低5位放入TL1,即TL106H。,例5-3 設(shè)單片機(jī)晶振頻率為12MHz,使用定時器1以方式0產(chǎn)生周期為500s的等寬正方波連續(xù)脈沖,并由P1.0輸出。以查詢方式完成。,1、 方式0的應(yīng)用,3、定時/計數(shù)器應(yīng)用舉例,
28、5.2.5 定時/計數(shù)器的初始化編程及應(yīng)用,()TMOD寄存器初始化 為把定時器計數(shù)器1設(shè)定為方式0,則M1M0=00;為實現(xiàn)定時功能,應(yīng)使C=0。定時器計數(shù)器0不用,有關(guān)位設(shè)定為0。因此TMOD寄存器應(yīng)初始化為00H。 ()由定時器控制寄存器TCON中的TR1位控制定時的啟動和停止。 TR1=1啟動,TR1=0停止。,()程序設(shè)計 MOV TMOD,#00H ;設(shè)置T1為工作方式0 MOVTH1,#0F8H ;設(shè)置計數(shù)初值 MOVTL1,#06H MOVIE,#00H ;禁止中斷 SETBTR1 ;啟動定時期 LOOP: JBC TF1,LOOP1 ;查詢計數(shù)溢出 AJMPLOOP LOOP
29、1: MOVTH1,#0F8H ;重置計數(shù)初值 MOVTL1,#06H CLRTF1 ;計數(shù)溢出標(biāo)志位清0 CPLP1.0 ;輸出取反 AJMPLOOP;重復(fù)循環(huán),2、方式1應(yīng)用 方式1與方式0基本相同,只是方式1改用了16 位計數(shù)器.要求定時周期較長時,13 位計數(shù)器不夠用,可改用16位計數(shù)器。,例5- 題目同例5-3,但以中斷方式完成。即單片機(jī)晶振頻率為6MHz,使用定時器1以工作方式1產(chǎn)生周期為500s的等寬連續(xù)正方波脈沖,并在P1.0端輸出。 ()計算計數(shù)初值 TH1=0FFHTL1=06H ()TMOD寄存器初始化 TMOD=10H,()程序設(shè)計 ORG 0000H LJMPSTAR
30、 ORG 0013H ;定時器1中斷向量地址 LJMPT1INT ORG 0030H START: MOV TMOD,#10H ;定時器1工作方式1 MOV TH1, #0FFH ;設(shè)置計數(shù)初值 MOV TL1, #06H SETBEA ;開中斷 SETBET1 ;定時器1允許中斷 SETBTR1 ;定時開始 HERE: SJMP$ ;等待中斷 ORG 0100H T1INT: MOV TH1, #0FFH ;中斷程序 MOV TL1, #06H ;重新設(shè)置計數(shù)初值 CPL P1.0 ;輸出取反 RETI ;中斷返回 END,3、 方式2應(yīng)用 方式2是定時器自動重裝載的操作方式, 在這種方式下
31、,定時器0和1的工作是相同的, 它的工作過程與方式0、方式1基本相同,只不過在溢出的同時, 將8位二進(jìn)制初值自動重裝載,即在中斷服務(wù)子程序中, 不需要編程送初值,這里不再舉例。定時器 T1工作在方式2 時,可直接用作串行口波特率發(fā)生器,四、方式3的應(yīng)用 定時器T0工作在方式3時是2個8位定時器 /計數(shù)器。且TH0 借用了定時器 T1 的溢出中斷標(biāo)志TF1和運(yùn)行控制位TR1,可用作一個8位定時器。 例 假設(shè)有一個用戶系統(tǒng)中已使用了兩個外部中斷源, 并置定時器 T1 于方式 2, 作串行口波特率發(fā)生器用, 現(xiàn)要求再增加一個外部中斷源, 并由 P1.0 口輸出一個 5k Hz的方波(假設(shè)晶振頻率為
32、6 MHz)。,在不增加其它硬件開銷時, 可把定時器/計數(shù)器T0置于工作方式3,利用外部引腳T0端作附加的外部中斷輸入端, 把TL0預(yù)置為0FFH,這樣在T0端出現(xiàn)由1至0的負(fù)跳變時,TL0立即溢出,申請中斷,相當(dāng)于邊沿激活的外部中斷源。 在方式3下,TH0總是作8位定時器用,可以靠它來控制由P1.0輸出的5kHz方波。 由P1.0輸出5kHz的方波,即每隔100s(周期為200s)使P1.0的電平發(fā)生一次變化。則TH0中的初始值X=MN=256100/2=206。(機(jī)器周期為2 s ) 下面是有關(guān)的程序。,MOV TL0, 0FFH MOV TH0, 206 MOV TL1, BAUD;BA
33、UD根據(jù)波特率要求設(shè)置常數(shù) MOV TH1, BAUD ;置T0工作方式3TL0工作于計數(shù)器方式 MOV TMOD, 27H ;啟動定時器 T0、 T1,置外部中斷 0 和 1為邊沿激活方式 MOV TCON, 55H MOV IE, 9FH ; 開放全部中斷,TL0 溢出中斷服務(wù)程序(由000BH單元轉(zhuǎn)來): TL0INT: MOV TL0, 0FFH RETI TH0 溢出中斷服務(wù)程序(由001BH轉(zhuǎn)來): TH0INT: MOV TH0, 206 CPL P1.0 RETI 此處串行口中斷服務(wù)程序、 外中斷0和外中斷1的中斷服務(wù)程序沒有列出。,主要內(nèi)容,5.1 中斷系統(tǒng) 5.1.1 中斷
34、的基本概念 5.1.2 中斷源及中斷請求 5.1.3 中斷系統(tǒng)結(jié)構(gòu) 5.1.4 中斷控制 5.1.5 中斷處理過程 5.1.6 中斷系統(tǒng)的應(yīng)用 5.2 定時/計數(shù)器接口 5.2.1 定時/計數(shù)器的主要特性 5.2.2 定時/計數(shù)器T0、T1的結(jié)構(gòu) 5.2.3 定時/計數(shù)器的控制寄存器 5.2.4 定時/計數(shù)器的工作方式 5.2.5 定時/計數(shù)器的初始化編程及應(yīng)用 5.3 中斷及定時系統(tǒng)綜合應(yīng)用,5.3 中斷及定時系統(tǒng)綜合應(yīng)用,例5-10 用圖3-12的顯示電路,使用C51編程語言編寫程序?qū)?現(xiàn)對按鍵的計數(shù),并將計數(shù)的結(jié)果實時顯示在數(shù)碼管上。要 求只顯示有效的位,無效位不顯示。,分析:在本例中,
35、要求所顯示的內(nèi)容不再是固定的,而是動態(tài)變化的。由于按鍵脈沖的寬度是隨機(jī)的,為了確保準(zhǔn)確捕獲按鍵的次數(shù),需要將外部中斷設(shè)置成下降沿觸發(fā)的方式 。 編寫程序時,需要定一個數(shù)組作為顯示緩沖區(qū)。 題目要求“只顯示有效的位,無效位不顯示”,因此還沒有有效數(shù)據(jù)的高位應(yīng)該不予顯示。但是在顯示緩沖區(qū)中會存在高位無效位和低位有效位都為“0”的情況(如:10,100,1000等),因此在顯示程序讀取顯示緩沖區(qū)時,應(yīng)先從高位向低位讀取,高位的0都對應(yīng)取熄滅代碼,一旦讀到非0的數(shù)字即意味著后面的所有0都應(yīng)該取0對應(yīng)的顯示代碼而顯示“0”。,5.3 中斷及定時系統(tǒng)綜合應(yīng)用,根據(jù)分析,可以畫出程序的流程圖如下:,C51程序代碼如下: /*/ /*功能說明: */ /*對外部中斷0進(jìn)行計數(shù),并將計數(shù)結(jié)果實時顯示在LED數(shù) 碼管上 */ /*/ #include #define uchar unsigned char #define INITVALUE_RCAP2H (65536-2000)/256) #define INITVALUE_RCAP2L (65536-200
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年10月?lián)P州市江都區(qū)教育局直屬高級中學(xué)公開招聘教師15人(公共基礎(chǔ)知識)綜合能力測試題附答案
- 2025年山東能源集團(tuán)兗礦新疆能化有限公司技能操作崗位人員招考前自測高頻考點模擬試題附答案
- 2025年秋季江蘇連云港市贛榆區(qū)區(qū)屬國企赴高校招聘高層次人才考前自測高頻考點模擬試題附答案
- 2025年11月廣東廣州市天河第二實驗幼兒園招聘編外聘用制教輔人員1人(公共基礎(chǔ)知識)測試題附答案
- AI賦能心靈:心理健康領(lǐng)域的應(yīng)用探索與實踐
- 2026河南許昌市魏都區(qū)北大社區(qū)衛(wèi)生服務(wù)中心招聘1人筆試參考題庫及答案解析
- 2025秋人教版道德與法治八年級上冊3.2營造清朗空間課件
- 2025秋人教版道德與法治八年級上冊8.1堅守公平課件
- 2026年安徽省能源集團(tuán)有限公司所屬子公司社會招聘筆試備考題庫及答案解析
- (拓展拔高)2025-2026學(xué)年下學(xué)期人教統(tǒng)編版小學(xué)語文五年級第五單元練習(xí)卷
- 上海市徐匯區(qū)2026屆初三一模英語試題(含答案)
- 2026年遼寧地質(zhì)工程職業(yè)學(xué)院單招綜合素質(zhì)考試題庫附答案
- 炎德·英才·名校聯(lián)考聯(lián)合體2026屆高三年級1月聯(lián)考語文試卷(含答及解析)
- 小紅書2025年9-10月保險行業(yè)雙月報
- 麥當(dāng)勞行業(yè)背景分析報告
- 2025至2030中國電腦繡花機(jī)行業(yè)深度研究及發(fā)展前景投資評估分析
- 可靠性驗證與評估流程
- 云南民族大學(xué)附屬高級中學(xué)2026屆高三聯(lián)考卷(四)英語+答案
- 中國心理行業(yè)分析報告
- 2025年翔安區(qū)社區(qū)專職工作者招聘備考題庫及一套參考答案詳解
- 2025年及未來5年市場數(shù)據(jù)中國別墅電梯市場發(fā)展前景預(yù)測及投資戰(zhàn)略咨詢報告
評論
0/150
提交評論