第六章 中斷技術(shù)_第1頁(yè)
第六章 中斷技術(shù)_第2頁(yè)
第六章 中斷技術(shù)_第3頁(yè)
第六章 中斷技術(shù)_第4頁(yè)
第六章 中斷技術(shù)_第5頁(yè)
已閱讀5頁(yè),還剩111頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、125.1 中斷的基本概念一、中斷:指CPU在正常運(yùn)行程序時(shí),由于內(nèi)部外部事件或由程序的預(yù)先安排引起CPU中斷正在運(yùn)行的程序,而轉(zhuǎn)到為內(nèi)部外部事件或?yàn)轭A(yù)先安排的事件服務(wù)的程序中去。服務(wù)完畢,再返回去繼續(xù)執(zhí)行被暫時(shí)中斷的程序。例: PC機(jī)的鍵盤管理便是使用中斷功能的較好例子. 使用中斷指令 處理機(jī)內(nèi)部的原因如除數(shù)為0、奇偶校驗(yàn)錯(cuò)(PC機(jī)采用的是奇校驗(yàn)) 等,都可以引起中斷。 3二、中斷源與中斷識(shí)別1. 中斷源: 發(fā)出中斷請(qǐng)求的外設(shè)或引起中斷的內(nèi)部原因。 包含:外設(shè)中斷(外設(shè)請(qǐng)求與CPU交換數(shù)據(jù)) 指令中斷(INT n) 程序性中斷(溢出、除數(shù)為0等) 硬件故障中斷(奇偶錯(cuò)、電源掉電)。42. 中

2、斷識(shí)別: 指CPU根據(jù)一定的措施查找中斷源,形成相應(yīng)的中斷服務(wù)程序的入口地址。 識(shí)別方法: 向量中斷:由中斷向量來提供中斷服務(wù)程序的入口地址。 查詢中斷:采用軟件或硬件查詢技術(shù)來確定發(fā)出中斷請(qǐng)求的中斷源。 5三、中斷向量與中斷向量表1. 中斷向量:中斷例行程序的入口地址。 80X86在實(shí)模式下有中斷向量256個(gè),每個(gè)占4B(低2字節(jié)為偏移地址,高2字節(jié)為段基址)。2. 中斷號(hào):系統(tǒng)分配給各中斷源的代號(hào)。 取值范圍為00FFH。 系統(tǒng)提供的中斷號(hào)見書P80頁(yè)或有關(guān)資料。3. 中斷向量表:中斷向量按類型號(hào)由小到大順次存放在地址區(qū)間:00000H003FFH。這就構(gòu)成了中斷向量表。 (見下表)64.

3、 中斷向量指針(或中斷向量入口地址,它是中斷向量在中斷向量表中的首偏移地址)=中斷類型號(hào)*4 7四、中斷向量的裝入與修改 我們可以用自己設(shè)計(jì)的中斷程序來代替系統(tǒng)提供的某個(gè)中斷處理程序,然后在程序中以中斷的形式調(diào)用它。這就要用新的中斷處理程序的段址和段偏移來取代原來的中斷向量。 89五、中斷優(yōu)先級(jí)排隊(duì)方式 由于CPU一次只能響應(yīng)并處理一個(gè)中斷,當(dāng)同時(shí)出現(xiàn)多個(gè)中斷請(qǐng)求時(shí),必須要排隊(duì)處理。 常用的有2種排隊(duì)方法: 按優(yōu)先級(jí)排隊(duì):預(yù)先指定各中斷源的優(yōu)先級(jí)別。高的先響應(yīng)。 循環(huán)輪流排隊(duì):不分級(jí)別高低,CPU輪流響應(yīng)各中斷請(qǐng)求。10六、中斷嵌套 正在執(zhí)行的中斷處理程序,又被其他中斷源中斷,這種情況叫做中斷

4、嵌套。 一個(gè)正在執(zhí)行的中斷處理程序,能被優(yōu)先級(jí)高于它的中斷源中斷。 在開中斷(IF=1)的情況下,對(duì)可屏蔽中斷來說,如有必要,甚至可以在中斷處理程序中采用特定的方法使CPU也能響應(yīng)同級(jí)或低級(jí)中斷。中斷嵌套的深度受堆棧容量的限制。11一、硬中斷 由外設(shè)提出中斷申請(qǐng),CPU響應(yīng)后產(chǎn)生的中斷。 PC機(jī)有一片中斷控制器8259A,286以上有2片8259A。它用于接收外設(shè)的中斷請(qǐng)求,并負(fù)責(zé)向CPU發(fā)出中斷申請(qǐng)。12 硬中斷的中斷號(hào)和優(yōu)先級(jí)在系統(tǒng)設(shè)計(jì)時(shí)就已給定。中斷號(hào)小則優(yōu)先級(jí)高。 286以上系統(tǒng)的硬中斷源列表 131. NMI: CPU的NMI引腳上出現(xiàn)個(gè)上升沿觸發(fā)信號(hào)時(shí),產(chǎn)生2號(hào)中斷(NMI)請(qǐng)求。

5、 該中斷不會(huì)被指令CLI所禁止,在硬中斷中它具有最高的優(yōu)先級(jí)。只要出現(xiàn)NMI請(qǐng)求,CPU立即響應(yīng)。 在響應(yīng)該中斷時(shí) ,CPU既不給出中斷應(yīng)答信號(hào),也不需要中斷源提供中斷號(hào),而是立即進(jìn)入系統(tǒng)預(yù)定的2號(hào)中斷,自動(dòng)執(zhí)行NMI服務(wù)程序。因此,它常用于緊急情況的故障處理。142. INTR: 若CPU的INTR引腳上有一個(gè)高”有效信號(hào)輸入,則產(chǎn)生INTR請(qǐng)求。 可用指令CLI/STI來禁止/允許。 在INTR被響應(yīng)時(shí),CPU發(fā)INTA信號(hào)(在最大方式下,此信號(hào)由8288發(fā)出) , 中斷源要向CPU提供中斷類別號(hào),以便找到中斷服務(wù)程序入口。 中斷向量表中080FH、7077H號(hào)就是INTR中斷。這種中斷是

6、外設(shè)產(chǎn)生的。 15 PC/XT使用1片8259A支持8級(jí)外部中斷,對(duì)應(yīng)的中斷請(qǐng)求為IRQ0IRQ7。對(duì)應(yīng)中斷類型號(hào)為080FH。其中0AH號(hào)(對(duì)應(yīng)與IRQ2)中斷被保留,用戶可以使用。(見圖) PCAT及兼容機(jī),使用兩片8259A,支持15級(jí)外部中斷。它是在PCXT基礎(chǔ)上增加1個(gè)從片8259A,并把從片的中斷請(qǐng)求線INT接到主片的IRQ2,實(shí)現(xiàn)兩片級(jí)聯(lián),形成15級(jí)中斷。因此,第二級(jí)中斷IRQ2用戶不能再使用。 (見圖) 為了保持與PCXT中斷程序的兼容性, 在PCAT及兼容機(jī)中,用IRQ9替代IRQ2。并對(duì)中斷向量表作了相應(yīng)調(diào)整和處理16返回17二、軟件中斷 這類中斷是在程序中使用中斷指令I(lǐng)N

