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

下載本文檔

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

文檔簡介

§5.1微機(jī)的輸入/輸出方式第五章中斷系統(tǒng)1§5.1.1

無條件傳送方式

CPU總是認(rèn)為外設(shè)在任何時(shí)刻都處于“準(zhǔn)備好”的狀態(tài)。這種傳送方式不需要交換狀態(tài)信息,只需在程序中加入訪問外設(shè)的指令,數(shù)據(jù)傳送便可以實(shí)現(xiàn)。此種方法很少使用。

2一、什么是查詢傳送方式在輸入時(shí),需要查詢外設(shè)的輸入數(shù)據(jù)是否準(zhǔn)備好;在輸出時(shí),需要查詢外設(shè)是否把上一次CPU輸出的數(shù)據(jù)處理完畢。查詢傳送方式:通過查詢外設(shè)的狀態(tài)信息,確信外設(shè)已處于“準(zhǔn)備好”,計(jì)算機(jī)才發(fā)出訪問外設(shè)的指令,實(shí)現(xiàn)數(shù)據(jù)的傳送。狀態(tài)信息:一般為1位二進(jìn)制碼?!?.1.2查詢傳送方式(條件傳送)3二、查詢方式程序流程圖輸入狀態(tài)信息準(zhǔn)備好?傳送數(shù)據(jù)NY啟動(dòng)外設(shè)設(shè)備傳送數(shù)據(jù)延遲4三、查詢方式的過程查詢——等待——數(shù)據(jù)傳送,待到下一次數(shù)據(jù)傳送時(shí)則重復(fù)上述過程。5四、查詢方式的特點(diǎn)優(yōu)點(diǎn):通用性好,可以用于各類外設(shè)和CPU間的數(shù)據(jù)傳送。缺點(diǎn):CPU在完成一次數(shù)據(jù)傳送后要等待很長時(shí)間才能進(jìn)行下一次的傳送。在等待過程中,CPU不能進(jìn)行其他操作,所以效率比較低。

6DMA:DirectMemoryAccessCPU讓出數(shù)據(jù)總線(懸浮狀態(tài)),使外設(shè)和存儲器之間直接傳送(不通過CPU)數(shù)據(jù)的方式。適用于外設(shè)和存儲器之間有大量的數(shù)據(jù)需要傳送及外設(shè)工作速度很快的情況。§5.1.3直接存儲器存?。―MA)方式7§5.2

中斷的概念一、中斷二、中斷系統(tǒng)三、中斷源四、中斷請求五、中斷響應(yīng)過程六、中斷服務(wù)七、中斷返回八、中斷方式的特點(diǎn)8一、中斷當(dāng)CPU正在處理某事件的時(shí)候,外部發(fā)生的某一事件請求CPU迅速去處理,于是CPU暫時(shí)中止當(dāng)前的工作,轉(zhuǎn)去處理所發(fā)生的事件。中斷服務(wù)處理完該事件后,再返回到原來被中止的地方繼續(xù)原來的工作,這樣的過程稱為中斷。中斷流程如圖5-2所示。9主程序響應(yīng)中斷請求中斷服務(wù)程序返回主程序繼續(xù)執(zhí)行主程序斷點(diǎn)圖5-2中斷流程10二、中斷系統(tǒng)實(shí)現(xiàn)中斷功能的部件稱為中斷系統(tǒng),又稱中斷機(jī)構(gòu)。11三、中斷源產(chǎn)生中斷的請求源稱為中斷源12四、中斷請求中斷源向CPU提出的處理請求,稱為中斷請求或中斷申請。13五、中斷響應(yīng)過程CPU暫時(shí)中止當(dāng)前的工作,轉(zhuǎn)去處理所發(fā)生的事件,稱為CPU的中斷響應(yīng)過程14六、中斷服務(wù)對事件的整個(gè)處理過程,稱為中斷服務(wù)(或中斷處理)。15七、中斷返回中斷處理完畢,在返回到原來被中止的地方,稱為中斷返回16八、中斷方式的特點(diǎn)1、中斷方式消除了CPU在查詢方式中的等待現(xiàn)象,大大提高了CPU的工作效率。2、將從現(xiàn)場采集的數(shù)據(jù)通過中斷方式及時(shí)傳送給CPU,經(jīng)過處理后可立即作出反應(yīng),實(shí)現(xiàn)現(xiàn)場控制。采用查詢方式很難做到及時(shí)采集,實(shí)時(shí)控制。17一、中斷系統(tǒng)結(jié)構(gòu)中斷系統(tǒng)的結(jié)構(gòu)如圖5-3所示?!?.389C51中斷系統(tǒng)結(jié)構(gòu)及中斷控制§5.3.189C51中斷系統(tǒng)結(jié)構(gòu)18圖5-3中斷系統(tǒng)結(jié)構(gòu)

