《8259中斷控制 實驗報告材料》由會員分享,可在線閱讀,更多相關《8259中斷控制 實驗報告材料(8頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、word
深 圳 大 學 實 驗 報 告
課程名稱: 微機原理與接口技術
實驗項目名稱: 8259中斷控制實驗
學院: 信息工程學院
專業(yè): 電子信息工程
指導教師:
報告人:學號:201019 班級: 電子
2、
實驗時間: 2012.5.18
實驗報告提交時間: 2012.6.9
教務處制
實驗目的與要求:
1. 掌握8259中斷控制器的工作原理
2. 掌握8259的應用編程方法
3. 掌握8259的級聯(lián)方式的使用方法
實驗環(huán)境:
PC機一臺,TD-PITE實驗裝置或TD-PITC實驗裝置一套,過濾器一臺
實驗內(nèi)容與步驟:
1. 中斷控制器8259簡介
在Intel 386EX芯片中集成有中斷控制單元〔ICU〕,該單元包含有兩個級聯(lián)中斷控制器,一個為
3、主控制器,一個為從控制器。該中斷控制單元就功能而言與工業(yè)上標準的82C59A是一致的,操作方法也一樣。從片的INT連接到主片的IR2信號上構成兩片8259的級聯(lián)。
在TD-PITE實驗系統(tǒng)中,將主控制器的IR6、IR7以與從控制器的IR1開放出來供實驗使用,主片8259的IR4供系統(tǒng)串口使用。8259的內(nèi)部連接與外部管腳引出如圖4.5:
圖4.5 8259內(nèi)部連續(xù)與外部管腳引出圖
在對8259進展編程時,首先必須進展初始化。一般先使用CLI指令將所有的可屏蔽中斷禁止,然后寫入初始化命令字。8259有一個狀態(tài)機控制對存放器的訪問,不正確的初始化順序會造成異常初始化。在初始
4、化主片8259時,寫入初始化命令字的順序是:ICW1、ICW2、ICW3、然后是ICW4,初始化從片8259的順序與初始化主片8259的順序是一樣的。
系統(tǒng)啟動時,主片8259已被初始化,且4號中斷源〔IR4〕提供應與PC聯(lián)機的串口通信使用,其它中斷源被屏蔽。中斷矢量地址與中斷號之間的關系如下表所示:
主片中斷序號
0
1
2
3
4
5
6
7
功能調(diào)用
08H
09H
0AH
0BH
0CH
0DH
0EH
0FH
矢量地址
20H~23H
24H~27H
28H~2BH
2CH~2FH
30H~33H
34H~37H
38H~3B
5、H
3CH~3FH
說明
未開放
未開放
未開放
未開放
串口
未開放
可用
可用
從片中斷序號
0
1
2
3
4
5
6
7
功能調(diào)用
30H
31H
32H
33H
34H
35H
36H
37H
矢量地址
C0H~C3H
C4H~C7H
C8H~CBH
CCH~CFH
D0H~D3H
D4H~D7H
D8H~DBH
DCH~DFH
說明
未開放
可用
未開放
未開放
未開放
未開放
未開放
未開放
2. 8259單中斷實驗
實驗接線圖如圖4.15所示,單次脈沖輸出與主片8259的IR7
6、相連,每按動一次單次脈沖,產(chǎn)生一次外部中斷,在顯示屏上輸出一個字符“7〞。
圖4.15 8259單中斷實驗接線圖
實驗步驟
〔1〕按圖4.15連接實驗線路。
〔2〕編寫實驗程序,經(jīng)編譯、無誤后裝入系統(tǒng)。
〔3〕運行程序,重復按單次脈沖開關KK1+,顯示屏會顯示字符“7〞,說明響應了中斷。實驗程序清單〔INT1.ASM〕
SSTACKSEGMENT STACK
DW 32 DUP(?)
SSTACKENDS
CODE SEGMENT
ASSUME C
7、S:CODE
START: PUSH DS
MOV AX, 0000H
MOV DS, AX
MOV AX, OFFSET MIR7;取中斷入口地址
MOV SI, 003CH;中斷矢量地址放在0000:003c-0000:003f
MOV [SI], AX;填IRQ7的偏移矢量
MOV AX, CS;段地址
MOV SI, 003EH
MOV [SI], AX;填IRQ7的段地址矢量
CLI
POP DS
;初始化主片8259
MOV AL, 11H
OUT 20H, AL;A0=0,ICW1為00010001B,邊沿觸發(fā),需要ICW4
MOV AL, 08H
8、
OUT 21H, AL;A0=1,ICW2為00001000B,保持低三位為0
MOV AL, 04H
OUT 21H, AL;A0=1,ICW1中SNGL=1,ICW3中D2=1,表示接端口接從屬8259
MOV AL, 01H
OUT 21H, AL;ICW4,一般嵌套,8086模式,非自動EOI方式,非緩沖方式
MOV AL, 6FH;A0=1,尋址OCW1,01101111B,M=0時去除屏蔽狀態(tài)
OUT 21H, AL
STI
AA1:NOP ;無限循環(huán),等待中斷發(fā)生
JMP AA1
M
9、IR7:STI
CALL DELAY
MOV AX, 0137H
INT 10H;顯示字符7
MOV AX, 0120H
INT 10H
MOV AL, 20H
OUT 20H, AL;中斷完畢命令
IRET
DELAY:PUSH CX ;延時子程序
MOV CX, 0F00H
AA0:PUSH AX
POP AX
LOOP AA0
POP CX
RET
CODEENDS
END START
實驗結果如下列圖,能夠正確執(zhí)行設定功能.
實驗程序分析:一般中斷實
10、驗,為了保護現(xiàn)場,程序開頭都會引用堆棧把把現(xiàn)在的程序放入堆棧中進展保護,所以, PUSH DS就起到這樣的作用.在中斷程序完畢后,為了能回到之前執(zhí)行的程序入口,還得用POP DS 指令返回現(xiàn)場.
這個實驗是關于8259的單中斷,不牽涉級聯(lián)問題,所以,8259的初始化只需要看主片就可以了.初始化的時候,一般先使用CLI指令將所有的可屏蔽中斷禁止,然后寫入初始化字.8259有四個初始化控制字ICW1,ICW2,ICW3,ICW4,由于8259只有一根地址線,因此對各個控制字的操作是按照一定的順序并結合某些數(shù)據(jù)位來進展尋址設置的.當初始化完成后,對8259的操作命令字的尋址是通過8259的地址線A
11、0和某些數(shù)據(jù)位結合來進展的. 其初始化控制字和控制命令遼的賦值理由我已經(jīng)在注釋中給出.
另外,在初始化程序中我們用了STI這條指令打開中斷,那么進入MIR7中斷程序中,我們?yōu)槭裁从謭?zhí)行STI這條指令呢,會不會重復了?經(jīng)過實驗,我們知道這條指令并不是沒用的,如果缺少后面這條STI指令,實驗中我們會發(fā)現(xiàn),當按一次KK1開關的時候,屏幕會顯示一個字符7,但是,再按KK1的時候,就沒有反響了,起初并不知道怎么解釋這個現(xiàn)象,后來才知道8086CPU執(zhí)行完一次中斷后,會自動將相應的中斷位屏蔽,所以,如果我們想按一次KK1就發(fā)生一次中斷,就得重新在程序中打開中斷,也就是STI.
另外,RET
12、指令是短信返回指令,而IRET指令如此是中斷短程返回指令,一般中斷程序也大多是短程的.
那么,中斷發(fā)生的時候,CPU又是怎樣進入中斷子程序的呢?這就需要我們正確地設置中斷向量表的了.實驗板上主中斷序號7可用,也就是我們得利用3CH-3FH這矢量地址.所以在程序開始的時候,就采用MOV AX, OFFSET MIR7,MOV SI, 003CH,MOV [SI], AX這三句來獲得偏移地址IP,接著高地址位置又用MOV AX, CS,MOV SI, 003EH,MOV [SI], AX這三條指令來獲得CS.CPU根據(jù)CS,IP就能轉入正確的中斷程序執(zhí)行中斷了.
而中斷程序結尾處,用了MOV
13、AL, 20H OUT 20H, AL以與IRET這三條指令,是為了說明這是正常的EOI,可以通知8259A此次服務完畢.??
3. 8259級聯(lián)實驗
實驗接線圖如圖4.16所示,KK1+連接到主片8259的IR7上,KK2+連接到從片8259的IR1上,當按一次KK1+時,顯示屏上顯示字符“M7〞,按一次KK2+時,顯示字符“S1〞。編寫程序。
圖4.16 8259級聯(lián)實驗
實驗步驟
〔1〕按圖4.16連接實驗線路。
〔2〕輸入程序
14、,編譯、無誤后裝入系統(tǒng)。
〔3〕運行程序,按動KK1+或KK2+,觀察實驗結果,驗證實驗程序的正確性。
〔4〕假如同時按下KK1+和KK2+,觀察實驗結果,解釋實驗現(xiàn)象。
實驗程序清單〔INTCAS1.ASM〕
SSTACKSEGMENT STACK
DW 32 DUP(?)
SSTACKENDS
CODE SEGMENT
ASSUME CS:CODE
START: PUSH DS
MOV AX, 0000H
MOV DS, AX
MOV AX, OFFSET MIR7;取中斷入口地址
MOV SI, 003CH;中斷矢量地址
MOV [SI], AX;
15、填IRQ7的偏移矢量
MOV AX, CS;段地址
MOV SI, 003EH
MOV [SI], AX;填IRQ7的段地址矢量
MOV AX, OFFSET SIR1
MOV SI, 00C4H
MOV [SI], AX
MOV AX, CS
MOV SI, 00C6H
MOV [SI], AX
CLI
POP DS
;初始化主片8259
MOV AL, 11H
OUT 20H, AL;ICW1
MOV AL, 08H
OUT 21H, AL;ICW2
MOV AL, 04H
OUT 21H, AL;ICW3
MOV AL, 01H
OUT 21H,
16、AL;ICW4
;初始化從片8259
MOV AL, 11H
OUT 0A0H, AL;ICW1
MOV AL, 30H
OUT 0A1H, AL;ICW2
MOV AL, 02H
OUT 0A1H, AL;ICW3
MOV AL, 01H
OUT 0A1H, AL;ICW4
MOV AL, 0FDH
OUT 0A1H,AL;OCW1 = 1111 1101
MOV AL, 6BH
OUT 21H, AL;主8259 OCW1
STI
AA1:NOP
JMP AA1
MIR7:CALL DELAY
MOV AX, 014DH
INT 10H;M
MOV
17、AX, 0137H
INT 10H;顯示字符7
MOV AX, 0120H
INT 10H
MOV AL, 20H
OUT 20H, AL;中斷完畢命令
IRET
SIR1:CALL DELAY
MOV AX, 0153H
INT 10H;S
MOV AX, 0131H
INT 10H;顯示字符1
MOV AX, 0120H
INT 10H
MOV AL, 20H
OUT 0A0H, AL
OUT 20H, AL
IRET
DELAY:PUSH CX
MOV CX, 0F00H
AA0:PUSH AX
POP AX
LOOP AA0
POP CX
18、
RET
CODEENDS
END START
實驗結果截圖如下,能夠正確執(zhí)行設定功能.
級聯(lián)實驗分析:這是8259的級聯(lián)實驗.其中主片8259的初始化和操作前一個程序已經(jīng)說了,現(xiàn)在,主要說說級聯(lián)情況下,從片8259的初始化和操作控制.從片8259A的INT輸出端接到主控制器的IR輸入端,由從屬控制器的中斷請求通過主片8259向CPU申請.如果從片8259A的中斷被CPU響應,在中斷響應周期,主控8259將其對應的IR輸入端的編碼作為對從屬8259進展識別的地址.
MOV AL, 20H OUT 0A0H, AL OUT 20H, AL IRET
19、
這四句就是實現(xiàn)這樣的功能.但是,完畢這兩個中斷的順序,是否有要求呢?經(jīng)過實驗,我們知道,兩條完畢中斷的指令,不管誰先執(zhí)行,都能達到一樣的要求.
另外,當處于這種級聯(lián)方式下,為了保證從屬8259正常的中斷請求,主片8259就設置成特殊全嵌套方式,從片8259如此就選用一般全嵌套方式.
心得與體會:
中斷的思想在程序的設計中無疑占有重要的位置.采取中斷的方法,大大提高程序的有效性和CPU的高效率工作.因此,8259中斷控制實驗在微機的幾個實驗中,就顯得尤其重點.掌握8259中斷控制器的工作原理和應用編程方法,需要對課本上那些對8259的系統(tǒng)介紹有一個深入的了解,以與級聯(lián)方式下各個存放器相應的控制和操作方法,這些,都是我們學習的重點,我們應該熟練掌握.
指導教師批閱意見:
成績評定:
指導教師簽字:
年 月 日
備注:
8 / 8