7、T nH而產(chǎn)生。指令的操作數(shù)就是中斷號(hào),而不由中斷控制器提供。中斷處理過程中,CPU也不發(fā)出中斷響應(yīng)信號(hào)。中斷的發(fā)生由程序安排。1. ROM-BIOS中斷 基本的ROM-BIOS中斷占用中斷號(hào)10H1FH,此外,還占用中斷號(hào)05H及未定義自由軟中斷號(hào)為40H、41H和46H,這些中斷的功能包括對(duì)IO設(shè)備的控制,提供對(duì)系統(tǒng)的實(shí)用服務(wù)程序和中斷服務(wù)程序運(yùn)行所需的參數(shù)等。18IO設(shè)備控制程序:這是ROM-BIOS系統(tǒng)核心,是控制IO設(shè)備操作最底層的軟件,可供高層軟件調(diào)用。如: INT 10H 視頻顯示1O控制程序。BI0S實(shí)用服務(wù)程序 這類中斷服務(wù)程序提供實(shí)用服務(wù)。它們用于系統(tǒng)自舉、查看系統(tǒng)配置和內(nèi)

8、存容量、獲取時(shí)鐘和實(shí)時(shí)鐘、屏幕打印以及進(jìn)出保護(hù)模式等方面。如: INT 12H 內(nèi)存容量檢測(cè)程序19BIOS特殊中斷:供系統(tǒng)內(nèi)部調(diào)用或由應(yīng)用程序自行接管。 如: INT 1cH 定時(shí)器報(bào)時(shí)中斷程序。該程序由定時(shí)器中斷08H調(diào)用,BIOS對(duì)該程序僅安排一條IRET指令,故允許用戶利用此特點(diǎn)接管該中斷,實(shí)現(xiàn)定時(shí)器報(bào)時(shí)功能。BIOS專用參數(shù)中斷 這類中斷并未提供個(gè)中斷處理程序,而是指出一個(gè)地址入口,內(nèi)含BIOS某些中斷程序在運(yùn)行中要調(diào)用的參數(shù)。如: INT 1DH 視頻顯示方式參數(shù)。該參數(shù)由INT 10H的AH0子功能調(diào)用。202. DOS中斷DOS中斷占用中斷號(hào)20H3FH。這些中斷程序提供了DO

9、S系統(tǒng)的主要功能。大致可歸納為以下5部分。公開的DOS專用中斷:供DOS內(nèi)核代碼專用,用戶不能在程序中直接調(diào)用。 INT 22H 程序結(jié)束地址 INT 23H Ctrl-C出口地址 INT 24H 嚴(yán)重錯(cuò)誤出口地址。未公開的DOS專用中斷:供DOS內(nèi)核調(diào)用。未在資料中公開。如:INT 29H 字符輸出處理程序。21 DOS可調(diào)用中斷:有5個(gè)。可在程序中直接調(diào)用。如: INT 25H 磁盤扇區(qū)讀出。系統(tǒng)功能調(diào)用中斷:INT 21H (包含006CH個(gè)子功能)。 DOS保留:供今后擴(kuò)展之用。中斷號(hào)為30H3FH。如后來增加的INT 33H(鼠標(biāo)中斷) 22三、處理器專用內(nèi)部中斷 這類中斷由內(nèi)部的突

10、發(fā)事件引起。不是由外設(shè)申請(qǐng),也不是由中斷指令產(chǎn)生。應(yīng)該屬于不可屏蔽中斷。但由于其中斷處理過程與軟件中斷具有相同的特點(diǎn),所以有時(shí)也被歸入軟件中斷類。1. 0號(hào)中斷:除數(shù)為0中斷2. 1號(hào)中斷:?jiǎn)尾街袛?(單步標(biāo)志位TF=1時(shí)發(fā)生)3. 3號(hào)中斷:斷點(diǎn)中斷 (由指令碼INT 3H引起)4. 4號(hào)中斷:溢出中斷 (在標(biāo)志位OF=1時(shí)發(fā)生)23注意: 在運(yùn)算過程中出現(xiàn)溢出標(biāo)志OF為1后,CPU并非會(huì)自動(dòng)轉(zhuǎn)入溢出處理服務(wù)程序。因?yàn)?,OF1只是一個(gè)必要條件。在編程時(shí),要想對(duì)某些運(yùn)算操作進(jìn)行溢出監(jiān)控,則應(yīng)在這些操作指令之后加一條“INTO”指令,并設(shè)計(jì)相應(yīng)的溢出中斷服務(wù)程序。因?yàn)椋绯鰳?biāo)志位OF為零時(shí)“IN

11、TO”指令不產(chǎn)生任何操作。24四、未定義的自由中斷 在軟中斷(20HFFH)中,除ROM-BIOS中斷和DOS中斷以外、其余的中斷(40HFFH)統(tǒng)稱為未定義自由中斷。這類中斷因基本系統(tǒng)未指定其用途,故可由系統(tǒng)擴(kuò)充或根據(jù)應(yīng)用需要作出新的定義。其中又可劃分為以下幾部分:1. 系統(tǒng)保留區(qū)(40H5FH)目前,中斷號(hào)40H、41H、46H已有定義,被ROM-BIOS占用,其余均保留為今后擴(kuò)充用。2. 用戶保留區(qū)(60H6FH),用戶可根據(jù)需要占用這些中斷號(hào),以便增加新的功能。253. 擴(kuò)充外部硬中斷區(qū)(70H77H)。該區(qū)為擴(kuò)充的8級(jí)外部硬中斷號(hào),它們分別對(duì)應(yīng)中斷級(jí)8l5。 (4)未使用區(qū)(78H7

12、FH)。 (5)BASlC使用區(qū)(80HEFH)。 (6)內(nèi)部使用區(qū)(F0HFFH)。26五、硬中斷與軟件中斷的比較1. 硬中斷的特點(diǎn) 由外部事件引起、有隨機(jī)性、突發(fā)性 中斷響應(yīng)周期,CPU要發(fā)中斷應(yīng)答信號(hào)(NMI不發(fā)) 中斷號(hào)由中斷控制器提供(NMI則由系統(tǒng)指定為2H) 可屏蔽(NMI是不可屏蔽)2. 軟中斷的特點(diǎn) 由中斷指令產(chǎn)生無隨機(jī)性和突發(fā)性 中斷響應(yīng)周期,CPU不需要發(fā)中斷應(yīng)答信號(hào) 中斷號(hào)由指令直接給出 不可屏蔽 27六、中斷處理過程 中斷處理過程包含4個(gè)過程:中斷請(qǐng)求,中斷響應(yīng),中斷服務(wù)和中斷返回。28七、中斷響應(yīng)周期時(shí)序 當(dāng)8259A收到多個(gè)外設(shè)的中斷請(qǐng)求信號(hào)時(shí),經(jīng)過判優(yōu)等處理后選

13、中其中一個(gè)請(qǐng)求信號(hào)IRi,產(chǎn)生中斷請(qǐng)求信號(hào)INT。CPU收到后,在當(dāng)前一條指令執(zhí)行完,且中斷標(biāo)志位IF1時(shí),CPU進(jìn)入中斷響應(yīng)周期,它要通過總線控制器發(fā)出兩個(gè)連續(xù)中斷應(yīng)答信號(hào)INTA來完成一個(gè)中斷響應(yīng)周期。29 從上圖可見,一個(gè)中斷響應(yīng)周期完成以下兩個(gè)工作: (1)當(dāng)總線控制器發(fā)出第1個(gè)INTA脈沖時(shí)CPU輸出有效的總線鎖定信號(hào)LOCK,使總線在此期間處于封鎖狀態(tài),防止其它處理機(jī)或DMA控制器占用總線。與此同時(shí)8259A將判優(yōu)后選中的最高優(yōu)先級(jí)在ISR中的相應(yīng)位置位,在IRR中的相應(yīng)位清0。30 (2)當(dāng)總線控制器發(fā)出第2個(gè)INTA脈沖時(shí),總線鎖定信號(hào)LOCK撤除,總線被解封,地址鎖存允許信號(hào)

