版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第8章中斷技術(shù)8.1中斷基礎(chǔ)8.28086CPU的中斷系統(tǒng)8.3可編程中斷控制器8259A8.48259A在微機(jī)中的編程應(yīng)用8.580486CPU中斷系統(tǒng)8.1中斷基礎(chǔ)一、中斷的基本概念中斷:是指CPU在正常運(yùn)行時(shí),由于內(nèi)、外部事件或由程序預(yù)先安排引起的,CPU暫停正在運(yùn)行的程序而轉(zhuǎn)去執(zhí)行內(nèi)、外部事件或預(yù)先安排的事件服務(wù)程序,待處理完畢后又回到原來被中止的程序處繼續(xù)執(zhí)行的過程中斷源:產(chǎn)生中斷請(qǐng)求的外設(shè)或引發(fā)內(nèi)部中斷的原因和事件。中斷源通常有三類: 一是外設(shè)請(qǐng)求,如實(shí)時(shí)時(shí)鐘請(qǐng)求、I/O接口電路請(qǐng)求等; 二是由硬件故障引起,如電源掉電、硬件損壞等; 三是由軟件引起,如程序錯(cuò)、設(shè)置斷點(diǎn)等。中斷請(qǐng)求:中斷源為獲得CPU處理而向CPU發(fā)出的請(qǐng)求信號(hào)。中斷響應(yīng):CPU接到中斷源產(chǎn)生的中斷請(qǐng)求信號(hào)后,若決定響應(yīng)此中斷請(qǐng)求,則向外設(shè)發(fā)出中斷響應(yīng)信號(hào)的過程。斷點(diǎn):CPU處理中斷時(shí),原程序的暫時(shí)中止處(即中斷返回后繼續(xù)執(zhí)行的指令地址)。8.1中斷基礎(chǔ)中斷服務(wù)程序:中斷源產(chǎn)生中斷后請(qǐng)求CPU執(zhí)行的處理程序。中斷處理:CPU執(zhí)行中斷服務(wù)程序的過程。中斷返回:當(dāng)中斷服務(wù)程序運(yùn)行結(jié)束后,返回原程序斷點(diǎn)處繼續(xù)執(zhí)行,稱為中斷返回。中斷屏蔽:禁止中斷響應(yīng)稱為中斷屏蔽。微機(jī)響應(yīng)中斷的過程與執(zhí)行轉(zhuǎn)子指令CALL的過程非常類似。但中斷是隨機(jī)發(fā)生的。引起中斷的程序轉(zhuǎn)移示意圖如圖8.1所示。8.1中斷基礎(chǔ)二、中斷優(yōu)先級(jí)與中斷嵌套 在微機(jī)系統(tǒng)中,通常都會(huì)有多個(gè)外部設(shè)備以中斷方式與CPU進(jìn)行通訊,即存在多個(gè)中斷源。因而往往出現(xiàn)以下情況:(1)多個(gè)中斷源在同一時(shí)間向CPU發(fā)出中斷請(qǐng)求信號(hào);(2)當(dāng)CPU正在響應(yīng)某一中斷源的請(qǐng)求,執(zhí)行相應(yīng)中斷服務(wù)程序時(shí),又有別的中斷源產(chǎn)生新的中斷請(qǐng)求。 由于CPU在某一時(shí)刻只能響應(yīng)一個(gè)中斷請(qǐng)求,對(duì)于上述兩種情況,就需要CPU依據(jù)各中斷源所請(qǐng)求任務(wù)的輕重緩急,安排好中斷處理的次序。通過為每個(gè)中斷源指定CPU響應(yīng)的優(yōu)先級(jí)別(簡稱優(yōu)先級(jí),也稱優(yōu)先權(quán))確定CPU響應(yīng)哪個(gè)中斷源的中斷請(qǐng)求,通常CPU先響應(yīng)優(yōu)先級(jí)高的中斷請(qǐng)求。 對(duì)于第一種情況,CPU選擇多個(gè)中斷源中優(yōu)先級(jí)最高的中斷請(qǐng)求予以響應(yīng)。 對(duì)于第二種情況,當(dāng)CPU正在處理中斷時(shí),也能響應(yīng)優(yōu)先級(jí)更高的中斷請(qǐng)求,但屏蔽同級(jí)或低級(jí)的中斷請(qǐng)求,這就是所謂多重中斷或中斷嵌套。8.1中斷基礎(chǔ)解決中斷的優(yōu)先級(jí)的方法:1.軟件查詢方式 軟件查詢方式是最簡單的一種確定中斷優(yōu)先級(jí)的方法,如圖8.2所示顯示了其接口電路的形式。從圖8.2可知,一方面各中斷源的中斷請(qǐng)求信號(hào)都被鎖存于鎖存器(中斷狀態(tài)端口)中,另一方面,所有的中斷請(qǐng)求信號(hào)相“或”后作為INTR信號(hào),向CPU提出中斷請(qǐng)求。因此,當(dāng)任何一個(gè)中斷源有中斷請(qǐng)求時(shí),其在鎖存器中的相應(yīng)位置1,同時(shí)向CPU送出INTR信號(hào)。CPU響應(yīng)中斷后,通過一段公共查詢程序來確定相應(yīng)的中斷源,并轉(zhuǎn)入相應(yīng)的中斷服務(wù)程序。在查詢程序中查詢狀態(tài)端口的順序就決定了中斷源的優(yōu)先級(jí)高低,先查詢的中斷源優(yōu)先級(jí)高,后查詢的中斷源優(yōu)先級(jí)就低。軟件查詢方式的優(yōu)點(diǎn)是硬件簡單,不需要硬件排隊(duì)電路,可通過修改軟件的查詢順序來改變中斷源的優(yōu)先級(jí)。但軟件查詢方式由于需要對(duì)中斷源逐一查詢,當(dāng)中斷源較多時(shí)耗時(shí)較長,影響中斷響應(yīng)的實(shí)時(shí)性。8.1中斷基礎(chǔ)8.1中斷基礎(chǔ)2.硬件排隊(duì)方式 硬件排隊(duì)方式是指利用專門的硬件電路實(shí)現(xiàn)中斷源優(yōu)先級(jí)的排隊(duì)。常用的有鏈?zhǔn)絻?yōu)先級(jí)排隊(duì)和向量優(yōu)先級(jí)排隊(duì)兩種電路。(1)鏈?zhǔn)絻?yōu)先級(jí)排隊(duì) 該方法是在每個(gè)中斷源接口電路中設(shè)置一個(gè)稱為菊花鏈的邏輯電路,利用中斷源在系統(tǒng)中的物理位置確定其中斷優(yōu)先級(jí)。(2)向量優(yōu)先級(jí)排隊(duì) 在鏈?zhǔn)絻?yōu)先級(jí)排隊(duì)電路中,外設(shè)的中斷優(yōu)先級(jí)由其接口電路在菊花鏈中的位置決定,調(diào)整優(yōu)先級(jí)就涉及硬件改動(dòng),使用不方便。目前微機(jī)系統(tǒng)中多用專門的優(yōu)先級(jí)中斷控制器構(gòu)成向量優(yōu)先級(jí)中斷系統(tǒng)來管理中斷優(yōu)先級(jí)。用戶可以通過編程實(shí)現(xiàn)中斷源優(yōu)先級(jí)的靈活調(diào)整而無需改動(dòng)硬件接口電路。8.1中斷基礎(chǔ)8.1中斷基礎(chǔ)三、中斷過程 一個(gè)完整的中斷處理過程一般都會(huì)包括中斷請(qǐng)求、中斷響應(yīng)、中斷處理和中斷返回幾個(gè)階段。1.中斷請(qǐng)求 中斷源能否向CPU提出中斷請(qǐng)求取決于兩個(gè)條件:(1)中斷源(如外設(shè))需要CPU為其服務(wù),且其本身已經(jīng)準(zhǔn)備就緒;(2)系統(tǒng)允許該中斷源提出申請(qǐng)。在多中斷源的情況下,為增加控制的靈活性,常常在外設(shè)接口電路中設(shè)置一個(gè)中斷屏蔽寄存器,只有在該中斷源的中斷請(qǐng)求未被屏蔽時(shí),其中斷請(qǐng)求才能送到CPU。因此,只有滿足這兩個(gè)條件,中斷源才會(huì)通過發(fā)送中斷請(qǐng)求信號(hào)向CPU提出中斷請(qǐng)求。8.1中斷基礎(chǔ)2.中斷響應(yīng)
CPU通常會(huì)在每條指令執(zhí)行結(jié)束后檢測(cè)有無中斷請(qǐng)求信號(hào)發(fā)生,當(dāng)檢測(cè)到有中斷請(qǐng)求發(fā)生時(shí),CPU有權(quán)決定是否對(duì)該中斷請(qǐng)求予以響應(yīng)。若CPU允許中斷,則予以響應(yīng),否則CPU不予響應(yīng)。一旦CPU決定響應(yīng)該中斷源的中斷請(qǐng)求,則進(jìn)入中斷響應(yīng)周期。CPU響應(yīng)中斷時(shí)要自動(dòng)完成以下三項(xiàng)任務(wù):(1)關(guān)中斷。因?yàn)镃PU響應(yīng)中斷后,要進(jìn)行必要的中斷處理,在此期間不允許其它中斷源來打擾。(2)斷點(diǎn)保護(hù)。通過內(nèi)部硬件保存斷點(diǎn)及標(biāo)志寄存器內(nèi)容,以便中斷處理完畢后能正確返回被中斷的原程序處繼續(xù)執(zhí)行。(3)獲得中斷服務(wù)程序的入口地址。CPU響應(yīng)中斷后,將以某種方式查找中斷源,獲得中斷服務(wù)程序的入口地址,轉(zhuǎn)向?qū)?yīng)的中斷服務(wù)程序。 前兩步通常是由硬件完成的,而最后一步可由硬件或軟件實(shí)現(xiàn)。8.1中斷基礎(chǔ)3.中斷處理
中斷處理也叫中斷服務(wù),是由中斷服務(wù)程序完成的,不同的中斷服務(wù)程序完成不同的功能,一般在中斷服務(wù)程序中要做以下幾項(xiàng)工作。(1)保護(hù)現(xiàn)場 主程序和中斷服務(wù)程序都要使用CPU內(nèi)部寄存器等資源,為使中斷處理程序不破壞主程序中寄存器的內(nèi)容,應(yīng)先將斷點(diǎn)處各寄存器的內(nèi)容壓入堆棧保護(hù)起來,再進(jìn)入中斷處理。(2)開中斷 在中斷響應(yīng)階段,CPU由硬件控制會(huì)自動(dòng)執(zhí)行關(guān)中斷,以保護(hù)CPU在中斷響應(yīng)時(shí)不會(huì)被再次中斷。但在某些情況下,有比該中斷更緊急的情況要處理時(shí),應(yīng)停止對(duì)該中斷的服務(wù)而轉(zhuǎn)到優(yōu)先級(jí)更高的中斷服務(wù)程序,以實(shí)現(xiàn)中斷嵌套。中斷過程中,可以多次開放和關(guān)閉中斷,但一般只在程序的關(guān)鍵部分才關(guān)閉中斷,其它部分則要開放中斷以允許中斷嵌套。8.1中斷基礎(chǔ)(3)中斷服務(wù)
中斷服務(wù)是執(zhí)行中斷的主體部分,不同的中斷請(qǐng)求,有各自不同的中斷服務(wù)內(nèi)容,需要根據(jù)中斷源所要完成的功能,事先編寫相應(yīng)的中斷服務(wù)程序存入內(nèi)存,等待中斷請(qǐng)求響應(yīng)后調(diào)用執(zhí)行。(4)關(guān)中斷
若在第二步中執(zhí)行了開中斷操作,則需關(guān)中斷以為恢復(fù)現(xiàn)場做準(zhǔn)備。(5)恢復(fù)現(xiàn)場當(dāng)中斷服務(wù)處理完畢后,在返回主程序前需要將前面通過PUSH指令保護(hù)的寄存器內(nèi)容從堆棧中彈出,以便返回到主程序后能繼續(xù)正確運(yùn)行。注意POP指令的順序應(yīng)按先進(jìn)后出的原則與進(jìn)棧指令一一對(duì)應(yīng)。8.1中斷基礎(chǔ)4.中斷返回 在中斷服務(wù)程序的最后要安排一條中斷返回指令I(lǐng)RET。執(zhí)行該指令,使CPU轉(zhuǎn)到被中斷的程序中繼續(xù)執(zhí)行。一、8086中斷類型 8086CPU的中斷系統(tǒng)可以處理256種不同類型的中斷。為了便于識(shí)別,8086系統(tǒng)中給每種中斷都賦予了一個(gè)中斷類型號(hào),編號(hào)為0~255。CPU可根據(jù)中斷類型號(hào)的不同來識(shí)別不同的中斷源。中斷源可以來自CPU內(nèi)部,稱為內(nèi)部中斷;也可以來自CPU外部,稱為外部中斷。如圖8.7所示。8.28086CPU的中斷系統(tǒng)1.外部中斷
外部中斷也被稱為硬件中斷,是由外部設(shè)備通過硬件請(qǐng)求的方式所產(chǎn)生的中斷。外部中斷又可分為不可屏蔽中斷和可屏蔽中斷兩種。(1)不可屏蔽中斷NMI 當(dāng)外設(shè)通過非屏蔽中斷請(qǐng)求信號(hào)NMI向CPU提出中斷請(qǐng)求時(shí),CPU在當(dāng)前指令執(zhí)行結(jié)束后,就立即無條件的予以響應(yīng),這樣的中斷就是不可屏蔽中斷。不可屏蔽中斷在外部中斷源中優(yōu)先級(jí)最高,主要用于緊急情況的故障處理,如電源掉電、存儲(chǔ)器讀/寫錯(cuò)誤、擴(kuò)展槽中輸入/輸出通道錯(cuò)誤等。(2)可屏蔽中斷INTR 當(dāng)8086CPU的INTR引腳收到一個(gè)高電平信號(hào)時(shí),會(huì)產(chǎn)生一個(gè)可屏蔽中斷請(qǐng)求。這種中斷請(qǐng)求受CPU的中斷允許位IF的控制,當(dāng)IF=1時(shí),CPU可以響應(yīng)中斷請(qǐng)求,當(dāng)IF=0時(shí)則禁止CPU響應(yīng)中斷。絕大部分外部設(shè)備提出的中斷請(qǐng)求都是可屏蔽中斷。8.28086CPU的中斷系統(tǒng)2.內(nèi)部中斷 內(nèi)部中斷也稱為軟件中斷,是由CPU運(yùn)行程序錯(cuò)誤或執(zhí)行內(nèi)部程序調(diào)用所引起的一種中斷。內(nèi)部中斷也是不可屏蔽的,它們的中斷類型號(hào)是固定的。在8086系統(tǒng)中,內(nèi)部中斷主要包括以下幾種:(1)除法錯(cuò)中斷 當(dāng)CPU在執(zhí)行除法運(yùn)算時(shí),如果除數(shù)為零或者商超出了寄存器所能表示的范圍,則會(huì)產(chǎn)生一個(gè)類型號(hào)為0的內(nèi)部中斷。(2)單步中斷 如果CPU的標(biāo)志寄存器Flags中的單步標(biāo)志TF位為1,則在每條指令執(zhí)行后就引起一次中斷,使程序單步執(zhí)行。單步中斷為用戶調(diào)試程序提供了強(qiáng)有力的手段,其中斷類型號(hào)為1。8.28086CPU的中斷系統(tǒng)(3)溢出中斷 當(dāng)標(biāo)志寄存器Flags中的溢出標(biāo)志位OF=1,且執(zhí)行INTO指令時(shí),則會(huì)產(chǎn)生一個(gè)中斷類型號(hào)為4的溢出中斷。該中斷的產(chǎn)生需要滿足兩個(gè)條件,即OF位為1,且執(zhí)行INTO指令,兩者缺一不可。溢出中斷通常在用戶需要對(duì)某些運(yùn)算操作進(jìn)行溢出監(jiān)控時(shí)使用。(4)斷點(diǎn)中斷
8086指令系統(tǒng)中有一條專用于設(shè)置斷點(diǎn)的指令I(lǐng)NT3H,INT3H指令是單字節(jié)指令,專門用于在程序中設(shè)置斷點(diǎn)來調(diào)試程序,即斷點(diǎn)中斷。(5)中斷指令I(lǐng)NTn INTn是用戶自定義的軟中斷指令,CPU執(zhí)行INTn指令也會(huì)引起內(nèi)部中斷。其中n為中斷類型號(hào)(范圍為0~255)。8.28086CPU的中斷系統(tǒng)二、8086CPU響應(yīng)中斷的過程 圖8.8所示為8086中斷響應(yīng)的流程8.28086CPU的中斷系統(tǒng) 8086CPU系統(tǒng)對(duì)256種中斷規(guī)定了固定的優(yōu)先級(jí)。內(nèi)部中斷(單步中斷除外)的優(yōu)先級(jí)高于外部中斷,外部中斷中不可屏蔽中斷的優(yōu)先級(jí)高于可屏蔽中斷,單步中斷的優(yōu)先級(jí)最低。同時(shí)由圖8.8也可以看出,在CPU中斷響應(yīng)過程中,其仍然能對(duì)不可屏蔽中斷NMI和單步中斷予以響應(yīng)。8.28086CPU的中斷系統(tǒng)表8-18086CPU的中斷優(yōu)先級(jí)順序中斷優(yōu)先級(jí)除法出錯(cuò)、INTO、INTnNMIINTR單步最高
最低三、中斷向量及中斷向量表 不同的中斷源對(duì)應(yīng)不同的中斷服務(wù)程序,每個(gè)中斷服務(wù)程序都有一個(gè)惟一的程序入口地址,供CPU響應(yīng)中斷后轉(zhuǎn)去執(zhí)行,這個(gè)惟一的程序入口地址稱為中斷向量。每個(gè)中斷向量都由段地址CS和偏移地址IP共4個(gè)字節(jié)組成。 8086系統(tǒng)把這256個(gè)中斷向量集中起來,按對(duì)應(yīng)的中斷類型號(hào)從小到大的順序依次存放到了內(nèi)存的最低端,這個(gè)存放中斷向量的存儲(chǔ)區(qū)稱為中斷向量表。8.28086CPU的中斷系統(tǒng)根據(jù)中斷向量表的格式,只要知道中斷類型號(hào)n就可以找到對(duì)應(yīng)的中斷向量在中斷向量表中的位置,它們之間有如下關(guān)系: 中斷向量地址=中斷類型號(hào)n×4例如中斷類型號(hào)40H的中斷服務(wù)程序,其中斷向量為1234H:5678H,則該中斷向量地址為40H×4=100H,即在00100H開始的連續(xù)4個(gè)單元依次存放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ù)總線緩沖器、讀/寫控制邏輯、級(jí)聯(lián)緩沖/比較器、中斷請(qǐng)求寄存器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對(duì)8259A編程要寫入的控制字都是通過它寫入8259A的、8259A的狀態(tài)信息也是通過它讀入給CPU的;在中斷響應(yīng)周期,8259A送至數(shù)據(jù)總線的中斷類型號(hào)也是通過它傳送的。(2)讀/寫控制邏輯 讀/寫控制邏輯接收來自CPU的讀/寫命令,配合端的片選信號(hào)和A0端的地址輸入信號(hào)完成規(guī)定的操作。它把CPU送來的命令字傳送到8259A中相應(yīng)的命令寄存器中,再把8259A中控制寄存器的內(nèi)容輸出到數(shù)據(jù)總線上。8.3可編程中斷控制器8259A(3)級(jí)聯(lián)緩沖/比較器
8259A既可以工作于單片方式,也可以工作于多片級(jí)聯(lián)方式,級(jí)聯(lián)緩沖/比較器主要用于多片8259A的級(jí)聯(lián)和數(shù)據(jù)緩沖方式。當(dāng)需要管理的外部中斷源超過8個(gè)時(shí),就要通過多片8259A的級(jí)聯(lián)實(shí)現(xiàn)。此時(shí),級(jí)聯(lián)緩沖/比較器主要用來存放和比較系統(tǒng)中各相互級(jí)聯(lián)的從片8259A的3位識(shí)別碼。(4)中斷請(qǐng)求寄存器IRR
中斷請(qǐng)求寄存器IRR是一個(gè)具有鎖存功能的8位寄存器,存放外部輸入的中斷請(qǐng)求信號(hào)IR7~I(xiàn)R0。當(dāng)某個(gè)IR端有中斷請(qǐng)求時(shí),IRR寄存器中的相應(yīng)位置1。8259A可以允許8個(gè)中斷請(qǐng)求信號(hào)同時(shí)進(jìn)入,此時(shí)IRR寄存器被置成全1,當(dāng)中斷請(qǐng)求被響應(yīng)時(shí),IRR的相應(yīng)位復(fù)位。外設(shè)產(chǎn)生中斷請(qǐng)求有兩種:一種是電平觸發(fā)方式,一種是邊沿觸發(fā)方式,采用何種觸發(fā)方式可通過編程決定。8.3可編程中斷控制器8259A(5)中斷屏蔽寄存器IMR
中斷屏蔽寄存器IMR是一個(gè)8位寄存器,與8259A的IR7~I(xiàn)R0相對(duì)應(yīng),用來存放對(duì)各級(jí)中斷請(qǐng)求的屏蔽信息。當(dāng)IMR寄存器中某一位為0時(shí),允許IRR寄存器中相應(yīng)位的中斷請(qǐng)求進(jìn)入中斷優(yōu)先權(quán)分析器,即開放該級(jí)中斷;若為1,則此位對(duì)應(yīng)的中斷請(qǐng)求被屏蔽。通過屏蔽命令可編程設(shè)置IMR的內(nèi)容。(6)中斷服務(wù)寄存器ISR中斷服務(wù)寄存器ISR也是一個(gè)8位寄存器,保存正在處理中的中斷請(qǐng)求信號(hào),某個(gè)IR端的中斷請(qǐng)求被CPU響應(yīng)后,當(dāng)CPU發(fā)出第一個(gè)信號(hào)時(shí),ISR寄存器中的相應(yīng)位置1,一直保存到該級(jí)中斷處理結(jié)束為止。一般情況下,ISR中只有一位為1,只有在允許中斷嵌套時(shí),ISR中才有可能多位同時(shí)被置成1,其中優(yōu)先級(jí)最高的位是正在服務(wù)的中斷源的對(duì)應(yīng)位。8.3可編程中斷控制器8259A(7)優(yōu)先權(quán)分析器PR優(yōu)先權(quán)分析器PR用來對(duì)IRR寄存器中的各中斷請(qǐng)求信號(hào)進(jìn)行優(yōu)先級(jí)判別,將其中級(jí)別最高的中斷請(qǐng)求送往CPU。若有中斷嵌套,PR則會(huì)將后來的中斷請(qǐng)求與ISR中正在被服務(wù)的中斷請(qǐng)求的優(yōu)先級(jí)相比較,如果IRR中記錄的中斷請(qǐng)求的優(yōu)先級(jí)高于ISR中記錄的中斷請(qǐng)求的優(yōu)先級(jí),則PR會(huì)向CPU發(fā)出中斷請(qǐng)求信號(hào)INT,中止當(dāng)前的中斷服務(wù),進(jìn)行中斷嵌套。(8)控制邏輯 控制邏輯是8259A的內(nèi)部控制器,其根據(jù)中斷請(qǐng)求寄存器IRR的置位情況和中斷屏蔽寄存器IMR的設(shè)置情況,通過優(yōu)先級(jí)分析器PR判定優(yōu)先級(jí),向8259A內(nèi)部及其它部件發(fā)出控制信號(hào),并向CPU發(fā)出INT信號(hào)和接收CPU的響應(yīng)信號(hào),使ISR寄存器相應(yīng)位置1,同時(shí)清除IRR寄存器中的相應(yīng)位。當(dāng)CPU第二個(gè)到來時(shí),控制8259A送出中斷類型號(hào),使CPU轉(zhuǎn)入中斷服務(wù)程序。8.3可編程中斷控制器8259A2.8259A的引腳信號(hào)8259A是28腳雙列直插式芯片。D7~D0:雙向、三態(tài)數(shù)據(jù)信號(hào)。在較小系統(tǒng)中可直接與系統(tǒng)數(shù)據(jù)總線相連,在較大系統(tǒng)中須經(jīng)總線驅(qū)動(dòng)器與系統(tǒng)總線相連,實(shí)現(xiàn)和CPU的數(shù)據(jù)交換。IR0~I(xiàn)R7:8條外設(shè)中斷請(qǐng)求輸入信號(hào),由外設(shè)傳給8259A。通常IR0的優(yōu)先級(jí)最高,IR7的優(yōu)先級(jí)最低。在采用主從式級(jí)聯(lián)中斷系統(tǒng)中,主片的IR0~I(xiàn)R7分別和各從片的INT端相連,接收來自各從片的中斷請(qǐng)求INT,由從片的中斷請(qǐng)求輸入端IR0~I(xiàn)R7和主片未連接從片的中斷請(qǐng)求輸入端接受中斷源的中斷請(qǐng)求。8.3可編程中斷控制器8259AINT:中斷請(qǐng)求信號(hào),輸出。與CPU的中斷輸入端INTR端相連(主片),用于向CPU發(fā)中斷請(qǐng)求信號(hào),若是從片則連接到主片的相應(yīng)IRi端,由從片8259A傳給主片8259A。
:中斷響應(yīng)信號(hào),輸入。用來接收CPU送來的中斷響應(yīng)信號(hào)。
:讀命令信號(hào),輸入。當(dāng)其有效時(shí),通知8259A將中斷類型號(hào)或某個(gè)內(nèi)部寄存器的內(nèi)容送給CPU。
:寫命令信號(hào),輸入。當(dāng)其有效時(shí),通知8259A從數(shù)據(jù)總線上接收來自CPU發(fā)來的命令。
:片選信號(hào),輸入。當(dāng)其有效時(shí),8259A被選中。A0:端口選擇信號(hào),輸入。用于選擇8259A內(nèi)部的不同寄存器,通常直接接到地址總線的A0。8259A內(nèi)部的寄存器被安排在兩個(gè)端口中,端口地址一個(gè)為偶地址(低端),一個(gè)為奇地址(高端),由A0端輸入電平?jīng)Q定訪問哪一個(gè)端口。8.3可編程中斷控制器8259ACAS2~CAS0:級(jí)聯(lián)信號(hào),為主片與從片的連接線。作為主片,這3個(gè)信號(hào)是輸出信號(hào),根據(jù)它們的不同組合000~111,分別確定連在哪個(gè)IRi上的從片工作。對(duì)于從片,這3個(gè)信號(hào)是輸入信號(hào),以此判別本從片是否被選中。
:主從片/緩沖允許。該引腳在不同的方式下有不同的作用,若8259A采用緩沖方式則為輸出端,輸出控制信號(hào),以此來控制三態(tài)總線驅(qū)動(dòng)器的開關(guān);若采用非緩沖方式時(shí)則為輸入端,為1表示芯片是主片,否則為從片。8.3可編程中斷控制器8259A二、8259A的工作方式1.中斷觸發(fā)方式 中斷觸發(fā)方式?jīng)Q定了外設(shè)以何種信號(hào)通知8259A有中斷請(qǐng)求,具體又分為邊沿觸發(fā)和電平觸發(fā)兩種。(1)邊沿觸發(fā)方式 在邊沿觸發(fā)方式中,8259A將IRi輸入端出現(xiàn)的信號(hào)上升沿(正跳變)作為中斷請(qǐng)求信號(hào)觸發(fā)中斷申請(qǐng),這種觸發(fā)方式的優(yōu)點(diǎn)是IRi端只在上升沿申請(qǐng)一次中斷,故該端可以一直保持高電平而不會(huì)誤判為多次中斷申請(qǐng)。(2)電平觸發(fā)方式 在電平觸發(fā)方式中,8259A是將IRi輸入端出現(xiàn)高電平作為中斷請(qǐng)求信號(hào)觸發(fā)中斷申請(qǐng)。需要注意的是,在這種觸發(fā)方式下,當(dāng)該中斷請(qǐng)求得到響應(yīng)后,IRi輸入端必須及時(shí)撤除高電平,否則會(huì)引起不應(yīng)有的第二次中斷申請(qǐng)。8.3可編程中斷控制器8259A2.中斷優(yōu)先級(jí)設(shè)置方式(1)完全嵌套方式 完全嵌套方式是8259A在初始化時(shí)自動(dòng)進(jìn)入的一種最基本的優(yōu)先級(jí)管理方式。在這種方式下,只要不重新設(shè)置優(yōu)先級(jí)別,IR0~I(xiàn)R7就具有固定不變的優(yōu)先級(jí),默認(rèn)IR0優(yōu)先級(jí)最高,IR1次之,IR7優(yōu)先級(jí)最低。同時(shí),高優(yōu)先級(jí)的中斷能夠中斷低優(yōu)先級(jí)的中斷服務(wù),實(shí)現(xiàn)中斷嵌套。(2)自動(dòng)循環(huán)方式 自動(dòng)循環(huán)優(yōu)先級(jí)方式可以改變IR7~I(xiàn)R0優(yōu)先級(jí)。其變化規(guī)律是:初始時(shí)依然是IR0具有最高優(yōu)先級(jí),IR7的優(yōu)先級(jí)最低,但當(dāng)某個(gè)中斷請(qǐng)求被響應(yīng)之后,它的優(yōu)先級(jí)就變?yōu)樽畹?,而它的下一?jí)中斷變?yōu)樽罡邇?yōu)先級(jí),亦即優(yōu)先級(jí)是輪流的。例如當(dāng)IR4的中斷請(qǐng)求結(jié)束后,IR4的優(yōu)先級(jí)變?yōu)樽畹?,而相鄰的IR5變?yōu)樽罡邇?yōu)先級(jí),IR6次之,依次類推。8.3可編程中斷控制器8259A(3)特殊完全嵌套方式 在中斷嵌套時(shí),除了高優(yōu)先級(jí)中斷可以中斷低優(yōu)先級(jí)的中斷服務(wù)外,對(duì)同一級(jí)別的中斷請(qǐng)求也能夠予以響應(yīng),從而實(shí)現(xiàn)同級(jí)中斷的特殊嵌套。例如對(duì)圖8.13所示的系統(tǒng),主片工作在特殊完全嵌套方式,從片工作在完全嵌套方式。當(dāng)從片A的IR3引腳有中斷請(qǐng)求時(shí),會(huì)將中斷請(qǐng)求送到主片的IR6引腳,該中斷被響應(yīng)后,主片將對(duì)應(yīng)的ISR6置位。如果此時(shí)從片A的IR2又出現(xiàn)中斷請(qǐng)求,則由于IR2的優(yōu)先級(jí)高于IR3,該中斷請(qǐng)求又會(huì)被送到主片的IR6引腳。對(duì)于主片來說,這個(gè)中斷請(qǐng)求依然是IR6的中斷,若主片工作在完全嵌套方式,則不會(huì)予以響應(yīng),從而造成錯(cuò)誤。但主片工作在特殊完全嵌套方式時(shí),就可以響應(yīng)同一級(jí)別的中斷請(qǐng)求,進(jìn)行正常工作。(4)特殊循環(huán)方式 特殊循環(huán)方式可通過編程指定初始最低優(yōu)先級(jí)中斷源,初始優(yōu)先級(jí)順序按循環(huán)方式重新排列。8.3可編程中斷控制器8259A8.3可編程中斷控制器8259A3.中斷屏蔽方式 中斷屏蔽方式是對(duì)8259A外部中斷源IR7~I(xiàn)R0實(shí)現(xiàn)屏蔽的一種中斷管理方式,有普通屏蔽方式和特殊屏蔽方式兩種。(1)普通屏蔽方式8259A內(nèi)部的中斷屏蔽寄存器IMR,其每一位對(duì)應(yīng)一個(gè)中斷請(qǐng)求輸入端IRi。將IMR的某位置1,則它對(duì)應(yīng)的IR就被屏蔽,從而使這個(gè)中斷請(qǐng)求不能從8259A送到CPU;如果該位置0,則允許該IR中斷傳送給CPU。通過編程可設(shè)置IMR中的某位為1或?yàn)?。8.3可編程中斷控制器8259A(2)特殊屏蔽方式 在某些特殊情況下,可能需要開放比本身優(yōu)先級(jí)別低的中斷請(qǐng)求,此時(shí)就可以使用特殊屏蔽方式來達(dá)到這一目的。在特殊屏蔽方式下,對(duì)IMR的某位置1時(shí),同時(shí)也使ISR中的對(duì)應(yīng)位清0。這樣,雖然系統(tǒng)當(dāng)前仍然在處理一個(gè)較高級(jí)別的中斷,但由于8259A的屏蔽寄存器IMR對(duì)應(yīng)于此中斷的位已經(jīng)被置1,且ISR中對(duì)應(yīng)位被清0,因此外界看來好像CPU現(xiàn)在沒有處理任何中斷,從而實(shí)現(xiàn)了對(duì)低優(yōu)先級(jí)中斷請(qǐng)求的響應(yīng)。這是一種非正常的中斷優(yōu)先級(jí)排隊(duì)關(guān)系,所以稱為“特殊屏蔽方式”,這種方式在正常的應(yīng)用系統(tǒng)中很少使用。8.3可編程中斷控制器8259A4.中斷結(jié)束方式 中斷結(jié)束方式實(shí)際上就是對(duì)ISR中對(duì)應(yīng)位的處理。當(dāng)中斷結(jié)束時(shí),必須使ISR寄存器中對(duì)應(yīng)位清0,以表示該中斷源的中斷服務(wù)已結(jié)束,否則,就意味著中斷服務(wù)還在繼續(xù),致使比它優(yōu)先級(jí)低的中斷請(qǐng)求無法得到響應(yīng)。8259A提供了以下3種中斷結(jié)束方式:(1)自動(dòng)結(jié)束方式(AEOI) 自動(dòng)結(jié)束方式是利用中斷響應(yīng)信號(hào)的第二個(gè)負(fù)脈沖的后沿,將ISR中的中斷服務(wù)標(biāo)志位清除。這種中斷服務(wù)結(jié)束方式是由硬件自動(dòng)完成的。由于ISR中為“1”位的清除是在中斷響應(yīng)過程中完成的,并非中斷服務(wù)程序的真正結(jié)束,若在中斷服務(wù)程序的執(zhí)行過程中有另外一個(gè)比當(dāng)前中斷優(yōu)先級(jí)低的請(qǐng)求信號(hào)到來,則會(huì)使低優(yōu)先級(jí)中斷請(qǐng)求進(jìn)入,打亂了正在服務(wù)的程序。AEOI是最簡單的中斷結(jié)束方式,通常只適用于只有一片8259A且不會(huì)出現(xiàn)中斷嵌套的情況。8.3可編程中斷控制器8259A(2)普通結(jié)束方式(EOI) 普通結(jié)束方式配合完全嵌套優(yōu)先級(jí)工作方式使用。這種方式需要用戶在中斷服務(wù)程序結(jié)束之前,向8259A發(fā)送EOI命令來清除ISR中當(dāng)前優(yōu)先級(jí)別最高位。因?yàn)樵谕耆短追绞较?,中斷?yōu)先級(jí)是固定的,8259A總是響應(yīng)優(yōu)先級(jí)最高的中斷,保存在ISR中的最高優(yōu)先級(jí)的對(duì)應(yīng)位,一定對(duì)應(yīng)于正在執(zhí)行的服務(wù)程序,把其清零相當(dāng)于結(jié)束了當(dāng)前正在處理的中斷。(3)特殊EOI方式 當(dāng)系統(tǒng)工作于特殊完全嵌套方式下時(shí),由于低優(yōu)先級(jí)的中斷可以中斷高優(yōu)先級(jí)的中斷服務(wù),所以此時(shí)ISR中的最高優(yōu)先級(jí)的非零位不一定對(duì)應(yīng)著最后一次處理的中斷(即當(dāng)前正在處理的中斷)。如果采用一般EOI方式來結(jié)束中斷的話就可能產(chǎn)生錯(cuò)誤,因此需要使用特殊EOI方式結(jié)束中斷。特殊EOI方式反映在程序中就是要發(fā)出一條特殊中斷結(jié)束命令,這個(gè)命令中指出了要清除ISR中的哪一位。8.3可編程中斷控制器8259A5.連接系統(tǒng)總線的方式8259A與系統(tǒng)總線的連接有緩沖和非緩沖兩種方式。(1)非緩沖方式 非緩沖方式主要適用于中小型系統(tǒng)中只有一片或不多的幾片8259A情況。在這種方式下,各片8259A直接和數(shù)據(jù)總線相連,而無需通過總線驅(qū)動(dòng)器;8259A的SP/EN端作為輸入端。當(dāng)系統(tǒng)中只有一片8259A時(shí),SP/EN端必須接+5V;當(dāng)系統(tǒng)中有多片8259A時(shí),主片的SP/EN端接+5V,從片的接地。(2)緩沖方式 緩沖方式多用在有多片8259A的大系統(tǒng)中。在這種方式中,8259A需要通過總線驅(qū)動(dòng)器和數(shù)據(jù)總線相連。此時(shí),將8259A的SP/EN端和總線驅(qū)動(dòng)器的允許端相連,因?yàn)?259A工作在緩沖方式時(shí),會(huì)在輸出狀態(tài)字或中斷類型碼的同時(shí),從SP/EN端輸出一個(gè)低電平,此低電平正好可以作為總線驅(qū)動(dòng)器的啟動(dòng)信號(hào)。8.3可編程中斷控制器8259A三、8259A的級(jí)聯(lián) 當(dāng)系統(tǒng)中的外部中斷源數(shù)量大于8個(gè)時(shí),就無法用一片8259A來進(jìn)行管理,可采用多片8259A的級(jí)聯(lián)來管理這些中斷源,最多可以使用9個(gè)8259A芯片管理64個(gè)外部中斷源。8.3可編程中斷控制器8259A四、8259A的命令字 8259A的命令字分為初始化命令字ICW(InitializationCommandWord)和操作命令字OCW(OperationCommandWord)兩種,因此編程也分為兩步:初始化編程和操作編程。1.初始化命令字及其編程 初始化編程是在系統(tǒng)加電或復(fù)位后,用初始化命令字對(duì)8259A進(jìn)行初始化,以規(guī)定8259A的基本工作方式。初始化編程具體完成如下功能:設(shè)定中斷請(qǐng)求信號(hào)的觸發(fā)方式,是電平觸發(fā)還是邊沿觸發(fā)設(shè)定8259A是單片還是多片級(jí)聯(lián)的工作方式設(shè)定8259A中斷類型號(hào)基址,即IR0對(duì)應(yīng)的中斷類型號(hào)設(shè)定優(yōu)先級(jí)設(shè)置方式;設(shè)定中斷結(jié)束方式。8.3可編程中斷控制器8259A8259A共有4個(gè)初始化命令字ICW1~I(xiàn)CW4,其初始化流程如圖8.15所示。(1)初始化命令字通常是計(jì)算機(jī)系統(tǒng)啟動(dòng)時(shí)由初始化程序設(shè)置的,一旦設(shè)定,在工作過程中一般不再改變。(2)在初始化過程中必須嚴(yán)格按照規(guī)定的順序依次寫入4個(gè)初始化命令字。ICW1寫入偶地址,ICW2~ICW4寫入奇地址。ICW1和ICW2是必須設(shè)置的,而ICW3和ICW4是否需要設(shè)置由ICW1的相應(yīng)位決定,如果需要設(shè)置ICW3,則要分別對(duì)主片和從片的ICW3進(jìn)行設(shè)置,因?yàn)槠涓袷绞遣煌摹?.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有無級(jí)聯(lián)。D1=1單片工作方式,D1=0多片級(jí)聯(lián)方式。D0:用于設(shè)定是否需要初始化命令字ICW4。D0=1表示需要ICW4,D0=0表示不需要ICW4。對(duì)8086系統(tǒng)而言一般都需要設(shè)置ICW4,D0位須設(shè)為1。CPU向8259A寫入ICW1時(shí),D4位必須為1,且必須寫入偶地址,即A0=0。8.3可編程中斷控制器8259A(2)ICW2 ICW2命令字用于設(shè)置中斷類型號(hào)的基值,即8259A的IR0所對(duì)應(yīng)的中斷類型號(hào)。其格式如下:
在8086系統(tǒng)中,D7~D3表示中斷類型號(hào)的高5位,D2~D0固定為0,即ICW2必須是能被8整除的正整數(shù)。在CPU的第二個(gè)中斷響應(yīng)周期,8259A通過數(shù)據(jù)總線向CPU送出中斷類型號(hào),該中斷類型號(hào)的高5位即為ICW2中的D7~D3,低3位由IR0~I(xiàn)R7中的序號(hào)決定,由8259A自動(dòng)插入。 ICW2必須寫入奇地址,即A0=1。8.3可編程中斷控制器8259A(3)ICW3
ICW3僅在多片8259A級(jí)聯(lián)時(shí)才需要寫入,而且需要對(duì)主片和從片分別寫入。主片8259A的ICW3與從片的ICW3在格式上不同,命令字的格式分別如下:
主片ICW3中的D7~D0分別對(duì)應(yīng)其8條中斷請(qǐng)求輸入線IR0~I(xiàn)R7,若某條線上接有從片8259A則其對(duì)應(yīng)位為“1”,否則為“0”。從片ICW3中的D7~D3固定為0,D2~D0為從片標(biāo)志碼,表示該從片與主片的哪個(gè)中斷請(qǐng)求輸入線連接。
ICW3只有在ICW1的D1=0時(shí)才需要寫入,且必須寫入奇地址,即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表示采用自動(dòng)結(jié)束方式,D1=0表示采用非自動(dòng)結(jié)束方式,在中斷服務(wù)程序結(jié)束時(shí)需要向8259A發(fā)送EOI命令以清除ISR。D0:位,用于表明CPU的模式。D0=0表示8259A工作于8080/8085系統(tǒng);D0=1表示工作于8086/8088系統(tǒng)。ICW4只有在ICW1的D0=1時(shí)才需要寫入,且必須寫入奇地址,即A0=1。8.3可編程中斷控制器8259A下面通過一個(gè)例子來說明8259A的初始化編程方法。
設(shè)8259A工作于8086系統(tǒng),8259A的I/O端口地址為20H和21H。對(duì)8259A的初始化規(guī)定為:邊沿觸發(fā)方式,緩沖器方式,中斷結(jié)束為EOI命令方式,中斷優(yōu)先級(jí)管理采用全嵌套方式,8級(jí)中斷源的類型碼為08H~0FH,則其初始化程序段如下:
MOVAL,00010011B;設(shè)置ICW1為邊沿觸發(fā),單片8259A,需要
;ICW4OUT20H,ALMOVAL,00001000B;設(shè)置ICW2中斷類型碼基數(shù)為08HOUT21H,AL;則可響應(yīng)的8個(gè)中斷類型碼為08H~0FHMOVAL,00001101B;設(shè)置ICW4為全嵌套,緩沖,主片,普通 ;EOI結(jié)束,與8086/8088配合OUT21H,AL8.3可編程中斷控制器8259A2.操作命令字及其編程
在對(duì)8259A進(jìn)行初始化編程后,8259A就可以接受外部中斷請(qǐng)求信號(hào)進(jìn)行工作了。在工作期間,可以通過操作命令字OCW使它按不同的方式工作。8259A有3個(gè)操作命令字,它們都有各自的特征位,因此寫入時(shí)沒有順序要求,而且可以重復(fù)多次寫入,這是與初始化編程所不同的。但需要注意的是OCW1必須寫入奇地址,而OCW2、OCW3必須寫入偶地址。8.3可編程中斷控制器8259A(1)OCW1OCW1是中斷屏蔽命令字。其格式如下:
當(dāng)Mi=1時(shí)表示該位對(duì)應(yīng)的IRi的中斷請(qǐng)求被屏蔽,Mi=0時(shí)表示相應(yīng)中斷請(qǐng)求被允許。在初始化開始時(shí),默認(rèn)屏蔽字為全“0”,即所有中斷源都未被屏蔽。OCW1必須寫入奇地址,即A0=1。例如:設(shè)某中斷系統(tǒng)要求屏蔽IR3和IR5,則8259A編程指令為:MOVAL,00101000BOUT21H,AL ;寫入OCW1,即IMR8.3可編程中斷控制器8259A(2)OCW2OCW2主要用于設(shè)置中斷優(yōu)先級(jí)循環(huán)方式和中斷結(jié)束方式,其格式如下:其中:D7:R位,為優(yōu)先級(jí)方式控制位。當(dāng)D7=0時(shí),中斷優(yōu)先級(jí)固定(即IR0最高,IR7最低);D7=1時(shí),中斷優(yōu)先級(jí)自動(dòng)循環(huán)。D6:SL位,決定D2~D0是否有效的標(biāo)志。當(dāng)D6=1時(shí)低3位L2~L0有效;D6=0時(shí)L2~L0無效。D5:EOI位,為中斷結(jié)束命令位。當(dāng)D5=1時(shí),在中斷服務(wù)程序結(jié)束時(shí)向8259A回送中斷結(jié)束命令EOI,以便使中斷服務(wù)寄存器ISR中當(dāng)前最高優(yōu)先級(jí)位復(fù)位,或由L2~L0表示的優(yōu)先級(jí)位復(fù)位;當(dāng)D5=0時(shí),該位不起作用。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)先級(jí)自動(dòng)循環(huán)方式無只規(guī)定了中斷優(yōu)先級(jí)方式000設(shè)定固定優(yōu)先級(jí)110特殊優(yōu)先級(jí)循環(huán)方式有010無意義101中斷優(yōu)先級(jí)自動(dòng)循環(huán)方式及中斷一般結(jié)束方式無規(guī)定了中斷優(yōu)先級(jí)循環(huán)方式,并執(zhí)行中斷返回前的中斷一般結(jié)束命令,使對(duì)應(yīng)ISR位清零111中斷優(yōu)先級(jí)特殊循環(huán)方式和特殊中斷結(jié)束方式有011中斷特殊結(jié)束方式有中斷返回前執(zhí)行中斷特殊結(jié)束命令,使相應(yīng)的ISR位清零001中斷一般結(jié)束方式無意義中斷返回前執(zhí)行中斷一般結(jié)束命令,使相應(yīng)的ISR位清零8.3可編程中斷控制器8259A(3)OCW3OCW3命令字主要用于管理特殊屏蔽方式和查詢方式,并控制8259A的中斷請(qǐng)求寄存器IRR和中斷服務(wù)寄存器ISR的讀取。其格式如下:
其中:D6:特殊屏蔽方式允許位。當(dāng)D6=1則SMM位有效,否則SMM位無效。D5:SMM位,與ESMM組合用來設(shè)置或取消特殊屏蔽方式。當(dāng)ESMM=1,SMM=1時(shí),設(shè)置特殊屏蔽;當(dāng)ESMM=1,SMM=0時(shí),取消特殊屏蔽。D4~D3:OCW3的特征位,D4D3=01。D2:P位,為中斷狀態(tài)查詢位。當(dāng)P=1時(shí),可通過讀入狀態(tài)寄存器的內(nèi)容,D1:RR位,用于控制對(duì)寄存器的讀取。當(dāng)D1=1時(shí),允許讀取D0所指定的寄存器,D1=0時(shí)不允許讀取。D0:RIS位,用于確定讀取ISR還是IRR寄存器。在D1=1時(shí),若D0=1時(shí),則讀取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在微機(jī)中的編程應(yīng)用【例8-1】8259A在IBMPC/AT系統(tǒng)中的應(yīng)用。 IBMPC/AT系統(tǒng)共有兩片8259A芯片,可接收最多15級(jí)中斷。從片的INT引腳直接連到主片的IR2引腳。端口地址主片仍然為20H和21H,從片為0A0H和0A1H。主、從片均為邊沿觸發(fā),均采用完全嵌套方式,優(yōu)先級(jí)依次為0級(jí),1級(jí),8~15級(jí),3~7級(jí)。系統(tǒng)采用非緩沖方式,主片的中斷類型號(hào)為08H~0FH,從片的中斷類型號(hào)為70H~77H。8259A在IBMPC/AT系統(tǒng)中的硬件連接如圖8.16所示。8.48259A在微機(jī)中的編程應(yīng)用8.48259A在微機(jī)中的編程應(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個(gè)中斷類型碼為08H~0FHMOVAL,00000100B ;主片IR2引腳上接從片OUTINTA01,ALMOVAL,00000001B;設(shè)置ICW4為8086/8088模式,普通EOI,非緩沖方 ;式,完全嵌套方式OUTINTA01,AL …8.48259A在微機(jī)中的編程應(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個(gè)中斷類型碼為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ù)和虛擬存儲(chǔ)器等功能,80486引入了“異?!钡母拍?,它把外部中斷稱為“中斷”,把內(nèi)部中斷稱為“異?!?。中斷是由異步的外部事件引起的,外部事件及中斷響應(yīng)與正在執(zhí)行的指令沒有關(guān)系。在80486中,標(biāo)志寄存器EFLAGS中的IF標(biāo)志決定是否屏蔽外部中斷中的可屏蔽中斷請(qǐng)求。異常是80486在執(zhí)行指令期間檢測(cè)到不正常的或非法的條件所引起的。異常與正在執(zhí)行的指令有直接的聯(lián)系。當(dāng)發(fā)生這些情況時(shí),指令就不能成功執(zhí)行。8.580486CPU中斷系統(tǒng)中斷類型號(hào)異常名稱異常類別產(chǎn)生異常的原因0除法錯(cuò)故障DIV、IDIV指令1單步調(diào)試異常陷井或故障任何指令2不可屏蔽中斷NMI3斷點(diǎn)中斷陷井INT3指令4溢出中斷陷井INTO5越界故障BOUND指令6非法操作碼故障非法指令7協(xié)處理器不可用故障浮點(diǎn)指令或WAIT8雙重故障異常中止任何指令9協(xié)處理器越段異常中止引用存儲(chǔ)器的浮點(diǎn)指令10無效的TSS故障JMP、CALL、RET指令11段不存在故障裝載一個(gè)段寄存器的任何指令12堆棧段故障故障任何加載SS的指令或引用由SS尋址的單元13通用保護(hù)故障故障任何特權(quán)指令或引用存儲(chǔ)器的指令14頁故障故障任何引用存儲(chǔ)器的指令15Intel保留16浮點(diǎn)錯(cuò)故障浮點(diǎn)指令或WAIT17對(duì)準(zhǔn)檢測(cè)故障18-31系統(tǒng)開發(fā)軟件使用32-255用戶可使用中斷可屏蔽中斷INTR8.580486CPU中斷系統(tǒng)
溫馨提示
- 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. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度能源消耗優(yōu)化廠房房產(chǎn)租賃合同4篇
- 2024鐵路貨運(yùn)代理與多式聯(lián)運(yùn)合同規(guī)范匯編3篇
- 禁毒防艾知識(shí)培訓(xùn)課件
- 2025年度活動(dòng)板房租賃與拆除一體化合同范本2篇
- 2024物流金融保理服務(wù)合同
- 個(gè)人咨詢合同合同:專業(yè)指導(dǎo)服務(wù)明細(xì)版B版
- 2025年度耕地復(fù)墾與農(nóng)村土地經(jīng)營權(quán)流轉(zhuǎn)合同
- 2025年度咖啡廳及西餐廳整體轉(zhuǎn)讓合同
- 2025年度中小企業(yè)創(chuàng)業(yè)貸款合同簽訂與創(chuàng)業(yè)培訓(xùn)服務(wù)
- 二零二五年度出租車租賃合同司機(jī)福利及待遇協(xié)議
- 電梯曳引機(jī)生銹處理方案
- 電力電纜故障分析報(bào)告
- 中國電信網(wǎng)絡(luò)資源管理系統(tǒng)介紹
- 2024年浙江首考高考選考技術(shù)試卷試題真題(答案詳解)
- 《品牌形象設(shè)計(jì)》課件
- 倉庫管理基礎(chǔ)知識(shí)培訓(xùn)課件1
- 藥品的收貨與驗(yàn)收培訓(xùn)課件
- GH-T 1388-2022 脫水大蒜標(biāo)準(zhǔn)規(guī)范
- 高中英語人教版必修第一二冊(cè)語境記單詞清單
- 政府機(jī)關(guān)保潔服務(wù)投標(biāo)方案(技術(shù)方案)
- HIV感染者合并慢性腎病的治療指南
評(píng)論
0/150
提交評(píng)論