




已閱讀5頁,還剩192頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第5章 51單片機(jī)的內(nèi)部資源 本章介紹了51單片機(jī)的內(nèi)部資源,包括定時(shí)與中斷以及串口通信,中斷功能使單片機(jī)具有了實(shí)時(shí)處理能力,定時(shí)功能使單片能夠處理與時(shí)間和計(jì)數(shù)相關(guān)的問題的能力,串口通信使單片機(jī)可以與其他單片機(jī)、計(jì)算機(jī)或其它設(shè)備相連,在實(shí)際的工程應(yīng)用中非常廣泛。學(xué)習(xí)過程中要注意掌握相關(guān)的基礎(chǔ)知識和基本原理,重點(diǎn)是相關(guān)寄存器的功能和設(shè)置方法,并注意與實(shí)際操作相結(jié)合,不斷提高實(shí)踐能力。,5.1 51單片機(jī)的中斷系統(tǒng) 中斷系統(tǒng)主要用于實(shí)時(shí)測控,要求單片機(jī)能及時(shí)地響應(yīng)和處理單片機(jī)外部事件或內(nèi)部事件所提出的中斷請求。中斷方式大大地提高了CPU的工作效率。 5.1.1 中斷的概念 CPU正在執(zhí)行程序時(shí),單片機(jī)外部或內(nèi)部發(fā)生的某一事件,請求CPU迅速去處理。CPU暫時(shí)中止當(dāng)前的工作,轉(zhuǎn)到中斷服務(wù)處理程序處理所發(fā)生的事件。 處理完該事件后,再回到原來被中止的地方,繼續(xù)原來的工作,這稱為中斷。 CPU處理事件的過程,稱為CPU的中斷響應(yīng)過程。,如下圖所示。對事件的整個(gè)處理過程,稱為中斷處理(或中斷服務(wù))。,執(zhí)行主程序,繼續(xù)執(zhí)行主程序,斷點(diǎn),中斷請求,中斷響應(yīng),執(zhí)行中斷處理程序,中斷返回,能夠?qū)崿F(xiàn)中斷處理功能的部件稱為中斷系統(tǒng);產(chǎn)生中斷的請求源稱為中斷請求源。 中斷源向CPU提出的處理請求,稱為中斷請求(或中斷申請)。 進(jìn)入中斷保護(hù)現(xiàn)場中斷處理恢復(fù)現(xiàn)場 中斷返回 當(dāng)有幾個(gè)中斷源同時(shí)申請中斷時(shí),或者CPU正在處理某中斷源服務(wù)程序時(shí),又有另一中斷源申請中斷,那么CPU必須要確定優(yōu)先去處理誰的能力,稱為中斷優(yōu)先級。 優(yōu)先級高的事件可以中斷CPU正在處理的低級的中斷服務(wù)程序,待完成了高級中斷服務(wù)程序之后,再繼續(xù)被打斷的低級中斷服務(wù)程序。這是中斷嵌套問題。,5,引起CPU中斷的根源,稱為中斷源。中斷源向CPU提出的中斷請求。CPU暫時(shí)中斷原來的事務(wù)A,轉(zhuǎn)去處理事件B。對事件B處理完畢后,再回到原來被中斷的地方(即斷點(diǎn)),稱為中斷返回。實(shí)現(xiàn)上述中斷功能的部件稱為中斷系統(tǒng)(中斷機(jī)構(gòu))。,單片微機(jī)的中斷系統(tǒng)需要解決的問題 單片微機(jī)的中斷系統(tǒng)需要解決的問題主要有三點(diǎn),即: 當(dāng)單片微機(jī)內(nèi)部或外部有中斷申請時(shí),CPU能及時(shí)響應(yīng)中斷,停下正在執(zhí)行的任務(wù),轉(zhuǎn)去處理中斷服務(wù)子程序,中斷服務(wù)處理后能回到原斷點(diǎn)處繼續(xù)處理原先的任務(wù); 當(dāng)有多個(gè)中斷源同時(shí)申請中斷時(shí),應(yīng)能先響應(yīng)優(yōu)先級高的中斷源,實(shí)現(xiàn)中斷優(yōu)先級的控制; 當(dāng)?shù)蛢?yōu)先級中斷源正在使用中斷服務(wù)時(shí),若這時(shí)優(yōu)先級比它高的中斷源也申請中斷,要求能停下低優(yōu)先級中斷源的服務(wù)程序轉(zhuǎn)去執(zhí)行更高優(yōu)先級中斷源的服務(wù)程序,實(shí)現(xiàn)中斷嵌套,并能逐級正確返回原斷點(diǎn)處。,中斷的主要功能: 實(shí)現(xiàn)CPU與外部設(shè)備的速度配合(分時(shí)操作) 由于應(yīng)用系統(tǒng)的許多外部設(shè)備速度較慢,可以通過中斷的方法來協(xié)調(diào)快速CPU與慢速外部設(shè)備之間的工作。 實(shí)現(xiàn)實(shí)時(shí)控制 在單片微機(jī)中,依靠中斷技術(shù)能實(shí)現(xiàn)實(shí)時(shí)控制。實(shí)時(shí)控制要求計(jì)算機(jī)能及時(shí)完成被控對象隨機(jī)提出的分析和計(jì)算任務(wù)。在自動(dòng)控制系統(tǒng)中,要求各控制參量隨機(jī)地在任何時(shí)刻可向計(jì)算機(jī)發(fā)出請求,CPU必須作出快速響應(yīng)、及時(shí)處理。,中斷的主要功能: 實(shí)現(xiàn)故障的及時(shí)發(fā)現(xiàn)及處理 單片微機(jī)應(yīng)用中由于外界的干擾、硬件或軟件設(shè)計(jì)中存在問題等因素,在實(shí)際運(yùn)行中會(huì)出現(xiàn)硬件故障、運(yùn)算錯(cuò)誤、程序運(yùn)行故障等,有了中斷技術(shù),計(jì)算機(jī)就能及時(shí)發(fā)現(xiàn)故障并自動(dòng)處理。 實(shí)現(xiàn)人機(jī)聯(lián)系 比如通過鍵盤向單片微機(jī)發(fā)出中斷請求,可以實(shí)時(shí)干預(yù)計(jì)算機(jī)的工作。,5.1.2 MCS-51中斷系統(tǒng)的結(jié)構(gòu) MCS-51的中斷系統(tǒng)包括中斷源、中斷允許寄存器IE、中斷優(yōu)先級寄存器IP、中斷矢量等。 MCS-51有5個(gè)中斷請求源,兩個(gè)中斷優(yōu)先級,可兩級嵌套。 MCS-51五個(gè)中斷源中包括二個(gè)外部中斷源和三個(gè)內(nèi)部中斷源。 二個(gè)外部中斷源INT0和INT1,外部設(shè)備的中斷請求信號、掉電等故障信號都可以從INT0或INT1引腳輸入。 三個(gè)內(nèi)部中斷源為定時(shí)器/計(jì)數(shù)器T0和T1的定時(shí)/計(jì)數(shù)謚出中斷源和串行口發(fā)送或接收中斷源。 中斷系統(tǒng)結(jié)構(gòu)示意圖如下圖所示。,5.1.3 中斷請求源 51單片機(jī)的五個(gè)中斷請求源 : (1)INT0外部中斷請求0,由引腳INT0 (P3.2)輸入,中斷請求標(biāo)志為IE0。 (2)INT1外部中斷請求1,由引腳INT1 (P3.3)輸入,中斷請求標(biāo)志為IE1。 外部中斷請求有二種信號觸發(fā)方式,即電平有效方式和跳變有效方式,可通過設(shè)置有關(guān)控制位進(jìn)行定義。 當(dāng)設(shè)定為電平有效方式時(shí),若INT0或INT1引腳上采樣到有效的低電平,則向CPU提出中斷請求;當(dāng)設(shè)定為跳變有效方式時(shí),若INT0或INT1引腳上采樣到有效負(fù)跳變,則向CPU提出中斷請求。,51單片機(jī)的五個(gè)中斷請求源 : (3)定時(shí)器/計(jì)數(shù)器T0溢出中斷請求,中斷請求標(biāo)志為TF0 (P3.4) 。 (4)定時(shí)器/計(jì)數(shù)器T1溢出中斷請求,中斷請求標(biāo)志為TF1 (P3.5) 。 定時(shí)中斷是為滿足定時(shí)或計(jì)數(shù)的需要而設(shè)置的。當(dāng)計(jì)數(shù)器發(fā)生計(jì)數(shù)溢出時(shí),表明設(shè)定的定時(shí)時(shí)間到或計(jì)數(shù)值已滿,這時(shí)可以向CPU申請中斷。由于定時(shí)器/計(jì)數(shù)器在單片微機(jī)芯片內(nèi)部,所以定時(shí)中斷屬于內(nèi)部中斷。 (5)串行口中斷請求,中斷請求標(biāo)志為TI或RI。 串行中斷是為串行數(shù)據(jù)傳送的需要而設(shè)置的。每當(dāng)串行口發(fā)送或接收一組串行數(shù)據(jù)時(shí),就產(chǎn)生一個(gè)中斷請求。,當(dāng)CPU響應(yīng)中斷時(shí),由硬件直接產(chǎn)生一個(gè)固定的地址,即矢量地址,由矢量地址指出每個(gè)中斷源設(shè)備的中斷服務(wù)程序的入口,這種方法通常稱為矢量中斷。很顯然,每個(gè)中斷源分別有自已的中斷服務(wù)程序,而每個(gè)中斷服務(wù)程序又有自已的矢量地址。當(dāng)CPU識別出某個(gè)中斷源時(shí),由硬件直接給出一個(gè)與該中斷源相對應(yīng)的矢量地址,從而轉(zhuǎn)入各自中斷服務(wù)程序。中斷矢量地址見右表。,中斷矢量(中斷入口地址):,中斷向量地址的使用規(guī)則,中斷向量就是程序存儲(chǔ)器的地址,CPU從0000H開始執(zhí)行的常規(guī)方式:在“ORG 00H”之后即執(zhí)行“JMP START”,這里的地址標(biāo)號START理論上是在所有中斷向量之后,方能避免沖突,標(biāo)準(zhǔn)格式如下:,ORG 0000H ;程序從00H地址開始 JMP START ;跳至START ORG 0003H ;INT0中斷向量 JMP #1 ;執(zhí)行#1中斷子程序 ORG 0013H ;INT1中斷向量 JMP #2 ;執(zhí)行#1中斷子程序 : START: :,中斷向量空間范圍,觀察左邊的中斷源與中斷向量,可以發(fā)現(xiàn)兩個(gè)中斷向量之間,只有個(gè)地址的存貯空間,個(gè)字節(jié)是很難寫出實(shí)用的中斷程序的,通常的原則是只在這個(gè)地址放置“JMP #”之指令,#才是真正的中斷子程序。,中斷標(biāo)志: 特殊功能寄存器TCON和SCON的相應(yīng)位鎖存各中斷請求標(biāo)志。 TCON為定時(shí)器/計(jì)數(shù)器的控制寄存器,字節(jié)地址為88H。 包含INT0,INT1,T0 及 T1的中斷標(biāo)志。 (1)T0和T1的溢出中斷請求標(biāo)志位TF1和TF0 (2)外部中斷請求標(biāo)志位IE1與IE0。,各標(biāo)志位的功能: (1)IT0選擇外中斷請求0為跳沿觸發(fā)方式還是電平觸發(fā)方式: IT0=0,為電平觸發(fā)方式。 IT0=1,為跳沿觸發(fā)方式。 可由軟件置“1”或清“0”。 (2)IE0外部中斷請求0的中斷請求標(biāo)志位。 IE0=0,無中斷請求。 IE0=1,外部中斷0有中斷請求。當(dāng)CPU響應(yīng)該中斷,轉(zhuǎn)向中斷服務(wù)程序時(shí),由硬件清“0”IE0。 (3)IT1外部中斷請求1為跳沿觸發(fā)方式還是電平觸發(fā)方式,意義與IT0類似。 (4)IE1外部中斷請求1的中斷請求標(biāo)志位,意義與IE0類似。,(5)TF0T0溢出中斷請求標(biāo)志位。 T0計(jì)數(shù)后,溢出時(shí),由硬件置“1”TF0,向CPU申請中斷,CPU響應(yīng)TF0中斷時(shí),硬件自動(dòng)清“0”TF0,TF0也可由軟件清0。 (6)TF1T1的溢出中斷請求標(biāo)志位,功能和TF0類似。 TR1、TR0 2個(gè)位與中斷無關(guān)。 當(dāng)MCS-51復(fù)位后,TCON被清0,則CPU關(guān)中斷,所有中斷請求被禁止。,SCON為串行口控制寄存器,字節(jié)地址為98H。串行口的發(fā)送中斷和接收中斷的中斷請求標(biāo)志TI和RI,格式如下: 各標(biāo)志位的功能: (1)TI發(fā)送中斷請求標(biāo)志位。串口每發(fā)送完一幀串行數(shù)據(jù)后,硬件自動(dòng)置“1”TI。響應(yīng)中斷后,必須在中斷服務(wù)程序中用軟件對TI標(biāo)志清“0”。 (2)RI接收中斷請求標(biāo)志位。串口接收完一個(gè)數(shù)據(jù)幀,硬件自動(dòng)置“1”RI標(biāo)志。響應(yīng)中斷后,必須在中斷服務(wù)程序中用軟件對RI標(biāo)志清“0”。,5.1.4 中斷控制 1 中斷允許寄存器IE CPU對中斷源的開放或屏蔽,由片內(nèi)的中斷允許寄存器IE控制。字節(jié)地址A8H,可位尋址。格式如下: IE寄存器中各位設(shè)置: 為0時(shí),禁止中斷;為 1時(shí),允許中斷。 系統(tǒng)復(fù)位后IE寄存器中各位均為0,即此時(shí)禁止所有中斷。 MCS-51復(fù)位后,IE清0,所有中斷請求被禁止。 若使某一個(gè)中斷源被允許中斷,除了IE相應(yīng)的位的被置“1” ,還必須使EA位=1。,IE對中斷的開放和關(guān)閉為兩級控制 總的開關(guān)中斷控制位EA(IE.7位): EA=0,所有中斷請求被屏蔽。 EA=1,CPU開放中斷,但五個(gè)中斷源的中斷請求是否允許,還要由IE中的5個(gè)中斷請求允許控制位決定。 IE中各位的功能如下: (1)EA:中斷允許總控制位 0:CPU屏蔽所有的中斷請求(CPU關(guān)中斷); 1:CPU開放所有中斷(CPU開中斷)。 (2)ES:串行口中斷允許位 0:禁止串行口中斷; 1:允許串行口中斷。,(3)ET1:定時(shí)器/計(jì)數(shù)器T1的溢出中斷允許位 0:禁止T1溢出中斷; 1:允許T1溢出中斷。 (4)EX1:外部中斷1中斷允許位 0:禁止外部中斷1中斷; 1:允許外部中斷1中斷。 (5)ET0:定時(shí)器/計(jì)數(shù)器T0的溢出中斷允許位 0:禁止T0溢出中斷; 1:允許T0溢出中斷。 (6)EX0:外部中斷0中斷允許位。 0:禁止外部中斷0中斷; 1:允許外部中斷0中斷。,改變IE的內(nèi)容,可由位操作指令來實(shí)現(xiàn),即: SETB bit; CLR bit。 例1 若允許片內(nèi)2個(gè)定時(shí)器/計(jì)數(shù)器中斷,禁止其它中斷源的中斷請求。編寫設(shè)置IE的相應(yīng)程序段 (1)用位操作指令來編寫如下程序段: CLR ES ;禁止串行口中斷 CLR EX1 ;禁止外部中斷1中斷 CLR EX0 ;禁止外部中斷0中斷 SETB ET0 ;允許定時(shí)器/計(jì)數(shù)器T0中斷 SETB ET1 ;允許定時(shí)器/計(jì)數(shù)器T1中斷 SETB EA ;CPU開中斷,(2)用字節(jié)操作指令來編寫: MOV IE,#8AH 或者用: MOV 0A8H,#8AH ;A8H為IE寄存器字節(jié)地址,對同時(shí)發(fā)生多個(gè)中斷申請時(shí): 不同優(yōu)先級的中斷同時(shí)申請(很難遇到) 先高后低 相同優(yōu)先級的中斷同時(shí)申請(很難遇到) 按序執(zhí)行 正處理低優(yōu)先級中斷又接到高級別中斷 高打斷低 正處理高優(yōu)先級中斷又接到低級別中斷 高不理低,優(yōu)先級的控制處理原則,2 中斷優(yōu)先級寄存器IP,中斷優(yōu)先原則:(概括為四句話) 1、低級不打斷高級 2、高級不睬低級 3、同級不能打斷 4、同級、同時(shí)中斷,事先約定。,CPU同時(shí)接收到幾個(gè)中斷時(shí),首先響應(yīng)優(yōu)先級別最高的中斷請求。 正在進(jìn)行的中斷過程不能被新的同級或低優(yōu)先級的中斷請求所中斷。 正在進(jìn)行的低優(yōu)先級中斷服務(wù),能被高優(yōu)先級中斷請求所中斷。這稱之為“中斷嵌套”。,優(yōu)先級對中斷響應(yīng)的影響,事件1,事件2,子程序2,子程序1,中斷嵌套的概念:,主程序,中斷,中斷,若CPU正在執(zhí)行高優(yōu)先級的中斷,則不能被任何中斷源所中斷。 中斷優(yōu)先級寄存器IP,其字節(jié)地址為B8H。 IP各個(gè)位的含義: (1)PS串行口中斷優(yōu)先級控制位 1:高優(yōu)先級中斷; 0:低優(yōu)先級中斷。 (2)PT1定時(shí)器T1中斷優(yōu)先級控制位 1:高優(yōu)先級中斷; 0:低優(yōu)先級中斷。,(3)PX1外部中斷1中斷優(yōu)先級控制位 1:高優(yōu)先級中斷; 0:低優(yōu)先級中斷。 (4)PT0定時(shí)器T0中斷優(yōu)先級控制位 1:高優(yōu)先級中斷; 0:低優(yōu)先級中斷。 (5)PX0外部中斷0中斷優(yōu)先級控制位 1:高優(yōu)先級中斷; 0:低優(yōu)先級中斷 由軟件可改變各中斷源的中斷優(yōu)先級。 系統(tǒng)復(fù)位后IP寄存器中各位均為0,即此時(shí)全部設(shè)定為低中斷優(yōu)先級。,中斷優(yōu)先級控制,除了中斷優(yōu)先級控制寄存器之外,還有兩個(gè)不可尋址的“優(yōu)先級激活觸發(fā)器”: 一個(gè)用來指示某高優(yōu)先級的中斷正在執(zhí)行,所有后來的中斷均被阻止。 另一個(gè)用來指示某低優(yōu)先級的中斷正在執(zhí)行,所有同級中斷都被阻止,但不阻斷高優(yōu)先級的中斷請求。 在中斷執(zhí)行過程中,高中斷優(yōu)先級可以中斷低中斷優(yōu)先級的中斷過程。但是若在中斷服務(wù)程序中,關(guān)掉所有中斷(CLR EA)或關(guān)掉部分中斷時(shí)除外。 在同時(shí)收到幾個(gè)同一優(yōu)先級的中斷請求時(shí),優(yōu)先響應(yīng)哪一個(gè)中斷,取決于內(nèi)部的查詢順序。查詢順序如下:,中斷源 中斷級別 外部中斷0 最高 T0溢出中斷 外部中斷1 T1溢出中斷 串行口中斷 最低 MCS-51是一個(gè)二級中斷系統(tǒng)。但是通過軟件可以模仿第三優(yōu)先級。,例2 設(shè)置IP寄存器的初始值,使2個(gè)外中斷請求為高優(yōu)先級,其它中斷請求為低優(yōu)先級。 (1)用位操作指令 SETB PX0 ;2個(gè)外中斷為高優(yōu)先級 SETB PX1 CLR PS ;串口為低優(yōu)先級中斷 CLR PT0 ;2個(gè)定時(shí)器/計(jì)數(shù)器低優(yōu)先級中斷 CLR PT1 (2)用字節(jié)操作指令 MOV IP,#05H 或: MOV 0B8H,#05H ;B8H為IP寄存器的字節(jié)地址,5.1.5 響應(yīng)中斷請求的條件 一個(gè)中斷請求被響應(yīng),需滿足以下必要條件: (1)IE寄存器中的中斷總允許位EA=1。 (2)該中斷源發(fā)出中斷請求,即該中斷源對應(yīng)的中斷請求標(biāo)志為“1”。 (3)該中斷源的中斷允許位=1,即該中斷沒有被屏蔽。 (4)無同級或更高級中斷正在被服務(wù)。 中斷響應(yīng)的主要過程:首先由硬件自動(dòng)生成一條長調(diào)用指令: LCALL addr16 接著就由CPU執(zhí)行該指令,將PC的內(nèi)容壓入堆棧以保護(hù)斷點(diǎn),再將中斷入口地址裝入PC。各中斷源服務(wù)程序的入口地址固定。,中斷響應(yīng)是有條件的,遇到下列三種情況之一時(shí),中斷響應(yīng)被封鎖: (1)CPU正在處理同級的或更高優(yōu)先級的中斷。 (2)所查詢的機(jī)器周期不是所當(dāng)前正在執(zhí)行指令的最后一個(gè)機(jī)器周期。只有在當(dāng)前指令執(zhí)行完畢后,才能進(jìn)行中斷響應(yīng)。 (3)正在執(zhí)行的指令是RETI或是訪問IE或IP的指令。需要再去執(zhí)行完一條指令,才能響應(yīng)新的中斷請求。 如果存在上述三種情況之一,CPU將丟棄中斷查詢結(jié)果,不能對中斷進(jìn)行響應(yīng)。,5.1.6 外部中斷的響應(yīng)時(shí)間 外部中斷的最短的響應(yīng)時(shí)間為3個(gè)機(jī)器周期: (1)中斷請求標(biāo)志位查詢占1個(gè)機(jī)器周期。 (2)子程序調(diào)用指令LCALL轉(zhuǎn)到相應(yīng)的中斷服務(wù)程序入口,需2個(gè)機(jī)器周期。 外部中斷響應(yīng)的最長的響應(yīng)時(shí)間為8個(gè)機(jī)器周期: (1)發(fā)生在CPU進(jìn)行中斷標(biāo)志查詢時(shí),剛好是開始執(zhí)行RETI或是訪問IE或IP的指令,則需把當(dāng)前指令執(zhí)行完再繼續(xù)執(zhí)行一條指令后,才能響應(yīng)中斷,當(dāng)前指令執(zhí)行完最長需2個(gè)機(jī)器周期。,(2)接著再執(zhí)行一條指令,按最長指令(乘法指令MUL和除法指令DIV)來算,也只有4個(gè)機(jī)器周期。 (3)加上硬件子程序調(diào)用指令LCALL的執(zhí)行,需要2個(gè)機(jī)器周期。 所以,外部中斷響應(yīng)最長時(shí)間為8個(gè)機(jī)器周期。 如果中斷請求被前面所列三個(gè)條件之一所阻止,不能產(chǎn)生硬件長調(diào)用LCALL指令,那么所需的響應(yīng)時(shí)間就更長些。如果已在處理同級或更高級中斷,響應(yīng)時(shí)間無法計(jì)算。 在一個(gè)單一中斷的系統(tǒng)里,MCS-51單片機(jī)對外部中斷請求的響應(yīng)的時(shí)間總是在38個(gè)機(jī)器周期之間。,5.1.7 外部中斷的觸發(fā)方式選擇 外部中斷有兩種觸發(fā)方式:電平觸發(fā)方式和跳沿觸發(fā)方式。 這兩種觸發(fā)方式可由設(shè)置TCON寄存器中的IT1(TCON2)、 IT0(TCON0)中斷申請觸發(fā)方式控制位來選擇:設(shè)置IT1、IT00,選擇電平觸發(fā)方式;設(shè)置IT1、IT0l,選擇跳變觸發(fā)方式,即當(dāng)INT0,INT1引腳檢測到前一個(gè)機(jī)器周期為高電平、后一個(gè)機(jī)器周期為低電平時(shí),則置位IE0、IE1且向CPU申請中斷。 由于CPU每個(gè)機(jī)器周期采樣INT0,INT1引腳信號一次,為確保中斷請求被采樣到,外部中斷源送INT0,INT1引腳的中斷請求信號應(yīng)至少保持一個(gè)機(jī)器周期。,1 電平觸發(fā)方式 CPU在每個(gè)機(jī)器周期采樣到的外部中斷輸入線的電平。外部中斷源送INT0,INT1引腳請求中斷的低電平有效信號,應(yīng)一直保持到CPU響應(yīng)中斷為止。否則CPU返回主程序后會(huì)再次響應(yīng)中斷。 適于外中斷以低電平輸入且中斷服務(wù)程序能清除外部中斷請求(即外部中斷輸入電平又變?yōu)楦唠娖剑┑那闆r。 2 跳沿觸發(fā)方式 連續(xù)兩次采樣,一個(gè)機(jī)器周期采樣到外部中斷輸入為高,下一個(gè)機(jī)器周期采樣為低,則置“1”中斷請求標(biāo)志,直到CPU響應(yīng)此中斷時(shí),該標(biāo)志才清0。這樣不會(huì)丟失中斷,但輸入的負(fù)脈沖寬度至少保持1個(gè)機(jī)器周期。,5.1.8 中斷請求的撤消 CPU響應(yīng)中斷請求,轉(zhuǎn)向中斷服務(wù)程序執(zhí)行,在其執(zhí)行中斷返回指令(RETI)之前,中斷請求信號必須撤除,否則將會(huì)再一次引起中斷而出錯(cuò)。 中斷請求撤除的方式有三種,即: 1 由單片微機(jī)內(nèi)部硬件自動(dòng)復(fù)位(定時(shí)器/計(jì)數(shù)器中斷請求的撤消 )。 對于定時(shí)器計(jì)數(shù)器T0、T1 的溢出中斷和采用跳變觸發(fā)方式的外部中斷請求,在CPU響應(yīng)中斷后,由內(nèi)部硬件自動(dòng)清除中斷標(biāo)志TF0和TF1、IE0和IE1,而自動(dòng)撤除中斷請求。(硬件置位,硬件清除)。,2采用外加 硬件結(jié)合軟件清除中斷請求(外部中斷請求的撤消) (1)跳沿方式外部中斷請求的撤消是自動(dòng)撤消的。 (2)電平方式外部中斷請求的撤消: 對于采用電平觸發(fā)方式的外部中斷請求,中斷標(biāo)志的撤消是自動(dòng)的,但中斷請求信號的低電平可能繼續(xù)存在,在以后機(jī)器周期采樣時(shí)又會(huì)把已清“0”的IE0、IE1標(biāo)志重新置“1”,再次申請中斷。為保證在CPU響應(yīng)中斷后、執(zhí)行返回指令前,撤除中斷請求,必須在中斷響應(yīng)后把中斷請求信號引腳從低電平強(qiáng)制改變?yōu)楦唠娖?。可在系統(tǒng)中加入如圖所示電路。,從上圖中可看到,用D觸發(fā)器鎖存外部中斷請求低電平,并通過觸發(fā)器輸出端Q送或,所以D觸發(fā)器對外部中斷請求沒有影響。但在中斷響應(yīng)后,為了撤消低電平引起的中斷請求,可利用D觸發(fā)器的直接置位端SD來實(shí)現(xiàn)。采用80C51的一根I/O口線來控制SD端。只要在SD端輸入一個(gè)負(fù)脈沖即可使D觸發(fā)器置“1”,從而撤消了低電平的中斷請求信號。(硬件置位,硬、軟件結(jié)合清除) 。只要P1.0端輸出一個(gè)負(fù)脈沖就可以使D觸發(fā)器置“1”,從而撤消了低電平的中斷請求信號。 所需的負(fù)脈沖可通過在中斷服務(wù)程序中增加如下兩條指令得到: ORL P1,#01H ;P1.0為“1”,SD無效 ANL P1,#0FEH ;P1.0為“0”,Q置1(SD為直接置位端,低 電平有效) 使P1.0輸出一個(gè)負(fù)脈沖,其持續(xù)時(shí)間為二個(gè)機(jī)器周期,足以使D觸發(fā)器置位,撤除低電平中斷請求。第二條指令是必要的,否則D觸發(fā)器的Q端始終輸出“1”,無法再接受外部中斷請求。 電平方式的外部中斷請求信號的完全撤消,是通過軟硬件相結(jié)合的方法來實(shí)現(xiàn)的。,3應(yīng)用軟件清除相應(yīng)標(biāo)志(串行口中斷請求的撤消) 對于串行接收發(fā)送中斷請求和80C52中的定時(shí)器計(jì)數(shù)器T2的溢出和捕獲中斷請求,在CPU響應(yīng)中斷后,必須在中斷服務(wù)程序中應(yīng)用軟件清除RI、TI、TF2和 EXF2這些中斷標(biāo)志,才能撤除中斷。(硬件置位,軟件清除) 。 響應(yīng)串行口的中斷后,CPU無法知道是接收中斷還是發(fā)送中斷,還需測試這兩個(gè)中斷標(biāo)志位的狀態(tài),以判定是接收操作還是發(fā)送操作,然后才能清除。所以串行口中斷請求的撤消只能用軟件清除 CLR TI ;清TI標(biāo)志位 CLR RI ;清RI標(biāo)志位,5.1.9 中斷服務(wù)程序的設(shè)計(jì) 在MCS-51單片微機(jī)中,需要用軟件對以下5個(gè)內(nèi)容進(jìn)行設(shè)置: 中斷服務(wù)程序入口地址的設(shè)定。 某一中斷源中斷請求的允許與禁止。 對于外部中斷請求,還需進(jìn)行觸發(fā)方式的設(shè)定。 各中斷源優(yōu)先級別的設(shè)定。 CPU開中斷與關(guān)中斷。 中斷程序一般包含中斷控制程序和中斷服務(wù)程序兩部分。 中斷控制程序即中斷初始化程序,一般不獨(dú)立編寫,而是包含在主程序中,根據(jù)上述的5點(diǎn)通過編寫幾條指令來實(shí)現(xiàn)。,一、中斷服務(wù)程序設(shè)計(jì)的任務(wù) 基本任務(wù): (1)設(shè)置中斷允許控制寄存器IE。 (2)設(shè)置中斷優(yōu)先級寄存器IP。 (3)對外中斷源,是采用電平觸發(fā)還是跳沿觸發(fā)。 (4)編寫中斷服務(wù)程序,處理中斷請求。 前2條一般放在主程序的初始化程序段中。 例3 假設(shè)允許外部中斷0中斷,并設(shè)定它為高級中斷,其它中斷源為低級中斷,采用跳沿觸發(fā)方式。在主程序中編寫如下程序段: SETB EA ;CPU開中斷 SETB ET0 ;允許外中斷0產(chǎn)生中斷 SETB PX0 ;外中斷0為高級中斷 SETB IT0 ;外中斷0為跳沿觸發(fā)方式,二、采用中斷時(shí)的主程序結(jié)構(gòu) 常用的主程序結(jié)構(gòu)如下: ORG 0000H LJMP MAIN ORG 中斷入口地址 LJMP INT ORG XXXXH MAIN:主 程 序 INT:中斷服務(wù)程序 中斷服務(wù)程序是一種為中斷源的特定事態(tài)要求服務(wù)的獨(dú)立程序段,以中斷返回指令RETI結(jié)束。在程序存儲(chǔ)器中設(shè)置有六個(gè)固定的單元作為中斷矢量,即是0003H、000BH、0013H、00lBH、0023H及002BH單元。 一般將中斷服務(wù)程序存放在程序存儲(chǔ)器的其它部位,而在中斷矢量中安排一條無條件轉(zhuǎn)移指令。這樣,當(dāng)CPU響應(yīng)中斷請求后,轉(zhuǎn)入中斷矢量執(zhí)行無條件轉(zhuǎn)移指令,再轉(zhuǎn)向?qū)嶋H的中斷服務(wù)子程序的入口。,三、中斷服務(wù)程序的流程 中斷響應(yīng)很突出的一點(diǎn)是它的隨機(jī)性。下面針對中斷服務(wù)程序在編寫中的幾個(gè)問題進(jìn)行說明。 保護(hù)斷點(diǎn)和現(xiàn)場、恢復(fù)斷點(diǎn)和現(xiàn)場 中斷服務(wù)程序和子程序一樣,在調(diào)用和返回時(shí),也有一個(gè)保護(hù)斷點(diǎn)和現(xiàn)場、恢復(fù)斷點(diǎn)和現(xiàn)場的問題。 在中斷響應(yīng)過程中,斷點(diǎn)的保護(hù)主要由硬件電路自動(dòng)實(shí)現(xiàn)。它將斷點(diǎn)壓入堆棧,再將中斷服務(wù)程序的入口地址送入程序計(jì)數(shù)器PC,使程序轉(zhuǎn)向中斷服務(wù)程序,即為中斷源的請求服務(wù)。,三、中斷服務(wù)程序的流程 所謂現(xiàn)場是指中斷發(fā)生時(shí)單片微機(jī)中存儲(chǔ)單元、寄存器、特殊功能寄存器中的數(shù)據(jù)或標(biāo)志位等。在MCS-51中,現(xiàn)場一般包括累加器 A、工作寄存器 R0R7以及程序狀態(tài)字PSW等。保護(hù)的方法可以有以下幾種: 通過堆棧操作指令PUSH direct; 通過工作寄存器區(qū)的切換; 通過單片微機(jī)內(nèi)部存儲(chǔ)器單元暫存。 現(xiàn)場保護(hù)一定要位于中斷服務(wù)程序的前面。 在結(jié)束中斷服務(wù)程序返回?cái)帱c(diǎn)處之前要恢復(fù)現(xiàn)場,與保護(hù)現(xiàn)場的方法相對應(yīng)。而恢復(fù)斷點(diǎn)也是由硬件電路自動(dòng)實(shí)現(xiàn)的,中斷服務(wù)程序的最后一條指令必須是RETI指令。,三、中斷服務(wù)程序的流程 對中斷的控制 MCS-51單片微機(jī)具有多級中斷功能(即多重中斷嵌套),為了不至于在保護(hù)現(xiàn)場或恢復(fù)現(xiàn)場時(shí),由于CPU響應(yīng)其它中斷請求,而使現(xiàn)場破壞。一般規(guī)定,在保護(hù)和恢復(fù)現(xiàn)場時(shí),CPU不響應(yīng)外界的中斷請求,即關(guān)中斷。因此,在編寫程序時(shí),應(yīng)在保護(hù)現(xiàn)場和恢復(fù)現(xiàn)場之前,關(guān)閉CPU中斷;在保護(hù)現(xiàn)場和恢復(fù)現(xiàn)場之后,再根據(jù)需要使CPU開中斷。 對于重要中斷,不允許被其它中斷所嵌套。除了設(shè)置中斷優(yōu)先級外,還可以采用關(guān)中斷的方法,徹底屏蔽其它中斷請求,待中斷處理完之后再打開中斷系統(tǒng)。,例4 根據(jù)上圖的中斷服務(wù)程序流程,編出中斷服務(wù)程序。假設(shè),現(xiàn)場保護(hù)只需將PSW和A的內(nèi)容壓入堆棧中保護(hù)。典型的中斷服務(wù)程序如下: INT: CLR EA ;CPU關(guān)中斷 PUSH PSW ;現(xiàn)場保護(hù) PUSH ACC ; SETB EA ;CPU開中斷 中斷處理程序段 CLR EA ;CPU關(guān)中斷 POP ACC ;現(xiàn)場恢復(fù) POP PSW SETB EA ;CPU開中斷 RETI ;中斷返回,恢復(fù)斷點(diǎn),幾點(diǎn)說明: (1)現(xiàn)場保護(hù)僅涉及到PSW和A的內(nèi)容,如還有其它需保護(hù)的內(nèi)容,只需要在相應(yīng)的位置再加幾條PUSH和POP指令即可。 (2) “中斷處理程序段”,應(yīng)根據(jù)任務(wù)的具體要求,來編寫。 (3)如果本中斷服務(wù)程序不允許被其它的中斷所中斷??蓪ⅰ爸袛嗵幚沓绦蚨巍鼻昂蟮摹癝ETB EA”和“CLR EA”兩條指令去掉。 (4)中斷服務(wù)程序的最后一條指令必須是返回指令RETI。,中斷應(yīng)用前后要做的幾項(xiàng)工作,中斷前 開中斷允許:必須 選擇優(yōu)先級:根據(jù)需要選擇,可有/可無 設(shè)置控制位:INTx觸發(fā)方式(ITx) TxTCON,TMOD,TRx,初值 RI/TISCON,REN,RB8,TB8,中斷后 進(jìn)入中斷服務(wù)后:保護(hù)現(xiàn)場,關(guān)中斷, 退出中斷服務(wù)前:恢復(fù)現(xiàn)場,開中斷,設(shè)Tx的初 值,清TI/RI, 中斷服務(wù)程序的最后一條指令必是 RETI,回顧,中斷源 中斷申請 開放中斷 保護(hù)現(xiàn)場 中斷服務(wù) 恢復(fù)現(xiàn)場 中斷返回,中斷涉及的幾個(gè)環(huán)節(jié)與應(yīng)用步驟,中斷應(yīng)用的步驟: 、即中斷向量的指定設(shè)置; 、中斷相關(guān)寄存器的設(shè)定;包括開啟中斷開關(guān)(IE寄存器)、中斷優(yōu)先級的設(shè)定(IP寄存器)、中斷信號的設(shè)定(TCON寄存器); 、中斷子程序設(shè)計(jì)。子程序的最后指令是 “RETI”。,回顧,中斷處理程序格式,INTT0: PUSH ACC PUSH DPH PUSH DPL PUSH PSW 中斷源服務(wù) POP PSW POP DPL POP DPH POP ACC RETI,保護(hù)現(xiàn)場,恢復(fù)現(xiàn)場,回顧, 中斷請求: 定時(shí)和外中斷控制寄存器TCON; 串行控制寄存器SCON; 中斷使能控制寄存器IE; 中斷優(yōu)先級控制寄存器IP。,MCS-51單片機(jī)中涉及中斷控制的有3個(gè)方面4個(gè)特殊功能寄存器:,回顧,中斷設(shè)定方法,IE寄存器、IP寄存器、TCON寄存器、SCON寄存器的設(shè)定,可以利用MOV指令、SETB指令、CLR指令來實(shí)現(xiàn)。,、MOV IE,#10000101B 、SETB IE.7 SETB IE.2 SETB IE.0,例:若開啟“總開關(guān)”、“INT0開關(guān)”、“INT1開關(guān)”。,、MOV 0A8H,#85H 、SETB EA SETB EX0 SETB EX1,回顧,例:若要把“INT1”中斷的優(yōu)先級提高。,、MOV IP,#00000100B 、SETB IP.2 、MOV 0B8H,#04H 、SETB PX1,例:若想“INT1”中斷擬采用負(fù)緣觸發(fā)的信號。,、MOV Tcon,#00000100B 、SETB Tcon.2 、MOV 088H,#04H 、SETB IT1,“中斷子程序”就是一種子程序,其與一般子程序的最大差異是其的返回指令是“RETI”,而不是“RET”。,回顧,中斷應(yīng)用實(shí)例:中斷_int0之單向,單片機(jī)的P2口接個(gè)LED發(fā)光二極管,P3.2引腳保持高電平,另外接一按鈕開關(guān)。主程序運(yùn)行時(shí)LED同時(shí)閃爍,若按開關(guān),進(jìn)入中斷狀態(tài)單燈左移3次。,回顧,中斷應(yīng)用實(shí)例:中斷_int0之單向,單片機(jī)的P2口接個(gè)LED發(fā)光二極管,P3.2引腳保持高電平,另外接一按鈕開關(guān)。主程序運(yùn)行時(shí)LED同時(shí)閃爍,若按開關(guān),進(jìn)入中斷狀態(tài)單燈左移3次。 ;一開始即允許所有中斷產(chǎn)生,并特意指明啟用INT0中斷 ORG 0000H ;源程序從0地址開始 JMP START ;跳過中斷向量 ORG 0003H ;INT0中斷向量 JMP INT_0 ;執(zhí)行INT_0中斷子程序 ;= START: MOV IE,#10000001B ;打開總開關(guān)與EX0分路開關(guān) MOV SP,#30H ;設(shè)定堆棧地址 SETB IT0 ;采用負(fù)觸發(fā)信號,回顧,中斷應(yīng)用實(shí)例:中斷_int0之單向,MOV A,#0 ;將ACC清零 LOOP: MOV P2,A ;輸出到LED CALL DELAY ;調(diào)用延時(shí)子程序 CPL A ;將A的內(nèi)容反相 JMP LOOP ;=INT0中斷子程序開始= INT_0: PUSH ACC ;累加器入出棧時(shí)不能用簡稱A PUSH PSW ;將程序狀態(tài)控制字入棧 SETB RS0 ;切換到RB1,回顧,中斷應(yīng)用實(shí)例:中斷_int0之單向,;=外層循環(huán)開始 MOV R0,#3 ;設(shè)定三次循環(huán) INT_LOOP0: ;=第二層循環(huán)1定義開始 MOV A,#0FEH ;單燈左移初始值 MOV R1,#8 ;設(shè)定八次左移 INT_LOOP1: MOV P2,A ;輸出LED 到P2口 CALL DELAY ;調(diào)用延時(shí)子程序 RL A ;將A的內(nèi)容左移 DJNZ R1,INT_LOOP1 ;=第二層循環(huán)1結(jié)束,中斷應(yīng)用實(shí)例:中斷_int0之單向,;=第二層循環(huán)2定義開始 MOV A,#07FH ;單燈右移初始值 MOV R1,#8 ;設(shè)定八次右移 INT_LOOP2: MOV P2,A ;輸出LED 到P2口 CALL DELAY ;調(diào)用延時(shí)子程序 RR A ;將A的內(nèi)容右移 DJNZ R1,INT_LOOP2 ;=第二層循環(huán)2結(jié)束 DJNZ R0,INT_LOOP0 ;=外層循環(huán)結(jié)束 POP PSW,中斷應(yīng)用實(shí)例:中斷_int0之單向,POP ACC ;累加器入出棧時(shí)不能用簡稱A RETI ;返加主程序 ;= ;INT0中斷子程序結(jié)束 ;= DELAY: MOV R7,#200 D1: MOV R6,#250 DJNZ R6,$ DJNZ R7,D1 RET END,中斷應(yīng)用實(shí)例:中斷_int0之單向,該程序的C51代碼如下: #include #include sbit k1=P32; void delay_ms(unsigned int xms); /ms級延時(shí)子程序 void key_scan() interrupt 0 /使用了外部中斷0的鍵盤掃描子函數(shù)。 int i=0,j=0,num; if(k1=0) /有鍵按下嗎?(k1=0 ?) delay_ms(10); /延時(shí)消抖,中斷應(yīng)用實(shí)例:中斷_int0之單向,if(k1=0) /確實(shí)是否有鍵按下 for(j=0;j3;j+) num=0xfe; for(i=0;i8;i+) P2=num; delay_ms(600); num=_crol_(num,1); num=0x7f; for(i=0;i8;i+),中斷應(yīng)用實(shí)例:中斷_int0之單向, P2=num; delay_ms(600); num=_cror_(num,1); P2=0x0; delay_ms(600); while(!k1); /等待按鍵放開 void main() ,中斷應(yīng)用實(shí)例:中斷_int0之單向,TCON=0x01; /打開外部中斷0,并設(shè)置為下降沿觸發(fā) IE=0x81; /開總中斷 while(1) P2=0xff; delay_ms(600); P2=0x0; delay_ms(600); ,中斷應(yīng)用實(shí)例:中斷_int0之單向,void delay_ms(unsigned int xms) /ms級延時(shí)子程序 unsigned int x,y; for(x=xms;x0;x-) for(y=130;y0;y-); ,5.2 51單片機(jī)的定時(shí)計(jì)數(shù)器 我們通常采用以下三種方法來實(shí)現(xiàn)定時(shí)或計(jì)數(shù): 1、硬件定時(shí)(采用時(shí)基電路定時(shí)) 硬件定時(shí)是指由硬件電路來實(shí)現(xiàn)定時(shí)的功能 。 例如采用555電路,外接必要的元器件(電阻和電容),即可構(gòu)成硬件定時(shí)電路。但在硬件連接好以后,定時(shí)值與定時(shí)范圍不能由軟件進(jìn)行控制和修改,即不可編程,且定時(shí)時(shí)間容易漂移。 2、軟件定時(shí) 軟件定時(shí)是執(zhí)行一段循環(huán)程序來進(jìn)行時(shí)間延時(shí),優(yōu)點(diǎn)是無額外的硬件開銷,時(shí)間比較精確。但占用了CPU的時(shí)間,降低了CPU的利用率。例如延時(shí)程序。 3、可編程定時(shí)/計(jì)數(shù)器 最方便的辦法是利用單片機(jī)內(nèi)部的定時(shí)器/計(jì)數(shù)器。結(jié)合了軟件定時(shí)精確和硬件定時(shí)電路獨(dú)立的特點(diǎn)。由于純軟件要占用CPU,而純硬件又欠靈活。 定時(shí)/計(jì)數(shù)器是單片機(jī)系統(tǒng)一個(gè)重要的部件,其工作方式靈活、編程簡單、使用方便,可用來實(shí)現(xiàn)定時(shí)控制、延時(shí)、頻率測量、脈寬測量、信號發(fā)生、信號檢測等。此外,定時(shí)/計(jì)數(shù)器還可作為串行通信中波特率發(fā)生器。,5.2 51單片機(jī)的定時(shí)計(jì)數(shù)器 T0和T1有都具有以下2種工作模式: (1)計(jì)數(shù)器工作模式 對外來脈沖進(jìn)行計(jì)數(shù),T0(P3.4)和T1(P3.5)為計(jì)數(shù)脈沖輸入端,等計(jì)數(shù)輸入引腳的脈沖發(fā)生負(fù)跳變時(shí),計(jì)數(shù)器加1。 定時(shí)/計(jì)數(shù)器作為計(jì)數(shù)器時(shí),外部事件脈沖必須從規(guī)定的引腳輸入。且外部脈沖的最高頻率不能超過時(shí)鐘頻率的1/24。 (2)定時(shí)器工作模式 通過計(jì)數(shù)片內(nèi)脈沖來實(shí)現(xiàn)定時(shí)功能:每個(gè)機(jī)器周期產(chǎn)生1個(gè)計(jì)數(shù)脈沖,即每經(jīng)過1個(gè)機(jī)器周期的實(shí)踐,計(jì)數(shù)器加1。 MCS-51的兩個(gè)可編程的定時(shí)器/計(jì)數(shù)器均有4種工作方式(方式0-方式3)。 用戶通過對相應(yīng)的特殊功能寄存器編程,可以選擇定時(shí)器/計(jì)數(shù)器的2種工作模式和4種工作方式。,71,定時(shí)器/計(jì)數(shù)器的工作原理概述,計(jì)數(shù)器輸入的計(jì)數(shù)脈沖源 1、系統(tǒng)的時(shí)鐘振蕩器輸出脈沖經(jīng)12分頻后產(chǎn)生; 2、T0或T1引腳輸入的外部脈沖源。 計(jì)數(shù)過程 每來一個(gè)脈沖計(jì)數(shù)器加1,當(dāng)加到計(jì)數(shù)器為全1(即FFFFH)時(shí),再輸入一個(gè)脈沖就使計(jì)數(shù)器回零,且計(jì)數(shù)器的溢出使TCON中TF0或TF1置1,向CPU發(fā)出中斷請求(定時(shí)器/計(jì)數(shù)器中斷允許時(shí))。如果定時(shí)器/計(jì)數(shù)器工作于定時(shí)模式,則表示定時(shí)時(shí)間已到;如果工作于計(jì)數(shù)模式,則表示計(jì)數(shù)值已滿。,設(shè)置為定時(shí)應(yīng)用時(shí) 用作定時(shí)器:此時(shí)設(shè)置為定時(shí)器模式,加1計(jì)數(shù)器是對內(nèi)部機(jī)器周期計(jì)數(shù)(1個(gè)機(jī)器周期等于12個(gè)振蕩周期,即計(jì)數(shù)頻率為晶振頻率的1/12)。計(jì)數(shù)值N乘以機(jī)器周期Tcy就是定時(shí)時(shí)間t 。 設(shè)置為計(jì)數(shù)應(yīng)用時(shí) 用作計(jì)數(shù)器:此時(shí)設(shè)置為計(jì)數(shù)器模式,外部事件計(jì)數(shù)脈沖由T0(P3.4)或T1(P3.5)引腳輸入到計(jì)數(shù)器。每來一個(gè)外部脈沖,計(jì)數(shù)器加1。但單片機(jī)對外部脈沖有基本要求:脈沖的高低電平持續(xù)時(shí)間都必須大于1個(gè)機(jī)器周期。,定時(shí)與計(jì)數(shù)都是利用計(jì)數(shù)實(shí)現(xiàn)!,定時(shí)器/計(jì)數(shù)器的工作原理概述,5.2.1 定時(shí)器/計(jì)數(shù)器的結(jié)構(gòu) 定時(shí)器/計(jì)數(shù)器的實(shí)質(zhì)是加1計(jì)數(shù)器(16位),由高8位和低8位兩個(gè)寄存器組成:TH1(地址為8DH)、TL1(地址為8BH)和TH0(地址為8CH)、TL0(地址為8AH)寄存器。 復(fù)位后,所有這四個(gè)寄存器全部清零。 TMOD(工作方式寄存器):選擇定時(shí)器/計(jì)數(shù)器T0、T1的工作模式和工作方式。 TCON(定時(shí)器/計(jì)數(shù)器控制寄存器):控制T0、T1的啟動(dòng)和停止計(jì)數(shù),同時(shí)包含了T0、T1的狀態(tài)。 單片機(jī)復(fù)位時(shí),TMOD、TCON都清0。,5.2.1 定時(shí)器/計(jì)數(shù)器的結(jié)構(gòu),1 工作方式控制寄存器TMOD TMOD(工作方式寄存器):選擇定時(shí)器/計(jì)數(shù)器T0、T1的工作模式和工作方式,字節(jié)地址為89H,不能位尋址。 8位分為兩組,高4位控制T1,低4位控制T0。 (1)GATE門控位 0:以運(yùn)行控制位TRX(X=0,1)來啟動(dòng)定時(shí)器/計(jì)數(shù)器運(yùn)行。 1:用外中斷引腳(INT0*或INT1*)上的高電平和TRX兩個(gè)條件來啟動(dòng)定時(shí)器/計(jì)數(shù)器運(yùn)行。,(2)M1、M0工作方式選擇位 M1 M0 工 作 方 式 0 0 方式0,13位定時(shí)器/計(jì)數(shù)器。 0 1 方式1,16位定時(shí)器/計(jì)數(shù)器。 1 0 方式2,8位常數(shù)自動(dòng)重新裝載定時(shí)器/計(jì)數(shù)器 1 1 方式3,僅適用于T0,T0分成兩個(gè)8 位計(jì)數(shù)器,T1停止計(jì)數(shù)。 (3) C/T*計(jì)數(shù)器模式和定時(shí)器模式選擇位 0:定時(shí)器模式。計(jì)數(shù)輸入信號是內(nèi)部時(shí)鐘脈沖,每個(gè)機(jī)器周期使寄存器的值增1。每個(gè)機(jī)器周期等于12個(gè)振蕩周期,故計(jì)數(shù)速率為振蕩周期的112。 1:計(jì)數(shù)器模式。通過引腳T0(P3.4)和T1(P3.5)對外部信號進(jìn)行計(jì)數(shù)。在每個(gè)機(jī)器周期的S5P2期間,CPU采樣引腳的輸入電平。若前一機(jī)器周期采樣值為1,下一機(jī)器周期采樣值為0,則計(jì)數(shù)器增1,此后的機(jī)器周期S3P1期間,新的計(jì)數(shù)值裝入計(jì)數(shù)器。所以檢測一個(gè)1到0的跳變 需要兩個(gè)機(jī)器周期,故計(jì)數(shù)脈沖頻率不能高于振蕩脈沖頻率的124。,2 定時(shí)器/計(jì)數(shù)器控制寄存器TCON TCON(定時(shí)器/計(jì)數(shù)器控制寄存器):控制T0、T1的啟動(dòng)和停止計(jì)數(shù),同時(shí)包含了T0、T1的狀態(tài),字節(jié)地址為88H,位地址為88H8FH。 功能如下: (1) TF1、TF0計(jì)數(shù)溢出標(biāo)志位 當(dāng)計(jì)數(shù)器計(jì)數(shù)溢出時(shí),該位置1。使用查詢方式時(shí),此位作為狀態(tài)位供CPU查詢,但應(yīng)注意查詢有效后,應(yīng)以軟件方式及時(shí)將該位清0.使用中斷方式時(shí),此位作為中斷請求標(biāo)志位,進(jìn)入中斷服務(wù)子程序后,硬件自動(dòng)清0。 (2) TR1、TR0計(jì)數(shù)運(yùn)行控制位(由軟件置位或清零) 1:啟動(dòng)定時(shí)器/計(jì)數(shù)器工作 0:停止定時(shí)器/計(jì)數(shù)器工作,2 定時(shí)器/計(jì)數(shù)器控制寄存器TCON (3) TCON的低4位 與中斷有關(guān) IE1(TCON3)外部中斷1請求標(biāo)志位。 IE0(TCONI)外部中斷0請求標(biāo)志位。 IT1(TCON0)外部中斷1觸發(fā)類型選擇位。 IT0(TCON0)外部中斷0觸發(fā)類型選擇位。 復(fù)位后,TCON的所有位均清0。T0和T1均是關(guān)斷的。,查詢方式時(shí):關(guān)閉中斷,使用軟件查詢TF0/TF1 中斷方式時(shí):開放中斷,使用硬件自動(dòng)查詢TF0/TF1,計(jì)數(shù)器工作方式選擇,在精確定時(shí)采用該工作方式!,5.2.2 定時(shí)器/計(jì)數(shù)器的4種工作方式,定時(shí)器:對片內(nèi)機(jī)器時(shí)鐘(周期方波)進(jìn)行計(jì)數(shù) 計(jì)數(shù)器:對Tx引腳輸入的負(fù)脈沖進(jìn)行計(jì)數(shù),方式0為13位計(jì)數(shù),由TL0的低5位(高3位未用)和TH0的8位組成。TL0的低5位溢出時(shí)(TL0的低三位棄之不用)向TH0進(jìn)位,TH0溢出時(shí),置位TCON中的TF0標(biāo)志,向CPU發(fā)出中斷請求。,1 方式0,用它無益,不要記它!,C/T* 位決定工作模式: 0:開關(guān)打在上面,為定時(shí)器工作模式; 1:開關(guān)打在下面,為計(jì)數(shù)器工作模式,計(jì)數(shù)脈沖為P3.4、P3.5引腳上的外部輸入脈沖,當(dāng)引腳上發(fā)生負(fù)跳變時(shí),計(jì)數(shù)器加1。 GATE位:決定定時(shí)器/計(jì)數(shù)器的運(yùn)行取決于TRx一個(gè)條件還是TRx和INTx*引腳兩個(gè)條件。 (1)0:A點(diǎn)(見上圖)是否計(jì)數(shù),僅取決于TRx的狀態(tài)。 (2)1:B點(diǎn)電位由INTX*的輸入電平和TRX的狀態(tài)這兩個(gè)條件來確定。是否計(jì)數(shù)是由TRx和INTx*二個(gè)條件來控制的。,工作方式0_應(yīng)用分析,定時(shí)和計(jì)數(shù)的應(yīng)用 計(jì)數(shù)范圍:1213 計(jì)數(shù)計(jì)算公式:計(jì)數(shù)值213計(jì)數(shù)初值 機(jī)器周期(MC):=12/Fosc=12/時(shí)鐘頻率 定時(shí)范圍:1機(jī)器周期213機(jī)器周期 定時(shí)計(jì)算公式:定時(shí)時(shí)間(213定時(shí)初值)機(jī)器周期 如果晶振頻率為6MHz ,則最大定時(shí)時(shí)間為: 213121/6MHz214us16384us=16.384ms 如果晶振頻率為12MHz ,則最大定時(shí)時(shí)間為: 213121/12MHz213us=8192us=8.192ms,2 方式1,方式1的計(jì)數(shù)位數(shù)是16位,由TL0(TL1)作為低8位、TH0(TH1)作為高8位,組成了16位加1計(jì)數(shù)器 。,工作方式1(M1M0=01)經(jīng)常用到 方式1是16位計(jì)數(shù)結(jié)構(gòu)的工作方式,其計(jì)數(shù)器由TH0全部8位和TL0的全部8位構(gòu)成。其邏輯電路和工作情況與方式0完全相同,所不同的只是計(jì)數(shù) 器的位數(shù)。 MCS-51單片機(jī)之所以設(shè)置幾乎完全一 樣 的方式0和方式1,是出于與 MCS-48單片機(jī)兼容的要求。因?yàn)?,MCS48單片機(jī)的定時(shí)器/計(jì)數(shù)器是13位的計(jì)數(shù)結(jié)構(gòu)。,定時(shí)器T0工作方式1與工作方式0類同,差別在于其中的計(jì)數(shù)器的位數(shù)。工作方式0以13位計(jì)數(shù)器參與計(jì)數(shù),工作方式1則以16位計(jì)數(shù)器參與計(jì)數(shù)。,方式不用的原因,工作方式1_應(yīng)用分析,定時(shí)和計(jì)數(shù)的應(yīng)用 計(jì)數(shù)范圍:1216 計(jì)數(shù)計(jì)算公式:計(jì)數(shù)值216計(jì)數(shù)初值 機(jī)器周期(MC):=12/Fosc=12/時(shí)鐘頻率 定時(shí)范圍:1機(jī)器周期216機(jī)器周期 定時(shí)計(jì)算公式:定時(shí)時(shí)間(216定時(shí)初值)機(jī)器周期 如果晶振頻率為6MHz ,則最大定時(shí)時(shí)間為: 216121/6MHz217us=131072us=131.072ms 如果晶振頻率為12MHz ,則最大定時(shí)時(shí)間為: 216121/12MHz216us=65536us=65.536ms,工作方式的定時(shí)計(jì)數(shù)功能切換模式,與工作方式完全一樣;而啟動(dòng)定時(shí)計(jì)數(shù)器的模式,也與工作方式完全一樣。計(jì)數(shù)量方式更大,可完全取代方式。,3 方式2,在方式2下,當(dāng)計(jì)數(shù)器計(jì)滿255(FFH)溢出時(shí),CPU自動(dòng)把TH 的值裝入TL中,不需用戶干預(yù)。因此特別適合于用作較精確的脈沖信號發(fā)生器。,方式2為自動(dòng)重裝初值的8位計(jì)數(shù)方式。,工作方式2_應(yīng)用分析,定時(shí)和計(jì)數(shù)的應(yīng)用 計(jì)數(shù)范圍:128 計(jì)數(shù)計(jì)算公式:計(jì)數(shù)值28計(jì)數(shù)初值 機(jī)器周期(MC):=12/Fosc=12/時(shí)鐘頻率 定時(shí)范圍:1機(jī)器周期28機(jī)器周期 定時(shí)計(jì)算公式:定時(shí)時(shí)間(28定時(shí)初值)機(jī)器周期 如果晶振頻率為6MHz ,則最大定時(shí)時(shí)間為: 28121/6MHz29us=512us=0.512ms 如果晶振頻率為12MHz ,則最大定時(shí)時(shí)間為: 28121/12MHz28us=256us=0.256ms,8位計(jì)數(shù)器 TL0作計(jì)數(shù)器,TH0作預(yù)置寄存器使用,計(jì)數(shù)溢出時(shí),TH0中的計(jì)數(shù)初值自動(dòng)裝入TL0,即TL0是一個(gè)自動(dòng)恢復(fù)初值的8位計(jì)數(shù)器。 在使用時(shí),要把計(jì)數(shù)初值同時(shí)裝入TL0和TH0中。 優(yōu)點(diǎn)是提高定時(shí)精度,減少了程序的復(fù)雜程度。 優(yōu)點(diǎn):定時(shí)初值可自動(dòng)恢復(fù),TH0中存放初值; 缺點(diǎn):計(jì)數(shù)范圍小。 適用于需要重復(fù)定時(shí),而定時(shí)范圍不大的應(yīng)用場合。,工作方式2_補(bǔ)充說明,4 方式3,方式3只適用于定時(shí)器/計(jì)數(shù)器T0,定時(shí)器T1方式3時(shí)相當(dāng)于TR1=0,停止計(jì)數(shù),此時(shí)T1可用來作串行口波特率產(chǎn)生器。,工作方式3將T0分成為兩個(gè)獨(dú)立的8位計(jì)數(shù)器TL0和TH0 。,T0: 組織成TL0和TH0兩個(gè)8位定時(shí)/計(jì)數(shù)器 T1: 不再是定時(shí)/計(jì)數(shù)器了 T1 的TR1和TF1出借給TH0當(dāng)控制位使用,剩下的TH1/TL1寄存器只能當(dāng)作普通寄存器用。 除了不具備計(jì)數(shù)及自動(dòng)加載功能外,幾乎可以用工作方式的T1所取代。,工作方式3_應(yīng)用分析,因?yàn)闆]有帶來甚麼好處,幾
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 日本祭典活動(dòng)方案
- 春季脫毛活動(dòng)方案
- 【隨州】湖北隨州市衛(wèi)生健康委員會(huì)在全市醫(yī)療衛(wèi)生事業(yè)單位選調(diào)筆試歷年典型考題及考點(diǎn)剖析附帶答案詳解
- 春季菜品大比賽活動(dòng)方案
- 新縣清明祭祖活動(dòng)方案
- 新兵健康活動(dòng)方案
- 春季銀行活動(dòng)方案
- 文明采訪活動(dòng)方案
- 【滄州】2025年河北滄州市河間市招聘事業(yè)單位人員234人筆試歷年典型考題及考點(diǎn)剖析附帶答案詳解
- 新疆歌舞晚宴活動(dòng)方案
- 發(fā)電廠機(jī)組優(yōu)化調(diào)度與運(yùn)行控制策略
- (高清版)DZT 0211-2020 礦產(chǎn)地質(zhì)勘查規(guī)范 重晶石、毒重石、螢石、硼
- 急性壞死性胰腺炎患者護(hù)理
- 浙江民宿報(bào)告
- 2024年中煤平朔發(fā)展集團(tuán)有限公司招聘筆試參考題庫含答案解析
- 自由基溶液聚合生產(chǎn)工藝腈綸
- 財(cái)務(wù)用發(fā)票分割單原始憑證 發(fā)票分割單范本
- 《機(jī)械設(shè)計(jì)基礎(chǔ)》考試復(fù)習(xí)題庫(含答案)
- 鼻窒(慢性鼻炎)中醫(yī)診療方案
- 2023年法考鐘秀勇講民法講義電子版
- 試卷模擬丨北師大版數(shù)學(xué)三年級下冊期末測試卷(二)(含答案)
評論
0/150
提交評論