14、ALE無效,此時(shí)允許數(shù)據(jù)線工作。8259A把中斷類型號(hào)送上數(shù)據(jù)總線(注:由于PC/XT機(jī)使用8088CPU,系統(tǒng)的數(shù)據(jù)總線是8位,且與低8位地址線復(fù)用,那么,在總線周期中的第一時(shí)鐘周期必須是ALE有效,由地址信號(hào)占用地址總線,在第二個(gè)時(shí)鐘周期后才使ALE無效,此時(shí)低8位地址線才作為數(shù)據(jù)線使用)。于是CPU在T3周期的下降沿從數(shù)據(jù)讀取中斷號(hào)。315.3 可編程中斷控制器8259A一、8259A處理中斷事務(wù)所作的工作 1. 優(yōu)先級(jí)排隊(duì)管理 2. 接受和擴(kuò)充外設(shè)的中斷請(qǐng)求 3. 提供中斷號(hào) 4. 屏蔽和開放中斷請(qǐng)求 32二、8259A的外部特性和內(nèi)部結(jié)構(gòu) 1. 引腳(如圖) D7D0:數(shù)據(jù)總線、雙向

15、。小系統(tǒng)中可直接連CPU的數(shù)據(jù)總線。在較大系統(tǒng)中,需接總線驅(qū)動(dòng)器。 CS:片選信號(hào)、輸入、低電平有效。 RD:讀信號(hào)、輸入。 WR:寫信導(dǎo)、輸入。 CAS2CASo:三根級(jí)聯(lián)線,雙向。主片輸出,從片輸入。 INTA:中斷響應(yīng)信號(hào),輸入。 IR7IR0:外設(shè)的中斷請(qǐng)求信號(hào),輸入。33 INT:8259A發(fā)出的中斷請(qǐng)求信號(hào),輸出。 SP/ /EN :用于主從設(shè)備的設(shè)定或緩沖器作用方向的設(shè)定兩個(gè)方面。在非緩沖方式中用作輸入線,指定8259A為主片(SP=1時(shí))或是從片(SP=0時(shí))。在緩沖方式中用作輸出線,控制緩沖器的收/發(fā)方向。 3435中斷請(qǐng)求寄存器(IRR) 該寄存器的D0D7位分別對(duì)應(yīng)于連接

16、在IR0IR7線上的外設(shè)所產(chǎn)生的中斷請(qǐng)求,某線有請(qǐng)求則對(duì)應(yīng)位置“1”。它具有鎖存功能,其內(nèi)容是否允許讀出則由OCW3命令控制。 當(dāng)某個(gè)請(qǐng)求被CPU響應(yīng)并在第1個(gè)INTA到來時(shí),其相應(yīng)位被復(fù)位。 36正在服務(wù)寄存器(ISR) 在中斷響應(yīng)之后,第一個(gè)INTA周期由優(yōu)先權(quán)分析器(PR)把獲準(zhǔn)中斷請(qǐng)求的中斷級(jí)在相應(yīng)的ISR中置位。 上圖可見,若IRR中的IR3獲得中斷請(qǐng)求允許,則ISR中相應(yīng)的IS3位置位表明IR3正在被服務(wù)。 ISR被用來存放正在被服務(wù)的所有中斷級(jí)(包括中斷嵌套的所有中斷級(jí),其內(nèi)容的讀出由OCW3命令提供允許控制。 37 中斷結(jié)束之后,ISR中相應(yīng)的位必須清0(復(fù)位)。這樣,才能使以

17、后出現(xiàn)的同級(jí)或低級(jí)的中斷請(qǐng)求能被響應(yīng)。 具體的復(fù)位方法有自動(dòng)結(jié)束和非自動(dòng)中斷結(jié)束方式。前者由第二個(gè)INTA的后沿將ISR的相應(yīng)位復(fù)位,后者要用OCW2的中斷結(jié)束命令EOI來執(zhí)行。38中斷屏蔽寄存器(IMR) 對(duì)IRR起屏蔽作用。寄存器8位(D0D7)對(duì)應(yīng)8級(jí)中斷屏蔽。 要屏蔽某級(jí)中斷,則對(duì)其相應(yīng)位置1,禁止相應(yīng)IRi提出中斷請(qǐng)求;反之則寫0,不屏蔽,即允許相應(yīng)IRi提出中斷請(qǐng)求。屏蔽操作由屏蔽命令OCW1執(zhí)行。 39優(yōu)先權(quán)分析器(PR) 在各IRi輸入端出現(xiàn)的中斷請(qǐng)求都被送到PR。PR從這些中斷請(qǐng)求中選出最高的優(yōu)先級(jí),并讓它與“正在服務(wù)中的中斷”進(jìn)行優(yōu)先級(jí)比較,若該中斷請(qǐng)求的優(yōu)先級(jí)高,則PR就

18、使INT線變?yōu)楦唠娖?,向CPU申請(qǐng)中斷,并且在中斷被響應(yīng)時(shí)將它記入ISR的對(duì)應(yīng)位中;否則PR不為其提出申請(qǐng)。 該分析器可實(shí)現(xiàn)中斷判優(yōu)及屏蔽的功能。如圖所示。 40返回OCW1 41由圖可知,中斷優(yōu)先級(jí)分析器的工作原理如下: 首先,由8個(gè)“與門”邏輯選出所有參加中斷優(yōu)先級(jí)排隊(duì)的中斷請(qǐng)求級(jí)。即8位IRR與8位IMR相應(yīng)各位分別送入“與門”輸入端,只有當(dāng)IRR位置“1”(有中斷請(qǐng)求)和IMR位置“0”(開放中斷請(qǐng)求)同時(shí)成立時(shí),相應(yīng)“與門”輸出高電平參加編碼。其次,優(yōu)先級(jí)編碼器對(duì)參加排隊(duì)的那些中斷優(yōu)先級(jí)進(jìn)行編碼,并從中選出最高優(yōu)先級(jí)作為比較器的輸入(A2、A1、A0)。42 最后,把來自ISR的當(dāng)前

19、正在服務(wù)的優(yōu)先級(jí)(B2、B1、B0)與當(dāng)前請(qǐng)求的最高優(yōu)先級(jí)(A2A1A0)起送入比較器進(jìn)行比較, 當(dāng)AB成立時(shí),比較器輸出有效高電平,打開與門1,當(dāng)前的可屏蔽中斷請(qǐng)求的高電平就經(jīng)由與門1和或門輸出,形成8259A向CPU提出的中斷請(qǐng)求信號(hào)INT。 由上圖還可看出: . 一個(gè)正被服務(wù)的中斷禁止同級(jí)或低級(jí)中斷請(qǐng)求。開放高一級(jí)中斷請(qǐng)求。這同時(shí)也使我們進(jìn)一步能理解:中斷結(jié)束之后,ISR中相應(yīng)的位必須清0(復(fù)位)。這樣,才能使以后出現(xiàn)的同級(jí)或低級(jí)的中斷請(qǐng)求能被響應(yīng)。 43 . 在第二個(gè)INTA信號(hào)到來時(shí),8259把中斷類型號(hào)送上數(shù)據(jù)總線供CPU讀取。 . 當(dāng)CPU并未執(zhí)行任何中斷服務(wù)程序時(shí),優(yōu)先級(jí)失效信

20、號(hào)為高電平,此時(shí),只要有任意一個(gè)中斷請(qǐng)求,都將通過與門2和或門向CPU發(fā)出INT信號(hào)。44級(jí)聯(lián)緩沖器比較器 用于多片級(jí)聯(lián)及數(shù)據(jù)緩沖方式。 級(jí)聯(lián)方式中,主片和從片之間將對(duì)應(yīng)的三個(gè)引腳CAS02相互聯(lián)接成為專用總線。用CAS02對(duì)從片進(jìn)行尋址。 在第一個(gè)INTA到來時(shí),若被響應(yīng)的是從片的中斷請(qǐng)求,則主片通過 CAS02把中斷申請(qǐng)被響應(yīng)的從片的標(biāo)志號(hào)ID送到從片,通知其中斷被響應(yīng)。從片將此標(biāo)志號(hào)與自身標(biāo)志號(hào)比較,若相符,則在下一個(gè)INTA脈沖來時(shí)將中斷類型號(hào)送上數(shù)據(jù)總線。否則在第二個(gè)INTA信號(hào)到來時(shí),主片8259把中斷類型號(hào)送上數(shù)據(jù)總線供CPU讀取。45讀寫控制邏輯和數(shù)據(jù)總線緩沖器 實(shí)現(xiàn)CPU對(duì)8

