中斷系統(tǒng)及其應(yīng)用_第1頁(yè)
中斷系統(tǒng)及其應(yīng)用_第2頁(yè)
中斷系統(tǒng)及其應(yīng)用_第3頁(yè)
中斷系統(tǒng)及其應(yīng)用_第4頁(yè)
中斷系統(tǒng)及其應(yīng)用_第5頁(yè)
已閱讀5頁(yè),還剩41頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

中斷系統(tǒng)及其應(yīng)用第一頁(yè),共四十六頁(yè),編輯于2023年,星期六本章主要內(nèi)容中斷基本概念中斷系統(tǒng)結(jié)構(gòu)及中斷控制中斷處理過(guò)程第二頁(yè),共四十六頁(yè),編輯于2023年,星期六第一節(jié)中斷基本概念一、為什么引入中斷概念?單片機(jī)系統(tǒng)運(yùn)行時(shí),CPU經(jīng)常需要與外部輸入輸出設(shè)備交換信息,但CPU速度比外設(shè)速度要快得多,為了解決快速CPU與慢速外設(shè)間的矛盾,單片機(jī)系統(tǒng)中需要廣泛采用中斷控制方式。為了滿(mǎn)足單片機(jī)CPU與外設(shè)交換信息的需要!單片機(jī)CPU與外設(shè)交換信息的方式通常有三種:無(wú)條件傳送方式查詢(xún)傳送方式中斷傳送方式二、單片機(jī)CPU與外設(shè)交換信息的方式第三頁(yè),共四十六頁(yè),編輯于2023年,星期六①無(wú)條件傳送方式無(wú)條件傳送方式又稱(chēng)同步傳送,此方式下,CPU與外設(shè)之間進(jìn)行數(shù)據(jù)傳送時(shí),不考慮外設(shè)狀態(tài),即CPU認(rèn)為外設(shè)在任何條件下都是處于“準(zhǔn)備好”的狀態(tài)。因此,這種傳送方式下,CPU不需要了解外設(shè)狀態(tài)信息,只需要在程序中加入訪問(wèn)外設(shè)的指令,就可以實(shí)現(xiàn)CPU與外設(shè)間的數(shù)據(jù)傳送。該方式簡(jiǎn)單,但因?yàn)椴恢劳庠O(shè)的狀態(tài),導(dǎo)致傳送數(shù)據(jù)時(shí)容易出錯(cuò),而且效率不高,已經(jīng)很少被使用!第四頁(yè),共四十六頁(yè),編輯于2023年,星期六②查詢(xún)傳送方式查詢(xún)傳送方式又稱(chēng)條件傳送方式。CPU在傳送數(shù)據(jù)之前,首先查詢(xún)外部設(shè)備是否處于“準(zhǔn)備好”的狀態(tài)。輸入數(shù)據(jù)時(shí),需要知道外設(shè)是否已經(jīng)把要輸入的數(shù)據(jù)準(zhǔn)備好;輸出數(shù)據(jù)時(shí),則需要知道外設(shè)是否已經(jīng)把上一次單片機(jī)輸出的數(shù)據(jù)處理完畢。通過(guò)查詢(xún),確信外設(shè)已處于“準(zhǔn)備好”狀態(tài)時(shí),CPU才發(fā)出訪問(wèn)外設(shè)的命令,實(shí)現(xiàn)數(shù)據(jù)的輸入或輸出,否則,CPU就處于查詢(xún)等待狀態(tài)。