89C51的中斷系統(tǒng)有5個(gè)中斷源,2個(gè)優(yōu)先級,可實(shí)現(xiàn)二級中斷嵌套

。19二、中斷技術(shù)實(shí)現(xiàn)的功能1、分時(shí)操作2、實(shí)時(shí)處理3、故障處理201、分時(shí)操作計(jì)算機(jī)的中斷系統(tǒng)可以使CPU與外設(shè)同時(shí)工作。CPU在啟動(dòng)外設(shè)后,便繼續(xù)執(zhí)行主程序;而外設(shè)被啟動(dòng)后,開始進(jìn)行準(zhǔn)備工作。當(dāng)外設(shè)準(zhǔn)備就緒時(shí),就向CPU發(fā)出中斷請求,CPU響應(yīng)該中斷請求并為其服務(wù)完畢后,返回原來的斷點(diǎn)處繼續(xù)運(yùn)行主程序。外設(shè)在得到服務(wù)后,也繼續(xù)進(jìn)行自己的工作。因此,CPU可以使多個(gè)外設(shè)同時(shí)工作,并分時(shí)為各外設(shè)提供服務(wù),從而提高了CPU的利用率和輸入和輸出的速度。212、實(shí)時(shí)處理當(dāng)計(jì)算機(jī)用于實(shí)時(shí)控制時(shí),請求CPU提供服務(wù)時(shí)隨機(jī)發(fā)生的。有了中斷系統(tǒng),CPU就可以立即響應(yīng)并加以處理。223、故障處理計(jì)算機(jī)在運(yùn)行時(shí)往往會出現(xiàn)一些故障,如斷電、存儲器奇偶校驗(yàn)出錯(cuò)、運(yùn)算溢出等。有了中斷系統(tǒng),當(dāng)出現(xiàn)上述情況時(shí),CPU可及時(shí)轉(zhuǎn)去執(zhí)行故障處理程序,自行處理故障而不必停機(jī)。23一、89C51中斷系統(tǒng)的五個(gè)中斷源1、INT0——外部中斷0請求,低電平有效。通過P3.2引腳輸入。2、INT1——外部中斷1請求,低電平有效。通過P3.3引腳輸入。3、T0——定時(shí)器/計(jì)數(shù)器0溢出中斷請求。4、T1——定時(shí)器/計(jì)數(shù)器1溢出中斷請求。5、TX/RX——串行口中斷請求。當(dāng)串行口完成一幀數(shù)據(jù)的發(fā)送或接收時(shí),便請求中斷?!?.3.289C51中斷源24二、通常情況的中斷源1、I/O外設(shè)2、硬件故障3、實(shí)時(shí)時(shí)鐘4、為調(diào)試程序而設(shè)定的中斷源25§5.3.3中斷控制一、中斷請求標(biāo)志二、中斷允許控制三、中斷優(yōu)先級控制26一、中斷請求標(biāo)志1、定時(shí)器控制寄存器TCON中的中斷標(biāo)志位2、串行口控制寄存器SCON中的中斷標(biāo)志位271、TCON中的中斷標(biāo)志位TCON為定時(shí)器/計(jì)數(shù)器T0和T1的控制器,同時(shí)也鎖存T0和T1的溢出中斷標(biāo)志及外部中斷0和1的中斷標(biāo)志等。與中斷有關(guān)的位如圖5-4所示。28圖5-4

