版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
5.3MCS-51單片機(jī)的中斷系統(tǒng)5.3.1中斷的概念計算機(jī)暫時中止正在執(zhí)行的主程序,轉(zhuǎn)去執(zhí)行中斷服務(wù)程序,并在中斷服務(wù)程序執(zhí)行完了之后能自動回到原主程序處繼續(xù)執(zhí)行,這個過程叫做“中斷”。中斷需要解決兩個主要問題:一是如何從主程序轉(zhuǎn)到中斷服務(wù)程序;二是如何從中斷服務(wù)程序返回主程序。
大體說來,采用中斷系統(tǒng)改善了計算機(jī)的性能,主要表現(xiàn)在以下幾個方面:
(1)有效地解決了快速CPU與慢速外設(shè)之間的矛盾,可使CPU與外設(shè)并行工作,大大提高了工作效率。
(2)可以及時處理控制系統(tǒng)中許多隨機(jī)產(chǎn)生的參數(shù)與信息,即計算機(jī)具有實(shí)時處理的能力,從而提高了控制系統(tǒng)的性能。
(3)使系統(tǒng)具備了處理故障的能力,提高了系統(tǒng)自身的可靠性。5.3.2中斷源所謂中斷源就是引起中斷的事件,亦即是什么部件要求中斷。對于各種計算機(jī)來說,其中斷源的允許數(shù)目是不一樣的,例如Z80允許128個中斷源(不包括非屏蔽中斷),而8086/8088則允許256個中斷源。MCS-51單片機(jī)相對來說較為簡單,只提供了5個中斷源:2個外部中斷請求和2個片內(nèi)定時器/計數(shù)器T0和T1的溢出中斷請求TF0和TF1及串行口中斷請求TI或RI(合為一個中斷源)。MCS-51單片機(jī)5個中斷源的中斷請求信號分別鎖存在特殊功能寄存器TCON和SCON中:
(1)TCON為定時/計數(shù)器控制寄存器,字節(jié)地址為88H,其中鎖存的中斷源請求標(biāo)志如表5―1所示。
表5―1TCON鎖存的中斷源IT0:外部中斷0觸發(fā)方式控制位。當(dāng)IT0=0時,外部中斷0控制為電平觸發(fā)方式。在此方式下,CPU在每個機(jī)器周期的S5P2期間采樣(P3.2,INT0)的輸入電平,若采到低電平,則認(rèn)為有中斷請求,隨即置位IE0。若采到高電平,則認(rèn)為無中斷請求或中斷請求已清除,隨即對IE0清“0”。在電平觸發(fā)方式中,CPU響應(yīng)中斷后不能自動使IE0清“0”,也不能由軟件使IE0清“0”,故在中斷返回前必須清除引腳上的低電平,否則會再次響應(yīng)中斷造成出錯。
若IT0=1,外部中斷0控制為邊沿觸發(fā)方式。在此方式下,CPU在每個機(jī)器周期的S5P2期間采樣(P3.2,INT0)的輸入電平,若相繼兩次采樣,一個周期采樣為高電平,接下來的下一個周期采樣為低電平,則置位IE0,表示外部中斷0正在向CPU請求中斷,直到該中斷被CPU響應(yīng)時,IE0由硬件自動清“0”。在邊沿觸發(fā)方式中,為保證CPU在兩個機(jī)器周期內(nèi)檢測到先高后低的負(fù)跳變,輸入高低電平的持續(xù)時間起碼要保持1個機(jī)器周期。
IE0:外部中斷0標(biāo)志,若IE0=1,則外部中斷0向CPU請求中斷。
IT1:外部中斷1觸發(fā)方式控制位,功能與IT0類似。
IE1:外部中斷1標(biāo)志,功能與IE0類似。
TF0:T0溢出中斷標(biāo)志,在啟動T0計數(shù)后,T0從初值開始加1計數(shù),當(dāng)計滿溢出時,由硬件使TF0置1,向CPU申請中斷,CPU響應(yīng)TF0中斷后,由硬件對TF0清“0”,TF0也可由軟件清“0”(查詢方式)。
TF1:T1溢出中斷標(biāo)志,功能與TF0類似。系統(tǒng)復(fù)位后,TCON各位均清“0”。(2)SCON串行口控制寄存器,字節(jié)地址為98H。
SCON的低2位鎖存串行口的接收中斷和發(fā)送中斷標(biāo)志,其格式如表5―2所示。表5―2SCON鎖存的中斷源TI:串行口發(fā)送中斷標(biāo)志。在串行口以方式0發(fā)送時,每當(dāng)發(fā)送完8位數(shù)據(jù)后,由硬件置位TI;若以方式1、2、3發(fā)送時,在發(fā)送停止位的開始時(同時)置位TI。TI=1表示串行口發(fā)送器正在向CPU申請中斷。值得注意的是當(dāng)CPU響應(yīng)該中斷后,轉(zhuǎn)向中斷服務(wù)程序時并不復(fù)位TI,TI必須由用戶在中斷服務(wù)程序中用軟件清0(可用CLRTI或其它指令)。RI:串行口接收中斷標(biāo)志。若串行口接收器允許接收并以方式0工作,則每當(dāng)接收到第8位數(shù)據(jù)時置位RI;若以方式1、2、3工作,且SM2=0時,則每當(dāng)接收器接收到停止位的(同時)中間時置位RI;當(dāng)串行口以方式2或方式3工作,且SM2=1時,僅當(dāng)接收到的第9位數(shù)據(jù)RB8為1后,同時還要接收到停止位的中間時置位RI。RI為1表示串行口接收器正向CPU申請中斷,同樣RI必須由用戶在中斷服務(wù)程序中清0。
80C51復(fù)位后,SCON也被清0。
EA:CPU中斷總允許位。當(dāng)EA=1時,CPU允許中斷,每個中斷源是允許還是禁止,分別由各自的允許位確定,當(dāng)EA=0時,CPU屏蔽所有的中斷要求。
ES:串行口中斷允許位。ES=1,允許串行口中斷,ES=0,禁止串行口中斷。
ET1:T1中斷允許位。ET1=1,允許T1中斷,ET1=0,禁止T1中斷。
EX1:外部中斷1允許位。EX1=1,允許外部中斷1中斷,EX1=0,禁止外部中斷1中斷。
ET0:T0中斷允許位。ET0=1,允許T0中斷,ET0=0,禁止T0中斷。
EX0:外部中斷0允許位。EX0=1,允許外部中斷0中斷,EX0=0,禁止外部中斷0中斷。系統(tǒng)復(fù)位后,IE中各位均清“0”,禁止所有中斷。5.3.3中斷控制5.3.4中斷的優(yōu)先級如果正在執(zhí)行主程序時只有1個中斷源請求中斷,而這時CPU又是對中斷開放的,那么這個中斷立即得到響應(yīng)。然而由于中斷是隨機(jī)產(chǎn)生的,中斷源一般又不止1個,因此往往會出現(xiàn)這樣的情況:幾個中斷源同時請求中斷;或者當(dāng)某一個中斷正在響應(yīng)中(即正在執(zhí)行該中斷源的中斷服務(wù)程序),又有其它的中斷源請求中斷,這時中斷系統(tǒng)應(yīng)如何處理呢?在一般情況下,首先把各個中斷源分成若干個優(yōu)先級,然后再按如下原則進(jìn)行處理:表5―3中斷優(yōu)先級寄存器IP的格式其中:PX0:外部中斷0優(yōu)先級控制位。PT0:定時器0中斷優(yōu)先級控制位。PX1:外部中斷1優(yōu)先級控制位。PT1:定時器1中斷優(yōu)先級控制位。PS:串行口中斷優(yōu)先級控制位。上面優(yōu)先級控制位規(guī)定1為高優(yōu)先級,0為低優(yōu)先級。(1)不同級的中斷源同時申請中斷時——先高后低;
(2)同級的中斷源同時申請中斷時——按規(guī)定執(zhí)行;
(3)處理低級中斷又收到高級中斷請求時——停低轉(zhuǎn)高;
(4)處理高級中斷又收到低級中斷請求時——高不理低。
MCS-51單片機(jī)的中斷系統(tǒng)對優(yōu)先級的控制比較簡單,只規(guī)定了兩個中斷優(yōu)先級,對于每一個中斷源均可編程為高優(yōu)先級中斷或低優(yōu)先級中斷。在同1個優(yōu)先級中,對5個中斷源的優(yōu)先次序安排如下:最高優(yōu)先級最低優(yōu)先級
外部中斷0(IE0)
定時器/計數(shù)器T0溢出中斷(TF0)
外部中斷1(IE1)
定時器/計數(shù)器T1溢出中斷(TF1)
串行口中斷(RI+TI)
5.3.4中斷響應(yīng)的條件、過程與時間
1.中斷響應(yīng)的條件單片機(jī)響應(yīng)中斷的條件為中斷源有請求(中斷允許寄存器IE相應(yīng)位置1),且CPU開中斷(即EA=1)。這樣,在每個機(jī)器周期內(nèi),單片機(jī)對所有中斷源都進(jìn)行順序檢測,并可在任1個周期的S5P2期間,找到所有有效的中斷請求,還對其優(yōu)先級進(jìn)行排隊。但是,必須滿足下列條件:(1)無同級或高級中斷正在服務(wù);
(2)現(xiàn)行指令執(zhí)行到最后1個機(jī)器周期且已結(jié)束;
(3)若現(xiàn)行指令為RETI或需訪問特殊功能寄存器IE(中斷允許)或IP(中斷優(yōu)先級)的指令時,執(zhí)行完該指令且緊隨其后的另1條指令也已執(zhí)行完。單片機(jī)便在緊接著的下1個機(jī)器周期的S1期間響應(yīng)中斷。否則,將丟棄中斷查詢的結(jié)果。2.中斷響應(yīng)過程單片機(jī)一旦響應(yīng)中斷,首先對相應(yīng)的優(yōu)先級有效觸發(fā)器置位。然后執(zhí)行1條由硬件產(chǎn)生的子程序調(diào)用指令,把斷點(diǎn)地址壓入堆棧,再把與各中斷源對應(yīng)的中斷服務(wù)程序的入口地址送入程序計數(shù)器PC,同時清除中斷請求標(biāo)志(串行口中斷和外部電平觸發(fā)中斷除外(軟件復(fù)位)),從而程序便轉(zhuǎn)移到中斷服務(wù)程序。以上過程均由中斷系統(tǒng)自動完成。各中斷源所對應(yīng)的中斷服務(wù)程序的入口地址如下:中斷源入口地址外部中斷0003H定時器T0中斷000BH外部中斷0013H定時器T1中斷001BH串行口中斷0023HCPU從上面相應(yīng)的地址開始執(zhí)行中斷服務(wù)程序直到遇到1條RETI指令為止。RETI指令表示中斷服務(wù)程序的結(jié)束。CPU執(zhí)行該指令,一方面清除中斷響應(yīng)時所置位的優(yōu)先級有效觸發(fā)器(中斷完畢);另一方面從堆棧棧頂彈出斷點(diǎn)地址送入程序計數(shù)器PC,從而返回主程序。若用戶在中斷服務(wù)程序的開始安排了保護(hù)現(xiàn)場指令(一般均為相應(yīng)寄存器內(nèi)容入?;蚋鼡Q工作寄存器區(qū)),則在RETI指令前應(yīng)有恢復(fù)現(xiàn)場指令(相應(yīng)寄存器內(nèi)容出棧或換回原工作寄存器區(qū))。
各入口地址之間只相隔8個字節(jié),一般的中斷服務(wù)程序是容納不下的。通常在中斷服務(wù)程序入口地址處放一條無條件轉(zhuǎn)移指令,這樣可使中斷服務(wù)程序安排在64K空間的任意處3.中斷響應(yīng)時間所謂中斷響應(yīng)時間是指從查詢中斷請求標(biāo)志位到轉(zhuǎn)入中斷服務(wù)程序入口地址所需的機(jī)器周期數(shù)(對單一中斷源而言)。響應(yīng)中斷最短需要3個機(jī)器周期。若CPU查詢中斷請求標(biāo)志的周期正好是執(zhí)行1條指令的最后1個機(jī)器周期,則不需等待就可以響應(yīng)。而響應(yīng)中斷執(zhí)行1條長調(diào)用指令需要2個機(jī)器周期,加上查詢的1個機(jī)器周期,一共需要3個機(jī)器周期才開始執(zhí)行中斷服務(wù)程序。5.3.5MCS-51單片機(jī)的中斷系統(tǒng)
MCS-51系列單片機(jī)的中斷系統(tǒng)屬于8位單片機(jī)中功能較強(qiáng)的1種中斷系統(tǒng),它可以提供5個中斷源,每個中斷源有兩個中斷優(yōu)先級別可供選擇,可實(shí)現(xiàn)兩級中斷服務(wù)程序嵌套。此外,所有中斷均可由軟件設(shè)定為允許中斷或禁止中斷,也就是說,用戶可以用關(guān)中斷指令(或復(fù)位)來屏蔽所有的中斷請求,也可以用開中斷指令使CPU接受中斷請求。MCS-51單片機(jī)的中斷系統(tǒng)結(jié)構(gòu)示意圖如圖5―2所示。圖5―2MCS-51的中斷系統(tǒng)5.3.6外部中斷及中斷請求的撤除
1.外部中斷
MCS-51單片機(jī)的中斷系統(tǒng)有2個外部中斷源,引腳信號為和(即P3.2和P3.3)。其中斷請求觸發(fā)信號有電平觸發(fā)和邊沿觸發(fā)兩種,當(dāng)TCON寄存器中的IT0位和IT1位為“0”時采用電平觸發(fā);為“1”時采用邊沿觸發(fā)。2.中斷請求的撤除
CPU響應(yīng)中斷請求后,在中斷返回(執(zhí)行RETI指令)前,必須撤除請求,否則會錯誤地再一次引起中斷過程。如前所述,對于定時器T0與T1的中斷請求及邊沿觸發(fā)方式的外部中斷0和1來說,CPU在響應(yīng)中斷后用硬件清除了相應(yīng)的中斷請求標(biāo)志TF0、TF1、IE0與IE1,即自動撤除了中斷請求。(只有串行口需要人工軟件清楚)5.3.7中斷程序舉例在中斷服務(wù)程序編程時,首先要對中斷系統(tǒng)進(jìn)行初始化,也就是對幾個特殊功能寄存器的有關(guān)控制位進(jìn)行賦值。具體來說,就是要完成下列工作:
(1)開中斷和允許中斷源中斷;(2)確定各中斷源的優(yōu)先級;(3)若是外部中斷,則應(yīng)規(guī)定是電平觸發(fā)還是邊沿觸發(fā)。例5.10晶振Fosc=6MHz,利用T0產(chǎn)生周期為2ms方波,由P1.0輸出。要求采用中斷方式處理。解:根據(jù)題意,定時/計數(shù)器T0采用方式1,定時值為1ms,其初值計算如下:機(jī)器周期T=12/Fosc=12/6×106μs=2μs則T0的初值為:X=216-1000/2=65036即:X=65036D=0FE0CH=1111111000001100B則:(TH0)=0FEH,(TL0)=0CH程序編寫如下:
ORG0000HAJMPMAIN;轉(zhuǎn)主程序
ORG000BH;中斷入口地址
MOVTL0,#0CH;重賦初值
MOVTH1,#0FEHCPLP1.0;輸出取反
RETI;中斷返回MAIN:TMOD,#01;T0初始化
MOVTL0,#0CH;賦初值
MOVTH0,#0FEHMOVIE,#82H;CPU開中斷,T0開中斷HERE:SJMPHERE例5.13利用定時中斷抗干擾。
單片機(jī)應(yīng)用系統(tǒng)開發(fā)完成后,在工作現(xiàn)場由于系統(tǒng)本身的噪聲干擾、電磁干擾、過壓干擾以及環(huán)境干擾等原因,往往會出現(xiàn)“死機(jī)”現(xiàn)象。解決的辦法有多種,這里介紹利用定時中斷防止“死機(jī)”的方法。設(shè)計思想是先估算系統(tǒng)主程序執(zhí)行一次循環(huán)所需時間t,然后把定時器T0或T1的定時時間取得比t稍大,并在主程序中包含對定時器的初始化程序,這樣,如果系統(tǒng)主程序運(yùn)行正常,因定時時間比t大,故在定時時間還未到時,主程序已完成一次循環(huán),T0或T1被重新初始化,使定時時間常數(shù)重新置入其中,故不會產(chǎn)生溢出中斷。若應(yīng)用系統(tǒng)由于干擾失控,主程序不能正常循環(huán)運(yùn)行,T0或T1不能及時初始化,則經(jīng)過時間t后,T0或T1必將產(chǎn)生溢出中斷,轉(zhuǎn)入中斷服務(wù)程序,這表明程序運(yùn)行出現(xiàn)故障,用戶可安排中斷服務(wù)程序跳轉(zhuǎn)回主程序需要的地址,以便重新使主程序運(yùn)行。將T1設(shè)置為工作方式2,晶振頻率為6MHz,防止“死機(jī)”的程序如下:
SETBET1;T1開中斷
SETBPT1;T1中斷設(shè)置為高優(yōu)先
SETBEA;CPU開中斷
MOVTL1,#data;T1賦初值(根據(jù)t)
MOVTH1,#dataMOVTMOD#20H;T1工作方式2,定時
SETBTR1;啟動T1計數(shù)
ORG001BH;T1溢出中斷入口地址
POPA;丟棄PC壓入堆棧的錯誤地址
POPAMOVA,#data;將需轉(zhuǎn)去的主程序地址(2個字節(jié))送入棧頂
PUSHAMOVA,#dataPUSHARETI;中斷返回例5.15通過定時/計數(shù)器采用中斷方式測量外部引腳T1上的脈沖信號頻率(如圖5-19所示)。采用定時閘門計數(shù)方法測量脈沖頻率。設(shè)定時/計數(shù)器0為定時方式,提供100ms的基準(zhǔn)閘門時間TR。在10TR(1s)期間,定時/計數(shù)器1對外部脈沖進(jìn)行計數(shù),所獲得的計數(shù)值m即為被測脈沖信號的頻率。定時/計數(shù)器0用來提供100ms的閘門時間,單片機(jī)時鐘振蕩器頻率FOSC為6MHz;定時/計數(shù)器1用來對外部脈沖計數(shù)。定時/計數(shù)器0采用方式1、定時狀態(tài),由內(nèi)部TR0控制啟、停;定時/計數(shù)器1采用方式1、計數(shù)狀態(tài),由內(nèi)部TR1控制啟、停。因此TMOD=01010001B=51H。T0的初值為:
式中:FOSC=6MHz,x=100ms。
MSFI:MOVTMOD,#51H;T0、T1初始化
MOVR0,#0AH;1s定時的計數(shù)長度
MOVTL1,#00H;定時器1的計數(shù)器清“0”MOVTH1,#00HMOVTL0,#0B0H;定時器0裝入計數(shù)初值
MOVTH0,#3CHSETBP3.5
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 藥理學(xué)知識培訓(xùn)課件
- 論文寫作指南
- 2025年度餐飲加盟連鎖經(jīng)營合作協(xié)議書3篇
- 2025年度廣告?zhèn)髅讲鸹锖贤瑓f(xié)議4篇
- 專業(yè)藝術(shù)教師勞務(wù)合作合同(2024版)一
- 二零二四醫(yī)院護(hù)士勞動合同范本:護(hù)理危機(jī)管理與責(zé)任界定3篇
- 2025年茶山茶葉采摘與加工承包經(jīng)營合同4篇
- 2025年度快遞快遞業(yè)務(wù)市場營銷承包合同3篇
- 2025年度餐飲行業(yè)節(jié)能減排合作協(xié)議范本3篇
- 2025年度情侶忠誠保障不分手協(xié)議書電子版下載3篇
- 直播帶貨助農(nóng)現(xiàn)狀及發(fā)展對策研究-以抖音直播為例(開題)
- 腰椎間盤突出疑難病例討論
- 《光伏發(fā)電工程工程量清單計價規(guī)范》
- 2023-2024學(xué)年度人教版四年級語文上冊寒假作業(yè)
- (完整版)保證藥品信息來源合法、真實(shí)、安全的管理措施、情況說明及相關(guān)證明
- 營銷專員績效考核指標(biāo)
- 陜西麟游風(fēng)電吊裝方案專家論證版
- 供應(yīng)商審核培訓(xùn)教程
- 【盒馬鮮生生鮮類產(chǎn)品配送服務(wù)問題及優(yōu)化建議分析10000字(論文)】
- 肝硬化心衰患者的護(hù)理查房課件
- 2023年四川省樂山市中考數(shù)學(xué)試卷
評論
0/150
提交評論