該方式保證了數(shù)據(jù)傳送的正確性,但需要查詢(xún)等待過(guò)程!特別是在連續(xù)進(jìn)行數(shù)據(jù)傳送時(shí),由于CPU的速度比外設(shè)快很多,通常,CPU在完成一次數(shù)據(jù)傳送后,要等待很長(zhǎng)的時(shí)間,才能進(jìn)行下一次的傳送,在等待過(guò)程中,CPU不能進(jìn)行其他的操作,所以效率比較低。第五頁(yè),共四十六頁(yè),編輯于2023年,星期六因此,又要保證數(shù)據(jù)傳送的正確性,又要提高效率,最有效的途徑就是采用中斷傳送方式!③中斷傳送方式CPU啟動(dòng)外設(shè)后,外設(shè)與CPU并行獨(dú)立工作,此時(shí),CPU可以做其他工作,一旦外設(shè)需要CPU處理時(shí),由外設(shè)向CPU提出請(qǐng)求,在滿(mǎn)足一定條件下,CPU暫時(shí)中止當(dāng)前的工作(即現(xiàn)在執(zhí)行的程序),轉(zhuǎn)去為外設(shè)服務(wù)(執(zhí)行外設(shè)服務(wù)程序),外設(shè)請(qǐng)求服務(wù)處理完后,再回到原來(lái)被中斷的地方,繼續(xù)原來(lái)的工作(繼續(xù)執(zhí)行原來(lái)的程序)。那到底什么是中斷呢?第六頁(yè),共四十六頁(yè),編輯于2023年,星期六三、中斷概念在單片機(jī)中,當(dāng)CPU在執(zhí)行程序時(shí),由單片機(jī)內(nèi)部或外部的原因引起的隨機(jī)事件要求CPU暫時(shí)停止正在執(zhí)行的程序,而轉(zhuǎn)向執(zhí)行一個(gè)用于處理該隨機(jī)事件的程序,處理完后又返回被中止的程序斷點(diǎn)處繼續(xù)執(zhí)行,這一過(guò)程就稱(chēng)為中斷。中斷流程圖第七頁(yè),共四十六頁(yè),編輯于2023年,星期六中斷源分類(lèi)四、其他相關(guān)概念單片機(jī)處理中斷的4個(gè)步驟中斷請(qǐng)求中斷響應(yīng)中斷處理中斷返回中斷源中斷請(qǐng)求——向CPU發(fā)出中斷請(qǐng)求的來(lái)源,或引起中斷的原因。——中斷源要求服務(wù)的請(qǐng)求。一類(lèi)來(lái)自單片機(jī)內(nèi)部,稱(chēng)之為內(nèi)部中斷源;一類(lèi)來(lái)自單片機(jī)外部,稱(chēng)之為外部中斷源。第八頁(yè),共四十六頁(yè),編輯于2023年,星期六例:生活中的“中斷”。某人——CPU電話鈴響了——中斷源某人“看報(bào)”——正常運(yùn)行的程序去接電話——響應(yīng)中斷與朋友聊天——中斷服務(wù)程序某人繼續(xù)看報(bào)——退出中斷服務(wù)程序,繼續(xù)運(yùn)行正常的程序。第九頁(yè),共四十六頁(yè),編輯于2023年,星期六五、中斷的一般功能中斷系統(tǒng)的功能一般包括以下幾點(diǎn):①實(shí)現(xiàn)中斷優(yōu)先級(jí)排隊(duì)②實(shí)現(xiàn)中斷嵌套③自動(dòng)中斷響應(yīng)④實(shí)現(xiàn)中斷及返回⑤實(shí)現(xiàn)中斷撤除⑥分時(shí)操作,提高CPU的工作效率⑦實(shí)時(shí)處理,提高實(shí)時(shí)數(shù)據(jù)的處理時(shí)效第十頁(yè),共四十六頁(yè),編輯于2023年,星期六①實(shí)現(xiàn)中斷優(yōu)先級(jí)排隊(duì)通常,單片機(jī)中有多個(gè)中斷源,設(shè)計(jì)人員能按輕重緩急給每個(gè)中斷源的中斷請(qǐng)求賦予一定的中斷優(yōu)先級(jí)。當(dāng)兩個(gè)或兩個(gè)以上的中斷源同時(shí)請(qǐng)求中斷時(shí),CPU可通過(guò)中斷優(yōu)先級(jí)排隊(duì)電路首先響應(yīng)中斷優(yōu)先級(jí)高的中斷請(qǐng)求,等到處理完優(yōu)先級(jí)高的中斷請(qǐng)求后,再來(lái)響應(yīng)優(yōu)先級(jí)低的中斷請(qǐng)求。CPU在響應(yīng)某一中斷源中斷請(qǐng)求而進(jìn)行中斷處理時(shí),若有中斷優(yōu)先級(jí)更高的中斷源發(fā)出中斷請(qǐng)求,CPU會(huì)暫停正在執(zhí)行的中斷服務(wù)程序,轉(zhuǎn)向執(zhí)行中斷優(yōu)先級(jí)更高的中斷源的中斷服務(wù)程序,等處理完這個(gè)高優(yōu)先級(jí)的中斷請(qǐng)求后,再返回來(lái)繼續(xù)執(zhí)行被暫停的中斷服務(wù)程序。這個(gè)過(guò)程稱(chēng)為中斷嵌套。②實(shí)現(xiàn)中斷嵌套第十一頁(yè),共四十六頁(yè),編輯于2023年,星期六③自動(dòng)中斷響應(yīng)

