第7章中斷控制器(改版)_第1頁
第7章中斷控制器(改版)_第2頁
第7章中斷控制器(改版)_第3頁
第7章中斷控制器(改版)_第4頁
第7章中斷控制器(改版)_第5頁
已閱讀5頁,還剩47頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第7章中斷控制器2023/2/627.1中斷基本概念

一、中斷和中斷源

2023/2/637.1中斷基本概念中斷

CPU接到請求,暫停正在執(zhí)行的程序而轉(zhuǎn)向請求的處理程序,處理結(jié)束后又回到被中止的程序繼續(xù)執(zhí)行,這一過程稱中斷;中斷源的分類;

內(nèi)部中斷:由處理器內(nèi)部產(chǎn)生的中斷;外部中斷:外部設(shè)備在中斷申請引腳上產(chǎn)生的中斷;可屏蔽中斷與不可屏蔽中斷

可屏蔽中斷:能被處理器屏蔽掉而不被響應(yīng)的中斷(INTR)。不可屏蔽中斷:不能被處理器屏蔽掉的中斷(NMI)。

二、中斷的處理過程

2023/2/647.1中斷基本概念中斷請求

在INTR上外設(shè)給出高電平,1)持續(xù)到被CPU響應(yīng);2)CPU響應(yīng)后及時撤消。中斷承認(中斷響應(yīng)的條件)

滿足下列條件進入中斷響應(yīng)周期:

a,INTR有中斷請求;

b,IF=1開中斷;

c,無RESET、HOLD和NMI或更高級的中斷;

d,一條指令執(zhí)行結(jié)束。

中斷響應(yīng)2023/2/657.1中斷基本概念(1)關(guān)中斷:CPU硬件自動清IF(關(guān)中斷,禁止其它中斷)。(2)斷點保護:CPU硬件自動將PSW、CS、IP依次壓棧,以便中斷結(jié)束能夠返回斷點。(3)中斷源識別:

1)軟件查詢(軟件做)2)中斷向量表(硬件自動做)

軟件查詢方法:CPU收到INTR→讀入D0~D7→測試哪一位→確

定中斷源→對其中斷服務(wù)。2023/2/667.1中斷基本概念中斷響應(yīng)

(1)保護現(xiàn)場:斷點保護未保護的&主程序用的&中斷服務(wù)也用的寄存器→堆棧

(2)開中斷(指令STI):采用軟件查詢方法的中斷源識別。

(3)中斷服務(wù):對中斷事件的處理。

(4)關(guān)中斷(指令CTI)

(5)現(xiàn)場恢復(fù):保護現(xiàn)場的逆過程,堆?!拇嫫?/p>

(6)開中斷(指令STI):允許新的中斷。

(7)中斷返回(指令I(lǐng)RET):從堆棧中依次彈出IP、CS、PSW,返回原斷點處,斷點保護逆過程。2023/2/677.1中斷基本概念多個中斷源同時請求中斷,先響應(yīng)中斷優(yōu)先級高的中斷優(yōu)先級根據(jù)各中斷源的重要性確定其響應(yīng)的優(yōu)先次序。中斷優(yōu)先級控制原則:(1)多個同時請求,先響應(yīng)高優(yōu)先級,再響應(yīng)低優(yōu)先級;

(2)當CPU執(zhí)行某中斷服務(wù)程序時,出現(xiàn)新的高優(yōu)先級請求中斷,則:暫停低→處理高,高服務(wù)結(jié)束→返回低,繼續(xù)低服務(wù)。

三、中斷優(yōu)先級及中斷嵌套

2023/2/687.28086/8088的中斷系統(tǒng)

一、中斷源

2023/2/697.28086/8088的中斷系統(tǒng)二、中斷優(yōu)先級除法錯、INTn、INTO 優(yōu)先級最高NMI 次之INTR 較低單步 最低

三、中斷源識別