21、259A的讀寫。 當(dāng)CPU執(zhí)行IN指令時(shí),RD信號(hào)與A0配合,將8259A中內(nèi)部寄存器的內(nèi)容經(jīng)數(shù)據(jù)緩沖器讀入CPU; 在CPU執(zhí)行OUT指令時(shí),WR信號(hào)與A0配合,由CPU將初始化命令字(ICW)和操作命令字(OCW)通過數(shù)據(jù)緩沖器寫入8259A中各指定的寄存器。 8259A中只有2個(gè)端口,所以,只需要地址總線的A0位即可區(qū)分。而CS則由其余的高位地址線經(jīng)地址譯碼產(chǎn)生。46 CS,WR,RD,A0組合功能及8259A分別在PC機(jī)和單板機(jī)TP86A上的IO端口地址如下表所示: 控制邏輯 它是8259A的內(nèi)部控制電路,用于向CPU發(fā)INT信號(hào)和接收CPU發(fā)來的信號(hào),協(xié)調(diào)8259內(nèi)部各功能部件之間的

22、聯(lián)系,以完成全部中斷處理功能。47三、8259A的工作方式1. 引入中斷請(qǐng)求(中斷觸發(fā))的方式 邊沿觸發(fā)方式:用上升沿(即正跳變)向8259請(qǐng)求中斷。當(dāng)在IRi輸入端檢測(cè)到由低到高的上跳變(該跳變會(huì)使IRR相應(yīng)位置1),且高電平保持到第一個(gè)INTA到來之后,8259A就認(rèn)為有中斷請(qǐng)求。該高電平的持續(xù)存在不會(huì)引起再次的中斷。 48電平觸發(fā)方式:以高電平請(qǐng)求中斷。 在IRi輸入線上檢測(cè)到一個(gè)高電平(該高電平出現(xiàn)時(shí)IRR相應(yīng)位置1),并能維持到第一INTA個(gè)脈沖到來之后,就認(rèn)為有外設(shè)提出中斷請(qǐng)求。 該高電平的持續(xù)存在可重復(fù)產(chǎn)生中斷,若只要求產(chǎn)生一次中斷,則必須在CPU發(fā)出EOI命令之前或CPU再次開

23、放中斷之前,使已響應(yīng)的中斷請(qǐng)求線IRi置為低電平,否則將出現(xiàn)第2次中斷。 兩種觸發(fā)方式中如果在到來之前IRi變“低”,則巳置位的IRR位又被復(fù)位,相應(yīng)的ISR位也不能建立。 49 中斷查詢方式:外設(shè)通過8259A申請(qǐng)中斷,但8259A不使用INT信號(hào)向CPU申請(qǐng)中斷,而由CPU用軟件通過查詢來確定中斷源。 502. 連接系統(tǒng)總線的方式 緩沖器方式:指8259A與帶總線緩沖器的系統(tǒng)數(shù)據(jù)總線連接。此時(shí)SP/ /EN用于啟動(dòng)緩沖器。通常用于大系統(tǒng)。 非緩沖器方式:指在小系統(tǒng)中,不需要總線緩沖器,8259A直接與數(shù)據(jù)總線連接。此時(shí)SP/ /EN用于指定主從片。 513. 屏蔽中斷源的方式 通常屏蔽方式

24、:利用操作命令字OCW1,對(duì)IMR中各位進(jìn)行置1或清0,則實(shí)現(xiàn)對(duì)相應(yīng)的中斷源的中斷請(qǐng)求的屏蔽或開放。 特殊屏蔽方式:通過設(shè)置OCW3的D6D5=11來允許在中斷服務(wù)過程中響應(yīng)除正在服務(wù)的中斷級(jí)之外的其它所有等級(jí)的中斷。主要意義在于能在中斷服務(wù)過程中響應(yīng)低優(yōu)先級(jí)中斷請(qǐng)求。 524. 優(yōu)先級(jí)排隊(duì)方式 全嵌套方式:按優(yōu)先級(jí)0高至7低的順序,只允許高級(jí)別中斷嵌套。這是8259A的默認(rèn)嵌套方式。 特殊全嵌套方式:允許同級(jí)別的中斷嵌套。用于多片級(jí)聯(lián)。 優(yōu)先級(jí)自動(dòng)輪換:初始化時(shí)優(yōu)先級(jí)0高至7低,但某級(jí)中斷被響應(yīng)后,其級(jí)別則降為最低。其下一級(jí)的中斷則成為最高級(jí)。用于有多個(gè)中斷源級(jí)別相同的情況。優(yōu)先級(jí)初始情況:

25、 IR0被響應(yīng)后優(yōu)先級(jí)的變化: 53 優(yōu)先級(jí)指定輪換:由程序指定一個(gè)初始的最低優(yōu)先級(jí),然后再按順序自動(dòng)輪換。若指定3級(jí)為最低級(jí),4級(jí)則成為最高級(jí)。 545. 結(jié)束中斷的方式 自動(dòng)中斷結(jié)束方式:在本方式下,由第2個(gè)INTA脈沖后沿清除由第一個(gè)INTA脈沖在ISR中置1的位。注意,此時(shí)尚未完成中斷服務(wù),所以,此方式只能用于不會(huì)出現(xiàn)中斷嵌套的系統(tǒng)。 非自動(dòng)中斷結(jié)束方式:使用本方式,必須在中斷服務(wù)程序的末尾、中斷返回指令之前,放置中斷結(jié)束命令(EOI) ,以清除ISR中被置“1”的位。 中斷結(jié)束命令有2種形式: 不指定的中斷結(jié)束命令: 只需設(shè)置OCW2=0010000B。 指定的中斷結(jié)束命令:在操作命

26、令字中指定要結(jié)束的中斷請(qǐng)求線IRi的編號(hào)。即設(shè)置 OCW2=00100L2L1L0,后三位用于指定編號(hào)。 上述清除ISR中的置1位的目的在于保證本中斷服務(wù)結(jié)束后,其它優(yōu)先級(jí)較低的中斷源的中斷請(qǐng)求能被響應(yīng)。 55四、8259A的中斷操作功能及其命令 初始化命令字1. 中斷請(qǐng)求觸發(fā)方式的設(shè)定及8259A芯片數(shù)目的選擇(ICW1) 8259A有四條初始化命令字:ICW1ICW4,它們按照一定的順序送入,設(shè)置8259A的初始狀態(tài)。 8259A有兩種檢測(cè)外設(shè)中斷請(qǐng)求的方式。 電平觸發(fā)方式 邊沿觸發(fā)方式 觸發(fā)方式由ICW1的D3位來選擇,芯片數(shù)目由D1位決定。 ICW1的格式如下: 5657 CPU向82