中斷源向CPU發(fā)出的中斷請(qǐng)求是隨機(jī)的。通常,CPU總是在每條指令的最后狀態(tài)對(duì)中斷請(qǐng)求信號(hào)進(jìn)行檢測(cè)。當(dāng)某一中斷源發(fā)出中斷請(qǐng)求時(shí),CPU能根據(jù)相關(guān)條件(如中斷優(yōu)先級(jí)、是否允許中斷)進(jìn)行判斷,決定是否響應(yīng)這個(gè)中斷請(qǐng)求。若允許響應(yīng)這個(gè)中斷請(qǐng)求,CPU在執(zhí)行完相關(guān)指令后,會(huì)自動(dòng)完成斷點(diǎn)地址壓入堆棧、中斷矢量地址送入程序計(jì)數(shù)器PC、撤除本次中斷請(qǐng)求標(biāo)志,轉(zhuǎn)入執(zhí)行相應(yīng)中斷服務(wù)程序。第十二頁(yè),共四十六頁(yè),編輯于2023年,星期六④實(shí)現(xiàn)中斷及返回

CPU響應(yīng)某一中斷源的中斷請(qǐng)求,轉(zhuǎn)入執(zhí)行相應(yīng)中斷服務(wù)程序,在執(zhí)行中斷服務(wù)程序最后的中斷返回指令時(shí),會(huì)自動(dòng)彈出堆棧區(qū)中保存的斷點(diǎn)地址,返回到中斷前的原程序中。

