微機(jī)原理與接口技術(shù)-第8章微型計(jì)算機(jī)中斷系統(tǒng)_第1頁
微機(jī)原理與接口技術(shù)-第8章微型計(jì)算機(jī)中斷系統(tǒng)_第2頁
微機(jī)原理與接口技術(shù)-第8章微型計(jì)算機(jī)中斷系統(tǒng)_第3頁
微機(jī)原理與接口技術(shù)-第8章微型計(jì)算機(jī)中斷系統(tǒng)_第4頁
微機(jī)原理與接口技術(shù)-第8章微型計(jì)算機(jī)中斷系統(tǒng)_第5頁
已閱讀5頁,還剩67頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

微機(jī)原理及接口技術(shù)

第八章微型計(jì)算機(jī)中斷系統(tǒng)

CPU執(zhí)行程序時(shí),由于發(fā)生了某種隨機(jī)的事件(外部或內(nèi)部),引起CPU暫時(shí)中斷正在運(yùn)行的程序,轉(zhuǎn)去執(zhí)行一段特殊的服務(wù)程序(稱為中斷服務(wù)程序或中斷處理程序),以處理該事件,該事件處理完后又返回被中斷的程序繼續(xù)執(zhí)行,這一過程稱為中斷。一、中斷的概念8.1概述8.1概述中斷技術(shù)是微機(jī)中一項(xiàng)重要技術(shù)。它不僅在數(shù)據(jù)輸入、輸出中提高了CPU的效率,而且在多外設(shè)、實(shí)時(shí)控制、故障處理中也是一項(xiàng)必不可少的技術(shù)。中斷處理的過程:INTR=1i+1條指令中斷服務(wù)程序i條指令CPU響應(yīng)中斷外設(shè)中斷源申請(qǐng)中斷INTA=0②實(shí)時(shí)處理??刂葡到y(tǒng)往往有許多數(shù)據(jù)需要采集或輸出。實(shí)時(shí)控制中有的數(shù)據(jù)難以估計(jì)何時(shí)需要交換。中斷可為實(shí)時(shí)控制提供支持。③故障處理。計(jì)算機(jī)系統(tǒng)的故障往往隨機(jī)發(fā)生,如電源斷電、運(yùn)算溢出、存儲(chǔ)器出錯(cuò)等。采用中斷技術(shù),系統(tǒng)故障一旦出現(xiàn),就能及時(shí)處理。中斷的應(yīng)用特點(diǎn)①CPU與外設(shè)并行工作。解決CPU速度快、外設(shè)速度慢的矛盾。在外設(shè)需要時(shí)發(fā)出中斷申請(qǐng),CPU才中斷原有工作執(zhí)行中斷服務(wù)程序,與外設(shè)交換數(shù)據(jù);中斷服務(wù)結(jié)束,CPU返回原程序繼續(xù)執(zhí)行。8.1概述一、中斷的概念1.中斷源引起CPU中斷的事件——中斷源。例如:外設(shè)——請(qǐng)求輸入輸出數(shù)據(jù),報(bào)告故障等事件——掉電、硬件故障、軟件錯(cuò)誤、非法操作、定時(shí)時(shí)間到等中斷源分類:內(nèi)部中斷:CPU內(nèi)部執(zhí)行程序時(shí)自身產(chǎn)生的中斷外部中斷:CPU以外的設(shè)備、部件產(chǎn)生的中斷8.1概述2.中斷響應(yīng)對(duì)于內(nèi)部中斷和非屏蔽中斷來說CPU應(yīng)立即響應(yīng)。對(duì)于可屏蔽中斷來說CPU在每條指令的最后一個(gè)T檢測INTR引腳,當(dāng)有中斷請(qǐng)求并開中斷(IF=1)的情況下向外設(shè)發(fā)出中斷響應(yīng)信號(hào)INTA#。當(dāng)CPU響應(yīng)中斷后首先要保護(hù)斷點(diǎn),然后轉(zhuǎn)去執(zhí)行中斷服務(wù)程序,中斷服務(wù)程序執(zhí)行結(jié)束返回?cái)帱c(diǎn)繼續(xù)執(zhí)行被中斷的程序。一、中斷的概念(續(xù))8.1概述一、中斷的概念(續(xù))8.1概述3.中斷向量表(中斷矢量表)中斷向量表即中斷服務(wù)程序入口地址表。中斷向量表中存放著中斷服務(wù)程序的入口地址。CPU響應(yīng)中斷后根據(jù)中斷類型號(hào)在中斷向量表中查到對(duì)應(yīng)的中斷服務(wù)程序的入口地址,然后轉(zhuǎn)到中斷服務(wù)程序。一、中斷的概念(續(xù))8.1概述4.中斷優(yōu)先級(jí)

