微機原理與接口技術(shù)第8章_第1頁
微機原理與接口技術(shù)第8章_第2頁
微機原理與接口技術(shù)第8章_第3頁
微機原理與接口技術(shù)第8章_第4頁
微機原理與接口技術(shù)第8章_第5頁
已閱讀5頁,還剩62頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第8章中斷技術(shù)8.1中斷基礎(chǔ)8.28086CPU的中斷系統(tǒng)8.3可編程中斷控制器8259A8.48259A在微機中的編程應(yīng)用8.580486CPU中斷系統(tǒng)8.1中斷基礎(chǔ)一、中斷的基本概念中斷:是指CPU在正常運行時,由于內(nèi)、外部事件或由程序預(yù)先安排引起的,CPU暫停正在運行的程序而轉(zhuǎn)去執(zhí)行內(nèi)、外部事件或預(yù)先安排的事件服務(wù)程序,待處理完畢后又回到原來被中止的程序處繼續(xù)執(zhí)行的過程中斷源:產(chǎn)生中斷請求的外設(shè)或引發(fā)內(nèi)部中斷的原因和事件。中斷源通常有三類: 一是外設(shè)請求,如實時時鐘請求、I/O接口電路請求等; 二是由硬件故障引起,如電源掉電、硬件損壞等; 三是由軟件引起,如程序錯、設(shè)置斷點等。中斷請求:中斷源為獲得CPU處理而向CPU發(fā)出的請求信號。中斷響應(yīng):CPU接到中斷源產(chǎn)生的中斷請求信號后,若決定響應(yīng)此中斷請求,則向外設(shè)發(fā)出中斷響應(yīng)信號的過程。斷點:CPU處理中斷時,原程序的暫時中止處(即中斷返回后繼續(xù)執(zhí)行的指令地址)。8.1中斷基礎(chǔ)中斷服務(wù)程序:中斷源產(chǎn)生中斷后請求CPU執(zhí)行的處理程序。中斷處理:CPU執(zhí)行中斷服務(wù)程序的過程。中斷返回:當中斷服務(wù)程序運行結(jié)束后,返回原程序斷點處繼續(xù)執(zhí)行,稱為中斷返回。中斷屏蔽:禁止中斷響應(yīng)稱為中斷屏蔽。微機響應(yīng)中斷的過程與執(zhí)行轉(zhuǎn)子指令CALL的過程非常類似。但中斷是隨機發(fā)生的。引起中斷的程序轉(zhuǎn)移示意圖如圖8.1所示。8.1中斷基礎(chǔ)二、中斷優(yōu)先級與中斷嵌套 在微機系統(tǒng)中,通常都會有多個外部設(shè)備以中斷方式與CPU進行通訊,即存在多個中斷源。因而往往出現(xiàn)以下情況:(1)多個中斷源在同一時間向CPU發(fā)出中斷請求信號;(2)當CPU正在響應(yīng)某一中斷源的請求,執(zhí)行相應(yīng)中斷服務(wù)程序時,又有別的中斷源產(chǎn)生新的中斷請求。 由于CPU在某一時刻只能響應(yīng)一個中斷請求,對于上述兩種情況,就需要CPU依據(jù)各中斷源所請求任務(wù)的輕重緩急,安排好中斷處理的次序。通過為每個中斷源指定CPU響應(yīng)的優(yōu)先級別(簡稱優(yōu)先級,也稱優(yōu)先權(quán))確定CPU響應(yīng)哪個中斷源的中斷請求,通常CPU先響應(yīng)優(yōu)先級高的中斷請求。 對于第一種情況,CPU選擇多個中斷源中優(yōu)先級最高的中斷請求予以響應(yīng)。 對于第二種情況,當CPU正在處理中斷時,也能響應(yīng)優(yōu)先級更高的中斷請求,但屏蔽同級或低級的中斷請求,這就是所謂多重中斷或中斷嵌套。8.1中斷基礎(chǔ)解決中斷的優(yōu)先級的方法:1.軟件查詢方式 軟件查詢方式是最簡單的一種確定中斷優(yōu)先級的方法,如圖8.2所示顯示了其接口電路的形式。從圖8.2可知,一方面各中斷源的中斷請求信號都被鎖存于鎖存器(中斷狀態(tài)端口)中,另一方面,所有的中斷請求信號相“或”后作為INTR信號,向CPU提出中斷請求。因此,當任何一個中斷源有中斷請求時,其在鎖存器中的相應(yīng)位置1,同時向CPU送出INTR信號。CPU響應(yīng)中斷后,通過一段公共查詢程序來確定相應(yīng)的中斷源,并轉(zhuǎn)入相應(yīng)的中斷服務(wù)程序。在查詢程序中查詢狀態(tài)端口的順序就決定了中斷源的優(yōu)先級高低,先查詢的中斷源優(yōu)先級高,后查詢的中斷源優(yōu)先級就低。軟件查詢方式的優(yōu)點是硬件簡單,不需要硬件排隊電路,可通過修改軟件的查詢順序來改變中斷源的優(yōu)先級。但軟件查詢方式由于需要對中斷源逐一查詢,當中斷源較多時耗時較長,影響中斷響應(yīng)的實時性。8.1中斷基礎(chǔ)8.1中斷基礎(chǔ)2.硬件排隊方式 硬件排隊方式是指利用專門的硬件電路實現(xiàn)中斷源優(yōu)先級的排隊。常用的有鏈式優(yōu)先級排隊和向量優(yōu)先級排隊兩種電路。(1)鏈式優(yōu)先級排隊 該方法是在每個中斷源接口電路中設(shè)置一個稱為菊花鏈的邏輯電路,利用中斷源在系統(tǒng)中的物理位置確定其中斷優(yōu)先級。(2)向量優(yōu)先級排隊 在鏈式優(yōu)先級排隊電路中,外設(shè)的中斷優(yōu)先級由其接口電路在菊花鏈中的位置決定,調(diào)整優(yōu)先級就涉及硬件改動,使用不方便。目前微機系統(tǒng)中多用專門的優(yōu)先級中斷控制器構(gòu)成向量優(yōu)先級中斷系統(tǒng)來管理中斷優(yōu)先級。用戶可以通過編程實現(xiàn)中斷源優(yōu)先級的靈活調(diào)整而無需改動硬件接口電路。8.1中斷基礎(chǔ)8.1中斷基礎(chǔ)三、中斷過程 一個完整的中斷處理過程一般都會包括中斷請求、中斷響應(yīng)、中斷處理和中斷返回幾個階段。1.中斷請求 中斷源能否向CPU提出中斷請求取決于兩個條件:(1)中斷源(如外設(shè))需要CPU為其服務(wù),且其本身已經(jīng)準備就緒;(2)系統(tǒng)允許該中斷源提出申請。在多中斷源的情況下,為增加控制的靈活性,常常在外設(shè)接口電路中設(shè)置一個中斷屏蔽寄存器,只有在該中斷源的中斷請求未被屏蔽時,其中斷請求才能送到CPU。因此,只有滿足這兩個條件,中斷源才會通過發(fā)送中斷請求信號向CPU提出中斷請求。8.1中斷基礎(chǔ)2.中斷響應(yīng)