第十三頁(yè),共四十六頁(yè),編輯于2023年,星期六⑤實(shí)現(xiàn)中斷撤除在響應(yīng)中斷申請(qǐng)以后,返回主程序之前,中斷請(qǐng)求應(yīng)該撤除,否則,就等于中斷申請(qǐng)依然存在,這將影響對(duì)其他中斷申請(qǐng)的響應(yīng)。中斷的撤除與返回指令并不是一回事,有的中斷系統(tǒng)在響應(yīng)任何中斷申請(qǐng)之后,都能撤除該中斷的申請(qǐng)標(biāo)志。但MCS-51中斷系統(tǒng)只能對(duì)一部分中斷申請(qǐng)?jiān)陧憫?yīng)后自動(dòng)撤除。⑥分時(shí)操作,提高CPU的工作效率中斷系統(tǒng)的存在,可以使CPU與外設(shè)并行工作。⑦實(shí)時(shí)處理,提高實(shí)時(shí)數(shù)據(jù)的處理時(shí)效當(dāng)單片機(jī)用于實(shí)時(shí)控制時(shí),請(qǐng)求CPU提供服務(wù)是隨機(jī)發(fā)生的,有了中斷系統(tǒng),CPU就可以立即響應(yīng)并加以處理。第十四頁(yè),共四十六頁(yè),編輯于2023年,星期六六、中斷服務(wù)程序與子程序的異同同:都屬于子程序異:調(diào)用子程序的時(shí)間是事先安排好的,但調(diào)用中斷服務(wù)程序是由外設(shè)決定的,并不是人為安排的。第十五頁(yè),共四十六頁(yè),編輯于2023年,星期六第二節(jié)中斷系統(tǒng)結(jié)構(gòu)及中斷控制一、MCS-51系列單片機(jī)中斷系統(tǒng)結(jié)構(gòu)第十六頁(yè),共四十六頁(yè),編輯于2023年,星期六從上圖可以看出,MCS-51系列單片機(jī)有:5個(gè)中斷請(qǐng)求源:INT0、INT1、T0、T1、Tx/Rx4個(gè)中斷控制寄存器:IE、IP、TCON、SCON分別用于確定中斷的類(lèi)型、中斷源的優(yōu)先級(jí)以及中斷的開(kāi)、閉。二、MCS-51系列單片機(jī)中斷源①I(mǎi)NT0:外部中斷0請(qǐng)求,低電平有效②INT1:外部中斷1請(qǐng)求,低電平有效③T0:定時(shí)/計(jì)數(shù)器0溢出中斷請(qǐng)求④T1:定時(shí)/計(jì)數(shù)器1溢出中斷請(qǐng)求⑤Tx/Rx:串行口通信中斷請(qǐng)求當(dāng)外部對(duì)應(yīng)引腳為低電平時(shí),便請(qǐng)求中斷。當(dāng)定時(shí)/計(jì)數(shù)器中計(jì)數(shù)結(jié)果發(fā)生計(jì)數(shù)溢出時(shí),請(qǐng)求中斷。串行口完成一幀數(shù)據(jù)的發(fā)送或接收時(shí),便請(qǐng)求中斷。第十七頁(yè),共四十六頁(yè),編輯于2023年,星期六中斷源及對(duì)應(yīng)的中斷服務(wù)程序入口地址:外部中斷0(INT0)0003H外部中斷1(INT1)0013H定時(shí)器T0中斷(T0)000BH定時(shí)器T1中斷(T1)001BH串行口中斷0023H說(shuō)明:兩個(gè)相鄰中斷源中斷服務(wù)程序入口地址相距僅8個(gè)單元,一般的中斷服務(wù)程序8個(gè)存儲(chǔ)單元是遠(yuǎn)遠(yuǎn)不夠的,因此,通常會(huì)在相應(yīng)中斷服務(wù)程序入口地址單元存放一條無(wú)條件轉(zhuǎn)移指令LJMP,這樣,就可以把中斷服務(wù)程序放在其他區(qū)域執(zhí)行。第十八頁(yè),共四十六頁(yè),編輯于2023年,星期六三、中斷控制4個(gè)特殊功能寄存器用于中斷控制。定時(shí)/計(jì)數(shù)控制器TCON串行口控制寄存器SCON中斷允許寄存器IE中斷優(yōu)先寄存器IP第十九頁(yè),共四十六頁(yè),編輯于2023年,星期六①定時(shí)/計(jì)數(shù)控制寄存器TCON(字節(jié)地址為88H)TF1—定時(shí)/計(jì)數(shù)器T1的溢出中斷請(qǐng)求標(biāo)志位。T1被啟動(dòng)計(jì)數(shù)后,從初值開(kāi)始加1計(jì)數(shù),直至計(jì)滿(mǎn)溢出,硬件使TF1=1,向CPU請(qǐng)求中斷。TF0—定時(shí)/計(jì)數(shù)器T0的溢出中斷請(qǐng)求標(biāo)志位。T0被啟動(dòng)計(jì)數(shù)后,從初值開(kāi)始加1計(jì)數(shù),直至計(jì)滿(mǎn)溢出,硬件使TF0=1,向CPU請(qǐng)求中斷。IE1—外部中斷1的中斷請(qǐng)求標(biāo)志位(INT1)IE0—外部中斷0的中斷請(qǐng)求標(biāo)志位(INT0)第二十頁(yè),共四十六頁(yè),編輯于2023年,星期六IT1—外部中斷1的中斷觸發(fā)控制位IT1=0,外部中斷1為電平觸發(fā)方式IT1=1,外部中斷1為邊沿觸發(fā)方式IT0—外部中斷0的中斷觸發(fā)控制位IT0=0,外部中斷0為電平觸發(fā)方式IT0=1,外部中斷0為邊沿觸發(fā)方式當(dāng)檢測(cè)到外部中斷引腳上存在有效中斷請(qǐng)求信號(hào)時(shí),由硬件使IE1=1或IE0=1,CPU響應(yīng)中斷,轉(zhuǎn)向中斷服務(wù)程序。第二十一頁(yè),共四十六頁(yè),編輯于2023年,星期六②串行口控制寄存器SCON(字節(jié)地址為98H)TI(Transmit)—串行口發(fā)送中斷請(qǐng)求標(biāo)志位CPU將一個(gè)數(shù)據(jù)寫(xiě)入發(fā)送緩沖器時(shí),就啟動(dòng)發(fā)送,每發(fā)送完一幀串行數(shù)據(jù)后,硬件自動(dòng)置位TI,使TI=1,則產(chǎn)生中斷,要求CPU相應(yīng)中斷,再將下一個(gè)數(shù)據(jù)寫(xiě)入發(fā)送緩沖器。必須在中斷服務(wù)程序中用軟件對(duì)TI標(biāo)志清“0”!RI(Receive)—串行口接收中斷請(qǐng)求標(biāo)志位每接收完一個(gè)串行幀,就硬件置位RI。必須在中斷服務(wù)程序中用軟件對(duì)TI標(biāo)志清“0”!第二十二頁(yè),共四十六頁(yè),編輯于2023年,星期六③中斷允許寄存器IE(字節(jié)地址為A8H)EA—中斷允許總控制位EA=1,CPU打開(kāi)中斷(但各中斷源是允許還是禁止,將分別由各自的允許位確定)EA=0,CPU屏蔽所有中斷(即:若EA=0,則各中斷源的允許位即使是允許狀態(tài),也被禁止)ES—串行口中斷允許位ES=1,允許串行口中斷ES=0,禁止串行口中斷CPU對(duì)中斷源的開(kāi)放或屏蔽,由片內(nèi)的中斷允許寄存器IE控制。第二十三頁(yè),共四十六頁(yè),編輯于2023年,星期六ET1—定時(shí)/計(jì)數(shù)器T1的溢出中斷允許位EX1—外部中斷1(INT1)的中斷允許位ET0—定時(shí)/計(jì)數(shù)器T0的溢出中斷允許位EX0—外部中斷0(INT0)的中斷允許位ET1=1,允許T1中斷ET1=0,禁止T1中斷EX1=1,允許INT1中斷EX1=0,禁止INT1中斷ET0=1,允許T0中斷ET0=0,禁止T0中斷EX0=1,允許INT0中斷EX0=0,禁止INT0中斷即:對(duì)應(yīng)位為“1”,允許中斷;對(duì)應(yīng)位為“0”,禁止中斷。第二十四頁(yè),共四十六頁(yè),編輯于2023年,星期六例:設(shè)置允許片內(nèi)定時(shí)/計(jì)數(shù)器中斷,禁止其他中斷時(shí)IE寄存器的值。10001010解:則對(duì)應(yīng)IE寄存器的值如下所示法①字節(jié)操作指令MOVIE,#8AH法②位操作指令CLRES; CLREX1; CLREX0; SETBET0;SETBET1;SETBEA;禁止串行口中斷禁止外部中斷1中斷禁止外部中斷0中斷允許定時(shí)/計(jì)數(shù)器T0中斷允許定時(shí)/計(jì)數(shù)器T1中斷CPU開(kāi)總中斷第二十五頁(yè),共四十六頁(yè),編輯于2023年,星期六④中斷優(yōu)先級(jí)寄存器IP(字節(jié)地址為B8H)中斷優(yōu)先級(jí)—當(dāng)兩個(gè)或兩個(gè)以上的中斷源同時(shí)向CPU提出中斷申請(qǐng)時(shí),CPU會(huì)根據(jù)系統(tǒng)設(shè)計(jì)人員安排好的中斷源的優(yōu)先順序來(lái)依次響應(yīng)中斷。中斷嵌套—CPU正在處理一個(gè)中斷請(qǐng)求時(shí),又出現(xiàn)了另一個(gè)優(yōu)先級(jí)比它高的中斷請(qǐng)求,這時(shí),CPU就暫時(shí)中止對(duì)當(dāng)前優(yōu)先級(jí)較低的中斷源的服務(wù),轉(zhuǎn)去響應(yīng)優(yōu)先級(jí)更高的中斷請(qǐng)求,并為其服務(wù),待服務(wù)結(jié)束,再繼續(xù)執(zhí)行原來(lái)較低級(jí)的中斷服務(wù)程序。第二十六頁(yè),共四十六頁(yè),編輯于2023年,星期六MCS-51系列單片機(jī)可人工設(shè)置的中斷優(yōu)先級(jí)為2級(jí):高優(yōu)先級(jí)、低優(yōu)先級(jí),由中斷優(yōu)先級(jí)寄存器IP控制。PS—串行口中斷優(yōu)先控制位PS=1,高優(yōu)先級(jí)中斷;PS=0,低優(yōu)先級(jí)中斷。第二十七頁(yè),共四十六頁(yè),編輯于2023年,星期六PT1—定時(shí)器T1中斷優(yōu)先級(jí)控制位PT1=1,高優(yōu)先級(jí)中斷PT1=0,低優(yōu)先級(jí)中斷PX1—外部中斷1中斷優(yōu)先級(jí)控制位PX1=1,高優(yōu)先級(jí)中斷PX1=0,低優(yōu)先級(jí)中斷PT0—定時(shí)器T0中斷優(yōu)先級(jí)控制位PT0=1,高優(yōu)先級(jí)中斷PT0=0,低優(yōu)先級(jí)中斷PX0——外部中斷0中斷優(yōu)先級(jí)控制位PX0=1,高優(yōu)先級(jí)中斷PX0=0,低優(yōu)先級(jí)中斷即:對(duì)應(yīng)位為“1”,相應(yīng)中斷源設(shè)定為“高優(yōu)先級(jí)”中斷;對(duì)應(yīng)位為“0”,相應(yīng)中斷源設(shè)定為“低優(yōu)先級(jí)”中斷。第二十八頁(yè),共四十六頁(yè),編輯于2023年,星期六注意:當(dāng)系統(tǒng)復(fù)位時(shí),IP值為00H,即所有中斷源均被設(shè)置為低優(yōu)先級(jí)中斷!如果幾個(gè)同一優(yōu)先級(jí)的中斷源同時(shí)提出中斷申請(qǐng),則按自然優(yōu)先級(jí)來(lái)響應(yīng)中斷。中斷源外部中斷0(INT0)定時(shí)/計(jì)數(shù)器中斷(T0)外部中斷1(INT1)定時(shí)/計(jì)數(shù)器中斷(T1)串行口中斷自然優(yōu)先級(jí)最高級(jí)最低級(jí)第二十九頁(yè),共四十六頁(yè),編輯于2023年,星期六四、中斷系統(tǒng)初始化就是對(duì)之前所介紹的4個(gè)中斷控制寄存器的值進(jìn)行設(shè)置!步驟:①設(shè)定所用中斷源的中斷優(yōu)先級(jí)(IP)②若為外部中斷,設(shè)定是電平觸發(fā)還是邊沿觸發(fā)方式(TCON)③打開(kāi)相應(yīng)的中斷源中斷(IE)第三十頁(yè),共四十六頁(yè),編輯于2023年,星期六例:設(shè)定外部中斷1(INT1)為高優(yōu)先級(jí)中斷,用低電平觸發(fā)方式,對(duì)中斷系統(tǒng)初始化。中斷優(yōu)先級(jí)寄存器IP:---PSPT1PX1PT0PX0定時(shí)/計(jì)數(shù)控制寄存器TCON:TF1TR1TF0TR0IE1IT1IE0IT0中斷允許寄存器IE:EA--ESET1EX1ET0EX0解:題目中涉及到的中斷控制寄存器如下:第三十一頁(yè),共四十六頁(yè),編輯于2023年,星期六法①字節(jié)操作指令MOVIP,#04H;ANLTCON,#0FBH;MOVIE,#84H;設(shè)定中斷優(yōu)先級(jí)設(shè)定INT1中斷請(qǐng)求,且為低電平觸發(fā)方式設(shè)定相應(yīng)中斷源打開(kāi)法②位操作指令SETBPX1;CLRIT1;SETBEA;SETBEX1;設(shè)定INT1為高優(yōu)先級(jí)中斷設(shè)定INT1為低電平觸發(fā)打開(kāi)中斷允許總控制位打開(kāi)INT1的中斷允許位第三十二頁(yè),共四十六頁(yè),編輯于2023年,星期六第三節(jié)中斷處理過(guò)程中斷的處理包括以下四個(gè)過(guò)程:中斷請(qǐng)求中斷響應(yīng)中斷處理中斷返回第三十三頁(yè),共四十六頁(yè),編輯于2023年,星期六一、中斷請(qǐng)求中斷請(qǐng)求是中斷源向CPU發(fā)出請(qǐng)求中斷的信號(hào),要求CPU中斷原來(lái)執(zhí)行的程序,轉(zhuǎn)去為它服務(wù)。一般中斷請(qǐng)求信號(hào)可以是電平信號(hào),也可以是脈沖信號(hào)。中斷請(qǐng)求信號(hào)應(yīng)該已知保持到CPU作出反應(yīng)時(shí)為止。二、中斷響應(yīng)中斷響應(yīng)是在滿(mǎn)足CPU的中斷響應(yīng)條件后,CPU對(duì)中斷源中斷請(qǐng)求的回答。CPU的中斷響應(yīng)條件:(1)有中斷源發(fā)出中斷請(qǐng)求。(2)中斷總允許位EA=1。(3)請(qǐng)求中斷的中斷源的中斷允許位為1。第三十四頁(yè),共四十六頁(yè),編輯于2023年,星期六中斷處理就是執(zhí)行中斷服務(wù)程序,從中斷入口地址開(kāi)始執(zhí)行,直到返回指令(RETI)為止。此過(guò)程一般包括三部分內(nèi)容:(1)保護(hù)現(xiàn)場(chǎng)(2)處理中斷源的請(qǐng)求(3)恢復(fù)現(xiàn)場(chǎng)三、中斷處理四、中斷返回中斷返回是指中斷服務(wù)完成后,CPU返回到原程序的斷點(diǎn)(即原來(lái)斷開(kāi)的位置),繼續(xù)執(zhí)行原來(lái)的程序。中斷返回通過(guò)執(zhí)行中斷返回指令RETI來(lái)實(shí)現(xiàn)。