當(dāng)多個(gè)中斷源同時(shí)發(fā)生中斷請(qǐng)求時(shí)CPU先響應(yīng)優(yōu)先級(jí)高的中斷。當(dāng)CPU正在運(yùn)行中斷服務(wù)程序時(shí)又有高優(yōu)先級(jí)的中斷請(qǐng)求進(jìn)入,CPU會(huì)暫時(shí)掛起正在運(yùn)行的中斷服務(wù)程序去執(zhí)行高級(jí)的中斷服務(wù)程序。實(shí)現(xiàn)中斷嵌套。一、中斷的概念(續(xù))8.1概述5.中斷屏蔽

對(duì)于可屏蔽中斷,CPU可以由軟件設(shè)置,使之不能被響應(yīng),稱為中斷屏蔽。8086/8088中斷源類型

NMIINTR中斷邏輯軟件中斷指令溢出中斷除法錯(cuò)單步中斷非屏蔽中斷請(qǐng)求中斷控制器8259APIC8086/8088CPU內(nèi)部邏輯斷點(diǎn)中斷可屏蔽中斷請(qǐng)求n43012二、中斷分類

8.1概述

8086/8088共有256個(gè)中斷源,分內(nèi)部中斷和外部中斷兩大類:二、中斷分類

(續(xù))8.1概述

由外部硬件產(chǎn)生的中斷。分為非屏蔽中斷和可屏蔽中斷兩種:1.外部中斷:非屏蔽中斷:從NMI引腳引入,上升沿有效,不受IF(中斷允許)位限制,中斷向量碼為2??善帘沃袛啵簭腎NTR引腳引入,高電平有效,當(dāng)IF=1時(shí)允許中斷,中斷向量碼由中斷控制器(如8259)提供。軟中斷指令產(chǎn)生的中斷;如:INT12HINT21H

2.內(nèi)部中斷(軟中斷):有三種情況能引起內(nèi)部中斷:二、中斷分類

(續(xù))8.1概述軟中斷指令產(chǎn)生的中斷;

CPU進(jìn)行運(yùn)算時(shí)發(fā)生錯(cuò)誤產(chǎn)生的中斷;單步和斷點(diǎn)中斷,用于程序調(diào)試。

CPU進(jìn)行運(yùn)算時(shí)發(fā)生錯(cuò)誤產(chǎn)生的中斷;

2.內(nèi)部中斷(軟中斷):二、中斷分類

(續(xù))8.1概述除法錯(cuò)中斷:中斷類型號(hào)為0,當(dāng)商超出計(jì)算機(jī)所能表示的范圍時(shí)產(chǎn)生。溢出中斷:中斷類型號(hào)為4,專用指令I(lǐng)NTO當(dāng)運(yùn)算使溢出標(biāo)志OF=1時(shí)產(chǎn)生。例如:ADDAX,VALUEINTO若OF=0INTO不起作用,否則產(chǎn)生中斷

2.內(nèi)部中斷(軟中斷):二、中斷分類

(續(xù))8.1概述單步和斷點(diǎn)中斷,用于程序調(diào)試。單步中斷:用于程序調(diào)試。當(dāng)TF位置1后,每執(zhí)行一條指令CPU即自動(dòng)產(chǎn)生中斷類型號(hào)為1的中斷。斷點(diǎn)中斷:用于程序調(diào)試。中斷類型號(hào)為3。當(dāng)用debug調(diào)試程序時(shí),可以在程序中插入斷點(diǎn),在斷點(diǎn)處插入一條斷點(diǎn)指令I(lǐng)NT3

8.2中斷處理過程1.中斷請(qǐng)求:對(duì)中斷請(qǐng)求信號(hào)的規(guī)定:信號(hào)要滿足CPU的要求;應(yīng)被有效的記錄;信號(hào)的應(yīng)及時(shí)撤消。對(duì)于可屏蔽中斷中斷的處理過程分以下幾步:2.中斷響應(yīng):指令執(zhí)行結(jié)束;開中斷;沒有復(fù)位、保持和非屏蔽中斷;如果正在執(zhí)行STI(開中斷)IRET(中斷返回)指令,CPU要再執(zhí)行一條指令后才響應(yīng)。對(duì)于非屏蔽中斷CPU會(huì)立即響應(yīng)對(duì)于可屏蔽中斷要滿足一定條件:8.2中斷處理過程3.保護(hù)現(xiàn)場:軟件查詢法;中斷矢量法。4.轉(zhuǎn)入執(zhí)行中斷服務(wù)程序:

中斷源識(shí)別:

中斷服務(wù):5.恢復(fù)現(xiàn)場:6.中斷返回:8.2中斷處理過程一、CPU對(duì)中斷的響應(yīng)關(guān)中斷斷點(diǎn)保護(hù)轉(zhuǎn)中斷服務(wù)CPU自動(dòng)執(zhí)行中斷響應(yīng)保護(hù)現(xiàn)場開中斷中斷服務(wù)恢復(fù)現(xiàn)場返回主程序CPU執(zhí)行中斷服務(wù)程序執(zhí)行一條指令指令結(jié)束INTR=1取下一條指令CPU執(zhí)行主程序NN

1、CPU發(fā)INTA同時(shí),自動(dòng)關(guān)中斷

2、CPU自動(dòng)將斷點(diǎn)CS,IP,PSW入棧

3、CPU將中斷源提供的中斷類型碼形成中斷服務(wù)入口地址,送CS,IP執(zhí)行PUSH指令用于中斷嵌套。若無中斷嵌套,可放在恢復(fù)現(xiàn)場前執(zhí)行POP指令原PSW,IP,CS出棧,返回主程序IF=1INTR=18.2中斷處理過程8.2中斷處理過程對(duì)于不可屏蔽中斷和IF無關(guān),也不用判斷中斷源,直接轉(zhuǎn)到中斷2,在中斷處理過程過程中仍能響應(yīng)不可屏蔽中斷。對(duì)于軟件中斷由程序設(shè)定,能被不可屏蔽中斷和可屏蔽中斷所中斷。中斷請(qǐng)求非屏蔽中斷內(nèi)部中斷可屏蔽中斷第2個(gè)INTA周期讀中斷向量碼第1個(gè)INTA周期FLAGS→((SP)-1)((SP)-2)(CS)→((SP)-3)((SP)-4)(IP)→((SP)-5)((SP)-6)(SP)-6→SP0→IF0→TF(4n)

(4n+1)→(IP)(4n+2)

(4n+3)→CS中斷處理中斷響應(yīng)過程:INTA:中斷響應(yīng)輸出信號(hào)(兩個(gè)負(fù)脈沖),用于讀中斷向量碼8086/8088

中斷過程

二、8086/8088的中斷響應(yīng)過程完成當(dāng)前指令內(nèi)部中斷NMIINTRTF=1執(zhí)行下一條指令I(lǐng)F=1響應(yīng)中斷讀類型碼標(biāo)志入棧調(diào)服務(wù)程序CS、IP入棧清除IF、TF令TEMP=TF又有NMITEMP=1執(zhí)行服務(wù)程序CS、IP出棧標(biāo)志出棧繼續(xù)執(zhí)行被中斷的程序YNNNNYYYYNNYYNIF=1讀類型碼N形成中斷類型碼二、中斷向量表8.2中斷處理過程對(duì)于可屏蔽中斷,當(dāng)CPU響應(yīng)中斷后要判斷是哪個(gè)中斷源發(fā)出的中斷請(qǐng)求(中斷源識(shí)別),可以采用軟件查詢法和中斷矢量法。軟件查詢法的具有簡單優(yōu)點(diǎn)是簡單,但浪費(fèi)時(shí)間,當(dāng)源較多時(shí)有些設(shè)備可能長時(shí)間得不到服務(wù)。中斷矢量法是將中斷服務(wù)程序的入口地址(矢量地址)放到一個(gè)轉(zhuǎn)移地址表中,根據(jù)中斷類型號(hào)可以在表中查到對(duì)應(yīng)的中斷服務(wù)程序的入口地址。存放各類中斷的服務(wù)程序入口地址(段和偏移)表的地址位于內(nèi)存的00000H~003FFH,大小為1KB,共256個(gè)入口每個(gè)服務(wù)程序入口占用4Bytes,低字為段內(nèi)偏移,高字為段基址根據(jù)中斷類型號(hào)獲得中斷服務(wù)程序入口的方法:(n為中斷類型號(hào))中斷向量在IVT中的存放地址=4×n8086/8088中斷向量表(IVT)二、中斷向量表8.2中斷處理過程CS

n=0,存放除法中斷程序入口地址...000H004H008H3FCH3FFHIPCSCSIP

n=1,存放單步中斷程序入口地址n=255

中斷n的服務(wù)程序入口地址存放在4n

開始連續(xù)的4個(gè)單元中(4×0)(4×0+1)2個(gè)單元

(4×0+2)(4×0+3)

兩個(gè)單元二、中斷向量表8.2中斷處理過程例:某中斷的中斷類型號(hào)為68H,其中斷過程為:(1)計(jì)算存放中斷服務(wù)程序入口地址的地址=68H*4=1A0H;(2)

取中斷入口地址的段內(nèi)偏移量裝入IP,IP=2050H

,段碼裝入CS,CS=A000H;(3)轉(zhuǎn)向中斷服務(wù)程序;(4)中斷返回502000A0001A0H001A2H001A4H存放地址=68H*4=1A0H2050A000STIPUSHDSIRET中斷服務(wù)程序A000:2050INT68HMOVAX,0①②③④⑤2.中斷入口地址的設(shè)置