TCON中的中斷標(biāo)志位TF1TF0IE1IT1IE0IT0

TCON(88H)8FH8EH8DH8CH8BH8AH89H88H29各控制位的含義1、TF1:定時(shí)器/計(jì)數(shù)器T1溢出中斷請求標(biāo)志位。當(dāng)啟動(dòng)T1計(jì)數(shù)后,T1從初值開始加1計(jì)數(shù),計(jì)數(shù)器最高位產(chǎn)生溢出時(shí),由硬件使TF1置1,并向CPU發(fā)出中斷請求。當(dāng)CPU響應(yīng)中斷時(shí),硬件將自動(dòng)對TF1清0。2、TF0:定時(shí)器/計(jì)數(shù)器T0溢出中斷請求標(biāo)志位。含義與TF1類同。

30各控制位的含義3、IE1:外部中斷1的中斷請求標(biāo)志。INT1(P3.3)。

當(dāng)檢測到外部中斷引腳1

上存在有效的中斷請求信號時(shí),由硬件使IE1置1。當(dāng)CPU響應(yīng)中斷請求時(shí),由硬件使IE1清0。4、IE0:外部中斷0的中斷請求標(biāo)志。INT0(P3.2)。

其含義與IE1類同。

31各控制位的含義5、IT1:外部中斷1的中斷觸發(fā)方式控制位。

IT1=0時(shí),外部中斷1為電平觸發(fā)方式。

CPU在每一個(gè)機(jī)器周期S5P2期間采樣外部中斷請求引腳的輸入電平。若外部中斷1請求為低電平,則使IE1置1;若為高電平,則使IE1清0。32各控制位的含義5、IT1:外部中斷1的中斷觸發(fā)方式控制位。

IT1=1時(shí),外部中斷1為邊沿觸發(fā)方式。

CPU在每一個(gè)機(jī)器周期S5P2期間采樣外部中斷請求引腳的輸入電平。如果在相繼的兩個(gè)機(jī)器周期采樣過程中,一個(gè)機(jī)器周期采樣到外部中斷1請求引腳為高電平,接著的下一個(gè)機(jī)器周期采樣到為低電平,則使IE1置1。直到CPU響應(yīng)該中斷時(shí),才由硬件使IE1清0。33各控制位的含義6、IT0:外部中斷0的中斷觸發(fā)方式控制位。其含義與IT1類同。342、串行口控制寄存器SCON中的中斷標(biāo)志位

SCON為串行口控制寄存器,其低2位鎖存串行口的接收中斷和發(fā)送中斷標(biāo)志RI和TI。SCON中TI和RI的格式如圖5-5所示。35圖5-5

SCON中的中斷標(biāo)志位TIRI

SCON(98H)9FH9EH9DH9CH9BH9AH99H98H36SCON中控制位的含義1、TI:串行口發(fā)送中斷請求標(biāo)志。

CPU將一個(gè)數(shù)據(jù)寫入發(fā)送緩沖器SBUF時(shí),就啟動(dòng)發(fā)送。每發(fā)送完一幀串行數(shù)據(jù)后,硬件置位TI。但CPU響應(yīng)中斷時(shí),并不清除TI,必須在中斷服務(wù)程序中由軟件對TI清0。37SCON中控制位的含義2、RI:串行口接收中斷請求標(biāo)志。在串行口允許接收時(shí),每接收完一個(gè)串行幀,硬件置位RI。同樣,CPU響應(yīng)中斷時(shí)不會清除RI,必須在中斷服務(wù)程序中由軟件對RI清0。381、中斷允許控制寄存器IEEAESET1EX1ET0EX0

IE(A8H)AFHAEHADHACHABHAAHA9HA8H二、中斷允許控制392、中斷允許寄存器IE中各位的含義①EA—中斷允許總控制位。

EA=0,屏蔽所有的中斷請求;

