第5章 MCS-51單片機(jī)的中斷系統(tǒng)_第1頁
第5章 MCS-51單片機(jī)的中斷系統(tǒng)_第2頁
第5章 MCS-51單片機(jī)的中斷系統(tǒng)_第3頁
第5章 MCS-51單片機(jī)的中斷系統(tǒng)_第4頁
第5章 MCS-51單片機(jī)的中斷系統(tǒng)_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第五章MCS-51單片機(jī)的中斷系統(tǒng)

5.1中斷的基本概念5.2MCS-51單片機(jī)的中斷系統(tǒng)及管理5.3中斷處理過程5.4中斷系統(tǒng)應(yīng)用5.1中斷的基本概念

所謂中斷,是指CPU對(duì)系統(tǒng)中或系統(tǒng)外發(fā)生的某個(gè)事件的一種響應(yīng)過程,即CPU暫時(shí)停止正在執(zhí)行的程序轉(zhuǎn)而執(zhí)行預(yù)先安排好的處理該事件的服務(wù)子程序(中斷服務(wù)子程序),當(dāng)處理完畢后,CPU又自動(dòng)返回原來的程序繼續(xù)運(yùn)行。圖5-1中斷流程

從中斷的執(zhí)行過程看來,計(jì)算機(jī)的中斷過程與子程序的調(diào)用有相似之處,但是它們之間有本質(zhì)的區(qū)別:

首先,子程序的執(zhí)行是程序員事先安排好的,在程序中通過調(diào)用指令來執(zhí)行的,而中斷服務(wù)子程序的執(zhí)行則是由隨機(jī)事件引起的,程序員也不知道何時(shí)中斷服務(wù)子程序會(huì)被執(zhí)行;

其次,子程序一般與主程序有關(guān),它的執(zhí)行受到主程序或上一級(jí)子程序的控制,而中斷服務(wù)子程序一般是用來處理隨機(jī)事件的,與被中斷的程序沒有關(guān)系。圖5-2MCS-51單片機(jī)的中斷系統(tǒng)結(jié)構(gòu)示意圖5.2.1中斷源

所謂中斷源,是指引起中斷的原因和發(fā)出中斷申請(qǐng)的來源。MCS-51單片機(jī)有5個(gè)中斷源,可分為3類:1.外部輸入中斷源(外中斷)2個(gè)2.定時(shí)\計(jì)數(shù)器溢出中斷源(定時(shí)\計(jì)數(shù)器中斷)2個(gè)3.串行口中斷請(qǐng)求源(串行中斷)1個(gè)。5.2.2中斷請(qǐng)求標(biāo)志寄存器

1.TCON寄存器的中斷標(biāo)志TCON是一個(gè)8位的定時(shí)器/計(jì)數(shù)器控制寄存器,字節(jié)地址為88H,可位尋址。其8個(gè)位中有6個(gè)位與中斷有關(guān):2.SCON中的中斷標(biāo)志SCON是一個(gè)8位的串行控制寄存器,字節(jié)地址為98H,可位尋址。其8個(gè)位中有2個(gè)位是中斷標(biāo)志位:5.2.3中斷的控制1.中斷允許控制MCS-51單片機(jī)中的特殊功能寄存器IE是中斷允許寄存器,它控制CPU對(duì)中斷源的開放或屏蔽,以及每個(gè)中斷源是否允許中斷。IE是個(gè)8位寄存器,字節(jié)地址為A8H,可位尋址。其各位的定義如下:圖5-6兩級(jí)中斷嵌套過程示意圖MCS-51單片機(jī)的中斷系統(tǒng)運(yùn)行時(shí)遵循以下幾條規(guī)則:(1)正在進(jìn)行的中斷過程不能被新的同級(jí)或低先級(jí)的中斷請(qǐng)求所中斷。(2)正在進(jìn)行的低先級(jí)中斷能被高優(yōu)先級(jí)的中斷請(qǐng)求所中斷,實(shí)現(xiàn)兩級(jí)中斷嵌套。(3)CPU同時(shí)接時(shí)到幾個(gè)中斷請(qǐng)求時(shí),首先響應(yīng)優(yōu)先級(jí)最高的中斷請(qǐng)求。若同時(shí)接收到幾個(gè)同一優(yōu)先級(jí)的中斷請(qǐng)求,CPU通過硬件查詢按自然優(yōu)先級(jí)確定響應(yīng)的先后順序,用戶無法決定。

表5-1自然優(yōu)先級(jí)順序