IBMPC對(duì)256個(gè)中斷類型已進(jìn)行了地址分配,其中40H以后的中斷類型號(hào)可供用戶使用。供用戶使用的中斷類型號(hào),可由用戶定義為軟中斷,由INTn指令引用;可通過INTR端或通過中斷控制器8259A引入可屏蔽的硬件中斷。使用時(shí)用戶要自己將中斷服務(wù)程序入口地址置入相應(yīng)的中斷向量表內(nèi)。方法1:通過指令來設(shè)置程序1:MOVAX,0;中斷入口表

MOVES,AX;段地址送ESMOVDI,n*4;偏移量送DIMOVAX,OFFSETINTRADCLD;DF=0遞增STOSW;傳送子程序偏移地址MOVAX,CSSTOSW;傳送子程序段地址STI;開中斷MOVAX,0;中斷入口表

MOVES,AX;段地址送ESMOVBX,n*4;偏移量送DIMOVAX,OFFSETINTRADMOVES:[BX],AXMOVAX,SEGINTRADMOVES:[BX+2],AXSTI程序2:方法2:通過調(diào)用DOS功能來設(shè)置設(shè)置中斷入口:把由AL指定中斷類型號(hào)的中斷入口DS:DX中放置在中斷入口表中。預(yù)置:AL=中斷類型號(hào)

DS:DX=中斷服務(wù)程序入口地址

AH=25H執(zhí)行:INT21H取中斷入口:把由AL指定中斷類型號(hào)的中斷入口,從中斷入口表中取到ES:BX中。預(yù)置:AL=中斷類型號(hào)

AH=35H執(zhí)行:INT21H返回:ES:BX=中斷服務(wù)程序入口地址MOVAL,n;取中斷入口MOVAH,35HINT21HPUSHES;存原中斷入口PUSHBXPUSHDSMOVAX,SEGINTRADMOVDS,AXMOVDX,OFFSETINTRADMOVAL,n;中斷類型號(hào)MOVAH,25H;設(shè)置中斷入口INT21HPOPDSPOPDX;恢復(fù)原中斷入口POPDSMOVAL,nMOVAH,25HINT21HRET二、中斷向量表8.2中斷處理過程3.中斷類型號(hào)的獲取

對(duì)于內(nèi)部中斷和從NMI引入的非屏蔽中斷,類型號(hào)固定。對(duì)于從INTR引入的可屏蔽中斷,類型號(hào)有兩種方法:并行輸入接口;8259中斷控制器中斷主程序的編寫主程序中的初始化:設(shè)置中斷向量表設(shè)置中斷屏蔽位設(shè)置中斷允許標(biāo)志。硬件(外設(shè)接口)和CPU自動(dòng)完成:外設(shè)向CPU發(fā)INTR當(dāng)前指令結(jié)束,CPU發(fā)INTA#CPU讀中斷類型號(hào)CPU保存斷點(diǎn)關(guān)中斷、禁止單步中斷取中斷服務(wù)程序入口地址轉(zhuǎn)到中斷服務(wù)程序中斷服務(wù)子程序的編寫中斷服務(wù)子程序:保護(hù)現(xiàn)場若允許中斷嵌套要開中斷執(zhí)行中斷處理程序關(guān)中斷,禁止其它中斷進(jìn)入發(fā)EOI命令,結(jié)束中斷恢復(fù)現(xiàn)場用IRET指令返回主程序8.3中斷控制器8259A1、8級(jí)優(yōu)先權(quán)控制,通過級(jí)連可擴(kuò)展到64級(jí)優(yōu)先級(jí)控制;2、每一級(jí)可由程序單獨(dú)屏蔽或允許;3、在CPU響應(yīng)周期,可提供相應(yīng)的中斷類型碼。中斷類型碼由8259編程設(shè)定;4、通過編程可設(shè)定多種工作方式。一、功能數(shù)據(jù)總線緩沖器讀/寫控制電路級(jí)聯(lián)緩沖器/比較器D0~D7RD#WR#A0CS#中斷請(qǐng)求寄存器(IRR)CA0CA1CA2SP#/EN#判優(yōu)電路PR內(nèi)部服務(wù)寄存器(ISR)中斷請(qǐng)求寄存器(IMR)控制電路IR0...IR7INTA#INT8259內(nèi)部結(jié)構(gòu)圖二、中斷控制器8259A內(nèi)部結(jié)構(gòu)

8.3中斷控制器8259A1、數(shù)據(jù)總線緩沖器與CPU的DB連接,傳送控制字、狀態(tài)字和中斷類型碼等。2、讀寫邏輯通過IORD、IOWR、CS、A0控制接收CPU的命令、發(fā)出8259的狀態(tài)。8.3中斷控制器8259A二、中斷控制器8259A內(nèi)部結(jié)構(gòu)