中斷類型碼每一中斷都有一個表示中斷源編號的8位二進制數(shù)稱中斷類型碼(號),從0~255,共256個。2023/2/6107.28086/8088的中斷系統(tǒng)中斷向量每一中斷類型碼對應(yīng)一個中斷向量,該中斷向量指明了該類型碼所對應(yīng)的中斷服務(wù)程序的入口地址中斷向量表

8086/8088系統(tǒng)將內(nèi)存前1024個單元作為中斷向量表,存放256個中斷向量,每一中斷向量占4個單元,前二字節(jié)是中斷服務(wù)程序入口地址的偏移地址,后二字節(jié)是段地址。中斷向量表地址:4*中斷類型碼n。中斷向量表的中斷源識別方法(1)CPU收到中斷請求→獲取中斷類型碼→查中斷向量表→得到該中斷源的中斷服務(wù)子程序入口地址→轉(zhuǎn)向服務(wù)子程序進行中斷服務(wù)2023/2/6117.28086/8088的中斷系統(tǒng)

(2)查表方法:中斷類型碼n*4(左移2位)得到表地址→從表地址所指單元連續(xù)取4個字節(jié)數(shù)據(jù)得到IP、CS→該CS:IP即為該中斷源的中斷服務(wù)子程序入口地址2023/2/6127.28086/8088的中斷系統(tǒng)【例7.2】設(shè)用戶自定義中斷的類型號為24H,已編好的中斷服務(wù)子程序為ISUB,試完成中斷向量表初始化。解:中斷向量表存放首地址為24H×4,中斷服務(wù)子程序段地址為SEGISUB,偏移地址為OFFSETISUB。所以中斷向量表初始化程序段如下。

MOV AX,00HMOV DS,AX ;向量表段地址置0000HMOV BX,24HSHL BXSHL BX ;向量表存放首址MOV AX,OFFSETISUB ;中斷服務(wù)程序入口偏移MOV [BX],AX ;偏移地址存入向量表MOVAX,SEGISUB ;中斷服務(wù)子程序MOV[BX+2],AX ;段地址存入向量表2023/2/6137.28086/8088的中斷系統(tǒng)

四、中斷響應(yīng)過程不可屏蔽中斷NMI

(1)上升沿提出中斷請求。(2)不受IF=0的影響。(3)不要中斷響應(yīng)總線周期,自動進入中斷類型2。(4)其它同INTR。內(nèi)部中斷(1)中斷類型號或是指令碼給出,或由硬件決定,都不要中斷響應(yīng)總線周期。(2)不受IF控制,但單步中斷受TF控制。(3)其它同INTR,但要考慮優(yōu)先級2023/2/6147.28086/8088的中斷系統(tǒng)

五、中斷與中斷返回指令中斷指令

INTO測試OF,若OF=1執(zhí)行中斷,否則不操作。

INTn執(zhí)行中斷類型號為n的中斷,n=00H~FFH。

(1)斷點保護:SP-2→SP,PSW→[SP+1]:[SP];清PSW的

IF與TF;SP-2→SP,CS→[SP+1]:[SP];SP-2→SP,IP→[SP+1]:[SP]。

(2)中斷源識別與跳轉(zhuǎn):[n*4+1]:[n*4]→IP;[n*4+3]:[n*4+2]→CS;程序?qū)⒆詣犹D(zhuǎn)到CS:IP處執(zhí)行該中斷服務(wù)子程序中斷返回指令:IRET

執(zhí)行中斷返回時,CPU自動做恢復(fù)斷點:[SP+1]:[SP]→IP,SP+2→SP;[SP+1]:[SP]→CS,SP+2→SP;[SP+1]:[SP]→PSW,SP+2→SP2023/2/6157.3可編程中斷控制器8259A

一、外部引線和內(nèi)部結(jié)構(gòu)

引腳:

D0~D7:雙向數(shù)據(jù)線

/WR、/RD:寫讀控制信號,/CS片選

A0:地址線,選擇內(nèi)部寄存器

INT:中斷請求輸出

/INTA:中斷響應(yīng)輸入線

IR0~IR7:是外接中斷源輸入線。

CAS0~CAS2:級聯(lián)時用。