CPU通常會在每條指令執(zhí)行結(jié)束后檢測有無中斷請求信號發(fā)生,當檢測到有中斷請求發(fā)生時,CPU有權(quán)決定是否對該中斷請求予以響應(yīng)。若CPU允許中斷,則予以響應(yīng),否則CPU不予響應(yīng)。一旦CPU決定響應(yīng)該中斷源的中斷請求,則進入中斷響應(yīng)周期。CPU響應(yīng)中斷時要自動完成以下三項任務(wù):(1)關(guān)中斷。因為CPU響應(yīng)中斷后,要進行必要的中斷處理,在此期間不允許其它中斷源來打擾。(2)斷點保護。通過內(nèi)部硬件保存斷點及標志寄存器內(nèi)容,以便中斷處理完畢后能正確返回被中斷的原程序處繼續(xù)執(zhí)行。(3)獲得中斷服務(wù)程序的入口地址。CPU響應(yīng)中斷后,將以某種方式查找中斷源,獲得中斷服務(wù)程序的入口地址,轉(zhuǎn)向?qū)?yīng)的中斷服務(wù)程序。 前兩步通常是由硬件完成的,而最后一步可由硬件或軟件實現(xiàn)。8.1中斷基礎(chǔ)3.中斷處理

中斷處理也叫中斷服務(wù),是由中斷服務(wù)程序完成的,不同的中斷服務(wù)程序完成不同的功能,一般在中斷服務(wù)程序中要做以下幾項工作。(1)保護現(xiàn)場 主程序和中斷服務(wù)程序都要使用CPU內(nèi)部寄存器等資源,為使中斷處理程序不破壞主程序中寄存器的內(nèi)容,應(yīng)先將斷點處各寄存器的內(nèi)容壓入堆棧保護起來,再進入中斷處理。(2)開中斷 在中斷響應(yīng)階段,CPU由硬件控制會自動執(zhí)行關(guān)中斷,以保護CPU在中斷響應(yīng)時不會被再次中斷。但在某些情況下,有比該中斷更緊急的情況要處理時,應(yīng)停止對該中斷的服務(wù)而轉(zhuǎn)到優(yōu)先級更高的中斷服務(wù)程序,以實現(xiàn)中斷嵌套。中斷過程中,可以多次開放和關(guān)閉中斷,但一般只在程序的關(guān)鍵部分才關(guān)閉中斷,其它部分則要開放中斷以允許中斷嵌套。8.1中斷基礎(chǔ)(3)中斷服務(wù)

中斷服務(wù)是執(zhí)行中斷的主體部分,不同的中斷請求,有各自不同的中斷服務(wù)內(nèi)容,需要根據(jù)中斷源所要完成的功能,事先編寫相應(yīng)的中斷服務(wù)程序存入內(nèi)存,等待中斷請求響應(yīng)后調(diào)用執(zhí)行。(4)關(guān)中斷

若在第二步中執(zhí)行了開中斷操作,則需關(guān)中斷以為恢復現(xiàn)場做準備。(5)恢復現(xiàn)場當中斷服務(wù)處理完畢后,在返回主程序前需要將前面通過PUSH指令保護的寄存器內(nèi)容從堆棧中彈出,以便返回到主程序后能繼續(xù)正確運行。注意POP指令的順序應(yīng)按先進后出的原則與進棧指令一一對應(yīng)。8.1中斷基礎(chǔ)4.中斷返回 在中斷服務(wù)程序的最后要安排一條中斷返回指令I(lǐng)RET。執(zhí)行該指令,使CPU轉(zhuǎn)到被中斷的程序中繼續(xù)執(zhí)行。一、8086中斷類型 8086CPU的中斷系統(tǒng)可以處理256種不同類型的中斷。為了便于識別,8086系統(tǒng)中給每種中斷都賦予了一個中斷類型號,編號為0~255。CPU可根據(jù)中斷類型號的不同來識別不同的中斷源。中斷源可以來自CPU內(nèi)部,稱為內(nèi)部中斷;也可以來自CPU外部,稱為外部中斷。如圖8.7所示。8.28086CPU的中斷系統(tǒng)1.外部中斷