EA=1,CPU開放中斷。對各中斷源的中斷請求是否允許,還要取決于各中斷源的中斷允許控制位的狀態(tài)。這就是所謂的兩級控制。40②ES—串行口中斷允許位。

ES=0,禁止串行口中斷;

ES=1,允許串行口中斷。③ET1—定時(shí)器/計(jì)數(shù)器T1的溢出中斷允許位。

ET1=0,禁止T1中斷;

ET1=1,允許T1中斷。41④EX1—外部中斷1的溢出中斷允許位。

EX1=0,禁止外部中斷1中斷;

EX1=1,允許外部中斷1中斷。⑤ET0—定時(shí)器/計(jì)數(shù)器T0的溢出中斷允許位。

ET0=0,禁止T0中斷;

ET0=1,允許T0中斷。42⑥EX0—外部中斷0的溢出中斷允許位。

EX0=0,禁止外部中斷0中斷;

EX0=1,允許外部中斷0中斷。43例5-1假設(shè)允許片內(nèi)定時(shí)器/計(jì)數(shù)器中斷,禁止其他中斷。試根據(jù)假設(shè)條件設(shè)置IE的相應(yīng)值。解:(IE)=10001010B=8AH(a)用字節(jié)操作指令MOVIE,#8AH;或MOV0A8H,#8AH;(b)用位操作指令SETBEA;CPU開中斷SETBET0;定時(shí)器/計(jì)數(shù)器0允許中斷SETBET1;定時(shí)器/計(jì)數(shù)器1允許中斷441、89C51的中斷優(yōu)先級89C51有兩個(gè)中斷優(yōu)先級。每個(gè)中斷請求源均可編程為高優(yōu)先級中斷或低優(yōu)先級中斷。中斷系統(tǒng)中有兩個(gè)不可尋址的“優(yōu)先級生效”觸發(fā)器,分別指出CPU正在執(zhí)行的高、低優(yōu)先級的中斷服務(wù)程序。當(dāng)其為1時(shí)則分別屏蔽所有的中斷請求。三、中斷優(yōu)先級控制45中斷優(yōu)先級寄存器IP的格式PSPT1PX1PT0PX0IP(B8H)

BCHBBHBAHB9HB8H2、中斷優(yōu)先級寄存器IP46中斷優(yōu)先級寄存器IP各控制位的含義①PS—串行口中斷優(yōu)先級控制位②PT1—定時(shí)器/計(jì)數(shù)器T1中斷優(yōu)先級控制位③PX1—外部中斷1中斷優(yōu)先級控制位④PT0—定時(shí)器/計(jì)數(shù)器T0中斷優(yōu)先級控制位⑤PX0—外部中斷0中斷優(yōu)先級控制位若某控制位為1,則相應(yīng)的中斷源規(guī)定為高級中斷;反之,為0,則相應(yīng)的中斷源規(guī)定為低級中斷。473、中斷優(yōu)先級排列順序當(dāng)同時(shí)接收到幾個(gè)同一優(yōu)先級的中斷請求時(shí),響應(yīng)哪個(gè)中斷源則取決于內(nèi)部硬件查詢順序。其優(yōu)先級順序排列如圖5-8所示。48圖5-8優(yōu)先級排列順序中斷源 同級內(nèi)的中斷優(yōu)先級外部中斷0中斷

高級定時(shí)器/計(jì)數(shù)器T0溢出中斷外部中斷1中斷定時(shí)器/計(jì)數(shù)器T1溢出中斷串行口中斷