27、59A發(fā)送初始化命令字ICW1的標(biāo)識(shí)是:A0=0和D41。前者是地址信息,后者是ICW1的特征位。它啟動(dòng)8259A的初始化過程,還產(chǎn)生若干隱含的動(dòng)作:清除IMR,設(shè)置完全嵌套方式的中斷優(yōu)先級(jí)排隊(duì),設(shè)置讀IRR方式。 ICW2是8259A為CPU準(zhǔn)備的一個(gè)8位的中斷類型號(hào)。 但要注意,在初始化編程時(shí)用戶通過ICW2寫入8259A的僅僅只是其中的高5位 (D7D3)。而低3位(D2D0)則由8259A在第一個(gè)INTA到來時(shí),自動(dòng)將被響應(yīng)的中斷請(qǐng)求線IRi的優(yōu)先級(jí)編碼(3位)寫入,共同組成一個(gè)提供給CPU的中斷號(hào)??梢娡黄械母髦袛嗵?hào)的高5位都是相同的。2. 中斷類型號(hào)的設(shè)置(ICW2)58ICW

28、2的格式如下:593. 中斷級(jí)聯(lián)方式設(shè)置(ICW3)級(jí)聯(lián)的結(jié)構(gòu)形式 在級(jí)聯(lián)方式時(shí)中斷控制系統(tǒng)由一片8259A作為主片,若干其它8259A作為從片組成。 下圖所示系統(tǒng)中包括了一個(gè)主片和兩個(gè)從片,共提供了22個(gè)中斷等級(jí)。 60 當(dāng)ICW1中的SNGL寫入0時(shí),表示多片8259A級(jí)聯(lián),此時(shí)需要分別對(duì)主片和從片初始化。 ICW3的主要任務(wù):.主片ICW3指定主片的哪個(gè)中斷輸入引腳(IRi)接從片;.從片ICW3指定從片的標(biāo)志碼。 從片的中斷輸出信號(hào)(INT)與主片的哪個(gè)中斷輸入引腳(IRi)相接,該IRi引腳的編碼就是從片標(biāo)志碼。 主、從片ICW3的格式不同。主片的ICW3中某一位為1時(shí),表示該位對(duì)應(yīng)

29、的IRi端接一個(gè)從片。而從片的低3位則是標(biāo)識(shí)碼,高5位無效。6162級(jí)聯(lián)方式下從片中斷申請(qǐng)及響應(yīng)的過程假定一個(gè)從片的若干個(gè)IRi輸入端接收到中斷申請(qǐng):.從片內(nèi)中斷判優(yōu)。根據(jù)判優(yōu)結(jié)果由INT端(高電平有效)向主片提出中斷申請(qǐng)。.主片內(nèi)中斷判優(yōu)。主片接到申請(qǐng)(也可能有多個(gè)從片同時(shí)提出申請(qǐng))后,也要進(jìn)行判優(yōu),并根據(jù)判優(yōu)結(jié)果由主片INT端(高電平有效)向CPU提出中斷請(qǐng)求。.在CPU響應(yīng)中斷后,第一個(gè)INTA脈沖使所有的8259A得到通知:中斷申請(qǐng)已被允許。與此同時(shí),主片8259A把申請(qǐng)被響應(yīng)的從片的ID碼送上CAS02總線,通知讓該從片在下一個(gè)INTA到來時(shí),把中斷號(hào)送上數(shù)據(jù)總線,這樣就完成了中斷響

30、應(yīng)。63 在中斷響應(yīng)時(shí),由于級(jí)聯(lián)的主片和從片分別將對(duì)應(yīng)的ISR位置位。所以對(duì)非自動(dòng)EOI方式,在中斷服務(wù)完畢后必須發(fā)出兩個(gè)EOI命令,一個(gè)給主片,一個(gè)給從片。64D4(SFNM)=1:設(shè)置特定完全嵌套方式。這種方式使8259A能響應(yīng)與正在服務(wù)的中斷同級(jí)或高級(jí)別的中斷請(qǐng)求。級(jí)聯(lián)方式下的主片必須使用這種方式。 在級(jí)聯(lián)方式下,有一點(diǎn)要特別注意,那就是主片ISR不能區(qū)別來自同一從片的中斷嵌套。因此,來自從片的中斷服務(wù)程序結(jié)束后,必須先讀該從片的ISR,只有它為全0時(shí)才能向主片發(fā)送EOI命令。否則將會(huì)使從片的其它中斷得不到服務(wù)。 65 D4=0:設(shè)置一般的完全嵌套方式。 D3(BUF):指示8259A是

31、否工作在緩沖方式以決定SP/ /EN的功能。 0:非緩沖方式,SP/ /EN用作主/ /從片選擇的輸入控制信號(hào)。 1:緩沖方式, SP/ /EN用作允許緩沖器發(fā)送/接收的輸出控制信號(hào)。 D2(M/ /S):在D3=1時(shí)用作主從片選擇。 1:表示主片,0:表示從片。 當(dāng)D3=0時(shí),D2(M/S)無效。例: D3D2(BUF,M/ /S)=11:8259A用作緩沖方式下的主片。 D3D2(BUF,M/ /S)=10:8259A用作緩沖方式下的從片。 6667 8259A的中斷結(jié)束方式有兩種:自動(dòng)結(jié)束和非自動(dòng)結(jié)束(正常結(jié)束)。 D1=1:設(shè)置中斷自動(dòng)結(jié)束方式。在中斷服務(wù)程序中不需要寫入中斷結(jié)束命令(

32、EOI),它通常用于非嵌套中斷系統(tǒng)。 D1=0:設(shè)置非自動(dòng)結(jié)束方式。要求在中斷服務(wù)程序中寫入中斷結(jié)束命令(EOI) 。 D0=1:8259A用于16位以上機(jī)。 D0=0:用于8位機(jī)。 6869操作命令1. 中斷屏蔽操作命令字(OCW1) 用于向IMR寫入對(duì)中斷請(qǐng)求IR的屏蔽信息,其格式如圖:其中,Mi與IRi相應(yīng)。 可見,在程序中可以按需要對(duì)一個(gè)和多個(gè)中斷請(qǐng)求進(jìn)行屏蔽或開放。但要注意,在某中斷請(qǐng)求IRi被屏蔽期間,IRR中的相應(yīng)位i仍能接受該中斷請(qǐng)求的觸發(fā)而置位。只是,在被屏蔽期間,該中斷請(qǐng)求不能被響應(yīng)。一旦在程序中撤銷了對(duì)它的屏蔽,此時(shí)如果該中斷請(qǐng)求IRi仍然存在(高電平),則它將被響應(yīng)。(

33、見圖) 7071D0D2位:L0L2是用來指定中斷等級(jí)(07)。以便對(duì)指定的ISR位復(fù)位或從指定的優(yōu)先級(jí)開始輪換。與D6位配合使用。D5位:EOI=1:表示本OCW2是中斷結(jié)束命令。(此時(shí)就配合有ICW4的AEOI=0) EOI=0:表示本OCW2不是中斷結(jié)束命令,8259采用的是自動(dòng)中斷結(jié)束方式。(與ICW4的AEOI=1配合)72D 6位:SL用來設(shè)置是否指定中斷級(jí)。 SL=1:需要指定,并用L0L2位來指定中斷等級(jí)。 SL=0:不需要指定,應(yīng)使L0L2=000D7位: R=1:采用優(yōu)先權(quán)輪換,并且按照SL,EOI及L2L0各位的組態(tài)來執(zhí)行優(yōu)先級(jí)指定輪換; R=0:不采用優(yōu)先權(quán)輪換,即優(yōu)先

34、權(quán)固定。 73OCW2具有2個(gè)功能: 構(gòu)成中斷結(jié)束命令。以執(zhí)行非自動(dòng)中斷結(jié)束方式的操作。 在ICW4中設(shè)置了AEOI=0時(shí),要使用OCW2來執(zhí)行非自動(dòng)結(jié)束方式的操作。包含: 不指定的EOI方式(SL=0) :復(fù)位對(duì)象是ISR的當(dāng)前置1位中的最高優(yōu)先級(jí)位。 此方式用于完全嵌套方式下,由CPU利用程序發(fā)送結(jié)束命令(EOI)給8259A,使ISR中優(yōu)先級(jí)最高的置1位清0,從而結(jié)束該位對(duì)應(yīng)的中斷。也就是結(jié)束最高級(jí)別的中斷服務(wù)。 74指定的EOI方式(SL=1):復(fù)位指定的ISR位。 本方式用于8259不工作于完全嵌套的方式。因?yàn)榇藭r(shí)正在服務(wù)的中斷的級(jí)別不一定具有最高的優(yōu)先級(jí)。本方式是在操作命令字中指定