SP//EN:作輸入是/SP,控制8259作主片或從片,1主0從。用作輸出是/EN,控制三態(tài)門,大系統(tǒng)中用。2023/2/6167.3可編程中斷控制器8259A

結(jié)構(gòu)框圖

中斷請求寄存器IRR:存放IR0~IR7中斷請求服務(wù)寄存器ISR:存放IR0~IR7中正在服務(wù)的源中斷屏蔽寄存器IMR(interruptmask) 4個8位初始化命令字ICW3個8位操作命令字OCW2023/2/6177.3可編程中斷控制器8259A

二、中斷處理過程

(1)中斷外設(shè)在IR0~IR7上產(chǎn)生n條中斷請求→8259,8259將相應(yīng)的IRR位置1;(2)IRR中斷請求+設(shè)定的IMR屏蔽→優(yōu)先級分析器,最高優(yōu)先級的請求送到INT→CPU;(3)CPU收到INT響應(yīng):發(fā)送連續(xù)二個總線周期的/INTA;8259在第一個/INTA,該中斷源對應(yīng)的IRR位復(fù)位,ISR位置位,從而禁止較低優(yōu)先級的中斷。8259在第二個/INTA:送出8位的中斷類型碼→D0~D7。(4)8259中斷結(jié)束自動結(jié)束方式:第二個/INTA結(jié)束時ISR復(fù)位相應(yīng)位;非自動方式:收到EOI命令才復(fù)位,以開放低級中斷申請(5)CPU讀取中斷類型碼→查中斷向量表→轉(zhuǎn)服務(wù)子程序2023/2/6187.3可編程中斷控制器8259A

三、中斷優(yōu)先級管理方式

優(yōu)先級管理

(1)固定優(yōu)先級(完全嵌套排序方式):IR0>IR1>…>IR7(2)自動循環(huán)優(yōu)先級(等優(yōu)先級方式):優(yōu)先級循環(huán),剛服務(wù)過的最低,下一個變?yōu)樽罡?。?級剛服務(wù)過,6級變?yōu)樽罡撸?級次之。

(3)特殊循環(huán)優(yōu)先級:優(yōu)先級循環(huán),通過命令字指定最低優(yōu)先級。

屏蔽方式

(1)一般屏蔽方式:一個中斷請求被響應(yīng)→8259禁止所有同級、低級的請求

(2)特殊屏蔽方式:解除這種禁止,允許同級、低級的請求,即IRi被響應(yīng)→ISR、IMR設(shè)置的位對應(yīng)的IR禁止請求,其他所有級別的IR允許請求2023/2/6197.3可編程中斷控制器8259A

中斷結(jié)束方式

(1)非自動EOI:軟件發(fā)EOI命令字結(jié)束普通EOI:清除ISR中已置位的優(yōu)先級最高的位,適用于固定優(yōu)先級、自動循環(huán)優(yōu)先級;特殊EOI:清除命令字指定的ISR位,適用于所有優(yōu)先級方式,特別是特殊循環(huán)優(yōu)先級

(2)自動EOI:硬件自動EOICPU響應(yīng)中斷請求后,向8259發(fā)連續(xù)2個/INTA周期,在第二個

/INTA結(jié)束時8259自動執(zhí)行普通EOI的工作(復(fù)位ISRi).

中斷觸發(fā)方式

(1)電平觸發(fā)方式(2)邊沿觸發(fā)方式

2023/2/6207.3可編程中斷控制器8259A四、初始化命令字ICW

初始化命令字ICW1

2023/2/6217.3可編程中斷控制器8259A【例7.3】某8086系統(tǒng)中,使用單片8259A,中斷請求信號為高電平觸發(fā),需要設(shè)置ICW4,8259A端口地址為20H、21H,寫出初始化命令字ICW1以及設(shè)置ICW1的

命令。解:高電平觸發(fā)、單片8259A以及需要設(shè)置ICW4,初始化命令字為00011011B=1BH。寫ICW1的命令如下。