低級49(1)按內(nèi)部查詢順序排隊(duì)當(dāng)多個(gè)中斷源同時(shí)向CPU發(fā)出中斷請求時(shí),CPU根據(jù)設(shè)計(jì)者事先確定的中斷源順序號的次序,響應(yīng)其中斷請求。4、中斷優(yōu)先級控制實(shí)現(xiàn)的功能50(2)實(shí)現(xiàn)中斷嵌套當(dāng)CPU正在處理一個(gè)中斷請求時(shí),又出現(xiàn)了另一個(gè)優(yōu)先級比它高的中斷請求,這時(shí),CPU就暫時(shí)中止執(zhí)行對原來優(yōu)先級較低的中斷源的服務(wù)程序,保護(hù)當(dāng)前斷點(diǎn),轉(zhuǎn)去響應(yīng)優(yōu)先級更高的中斷請求,并為它服務(wù)。待服務(wù)結(jié)束,再繼續(xù)執(zhí)行原來較低級的中斷服務(wù)程序。該過程稱為中斷嵌套。該中斷系統(tǒng)稱為多級中斷系統(tǒng)。二級中斷嵌套的中斷過程如圖5-9所示。51圖5-9二級中斷嵌套CPU在執(zhí)行主程序低級中斷請求響應(yīng)低級中斷請求CPU執(zhí)行低級中斷服務(wù)程序高級中斷請求響應(yīng)高級中斷請求CPU執(zhí)行高級中斷服務(wù)程序返回低級中斷程序返回主程序52例5-2設(shè)8031的片外中斷為高優(yōu)先級,片內(nèi)中斷為低優(yōu)先級。設(shè)置IP相應(yīng)值。解:(IP)=00000101B=05H(a)用字節(jié)操作指令

MOVIP,#05H;或MOV0B8H,#05H;(b)用位操作指令

SETBPX0SETBPX1CLRPSCLRPT0CLRPT153§5.4.1中斷處理過程的三個(gè)階段中斷處理過程可分為:中斷響應(yīng)中斷處理中斷返回