(序)

CSRDWRA0D4D3讀寫操作

01001寫ICW10101

寫ICW2、ICW3、ICW4、OCW1010000寫OCW2010001寫OCW30010

讀IRR/ISR0011

讀IMR8259的讀寫功能3、級(jí)聯(lián)緩沖/比較器(1)緩沖方式:在多片8259A級(jí)聯(lián)的系統(tǒng)中,8259A通過總線驅(qū)動(dòng)器和數(shù)據(jù)總線相聯(lián)。在緩沖方式下,SP#/EN#與總線驅(qū)動(dòng)器的允許端相連,控制總線驅(qū)動(dòng)器的啟動(dòng),當(dāng)EN#=0,8259A控制數(shù)據(jù)送到CPU,當(dāng)EN#=1,控制數(shù)據(jù)從CPU送到8259A。(2)非緩沖方式:此時(shí)各8259A直接與數(shù)據(jù)總線相連。SP#/EN#為輸入端,當(dāng)SP#=1,該片為主片,當(dāng)SP#=0,該片為從片。主片與從片通過CAS0~CAS2級(jí)連。主片的INTR與CPU的INTR連接;從片的INTR作為主片的IR0~I(xiàn)R7輸入。8.3中斷控制器8259A二、中斷控制器8259A內(nèi)部結(jié)構(gòu)

(序)

8.3中斷控制器8259A二、中斷控制器8259A內(nèi)部結(jié)構(gòu)

(序)

5、在服務(wù)寄存器IRS(8位)

正在服務(wù)的中斷源標(biāo)志,當(dāng)某個(gè)中斷被響應(yīng)后,CPU發(fā)出第一個(gè)INTA信號(hào),ISR中的相應(yīng)位置“1”,一直被保存到該中斷處理結(jié)束。當(dāng)多重中斷時(shí),ISR的多位同時(shí)被置1。4、中斷請(qǐng)求寄存器

IRR(8位)

存放中斷請(qǐng)求信號(hào),當(dāng)IR0——IR7中的某個(gè)IR端有中斷請(qǐng)求時(shí),IRR相應(yīng)的某位置1。當(dāng)該中斷被響應(yīng)后,IRR相應(yīng)的位被復(fù)位。優(yōu)先權(quán)IR0最高,IR7最低。8.3中斷控制器8259A二、中斷控制器8259A內(nèi)部結(jié)構(gòu)

(序)

6、中斷屏蔽寄存器

IMR(8位)用于存放對(duì)中斷請(qǐng)求的屏蔽信息。軟件編程使得IMR的某位為“1”時(shí),相應(yīng)IRR中的中斷請(qǐng)求被屏蔽;若IMR的某位為“0”時(shí),允許相應(yīng)IRR中的中斷請(qǐng)求進(jìn)入中斷優(yōu)先級(jí)判別器。IMR的各中斷屏蔽位是獨(dú)立的,屏蔽了優(yōu)先級(jí)高的中斷,不影響其它較低優(yōu)先級(jí)的中斷允許。7、優(yōu)先權(quán)電路(PR)

對(duì)IRR保持的各中斷請(qǐng)求(已屏蔽的除外)進(jìn)行優(yōu)先權(quán)判別,并在CPU的中斷響應(yīng)周期將其送IRS。在出現(xiàn)多重中斷時(shí),由PR判定是否允許所出現(xiàn)的中斷去打斷正在處理的中斷,讓優(yōu)先級(jí)更高的中斷優(yōu)先處理。8、控制邏輯向CPU輸出INTR中斷請(qǐng)求,接受CPU的中斷響應(yīng)信號(hào)INTA#。8.3中斷控制器8259A二、中斷控制器8259A內(nèi)部結(jié)構(gòu)

(序)

8259A對(duì)中斷請(qǐng)求的處理過程:當(dāng)某IRi有效時(shí),IRR相應(yīng)位置1若有效的IRi未被屏蔽,則向CPU發(fā)出中斷請(qǐng)求檢測到第1個(gè)INTA#信號(hào)后,置ISRi=1,IRRi=0檢測到第2個(gè)INTA#信號(hào)后,把ISRi=1中最高優(yōu)先級(jí)的中斷類型碼放到DB上若工作在AEOI方式,在第2個(gè)INTA#結(jié)束時(shí),使ISRi復(fù)位;否則由CPU發(fā)出EOI命令使ISRi復(fù)位8.3中斷控制器8259A

(1)嵌套方式:用于優(yōu)先級(jí)的控制,嵌套方式分為一般和特殊兩種嵌套方式:完全嵌套方式(一般嵌套方式):