MOVAL,1BHOUT20H,AL ;寫ICW1用偶地址2023/2/6>>微機原理<<227.3可編程中斷控制器8259A

初始化命令字ICW2【例7.4】某PC機中有8個可屏蔽中斷(IR0~IR7),其中IR0的中斷類型號為18H,8259A端口地址為20H、21H,請問ICW2是怎樣設(shè)置的?用指令設(shè)置ICW2。解:由于IR0的中斷類型號是18H,所以ICW2的內(nèi)容是00011000B=18H。寫ICW2的命令如下。

MOVAL,18HOUT21H,AL ;寫ICW2用奇地址2023/2/6237.3可編程中斷控制器8259A

初始化命令字ICW32023/2/6247.3可編程中斷控制器8259A

初始化命令字ICW4

2023/2/6257.3可編程中斷控制器8259A

初始化命令字的設(shè)置過程2023/2/6267.3可編程中斷控制器8259A【例7.5】IBMPC機的ROMBIOS關(guān)于8259A的初始化程序段如下。

INTA00 EQU 20H ;8259A偶地址INTA01 EQU 21H ;8259A奇地址MOVAL,13H ;單片8259A,邊沿觸發(fā),需要ICW4OUTINTA00,ALMOVAL,08H ;中斷類型號8HOUTINTA01,ALMOVAL,09H ;8086/8088,緩沖,從片8259A,非自動結(jié)束,正常全嵌套OUT INTA01,AL2023/2/6277.3可編程中斷控制器8259A【例

7.6】某微機系統(tǒng)中有8259A,滿足下列條件:①工作在8086系統(tǒng),單片8259A,中斷請求信號為電平觸發(fā)。②中斷類型碼為40H~47H。③中斷優(yōu)先級采用普通全嵌套方式,中斷結(jié)束采用自動EOI方式,系統(tǒng)中未使用數(shù)據(jù)緩沖器。系統(tǒng)分配給8259A的端口地址為20H和21H,試對該8259A進行初始化。解:初始化程序如下所示。

MOVAL,00011011B ;寫ICW1OUT20H,ALMOVAL,01000000B ;寫ICW2OUT21H,ALMOVAL,00000011B ;寫ICW4OUT21H,AL2023/2/6287.3可編程中斷控制器8259A五、操作命令字OCW

操作命令字OCW1

2023/2/6297.3可編程中斷控制器8259A五、操作命令字OCW

【例

7.7】某微機系統(tǒng)中有8259A,如果要將IR1、IR6兩個引腳上的中斷請求屏蔽,請問應(yīng)如何設(shè)置OCW1?并用命令寫入OCW1。假設(shè)地址為20H、21H。解:由于IR1和IR6上的中斷請求被屏蔽,所以O(shè)CW1的第0位和第6位應(yīng)該置“1”。OCW1為01000010B。寫入程序如下所示。MOVAL,01000010BOUT21H,AL2023/2/6307.3可編程中斷控制器8259A

操作命令字OCW22023/2/6317.3可編程中斷控制器8259A【例7.8】非自動EOI下用OCW2發(fā)布結(jié)束命令撤銷ISR中斷標志結(jié)束中斷。假設(shè)地址為20H,21H。解:程序如下所示。

MOVAL,20H ;20H是命令字,EOI=1OUT20H,AL ;A0=0,20H是OCW2地址2023/2/6327.3可編程中斷控制器8259A【例7.9】如果8086系統(tǒng)中的8259A的優(yōu)先級順序為IR4、IR5、IR6、IR7、IR0、IR1、IR2、IR3,設(shè)8259A的偶地址為20H,試用程序?qū)崿F(xiàn)之。解:要實現(xiàn)題目中的優(yōu)先級,應(yīng)先確定OCW2,然后寫入偶地址。OCW2=11000011B。

程序如下所示。

MOVAL,11000011BOUT20H,AL2023/2/6337.3可編程中斷控制器8259A