中斷處理的大致流程如圖5-10所示?!?.4中斷響應(yīng)及處理過程54圖5-10中斷處理的大致流程保護(hù)現(xiàn)場為外設(shè)服務(wù)恢復(fù)現(xiàn)場主程序NKN+mK+1返回中斷處理55§5.4.2中斷響應(yīng)一、中斷響應(yīng)條件二、中斷響應(yīng)操作過程三、中斷響應(yīng)時(shí)間56一、中斷響應(yīng)條件①有中斷源發(fā)出中斷請求。②中斷總允許位EA=1,即CPU中斷。③申請中斷的中斷源的中斷允許位為1,即中斷沒有被屏蔽。④無同級或更高級中斷正在被服務(wù)。⑤當(dāng)前的指令周期已經(jīng)結(jié)束。⑥若現(xiàn)行指令為RETI或是訪問IE或IP指令時(shí),該指令以及緊接著的另一條指令已執(zhí)行完。57二、中斷響應(yīng)操作過程1、中斷響應(yīng)操作過程2、各中斷源及其對應(yīng)的矢量地址581、中斷響應(yīng)操作過程⑴把當(dāng)前PC值壓入堆棧,保護(hù)斷點(diǎn)。⑵將相應(yīng)的中斷服務(wù)程序的入口地址送入PC。⑶對有些中斷源,CPU會自動(dòng)清除中斷標(biāo)志。⑷執(zhí)行中斷服務(wù)程序。⑸執(zhí)行到返回指令RETI,中斷服務(wù)程序結(jié)束,將堆棧內(nèi)容彈出到PC,返回到原來斷點(diǎn)繼續(xù)執(zhí)行。592、各中斷源及其對應(yīng)的矢量地址60三、中斷響應(yīng)時(shí)間CPU不是在任何情況下都對中斷請求予以響應(yīng),而不同的情況下對中斷響應(yīng)的時(shí)間是不同的。對于順利的中斷響應(yīng),其最短的響應(yīng)時(shí)間為3個(gè)機(jī)器周期。對于受阻的中斷響應(yīng),則響應(yīng)時(shí)間會更長一些。若中斷系統(tǒng)只有一個(gè)中斷源,則響應(yīng)時(shí)間為3~8個(gè)機(jī)器周期之間。61一、什么是中斷處理CPU響應(yīng)中斷后即轉(zhuǎn)入中斷服務(wù)程序的入口,執(zhí)行中斷服務(wù)程序。從中斷服務(wù)程序的第一條指令開始到返回指令為止,這個(gè)過程稱為中斷處理或中斷服務(wù)?!?.4.3中斷處理62二、中斷處理包括的內(nèi)容不同的中斷源服務(wù)的內(nèi)容及要求各不相同,其處理過程也就有所區(qū)別。一般情況,中斷處理包括兩部分內(nèi)容:1、保護(hù)現(xiàn)場:如在中斷服務(wù)程序中要用到PSW、工作寄存器和SFR等寄存器時(shí),則在進(jìn)入中斷服務(wù)之前應(yīng)將它們的內(nèi)容保護(hù)起來,在中斷結(jié)束、執(zhí)行RETI指令前應(yīng)恢復(fù)現(xiàn)場。2、為中斷源服務(wù):針對中斷源的具體要求進(jìn)行相應(yīng)的處理。63三、編寫中斷服務(wù)程序時(shí)注意問題①在中斷矢量地址單元處放一條無條件轉(zhuǎn)移指令,使中斷服務(wù)程序可靈活地安排在64KBROM的任何空間。②在中斷服務(wù)程序中,應(yīng)注意用軟件保護(hù)現(xiàn)場,以免中斷返回后丟失原來寄存器、累加器中的信息。③若要在執(zhí)行當(dāng)前中斷程序時(shí)禁止更高優(yōu)先級中斷,可以先用軟件關(guān)閉CPU中斷或禁止某中斷源中斷,在中斷返回前再開放中斷。64§5.4.4中斷返回在中斷服務(wù)程序中,最后一條指令必須為中斷返回指令RETI。CPU執(zhí)行該指令時(shí),一方面清除中斷響應(yīng)時(shí)所置位的“優(yōu)先級生效”觸發(fā)器,另一方面從當(dāng)前棧頂彈出斷點(diǎn)地址送入程序計(jì)數(shù)器PC,從而返回主程序。注意在中斷服務(wù)程序中,PUSH和POP指令必須成對使用,否則,不能正確返回?cái)帱c(diǎn)。65§5.5外部中斷擴(kuò)展方法89C51單片機(jī)有兩個(gè)外部中斷請求輸入端(INT0和INT1)。實(shí)際應(yīng)用中,若外部中斷源有兩個(gè)以上,則需要擴(kuò)展外部中斷源。66§5.5.1利用定時(shí)器擴(kuò)展外部中斷源89C51單片機(jī)有兩個(gè)定時(shí)器,都具有兩個(gè)內(nèi)部中斷標(biāo)志和外部計(jì)數(shù)輸入引腳。當(dāng)定時(shí)器設(shè)置為計(jì)數(shù)方式時(shí),計(jì)數(shù)初值設(shè)置為滿量程FFH。一旦外部信號從計(jì)數(shù)器引腳輸入一個(gè)負(fù)跳變信號,計(jì)數(shù)器加1產(chǎn)生溢出中斷,從而轉(zhuǎn)去處理該外部中斷源的請求。將外部中斷源信號接至T0(P3.4)或T1(P3.5)引腳;該定時(shí)器的溢出中斷標(biāo)志及中斷服務(wù)程序入口就可作為擴(kuò)充外部中斷源的標(biāo)志和中斷服務(wù)程序入口。67§5.5.2中斷加查詢擴(kuò)展外部中斷源每一根中斷輸入線可以通過“線或”的關(guān)系連接多個(gè)外部中斷源,同時(shí)利用輸入端口線作為各個(gè)中斷源的識別線。具體線路如圖5-11所示。68圖5—11多個(gè)外部中斷源連接法INT1INT0P1.3P1.2P1.1P1.089C51裝置1裝置2裝置3裝置4+5V門電路應(yīng)為OC門或OD門69

DV1:…

裝置1的中斷服務(wù)程序

AJMPEXITDV2:…

裝置2的中斷服務(wù)程序

AJMPEXITDV3:…

裝置3的中斷服務(wù)程序

AJMPEXITDV4:…

裝置4的中斷服務(wù)程序

AJMPEXIT

ORG0003HLJMPINTRP;INT0中斷服務(wù)程序入口