中斷源中斷級(jí)別外部中斷0T0溢出中斷外部中斷1T1溢出中斷串行口中斷最高

最低5.3中斷處理過程

5.3.1中斷請(qǐng)求MCS-51單片機(jī)的5個(gè)中斷源的中斷請(qǐng)求均由硬件自動(dòng)完成,中斷請(qǐng)求完成后,相應(yīng)的中斷請(qǐng)求標(biāo)志位被硬件置1。定時(shí)/計(jì)數(shù)器和串行口的中斷請(qǐng)求信號(hào)在單片機(jī)內(nèi)部自動(dòng)產(chǎn)生,而外部中斷1和外部中斷0的中斷請(qǐng)求信號(hào)則需從引腳INT0和INT1輸入,中斷系統(tǒng)在每個(gè)機(jī)器周期的S5P2對(duì)引腳信號(hào)進(jìn)行采樣,根據(jù)采樣的結(jié)果設(shè)置中斷標(biāo)志位。5.3.2中斷查詢和響應(yīng)1.中斷查詢MCS-51單片機(jī)在每個(gè)機(jī)器周期的s6狀態(tài)按照中斷優(yōu)先級(jí)的高低順序?qū)χ袛鄻?biāo)志位進(jìn)行查詢,即CPU對(duì)TCON和SCON的各標(biāo)志位的狀態(tài)進(jìn)行測(cè)試,以確定是否有中斷請(qǐng)求以及是哪個(gè)中斷源的中斷請(qǐng)求。中斷查詢?cè)谥噶顖?zhí)行的每個(gè)機(jī)器周期中不停重復(fù)進(jìn)行,若查詢到有標(biāo)志位被置位且滿足響應(yīng)的條件,則CPU將在下個(gè)機(jī)器周期的S1狀態(tài)進(jìn)行響應(yīng)。2.中斷響應(yīng)

(1)中斷響應(yīng)的條件

中斷響應(yīng)是CPU對(duì)中斷源提出的中斷請(qǐng)求的接受。一個(gè)中斷源的中斷請(qǐng)求要被響應(yīng),必須滿足四個(gè)條件:首先開放CPU中斷,即中斷允許控制位EA=1;其次,中斷源有中斷請(qǐng)求,即中斷標(biāo)志位被置位;第三,相應(yīng)的中斷充許位被置位,即某個(gè)中斷源允許中斷;第四,無同級(jí)或高級(jí)中斷正在被服務(wù)。

以上是中斷請(qǐng)求被響應(yīng)必須滿足的條件,中斷請(qǐng)求最終能否被響應(yīng),還要看程序執(zhí)行的狀態(tài),若遇到以下情況,中斷請(qǐng)求仍不能被響應(yīng):當(dāng)前正在執(zhí)行的指令還沒有執(zhí)行完;正在執(zhí)行訪問IE、IP的指令或執(zhí)行RETI指令。對(duì)后一種情況,只有在執(zhí)行這些指令后至少還要再執(zhí)行一條指令,才能響應(yīng)新的中斷請(qǐng)求。

如果存在以上情況,CPU將丟棄中斷查詢結(jié)果,不能響應(yīng)中斷請(qǐng)求,查詢過程在下個(gè)機(jī)器周期重新進(jìn)行。(2)中斷響應(yīng)的過程

當(dāng)CPU查詢到有效的中斷請(qǐng)求且滿足中斷響應(yīng)的條件時(shí),緊接著就進(jìn)行中斷響應(yīng)。中斷響應(yīng)的主要過程是由硬件自動(dòng)生成一條長(zhǎng)調(diào)用指令“LCALLaddr16”。這里的addr16就是程序存儲(chǔ)器中相應(yīng)的中斷入口地址。例如:對(duì)于定時(shí)/計(jì)數(shù)器0的響應(yīng),硬件自動(dòng)生成的長(zhǎng)調(diào)用指令是:“LCALL000BH”。CPU指行該指令時(shí)時(shí),首先將當(dāng)前PC的內(nèi)容壓入堆棧以保護(hù)現(xiàn)場(chǎng),再將相應(yīng)的中斷服務(wù)程序的入口地址裝入PC,使程序轉(zhuǎn)向響應(yīng)中斷請(qǐng)求的中斷入口地址。各中斷源的服務(wù)程序的入口地址是固定的,如表5-2所示。除此之外,還將由硬件自動(dòng)清除中斷請(qǐng)求標(biāo)志位(TF0、TF1、IE0、IE1)。中斷源中斷入口地址外部中斷0定時(shí)/計(jì)數(shù)器0外部中斷1定時(shí)/計(jì)數(shù)器1串行口中斷0003H000BH0013H001BH0023H表5-2中斷入口地址表(3)中斷響應(yīng)的時(shí)間