操作命令字OCW32023/2/6347.3可編程中斷控制器8259A【例7.10】設(shè)8259A的IR3輸入引腳上有中斷請求,但此時8086CPU的IF=0,8086CPU如何才能知道8259A的IR3上有中斷請求?設(shè)偶地址為20H。解:可用中斷查詢命令來解決這個問題,先發(fā)查詢命令OCW3,然后讀偶地址,就可以知道IR3是否有中斷申請。OCW3應(yīng)該取00001100B。程序如下所示。

MOVAL,00001100B ;P=1,查詢命令OUT 20H,AL ;輸出查詢命令I(lǐng)NAL,20H ;讀8259A的查詢字

讀到的信息如下:

0*******

表示IR3上沒有中斷請求。1****011表示IR3上有中斷請求。2023/2/6357.3可編程中斷控制器8259A【例7.11】編寫一段程序,將8086系統(tǒng)中8259A的IRR、ISR、IMR3個寄存器的內(nèi)容讀到后,寫入存儲器從0090H開始的數(shù)組中,設(shè)8259A的端口地址為20H和21H。MOVAL,00001010B ;指出讀IRR,OCW3=00001010BOUT 20H,ALINAL,20H ;讀IRR的內(nèi)容MOV[0090H],AL ;將IRR的內(nèi)容寫入數(shù)組中MOVAL,0BHOUT 20H,AL ;指出讀ISR,OCW3=00001011BINAL,20HMOV[0091H],AL ;將ISR的內(nèi)容寫入數(shù)組中INAL,21H ;直接從奇地址端口讀取IMR的內(nèi)容MOV[0092H],AL ;將IMR的內(nèi)容寫入數(shù)組中2023/2/6367.3可編程中斷控制器8259A六8259寄存器的訪問控制:8259的9個寄存器只占2個地址(只有A0地址線),如何區(qū)分?2023/2/6377.3可編程中斷控制器8259A七中斷系統(tǒng)的應(yīng)用方法(1) 分配合適的中斷級;(2) 設(shè)計中斷請求邏輯:(3) 對8259A初始化(4) 編寫中斷服務(wù)子程序(5) 中斷向量表初始化2023/2/6387.48259的應(yīng)用一、8259與系統(tǒng)總線的連接8259A的偶地址:A1=0,地址為0FF00H、0FF01H、0FF04H、0FF05H中的任意一個。8259A的奇地址:A1=1,地址為0FF02H、0FF03H、0FF06H、0FF07H中的任意一個2023/2/6397.48259的應(yīng)用二、初始化及操作控制SET59A: MOV DX,0FF00H ;A0=0 MOV AL,00010011B;ICW1:D3=LTIM=0 沿觸發(fā),D1=1單片,D0=1要ICW4 OUT DX,AL MOV DX,0FF02H ;A0=1 MOV AL,00011000B;ICW2:中斷類型碼

IR0~IR7類型碼18H~1FH OUT DX,AL MOV AL,00000011B;ICW4:8086/8088,

自動EOI,非緩沖,正常全嵌套

OUT DX,AL2023/2/6407.48259的應(yīng)用在某些情況下,如果不希望看到某些中斷發(fā)生,我們可以通過操作命令字OCW1的設(shè)置來屏蔽那些中斷。同時也可以檢查對某些中斷的屏蔽是否成功。程序如下。

MOVDX,0FF02HMOVAL,0 ;OCW1為00H,沒有屏蔽中斷OUTDX,ALINAL,DX ;讀IMRORAL,AL ;檢查是否屏蔽?JNZIMERR ;不為0出錯MOVAL,0FFH ;OCW1為FFH,全部屏蔽OUTDX,ALINAL,DX ;讀IMRADDAL,1 ;檢查是否有屏蔽?JNZIMERR ;不為全1出錯2023/2/6417.48259的應(yīng)用8259A連接到CPU上,通過數(shù)據(jù)總線可以讀取ISR、IRR的內(nèi)容,命令如下。

MOVDX,0FF00H ;OCW3用偶地址MOVAL,00001011B;OCW3的P=0,設(shè)置讀ISROUTDX,ALINAL,DX ;讀出ISRMOVAL,00001010B;OCW3的P=0,設(shè)置讀IRROUTDX,ALINAL,DX ;讀出IRR