ORG 1000HINTRP:PUSHPSW;PUSHAJB P1.0,DV1JB P1.1,DV2JB P1.2,DV3JB P1.3,DV4EXIT:POP APOPPSW

RETIINT0中斷服務(wù)程序是一個(gè)中斷查詢程序701、主程序的起始地址MCS-51系列單片機(jī)復(fù)位后,(PC)=0000H0003H~002BH分別為5個(gè)中斷源的入口地址。編程時(shí)應(yīng)在0000H處寫一條跳轉(zhuǎn)指令(一般為長跳轉(zhuǎn)指令),主程序是以跳轉(zhuǎn)的目標(biāo)地址作為起始地址開始編寫,一般從0030H開始,如圖5-12所示。§5.6中斷程序舉例§5.6.1主程序710000HLJMP00300030H主程序圖5-12主程序地址722、主程序的初始化內(nèi)容初始化:將用到的內(nèi)部部件或擴(kuò)展芯片進(jìn)行初始工作狀態(tài)設(shè)定。單片機(jī)復(fù)位后,特殊功能寄存器IE、IP內(nèi)容均為00H,所以應(yīng)對IE、IP進(jìn)行初始化編程,以開放中斷,允許某些中斷源中斷和設(shè)置中斷優(yōu)先級等。73§5.6.2中斷服務(wù)程序當(dāng)CPU接收到中斷請求信號并予以響應(yīng)后,CPU把當(dāng)前的PC內(nèi)容壓入堆棧進(jìn)行保護(hù),然后轉(zhuǎn)入響應(yīng)的中斷服務(wù)程序入口處執(zhí)行。1、中斷服務(wù)程序的起始地址2、中斷服務(wù)程序編制中的注意事項(xiàng)741、中斷服務(wù)程序的起始地址中斷系統(tǒng)對五個(gè)中斷源分別規(guī)定了各自的入口地址,但這些入口地址相距很近(8個(gè)字節(jié))。如中斷服務(wù)程序的指令代碼少于8個(gè)字節(jié),則可從規(guī)定的中斷服務(wù)程序入口地址開始,直接編寫中斷服務(wù)程序;如中斷服務(wù)程序的指令代碼大于8個(gè)字節(jié),則應(yīng)采用與主程序相同的方法,在相應(yīng)的入口處寫一條跳轉(zhuǎn)指令,并以跳轉(zhuǎn)指令的目標(biāo)地址作為中斷服務(wù)程序的起始地址進(jìn)行編程。751、中斷服務(wù)程序的起始地址以INT0為例,中斷矢量地址為0003H,中斷服務(wù)程序從0200H開始。如圖5-13所示。0003HLJMP02000200H中斷服務(wù)程序圖5-13中斷服務(wù)程序地址762、中斷服務(wù)程序編制中的注意事項(xiàng)①

視需要確定是否保護(hù)現(xiàn)場。②及時(shí)清除那些不能被硬件自動(dòng)清除的中斷請求標(biāo)志,以免產(chǎn)生錯(cuò)誤的中斷。③中斷服務(wù)程序中的壓棧與彈棧指令必須成對使用,以確保中斷服務(wù)程序的正確返回。④主程序和中斷服務(wù)程序之間的參數(shù)傳遞與主程序和子程序的參數(shù)傳遞方式相同。77例5-3外部中斷實(shí)驗(yàn)例5-3:如圖5-14所示,將P1口的P1.4~P1.7作為輸入位,P1.0~P1.3作為輸出位。要求利用8031將開關(guān)所設(shè)的數(shù)據(jù)讀入單片機(jī)內(nèi),并依次通過P1.0~P1.3輸出,驅(qū)動(dòng)發(fā)光二極管,以檢查P1.4~P1.7輸入的電平情況(若輸入為高電平則相應(yīng)的LED亮)。

現(xiàn)要求采用中斷邊沿觸發(fā)方式,每中斷一次,完成一次讀/寫操作?!?.6.3中斷服務(wù)程序舉例78P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0INT08031

