微型計算機接口第5章中斷技術.ppt
《微型計算機接口第5章中斷技術.ppt》由會員分享,可在線閱讀,更多相關《微型計算機接口第5章中斷技術.ppt(79頁珍藏版)》請在裝配圖網(wǎng)上搜索。
第5章中斷技術,本章內(nèi)容中斷技術的基本概念中斷技術的工作原理系統(tǒng)配置的中斷資源的應用中斷向量修改及中斷服務程序的編寫,1,5.1中斷基本概念中斷是指CPU在正常運行程序時,由于外部/內(nèi)部事件,或由程序引起CPU中斷正在運行的程序,而轉(zhuǎn)到為中斷事件服務的程序中去,服務完畢,再返回執(zhí)行原程序,這一過程稱為中斷。外部中斷的特征:具有隨機性。,2,5.2中斷的類型5.2.1外部中斷1.可屏蔽中斷INTR這是由外部設備通過中斷控制器用中斷請求線INTR向微處理器申請而產(chǎn)生的中斷,但微處理器可以用CLI指令來屏蔽(禁止),即不響應它的中斷請求,因此把這種中斷稱為可屏蔽中斷。2.不可屏蔽中斷NMI由系統(tǒng)硬件引發(fā)的中斷,如協(xié)處理器出錯、通道等。它的優(yōu)先級高于外部硬件中斷,且不受中斷允許標志位(IF)的影響,所以是不可屏蔽中斷。,3,5.2.2內(nèi)部中斷內(nèi)部中斷是由用戶在程序中發(fā)出中斷指令INTnH產(chǎn)生的,指令中的操作數(shù)n稱為軟中斷號。內(nèi)部中斷包括DOS中斷功能和BIOS中斷功能兩部分,可供用戶在編寫應用程序是調(diào)用。1.DOS功能調(diào)用DOS是存放在磁盤上的操作系統(tǒng)軟件,其中內(nèi)部中斷INT21H是DOS的內(nèi)核。它是一個很重要、功能龐大的中斷服務程序,包含0~6CH個子功能,包括對設備、文件、目錄及內(nèi)存的管理功能,涉及各個方面,可供系統(tǒng)軟件和應用程序調(diào)用,同時,由于它處在ROM-BIOS層的上一個層次,與系統(tǒng)硬件層有ROM-BIOS在邏輯上的隔離,所以,它對系統(tǒng)硬件的依賴性大大減少,兼容性好。2.BIOS功能調(diào)用BIOS是一組存放在ROM中、獨立于DOS的I/O中斷服務程序。它在系統(tǒng)硬件的上一層,直接對系統(tǒng)中的I/O設備進行設備級控制,可供上層軟件和應用程序調(diào)用。,4,除了上述外部中斷和內(nèi)部中斷兩類中斷之外,微機的中斷系統(tǒng)還包括一些特殊中斷,這些中斷既不是由外部設備提出申請而產(chǎn)生的,也不是由用戶在程序中發(fā)中斷指令INTnH而發(fā)生的,而是由內(nèi)部的突發(fā)事件所引起的中斷,即在執(zhí)行指令的過程中,CPU發(fā)現(xiàn)某種突發(fā)事件時就啟動內(nèi)部邏輯轉(zhuǎn)去執(zhí)行預先規(guī)定的中斷號所對應的中斷服務程序。這類中斷也是不可屏蔽中斷,其中斷處理過程具有與內(nèi)部中斷相同的特點,因此,有的書上把它們歸結為內(nèi)部中斷這一類。這類中斷有如下幾種。(1)0號中斷─除數(shù)為零中斷;(2)1號中斷─單步中斷;(3)3號中斷─斷點中斷;(4)4號中斷─溢出中斷。3.內(nèi)部中斷的應用DOS調(diào)用和BIOS調(diào)用是用戶使用系統(tǒng)資源的重要方法和基本途徑,也是用戶編寫MS-DOS應用程序使用很頻繁的方法,應學會使用。,5,4、中斷過程分為四個階段中斷請求→中斷響應→中斷服務→中斷返回1.中斷請求①外設先發(fā)送“中斷請求”信號給CPU。②CPU檢查“中斷請求”輸入線。③CPU有權決定是否響應中斷:a.若允許申請,用ST1指令打開中斷觸發(fā)器IF;b.若不允許申請,用CLI指令關閉中斷觸發(fā)器IF。④沒有獲得允許中斷請求稱為中斷被屏蔽。,⑤不允許中斷請求的情況:如:在實時控制時,需采集一段連續(xù)數(shù)據(jù)為防上數(shù)據(jù)丟失,不允許其他中斷請求;又:執(zhí)行管理程序中某些重要程序,CLI指令進行屏蔽。2.中斷響應①CPU在當前指令執(zhí)行結束時,響應中斷,進入中斷的響應周期;②發(fā)出二個中斷回答信號INTA完成一個中斷響應周期;③進行斷點及標志保存如:段地址(CS),偏移地址(IP)標志FR以及壓入堆棧。④讀取中斷類型號,找到中斷源;⑤裝入中斷服務程序的入口地址(CS,IP),中斷響應中斷響應是當中央處理機發(fā)現(xiàn)已有中斷請求時,中止現(xiàn)行程序執(zhí)行,并自動引出中斷處理程序的過程。中斷響應過程:?保留程序斷點及處理機有關信息?自動轉(zhuǎn)入相應的中斷處理程序執(zhí)行中斷響應的實質(zhì)交換指令地址及處理機的狀態(tài)信息3.中斷服務①轉(zhuǎn)入中斷服務程序后,其服務程序的內(nèi)容有:a.與CPU交換數(shù)據(jù),進行I/O操作;b.外部期望CPU給以控制,進行參數(shù)修改。②在程序開頭,將可能使用的寄存器內(nèi)容進棧,即保護現(xiàn)場。③在服務程序的未尾,將入棧的寄存器內(nèi)容彈出,即恢復現(xiàn)場。,4.中斷返回中斷服務程序結束,執(zhí)行中斷返回。①自動交保存在堆棧中的標志FR,斷點(IP,CS)依次彈出并裝入。②回到中斷前的地址開始繼續(xù)執(zhí)行。三、中斷源、中斷識別、優(yōu)先級1、中斷源:發(fā)出中斷請求的外設或引起中斷的內(nèi)部原因稱為中斷源。,指令中斷:INT10H、INT21H等,外設中斷:鍵盤、打印機、顯示器等,硬件故障中斷:奇偶錯、電源故障等,程序性中斷:除法溢出、非法操作碼等,2、中斷識別:CPU響應中斷后,只知道有中斷請求但不知道是哪一個中斷源,尋找中斷源的操作過程稱為中斷識別。CPU識別中斷的方法:(確定中斷源,實現(xiàn)程序的轉(zhuǎn)移)中斷識別的目的:形成該中斷服務程序的入口地址。,向量中斷:中斷向量、中斷號在CPU響應中斷后,由中斷控制器將服務程序入口地址送到CPU的過程。,查詢中斷:軟、硬件查詢確定中斷源采用軟件查詢技術來確定發(fā)出中斷請求。,5.3中斷號5.3.1中斷號與中斷號的獲取1.什么是中斷號中斷號是系統(tǒng)分配給每個中斷源的代號,以便識別和處理。中斷號在中斷處理過程中起到很重要的作用,在采用向量中斷方式的中斷系統(tǒng)中,CPU必須通過中斷號才可以找到中斷服務程序的入口地址,實現(xiàn)程序的轉(zhuǎn)移。2.中斷號的獲取CPU對系統(tǒng)中不同類型的中斷源,獲取它們的中斷號的方法是不同的。可屏蔽中斷的中斷號是在中斷響應周期從中斷控制器獲取的。內(nèi)部中斷INTnH的中斷號(nH)是由中斷指令直接給出的。不可屏蔽中斷NMI以及CPU內(nèi)部一些特殊中斷的中斷號是由系統(tǒng)預先設置好的,如NMI的中斷號為02H,非法除數(shù)的中斷號為0H等。,11,5.3.2中斷響應周期當CPU收到外部設備通過中斷控制器提出的中斷請求INT后,如果當前一條指令已執(zhí)行完,且中斷標志位IF=1時(即允許中斷),又沒有DMA請求,那么,CPU進入中斷響應周期,發(fā)出兩個連續(xù)中斷應答信號完成一個中斷響應周期。圖5.1表示是中斷響應周期時序。從圖5.1可知,一個中斷響應周期完成的操作有:,12,1.置位中斷服務寄存器ISR當CPU發(fā)出第一個脈沖時,CPU輸出有效的總線鎖定信號,使總線在此期間處于封鎖狀態(tài),防止其他處理器或DMA控制器占用總線。與此同時,中斷控制器將判優(yōu)后允許的中斷級在ISR中的相應位置1,以登記正在服務的中斷級別,在中斷服務程序執(zhí)行完畢之后,該寄存器自身不能清零,需要向中斷控制器發(fā)中斷結束命令EOI才能清零。2.讀取中斷號當總線控制器發(fā)出第二個2脈沖時,總線鎖定信號撤除,總線被解封,地址允許信號ALE也變?yōu)榈碗娖剑o效),即允許數(shù)據(jù)線工作。正好此時中斷控制器將當前中斷服務程序的中斷號送到數(shù)據(jù)線上,由CPU讀入。5.3.3中斷號的分配系統(tǒng)對外部中斷和內(nèi)部中斷一律統(tǒng)一編號,共有256個號,微機系統(tǒng)的中斷號分配如表5.1所示。表中兩塊灰色區(qū)域的中斷號分別是系統(tǒng)分配給PC微機系統(tǒng)中的中斷控制器主片與從片的中斷號,用戶可以采用修改其中斷向量的方法進行應用。,13,,表5.1,14,15,5.4中斷觸發(fā)方式與中斷排隊方式5.4.1中斷觸發(fā)方式中斷觸發(fā)方式是指外部設備以什么邏輯信號去向中斷控制器申請中斷,中斷控制器允許用邊沿或電平信號申請中斷,即邊沿觸發(fā)和電平觸發(fā)兩種方式。觸發(fā)方式在中斷控制器初始化時設定。5.4.2中斷排隊方式外部中斷、內(nèi)部中斷是按優(yōu)先級提供服務的。中斷優(yōu)先級從高到低的順序是:內(nèi)部中斷→不可屏蔽中斷→可屏蔽中斷。當系統(tǒng)有多個中斷源時,就可能出現(xiàn)同時有幾個中斷源都申請中斷,而微處理器在一個時刻只能響應并處理一個中斷請求。為此,要進行中斷排隊,微處理器一般是按“優(yōu)先級高的先服務”的原則提供服務。但也有其他一些中斷排隊的方式。,16,1.按優(yōu)先級排隊根據(jù)任務的輕重緩急,給每個中斷源指定CPU響應的優(yōu)先級,任務緊急的先響應,可以暫緩的后響應。2.循環(huán)輪流排隊不分級別高低,CPU輪流響應各個中斷源的中斷請求,并為其服務。3.中斷嵌套在實際應用中,當CPU正在處理某個中斷源,即正在執(zhí)行中斷服務程序時,會出現(xiàn)優(yōu)先級更高的中斷源申請中斷。為了使更緊急的、級別更高的中斷源及時得到服務,需要暫時打斷(掛起)當前正在執(zhí)行的級別較低的中斷服務程序,去處理級別更高的中斷源,待處理完以后,再返回到被打斷了的中斷服務程序繼續(xù)執(zhí)行。但級別相同或級別低的中斷源不能打斷級別高的中斷服務,這就是所謂的中斷嵌套。INTR可以進行中斷嵌套。NMI不可以進行中斷嵌套。,17,5.5中斷向量與中斷向量表當發(fā)生中斷,就意味著要發(fā)生程序的轉(zhuǎn)移,即由主程序轉(zhuǎn)移到服務程序去。那么,如何才能進入中斷服務程序,即如何找到中斷服務程序的入口地址是解決問題的關鍵。為此,采用向量中斷方式(不是查詢中斷方式),設置中斷向量及中斷向量表,通過中斷向量表中的中斷向量查找中斷服務程序的入口地址。5.5.1中斷向量與中斷向量表1.什么是中斷向量CPU響應中斷后,中斷源提供中斷號,再由中斷號生成地址信息,由此地址信息對程序的執(zhí)行進行導向,引導到中斷服務程序中去,故把這個地址信息稱為中斷向量(存儲單元)。中斷向量包括中斷服務程序的段基址CS(高位字),偏移地址IP(低位字)共4個字節(jié)。,18,2.中斷向量指針與中斷類型號什么叫“中斷向量指針”?指出中斷向量存放在中斷向量表的位置(或地址)。中斷類型號X4=中斷向量最低字節(jié)的指針,中斷號4=偏移地址IP;中斷號4+2=段基址CS。例如,8號中斷中斷源的中斷向量:IP8=84=20H~21H;CS8=84+2=22H~23H.,在PC系列中由中斷類型號提供的,即向量地址=0000:類型號4如:硬盤“1NT13H”它的向量地址=0000:13H4=0000:004CH004CH開始連續(xù)4個單元中用來存放“INT13H”的中斷向量:,中斷向量0070(CS):0fc9h(IP),2.什么是中斷向量表所有的中斷向量集中存放到存儲器的某一區(qū)域,這一區(qū)域稱之為中斷向量表。微機系統(tǒng)規(guī)定把存儲器的0000H~03FFH共1024個地址單元作為中斷向量存儲區(qū),這表明中斷向量表的起始地址是固定的,并且從存儲器的物理地址0開始。中斷向量表如圖5.2所示。每個中斷向量包含4個字節(jié),這4個字節(jié)在中斷向量表中的存放規(guī)律是向量的偏移量(IP)存放在兩個低字節(jié)單元中,向量的基址(CS)存放在兩個高字節(jié)單元中。,21,例:PC機,0000 ̄03FF共1024(1K),圖5.2中斷向量表,22,5.5.2中斷向量表的填寫中斷向量表的填寫分系統(tǒng)填寫和用戶填寫兩種情況。系統(tǒng)設置的中斷服務程序,其中斷向量由系統(tǒng)負責填寫。用戶開發(fā)的中斷系統(tǒng),在編寫中斷服務程序時,其中斷向量由用戶負責填寫,可采用MOV指令直接向中斷向量表中填寫中斷向量。不過,一般用戶都是通過修改中斷向量的方法使用系統(tǒng)的中斷資源,而很少由用戶自己直接填寫中斷向量。,23,5.6中斷處理過程5.6.1可屏蔽中斷的處理過程1.中斷申請與響應握手當外部設備要求CPU服務時,需向CPU發(fā)出中斷請求信號,申請中斷。CPU若發(fā)現(xiàn)有外部中斷請求,并且處在開中斷條件(IF=1),又沒有DMA申請,則CPU在當前指令執(zhí)行結束時,進入中斷響應總線周期,響應中斷請求,并且通過中斷回答信號,從中斷控制器讀取中斷源的中斷號,完成中斷申請與中斷響應的握手過程。這一階段的主要目標是獲取外部中斷源的中斷號。2.標志位的處理與斷點保存微處理器獲得外部中斷源的中斷號后,CPU把標志寄存器FLAGS壓入堆棧,并置IF=0,關閉中斷;置TF=0,防止單步執(zhí)行。然后將當前程序的代碼段寄存器CS和指令指針I(yè)P壓入堆棧,這樣就把斷點(返回地址)保存到了堆棧的棧頂。這一階段的主要目標是完成由主程向服務程序轉(zhuǎn)移前的準備工作。,24,3.向中斷服務程序轉(zhuǎn)移并執(zhí)行中斷服務程序?qū)⒁勋@得的中斷號乘以4得到地址指針,在中斷向量表中,讀取中斷服務程序的入口地址CS∶IP,再把它寫入代碼段和指令指示器,實現(xiàn)程序控制的轉(zhuǎn)移。這一階段的主要目標是完成主程序向中斷服務程序的轉(zhuǎn)移,或稱為中斷服務程序的加載。4.返回斷點中斷服務程序執(zhí)行完畢后,要返回主程序,因此,一定要恢復斷點和標志寄存器的內(nèi)容,否則,主程序無法繼續(xù)執(zhí)行。為此,在中斷服務程序的末尾,執(zhí)行中斷返回指令IRET,將棧頂?shù)膬?nèi)容依次彈出到IP、CS和FLAGS,就恢復了主程序的執(zhí)行。這一階段的主要目標是完成中斷服務程序向主程序的轉(zhuǎn)移。,25,5.6.2不可屏蔽中斷和軟中斷的處理過程由于它們的不可屏蔽性,并且其中斷號的獲取方法與可屏蔽中斷不一樣,所以其中斷處理過程也有所差別。其主要差別是:不需通過中斷響應周期獲取中斷號,是由系統(tǒng)分配的;中斷服務程序結束,不需發(fā)中斷結束命令EOI,是自動結束方式。其他處理過程與可屏蔽中斷的一樣。,26,5.7中斷外部中斷的解決方案5.7.1中斷控制器82C59A的外部特性,82C59A的外部引腳如圖5.3所示,3組信號線如下:(1)面向CPU的信號線。包括用于CPU發(fā)命令及讀取中斷號的8根數(shù)據(jù)線D0~D7,一對中斷請求線INT和中斷回答線,以及、控制線與地址線、A0。(2)面向I/O設備的信號線。8根中斷申請線IR0~IR7,其作用有二:一是接收外設的中斷申請,可接收8個外部中斷源的中斷申請;二是作外部中斷優(yōu)先級排隊用,可進行8級中斷排隊,采用完全中斷嵌套排隊方式時,連接IR0的設備優(yōu)先級最高,連接IR7的設備優(yōu)先級最低。(3)面向同類芯片的中斷級聯(lián)信號線。中斷級聯(lián)信號線用于擴展中斷源,包括主/從芯片的設定線/EN,3根用以傳送從片識別碼的級聯(lián)線CAS0~CAS2。,圖5.382C59A引腳圖,27,5.7.2中斷控制器82C59A的工作方式1.中斷觸發(fā)方式(1)邊沿觸發(fā)方式IR0~IR7輸入線上出現(xiàn)由低電平到高電平的跳變,表示有中斷請求。(2)電平觸發(fā)方式IR1~IR7輸入線出現(xiàn)高電平時,表示有中斷請求。2.中斷級聯(lián)方式82C59A可以單片使用,也可以多片使用,兩片以上使用時才有級聯(lián)問題。級聯(lián)問題分兩個方面:從主片看,它的哪一根或哪幾根中斷申請輸入線IR上有從片連接;從從片看,它的中斷申請輸出線INT與主片的哪一根中斷申請輸入線IR相連。,28,3.中斷屏蔽方式82C59A的中斷屏蔽是指對外設中斷申請的屏蔽,即允許還是不允許外設申請中斷,而不是對已經(jīng)提出的中斷申請響不響應的問題。82C59A有常規(guī)屏蔽方式和特殊屏蔽方式兩種,常規(guī)屏蔽方式使用較多。(1)常規(guī)屏蔽方式這是通過82C59A屏蔽寄存器寫入8位屏蔽碼來屏蔽或開放8個中斷申請線(IR0~IR7)上的中斷申請,要屏蔽哪個中斷申請,就將屏蔽碼的相應位置1;不屏蔽的,即開放中斷的,則相應位置0。例如,屏蔽碼11111011B,表示僅開放IR2,其他均屏蔽。(2)特殊屏蔽方式用于開放低級別的中斷申請。允許比正在服務的中斷級別低的中斷申請中斷,而屏蔽同級的中斷再次申請中斷。4.中斷優(yōu)先級排隊方式82C59A提供了3種中斷優(yōu)先級排隊方式:完全嵌套方式、特殊嵌套方式和優(yōu)先級循環(huán)方式。,29,5.中斷結束方式(1)自動結束方式這是中斷響應之后,在中斷響應周期,就自動清零該中斷源在ISR寄存器中被置1的位。在中斷服務程序中不需發(fā)出中斷結束命令EOI。(2)非自動結束方式這是ISR中被置1的位,在服務完畢后,不能自動清零,而必須在中斷服務程序中發(fā)出中斷結束命令EOI,才能清零,故稱為非自動結束。非自動結束方式是常用的方式,其中又有兩種命令格式。常規(guī)結束命令:該命令使ISR寄存器中優(yōu)先級最高的置1位清零(復位)。指定結束命令:該命令明確指定ISR寄存器中哪一個置1的位清零,即服務完畢,具體指定哪一級中斷結束。指定結束方式應用較多。,30,31,5.7.3中斷控制器82C59A的編程模型,82C59A編程模型包括內(nèi)部可訪問的寄存器及相應的7個命令字。內(nèi)部寄存器如圖5.5所示。,(1)命令寄存器8位,隱含在“控制邏輯”模塊內(nèi)部,接收并處理7個命令字,用戶可以訪問。(2)中斷請求寄存器(IRR)8位,以邏輯1記錄已經(jīng)提出中斷請求的中斷級,等待CPU響應。當提出中斷請求的外設產(chǎn)生中斷時,由82C59A置位,直到中斷被響應才自動清零。IRR的內(nèi)容可以由CPU通過OCW3命令讀出。(3)中斷服務寄存器(ISR)在中斷響應之后,第一個獲準中斷請求的中斷級在相應的ISR中置位。如IR3獲準,ISR中的IS3置位,表明IR3正處于服務。,1.82C59A內(nèi)部寄存器,32,(4)中斷屏蔽寄存器(IMR)是對中斷請求IR起屏蔽作用,即對中斷請求IR允許還是不允許,寄存器8位對應8級中斷屏蔽。哪一級中斷被屏蔽,哪位就寫“1”,即禁止IR提出中斷請求。哪一級中斷被允許,哪位就寫“0”,即開放IR提出中斷請求。(5)中斷申請優(yōu)先級分析器(PR)這是一個中斷請求的判優(yōu)電路。它把新來的中斷請求優(yōu)先級與ISR寄存器中記錄在案的中斷優(yōu)先級進行比較,看誰的優(yōu)先級最高,就讓誰申請中斷。其操作過程全部由硬件完成,故該寄存器對用戶是不可訪問的,它不屬于82C59A的編程模型之內(nèi)。,33,2.82C59A的端口地址,中斷控制器82C59A是系統(tǒng)資源,其端口地址由系統(tǒng)分配,見第3章表3.1。主片的兩個端口地址為020H和03FH;從片的兩個端口地址為0A0H和0BFH。7個命令具體使用哪個端口地址由命令的標志位A0指示。,34,3.82C59A的命令82C59A共有7個編程命令,分為初始化命令ICW1~ICW4和操作命令OCW1~OCW3兩類。初始化命令ICW確定中斷控制器的基本配置或工作方式,而操作命令OCW執(zhí)行由ICW命令定義的基本操作。值得指出的是,初始化命令是在用戶自行另外設計中斷系統(tǒng)時才會用到。如果是利用系統(tǒng)已有的中斷資來源開發(fā)中斷應用,就不需要進行初始化,也就不會使用這些初始化命令。下面分別介紹各的作用及格式。(1)初始化命令(ICW1~ICW4)4個初始化命令用來對82C59A的工作方式和中斷號進行設置,包括中斷觸發(fā)方式、級聯(lián)方式、排隊方式及結束方式。,35,ICW1命令功能:設定中斷請求的觸發(fā)方式、是否多片使用、要不要寫ICW4ICW1的格式如下:,例如,若采用邊沿觸發(fā),單片使用,需要ICW4則ICW1命令字=00010011B=13H,其程序段為:MOVAL,00010011B;ICW1的內(nèi)容OUT20H,AL;寫入ICW1端口(A0=0),,36,ICW2命令功能:設定中斷號。對連接到主片和從片上的8級中斷源的中斷號,高5位分別為08H與70H(見表5.3和表5.4),而低3位由連接到主/從片申請線IRi的編碼確定。因此,向ICW2寫入中斷號只寫高5位,低3位寫0,ICW2命令的格式如下。,例如,硬盤的中斷號是0DH,ICW2=08H。MOVAL,08HOUT21H,AL;寫入ICW2的端口(A0=1)由于硬盤中斷請求連接IR5,故低3位=05H,由硬件寫入。,37,ICW3命令功能:設置中斷級聯(lián)方式,主片和從片分開設置。ICW3命令的格式主片與從片不同,分別如下:a.主片的ICW3,,b.從片的ICW3,38,ICW3命令只有系統(tǒng)存在2片以上82C59A時才啟用,否則不用ICW3命令。分主片和從片,分開設置。主片IRi的哪一個輸入引腳上有從片連接,該位寫1;若無,寫0。例如,若主片的IR4上有從片連接,則主片的ICW3=00010000B=10H。從片的中斷請求線INT連到了主片哪一個IRi上,則寫入該位的編號代碼。例如,若從片A的INT連接到主片的IR4上,則從片的ICW3=00000100B=04H。初始化主片的ICW3程序段如下。MOVAL,10H;主ICW3的內(nèi)容OUT21H,AL;寫入主ICW3的端口(A0=1)初始化從片A的ICW3程序段如下。MOVAL,04H;從ICW3的內(nèi)容OUT0A1H,AL;寫入從ICW3的端口(A0=1),39,又如,假設主片的IR3和IR6兩個輸入端分別連接了從片A與B的INT,故主片的ICW3=01001000B=48H,從片A的ICW3=00000011B=03H從片B的ICW3=00000110B=06H,初始化主片的ICW3程序段如下。MOVAL,48H;ICW3(主)的內(nèi)容OUT21H,AL;寫入ICW3(主)的端口(A0=1)初始化從片A的ICW3程序段如下。MOVAL,03H;從片A的ICW3內(nèi)容OUT0A1H,AL;寫入從片A的CW3端口(A0=1)初始化從片B的ICW3程序段如下。MOVAL,06H;從片B的ICW3的內(nèi)容OUT0A1H,AL;寫入從片B的ICW3端口(A0=1),40,41,ICW4命令功能:設置優(yōu)先級排隊和中斷結束方式ICW4的格式如下:,例如,若CPU為16位,82C59A與系統(tǒng)總線之間采用緩沖器連接,非自動結束方式,只用1片8259A,正常完全嵌套,其初始化命令字ICW4=00001101B=0DH初始化ICW4的程序段如下。MOVAL,0DH;ICW4的內(nèi)容OUT21H,AL;寫入ICW4的端口(A0=1)又如,若CPU為16位,采用非自動結束方式,使用兩片82C59A,非緩沖方式,為使從片也能提出中斷請求,主片采用特殊的完全嵌套方式,其初始化命令字ICW4=00010101B=15H初始化ICW4的程序段如下。MOVAL,15H;ICW4的內(nèi)容OUT21H,AL;寫入ICW4的端口(A0=1),42,,(2)操作命令(OCW1~OCW3)3個操作命令是對82C59A經(jīng)初始化所設置的中斷屏蔽、中斷結束、中斷排隊方式進行實際操作。其中,OCW3很少使用。①OCW1命令功能:執(zhí)行常規(guī)的中斷屏蔽/開放操作。OCW1命令的格式如下。,43,例如,若要使中斷源IR3開放,其余被屏蔽,則OCW1=11110111B=F7H屏蔽程序段為:MOVAL,0F7H;OCW1內(nèi)容OUT21H,AL;21H為OCW1的端口,44,②OCW2命令功能:執(zhí)行中斷結束操作和優(yōu)先級排隊操作。OCW2的格式如下。,OCW2中R、SL、EOI的組合功能如表5.2所示.,45,46,表5.2OCW2中R、SL、EOI的組合功能,OCW2的具體操作:1)作中斷結束控制:當在初始化命令ICW1選用非自動結束方式時,就利用OCW2來控制中斷結束。即:OCW2格式中的EOI(D5)=1SL(D6)=0,不指定中斷結束L2~L0=000,OCW2=00100000BSL(D6)=1,指定中斷結束L2~L0編碼是被指定的中斷等級例如,指定IR5為中斷結束,則OCW2=01100101B=65H。,47,2)作中斷優(yōu)先級排隊控制,R(D7),,1:需要輪換優(yōu)先權,分二種若SL=,0:優(yōu)先級固定方式,則為完全嵌套方式,1:優(yōu)先權指定輪換,0:自動輪換,,OCW3命令功能:進行特定的中斷屏蔽/開放操作。OCW3在實際中很少使用,不做介紹,可參考文獻[21]。,48,5.7.4中斷控制器對CPU處理中斷的支持作用1.接受外部設備的中斷請求經(jīng)過優(yōu)先權判決找到哪一個中斷源的中斷請求級別最高,然后,再向CPU提出中斷申請INT。2.優(yōu)先級排隊管理根據(jù)任務輕重緩急或設備的特殊要求,分配中斷源的中斷源等級。3.提供中斷類型號為CPU實現(xiàn)程序的轉(zhuǎn)移給出中斷服務程序入口地址指針。4.實現(xiàn)中斷請求的屏蔽和開放5.執(zhí)行中斷結束命令,49,5.8可屏蔽中斷的體系結構及初始化5.8.1可屏蔽中斷的體系結構可屏蔽中斷體系由主/從兩片82C59A中斷控制器進行級聯(lián)組成,可支持15級可屏蔽中斷處理,如圖5.8所示。,50,51,15級可屏蔽中斷的中斷號分配如表5.3和表5.4所示。,表5.4從片82C59A8級硬中斷源的中斷號,表5.3主片82C59A8級硬中斷源的中斷號,,5.8.2可屏蔽中斷的初始化設置1.初始化設置的內(nèi)容(1)中斷觸發(fā)方式采用邊沿觸發(fā),上跳變有效。(2)中斷屏蔽方式采用常規(guī)屏蔽方式,即使用OCW1向IMR寫入屏蔽碼。(3)中斷優(yōu)先級排隊方式采用固定優(yōu)先級的完全嵌套方式。(4)中斷結束方式采用非自動結束方式中的不指定結束和指定結束兩種命令格式,即在中斷服務程序服務完畢中斷返回之前,發(fā)結束命令代碼20H或6XH均可(X為0~7)。(5)級聯(lián)方式采用兩片主/從連接方式,并且規(guī)定把從片的中斷申請輸出引腳INT連到主片的中斷請求輸入引腳IR2上。兩片級聯(lián)處理15級中斷。(6)15級中斷號的分配為:中斷號08H~0FH對應IRQ0~IRQ7,中斷號70H~77H對應IRQ8~IRQ15。(7)兩片82C59A的端口地址分配為:主片82C59A的兩個端口是20H和21H;從片82C59A的兩個端口是0A0H和0A1H,52,,2.初始化設置的程序(1)初始化流程系統(tǒng)上電期間,分別對82C59A的主片和從片進行初始化。初始化流程如圖5.9所示。,53,,(2)系統(tǒng)對中斷控制器初始化程序段①82C59A主片匯編語言初始化程序段如下。,INTA00EQU020H;82C59A主片端口(A0=0)INTA01EQU021H;82C59A主片端口(A0=1)MOVAL,11H;ICW1:邊沿觸發(fā),多片,要ICW4OUTINTA00,ALJMPSHORT$+2;I/O端口延時要求(下同)MOVAL,8H;ICW2:中斷號的高5位OUTINTA01,ALJMPSHORT$+2MOVAL,04H;ICW3:主片的IR2上接從片,(A0=1)OUTINTA01,ALJMPSHORT$+2MOVAL,01H;ICW4:非緩沖,全嵌套,16位的CPU,非自動結束OUTINTA01,AL,54,②82C59A從片匯編語言初始化程序段如下。INTB00EQU0A0H;82C59A從片端口(A0=0)INTB01EQU0A1H;82C59A從片端口(A0=1)MOVAL,11H;ICW1:邊沿觸發(fā),多片,要ICW4OUTINTB00,ALJMPSHORT$+2MOVAL,70H;ICW2:中斷號的高5位OUTINTB01,ALJMPSHORT$+2MOVAL,02H;ICW3:從片接主片的IR2(ID2ID1ID0=010)OUTINTB01,ALJMPSHORT$+2MOVAL,01H;ICW4:非緩沖,全嵌套,16位的CPU,非自動結束OUTINTB01,AL系統(tǒng)一旦完成了對82C59A的初始化,所有外部硬件中斷源和服務程序(包括已開發(fā)和未開發(fā)的)都必須按初始化的規(guī)定去做,因此,為慎重起見,對系統(tǒng)的82C59A初始化編程不由用戶去做,而是在微機啟動后由處理器按初始化設置要求自動完成。,55,5.9系統(tǒng)中斷資源的應用5.9.1修改中斷向量修改中斷向量是修改同一中斷號下的中斷服務程序入口地址。1.中斷向量修改的方法中斷向量修改的方法是利用DOS功能調(diào)用INT21H的35H號功能和25H號功能。INT21H系統(tǒng)功能調(diào)用為用戶程序修改中斷向量提供了兩個讀/寫中斷向量的功能號,其入口/出口參數(shù)如下。(1)INT21H的35H號功能是從中斷向量表中讀取中斷向量入口參數(shù):無。AH=功能號35H,AL=中斷號N。調(diào)用:即執(zhí)行INT21H。出口參數(shù):ES∶BX=讀取的中斷向量的段基址:偏移量。(2)INT21H的25H號功能是向中斷向量表中寫入中斷向量入口參數(shù):DS∶DX=要寫入的中斷向量的段基址:偏移量。AH=功能號25H,AL=中斷號N。調(diào)用:即執(zhí)行INT21H。出口參數(shù):無。,56,2.中斷向量修改與恢復的步驟(1)調(diào)用35H號功能,從向量表中讀取某一中斷號的原中斷向量,并保存在雙字節(jié)變量中。(2)調(diào)用25H號功能,將新中斷向量寫入中斷向量表中原中斷向量的位置,取代原中斷向量。(3)新中斷服務程序完畢后,再用25H號功能將保存在雙字節(jié)變量中的原中斷向量寫回去,恢復原中斷向量。,57,5.9.2編寫中斷服務程序1.中斷服務程序的一般格式NEW_INTPROCFAR(寄存器進棧);現(xiàn)場保護(服務程序主體);服務程序MOVAL,20H;向從片82C59A發(fā)結束命令MOVDX,0A1HOUTDX,ALOUT20H,AL;向主片82C59A發(fā)結束命令(寄存器出棧);恢復現(xiàn)場IRET;中斷返回NEW_INTENDP,58,59,2.編寫中斷服務程序需要注意的幾個問題(1)注意現(xiàn)場的保護在中斷服務程序中要使用的某些寄存器,要進棧保存,以免破壞主程序所使用的這些寄存器內(nèi)容。(2)注意堆棧操作的對稱性在堆棧中存放的中斷返回地址及現(xiàn)場信息,要特別注意進棧與出棧的對稱性,即進棧與出棧的內(nèi)容和順序都要一一對應,不要出現(xiàn)進棧與出棧不一致,以免發(fā)生中斷結束后不能正確返回斷點,造成嚴重后果。(3)中斷服務程序要盡可能短為避免對同級或低級的中斷源造成阻塞和干擾,要求中斷服務程序執(zhí)行要快。因此,能在主程序中做的工作盡可能安排在主程序中進行,而不要放到中斷服務程序中去。,60,5.10中斷服務程序設計5.10.1主中斷控制器的中斷服務程序設計例5.1利用系統(tǒng)中斷控制器主片82C59A的中斷服務程序設計。1.要求中斷申請電路如圖5.10所示。微動開關SW的中斷請求接到IRQ7。要求每按下1次開關SW就申請1次中斷,按8次后顯示“OK!”,程序結束。試編寫中斷服務程序。2.分析IRQ7是主片82C59A的IR7引腳上的中斷請求輸入線,中斷號為0FH,系統(tǒng)分配給打印機中斷,當打印機空閑不使用時,用戶可以通過修改中斷向量進行利用。,61,,3.程序設計具體程序,見教材P90-92,62,5.10.2從中斷控制器的中斷服務程序設計例5.2利用系統(tǒng)中斷控制器從片82C59A的中斷服務程序設計。1.要求中斷申請電路如圖5.11所示。撥動開關SW的中斷請求接到IRQ10。要求每按下1次開關SW就申請1次中斷,顯示“OK!”,然后返回,程序結束。,63,2.分析IRQ10是從片82C59A的IR2引腳上的中斷請求,中斷號為72H,是系統(tǒng)保留的,用戶可以使用。由于是從片82C59A,故在執(zhí)行從片的屏蔽與開放和發(fā)中斷結束命令時,都要考慮對主片進行相應的操作。3.程序設計具體程序見教材P93-94,5.48259A在PC系統(tǒng)中的應用,8259A初始化編程舉例:,ICW1=13H=00010011B邊沿觸發(fā),單片要ICW4ICW2=08H=00001000B中斷號的高5位,低3位由IR2動態(tài)產(chǎn)生ICW4=09H=00001001B全嵌套,8088非自動結束例2.采用2片8259,主/從結構,中斷優(yōu)先級順序:IRQ0,IRQ1,IRQ8~IRQ15,IRQ3~IRQ7主片:ICW1=11H;邊沿觸發(fā),多片,要ICW4ICW2=08H;中斷號高5位ICW3=04H;主片的IR2接到從片上D2=1ICW4=01H;非緩沖,全嵌套,16位CPU從片ICW1=11H,ICW2=70H,ICW3=02H,ICW4=01H,,,Eg:單片8259A的端口地址是80H和81H,采用邊沿觸發(fā),普通嵌套方式,緩沖方式,非自動中斷結束方式,需要ICW4,中斷類型碼是18H-1FH,請對8259A進行初始化。,……MOVAL,13H;設置ICW1=00010011,即采用邊沿觸發(fā),單片,需要ICW4OUT80H,AL;ICW1寫入地址A0=0MOVAL,18H;ICW2=00011000,確定ICW2的高5位OUT81H,AL;ICW2寫入地址A0=1MOVAL,0DH;ICW4=00001101,即普通嵌套方式,緩沖方式,非自動中斷結束方式,用于8086/8088OUT81H,AL;ICW4寫入地址A0=1……,Eg:已知8259A的端口地址是20H,21H,讀取其中斷請求寄存器IRR和中斷服務寄存器ISR的內(nèi)容?!璏OVAL,0AH;OCW3=00001010,讀IRR寄存器OUT20H,AL;OCW3輸出到8259A的地地址NOP;空操作,等待3個時鐘周期INAL,20H;從低地址讀入IRR的內(nèi)容……,Eg:設目前系統(tǒng)的最高優(yōu)先權為IR5,若執(zhí)行OCW2命令,且命令中EOI=0,R=1,SL=1,L2L1L0=011。請指出OCW2命令執(zhí)行后,8259A的優(yōu)先權順序。,從OCW2命令可知它是指定優(yōu)先權特殊循環(huán)方式的最低級,有L2L1L0=011可知最低優(yōu)先權的為IR3,所以執(zhí)行完OCW2命令后,8259A的8個中斷源的優(yōu)先權從高至低依次為:IR4,IR5,IR6,IR7,IR0,IR1,IR2,IR3。,一個中斷系統(tǒng)有一片主8259A和3片從8259A,從8259A分別接至主8259A的IR2、IR3、IR4上。若主8259A的IMR此時設置為01010000,各從8259A的IMR均設置為0,且連接IR3的從8259A此時最低優(yōu)先權為IR5。請按優(yōu)先權由高到低的順序列出未被屏蔽的中斷級。試編寫主8259A和鏈接IR3的從8259A的初始化程序及寫入有關的操作命令字(8259A端口地址和中斷類型碼可自己定義),系統(tǒng)中共有8259A4片,應用中斷源輸入為:3*8+5=29級,但主8259A的IMR此時設置為01010000,則連接主8259A上的IR4的從片被屏蔽,主8259A的IR6被屏蔽,此時未被屏蔽的中斷源還有20個。所以未被屏蔽的各中斷源按優(yōu)先權由高到低的順序是:主片:IR0、IR1、接IR2的從片:IR0-IR7接IR3的從片:IR6、IR7、IR0-IR5(連接IR3的從8259A此時最低優(yōu)先權為IR5)主片IR5、IR7,設主8259A的端口地址為20H、21H,連接IR3的從片端口地址為24H、25H。主片的初始化:設定緩沖方式、級聯(lián)、IR2、IR3和IR4連接從片,中斷請求信號邊沿觸發(fā),中斷類型號為:40H-47H,特殊全嵌套方式,非自動EOI,屏蔽IR4、IR6主片初始化程序:,連接IR3的從片初始化:設定緩沖方式,級聯(lián),該從片接主片IR3上,中斷請求信號邊沿觸發(fā),中斷類型號48H-4FH,優(yōu)先權為特殊循環(huán)方式,IR5為最低,非自動EOI.則初始化程序:,79,本章小結中斷技術的基本概念、工作原理中斷處理過程中斷控制器82C59A的外部特性、工作方式、編程模型,以及微機中斷體系初始化重點是中斷向量的修改和中斷服務程序的編程方法,- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設計者僅對作品中獨創(chuàng)性部分享有著作權。
- 關 鍵 詞:
- 微型計算機 接口 中斷 技術
裝配圖網(wǎng)所有資源均是用戶自行上傳分享,僅供網(wǎng)友學習交流,未經(jīng)上傳用戶書面授權,請勿作他用。
鏈接地址:http://m.appdesigncorp.com/p-3266999.html