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