中斷響應(yīng)的時(shí)間是指從中斷響應(yīng)有效(標(biāo)志位置1)到轉(zhuǎn)向其中斷服務(wù)程序地址區(qū)的入口地址所需要的時(shí)間。

對(duì)于單一中斷源中斷系統(tǒng),中斷響應(yīng)時(shí)間最少需要3個(gè)機(jī)器周期:其中查詢中斷請(qǐng)求標(biāo)志位需要一個(gè)機(jī)器周期,且該機(jī)器周期恰好處于正在執(zhí)行的指令的最后一個(gè)機(jī)器周期,則CPU無需等待即可響應(yīng)中斷請(qǐng)求,執(zhí)行由硬件自動(dòng)生成的長(zhǎng)調(diào)用指令,需要2個(gè)機(jī)器周期,一共需要3個(gè)機(jī)器周期。

中斷響應(yīng)時(shí)間最長(zhǎng)則需要8個(gè)機(jī)器周期:這種情況出現(xiàn)在CPU進(jìn)行中斷標(biāo)志查詢時(shí),剛好才開始執(zhí)行訪問IE、IP的指令或執(zhí)行RETI指令,則需把當(dāng)前指令指行完且再繼續(xù)執(zhí)行完一條指令才始開響應(yīng)中斷請(qǐng)求。執(zhí)行RETI指令或訪問IE、IP指令時(shí),需要2個(gè)機(jī)器周期,而再執(zhí)行一條指令最長(zhǎng)需要4個(gè)機(jī)器周期(如MUL、DIV指令),加上執(zhí)行硬件自動(dòng)生成的長(zhǎng)調(diào)用指令LCALL需要2個(gè)機(jī)器周期,最長(zhǎng)需8個(gè)機(jī)器周期。(4)中斷請(qǐng)求的撤銷某個(gè)中斷請(qǐng)求被響應(yīng)后,應(yīng)該撤銷該中斷請(qǐng)求,以免該中斷請(qǐng)求再次引起中斷。①對(duì)于定時(shí)/計(jì)數(shù)器中斷請(qǐng)求,CPU響應(yīng)中斷后,硬件會(huì)自動(dòng)把中斷標(biāo)志位(TF0或TF1)清0,因此,定時(shí)/計(jì)數(shù)器中斷請(qǐng)求是自動(dòng)撤銷的。②對(duì)于外部中斷請(qǐng)求,若外部中斷請(qǐng)求信號(hào)觸發(fā)方式為脈沖方式,由于脈沖信號(hào)過后即消失,CPU響應(yīng)中斷請(qǐng)求后由硬件自動(dòng)清除中斷請(qǐng)求標(biāo)志位(IE0或IE1),因此脈沖方式的外部中斷請(qǐng)求是自動(dòng)撤銷的。而對(duì)于電平觸發(fā)方式的外部中斷請(qǐng)求,中斷請(qǐng)求標(biāo)志位(IE0或IE1)是由硬件自動(dòng)完成的,但中斷請(qǐng)求信號(hào)的低電平可能繼續(xù)存在,在CPU響應(yīng)中斷后,又會(huì)將已清除的中斷標(biāo)志位IE0或IE1重新置位,再次引起中斷,因此,電平觸發(fā)的外部中斷請(qǐng)求的撤銷,除了清除中斷請(qǐng)求標(biāo)志位之外,還應(yīng)立即撤除引腳上(INT0或INT1)上的低電平信號(hào)。③對(duì)于串行口中斷請(qǐng)求,CPU響應(yīng)中斷后,中斷請(qǐng)求標(biāo)志位RI和TI不會(huì)被硬件自動(dòng)清0,只能使用軟件清0,因此,串行口中斷請(qǐng)求的撤銷只能使用軟件的方法。5.3.3中斷處理1.現(xiàn)場(chǎng)保護(hù)和現(xiàn)場(chǎng)恢復(fù)。

所謂現(xiàn)場(chǎng)是指中斷時(shí)刻單片機(jī)中某些寄存器和存儲(chǔ)單元中的數(shù)據(jù)或狀態(tài)。為了避免中斷服務(wù)子程序的執(zhí)行破壞這些數(shù)據(jù)或狀態(tài),需要把它們存入堆棧當(dāng)中保護(hù)起來,以免中斷返回后影響主程序的執(zhí)行,這就是現(xiàn)場(chǎng)保護(hù)。現(xiàn)場(chǎng)保護(hù)要在執(zhí)行中斷服務(wù)子程序之前進(jìn)行。2.關(guān)中斷和開中斷。