+5V+5V+5V+5V+5V&&12S1圖5—14外部中斷實(shí)驗(yàn)79例5-3解:如圖所示,采用外部中斷0,中斷申請從INT0輸入,并采用了去抖動(dòng)電路。當(dāng)P1.0~P1.3的任何一位輸出為1時(shí),相應(yīng)的發(fā)光二極管就會發(fā)光。當(dāng)開關(guān)S1閉合時(shí),發(fā)出中斷請求。中斷服務(wù)程序的矢量地址為0003H。80例5-3源程序如下:

ORG0000HSJMPMAIN;上電,轉(zhuǎn)向主程序

ORG0003H;外部中斷0入口地址

SJMPINSER;轉(zhuǎn)向中斷服務(wù)程序81例5-3

ORG0030H;主程序MAIN:SETBEX0;允許外部中斷0中斷

SETBIT0;選擇邊沿觸發(fā)方式

SETBEA;CPU開中斷HERE:SJMPHERE;等待中斷

82例5-3

ORG0200H;中斷服務(wù)程INSER:MOVP1,#0F0H;設(shè)P1.4~P1.7為輸入

MOVA,P1;讀取開關(guān)狀態(tài)

SWAPA;A的高、低四位互換

MOVP1,A;輸出驅(qū)動(dòng)LED發(fā)光

RETI;中斷返回

END83例5-4利用中斷顯示系統(tǒng)故障如圖5-15所示,此中斷電路可實(shí)現(xiàn)系統(tǒng)的故障顯示。當(dāng)系統(tǒng)的各部分正常工作時(shí),四個(gè)故障源的輸入均為低電平,顯示燈全不亮。當(dāng)有某個(gè)部分出現(xiàn)故障時(shí),則相應(yīng)的輸入線由低電平變?yōu)楦唠娖剑鄳?yīng)的發(fā)光二極管亮。84INT0P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.78031RRRRLEDLEDLEDLED圖5-15利用中斷顯示系統(tǒng)故障+85例5-4解:如圖所示,當(dāng)某一個(gè)故障信號輸入線由低電平變?yōu)楦唠娖綍r(shí),會通過INT0線引起8031中斷(邊沿觸發(fā)方式)。在中斷服務(wù)程序中,應(yīng)將各故障源的信號讀入,并加以查詢,以進(jìn)行相應(yīng)的發(fā)光顯示。86例5-4源程序如下:

ORG0000HSJMPMAIN;上電,轉(zhuǎn)向主程序

ORG0003H;外部中斷0入口地址

SJMPINSER;轉(zhuǎn)向中斷服務(wù)程序

MAIN:ANLP1,#55H;P1.0,P1.2,P1.4,P1.6為輸入

P1.1,P1.3,P1.5,P1.7為輸出

SETBEX0;允許外部中斷0中斷

SETBIT0;選擇邊沿觸發(fā)方式

SETBEA;CPU開中斷HERE:SJMPHERE;等待中斷87例5-4INSER:JNBP1.0,L1;查詢中斷源,(P1.0)=0,轉(zhuǎn)L1SETBP1.1;是P1.0引起的中斷,使相應(yīng)的二極管亮

SJMPL4L1:JNBP1.2,L2;繼續(xù)查詢

SETBP1.3 SJMPL4L2:JNBP1.4,L3SETBP1.5 SJMPL4L3:JNBP1.6,L4;SETBP1.7L4:

RETIEND88例5-5要求每次按動(dòng)按鍵,使外接發(fā)光二極管LED改變一次亮滅狀態(tài)。(INT0輸入按鍵信號,P1.0輸出改變LED狀態(tài))

ORG 0000H;復(fù)位入口 AJMPMAIN ORG 0003H ;中斷入口 AJMP PINT0 ORG 0100H ;主程序MAIN:SETB EA ;開總允許開關(guān)

SETB EX0 ;開INT0中斷

SETB IT0 ;負(fù)跳變觸發(fā)中斷H: SJMP H ;執(zhí)行其它任務(wù)

ORG 0200H ;中斷服務(wù)程序PINT0:CPLP1.0 ;改變LED

RE

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論