35、要結(jié)束的中斷等級(jí)碼(由L2L0給出該碼)。即指定ISR中與該中斷等級(jí)碼相應(yīng)的需要復(fù)位的位。 本命令可用于任何優(yōu)先級(jí)管理方式。 75 中斷排隊(duì)方式的操作 優(yōu)先權(quán)固定方式(R=0):即為完全嵌套方式。 優(yōu)先權(quán)輪換方式(R=1):優(yōu)先級(jí)順序不固定。剛服務(wù)完的中斷的優(yōu)先級(jí)最低。它的下一個(gè)等級(jí)成為最高優(yōu)先級(jí)。 .優(yōu)先級(jí)指定輪換(SL=1):從指定的優(yōu)先級(jí)開始輪換。 .優(yōu)先級(jí)自動(dòng)輪換(SL=0):從IR0開始輪換。注: “指定輪換” 必配有L2L0=指定的最低優(yōu)先級(jí)。 7677 D0:用于選讀ISR或IRR。 RIS=1:讀ISR; R1S=0:讀IRR。 RIS的狀態(tài)僅在RR位為1時(shí)有效。 IMR的讀出

36、不必先發(fā)指定命令,只要讀奇地址端口即可(見208)。 78D1:讀寄存器允許位RR=1:允許CPU按RIS位的設(shè)置讀寄存器,選定后直到再次選定以前寄存器不變;RR=0:不允許讀寄存器。 79D2:P用于發(fā)送查詢命令。 P=1:通知8259A,CPU將執(zhí)行一條讀查詢字的指令(A0=0),并且同時(shí)使讀其它寄存器命令無效,CPU每讀一次查詢字之前都要發(fā)送該命令; P=0:不執(zhí)行讀查詢字的指令。 D5:SMM用于設(shè)置特定屏蔽方式。 SMM=1:設(shè)置特定屏蔽方式 SMM=0: 撤銷特定屏蔽方式。 D6:ESMM為允許特定屏蔽方式位 ESMM=0:SMM位無效 ESMM=1:SMM位有效 80查詢中斷方式

37、的操作 8259A提供了一條查詢命令供CPU訪問8259A的查詢字,以支持查詢中斷。 在有中斷請(qǐng)求的情況下,CPU根據(jù)查詢字提供的申請(qǐng)服務(wù)的最高優(yōu)先級(jí)編碼和程序中預(yù)先設(shè)計(jì)好的算法來獲取中斷向量,轉(zhuǎn)入中斷服務(wù)程序。查詢字格式:81讀取查詢字的操作方法順序如下:例:CLI MOV AL,0CH MOV DX,20H OUT DX,AL IN AL,DX STI .CPU關(guān)中斷(CLI). 發(fā)出查詢命令(使OCW3中的P=1即可) .緊接著再發(fā)一個(gè)讀查詢字的IN指令。8259A把它作為CPU對(duì)它的中斷響應(yīng),如果此時(shí)有中斷請(qǐng)求,則以最高等級(jí)的中斷請(qǐng)求為依據(jù),8259A將ISR的相應(yīng)位置1,將特定的“查

38、詢字”送數(shù)據(jù)總線給CPU。.CPU開中斷(STI) 82讀狀態(tài)操作(指讀IRR、ISR、IMR的操作)要先選后讀。即先發(fā)出讀狀態(tài)操作命令OCW3(即RR=1,RIS=0/1),后發(fā)IN指令讀之即可。若想改變所讀寄存器,可重發(fā)一次OCW3(使RR=1,RIS的值與原來相反即可)。 83特定屏蔽方式的操作 允許在中斷服務(wù)過程中響應(yīng)除正在服務(wù)的中斷級(jí)之外的其它所有等級(jí)的中斷。主要是用于在完全嵌套方式下實(shí)現(xiàn)對(duì)低等級(jí)中斷請(qǐng)求的嵌套。 基本作法: .先關(guān)中斷(標(biāo)志IF=0), .再發(fā)OCW1命令把正在服務(wù)的那些中斷都屏蔽起來, .然后發(fā)特定屏蔽方式命令OCW3(即:使ESMM=1,SMM=1)實(shí)現(xiàn)特定屏蔽

39、方式, .最后開中斷(IF=1)即可。 若要恢復(fù)原方式,可作相反處理,先關(guān)中斷,發(fā)復(fù)位特定屏蔽方式命令(即:ESMM=1,SMM=0),解除被屏蔽的ISR位。 84855.4 8259A在微機(jī)系統(tǒng)中的應(yīng)用一、8259A編程命令的使用 注意,PC微機(jī)由系統(tǒng)軟件執(zhí)行8259A的初始化編程和中斷向量的裝入,不允許用戶自己去做。用戶只能對(duì)沒有配置完善OS的單板機(jī)去做。 因此,在PC機(jī)上開發(fā)中斷處理程序,不能用ICW1ICW4去進(jìn)行初始化,只需使用OCW1、OCW2進(jìn)行中斷屏蔽/開放和發(fā)EOI命令。而OCW3則很少使用。861. 初始化命令字(ICW) 初始化命令一定要按規(guī)定的順序?qū)懭?,主片、從片要分別

40、進(jìn)行初始化。初始化編程的主要任務(wù)是:設(shè)定中斷請(qǐng)求信號(hào)的有效觸發(fā)形式。設(shè)定8259A是單片還是多片級(jí)聯(lián)方式設(shè)置中斷類型號(hào)設(shè)置優(yōu)先排隊(duì)規(guī)則。設(shè)定中斷結(jié)束時(shí)的操作原則。87882. 操作命令字(OCW) 對(duì)8259A完成初始化后,若用戶還需要設(shè)定某些操作方式,則可以通過CPU發(fā)操作命令OCW對(duì)中斷控制器進(jìn)行動(dòng)態(tài)控制。 8259A的OCW與ICW不同,OCW不需要按順序發(fā)送,其位置也可按需要而定。 89返回90第6章 中斷系統(tǒng)與可編程8259A3.8259A的初始化編程的初始化編程 例題例題6-3 設(shè)8086系統(tǒng)中,8259A的端口地址為208H、209H,中斷請(qǐng)求信號(hào)采用電平觸發(fā)方式,單片8259A

41、,中斷類型號(hào)高5位為00010,中斷源接在IR3中,不用特殊全嵌套方式,用非自動(dòng)結(jié)束方式,非緩沖方式。編寫初始化程序。 解:解:MOV DX ,208H ;8259A偶地址MOV AL , 00011011B;設(shè)置ICW1控制字,要寫ICW4、單片、電平觸發(fā)OUT DX , ALMOV AL , 00010011B;設(shè)置ICW2中斷類型號(hào),中斷類型號(hào)高5位為00010,中斷源接在IR3中MOV DX , 209H ;8259A奇地址OUTDX , ALMOV AL , 00000001B;控制字ICW4,不用特殊全嵌套方式,用非自動(dòng)結(jié)束方式,非緩沖方式OUT DX,AL第6章 中斷系統(tǒng)與可編程