對(duì)于現(xiàn)場(chǎng)保護(hù)和現(xiàn)場(chǎng)恢復(fù)不充許被打斷的情況,可以在現(xiàn)場(chǎng)保護(hù)和現(xiàn)場(chǎng)恢復(fù)之前關(guān)中斷,即禁止CPU響應(yīng)中斷,將中斷允許控制位EA清0,以免破壞現(xiàn)場(chǎng);在現(xiàn)場(chǎng)保護(hù)和現(xiàn)場(chǎng)恢復(fù)之后再開中斷,為下一次的中斷做好準(zhǔn)備。5.3.4中斷返回

中斷服務(wù)子程序的最后一條指令必須是返回指令RETI,它是中斷服務(wù)子程序結(jié)束的標(biāo)志。CPU執(zhí)行這條指令時(shí),把響應(yīng)中斷時(shí)置1的中斷優(yōu)先級(jí)觸發(fā)器清0,然后從堆棧中彈出棧頂上的兩個(gè)字節(jié)的斷點(diǎn)地址送程序計(jì)數(shù)器PC,使程序回到斷點(diǎn)處重新執(zhí)行被中斷了的程序。由于RETI指令和RET指令兩者功能不同,所以中斷服務(wù)子程序的返回不能使用RET指令。5.4中斷系統(tǒng)應(yīng)用

例5.1如圖5-8所示是單片機(jī)控制的數(shù)據(jù)傳輸系統(tǒng)。將P1口設(shè)置成數(shù)據(jù)輸入口,外部設(shè)備每準(zhǔn)備好一個(gè)數(shù)據(jù)時(shí)發(fā)出一個(gè)正脈沖,使D觸發(fā)器Q端置0,向

送入一個(gè)低電平中斷請(qǐng)求信號(hào)。中斷響應(yīng)后,利用P3.0向D觸發(fā)器的直接置位端SD輸出一個(gè)負(fù)脈沖,使D觸發(fā)器的Q端置1,撤銷低電平的中斷請(qǐng)求信號(hào),從而撤銷中斷請(qǐng)求。例5-8單片機(jī)數(shù)據(jù)傳輸系統(tǒng)示意圖程序如下:

ORG0000HSTART:LJMPMAIN;跑轉(zhuǎn)到主程序ORG0003HLJMPINT0;轉(zhuǎn)向中斷服務(wù)程序ORG0030H;主程序MAIN:CLRIT0;設(shè)置低電平觸發(fā)方式SETBEA;CPU開放中斷SETBEX0;允許外部中斷0中斷MOVDPTR,#1000H;設(shè)置數(shù)據(jù)指針…ORG0100H;中斷服務(wù)子程序INT0:PUSHPSW;現(xiàn)場(chǎng)保護(hù)PUSHA;由P3.0輸出負(fù)脈沖CLRP3.0NOPNOPSETBP3.0MOVA,P1;輸入數(shù)據(jù)MOVX@DPTR,A;存入數(shù)據(jù)存儲(chǔ)器INCDPTR;修改數(shù)據(jù)指針,指向下一個(gè)單元…POPA;現(xiàn)場(chǎng)恢復(fù)POPPSWRETI;中斷返回例5.2某工業(yè)監(jiān)控系統(tǒng),具有溫度、壓力、PH值等多路監(jiān)控功能,中斷源的接口電路如圖5-9所示。對(duì)于PH值,在小于7時(shí)向CPU申請(qǐng)中斷,CPU響應(yīng)中斷后使P3.0引腳輸出高電平,經(jīng)驅(qū)動(dòng),使加緘管道電磁閥接通1秒,以調(diào)整PH值。ORG0030H;外部中斷0的中斷服務(wù)子程入口JBP1.0,INT00;檢測(cè)轉(zhuǎn)移指令表JBP1.1,INT01JBP1.2,INT02JBP1.3,INT03ORG0080;PH<7時(shí)中斷服務(wù)子程序INT02:PUSHPSW

;現(xiàn)場(chǎng)保護(hù)

PUSHASETBPSW.3;工作寄存器設(shè)置為1組,以保護(hù)原0組的內(nèi)容SETBP3.0

;接通加堿管道電磁閥ACALLDELAY;調(diào)用1秒延時(shí)子程序

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論