2023/2/6427.5小型案例實訓案例1-----8259實現(xiàn)電子鐘利用20ms一次的定時中斷服務(wù)程序,建立時、分、秒電子鐘(1)編寫20ms中斷服務(wù)程序每次中斷(20ms)→n1=n1+1→n1<50→中斷返回;

n1=50→second=second+1, n1=0→second<60→中斷返回;second=60→minute=minute+1,second=0→minute<60→中斷返回;

minute=60→hour=hour+1,minute=0→hour<24→中斷返回;

hour=24→hour=02023/2/6437.5小型案例分析─電子鐘中斷服務(wù)子程序:CLOCK PROC FARPUSH DS PUSH AX ;現(xiàn)場保護

PUSH SI MOV AX,SEGTIMER ;中斷服務(wù)

MOV DS,AX MOV SI,OFFSETTIMER MOV AL,[SI] INC AL ;n1+1 MOV [SI],AL 保存新n1 CMP AL,50 ;1秒到? JNZ TRNED MOV AL,0 ;1秒到則n1=0 MOV [SI],AL2023/2/6447.5小型案例分析─電子鐘

MOV AL,[SI+1] ADD AL,1 ;second+1DAA MOV [SI+1],AL ;保存新second CMP AL,60H ;一分鐘到?

JNZ TRNED MOV AL,0 MOV [SI+1],AL MOV AL,[SI+2] ADD AL,1 DAA MOV [SI+2],AL CMP AL,60H ;一小時到?

JNZ TRNED2023/2/6457.5小型案例分析─電子鐘 MOV AL,0 MOV [SI+2],AL MOV AL,[SI+3]ADD AL,1 DAA MOV [SI+3],AL CMP AL,24H ;24小時到?

JNZ TRNED MOV AL,0 MOV [SI+3],ALTRNED: POP SI ;現(xiàn)場恢復(fù)

POP AXPOP DS STI ;開中斷

IRET ;中斷返回CLOCK ENDP2023/2/6467.5小型案例分析─電子鐘(2)確定中斷類型碼,初始化8259IR0中斷類型碼為18H,初始化程序同前SET59A。

SET8259A:MOVDX,0FF00H ;偶地址MOVAL,00010011B ;ICW1,D3的LTIM=0邊沿觸發(fā),D1=1 ;單片,D0=1要ICW4OUTDX,ALMOVDX,0FF01H ;奇地址MOVAL,00011000B ;ICW2:中斷源IR0~IR7類型碼18H~1FHOUTDX,ALMOVAL,00000011B ;ICW4:8086/8088,自動EOI,非緩沖,正常 ;全嵌套OUTDX,AL2023/2/6477.5小型案例分析─電子鐘(3)初始化中斷向量表:INITB:MOV AX,0MOV DS,AXMOV SI,18HSHL SI,1 ;中斷類型碼*4SHL SI,1MOV DX,OFFSETCLOCKMOV [SI],DXMOV DX,SEGCLOCKMOV [SI+2],DX

2023/2/6487.5小型案例分析─電子鐘(4)完整的程序:DATA SEGMENTTIMER DB4DUP(0)DATA ENDSSTACKSEGMENTPARASTACK'STACK' DB100DUP(0)STACKENDSCODE SEGMENT ASSUMEDS:CODE,DS:DATA,SS:STACKSTART:MOVAX,0 ;主程序初始化中斷向量表程序段 MOVDS,AX ;初始化中斷向量表程序段 MOVSI,18H SHLSI,1 SHLSI,12023/2/6497.5小型案例分析─電子鐘

MOVDX,OFFSETCLOCK MOV[SI],DX MOVDX,SEGCLOCK MOV[SI+2],DX MOVDX,0FF00H ;初始化8259A程序段 MOVAL,00010011B OUTDX,AL MOVDX,0FF0

溫馨提示

  • 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

提交評論