外部中斷也被稱為硬件中斷,是由外部設(shè)備通過硬件請求的方式所產(chǎn)生的中斷。外部中斷又可分為不可屏蔽中斷和可屏蔽中斷兩種。(1)不可屏蔽中斷NMI 當外設(shè)通過非屏蔽中斷請求信號NMI向CPU提出中斷請求時,CPU在當前指令執(zhí)行結(jié)束后,就立即無條件的予以響應(yīng),這樣的中斷就是不可屏蔽中斷。不可屏蔽中斷在外部中斷源中優(yōu)先級最高,主要用于緊急情況的故障處理,如電源掉電、存儲器讀/寫錯誤、擴展槽中輸入/輸出通道錯誤等。(2)可屏蔽中斷INTR 當8086CPU的INTR引腳收到一個高電平信號時,會產(chǎn)生一個可屏蔽中斷請求。這種中斷請求受CPU的中斷允許位IF的控制,當IF=1時,CPU可以響應(yīng)中斷請求,當IF=0時則禁止CPU響應(yīng)中斷。絕大部分外部設(shè)備提出的中斷請求都是可屏蔽中斷。8.28086CPU的中斷系統(tǒng)2.內(nèi)部中斷 內(nèi)部中斷也稱為軟件中斷,是由CPU運行程序錯誤或執(zhí)行內(nèi)部程序調(diào)用所引起的一種中斷。內(nèi)部中斷也是不可屏蔽的,它們的中斷類型號是固定的。在8086系統(tǒng)中,內(nèi)部中斷主要包括以下幾種:(1)除法錯中斷 當CPU在執(zhí)行除法運算時,如果除數(shù)為零或者商超出了寄存器所能表示的范圍,則會產(chǎn)生一個類型號為0的內(nèi)部中斷。(2)單步中斷 如果CPU的標志寄存器Flags中的單步標志TF位為1,則在每條指令執(zhí)行后就引起一次中斷,使程序單步執(zhí)行。單步中斷為用戶調(diào)試程序提供了強有力的手段,其中斷類型號為1。8.28086CPU的中斷系統(tǒng)(3)溢出中斷 當標志寄存器Flags中的溢出標志位OF=1,且執(zhí)行INTO指令時,則會產(chǎn)生一個中斷類型號為4的溢出中斷。該中斷的產(chǎn)生需要滿足兩個條件,即OF位為1,且執(zhí)行INTO指令,兩者缺一不可。溢出中斷通常在用戶需要對某些運算操作進行溢出監(jiān)控時使用。(4)斷點中斷

8086指令系統(tǒng)中有一條專用于設(shè)置斷點的指令I(lǐng)NT3H,INT3H指令是單字節(jié)指令,專門用于在程序中設(shè)置斷點來調(diào)試程序,即斷點中斷。(5)中斷指令I(lǐng)NTn INTn是用戶自定義的軟中斷指令,CPU執(zhí)行INTn指令也會引起內(nèi)部中斷。其中n為中斷類型號(范圍為0~255)。8.28086CPU的中斷系統(tǒng)二、8086CPU響應(yīng)中斷的過程 圖8.8所示為8086中斷響應(yīng)的流程8.28086CPU的中斷系統(tǒng) 8086CPU系統(tǒng)對256種中斷規(guī)定了固定的優(yōu)先級。內(nèi)部中斷(單步中斷除外)的優(yōu)先級高于外部中斷,外部中斷中不可屏蔽中斷的優(yōu)先級高于可屏蔽中斷,單步中斷的優(yōu)先級最低。同時由圖8.8也可以看出,在CPU中斷響應(yīng)過程中,其仍然能對不可屏蔽中斷NMI和單步中斷予以響應(yīng)。8.28086CPU的中斷系統(tǒng)表8-18086CPU的中斷優(yōu)先級順序中斷優(yōu)先級除法出錯、INTO、INTnNMIINTR單步最高

最低三、中斷向量及中斷向量表 不同的中斷源對應(yīng)不同的中斷服務(wù)程序,每個中斷服務(wù)程序都有一個惟一的程序入口地址,供CPU響應(yīng)中斷后轉(zhuǎn)去執(zhí)行,這個惟一的程序入口地址稱為中斷向量。每個中斷向量都由段地址CS和偏移地址IP共4個字節(jié)組成。 8086系統(tǒng)把這256個中斷向量集中起來,按對應(yīng)的中斷類型號從小到大的順序依次存放到了內(nèi)存的最低端,這個存放中斷向量的存儲區(qū)稱為中斷向量表。8.28086CPU的中斷系統(tǒng)根據(jù)中斷向量表的格式,只要知道中斷類型號n就可以找到對應(yīng)的中斷向量在中斷向量表中的位置,它們之間有如下關(guān)系: 中斷向量地址=中斷類型號n×4例如中斷類型號40H的中斷服務(wù)程序,其中斷向量為1234H:5678H,則該中斷向量地址為40H×4=100H,即在00100H開始的連續(xù)4個單元依次存放78H、56H、34H、12H。8.28086CPU的中斷系統(tǒng)8.3可編程中斷控制器8259A一、8259A的內(nèi)部結(jié)構(gòu)和引腳1.8259A的內(nèi)部結(jié)構(gòu) 8259A芯片采用NMOS工藝制造,使用單一+5V電源供電。由數(shù)據(jù)總線緩沖器、讀/寫控制邏輯、級聯(lián)緩沖/比較器、中斷請求寄存器IRR、中斷屏蔽寄存器IMR、中斷服務(wù)寄存器ISR、優(yōu)先權(quán)分析器PR及控制邏輯8大部分組成。8.3可編程中斷控制器8259A8.3可編程中斷控制器8259A(1)數(shù)據(jù)總線緩沖器 數(shù)據(jù)總線緩沖器是8位雙向三態(tài)緩沖器,是8259A與系統(tǒng)數(shù)據(jù)總線的接口。通常連接低8位數(shù)據(jù)總線D7~D0。CPU對8259A編程要寫入的控制字都是通過它寫入8259A的、8259A的狀態(tài)信息也是通過它讀入給CPU的;在中斷響應(yīng)周期,8259A送至數(shù)據(jù)總線的中斷類型號也是通過它傳送的。(2)讀/寫控制邏輯 讀/寫控制邏輯接收來自CPU的讀/寫命令,配合端的片選信號和A0端的地址輸入信號完成規(guī)定的操作。它把CPU送來的命令字傳送到8259A中相應(yīng)的命令寄存器中,再把8259A中控制寄存器的內(nèi)容輸出到數(shù)據(jù)總線上。8.3可編程中斷控制器8259A(3)級聯(lián)緩沖/比較器