這種方式符合一般優(yōu)先級(jí)的控制原則,用于單片8259或級(jí)連方式中從8259。特點(diǎn)是只有優(yōu)先級(jí)高的中斷可以中斷比它優(yōu)先級(jí)低的中斷。特殊全嵌套方式:

在這種方式下,主8259在對(duì)從8259進(jìn)行中斷處理時(shí)允許同一個(gè)從8259的不同中斷請(qǐng)求服務(wù)。用于級(jí)連方式中主8259。特點(diǎn)是允許中斷優(yōu)先級(jí)和它同級(jí)的中斷服務(wù)。

三、8259A的中斷管理方式(工作方式)(序)8.3中斷控制器8259A1.優(yōu)先級(jí)設(shè)置方式:在8259中優(yōu)先級(jí)的控制有兩種方式:固定優(yōu)先級(jí):

IR0——IR7優(yōu)先級(jí)依次由高到低固定排列。循環(huán)優(yōu)先級(jí):

在這種方式下,有自動(dòng)循環(huán)和特殊循環(huán)優(yōu)先級(jí)兩種:(2)優(yōu)先級(jí)的規(guī)定自動(dòng)循環(huán):剛被服務(wù)的中斷優(yōu)先級(jí)最低。

特殊循環(huán)(指定循環(huán)):被OCW2指令指定的優(yōu)先級(jí)最低。

三、8259A的中斷管理方式(工作方式)(序)8.3中斷控制器8259A1.優(yōu)先級(jí)設(shè)置方式(序)2.中斷結(jié)束處理方式當(dāng)某一IRi中斷被服務(wù)時(shí),ISR中的相應(yīng)位ISRi=1。當(dāng)服務(wù)結(jié)束后,則必須清零該ISRi位。使ISRi=0,采用什么方式對(duì)ISRi

進(jìn)行清除就是這里所說的中斷結(jié)束方式。8259A有兩種結(jié)束方式,非自動(dòng)和自動(dòng)結(jié)束方式。

三、8259A的中斷管理方式(工作方式)(序)8.3中斷控制器8259A自動(dòng)結(jié)束方式:該方式下不需要EOI命令,在第2個(gè)INTA#結(jié)束時(shí),由8259A使ISRi自動(dòng)復(fù)位;因此使用自動(dòng)結(jié)束方式有可能響應(yīng)更低級(jí)的中斷。

非自動(dòng)結(jié)束方式:兩種EOI命令一般結(jié)束命令(EOI)特殊EOI方式(SEOI),在該方式下可以對(duì)正在處理的中斷以外的中斷標(biāo)志進(jìn)行清除。

三、8259A的中斷管理方式(工作方式)(序)8.3中斷控制器8259A2.中斷結(jié)束處理方式(序)

8259A的命令字8259A的控制命令分為初始化命令字ICWICW1~I(xiàn)CW4向8259A寫入ICW的過程稱為初始化編程操作命令字OCW

OCW1~OCW3向8259A寫入OCW的過程稱為操作方式編程

四、8259A的編程方法

8.3中斷控制器8259A8259A內(nèi)部寄存器的尋址方法CS#RD#WR#A0D4D3讀寫操作010000寫OCW2寫OCW3寫ICW1寫ICW2,ICW3,ICW4,OCW1(順序?qū)懭?00101x1xx00101xx讀出IRR、ISR讀出IMR需要CS#、A0、RD#、WR#和D4、D3的配合內(nèi)部寄存器的訪問方法如下表:

四、8259A的編程方法

(序)8.3中斷控制器8259A8259的初始化流程如圖:寫ICW1寫ICW2級(jí)連?寫ICW3需ICW4?寫ICW4NNYY!

注意次序不可顛倒

四、8259A的編程方法

(序)8.3中斷控制器8259A初始化8259A必須從ICW1開始寫ICW1意味著重新初始化8259A寫入ICW1后,8259A的狀態(tài)如下:清除ISR和IMR(全0);將中斷優(yōu)先級(jí)設(shè)成初始狀態(tài):IR0最高,IR7最低;設(shè)定為一般屏蔽方式;采用非自動(dòng)中斷結(jié)束方式;狀態(tài)讀出邏輯預(yù)置為讀IRR。8259A的初始化過程

四、8259A的編程方法

(序)8.3中斷控制器8259ALTIM:觸發(fā)方式=1高電平觸發(fā)=0上升沿觸發(fā)

A0 D7 D6 D5 D4 D3 D2 D1 D0

0 x

x

x 1 LTIM xSNGLIC4

IC4:ICW4控制=1要寫ICW4=0不寫ICW4(默認(rèn)為全0)SNGL:級(jí)連控制=1單片=0級(jí)連8259A的初始化字

ICW1

四、8259A的編程方法

