




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第5章中斷技術(shù)本章內(nèi)容中斷技術(shù)的基本概念中斷技術(shù)的工作原理系統(tǒng)配置的中斷資源的應(yīng)用中斷向量修改及中斷服務(wù)程序的編寫15.1中斷
基本概念
中斷是指CPU在正常運(yùn)行程序時(shí),由于外部/內(nèi)部事件,或由程序引起CPU中斷正在運(yùn)行的程序,而轉(zhuǎn)到為中斷事件服務(wù)的程序中去,服務(wù)完畢,再返回執(zhí)行原程序,這一過程稱為中斷。
外部中斷的特征:具有隨機(jī)性。25.2中斷的類型5.2.1外部中斷1.可屏蔽中斷INTR
這是由外部設(shè)備通過中斷控制器用中斷請(qǐng)求線INTR向微處理器申請(qǐng)而產(chǎn)生的中斷,但微處理器可以用CLI指令來屏蔽(禁止),即不響應(yīng)它的中斷請(qǐng)求,因此把這種中斷稱為可屏蔽中斷。2.不可屏蔽中斷NMI
由系統(tǒng)硬件引發(fā)的中斷,如協(xié)處理器出錯(cuò)、通道等。它的優(yōu)先級(jí)高于外部硬件中斷,且不受中斷允許標(biāo)志位(IF)的影響,所以是不可屏蔽中斷。35.2.2內(nèi)部中斷
內(nèi)部中斷是由用戶在程序中發(fā)出中斷指令I(lǐng)NTnH產(chǎn)生的,指令中的操作數(shù)n稱為軟中斷號(hào)。內(nèi)部中斷包括DOS中斷功能和BIOS中斷功能兩部分,可供用戶在編寫應(yīng)用程序是調(diào)用。
1.DOS功能調(diào)用
DOS是存放在磁盤上的操作系統(tǒng)軟件,其中內(nèi)部中斷INT21H是DOS的內(nèi)核。它是一個(gè)很重要、功能龐大的中斷服務(wù)程序,包含0~6CH個(gè)子功能,包括對(duì)設(shè)備、文件、目錄及內(nèi)存的管理功能,涉及各個(gè)方面,可供系統(tǒng)軟件和應(yīng)用程序調(diào)用,同時(shí),由于它處在ROM-BIOS層的上一個(gè)層次,與系統(tǒng)硬件層有ROM-BIOS在邏輯上的隔離,所以,它對(duì)系統(tǒng)硬件的依賴性大大減少,兼容性好。
2.BIOS功能調(diào)用
BIOS是一組存放在ROM中、獨(dú)立于DOS的I/O中斷服務(wù)程序。它在系統(tǒng)硬件的上一層,直接對(duì)系統(tǒng)中的I/O設(shè)備進(jìn)行設(shè)備級(jí)控制,可供上層軟件和應(yīng)用程序調(diào)用。4除了上述外部中斷和內(nèi)部中斷兩類中斷之外,微機(jī)的中斷系統(tǒng)還包括一些特殊中斷,這些中斷既不是由外部設(shè)備提出申請(qǐng)而產(chǎn)生的,也不是由用戶在程序中發(fā)中斷指令I(lǐng)NTnH而發(fā)生的,而是由內(nèi)部的突發(fā)事件所引起的中斷,即在執(zhí)行指令的過程中,CPU發(fā)現(xiàn)某種突發(fā)事件時(shí)就啟動(dòng)內(nèi)部邏輯轉(zhuǎn)去執(zhí)行預(yù)先規(guī)定的中斷號(hào)所對(duì)應(yīng)的中斷服務(wù)程序。這類中斷也是不可屏蔽中斷,其中斷處理過程具有與內(nèi)部中斷相同的特點(diǎn),因此,有的書上把它們歸結(jié)為內(nèi)部中斷這一類。這類中斷有如下幾種。(1)0號(hào)中斷─除數(shù)為零中斷;(2)1號(hào)中斷─單步中斷;(3)3號(hào)中斷─斷點(diǎn)中斷;(4)4號(hào)中斷─溢出中斷。3.內(nèi)部中斷的應(yīng)用DOS調(diào)用和BIOS調(diào)用是用戶使用系統(tǒng)資源的重要方法和基本途徑,也是用戶編寫MS-DOS應(yīng)用程序使用很頻繁的方法,應(yīng)學(xué)會(huì)使用。5
5.3中斷號(hào)5.3.1中斷號(hào)與中斷號(hào)的獲取1.
什么是中斷號(hào)
中斷號(hào)是系統(tǒng)分配給每個(gè)中斷源的代號(hào),以便識(shí)別和處理。中斷號(hào)在中斷處理過程中起到很重要的作用,在采用向量中斷方式的中斷系統(tǒng)中,CPU必須通過中斷號(hào)才可以找到中斷服務(wù)程序的入口地址,實(shí)現(xiàn)程序的轉(zhuǎn)移。2.中斷號(hào)的獲取
CPU對(duì)系統(tǒng)中不同類型的中斷源,獲取它們的中斷號(hào)的方法是不同的??善帘沃袛嗟闹袛嗵?hào)是在中斷響應(yīng)周期從中斷控制器獲取的。內(nèi)部中斷INTnH的中斷號(hào)(nH)是由中斷指令直接給出的。不可屏蔽中斷NMI以及CPU內(nèi)部一些特殊中斷的中斷號(hào)是由系統(tǒng)預(yù)先設(shè)置好的,如NMI的中斷號(hào)為02H,非法除數(shù)的中斷號(hào)為0H等。65.3.2中斷響應(yīng)周期
當(dāng)CPU收到外部設(shè)備通過中斷控制器提出的中斷請(qǐng)求INT后,如果當(dāng)前一條指令已執(zhí)行完,且中斷標(biāo)志位IF=1時(shí)(即允許中斷),又沒有DMA請(qǐng)求,那么,CPU進(jìn)入中斷響應(yīng)周期,發(fā)出兩個(gè)連續(xù)中斷應(yīng)答信號(hào)完成一個(gè)中斷響應(yīng)周期。圖5.1表示是中斷響應(yīng)周期時(shí)序。
從圖5.1可知,一個(gè)中斷響應(yīng)周期完成的操作有:71.
置位中斷服務(wù)寄存器ISR
當(dāng)CPU發(fā)出第一個(gè)脈沖時(shí),CPU輸出有效的總線鎖定信號(hào),使總線在此期間處于封鎖狀態(tài),防止其他處理器或DMA控制器占用總線。與此同時(shí),中斷控制器將判優(yōu)后允許的中斷級(jí)在ISR中的相應(yīng)位置1,以登記正在服務(wù)的中斷級(jí)別,在中斷服務(wù)程序執(zhí)行完畢之后,該寄存器自身不能清零,需要向中斷控制器發(fā)中斷結(jié)束命令EOI才能清零。2.讀取中斷號(hào)
當(dāng)總線控制器發(fā)出第二個(gè)2脈沖時(shí),總線鎖定信號(hào)撤除,總線被解封,地址允許信號(hào)ALE也變?yōu)榈碗娖剑o效),即允許數(shù)據(jù)線工作。正好此時(shí)中斷控制器將當(dāng)前中斷服務(wù)程序的中斷號(hào)送到數(shù)據(jù)線上,由CPU讀入。
5.3.3中斷號(hào)的分配
系統(tǒng)對(duì)外部中斷和內(nèi)部中斷一律統(tǒng)一編號(hào),共有256個(gè)號(hào),微機(jī)系統(tǒng)的中斷號(hào)分配如表5.1所示。表中兩塊灰色區(qū)域的中斷號(hào)分別是系統(tǒng)分配給PC微機(jī)系統(tǒng)中的中斷控制器主片與從片的中斷號(hào),用戶可以采用修改其中斷向量的方法進(jìn)行應(yīng)用。8
表5.19105.4中斷觸發(fā)方式與中斷排隊(duì)方式5.4.1中斷觸發(fā)方式
中斷觸發(fā)方式是指外部設(shè)備以什么邏輯信號(hào)去向中斷控制器申請(qǐng)中斷,中斷控制器允許用邊沿或電平信號(hào)申請(qǐng)中斷,即邊沿觸發(fā)和電平觸發(fā)兩種方式。觸發(fā)方式在中斷控制器初始化時(shí)設(shè)定。5.4.2中斷排隊(duì)方式
外部中斷、內(nèi)部中斷是按優(yōu)先級(jí)提供服務(wù)的。中斷優(yōu)先級(jí)從高到低的順序是:內(nèi)部中斷→不可屏蔽中斷→可屏蔽中斷。 當(dāng)系統(tǒng)有多個(gè)中斷源時(shí),就可能出現(xiàn)同時(shí)有幾個(gè)中斷源都申請(qǐng)中斷,而微處理器在一個(gè)時(shí)刻只能響應(yīng)并處理一個(gè)中斷請(qǐng)求。為此,要進(jìn)行中斷排隊(duì),微處理器一般是按“優(yōu)先級(jí)高的先服務(wù)”的原則提供服務(wù)。但也有其他一些中斷排隊(duì)的方式。111.
按優(yōu)先級(jí)排隊(duì)
根據(jù)任務(wù)的輕重緩急,給每個(gè)中斷源指定CPU響應(yīng)的優(yōu)先級(jí),任務(wù)緊急的先響應(yīng),可以暫緩的后響應(yīng)。2.循環(huán)輪流排隊(duì)
不分級(jí)別高低,CPU輪流響應(yīng)各個(gè)中斷源的中斷請(qǐng)求,并為其服務(wù)。3.中斷嵌套在實(shí)際應(yīng)用中,當(dāng)CPU正在處理某個(gè)中斷源,即正在執(zhí)行中斷服務(wù)程序時(shí),會(huì)出現(xiàn)優(yōu)先級(jí)更高的中斷源申請(qǐng)中斷。為了使更緊急的、級(jí)別更高的中斷源及時(shí)得到服務(wù),需要暫時(shí)打斷(掛起)當(dāng)前正在執(zhí)行的級(jí)別較低的中斷服務(wù)程序,去處理級(jí)別更高的中斷源,待處理完以后,再返回到被打斷了的中斷服務(wù)程序繼續(xù)執(zhí)行。但級(jí)別相同或級(jí)別低的中斷源不能打斷級(jí)別高的中斷服務(wù),這就是所謂的中斷嵌套。INTR可以進(jìn)行中斷嵌套。NMI不可以進(jìn)行中斷嵌套。125.5中斷向量與中斷向量表
當(dāng)發(fā)生中斷,就意味著要發(fā)生程序的轉(zhuǎn)移,即由主程序轉(zhuǎn)移到服務(wù)程序去。那么,如何才能進(jìn)入中斷服務(wù)程序,即如何找到中斷服務(wù)程序的入口地址是解決問題的關(guān)鍵。 為此,采用向量中斷方式(不是查詢中斷方式),設(shè)置中斷向量及中斷向量表,通過中斷向量表中的中斷向量查找中斷服務(wù)程序的入口地址。5.5.1中斷向量與中斷向量表
1.什么是中斷向量
CPU響應(yīng)中斷后,中斷源提供中斷號(hào),再由中斷號(hào)生成地址信息,由此地址信息對(duì)程序的執(zhí)行進(jìn)行導(dǎo)向,引導(dǎo)到中斷服務(wù)程序中去,故把這個(gè)地址信息稱為中斷向量(存儲(chǔ)單元)。
中斷向量包括中斷服務(wù)程序的段基址CS(高位字),偏移地址IP(低位字)共4個(gè)字節(jié)。其中,
中斷號(hào)×4=偏移地址IP;中斷號(hào)×4+2=段基址CS。
例如,8號(hào)中斷中斷源的中斷向量:
IP8=8×4=20H~21H;CS8=8×4+2=22H~23H.132.什么是中斷向量表
所有的中斷向量集中存放到存儲(chǔ)器的某一區(qū)域,這一區(qū)域稱之為中斷向量表。微機(jī)系統(tǒng)規(guī)定把存儲(chǔ)器的0000H~03FFH共1024個(gè)地址單元作為中斷向量存儲(chǔ)區(qū),這表明中斷向量表的起始地址是固定的,并且從存儲(chǔ)器的物理地址0開始。中斷向量表如圖5.2所示。每個(gè)中斷向量包含4個(gè)字節(jié),這4個(gè)字節(jié)在中斷向量表中的存放規(guī)律是向量的偏移量(IP)存放在兩個(gè)低字節(jié)單元中,向量的基址(CS)存放在兩個(gè)高字節(jié)單元中。14圖5.2中斷向量表155.5.2中斷向量表的填寫
中斷向量表的填寫分系統(tǒng)填寫和用戶填寫兩種情況。系統(tǒng)設(shè)置的中斷服務(wù)程序,其中斷向量由系統(tǒng)負(fù)責(zé)填寫。用戶開發(fā)的中斷系統(tǒng),在編寫中斷服務(wù)程序時(shí),其中斷向量由用戶負(fù)責(zé)填寫,可采用MOV指令直接向中斷向量表中填寫中斷向量。不過,一般用戶都是通過修改中斷向量的方法使用系統(tǒng)的中斷資源,而很少由用戶自己直接填寫中斷向量。165.6中斷處理過程5.6.1可屏蔽中斷的處理過程1.中斷申請(qǐng)與響應(yīng)握手
當(dāng)外部設(shè)備要求CPU服務(wù)時(shí),需向CPU發(fā)出中斷請(qǐng)求信號(hào),申請(qǐng)中斷。CPU若發(fā)現(xiàn)有外部中斷請(qǐng)求,并且處在開中斷條件(IF=1),又沒有DMA申請(qǐng),則CPU在當(dāng)前指令執(zhí)行結(jié)束時(shí),進(jìn)入中斷響應(yīng)總線周期,響應(yīng)中斷請(qǐng)求,并且通過中斷回答信號(hào),從中斷控制器讀取中斷源的中斷號(hào),完成中斷申請(qǐng)與中斷響應(yīng)的握手過程。這一階段的主要目標(biāo)是獲取外部中斷源的中斷號(hào)。2.標(biāo)志位的處理與斷點(diǎn)保存
微處理器獲得外部中斷源的中斷號(hào)后,CPU把標(biāo)志寄存器FLAGS壓入堆棧,并置IF=0,關(guān)閉中斷;置TF=0,防止單步執(zhí)行。然后將當(dāng)前程序的代碼段寄存器CS和指令指針I(yè)P壓入堆棧,這樣就把斷點(diǎn)(返回地址)保存到了堆棧的棧頂。這一階段的主要目標(biāo)是完成由主程向服務(wù)程序轉(zhuǎn)移前的準(zhǔn)備工作。173.向中斷服務(wù)程序轉(zhuǎn)移并執(zhí)行中斷服務(wù)程序
將已獲得的中斷號(hào)乘以4得到地址指針,在中斷向量表中,讀取中斷服務(wù)程序的入口地址CS∶IP,再把它寫入代碼段和指令指示器,實(shí)現(xiàn)程序控制的轉(zhuǎn)移。這一階段的主要目標(biāo)是完成主程序向中斷服務(wù)程序的轉(zhuǎn)移,或稱為中斷服務(wù)程序的加載。
4.返回?cái)帱c(diǎn)
中斷服務(wù)程序執(zhí)行完畢后,要返回主程序,因此,一定要恢復(fù)斷點(diǎn)和標(biāo)志寄存器的內(nèi)容,否則,主程序無法繼續(xù)執(zhí)行。為此,在中斷服務(wù)程序的末尾,執(zhí)行中斷返回指令I(lǐng)RET,將棧頂?shù)膬?nèi)容依次彈出到IP、CS和FLAGS,就恢復(fù)了主程序的執(zhí)行。這一階段的主要目標(biāo)是完成中斷服務(wù)程序向主程序的轉(zhuǎn)移。185.6.2不可屏蔽中斷和軟中斷的處理過程 由于它們的不可屏蔽性,并且其中斷號(hào)的獲取方法與可屏蔽中斷不一樣,所以其中斷處理過程也有所差別。其主要差別是:不需通過中斷響應(yīng)周期獲取中斷號(hào),是由系統(tǒng)分配的;中斷服務(wù)程序結(jié)束,不需發(fā)中斷結(jié)束命令EOI,是自動(dòng)結(jié)束方式。其他處理過程與可屏蔽中斷的一樣。195.7中斷外部中斷的解決方案5.7.1中斷控制器82C59A的外部特性82C59A的外部引腳如圖5.3所示,3組信號(hào)線如下:(1)面向CPU的信號(hào)線。包括用于CPU發(fā)命令及讀取中斷號(hào)的8根數(shù)據(jù)線D0~D7,一對(duì)中斷請(qǐng)求線INT和中斷回答線,以及、控制線與地址線、A0。(2)面向I/O設(shè)備的信號(hào)線。8根中斷申請(qǐng)線IR0~I(xiàn)R7,其作用有二:一是接收外設(shè)的中斷申請(qǐng),可接收8個(gè)外部中斷源的中斷申請(qǐng);二是作外部中斷優(yōu)先級(jí)排隊(duì)用,可進(jìn)行8級(jí)中斷排隊(duì),采用完全中斷嵌套排隊(duì)方式時(shí),連接IR0的設(shè)備優(yōu)先級(jí)最高,連接IR7的設(shè)備優(yōu)先級(jí)最低。(3)面向同類芯片的中斷級(jí)聯(lián)信號(hào)線。中斷級(jí)聯(lián)信號(hào)線用于擴(kuò)展中斷源,包括主/從芯片的設(shè)定線/EN,3根用以傳送從片識(shí)別碼的級(jí)聯(lián)線CAS0~CAS2。圖5.382C59A引腳圖205.7.2中斷控制器82C59A的工作方式1.中斷觸發(fā)方式(1)邊沿觸發(fā)方式IR0~I(xiàn)R7輸入線上出現(xiàn)由低電平到高電平的跳變,表示有中斷請(qǐng)求。(2)電平觸發(fā)方式IR1~I(xiàn)R7輸入線出現(xiàn)高電平時(shí),表示有中斷請(qǐng)求。2.中斷級(jí)聯(lián)方式
82C59A可以單片使用,也可以多片使用,兩片以上使用時(shí)才有級(jí)聯(lián)問題。級(jí)聯(lián)問題分兩個(gè)方面:從主片看,它的哪一根或哪幾根中斷申請(qǐng)輸入線IR上有從片連接;從從片看,它的中斷申請(qǐng)輸出線INT與主片的哪一根中斷申請(qǐng)輸入線IR相連。213.中斷屏蔽方式
82C59A的中斷屏蔽是指對(duì)外設(shè)中斷申請(qǐng)的屏蔽,即允許還是不允許外設(shè)申請(qǐng)中斷,而不是對(duì)已經(jīng)提出的中斷申請(qǐng)響不響應(yīng)的問題。82C59A有常規(guī)屏蔽方式和特殊屏蔽方式兩種,常規(guī)屏蔽方式使用較多。(1)常規(guī)屏蔽方式這是通過82C59A屏蔽寄存器寫入8位屏蔽碼來屏蔽或開放8個(gè)中斷申請(qǐng)線(IR0~I(xiàn)R7)上的中斷申請(qǐng),要屏蔽哪個(gè)中斷申請(qǐng),就將屏蔽碼的相應(yīng)位置1;不屏蔽的,即開放中斷的,則相應(yīng)位置0。例如,屏蔽碼11111011B,表示僅開放IR2,其他均屏蔽。(2)特殊屏蔽方式 用于開放低級(jí)別的中斷申請(qǐng)。允許比正在服務(wù)的中斷級(jí)別低的中斷申請(qǐng)中斷,而屏蔽同級(jí)的中斷再次申請(qǐng)中斷。4.中斷優(yōu)先級(jí)排隊(duì)方式
82C59A提供了3種中斷優(yōu)先級(jí)排隊(duì)方式:完全嵌套方式、特殊嵌套方式和優(yōu)先級(jí)循環(huán)方式。
225.中斷結(jié)束方式(1)自動(dòng)結(jié)束方式
這是中斷響應(yīng)之后,在中斷響應(yīng)周期,就自動(dòng)清零該中斷源在ISR寄存器中被置1的位。在中斷服務(wù)程序中不需發(fā)出中斷結(jié)束命令EOI。(2)非自動(dòng)結(jié)束方式 這是ISR中被置1的位,在服務(wù)完畢后,不能自動(dòng)清零,而必須在中斷服務(wù)程序中發(fā)出中斷結(jié)束命令EOI,才能清零,故稱為非自動(dòng)結(jié)束。非自動(dòng)結(jié)束方式是常用的方式,其中又有兩種命令格式。
常規(guī)結(jié)束命令:該命令使ISR寄存器中優(yōu)先級(jí)最高的置1位清零(復(fù)位)。
指定結(jié)束命令:該命令明確指定ISR寄存器中哪一個(gè)置1的位清零,即服務(wù)完畢,具體指定哪一級(jí)中斷結(jié)束。指定結(jié)束方式應(yīng)用較多。23245.7.3中斷控制器82C59A的編程模型
82C59A編程模型包括內(nèi)部可訪問的寄存器及相應(yīng)的7個(gè)命令字。內(nèi)部寄存器如圖5.5所示。(1)命令寄存器8位,隱含在“控制邏輯”模塊內(nèi)部,接收并處理7個(gè)命令字,用戶可以訪問。(2)中斷請(qǐng)求寄存器(IRR)8位,以邏輯1記錄已經(jīng)提出中斷請(qǐng)求的中斷級(jí),等待CPU響應(yīng)。當(dāng)提出中斷請(qǐng)求的外設(shè)產(chǎn)生中斷時(shí),由82C59A置位,直到中斷被響應(yīng)才自動(dòng)清零。IRR的內(nèi)容可以由CPU通過OCW3命令讀出。(3)中斷服務(wù)寄存器(ISR)在中斷響應(yīng)之后,第一個(gè)獲準(zhǔn)中斷請(qǐng)求的中斷級(jí)在相應(yīng)的ISR中置位。如IR3獲準(zhǔn),ISR中的IS3置位,表明IR3正處于服務(wù)。1.82C59A內(nèi)部寄存器25(4)中斷屏蔽寄存器(IMR)
是對(duì)中斷請(qǐng)求IR起屏蔽作用,即對(duì)中斷請(qǐng)求IR允許還是不允許,寄存器8位對(duì)應(yīng)8級(jí)中斷屏蔽。哪一級(jí)中斷被屏蔽,哪位就寫“1”,即禁止IR提出中斷請(qǐng)求。哪一級(jí)中斷被允許,哪位就寫“0”,即開放IR提出中斷請(qǐng)求。(5)中斷申請(qǐng)優(yōu)先級(jí)分析器(PR)
這是一個(gè)中斷請(qǐng)求的判優(yōu)電路。它把新來的中斷請(qǐng)求優(yōu)先級(jí)與ISR寄存器中記錄在案的中斷優(yōu)先級(jí)進(jìn)行比較,看誰的優(yōu)先級(jí)最高,就讓誰申請(qǐng)中斷。其操作過程全部由硬件完成,故該寄存器對(duì)用戶是不可訪問的,它不屬于82C59A的編程模型之內(nèi)。262.82C59A的端口地址
中斷控制器82C59A是系統(tǒng)資源,其端口地址由系統(tǒng)分配,見第3章表3.1。
主片的兩個(gè)端口地址為20H和21H;從片的兩個(gè)端口地址為0A0H和0A1H。
7個(gè)命令具體使用哪個(gè)端口地址由命令的標(biāo)志位A0指示。273.82C59A的命令
82C59A共有7個(gè)編程命令,分為初始化命令I(lǐng)CW1~I(xiàn)CW4和操作命令OCW1~OCW3兩類。初始化命令I(lǐng)CW確定中斷控制器的基本配置或工作方式,而操作命令OCW執(zhí)行由ICW命令定義的基本操作。值得指出的是,初始化命令是在用戶自行另外設(shè)計(jì)中斷系統(tǒng)時(shí)才會(huì)用到。如果是利用系統(tǒng)已有的中斷資來源開發(fā)中斷應(yīng)用,就不需要進(jìn)行初始化,也就不會(huì)使用這些初始化命令。下面分別介紹各的作用及格式。(1)初始化命令(ICW1~I(xiàn)CW4)
4個(gè)初始化命令用來對(duì)82C59A的工作方式和中斷號(hào)進(jìn)行設(shè)置,包括中斷觸發(fā)方式、級(jí)聯(lián)方式、排隊(duì)方式及結(jié)束方式。28ICW1命令功能:設(shè)定中斷請(qǐng)求的觸發(fā)方式、是否多片使用、要不要寫ICW4ICW1的格式如下:例如,若采用邊沿觸發(fā),單片使用,需要ICW4則
ICW1命令字=00010011B=13H,其程序段為:
MOVAL,00010011B;ICW1的內(nèi)容
OUT20H,AL;寫入ICW1端口(A0=0)
29ICW2命令
功能:設(shè)定中斷號(hào)。對(duì)連接到主片和從片上的8級(jí)中斷源的中斷號(hào),高5位分別為08H與70H(見表5.3和表5.4),而低3位由連接到主/從片申請(qǐng)線IRi的編碼確定。因此,向ICW2寫入中斷號(hào)只寫高5位,低3位寫0,ICW2命令的格式如下。
例如,硬盤的中斷號(hào)是0DH,ICW2=08H。
MOVAL,08H OUT21H,AL;寫入ICW2的端口(A0=1)
由于硬盤中斷請(qǐng)求連接IR5,故低3位=05H,由硬件寫入。
30ICW3命令功能:設(shè)置中斷級(jí)聯(lián)方式,主片和從片分開設(shè)置。ICW3命令的格式主片與從片不同,分別如下:
a.主片的ICW3
b.從片的ICW331
ICW3命令只有系統(tǒng)存在2片以上82C59A時(shí)才啟用,否則不用ICW3命令。分主片和從片,分開設(shè)置。
主片IRi的哪一個(gè)輸入引腳上有從片連接,該位寫1;若無,寫0。例如,若主片的IR4上有從片連接,則主片的ICW3=00010000B=10H。
從片的中斷請(qǐng)求線INT連到了主片哪一個(gè)IRi上,則寫入該位的編號(hào)代碼。例如,若從片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)
32
又如,假設(shè)主片的IR3和IR6兩個(gè)輸入端分別連接了從片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)3334ICW4命令
功能:設(shè)置優(yōu)先級(jí)排隊(duì)和中斷結(jié)束方式ICW4的格式如下:
例如,若CPU為16位,82C59A與系統(tǒng)總線之間采用緩沖器連接,非自動(dòng)結(jié)束方式,只用1片8259A,正常完全嵌套,其初始化命令字ICW4=00001101B=0DH初始化ICW4的程序段如下。MOVAL,0DH ;ICW4的內(nèi)容OUT21H,AL ;寫入ICW4的端口(A0=1)又如,若CPU為16位,采用非自動(dòng)結(jié)束方式,使用兩片82C59A,非緩沖方式,為使從片也能提出中斷請(qǐng)求,主片采用特殊的完全嵌套方式,其初始化命令字ICW4=00010101B=15H初始化ICW4的程序段如下。MOVAL,15H ;ICW4的內(nèi)容OUT21H,AL ;寫入ICW4的端口(A0=1)35(2)操作命令(OCW1~OCW3)
3個(gè)操作命令是對(duì)82C59A經(jīng)初始化所設(shè)置的中斷屏蔽、中斷結(jié)束、中斷排隊(duì)方式進(jìn)行實(shí)際操作。其中,OCW3很少使用。
①OCW1命令
功能:執(zhí)行常規(guī)的中斷屏蔽/開放操作。OCW1命令的格式如下。36例如,
若要使中斷源IR3開放,其余被屏蔽,則OCW1=11110111B=F7H
屏蔽程序段為:MOVAL,0F7H
;OCW1內(nèi)容OUT21H,AL;21H為OCW1的端口
37②OCW2命令功能:執(zhí)行中斷結(jié)束操作和優(yōu)先級(jí)排隊(duì)操作。OCW2的格式如下。OCW2中R、SL、EOI的組合功能如表5.2所示.3839RSLEOI功能001不指定EOI命令,全嵌套方式EOI命令,全嵌套方式011指定EOI命令,全嵌套方式,LEOI命令,全嵌套方式,L2~L0指定對(duì)應(yīng)ISR位清零ISR位清零101不指定EOI命令,優(yōu)先級(jí)自動(dòng)循環(huán)EOI命令,優(yōu)先級(jí)自動(dòng)循環(huán)111指定EOI命令,優(yōu)先級(jí)特殊循環(huán),LEOI命令,優(yōu)先級(jí)特殊循環(huán),L2~L0指定最低優(yōu)先級(jí)100自動(dòng)EOI,優(yōu)先級(jí)自動(dòng)循環(huán)EOI,優(yōu)先級(jí)自動(dòng)循環(huán)000自動(dòng)EOI,取消優(yōu)先級(jí)自動(dòng)循環(huán)EOI,取消優(yōu)先級(jí)自動(dòng)循環(huán)110優(yōu)先級(jí)特殊循環(huán),LL2~L0指定最低優(yōu)先級(jí)010無操作表5.2 OCW2中R、SL、EOI的組合功能OCW2的具體操作:1)作中斷結(jié)束控制:當(dāng)在初始化命令I(lǐng)CW1選用非自動(dòng)結(jié)束方式時(shí),就利用OCW2來控制中斷結(jié)束。即:OCW2格式中的EOI(D5)=1SL(D6)=0,不指定中斷結(jié)束
L2~L0=000,OCW2=00100000B
SL(D6)=1,指定中斷結(jié)束
L2~L0編碼是被指定的中斷等級(jí)例如,指定IR5為中斷結(jié)束,則OCW2=01100101B=65H。402)作中斷優(yōu)先級(jí)排隊(duì)控制R(D7)1:需要輪換優(yōu)先權(quán),分二種若SL=0:優(yōu)先級(jí)固定方式,則為完全嵌套方式1:優(yōu)先權(quán)指定輪換0:自動(dòng)輪換OCW3命令功能:進(jìn)行特定的中斷屏蔽/開放操作。OCW3在實(shí)際中很少使用,不做介紹,可參考文獻(xiàn)[21]。415.7.4中斷控制器對(duì)CPU處理中斷的支持作用1.接受外部設(shè)備的中斷請(qǐng)求經(jīng)過優(yōu)先權(quán)判決找到哪一個(gè)中斷源的中斷請(qǐng)求級(jí)別最高,然后,再向CPU提出中斷申請(qǐng)INT。2.優(yōu)先級(jí)排隊(duì)管理根據(jù)任務(wù)輕重緩急或設(shè)備的特殊要求,分配中斷源的中斷源等級(jí)。3.提供中斷類型號(hào)為CPU實(shí)現(xiàn)程序的轉(zhuǎn)移給出中斷服務(wù)程序入口地址指針。4.實(shí)現(xiàn)中斷請(qǐng)求的屏蔽和開放5.執(zhí)行中斷結(jié)束命令425.8可屏蔽中斷的體系結(jié)構(gòu)及初始化5.8.1可屏蔽中斷的體系結(jié)構(gòu)
可屏蔽中斷體系由主/從兩片82C59A中斷控制器進(jìn)行級(jí)聯(lián)組成,可支持15級(jí)可屏蔽中斷處理,如圖5.8所示。434415級(jí)可屏蔽中斷的中斷號(hào)分配如表5.3和表5.4所示。中斷源中斷號(hào)高5位5位低3位3位中斷號(hào)日時(shí)鐘08HIR0(0)08H鍵盤08HIR1(1)09H保留08HIR2(2)0AH通信(二)08HIR3(3)0BH通信(一)08HIR4(4)0CH硬盤08HIR5(5)0DH軟盤08HIR6(6)0EH打印機(jī)08HIR7(7)0FH中斷源中斷號(hào)高5位5位低3位3位中斷號(hào)實(shí)時(shí)鐘70HIR0(0)70H改向INTOAINTOA70HIR1(1)71H保留70HIR2(2)72H保留70HIR3(3)73H保留70HIR4(4)74H協(xié)處理器70HIR5(5)75H硬盤70HIR6(6)76H保留70HIR7(7)77H表5.4 從片82C59A8級(jí)硬中斷源的中斷號(hào)表5.3 主片82C59A8級(jí)硬中斷源的中斷號(hào)5.8.2可屏蔽中斷的初始化設(shè)置1.初始化設(shè)置的內(nèi)容
(1)中斷觸發(fā)方式采用邊沿觸發(fā),上跳變有效。(2)中斷屏蔽方式采用常規(guī)屏蔽方式,即使用OCW1向IMR寫入屏蔽碼。(3)中斷優(yōu)先級(jí)排隊(duì)方式采用固定優(yōu)先級(jí)的完全嵌套方式。(4)中斷結(jié)束方式采用非自動(dòng)結(jié)束方式中的不指定結(jié)束和指定結(jié)束兩種命令格式,即在中斷服務(wù)程序服務(wù)完畢中斷返回之前,發(fā)結(jié)束命令代碼20H或6XH均可(X為0~7)。(5)級(jí)聯(lián)方式采用兩片主/從連接方式,并且規(guī)定把從片的中斷申請(qǐng)輸出引腳INT連到主片的中斷請(qǐng)求輸入引腳IR2上。兩片級(jí)聯(lián)處理15級(jí)中斷。(6)15級(jí)中斷號(hào)的分配為:中斷號(hào)08H~0FH對(duì)應(yīng)IRQ0~I(xiàn)RQ7,中斷號(hào)70H~77H對(duì)應(yīng)IRQ8~I(xiàn)RQ15。(7)兩片82C59A的端口地址分配為:主片82C59A的兩個(gè)端口是20H和21H;從片82C59A的兩個(gè)端口是0A0H和0A1H452.初始化設(shè)置的程序(1)初始化流程系統(tǒng)上電期間,分別對(duì)82C59A的主片和從片進(jìn)行初始化。初始化流程如圖5.9所示。46(2)系統(tǒng)對(duì)中斷控制器初始化程序段
①82C59A主片匯編語言初始化程序段如下。INTA00EQU020H ;82C59A主片端口(A0=0)INTA01EQU021H ;82C59A主片端口(A0=1)MOVAL,11H ;ICW1:邊沿觸發(fā),多片,要ICW4OUTINTA00,ALJMPSHORT$+2 ;I/O端口延時(shí)要求(下同)MOVAL,8H ;ICW2:中斷號(hào)的高5位OUTINTA01,ALJMPSHORT$+2MOVAL,04H ;ICW3:主片的IR2上接從片,(A0=1)OUTINTA01,ALJMPSHORT$+2MOVAL,01H ;ICW4:非緩沖,全嵌套,16位的CPU,非自動(dòng)結(jié)束OUTINTA01,AL47②82C59A從片匯編語言初始化程序段如下。INTB00EQU0A0H ;82C59A從片端口(A0=0)INTB01EQU0A1H ;82C59A從片端口(A0=1)MOVAL,11H ;ICW1:邊沿觸發(fā),多片,要ICW4OUTINTB00,ALJMPSHORT$+2MOVAL,70H ;ICW2:中斷號(hào)的高5位OUTINTB01,ALJMPSHORT$+2MOVAL,02H ;ICW3:從片接主片的IR2(ID2ID1ID0=010)OUTINTB01,ALJMPSHORT$+2MOVAL,01H;ICW4:非緩沖,全嵌套,16位的CPU,非自動(dòng)結(jié)束OUTINTB01,AL系統(tǒng)一旦完成了對(duì)82C59A的初始化,所有外部硬件中斷源和服務(wù)程序(包括已開發(fā)和未開發(fā)的)都必須按初始化的規(guī)定去做,因此,為慎重起見,對(duì)系統(tǒng)的82C59A初始化編程不由用戶去做,而是在微機(jī)啟動(dòng)后由處理器按初始化設(shè)置要求自動(dòng)完成。485.9系統(tǒng)中斷資源的應(yīng)用5.9.1修改中斷向量
修改中斷向量是修改同一中斷號(hào)下的中斷服務(wù)程序入口地址。1.中斷向量修改的方法
中斷向量修改的方法是利用DOS功能調(diào)用INT21H的35H號(hào)功能和25H號(hào)功能。INT21H系統(tǒng)功能調(diào)用為用戶程序修改中斷向量提供了兩個(gè)讀/寫中斷向量的功能號(hào),其入口/出口參數(shù)如下。(1)INT21H的35H號(hào)功能是從中斷向量表中讀取中斷向量入口參數(shù):無。AH=功能號(hào)35H,AL=中斷號(hào)N。調(diào)用:即執(zhí)行INT21H。出口參數(shù):ES∶BX=讀取的中斷向量的段基址:偏移量。(2)INT21H的25H號(hào)功能是向中斷向量表中寫入中斷向量
入口參數(shù):DS∶DX=要寫入的中斷向量的段基址:偏移量。AH=功能號(hào)25H,AL=中斷號(hào)N。調(diào)用:即執(zhí)行INT21H。出口參數(shù):無。492.中斷向量修改與恢復(fù)的步驟(1)調(diào)用35H號(hào)功能,從向量表中讀取某一中斷號(hào)的原中斷向量,并保存在雙字節(jié)變量中。(2)調(diào)用25H號(hào)功能,將新中斷向量寫入中斷向量表中原中斷向量的位置,取代原中斷向量。(3)新中斷服務(wù)程序完畢后,再用25H號(hào)功能將保存在雙字節(jié)變量中的原中斷向量寫回去,恢復(fù)原中斷向量。50
溫馨提示
- 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. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 銷售公司業(yè)務(wù)員勞動(dòng)合同協(xié)議
- 房屋按揭共同還款合同樣本2025
- 生態(tài)養(yǎng)殖基地租賃合同
- 特許經(jīng)營(yíng)合同示范文本
- 新能源貨車租賃合同
- 采購(gòu)合同管理:風(fēng)險(xiǎn)防范與應(yīng)對(duì)措施
- 合作建房借款合同(單位集體住房)
- 度產(chǎn)品試用合同協(xié)議
- 金屬冶煉安全管理課件
- 寵物營(yíng)養(yǎng)與寵物骨骼健康考核試卷
- 課件-DeepSeek從入門到精通
- 17J008擋土墻(重力式、衡重式、懸臂式)圖示圖集
- 藥品類體外診斷試劑專項(xiàng)培訓(xùn)課件
- 心電監(jiān)護(hù)儀的操作及注意事項(xiàng) 課件
- GB/T 718-2024鑄造用生鐵
- 人教版八年級(jí)下冊(cè)道德與法治全冊(cè)教案完整版教學(xué)設(shè)計(jì)含教學(xué)反思
- 細(xì)胞生物學(xué)(全套1047張課件)
- 自動(dòng)化生產(chǎn)線運(yùn)行與維護(hù)完整版課件(全)
- 《建設(shè)工程施工現(xiàn)場(chǎng)環(huán)境與衛(wèi)生標(biāo)準(zhǔn)》JGJ-146-2013(完整版)
- 急性CO中毒的高壓氧治療課件
- 推薦算法介紹ppt課件
評(píng)論
0/150
提交評(píng)論