《8259中斷控制 實(shí)驗(yàn)報告材料》由會員分享,可在線閱讀,更多相關(guān)《8259中斷控制 實(shí)驗(yàn)報告材料(8頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、word
深 圳 大 學(xué) 實(shí) 驗(yàn) 報 告
課程名稱: 微機(jī)原理與接口技術(shù)
實(shí)驗(yàn)項目名稱: 8259中斷控制實(shí)驗(yàn)
學(xué)院: 信息工程學(xué)院
專業(yè): 電子信息工程
指導(dǎo)教師:
報告人:學(xué)號:201019 班級: 電子
2、
實(shí)驗(yàn)時間: 2012.5.18
實(shí)驗(yàn)報告提交時間: 2012.6.9
教務(wù)處制
實(shí)驗(yàn)?zāi)康呐c要求:
1. 掌握8259中斷控制器的工作原理
2. 掌握8259的應(yīng)用編程方法
3. 掌握8259的級聯(lián)方式的使用方法
實(shí)驗(yàn)環(huán)境:
PC機(jī)一臺,TD-PITE實(shí)驗(yàn)裝置或TD-PITC實(shí)驗(yàn)裝置一套,過濾器一臺
實(shí)驗(yàn)內(nèi)容與步驟:
1. 中斷控制器8259簡介
在Intel 386EX芯片中集成有中斷控制單元〔ICU〕,該單元包含有兩個級聯(lián)中斷控制器,一個為
3、主控制器,一個為從控制器。該中斷控制單元就功能而言與工業(yè)上標(biāo)準(zhǔn)的82C59A是一致的,操作方法也一樣。從片的INT連接到主片的IR2信號上構(gòu)成兩片8259的級聯(lián)。
在TD-PITE實(shí)驗(yàn)系統(tǒng)中,將主控制器的IR6、IR7以與從控制器的IR1開放出來供實(shí)驗(yàn)使用,主片8259的IR4供系統(tǒng)串口使用。8259的內(nèi)部連接與外部管腳引出如圖4.5:
圖4.5 8259內(nèi)部連續(xù)與外部管腳引出圖
在對8259進(jìn)展編程時,首先必須進(jìn)展初始化。一般先使用CLI指令將所有的可屏蔽中斷禁止,然后寫入初始化命令字。8259有一個狀態(tài)機(jī)控制對存放器的訪問,不正確的初始化順序會造成異常初始化。在初始
4、化主片8259時,寫入初始化命令字的順序是:ICW1、ICW2、ICW3、然后是ICW4,初始化從片8259的順序與初始化主片8259的順序是一樣的。
系統(tǒng)啟動時,主片8259已被初始化,且4號中斷源〔IR4〕提供應(yīng)與PC聯(lián)機(jī)的串口通信使用,其它中斷源被屏蔽。中斷矢量地址與中斷號之間的關(guā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單中斷實(shí)驗(yàn)
實(shí)驗(yàn)接線圖如圖4.15所示,單次脈沖輸出與主片8259的IR7
6、相連,每按動一次單次脈沖,產(chǎn)生一次外部中斷,在顯示屏上輸出一個字符“7〞。
圖4.15 8259單中斷實(shí)驗(yàn)接線圖
實(shí)驗(yàn)步驟
〔1〕按圖4.15連接實(shí)驗(yàn)線路。
〔2〕編寫實(shí)驗(yàn)程序,經(jīng)編譯、無誤后裝入系統(tǒng)。
〔3〕運(yùn)行程序,重復(fù)按單次脈沖開關(guān)KK1+,顯示屏?xí)@示字符“7〞,說明響應(yīng)了中斷。實(shí)驗(yàn)程序清單〔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;填I(lǐng)RQ7的偏移矢量
MOV AX, CS;段地址
MOV SI, 003EH
MOV [SI], AX;填I(lǐng)RQ7的段地址矢量
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
實(shí)驗(yàn)結(jié)果如下列圖,能夠正確執(zhí)行設(shè)定功能.
實(shí)驗(yàn)程序分析:一般中斷實(shí)
10、驗(yàn),為了保護(hù)現(xiàn)場,程序開頭都會引用堆棧把把現(xiàn)在的程序放入堆棧中進(jìn)展保護(hù),所以, PUSH DS就起到這樣的作用.在中斷程序完畢后,為了能回到之前執(zhí)行的程序入口,還得用POP DS 指令返回現(xiàn)場.
這個實(shí)驗(yàn)是關(guān)于8259的單中斷,不牽涉級聯(lián)問題,所以,8259的初始化只需要看主片就可以了.初始化的時候,一般先使用CLI指令將所有的可屏蔽中斷禁止,然后寫入初始化字.8259有四個初始化控制字ICW1,ICW2,ICW3,ICW4,由于8259只有一根地址線,因此對各個控制字的操作是按照一定的順序并結(jié)合某些數(shù)據(jù)位來進(jìn)展尋址設(shè)置的.當(dāng)初始化完成后,對8259的操作命令字的尋址是通過8259的地址線A
11、0和某些數(shù)據(jù)位結(jié)合來進(jìn)展的. 其初始化控制字和控制命令遼的賦值理由我已經(jīng)在注釋中給出.
另外,在初始化程序中我們用了STI這條指令打開中斷,那么進(jìn)入MIR7中斷程序中,我們?yōu)槭裁从謭?zhí)行STI這條指令呢,會不會重復(fù)了?經(jīng)過實(shí)驗(yàn),我們知道這條指令并不是沒用的,如果缺少后面這條STI指令,實(shí)驗(yàn)中我們會發(fā)現(xiàn),當(dāng)按一次KK1開關(guān)的時候,屏幕會顯示一個字符7,但是,再按KK1的時候,就沒有反響了,起初并不知道怎么解釋這個現(xiàn)象,后來才知道8086CPU執(zhí)行完一次中斷后,會自動將相應(yīng)的中斷位屏蔽,所以,如果我們想按一次KK1就發(fā)生一次中斷,就得重新在程序中打開中斷,也就是STI.
另外,RET
12、指令是短信返回指令,而IRET指令如此是中斷短程返回指令,一般中斷程序也大多是短程的.
那么,中斷發(fā)生的時候,CPU又是怎樣進(jìn)入中斷子程序的呢?這就需要我們正確地設(shè)置中斷向量表的了.實(shí)驗(yàn)板上主中斷序號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就能轉(zhuǎn)入正確的中斷程序執(zhí)行中斷了.
而中斷程序結(jié)尾處,用了MOV
13、AL, 20H OUT 20H, AL以與IRET這三條指令,是為了說明這是正常的EOI,可以通知8259A此次服務(wù)完畢.??
3. 8259級聯(lián)實(shí)驗(yàn)
實(shí)驗(yàn)接線圖如圖4.16所示,KK1+連接到主片8259的IR7上,KK2+連接到從片8259的IR1上,當(dāng)按一次KK1+時,顯示屏上顯示字符“M7〞,按一次KK2+時,顯示字符“S1〞。編寫程序。
圖4.16 8259級聯(lián)實(shí)驗(yàn)
實(shí)驗(yàn)步驟
〔1〕按圖4.16連接實(shí)驗(yàn)線路。
〔2〕輸入程序
14、,編譯、無誤后裝入系統(tǒng)。
〔3〕運(yùn)行程序,按動KK1+或KK2+,觀察實(shí)驗(yàn)結(jié)果,驗(yàn)證實(shí)驗(yàn)程序的正確性。
〔4〕假如同時按下KK1+和KK2+,觀察實(shí)驗(yàn)結(jié)果,解釋實(shí)驗(yàn)現(xiàn)象。
實(shí)驗(yà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、填I(lǐng)RQ7的偏移矢量
MOV AX, CS;段地址
MOV SI, 003EH
MOV [SI], AX;填I(lǐng)RQ7的段地址矢量
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
實(shí)驗(yàn)結(jié)果截圖如下,能夠正確執(zhí)行設(shè)定功能.
級聯(lián)實(shí)驗(yàn)分析:這是8259的級聯(lián)實(shí)驗(yàn).其中主片8259的初始化和操作前一個程序已經(jīng)說了,現(xiàn)在,主要說說級聯(lián)情況下,從片8259的初始化和操作控制.從片8259A的INT輸出端接到主控制器的IR輸入端,由從屬控制器的中斷請求通過主片8259向CPU申請.如果從片8259A的中斷被CPU響應(yīng),在中斷響應(yīng)周期,主控8259將其對應(yīng)的IR輸入端的編碼作為對從屬8259進(jìn)展識別的地址.
MOV AL, 20H OUT 0A0H, AL OUT 20H, AL IRET
19、
這四句就是實(shí)現(xiàn)這樣的功能.但是,完畢這兩個中斷的順序,是否有要求呢?經(jīng)過實(shí)驗(yàn),我們知道,兩條完畢中斷的指令,不管誰先執(zhí)行,都能達(dá)到一樣的要求.
另外,當(dāng)處于這種級聯(lián)方式下,為了保證從屬8259正常的中斷請求,主片8259就設(shè)置成特殊全嵌套方式,從片8259如此就選用一般全嵌套方式.
心得與體會:
中斷的思想在程序的設(shè)計中無疑占有重要的位置.采取中斷的方法,大大提高程序的有效性和CPU的高效率工作.因此,8259中斷控制實(shí)驗(yàn)在微機(jī)的幾個實(shí)驗(yàn)中,就顯得尤其重點(diǎn).掌握8259中斷控制器的工作原理和應(yīng)用編程方法,需要對課本上那些對8259的系統(tǒng)介紹有一個深入的了解,以與級聯(lián)方式下各個存放器相應(yīng)的控制和操作方法,這些,都是我們學(xué)習(xí)的重點(diǎn),我們應(yīng)該熟練掌握.
指導(dǎo)教師批閱意見:
成績評定:
指導(dǎo)教師簽字:
年 月 日
備注:
8 / 8