(序)8.3中斷控制器8259AT7~T3:中斷向量碼的高5位T2~T0:最低3位為中斷源的序號(hào)IRn000~111分別對(duì)應(yīng)IR0~I(xiàn)R7由8259A根據(jù)中斷源的序號(hào)自動(dòng)填入例如:若ICW2命令字為48H,則IR0的中斷向量碼為48H,IR7的中斷向量碼為4FH,等等。

A0 D7 D6 D5 D4 D3 D2 D1 D0

1 T7T6 T5 T4 T3

x

x

x8259A的初始化字ICW2(中斷向量碼)

四、8259A的編程方法

(序)8.3中斷控制器8259A8259A的初始化字ICW3(級(jí)連控制字)

主片的級(jí)聯(lián)控制字

Si=1對(duì)應(yīng)IRi線上連接了從片

A0 D7 D6 D5 D4 D3 D2 D1 D0

1 S7S6 S5 S4 S3

S2

S1

S0從片的級(jí)聯(lián)控制字

ID2~I(xiàn)D0標(biāo)識(shí)碼,說明本從片連接到主片的哪個(gè)IR引腳上。000~111分別對(duì)應(yīng)IR0~I(xiàn)R7。

A0 D7 D6 D5 D4 D3 D2 D1 D0

1 00 0 0 0

ID2 ID1 ID0

四、8259A的編程方法

(序)8.3中斷控制器8259AICW3——級(jí)連控制字(續(xù))ICW3必須與主從片的連接關(guān)系一致: 例如,主片的IR4與從片的INT線連接,則主片的ICW3=10H,從片的ICW3=04H。中斷響應(yīng)時(shí),主片通過級(jí)連線CAS2-CAS0送出被允許中斷的從片標(biāo)識(shí)碼,各從片用自己的ICW3與CAS2-CAS0比較,二者一致的從片才可發(fā)送中斷向量碼。

四、8259A的編程方法

(序)8.3中斷控制器8259A8259A的初始化字ICW4(中斷結(jié)束方式字):

SFNM:特殊全嵌套1特殊全嵌套方式0一般全嵌套方式AEOI:自動(dòng)EOI1自動(dòng)EOI方式0非自動(dòng)EOI方式A0 D7 D6 D5D4 D3 D2 D1 D0

1 00 0SFNM BUF M/S AEOI μPM

BUF:緩沖方式

M/S:主/從緩沖選擇BUFM/S11緩沖方式/主PIC10緩沖方式/從PIC0x非緩沖方式/正常

四、8259A的編程方法

(序)8.3中斷控制器8259ABUF:緩沖方式

M/S:主/從緩沖選擇BUFM/S11緩沖方式/主PIC10緩沖方式/從PIC0x非緩沖方式/正常μPM=18086/8088=08080/8085

四、8259A的編程方法

(序)8.3中斷控制器8259A例7-17:IBMPC/XT系統(tǒng)中,ROMBIOS中對(duì)8259A初始化程序?yàn)镸OVAL,13H

OUT20H,AL

MOVAL,08HOUT21H,AL

MOVAL,09HOUT21H,AL

8259A的操作命令字OCW

OCW用于設(shè)置8259的工作狀態(tài)在初始化后寫入OCW的寫入順序可任意寫入地址要求:OCW1必須寫入奇地址端口(A0=1)OCW2,OCW3必須寫入偶地址端口(A0=0)

四、8259A的編程方法

(序)8.3中斷控制器8259A操作命令字OCW1(中斷屏蔽字):

Mi=1時(shí)中斷請(qǐng)求線IRi被屏蔽(不允許中斷)Mi=0時(shí)允許該IRi中斷OCW1將被寫入IMR寄存器。A0=1時(shí)讀OCW1可讀出設(shè)置的IMR內(nèi)容。A0 D7 D6 D5 D4 D3 D2 D1 D0

1 M7M6 M5 M4 M3

M2

M1

M0

四、8259A的編程方法

(序)8.3中斷控制器8259A操作命令字OCW2(中斷結(jié)束和優(yōu)先級(jí)循環(huán)):

RSLEOI001一般EOI命令(復(fù)位ISR)011特殊EOI命令,(按L2-L0指定復(fù)位ISR)101一般EOI命令,優(yōu)先級(jí)自動(dòng)循環(huán)100自動(dòng)EOI,設(shè)置優(yōu)先級(jí)自動(dòng)循環(huán)000自動(dòng)EOI,取消優(yōu)先級(jí)自動(dòng)循環(huán)

111特殊SEOI命令,按L2-L0指定IRi優(yōu)先級(jí)最低110不執(zhí)行EOI命令,按L2-L0指定IRi優(yōu)先級(jí)最低010無操作A0 D7 D6 D5 D4 D3 D2 D1 D0

0 RSL EOI 0 0

L2

L1