切忌:不能用RET指令代替RETI指令!第三十五頁(yè),共四十六頁(yè),編輯于2023年,星期六中斷請(qǐng)求的撤除CPU響應(yīng)某中斷請(qǐng)求后,在中斷返回前,應(yīng)該撤消該中斷請(qǐng)求,否則會(huì)引起另一次中斷。不同中斷源中斷請(qǐng)求的撤除方法是不一樣的。

在CPU響應(yīng)中斷后,硬件不能清除中斷請(qǐng)求標(biāo)志TI和RI,而要由軟件來(lái)清除相應(yīng)的標(biāo)志。①定時(shí)/計(jì)數(shù)器溢出中斷請(qǐng)求的撤除CPU在響應(yīng)中斷后,硬件會(huì)自動(dòng)清除中斷請(qǐng)求標(biāo)志TF0或TFl。②串行口中斷的撤除第三十六頁(yè),共四十六頁(yè),編輯于2023年,星期六外部中斷為電平觸發(fā)方式時(shí),CPU響應(yīng)中斷后,硬件會(huì)自動(dòng)清除中斷請(qǐng)求標(biāo)志IE0或IEl,但由于加到INT0或INT1引腳的外部中斷請(qǐng)求信號(hào)并未撤除,中斷請(qǐng)求標(biāo)志IE0或IEl會(huì)再次被置1,所以在CPU響應(yīng)中斷后應(yīng)立即撤除INT0或INT1引腳上的低電平。③外部中斷的撤除