42、8259A 例題例題6-4 設(shè)8086系統(tǒng)中,8259A的端口地址為208H、209H,中斷請(qǐng)求信號(hào)采用邊沿觸發(fā)方式,單片8259A,中斷類型號(hào)為08H,用普通中斷結(jié)束命令,固定優(yōu)先級(jí),編寫初始化程序。 解:MOV DX ,208H ;8259A偶地址MOV AL , 00010011B;設(shè)置ICW1控制字,要寫ICW4、單片、邊沿觸發(fā)OUT DX , ALMOV AL , 08H;設(shè)置ICW2中斷類型號(hào)為08H MOV DX , 209H ;8259A奇地址OUTDX , ALMOV AL , 00001101B;控制字ICW4,固定優(yōu)先級(jí),普通EOI方式,緩沖方式OUT DX,AL在中斷服

43、務(wù)結(jié)束時(shí),需要向8259A設(shè)置操作命令字OCW2=20H,如下所示。MOV DX 208HMOV AL,20H ;寫OCW2, 普通EOI方式OUT DX,AL 8259A的中斷屏蔽寄存器IMR的內(nèi)容可隨時(shí)通過讀指令(IN指令)從奇地址端口讀取。也就是說讀取IMR與OCW3控制字無關(guān),可在程序的任何位置安排IN指令來實(shí)現(xiàn)。將IMR的內(nèi)容讀入CPU之后,可根據(jù)實(shí)際應(yīng)用的需要做相應(yīng)的處理。第6章 中斷系統(tǒng)與可編程8259A 例題例題6-5 將IMR的內(nèi)容讀入CPU,并且開放IR7中斷,設(shè)8259A的地址為20H、21H。 解:IN AL ,21H ;讀IMR,21H是8259A奇地址端口AND A

44、L ,7FH OUT 21H ,AL ;開放IR7中斷(看OCW1,IR7=0) 例題例題6-6 將IMR的內(nèi)容讀入CPU,并且屏蔽IR7中斷,設(shè)8259A的地址為20H、21H。 解:解: IN AL ,21H ;讀IMR,21H是8259A奇地址端口 OR AL ,80H OUT 21H ,AL ;屏蔽IR7中斷(看OCW1,IR7=1)分析項(xiàng)目1、項(xiàng)目2、項(xiàng)目3、項(xiàng)目4、項(xiàng)目5的電路原理框圖及接線圖,分析程序流程圖,分析程序。第6章 中斷系統(tǒng)與可編程8259A4.8259A的應(yīng)用的應(yīng)用分析項(xiàng)目1、項(xiàng)目2、項(xiàng)目3、項(xiàng)目4、項(xiàng)目5的電路原理框圖及接線圖,分析程序流程圖,分析程序。6.2 82

45、59A芯片引腳和內(nèi)部結(jié)構(gòu)芯片引腳和內(nèi)部結(jié)構(gòu) 6.2.1項(xiàng)目項(xiàng)目2:用:用8259A中斷控制中斷控制LED燈左循環(huán)亮燈左循環(huán)亮 1項(xiàng)目要求與目的項(xiàng)目要求與目的 (1)項(xiàng)目要求:用8086控制8259可編程中斷控制器,實(shí)現(xiàn)對(duì)外部中斷的響應(yīng)和處理。編寫程序?qū)崿F(xiàn)8086響應(yīng)外部中斷8259的IR0,每按一次脈沖按鈕,結(jié)果用8255的PA口輸出到LED發(fā)光二極管燈左循環(huán)亮。(2)項(xiàng)目目的:了解8259A的芯片引腳及內(nèi)部結(jié)構(gòu)。了解8259的初始化編程。了解8086與8259的連接方法。第6章 中斷系統(tǒng)與可編程8259A2項(xiàng)目電路連接與說明項(xiàng)目電路連接與說明(1)項(xiàng)目電路連接:如圖6-9所示的粗線為要接的連

46、線,接線描述如下:8259A的片選CS連至地址譯碼處的210217插孔;8255A的片選CS連至地址譯碼處的200207插孔;將8只LED發(fā)光二極管連接至8255A的PA0PA7插孔;將UP脈沖按鈕連接至8259A的IR0插孔。(2)項(xiàng)目說明:8259可外接8個(gè)中斷源,本項(xiàng)目只響應(yīng)INT0中斷,8259也可以多級(jí)連接,以響應(yīng)多個(gè)中斷源。將單脈沖信號(hào)接到8259的INT0腳。每按一下UP,8259A就中斷一次,LED發(fā)光二極管燈左循環(huán)亮。在編程時(shí)應(yīng)注意: 正確地設(shè)置可編程中斷控制和工作方式。 必須正確地設(shè)置中斷服務(wù)程序地址。第6章 中斷系統(tǒng)與可編程8259A3項(xiàng)目電路原理框圖項(xiàng)目電路原理框圖 項(xiàng)

47、目電路原理框圖如圖6-9所示。電路由8086CPU、8255A芯片、8259A芯片、8只發(fā)光二極管LED0LED7和脈沖按鈕UP組成。 圖6-9 用8259A中斷控制LED燈左循環(huán)亮電路圖第6章 中斷系統(tǒng)與可編程8259A4項(xiàng)目程序設(shè)計(jì)項(xiàng)目程序設(shè)計(jì) (1)程序流程圖 用8259A中斷控制LED燈左循環(huán)亮程序流程圖如6-10所示。圖6-10 用8259A中斷控制LED燈左循環(huán)亮程序流程圖 第6章 中斷系統(tǒng)與可編程8259A (2)程序清單 用8259A中斷控制LED燈左循環(huán)亮程序清單如下所示。 DATA SEGMENTDATA ENDS STACK SEGMENT STACKSTA DW 50

48、DUP(?)STACK ENDSCODE SEGMENT ASSUME CS:CODE,DS: DATA ,SS:STACK START :MOV AL,13H ; 00010011B,ICW1:邊沿觸發(fā),單片,要ICW4 MOV DX,210H ; 8259地址 OUT DX,AL MOV AL,8 ; ICW2中斷類型號(hào)為8 MOV DX,211H OUT DX,AL第6章 中斷系統(tǒng)與可編程8259A MOV AL,01H ; ICW4不用緩沖方式,正常中斷結(jié)束,非特殊的全嵌套方式 OUT DX,AL MOV AX,0 ; 清零 MOV DS,AX ; 數(shù)據(jù)段清零 LEA AX,INT0

49、; 寫8259中斷程序的入口地址 MOV DS:4*8,AX; 把中斷服務(wù)程序的入口地址偏移量送中斷矢量表 MOV AX,CS MOV DS:4*8+2,AX; 把中斷服務(wù)程序的入口地址段地址送中斷矢量表 IN AL,DX ;讀中斷屏蔽寄存器IMR, AND AL,0FEH ;屏蔽IR1IR7,允許IR0中的中斷請(qǐng)求 OUT DX,AL MOV DX,203H ; 8255初始化 MOV AL,80H ; A口輸出,方式0 OUT DX,AL MOV BL,0FEH ;LED0燈亮(低電平燈亮) MOV AL,BL MOV DX,200H OUT DX,AL ;PA0燈亮 STI ;開中斷第6

50、章 中斷系統(tǒng)與可編程8259A REPEAT :HLT JMP REPEAT ;等待 INT0 PROC NEAR ;8259中斷程序 ROL BL,1 ;左循環(huán)1次 MOV AL,BL MOV DX,200H ; PA口燈亮 OUT DX,AL MOV DX,210H MOV AL,20H ; OCW2發(fā)結(jié)束命令EOI=1 OUT DX,AL IRET INT0 ENDP CODE ENDS END START第6章 中斷系統(tǒng)與可編程8259A6.4 項(xiàng)目擴(kuò)展與工程應(yīng)用項(xiàng)目擴(kuò)展與工程應(yīng)用 6.4.1項(xiàng)目項(xiàng)目4:中斷控制跑馬燈:中斷控制跑馬燈1項(xiàng)目要求與目的項(xiàng)目要求與目的 (1)項(xiàng)目要求:用8