L0中斷結(jié)束命令自動(dòng)循環(huán)優(yōu)先級(jí)特殊循環(huán)優(yōu)先級(jí)

四、8259A的編程方法

(序)8.3中斷控制器8259A操作命令字OCW3(屏蔽方式/查詢方式控制字):

ESMM:允許使能特殊屏蔽方式SMM:特殊屏蔽方式ESMMSMM11特殊屏蔽方式置位10特殊屏蔽方式復(fù)位0x非特殊屏蔽方式P(Polling):=1查詢方式

=0非查詢方式A0 D7 D6 D5 D4 D3 D2 D1 D0

0 0ESMMSMM 0 1 P RR RISRR:讀寄存器RIS:ISR/IRR選擇RRRIS11讀ISR10讀IRR0x無效

四、8259A的編程方法

(序)8.3中斷控制器8259A

8259A可以工作在查詢方式:CPU先寫一個(gè)D2=1的OCW3,再對(duì)同一地址讀入,即可得到如下狀態(tài)字節(jié):

IxxxxR2R1R0

I=1表示有中斷請(qǐng)求,中斷請(qǐng)求號(hào)為R2-R0

此查詢步驟可反復(fù)執(zhí)行,以響應(yīng)多個(gè)同時(shí)發(fā)生的中斷。讀IRR/ISR:寫入此命令后,隨后再對(duì)同一地址讀,即可得到IRR或ISR的內(nèi)容。操作命令字OCW3(屏蔽方式和讀出控制字):(序)

四、8259A的編程方法

(序)8.3中斷控制器8259A8.3中斷控制器8259A

五、8259A的級(jí)聯(lián)五、8259的中斷級(jí)聯(lián)CSA0D7-D0INTAINTCAS0CAS1CAS2SP/ENIR7IR6---IR0從82591#CSA0D7-D0INTAINTCAS0CAS1CAS2SP/ENIR7IR6---IR0從82592#CSA0D7-D0INTAINTCAS0CAS1CAS2SP/ENIR7IR6---IR0主8259GNDGNDVcc地址總線(16)控制總線(8)數(shù)據(jù)總線(8)RDWRCSA0D7--D0INTACAS0CAS1CAS2IR7IR6IR5IR4IR3IR2IR1IR0INTSP/EN從8259RDWRCSA0D7--D0INTACAS0CAS1CAS2SP/ENIR7IR6IR5IR4IR3IR2IR1IR0主8259INT外部中斷請(qǐng)求外部中斷請(qǐng)求例:某中斷級(jí)聯(lián)系統(tǒng),從片的INT端接主片的IR3,主片從IR1、IR3引入兩個(gè)中斷請(qǐng)求,中斷類型號(hào)為31H、35H。中斷服務(wù)程序的段基址為1000H,偏移量分別為2000H、3000H。從8259的IR4、IR5引入兩個(gè)中斷請(qǐng)求,中斷類型號(hào)為44H、45H。中斷服務(wù)程序的段基址為2000H,偏移量分別為3600H、4500H。0020001000300010004500200036002000116001140011200110000D6000D4000C4000C6IPCS31IPCS35IPCS44IPCS45

(1)中斷入口地址寫入中斷向量表MOVAX,1000H;送段地址MOVDS,AXMOVDX,2000H;送偏移地址MOVAL,31HMOVAH,25HINT21HMOVDX,3000HMOVAH,35HINT21HMOVAX,2000HMOVDS,AXMOVDX,3600HMOVAL,44HMOVAH,25HINT21HMOVDX,3000HMOVAH,35HINT21H(2)主片8259A初始化編程(端口地址FFC8H,F(xiàn)FC9H)MOVAL,11H;ICW1,級(jí)聯(lián),邊沿觸發(fā)MOVDX,0FFC8H;OUTDX,ALMOVAL,30H;ICW2,確定中斷類型號(hào)MOVDX,0FFC9H;OUTDX,ALMOVAL,08H;ICW3,IR3端接從INT端OUTDX,ALMOVAL,11H;ICW4,特殊嵌套,非緩沖方式OUTDX,ALMOVAL,0D5H;OCW1,允許IR1,IR3,IR5中斷OUTDX,ALMOVAL,20H;OCW2,普通EOI結(jié)束方式MOVDX,0FFC8H;OUTDX,AL(3)從片8259A初始化編程(端口地址FFC8H,F(xiàn)FC9H)MOVAL,11H;ICW1,級(jí)聯(lián),邊沿觸發(fā)MOVDX,0FFCAH;OUTDX,ALMOVAL,40H;ICW2,確定中斷類型號(hào)MOVDX,0FFCBH;OUTDX,ALMOVAL,03H;ICW3,從片接主片的IR3端OUTDX,ALMOVAL,01H;ICW4,完全嵌套,非緩沖方式OUT

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論