學(xué)習(xí)單片機(jī)中斷系統(tǒng)_第1頁
學(xué)習(xí)單片機(jī)中斷系統(tǒng)_第2頁
學(xué)習(xí)單片機(jī)中斷系統(tǒng)_第3頁
學(xué)習(xí)單片機(jī)中斷系統(tǒng)_第4頁
學(xué)習(xí)單片機(jī)中斷系統(tǒng)_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論