51、086控制8259可編程中斷控制器,實(shí)現(xiàn)對(duì)外部中斷的響應(yīng)和處理,用LED代替跑馬燈,正常情況下執(zhí)行跑馬燈右循環(huán),當(dāng)8086響應(yīng)外部中斷8259的IR0時(shí),每按一次脈沖按鈕,跑馬燈左循環(huán)7個(gè)燈,編寫程序?qū)崿F(xiàn)。(2)項(xiàng)目目的:熟悉8259A的芯片引腳及內(nèi)部結(jié)構(gòu)。掌握8086與8259的連接方法。熟悉8086對(duì)8259的控制方法及編程方法。熟悉8086對(duì)8255的控制方法及編程方法。熟悉跑馬燈的控制方法及編程方法。第6章 中斷系統(tǒng)與可編程8259A2項(xiàng)目電路連接與說明項(xiàng)目電路連接與說明(1)項(xiàng)目電路連接:如圖6-26所示的粗線為要接的連線,接線描述如下:8259A的片選CS連至地址譯碼處的21021

52、7插孔;8255A的片選CS連至地址譯碼處的200207插孔;將8只LED發(fā)光二極管連接至8255A的PA0PA7插孔;將UP脈沖按鈕連接至8259A的IR0插孔。(2)項(xiàng)目說明:8259可外接8個(gè)中斷源,本項(xiàng)目只響應(yīng)INT0中斷。將單脈沖信號(hào)接到8259的IR0腳。每按一下UP,8259A就中斷一次,跑馬燈左循環(huán)7個(gè)燈。正常情況下執(zhí)行跑馬燈右循環(huán),編寫程序?qū)崿F(xiàn)。在編程時(shí)應(yīng)注意: 正確地設(shè)置可編程中斷控制和工作方式。 必須正確地設(shè)置中斷服務(wù)程序地址。第6章 中斷系統(tǒng)與可編程8259A3項(xiàng)目電路原理框圖項(xiàng)目電路原理框圖 項(xiàng)目電路原理框圖如圖6-26所示。電路由8086CPU、8255A芯片、82

53、59A芯片、8只發(fā)光二極管LED0LED7和脈沖按鈕UP組成。圖6-26 中斷控制跑馬燈電路圖 第6章 中斷系統(tǒng)與可編程8259A4項(xiàng)目程序設(shè)計(jì)項(xiàng)目程序設(shè)計(jì)(1)程序流程圖 中斷控制跑馬燈程序流程圖如6-27所示。 (a) 主程序 (b)中斷服務(wù)程序 圖6-27 中斷控制跑馬燈程序流程圖 第6章 中斷系統(tǒng)與可編程8259A(2)程序清單 中斷控制跑馬燈程序清單如下所示。 DATA SEGMENTDATA ENDS STACK SEGMENT STACKSTA DW 50 DUP(?)STACK ENDSCODE SEGMENT ASSUME CS:CODE,DS: DATA ,SS:STACK

54、 START :MOV AL,13H ; 00010011B,ICW1:邊沿觸發(fā),單片,要ICW4 MOV DX,210H ; 8259地址 OUT DX,AL MOV AL,8 ; ICW2中斷類型號(hào)為8 MOV DX,211H OUT DX,AL MOV AL,01H ; ICW4不用緩沖方式,正常中斷結(jié)束,非特殊的全嵌套方式 OUT DX,AL MOV AX,0 ; 清零 MOV DS,AX ; 數(shù)據(jù)段清零 第6章 中斷系統(tǒng)與可編程8259A LEA AX,INT0 ; 寫8259中斷程序的入口地址 MOV DS:4*8,AX; 把中斷服務(wù)程序的入口地址偏移量送中斷矢量表 MOV AX,

55、CS MOV DS:4*8+2,AX; 把中斷服務(wù)程序的入口地址段地址送中斷矢量表 IN AL,DX ; 讀中斷屏蔽寄存器IMR, AND AL,0FEH ; 屏蔽IR1IR7,允許IR0中的中斷請(qǐng)求 OUT DX,AL MOV DX,203H ; 8255初始化 MOV AL,80H ; A口輸出,方式0 OUT DX,AL STI ; 開中 MOV BL,0FEH ;LED0燈亮(低電平燈亮) BG: MOV AL,BL MOV DX,200H OUT DX,AL ;跑馬燈亮 CALL DELAY ;100ms延時(shí)子程序 ROR BL,1 ;右循環(huán) JMP BG ;等待INT0 PROC

56、NEAR ; 8259中斷程序 MOV AH,07H ;置循環(huán)次數(shù) BG1: ROL BL,1 ; 左循環(huán)1次 MOV AL,BL第6章 中斷系統(tǒng)與可編程8259A MOV DX,200H ; PA口燈亮 OUT DX,AL CALL DELAY ;100ms延時(shí)子程序 DEC AH JNZ BG1 MOV DX,210H MOV AL,20H ; OCW2發(fā)結(jié)束命令EOI=1 OUT DX,AL IRET INT0 ENDP DELAY PROC NEAR ;延時(shí)100ms子程序MOV BH,100DELAY2: MOV CX,374DELAY1: NOP NOP LOOP DELAY1 D

57、EC BH JNZ DELAY2 RETDELAY ENDP CODE ENDS END START第6章 中斷系統(tǒng)與可編程8259A6.4.2項(xiàng)目項(xiàng)目5:兩個(gè)外部中斷源中斷:兩個(gè)外部中斷源中斷 1項(xiàng)目要求與目的項(xiàng)目要求與目的 (1)項(xiàng)目要求:用8086CPU控制8259可編程中斷控制器,實(shí)現(xiàn)對(duì)兩個(gè)外部中斷的響應(yīng)和處理。要求程序中對(duì)IR0每次中斷進(jìn)行計(jì)數(shù),并將累計(jì)計(jì)數(shù)結(jié)果用8255的PA口輸出到LED顯示;對(duì)IR1每次中斷,去控制繼電器動(dòng)作,使LED閃爍。(2)項(xiàng)目目的:掌握8259A的初始化編程方法。掌握8086與8259的連接方法。了解8086對(duì)8255的編程方法。第6章 中斷系統(tǒng)與可編程

58、8259A2項(xiàng)目電路連接與說明項(xiàng)目電路連接與說明(1)項(xiàng)目電路連接:如圖6-28所示的粗線為要接的連線,接線描述如下:8259A的片選CS連至地址譯碼處的210217插孔;8255A的片選CS連至地址譯碼處的200207插孔;將8只LED發(fā)光二極管連接至8255A的PA0PA7插孔,PB0接到繼電器的控制端上;將UP脈沖按鈕連接至8259A的IR0插孔,將DOWN脈沖連接至8259A的IR1插孔。(2)項(xiàng)目說明:8086需要外接中斷控制器才能對(duì)外部中斷進(jìn)行處理。8259可外接8個(gè)中斷源,本項(xiàng)目只響應(yīng)IR0、IR1中斷。將單脈沖信號(hào)UP接到8259的IR0腳,每次中斷時(shí),可以看到LED顯示會(huì)加1;將單脈沖信號(hào)DOWN接到8259的IR1腳,每次中斷時(shí),可以看到繼電器控制的LED燈閃爍。在編程時(shí)應(yīng)注意: 正確地設(shè)置可編程中斷控制和工作方式。 必須正確地設(shè)置中斷服務(wù)程序地址。 本實(shí)驗(yàn)是LED燈是低電平亮。第6章 中斷系統(tǒng)與可編程8259A3項(xiàng)目電路原理框圖項(xiàng)目電路原理框圖 項(xiàng)目電路原理框圖如圖6-28所示。電路由8086CPU、8255A芯片

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論