8259A既可以工作于單片方式,也可以工作于多片級聯(lián)方式,級聯(lián)緩沖/比較器主要用于多片8259A的級聯(lián)和數(shù)據(jù)緩沖方式。當需要管理的外部中斷源超過8個時,就要通過多片8259A的級聯(lián)實現(xiàn)。此時,級聯(lián)緩沖/比較器主要用來存放和比較系統(tǒng)中各相互級聯(lián)的從片8259A的3位識別碼。(4)中斷請求寄存器IRR

中斷請求寄存器IRR是一個具有鎖存功能的8位寄存器,存放外部輸入的中斷請求信號IR7~IR0。當某個IR端有中斷請求時,IRR寄存器中的相應(yīng)位置1。8259A可以允許8個中斷請求信號同時進入,此時IRR寄存器被置成全1,當中斷請求被響應(yīng)時,IRR的相應(yīng)位復位。外設(shè)產(chǎn)生中斷請求有兩種:一種是電平觸發(fā)方式,一種是邊沿觸發(fā)方式,采用何種觸發(fā)方式可通過編程決定。8.3可編程中斷控制器8259A(5)中斷屏蔽寄存器IMR

中斷屏蔽寄存器IMR是一個8位寄存器,與8259A的IR7~IR0相對應(yīng),用來存放對各級中斷請求的屏蔽信息。當IMR寄存器中某一位為0時,允許IRR寄存器中相應(yīng)位的中斷請求進入中斷優(yōu)先權(quán)分析器,即開放該級中斷;若為1,則此位對應(yīng)的中斷請求被屏蔽。通過屏蔽命令可編程設(shè)置IMR的內(nèi)容。(6)中斷服務(wù)寄存器ISR中斷服務(wù)寄存器ISR也是一個8位寄存器,保存正在處理中的中斷請求信號,某個IR端的中斷請求被CPU響應(yīng)后,當CPU發(fā)出第一個信號時,ISR寄存器中的相應(yīng)位置1,一直保存到該級中斷處理結(jié)束為止。一般情況下,ISR中只有一位為1,只有在允許中斷嵌套時,ISR中才有可能多位同時被置成1,其中優(yōu)先級最高的位是正在服務(wù)的中斷源的對應(yīng)位。8.3可編程中斷控制器8259A(7)優(yōu)先權(quán)分析器PR優(yōu)先權(quán)分析器PR用來對IRR寄存器中的各中斷請求信號進行優(yōu)先級判別,將其中級別最高的中斷請求送往CPU。若有中斷嵌套,PR則會將后來的中斷請求與ISR中正在被服務(wù)的中斷請求的優(yōu)先級相比較,如果IRR中記錄的中斷請求的優(yōu)先級高于ISR中記錄的中斷請求的優(yōu)先級,則PR會向CPU發(fā)出中斷請求信號INT,中止當前的中斷服務(wù),進行中斷嵌套。(8)控制邏輯 控制邏輯是8259A的內(nèi)部控制器,其根據(jù)中斷請求寄存器IRR的置位情況和中斷屏蔽寄存器IMR的設(shè)置情況,通過優(yōu)先級分析器PR判定優(yōu)先級,向8259A內(nèi)部及其它部件發(fā)出控制信號,并向CPU發(fā)出INT信號和接收CPU的響應(yīng)信號,使ISR寄存器相應(yīng)位置1,同時清除IRR寄存器中的相應(yīng)位。當CPU第二個到來時,控制8259A送出中斷類型號,使CPU轉(zhuǎn)入中斷服務(wù)程序。8.3可編程中斷控制器8259A2.8259A的引腳信號8259A是28腳雙列直插式芯片。D7~D0:雙向、三態(tài)數(shù)據(jù)信號。在較小系統(tǒng)中可直接與系統(tǒng)數(shù)據(jù)總線相連,在較大系統(tǒng)中須經(jīng)總線驅(qū)動器與系統(tǒng)總線相連,實現(xiàn)和CPU的數(shù)據(jù)交換。IR0~IR7:8條外設(shè)中斷請求輸入信號,由外設(shè)傳給8259A。通常IR0的優(yōu)先級最高,IR7的優(yōu)先級最低。在采用主從式級聯(lián)中斷系統(tǒng)中,主片的IR0~IR7分別和各從片的INT端相連,接收來自各從片的中斷請求INT,由從片的中斷請求輸入端IR0~IR7和主片未連接從片的中斷請求輸入端接受中斷源的中斷請求。8.3可編程中斷控制器8259AINT:中斷請求信號,輸出。與CPU的中斷輸入端INTR端相連(主片),用于向CPU發(fā)中斷請求信號,若是從片則連接到主片的相應(yīng)IRi端,由從片8259A傳給主片8259A。

:中斷響應(yīng)信號,輸入。用來接收CPU送來的中斷響應(yīng)信號。

:讀命令信號,輸入。當其有效時,通知8259A將中斷類型號或某個內(nèi)部寄存器的內(nèi)容送給CPU。

:寫命令信號,輸入。當其有效時,通知8259A從數(shù)據(jù)總線上接收來自CPU發(fā)來的命令。

:片選信號,輸入。當其有效時,8259A被選中。A0:端口選擇信號,輸入。用于選擇8259A內(nèi)部的不同寄存器,通常直接接到地址總線的A0。8259A內(nèi)部的寄存器被安排在兩個端口中,端口地址一個為偶地址(低端),一個為奇地址(高端),由A0端輸入電平?jīng)Q定訪問哪一個端口。8.3可編程中斷控制器8259ACAS2~CAS0:級聯(lián)信號,為主片與從片的連接線。作為主片,這3個信號是輸出信號,根據(jù)它們的不同組合000~111,分別確定連在哪個IRi上的從片工作。對于從片,這3個信號是輸入信號,以此判別本從片是否被選中。