外部中斷為邊沿觸發(fā)方式時(shí),CPU響應(yīng)中斷后,硬件會(huì)自動(dòng)清除中斷請(qǐng)求標(biāo)志IE0或IEl。例:P1口做輸出口,控制八只燈(P1口輸出低電平時(shí)燈被點(diǎn)亮),利用手控單脈沖信號(hào)作為外部中斷信號(hào),控制八只燈按一定的規(guī)律循環(huán)點(diǎn)亮。解:手控單脈沖信號(hào)作為外部中斷信號(hào)由INT0(P3.2)管腳輸入①設(shè)置中斷允許寄存器IE中的EA、EX0位為1;②只有一個(gè)中斷源可不設(shè)置優(yōu)先級(jí)別;③中斷觸發(fā)方式設(shè)為邊沿觸發(fā),控制位IT0應(yīng)設(shè)置為1。第三十七頁(yè),共四十六頁(yè),編輯于2023年,星期六參考程序:ORG0000H;LJMPMAIN;ORG0003H;LJMPINT;ORG0050H;MAIN:SETBEA;SETBEX0;SETBIT0;MOVA,#0FEHMOVP1,ASJMP$;ORG0100H;INT:RLA;MOVP1,ARETIEND程序入口轉(zhuǎn)向主程序外部中斷0的入口地址轉(zhuǎn)向中斷服務(wù)程序主程序存放開(kāi)始地址打開(kāi)中斷允許總控制位打開(kāi)INT0的中斷允許位INT0的中斷觸發(fā)方式為邊沿觸發(fā)等待中斷中斷程序存放開(kāi)始地址中斷服務(wù)程序第三十八頁(yè),共四十六頁(yè),編輯于2023年,星期六例:將P1口的P1.0~P1.3作為輸入位,P1.4~P1.7作為輸出位,要求利用8051單片機(jī)外部中斷方式,將通過(guò)開(kāi)關(guān)所設(shè)的數(shù)據(jù)讀入單片機(jī),然后輸出驅(qū)動(dòng)發(fā)光二極管,以驗(yàn)證低四位輸入與高四位輸出是否相符,采用外部中斷0邊沿觸發(fā)方式。分析:①當(dāng)S4接a處時(shí),a為低電平,b為高電平,則輸出到INT0為高電平,中斷無(wú)效;②當(dāng)S4接b處時(shí),a為高電平,b為低電平,則輸出到INT0為低電平,此時(shí)產(chǎn)生外部中斷;③中斷源為INT0,對(duì)應(yīng)中斷入口地址為0003H;④輸入P1.0~P1.3對(duì)應(yīng)輸出P1.4~P1.7,即P1.0對(duì)應(yīng)P1.4,當(dāng)P1.0的S0關(guān)閉后,P1.0為低電平,輸出到對(duì)應(yīng)P1.4,則發(fā)光二極管導(dǎo)通發(fā)光。第三十九頁(yè),共四十六頁(yè),編輯于2023年,星期六參考程序:ORG0000HAJMPMAIN;ORG0003HAJMPINT0;ORG0100H;MAIN:SETBEX0;SETBIT0;SETBEA;HERE:SJMPHERE;ORG0200H;INT0:MOVA,#0FFHMOVP1,A;MOVA,P1;SWAPA;MOVP1,A;RETI;END轉(zhuǎn)向主程序轉(zhuǎn)向中斷服務(wù)子程序主程序允許外部中斷0中斷選擇邊沿觸發(fā)方式打開(kāi)CPU總中斷等待中斷中斷服務(wù)子程序先給P1口賦8位高電平,使二極管都滅正確輸入P1口數(shù)據(jù)P1口數(shù)據(jù)高4位與低4位互換輸出驅(qū)動(dòng)發(fā)光二極管發(fā)光中斷返回第四十頁(yè),共四十六頁(yè),編輯于2023年,星期六練習(xí)題1:1、試編寫(xiě)一段對(duì)中斷系統(tǒng)進(jìn)行初始

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論