:主從片/緩沖允許。該引腳在不同的方式下有不同的作用,若8259A采用緩沖方式則為輸出端,輸出控制信號,以此來控制三態(tài)總線驅(qū)動器的開關(guān);若采用非緩沖方式時則為輸入端,為1表示芯片是主片,否則為從片。8.3可編程中斷控制器8259A二、8259A的工作方式1.中斷觸發(fā)方式 中斷觸發(fā)方式?jīng)Q定了外設(shè)以何種信號通知8259A有中斷請求,具體又分為邊沿觸發(fā)和電平觸發(fā)兩種。(1)邊沿觸發(fā)方式 在邊沿觸發(fā)方式中,8259A將IRi輸入端出現(xiàn)的信號上升沿(正跳變)作為中斷請求信號觸發(fā)中斷申請,這種觸發(fā)方式的優(yōu)點是IRi端只在上升沿申請一次中斷,故該端可以一直保持高電平而不會誤判為多次中斷申請。(2)電平觸發(fā)方式 在電平觸發(fā)方式中,8259A是將IRi輸入端出現(xiàn)高電平作為中斷請求信號觸發(fā)中斷申請。需要注意的是,在這種觸發(fā)方式下,當該中斷請求得到響應(yīng)后,IRi輸入端必須及時撤除高電平,否則會引起不應(yīng)有的第二次中斷申請。8.3可編程中斷控制器8259A2.中斷優(yōu)先級設(shè)置方式(1)完全嵌套方式 完全嵌套方式是8259A在初始化時自動進入的一種最基本的優(yōu)先級管理方式。在這種方式下,只要不重新設(shè)置優(yōu)先級別,IR0~IR7就具有固定不變的優(yōu)先級,默認IR0優(yōu)先級最高,IR1次之,IR7優(yōu)先級最低。同時,高優(yōu)先級的中斷能夠中斷低優(yōu)先級的中斷服務(wù),實現(xiàn)中斷嵌套。(2)自動循環(huán)方式 自動循環(huán)優(yōu)先級方式可以改變IR7~IR0優(yōu)先級。其變化規(guī)律是:初始時依然是IR0具有最高優(yōu)先級,IR7的優(yōu)先級最低,但當某個中斷請求被響應(yīng)之后,它的優(yōu)先級就變?yōu)樽畹?,而它的下一級中斷變?yōu)樽罡邇?yōu)先級,亦即優(yōu)先級是輪流的。例如當IR4的中斷請求結(jié)束后,IR4的優(yōu)先級變?yōu)樽畹?,而相鄰的IR5變?yōu)樽罡邇?yōu)先級,IR6次之,依次類推。8.3可編程中斷控制器8259A(3)特殊完全嵌套方式 在中斷嵌套時,除了高優(yōu)先級中斷可以中斷低優(yōu)先級的中斷服務(wù)外,對同一級別的中斷請求也能夠予以響應(yīng),從而實現(xiàn)同級中斷的特殊嵌套。例如對圖8.13所示的系統(tǒng),主片工作在特殊完全嵌套方式,從片工作在完全嵌套方式。當從片A的IR3引腳有中斷請求時,會將中斷請求送到主片的IR6引腳,該中斷被響應(yīng)后,主片將對應(yīng)的ISR6置位。如果此時從片A的IR2又出現(xiàn)中斷請求,則由于IR2的優(yōu)先級高于IR3,該中斷請求又會被送到主片的IR6引腳。對于主片來說,這個中斷請求依然是IR6的中斷,若主片工作在完全嵌套方式,則不會予以響應(yīng),從而造成錯誤。但主片工作在特殊完全嵌套方式時,就可以響應(yīng)同一級別的中斷請求,進行正常工作。(4)特殊循環(huán)方式 特殊循環(huán)方式可通過編程指定初始最低優(yōu)先級中斷源,初始優(yōu)先級順序按循環(huán)方式重新排列。8.3可編程中斷控制器8259A8.3可編程中斷控制器8259A3.中斷屏蔽方式 中斷屏蔽方式是對8259A外部中斷源IR7~IR0實現(xiàn)屏蔽的一種中斷管理方式,有普通屏蔽方式和特殊屏蔽方式兩種。(1)普通屏蔽方式8259A內(nèi)部的中斷屏蔽寄存器IMR,其每一位對應(yīng)一個中斷請求輸入端IRi。將IMR的某位置1,則它對應(yīng)的IR就被屏蔽,從而使這個中斷請求不能從8259A送到CPU;如果該位置0,則允許該IR中斷傳送給CPU。通過編程可設(shè)置IMR中的某位為1或為0。8.3可編程中斷控制器8259A(2)特殊屏蔽方式 在某些特殊情況下,可能需要開放比本身優(yōu)先級別低的中斷請求,此時就可以使用特殊屏蔽方式來達到這一目的。在特殊屏蔽方式下,對IMR的某位置1時,同時也使ISR中的對應(yīng)位清0。這樣,雖然系統(tǒng)當前仍然在處理一個較高級別的中斷,但由于8259A的屏蔽寄存器IMR對應(yīng)于此中斷的位已經(jīng)被置1,且ISR中對應(yīng)位被清0,因此外界看來好像CPU現(xiàn)在沒有處理任何中斷,從而實現(xiàn)了對低優(yōu)先級中斷請求的響應(yīng)。這是一種非正常的中斷優(yōu)先級排隊關(guān)系,所以稱為“特殊屏蔽方式”,這種方式在正常的應(yīng)用系統(tǒng)中很少使用。8.3可編程中斷控制器8259A4.中斷結(jié)束方式 中斷結(jié)束方式實際上就是對ISR中對應(yīng)位的處理。當中斷結(jié)束時,必須使ISR寄存器中對應(yīng)位清0,以表示該中斷源的中斷服務(wù)已結(jié)束,否則,就意味著中斷服務(wù)還在繼續(xù),致使比它優(yōu)先級低的中斷請求無法得到響應(yīng)。8259A提供了以下3種中斷結(jié)束方式:(1)自動結(jié)束方式(AEOI) 自動結(jié)束方式是利用中斷響應(yīng)信號的第二個負脈沖的后沿,將ISR中的中斷服務(wù)標志位清除。這種中斷服務(wù)結(jié)束方式是由硬件自動完成的。由于ISR中為“1”位的清除是在中斷響應(yīng)過程中完成的,并非中斷服務(wù)程序的真正結(jié)束,若在中斷服務(wù)程序的執(zhí)行過程中有另外一個比當前中斷優(yōu)先級低的請求信號到來,則會使低優(yōu)先級中斷請求進入,打亂了正在服務(wù)的程序。AEOI是最簡單的中斷結(jié)束方式,通常只適用于只有一片8259A且不會出現(xiàn)中斷嵌套的情況。8.3可編程中斷控制器8259A(2)普通結(jié)束方式(EOI) 普通結(jié)束方式配合完全嵌套優(yōu)先級工作方式使用。這種方式需要用戶在中斷服務(wù)程序結(jié)束之前,向8259A發(fā)送EOI命令來清除ISR中當前優(yōu)先級別最高位。因為在完全嵌套方式下,中斷優(yōu)先級是固定的,8259A總是響應(yīng)優(yōu)先級最高的中斷,保存在ISR中的最高優(yōu)先級的對應(yīng)位,一定對應(yīng)于正在執(zhí)行的服務(wù)程序,把其清零相當于結(jié)束了當前正在處理的中斷。(3)特殊EOI方式 當系統(tǒng)工作于特殊完全嵌套方式下時,由于低優(yōu)先級的中斷可以中斷高優(yōu)先級的中斷服務(wù),所以此時ISR中的最高優(yōu)先級的非零位不一定對應(yīng)著最后一次處理的中斷(即當前正在處理的中斷)。如果采用一般EOI方式來結(jié)束中斷的話就可能產(chǎn)生錯誤,因此需要使用特殊EOI方式結(jié)束中斷。特殊EOI方式反映在程序中就是要發(fā)出一條特殊中斷結(jié)束命令,這個命令中指出了要清除ISR中的哪一位。8.3可編程中斷控制器8259A5.連接系統(tǒng)總線的方式8259A與系統(tǒng)總線的連接有緩沖和非緩沖兩種方式。(1)非緩沖方式 非緩沖方式主要適用于中小型系統(tǒng)中只有一片或不多的幾片8259A情況。在這種方式下,各片8259A直接和數(shù)據(jù)總線相連,而無需通過總線驅(qū)動器;8259A的SP/EN端作為輸入端。當系統(tǒng)中只有一片8259A時,SP/EN端必須接+5V;當系統(tǒng)中有多片8259A時,主片的SP/EN端接+5V,從片的接地。(2)緩沖方式 緩沖方式多用在有多片8259A的大系統(tǒng)中。在這種方式中,8259A需要通過總線驅(qū)動器和數(shù)據(jù)總線相連。此時,將8259A的SP/EN端和總線驅(qū)動器的允許端相連,因為8259A工作在緩沖方式時,會在輸出狀態(tài)字或中斷類型碼的同時,從SP/EN端輸出一個低電平,此低電平正好可以作為總線驅(qū)動器的啟動信號。8.3可編程中斷控制器8259A三、8259A的級聯(lián) 當系統(tǒng)中的外部中斷源數(shù)量大于8個時,就無法用一片8259A來進行管理,可采用多片8259A的級聯(lián)來管理這些中斷源,最多可以使用9個8259A芯片管理64個外部中斷源。8.3可編程中斷控制器8259A四、8259A的命令字 8259A的命令字分為初始化命令字ICW(InitializationCommandWord)和操作命令字OCW(OperationCommandWord)兩種,因此編程也分為兩步:初始化編程和操作編程。1.初始化命令字及其編程 初始化編程是在系統(tǒng)加電或復位后,用初始化命令字對8259A進行初始化,以規(guī)定8259A的基本工作方式。初始化編程具體完成如下功能:設(shè)定中斷請求信號的觸發(fā)方式,是電平觸發(fā)還是邊沿觸發(fā)設(shè)定8259A是單片還是多片級聯(lián)的工作方式設(shè)定8259A中斷類型號基址,即IR0對應(yīng)的中斷類型號設(shè)定優(yōu)先級設(shè)置方式;設(shè)定中斷結(jié)束方式。8.3可編程中斷控制器8259A8259A共有4個初始化命令字ICW1~ICW4,其初始化流程如圖8.15所示。(1)初始化命令字通常是計算機系統(tǒng)啟動時由初始化程序設(shè)置的,一旦設(shè)定,在工作過程中一般不再改變。(2)在初始化過程中必須嚴格按照規(guī)定的順序依次寫入4個初始化命令字。ICW1寫入偶地址,ICW2~ICW4寫入奇地址。ICW1和ICW2是必須設(shè)置的,而ICW3和ICW4是否需要設(shè)置由ICW1的相應(yīng)位決定,如果需要設(shè)置ICW3,則要分別對主片和從片的ICW3進行設(shè)置,因為其格式是不同的。8.3可編程中斷控制器8259A(1)ICW1ICW1命令字稱為芯片控制初始化命令字,其格式如下:其中:D7~D5:在8086/8088系統(tǒng)中不用,一般設(shè)定為“0”。D4:為特征位,必須為“1”,表明該命令字是ICW1。D3:用于設(shè)置8259A的中斷觸發(fā)方式。D3=1電平觸發(fā),D3=0邊沿觸發(fā)。D2:在8086/8088系統(tǒng)中無效。D1:用于設(shè)置8259A有無級聯(lián)。D1=1單片工作方式,D1=0多片級聯(lián)方式。D0:用于設(shè)定是否需要初始化命令字ICW4。D0=1表示需要ICW4,D0=0表示不需要ICW4。對8086系統(tǒng)而言一般都需要設(shè)置ICW4,D0位須設(shè)為1。CPU向8259A寫入ICW1時,D4位必須為1,且必須寫入偶地址,即A0=0。8.3可編程中斷控制器8259A(2)ICW2 ICW2命令字用于設(shè)置中斷類型號的基值,即8259A的IR0所對應(yīng)的中斷類型號。其格式如下:

在8086系統(tǒng)中,D7~D3表示中斷類型號的高5位,D2~D0固定為0,即ICW2必須是能被8整除的正整數(shù)。在CPU的第二個中斷響應(yīng)周期,8259A通過數(shù)據(jù)總線向CPU送出中斷類型號,該中斷類型號的高5位即為ICW2中的D7~D3,低3位由IR0~IR7中的序號決定,由8259A自動插入。 ICW2必須寫入奇地址,即A0=1。8.3可編程中斷控制器8259A(3)ICW3

ICW3僅在多片8259A級聯(lián)時才需要寫入,而且需要對主片和從片分別寫入。主片8259A的ICW3與從片的ICW3在格式上不同,命令字的格式分別如下:

主片ICW3中的D7~D0分別對應(yīng)其8條中斷請求輸入線IR0~IR7,若某條線上接有從片8259A則其對應(yīng)位為“1”,否則為“0”。從片ICW3中的D7~D3固定為0,D2~D0為從片標志碼,表示該從片與主片的哪個中斷請求輸入線連接。

ICW3只有在ICW1的D1=0時才需要寫入,且必須寫入奇地址,即A0=1。8.3可編程中斷控制器8259A(4)ICW4ICW4用于設(shè)定8259A的工作方式,其格式如下:

其中:D7~D5:未定義,通常設(shè)置為0。D4:SFNM位,D4=1表示8259A工作于特殊完全嵌套方式,D4=0表示工作于完全嵌套方式。D3:BUF位,D3=1表示8259A采用緩沖方式;D3=0為非緩沖方式。D2:M/S位,在非緩沖方式下,該位無意義。在緩沖方式下,D2=1表示該8259A為主控,D2=0表示為從控。D1:AEOI位,用于指明中斷結(jié)束方式。D1=1表示采用自動結(jié)束方式,D1=0表示采用非自動結(jié)束方式,在中斷服務(wù)程序結(jié)束時需要向8259A發(fā)送EOI命令以清除ISR。D0:位,用于表明CPU的模式。D0=0表示8259A工作于8080/8085系統(tǒng);D0=1表示工作于8086/8088系統(tǒng)。ICW4只有在ICW1的D0=1時才需要寫入,且必須寫入奇地址,即A0=1。8.3可編程中斷控制器8259A下面通過一個例子來說明8259A的初始化編程方法。

設(shè)8259A工作于8086系統(tǒng),8259A的I/O端口地址為20H和21H。對8259A的初始化規(guī)定為:邊沿觸發(fā)方式,緩沖器方式,中斷結(jié)束為EOI命令方式,中斷優(yōu)先級管理采用全嵌套方式,8級中斷源的類型碼為08H~0FH,則其初始化程序段如下:

MOVAL,00010011B;設(shè)置ICW1為邊沿觸發(fā),單片8259A,需要

;ICW4OUT20H,ALMOVAL,00001000B;設(shè)置ICW2中斷類型碼基數(shù)為08HOUT21H,AL;則可響應(yīng)的8個中斷類型碼為08H~0FHMOVAL,00001101B;設(shè)置ICW4為全嵌套,緩沖,主片,普通 ;EOI結(jié)束,與8086/8088配合OUT21H,AL8.3可編程中斷控制器8259A2.操作命令字及其編程

在對8259A進行初始化編程后,8259A就可以接受外部中斷請求信號進行工作了。在工作期間,可以通過操作命令字OCW使它按不同的方式工作。8259A有3個操作命令字,它們都有各自的特征位,因此寫入時沒有順序要求,而且可以重復多次寫入,這是與初始化編程所不同的。但需要注意的是OCW1必須寫入奇地址,而OCW2、OCW3必須寫入偶地址。8.3可編程中斷控制器8259A(1)OCW1OCW1是中斷屏蔽命令字。其格式如下:

當Mi=1時表示該位對應(yīng)的IRi的中斷請求被屏蔽,Mi=0時表示相應(yīng)中斷請求被允許。在初始化開始時,默認屏蔽字為全“0”,即所有中斷源都未被屏蔽。OCW1必須寫入奇地址,即A0=1。例如:設(shè)某中斷系統(tǒng)要求屏蔽IR3和IR5,則8259A編程指令為:MOVAL,00101000BOUT21H,AL ;寫入OCW1,即IMR8.3可編程中斷控制器8259A(2)OCW2OCW2主要用于設(shè)置中斷優(yōu)先級循環(huán)方式和中斷結(jié)束方式,其格式如下:其中:D7:R位,為優(yōu)先級方式控制位。當D7=0時,中斷優(yōu)先級固定(即IR0最高,IR7最低);D7=1時,中斷優(yōu)先級自動循環(huán)。D6:SL位,決定D2~D0是否有效的標志。當D6=1時低3位L2~L0有效;D6=0時L2~L0無效。D5:EOI位,為中斷結(jié)束命令位。當D5=1時,在中斷服務(wù)程序結(jié)束時向8259A回送中斷結(jié)束命令EOI,以便使中斷服務(wù)寄存器ISR中當前最高優(yōu)先級位復位,或由L2~L0表示的優(yōu)先級位復位;當D5=0時,該位不起作用。D4~D3:OCW1的特征位,D4D3=00。D2~D0:指定L2~L0。8.3可編程中斷控制器8259A表8-2OCW2規(guī)定的工作方式D7(R)D6(SL)D5(EOI)工作方式L2L1L0值有無意義說明100中斷優(yōu)先級自動循環(huán)方式無只規(guī)定了中斷優(yōu)先級方式000設(shè)定固定優(yōu)先級110特殊優(yōu)先級循環(huán)方式有010無意義101中斷優(yōu)先級自動循環(huán)方式及中斷一般結(jié)束方式無規(guī)定了中斷優(yōu)先級循環(huán)方式,并執(zhí)行中斷返回前的中斷一般結(jié)束命令,使對應(yīng)ISR位清零111中斷優(yōu)先級特殊循環(huán)方式和特殊中斷結(jié)束方式有011中斷特殊結(jié)束方式有中斷返回前執(zhí)行中斷特殊結(jié)束命令,使相應(yīng)的ISR位清零001中斷一般結(jié)束方式無意義中斷返回前執(zhí)行中斷一般結(jié)束命令,使相應(yīng)的ISR位清零8.3可編程中斷控制器8259A(3)OCW3OCW3命令字主要用于管理特殊屏蔽方式和查詢方式,并控制8259A的中斷請求寄存器IRR和中斷服務(wù)寄存器ISR的讀取。其格式如下:

其中:D6:特殊屏蔽方式允許位。當D6=1則SMM位有效,否則SMM位無效。D5:SMM位,與ESMM組合用來設(shè)置或取消特殊屏蔽方式。當ESMM=1,SMM=1時,設(shè)置特殊屏蔽;當ESMM=1,SMM=0時,取消特殊屏蔽。D4~D3:OCW3的特征位,D4D3=01。D2:P位,為中斷狀態(tài)查詢位。當P=1時,可通過讀入狀態(tài)寄存器的內(nèi)容,D1:RR位,用于控制對寄存器的讀取。當D1=1時,允許讀取D0所指定的寄存器,D1=0時不允許讀取。D0:RIS位,用于確定讀取ISR還是IRR寄存器。在D1=1時,若D0=1時,則讀取ISR寄存器;若D0=0,則讀取IRR寄存器。OCW3必須寫入偶地址,即A0=0,且特征位D4D3=01,以區(qū)別于OCW2。8.3可編程中斷控制器8259A表8-38259A的讀/寫操作

A0D4D3讀寫操作指令01001×CPU寫入ICW1OUT0101××CPU寫入ICW2、ICW3、ICW4、OCW1010000CPU寫入OCW2010001CPU寫入OCW30010CPU讀取IRR/ISR、查詢字

IN0011CPU讀取IMR1×××高阻×11×高阻8.48259A在微機中的編程應(yīng)用【例8-1】8259A在IBMPC/AT系統(tǒng)中的應(yīng)用。 IBMPC/AT系統(tǒng)共有兩片8259A芯片,可接收最多15級中斷。從片的INT引腳直接連到主片的IR2引腳。端口地址主片仍然為20H和21H,從片為0A0H和0A1H。主、從片均為邊沿觸發(fā),均采用完全嵌套方式,優(yōu)先級依次為0級,1級,8~15級,3~7級。系統(tǒng)采用非緩沖方式,主片的中斷類型號為08H~0FH,從片的中斷類型號為70H~77H。8259A在IBMPC/AT系統(tǒng)中的硬件連接如圖8.16所示。8.48259A在微機中的編程應(yīng)用8.48259A在微機中的編程應(yīng)用根據(jù)系統(tǒng)要求和硬件連接圖,8259A的主片和從片初始化程序段如下:;初始化主片INTA00 EQU 20HINTA01 EQU 21H…MOVAL,00010001B;設(shè)置ICW1為邊沿觸發(fā),多片8259A,需要ICW4OUTINTA00,AL MOVAL,00001000B ;設(shè)置ICW2中斷類型碼基數(shù)為08HOUTINTA01,AL ;可響應(yīng)的8個中斷類型碼為08H~0FHMOVAL,00000100B ;主片IR2引腳上接從片OUTINTA01,ALMOVAL,00000001B;設(shè)置ICW4為8086/8088模式,普通EOI,非緩沖方 ;式,完全嵌套方式OUTINTA01,AL …8.48259A在微機中的編程應(yīng)用;初始化從片INTB00 EQU 0A0HINTB01 EQU 0A1H…MOVAL,00010001B ;設(shè)置ICW1為邊沿觸發(fā),多片8259A,需要ICW4OUTINTB00,AL MOVAL,01110000B ;設(shè)置ICW2中斷類型碼基數(shù)為70HOUTINTB01,AL ;可響應(yīng)的8個中斷類型碼為70H~77H。MOVAL,00000010B ;從片接主片的IR2引腳OUTINTB01,ALMOVAL,00000001B;設(shè)置ICW4為8086/8088模式,普通EOI,非緩沖方 ;式,完全嵌套方式OUTINTB01,AL …8.580486CPU中斷系統(tǒng)一、80486中斷系統(tǒng)結(jié)構(gòu)及類型 為了支持多任務(wù)和虛擬存儲器等功能,80486引入了“異常”的概念,它把外部中斷稱為“中斷”,把內(nèi)部中斷稱為“異?!?。中斷是由異步的外部事件引起的,外部事件及中斷響應(yīng)與正在執(zhí)行的指令沒有關(guān)系。在80486中,標志寄存器EFLAGS中的IF標志決定是否屏蔽外部中斷中的可屏蔽中斷請求。異常是80486在執(zhí)行指令期間檢測到不正常的或非法的條件所引起的。異常與正在執(zhí)行的指令有直接的聯(lián)系。當發(fā)生這些情況時,指令就不能成功執(zhí)行。8.580486CPU中斷系統(tǒng)中斷類型號異常名稱異常類別產(chǎn)生異常的原因0除法錯故障DIV、IDIV指令1單步調(diào)試異常陷井或故障任何指令2不可屏蔽中斷NMI3斷點中斷陷井INT3指令4溢出中斷陷井INTO5越界故障BOUND指令6非法操作碼故障非法指令7協(xié)處理器不可用故障浮點指令或WAIT8雙重故障異常中止任何指令9協(xié)處理器越段異常中止引用存儲器的浮點指令10無效的TSS故障JMP、CALL、RET指令11段不存在故障裝載一個段寄存器的任何指令12堆棧段故障故障任何加載SS的指令或引用由SS尋址的單元13通用保護故障故障任何特權(quán)指令或引用存儲器的指令14頁故障故障任何引用存儲器的指令15Intel保留16浮點錯故障浮點指令或WAIT17對準檢測故障18-31系統(tǒng)開發(fā)軟件使用32-255用戶可使用中斷可屏蔽中斷INTR8.580486CPU中斷系統(tǒng)

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論