




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第 七 章輸入輸出接口本章學(xué)習(xí)目標(biāo)了解接口的概念以及接口的基本結(jié)構(gòu);掌握幾個(gè)典型接口芯片邏輯及其結(jié)構(gòu);在熟練匯編語言的基礎(chǔ)上,掌握具體接口芯片的編程;熟悉關(guān)于接口的程序編寫方法和BIOS功能調(diào)用,能夠編寫出實(shí)用的IO程序。Pentium微機(jī)的主板與IBM PC/XT有發(fā)展:第一:pentium機(jī)主板支持更廣泛的應(yīng)用領(lǐng)域。如多媒體和網(wǎng)絡(luò)技術(shù)。第二:集成技術(shù)的發(fā)展,使原來多種功能獨(dú)立的IO控制集成在南橋芯片中。參考教材146頁圖6.4 ICH5G結(jié)構(gòu)原理圖。 從學(xué)習(xí)的角度和編程應(yīng)用的角度,仍然遵從IBM PC/XT的輸入輸出接口方式。I/O接口的基本功能: (為什么要用I/O接口電路)總的來說,I
2、/O接口具有下述三方面功能: (1)速度的匹配 (2)信息格式的變換:包括串并轉(zhuǎn)換, A/D,D/A轉(zhuǎn)換,電平轉(zhuǎn)換等。(3)提供主機(jī)和外設(shè)間傳送數(shù)據(jù)所必須的狀 態(tài)和控制信息。主機(jī)(CPU)和I/O設(shè)備之間傳送的信息格式1.數(shù)據(jù)信息:(1)數(shù)字量(計(jì)算機(jī)可以直接接收和處理的數(shù)據(jù))(2)模擬量2.狀態(tài)信息例如:輸入設(shè)備的“Ready”和輸出設(shè)備的“Busy”特點(diǎn):CPU外設(shè)接口 可讀(不可寫)3.控制信息:特點(diǎn):CPU外設(shè)接口 可寫(不可讀)控制對(duì)象傳感器執(zhí)行部件運(yùn)放功放A/DD/A微型計(jì)算機(jī)數(shù)字量模擬量內(nèi)容分布7.1 輸入輸出接口基礎(chǔ)(重點(diǎn))7.2 并行數(shù)據(jù)接口(重點(diǎn))7.3 中斷系統(tǒng)(重點(diǎn))7
3、.4 DMA傳送和DMA控制器82377.5 主機(jī)板上的計(jì)時(shí)計(jì)數(shù)邏輯(重點(diǎn))7.6 串行異步通信接口7.7 總線概述7.1輸入輸出接口基礎(chǔ)一、輸入輸出的基本方式微機(jī)系統(tǒng)中存在著存儲(chǔ)器地址空間和I/O端口地址空間。 與存儲(chǔ)器類似,在I/O端口地址空間中,占據(jù)一個(gè)輸入輸出地址的稱為一個(gè)端口(PORT)。 對(duì)8086微處理器從端口讀入數(shù)據(jù)的指令稱為輸入指令,助記符為IN; 向端口輸出數(shù)據(jù)的指令稱為輸出指令,助記符為OUT。指令的一般格式:名稱助記符和格式操作功能輸入IN AL, PORTIN AX, PORTIN AL, DXIN AX, DX(AL)(PORT)(AX)(PORT+1:PORT)(
4、AL)(DX)(AX)(DX)+1:(DX)輸出OUT PORT, ALOUT PORT, AXOUT DX, ALOUT DX, AX(PORT)(AL) (PORT+1:PORT)(AX) (DX)(AL) (DX)+1:(DX)(AX) 對(duì)于IN(或OUT )指令,目的地址DST的尋址方式為寄存器方式,字節(jié)輸入時(shí)為AL,字輸入時(shí)為AX。源操作數(shù)的尋址方式有兩種: 直接尋址方式(端口地址小于255) IN AL, 0FFH OUT 21H, AL 寄存器間接尋址方式(端口地址大于255) MOV DX,200H IN AL,DX OUT DX,AL輸入輸出指令的執(zhí)行不影響任何標(biāo)志位的狀態(tài)。
5、二、輸入輸出同步問題在實(shí)際數(shù)據(jù)傳輸過程中,有一個(gè)突出要解決的問題,就是主機(jī)與外部設(shè)備之間時(shí)間同步的問題,具體表現(xiàn)在:外部設(shè)備工作時(shí)有自己的定時(shí)機(jī)構(gòu),主機(jī)在運(yùn)行程序、執(zhí)行指令時(shí)也有自己的定時(shí)系統(tǒng),它們?cè)跁r(shí)間上是不同步的。一個(gè)微機(jī)系統(tǒng)中,如果有多個(gè)外部設(shè)備存在,也就存在這種可能性:兩個(gè)或多個(gè)設(shè)備同時(shí)要求與主機(jī)交換信息,主機(jī)如何優(yōu)先響應(yīng)。三、輸入輸出的基本工作方式主機(jī)與外設(shè)之間的輸入輸出共有三大類四小種方式。它們分別是: 程序直接控制傳送 (無條件傳送方式自設(shè)計(jì)小系統(tǒng) 查詢方式微機(jī)系統(tǒng)) 中斷方式 微機(jī)系統(tǒng) 存儲(chǔ)器直接訪問 (DMA)方式微機(jī)系統(tǒng)程序直接控制傳送方式無條件適用條件:外設(shè)的定時(shí)已知或固
6、定。 特點(diǎn):輸入輸出完全由IN/OUT指令實(shí)現(xiàn),用延時(shí)子程序?qū)崿F(xiàn)定時(shí)。 MOV CX, 8 MOV AL, 1A1:MOV DX, 201H OUT DX, AL SHL AL, 1 CALL DELAY LOOP A1延時(shí)子程序程序直接控制傳送方式查詢方式適用條件:外設(shè)的定時(shí)未知或不固定。 特點(diǎn):輸入輸出完全由IN/OUT指令實(shí)現(xiàn)。外部設(shè)備的狀態(tài)信息用IN指令輸入,然后查詢外設(shè)是否就緒?為就緒則繼續(xù)查詢;就緒則完成輸入輸出。程序直接控制I/O的程序結(jié)構(gòu)其他功能其他功能I/O指令傳輸數(shù)據(jù)從狀態(tài)端口讀入信息傳輸準(zhǔn)備好?YN查詢方式舉例: LEA SI, DATA1A1:IN AL, 40H TE
7、ST AL, 80H JNZ A1 MOV AL, SI MOV DX, 201H OUT DX, AL 設(shè)備狀態(tài)端口程序直接控制輸入輸出方式的特點(diǎn): 數(shù)據(jù)的傳輸靠執(zhí)行指令來實(shí)現(xiàn)。每個(gè)要輸入輸出的數(shù)據(jù)必須經(jīng)過微處理器中的寄存器AL和AX。 這種輸入輸出方式的優(yōu)點(diǎn)是簡單、實(shí)現(xiàn)容易。但存在明顯的缺點(diǎn):第一,為了測試和等待外部設(shè)備作好傳輸數(shù)據(jù)的準(zhǔn)備常常花費(fèi)大量的時(shí)間。在這段時(shí)間內(nèi),程序不能完成其他任務(wù),所以使系統(tǒng)的時(shí)間利用率大大降低。第二,CPU在一段時(shí)間里只能和一個(gè)外部設(shè)備之間傳輸數(shù)據(jù),其它設(shè)備只能等待。第三,不能發(fā)現(xiàn)和處理預(yù)先無法估計(jì)的錯(cuò)誤和異常現(xiàn)象。所以這種輸入輸出方式只適用于CPU數(shù)據(jù)處理任
8、務(wù)不煩忙,而且外部設(shè)備數(shù)較少的情況。中斷機(jī)制:程序中斷就是主機(jī)在運(yùn)行程序時(shí)出現(xiàn)了特殊情況,暫時(shí)停止執(zhí)行正在運(yùn)行的程序,轉(zhuǎn)到另一段處理特殊情況的程序,待特殊情況處理程序執(zhí)行完畢后,返回到被暫時(shí)停止的程序接著運(yùn)行。由于CPU內(nèi)部操作或執(zhí)行某些指令時(shí)引起的程序中斷,稱為內(nèi)部中斷;由于CPU外部信號(hào)引起的程序中斷,稱為外中斷。利用程序中斷機(jī)制,可以實(shí)現(xiàn)多種功能。借助于CPU響應(yīng)外中斷請(qǐng)求的能力,實(shí)現(xiàn)輸入輸出的控制,稱為程序中斷方式輸入輸出。中斷控制方式程序中斷輸入輸出方式可以概括出如下重點(diǎn): 雖然中斷機(jī)制參與了輸入輸出控制,但數(shù)據(jù)的傳輸仍然要靠在程序中排入I/O指令完成。 數(shù)據(jù)的輸入輸出由外部設(shè)備發(fā)起
9、。當(dāng)外部設(shè)備就緒(或有需求時(shí)),就向CPU的INTR端發(fā)送一個(gè)中斷請(qǐng)求信號(hào)。否則不發(fā)送中斷請(qǐng)求信號(hào)。CPU不主動(dòng)查詢外設(shè)狀態(tài),被動(dòng)響應(yīng)外設(shè)請(qǐng)求。 中斷控制輸入輸出是靠硬件和軟件相配合實(shí)現(xiàn)的。存儲(chǔ)器直接訪問DMA(Direct Memory Access)方式的基本思想是在外部設(shè)備和存儲(chǔ)器之間開辟直接的數(shù)據(jù)傳輸通路,數(shù)據(jù)傳輸不是靠執(zhí)行I/O指令,數(shù)據(jù)不經(jīng)過CPU內(nèi)的任何寄存器,也就不破壞任何寄存器原來存的內(nèi)容,而是在存儲(chǔ)器和外部設(shè)備之間的通路上直接傳輸數(shù)據(jù)。 這種I/O方式的實(shí)現(xiàn)主要靠硬件的功能。 在數(shù)據(jù)傳輸時(shí)沒有程序和指令介入。 高速外部設(shè)備與存儲(chǔ)器之間交換成批數(shù)據(jù)的情況。存儲(chǔ)器直接存取方式首
10、先,微處理器本身在設(shè)計(jì)時(shí)就能實(shí)現(xiàn)這種功能。8086的HOLD和HLDA這兩個(gè)引腳就是為這種I/O方式服務(wù)的。CPU將總線的控制權(quán)交給DMA控制器,使外部設(shè)備與存儲(chǔ)器之間有直接通路連通,并控制傳輸一個(gè)或多個(gè)字節(jié)。其次,組成微機(jī)系統(tǒng)時(shí),還必須配有DMA控制器,共同組成DMA控制機(jī)構(gòu),實(shí)現(xiàn)DMA傳輸所需要的全部功能。在數(shù)據(jù)傳輸時(shí),CPU只是暫停一個(gè)或幾個(gè)總線周期的時(shí)間,CPU內(nèi)各寄存器的內(nèi)容沒有任何改變,所以CPU的時(shí)間利用率比前兩種I/O方式大大提高。返回本章首頁三、輸入輸出接口的基本結(jié)構(gòu)接口(Interface)的基本意思是交接界面,所以任何相關(guān)的異體之間總存在這接口。 兩個(gè)系統(tǒng)之間有數(shù)據(jù)往來,
11、它們之間就存在接口; 一個(gè)微機(jī)系統(tǒng)內(nèi),由于各部分之間要交換信息,各部分之間也存在接口。 I/O接口的組成框圖部分存儲(chǔ)器和控制邏輯并行打印機(jī)接口CRT顯示器接口RS232C串行接口磁盤機(jī)接口其他設(shè)備接口系統(tǒng)總線部分存儲(chǔ)器和控制邏輯I/O指令控制邏輯中斷控制機(jī)構(gòu)DMA控制機(jī)構(gòu)其 它I/O邏輯微處理器主板其他設(shè)備磁盤機(jī)顯示器打印機(jī)外設(shè)接口硬件接口的控制在主板,連線用擴(kuò)展插槽最早是IBM PC/ XT系統(tǒng)總線62腳,由于PC/XT的微處理器是8088/8086,所以總線的地址為20位,數(shù)據(jù)線為8位,稱其為8位總線。在80286微處理器組成的IBM PC/AT系統(tǒng)總線出現(xiàn)以后,直至目前,使用最多的稱為I
12、SA(Industry Standard Architecture)總線,又稱PC/AT總線。它在8位的PC/AX總線基礎(chǔ)上擴(kuò)展成為16位總線。增加了36腳。后來又出現(xiàn)了EISA(Extended ISA)和MCA(Micro Channel Architecture)等32位總線。現(xiàn)在pentium機(jī)上常用的是PCI總線。接口一詞也與軟件有關(guān)。接口與軟件的關(guān)系有兩方面的含義。一方面的含義是接口的軟件。接口的功能的實(shí)現(xiàn)常常包括軟件,輸入輸出接口一般都是由硬件和軟件共同支持完成的,接口的開發(fā)自然包括必要的軟件開發(fā)。另一方面含義是軟件的接口。許多系統(tǒng)軟件包含許多子程序。為減輕應(yīng)用軟件開發(fā)的負(fù)擔(dān),允
13、許應(yīng)用軟件調(diào)用系統(tǒng)軟件中的子程序完成應(yīng)用軟件中某些要求的功能。IBM PC系統(tǒng)提供的接口資源基本配置的系統(tǒng)為I/O接口既提供了硬件資源又提供了軟件資源。提供硬件資源包括:在擴(kuò)充插槽上提供了系統(tǒng)級(jí)總線;主板上有鍵盤接口邏輯和揚(yáng)聲器接口邏輯;主板上有以兩片8259中斷控制器為核心組成的中斷控制邏輯;主板上有以兩片8237DMA控制器為核心組成的DMA傳送控制邏輯,共有8個(gè)數(shù)據(jù)通道,用于實(shí)現(xiàn)內(nèi)存與外設(shè)之間和內(nèi)存存儲(chǔ)區(qū)之間直接、快速、成批數(shù)據(jù)的傳送。主板上有一片8254定時(shí)計(jì)數(shù)器,有3個(gè)功能:第1個(gè)功能是用于當(dāng)日計(jì)時(shí),和CMOS共同組成定時(shí)計(jì)時(shí)系統(tǒng);第2個(gè)功能是為動(dòng)態(tài)存儲(chǔ)器刷新提供定時(shí)信號(hào);第3個(gè)功能
14、是通過編程向揚(yáng)聲器提供聲音信號(hào)。基本配置的系統(tǒng)微機(jī)包含的I/O接口卡可能有不同的組合,但在功能上和編程上是兼容的。通常包含以下接口邏輯: 顯示器接口; 兩個(gè)標(biāo)準(zhǔn)(Centronics)的并行打印機(jī)接口; 兩個(gè)標(biāo)準(zhǔn)(RS232)串行異步通信接口; 磁盤驅(qū)動(dòng)器接口,通常能連接兩個(gè)軟盤驅(qū)動(dòng)器和兩個(gè)硬盤驅(qū)動(dòng)器。此外,系統(tǒng)總線中還提供了相當(dāng)容量的5V、5V、12V和12V直流電源。系統(tǒng)為I/O接口提供的軟件資源 主要包括DOS的功能調(diào)用和BIOS(Basic Input/Output System)調(diào)用。BIOS本來是指固化在ROM中的程序,這些程序支持系統(tǒng)剛剛加電時(shí)的一系列初始功能,這些程序中還包含很
15、多輸入輸出子程序,用戶在編寫匯編語言程序時(shí)也可以調(diào)用它們。三、I/O指令所需的接口邏輯和端口地址分配 系統(tǒng)IO端口地址的分配十分重要。 I/O指令執(zhí)行時(shí),都必須有I/O端口地址的選擇。 端口地址的選擇與訪問存儲(chǔ)器時(shí)對(duì)存儲(chǔ)單元的地址選擇很相似,也是用譯碼器邏輯對(duì)系統(tǒng)總線中的地址總線進(jìn)行譯碼實(shí)現(xiàn)的。 微機(jī)系統(tǒng)中端口地址范圍為1024個(gè)端口,用低10條地址線進(jìn)行部分譯碼。在286的系統(tǒng)中,前256個(gè)端口(000H0FFH)提供主板上的接口芯片使用;后768的個(gè)端口(100H3FFH)供擴(kuò)展槽上的接口控制卡使用。返回本章首頁IO芯片DMAC1DMAC2DMA頁碼寄存器中斷控制器1中斷控制器2定時(shí)器并行
16、接口芯片RT/CMOS端口地址094H09FH0C0H0DFH080H090H020H021H0A0H0A1H040H043H060H063H070H073H 7.2 8255并行數(shù)據(jù)接口 Intel 8086/8088 系列的可編程外設(shè)接口電路(Programmable Peripheral Interface)簡稱 PPI,型號(hào)為8255(改進(jìn)型為8255A及8255A-5),具有24條輸入/輸出引腳、可編程的通用并行輸入/輸出接口電路。它是一片使用單一+5V電源的40腳雙列直插式大規(guī)模集成電路。8255A的通用性強(qiáng),使用靈活,通過它CPU可直接與外設(shè)相連接。 8255A具有三個(gè)相互獨(dú)立的
17、輸入/輸出通道:通道A、通道B、通道C。A,B,C三通道可以聯(lián)合使用,構(gòu)成單線、雙線或三線聯(lián)絡(luò)信號(hào)的并行接口。此時(shí)C口完全服務(wù)于A、B口。A口有三種工作方式:方式0、方式1、方式2。B口有兩種工作方式:方式0、方式1。8255A內(nèi)部結(jié)構(gòu)框圖8255A內(nèi)部結(jié)構(gòu)8255A內(nèi)部結(jié)構(gòu)由以下四部分組成: 數(shù)據(jù)端口A、B、C;A組控制和B組控制;讀/寫控制邏輯電路;數(shù)據(jù)總線緩沖器。 端口A: 包括一個(gè) 8 位的數(shù)據(jù)輸出鎖存/緩沖器和一個(gè) 8位的數(shù)據(jù)輸入鎖存器,可作為數(shù)據(jù)輸入或輸出端口, 并工作于三種方式中的任何一種。端口B: 包括一個(gè) 8 位的數(shù)據(jù)輸出鎖存/緩沖器和一個(gè) 8位的數(shù)據(jù)輸入緩沖器,可作為數(shù)據(jù)輸
18、入或輸出端口, 但不能工作于方式2。 端口C: 包括一個(gè) 8 位的數(shù)據(jù)輸出鎖存/緩沖器和一個(gè) 8位的數(shù)據(jù)輸入緩沖器, 可在方式字控制下分為兩個(gè)4位的端口(C端口上和下),每個(gè)4位端口都有4位的鎖存器, 用來配合端口A與端口B鎖存輸出控制信號(hào)和輸入狀態(tài)信號(hào),不能工作于方式1或2。A組和B組控制的作用如下:A組控制邏輯控制端口A及端口C的上半部; B組控制邏輯控制端口B及端口C的下半部。8255A芯片引腳信號(hào)123456789101112131415161718192021222324252627282930313233343536373839408255APA3PA2PA1PA0PA4PA5PA
19、6PA7PB7PB6PB5PB4PB3PB2PB1PB0PC7PC6PC5PC4PC0PC1PC2PC3WRRESETD0D1D2D3D4D5D6D7VCCRDCSGNDA0A1芯片引腳信號(hào)介紹和外設(shè)相連PA7PA0:A組數(shù)據(jù)信號(hào);PB7PB0:B組數(shù)據(jù)信號(hào);PC7PC0:C組數(shù)據(jù)信號(hào)。和CPU相連RESET:復(fù)位信號(hào),低電平有效。當(dāng)RESET信號(hào)來到時(shí),所有內(nèi)部寄存器都被清除,同時(shí)3個(gè)數(shù)據(jù)端口被自動(dòng)設(shè)為輸入端口。D7D0:8255A的數(shù)據(jù)線,與系統(tǒng)總線相連。CS:芯片選擇信號(hào),低電平有效。只有CS有效時(shí),8255A被選中。RD:芯片讀出信號(hào),低電平有效。當(dāng)RD有效時(shí),CPU可以從8255A讀
20、取輸入數(shù)據(jù)。WR:芯片寫入信號(hào),低電平有效。當(dāng)WR有效時(shí),CPU可以往8255中寫入控制字或數(shù)據(jù)。A1、A0:端口選擇信號(hào)。8255A內(nèi)部有3個(gè)數(shù)據(jù)端口和1個(gè)控制端口,共4個(gè)端口。規(guī)定當(dāng)A1A0的組合為00時(shí),選中A端口;為01時(shí),選中B端口;為10時(shí),選中C端口;為11時(shí),選中控制端口。8255A的控制信號(hào)和傳輸動(dòng)作的對(duì)應(yīng)關(guān)系CSA1A0RDWR傳輸說明00001數(shù)據(jù)從端口A送數(shù)據(jù)總線00101數(shù)據(jù)從端口B送數(shù)據(jù)總線01001數(shù)據(jù)從端口C送數(shù)據(jù)總線00010數(shù)據(jù)從數(shù)據(jù)總線送端口A00110數(shù)據(jù)從數(shù)據(jù)總線送端口B01010數(shù)據(jù)從數(shù)據(jù)總線送端口C01110寫控制字1D7D0進(jìn)入高阻態(tài)01101非
21、法的信號(hào)組合011D7D0進(jìn)入高阻態(tài)8255A的控制字8255A可以通過指令在控制端口中設(shè)備控制字來決定它的工作。控制字分為兩類:一類是芯片各端口的方式選擇控制字,它可以使8255A的3個(gè)數(shù)據(jù)端口工作在不同的工作方式。方式選擇控制字總是將3個(gè)數(shù)據(jù)端口分為兩組來設(shè)定工作方式,即端口A和端口C的高4位作為一組,端口B和端口C的低4位作為一組。另一類是C端口按位置1置0控制字,它可以使C端口中的任何一位進(jìn)行置位和復(fù)位。方式選擇控制字C端口置1置0控制字 需要特別指出的是,C端口置1置0控制字盡管是對(duì)端口C進(jìn)行操作,但此控制字必須寫入控制口,而不是寫入C端口。8255A的工作方式方式0是一種基本輸入或
22、輸出方式,它適用于無需握手信號(hào)的簡單輸入輸出應(yīng)用場合, 端口A、B、C都可作為輸入或輸出數(shù)據(jù)使用,輸出有鎖存而輸入無鎖存。 方式0的基本特點(diǎn)如下:任何一個(gè)端口可作為輸入口,也可作為輸出口,個(gè)端口之間沒有規(guī)定必然的關(guān)系。各個(gè)端口的輸入或輸出,可以有16種不同的組合,所以可以適用于多種場合。方式1也稱選通的輸入/輸出方式。在這種方式下,無論是輸入還是輸出都通過應(yīng)答關(guān)系實(shí)現(xiàn), 這時(shí)端口A或B用作數(shù)據(jù)口,端口C的一部分引腳用作握手信號(hào)線與中斷請(qǐng)求線。 方式1的基本特點(diǎn)如下:端口A和端口B可分別作為兩個(gè)數(shù)據(jù)口工作在方式1,并且任何一個(gè)端口可作為輸入口或輸出口。如果端口A和端口B只有一個(gè)端口工作于方式1,
23、那么端口中就有3位被規(guī)定為配合方式1工作的信號(hào),此時(shí)另一個(gè)端口可以工作在方式0,端口C中的其他數(shù)據(jù)位也可以工作在方式0。端口A和端口B都工作在方式1,那么端口C中就有6位被規(guī)定為配合方式1工作的信號(hào),剩下的2位,仍可作為輸入或輸出。PC3INTRPC5PC4IBFSTBA口輸入PC3INTRPC7PC6OBFACKA口輸出PC0INTRPC1PC2IBFSTBB口輸入PC0INTRPC1PC2OBFACKB口輸出方式2也稱選通的雙向I/O方式,僅適用于端口A, 這時(shí)A口的PA7PA0作為雙向的數(shù)據(jù)總線, 端口C有5條引腳用作端口A的握手信號(hào)線和中斷請(qǐng)求線,而B口和C口余下的3位仍可工作于方式0
24、或1。PC3INTRPC5PC4IBFSTBPC7PC6OBFACKA口 8255應(yīng)用舉例:下圖為一個(gè)通過并行接口8255控制LED發(fā)光的接口電路。已知8255的端口地址為218H21BH。試寫出使8個(gè)LED管自右至左依次發(fā)亮1秒的完整的匯編語言源程序。 8255應(yīng)用舉例要求使用程序直接控制I/O方式來輸出存儲(chǔ)器BUF緩沖區(qū)的10個(gè)字符,8255工作于方式0,打印機(jī)的STB信號(hào)的有效形式為上升沿,8255地址分配如下:A口地址80H,B口地址82H,C口地址84H,控制端口地址86H。 DATA SEGMENT BUF DB 10 DUP(?) DATA ENDS CODE SEGMENT A
25、SSUME CS:CODE, DS:DATA START: MOV AX, DATA MOV DS, AX MOV AL, 10000001B OUT 86H, AL LEA SI, BUF MOV CX, 10 WAITP: IN AL, 84H TEST AL, 04H JNZ WAITP MOV AL, SI INC SI OUT 80H, AL MOV AL, 00001100B OUT 86H, AL INC AL OUT 86H, AL LOOP WAITP MOV AH, 4CH INT 21H CODE ENDS END START返回本章首頁7.3中斷系統(tǒng)中斷是指CPU暫停正
26、在執(zhí)行的程序,轉(zhuǎn)去執(zhí)行處理中斷事件的中斷服務(wù)程序,待執(zhí)行完中斷服務(wù)程序再返回到原被中斷的程序繼續(xù)執(zhí)行。 在微機(jī)系統(tǒng)中,中斷的實(shí)現(xiàn)是靠微處理器本身的中斷功能(INTR和INTA引腳)和與之配合的外部中斷邏輯(中斷控制器為核心組成的)共同實(shí)現(xiàn)的。通常引起中斷的事件稱為中斷源。中斷的種類中斷外部硬中斷可屏蔽中斷(INTR)非可屏蔽中斷(NMI)內(nèi)部中斷軟中斷(INT指令)異常中斷陷阱中斷故障中斷終止如何區(qū)分不同中斷源? 在微處理器中,不同的中斷是以中斷類型號(hào)(字節(jié))來區(qū)別的。中斷類型號(hào)的范圍為0255,即最多可以有256個(gè)中斷源。 由中斷指令產(chǎn)生的軟中斷,其中斷類型號(hào)由指令本身給出,INT n指令中
27、的n即是中斷類型號(hào)。 中斷類型號(hào)如何確定? 中斷類型號(hào)有中斷控制器來分配及確定。以8259為例: 中斷類型號(hào)由硬件連接和軟件編程 共同確定。 每種中斷配以固定的中斷類型號(hào)。在中斷發(fā)生時(shí),借助中斷類型號(hào),能使程序轉(zhuǎn)入相對(duì)應(yīng)的中斷服務(wù)程序。8259IRQ0IRQ1IRQ2IRQ3IRQ4IRQ5IRQ6IRQ7由中斷類型號(hào)如何轉(zhuǎn)入中斷服務(wù)子程序? 所有中斷服務(wù)子程序的入口地址(又稱為中斷向量段地址:偏移地址)都存儲(chǔ)在內(nèi)存的中斷向量表中。 中斷類型號(hào)是查找中斷向量表的索引,中斷類型號(hào)4即為中斷向量地址。 找到中斷源所對(duì)應(yīng)的中斷向量,即能使CPU轉(zhuǎn)入相對(duì)應(yīng)的中斷服務(wù)程序的執(zhí)行中。中斷向量表如何構(gòu)成和使
28、用?在實(shí)模式下,存儲(chǔ)器地址最低的1024單元,即段地址(0000H):偏移地址(0000H03FFH),專用于存儲(chǔ)各種中斷服務(wù)程序的入口地址。 每4個(gè)單元存放一個(gè)中斷服務(wù)程序入口,其中前兩個(gè)單元的16位是入口地址的段內(nèi)偏移地址,后兩個(gè)單元的16位是入口地址的段地址。程序運(yùn)行轉(zhuǎn)入中斷服務(wù)程序時(shí),入口地址的段內(nèi)偏移地址部分將裝入IP中,入口地址的段地址部分裝入CS。 中斷服務(wù)程序的32位以邏輯地址形式表示的入口地址稱為中斷向量或中斷指針。 存儲(chǔ)器地址最低的1024個(gè)單元可存放256種中斷向量,這個(gè)專用于存儲(chǔ)中斷向量的存儲(chǔ)區(qū)稱為中斷向量表。中斷類型號(hào)與中斷向量表的關(guān)系?中斷類型號(hào)是訪問中斷向量表的索
29、引號(hào),中斷向量在中斷向量表中的存儲(chǔ)順序是以中斷類型號(hào)為索引的。中斷類型號(hào)乘以4就是該種中斷向量在中斷向量表的開始地址。中斷類型號(hào)為0,其中斷向量在向量表的00000H00003H地址。中斷類型號(hào)為1,其中斷向量在00004H00007H中斷類型號(hào)為255時(shí),其中斷向量應(yīng)在003FCH003FFH地址。中斷類型號(hào)與中斷向量地址的對(duì)應(yīng)關(guān)系類型0時(shí)置入IP類型0時(shí)置入CS類型N時(shí)置入IP類型1時(shí)置入IP類型1時(shí)置入CS類型N時(shí)置入CS類型255時(shí)置入IP類型255時(shí)置入CS類型0指針類型1指針類型2指針類型N指針類型255指針0000000004000084N003FC00400保留用于除出錯(cuò)保留用
30、于單步陷阱(TF為1時(shí))保留用于非可屏蔽中斷表5-1 IBM PCXT機(jī)的中斷類型號(hào)的安排(一)表5-2 IBM PCXT機(jī)的中斷類型號(hào)的安排(二)中斷類型號(hào)地址(H)中斷功能中斷類型號(hào)地址(H)中斷功能2080-83程序結(jié)束2698-9B絕對(duì)磁盤寫2184-87DOS系統(tǒng)調(diào)用279C-9F程序結(jié)束,駐留內(nèi)存2288-8B結(jié)束地址28A0-A3DOS內(nèi)部使用238C-8F中止處理292EA4-BBDOS保留2490-93錯(cuò)誤處理2FBC-BFDOS內(nèi)部使用2594-97絕對(duì)磁盤讀303FC0-FFDOS保留中斷響應(yīng)和返回操作過程8259中斷控制器外設(shè)的中斷請(qǐng)求外設(shè)的中斷請(qǐng)求外設(shè)的中斷請(qǐng)求CPU
31、INTRINTADB中斷向量表0000H1023H為外設(shè)生成中斷類型碼NN4*N查表中斷向量中斷響應(yīng)和返回操作過程中斷響應(yīng)的操作過程是不盡相同的。可屏蔽中斷(INTR)非可屏蔽中斷和(NMI)內(nèi)部中斷在IF位為1(開中斷)情況下,從INTR端加入中斷請(qǐng)求信號(hào)開始,到進(jìn)入中斷服務(wù)程序?yàn)橹顾?jīng)過的一系列操作,稱為可屏蔽中斷的響應(yīng)過程(系統(tǒng)自動(dòng)完成)。可屏蔽中斷的響應(yīng)操作該過程包括如下操作:等待當(dāng)前指令結(jié)束,然后進(jìn)入中斷響應(yīng)周期。 特殊情況:是帶有指令的前綴,不允許在前綴碼和指令碼之間響應(yīng)中斷。對(duì)于目的地址是段寄存器的MOV和POP指令,本條指令之后不允許響應(yīng)中斷,還要執(zhí)行一條指令結(jié)束后才能響應(yīng)中斷
32、。從微處理器外部的中斷控制邏輯獲得中斷類型號(hào)。當(dāng)前的現(xiàn)場(PSW、CS和IP)內(nèi)容依次壓入堆棧。PSW中的IF位和TF位為0。把中斷服務(wù)程序的入口地址置入IP和CS。即把地址為4n和4n1兩個(gè)單元的16位數(shù)作為中斷服務(wù)程序入口的偏移地址置入IP,把地址為4n2和4n3兩個(gè)單元的16位數(shù)作為中斷服務(wù)程序入口的偏移地址置入CS。非可屏蔽的中斷請(qǐng)求在NMI端加入。CPU對(duì)它的響應(yīng)不受IF位的控制。 與可屏蔽中斷一樣,非可屏蔽中斷也要等待當(dāng)前指令執(zhí)行完畢。非可屏蔽中斷的中斷類型號(hào)為固定2,是微處理器硬件決定的,所以不需要從外部控制邏輯取回中斷類型號(hào)的操作。非可屏蔽中斷的響應(yīng)過程所有的內(nèi)部中斷,其響應(yīng)操
33、作有如下特點(diǎn):中斷類型號(hào)要么是指令碼給定的,要么是處理器硬件決定的,都不需要從外部邏輯輸入。沒有包括INTA信號(hào)的響應(yīng)周期。不受IF位的控制,但單步中斷受TF位控制。除單步中斷之外,其他內(nèi)部中斷都比外部中斷優(yōu)先響應(yīng)。CPU對(duì)中斷響應(yīng)的優(yōu)先次序是:除數(shù)為0中斷、INT n和INTO指令的優(yōu)先級(jí)最高,NMI次之、INTR再次、單步中斷優(yōu)先級(jí)最低。內(nèi)部中斷的響應(yīng)操作中斷的返回過程中斷的返回,無論是內(nèi)部中斷或外部中斷,都是由中斷服務(wù)程序的末尾設(shè)置IRET指令實(shí)現(xiàn)的。IRET指令的操作是恢復(fù)斷點(diǎn)處的地址和PSW的內(nèi)容,即依次從堆棧中彈出保存的IP、CS和PSW值,使被中斷了的程序繼續(xù)執(zhí)行。中斷控制器82
34、59A中斷控制器的功能就是在有多個(gè)中斷源的系統(tǒng)中,接收外部的中斷請(qǐng)求,并為其分配中斷類型號(hào);優(yōu)先級(jí)判斷,選中當(dāng)前優(yōu)先級(jí)最高的中斷請(qǐng)求,再將此請(qǐng)求送到CPU的INTR端;當(dāng)CPU響應(yīng)中斷后,為CPU提供中斷類型號(hào);CPU進(jìn)入中斷服務(wù)程序的處理過程后,中斷控制器仍負(fù)責(zé)對(duì)外部中斷請(qǐng)求的管理。歸納起來,8259有如下工作特點(diǎn): 1)可以單片工作,也可以級(jí)聯(lián)使用。最多可用9片8259A來構(gòu)成64級(jí)的主從式中斷控制系統(tǒng)。 2)控制器內(nèi)部通過屏蔽字可以對(duì)每一級(jí)中斷進(jìn)行屏蔽或允許。 3)8259A可提供8個(gè)中斷類型號(hào),從而能使CPU迅速地轉(zhuǎn)至中斷服務(wù)程序。 4)通過編程使8259A工作在多種不同的工作方式。
35、5)工作時(shí)只需要一組+5V電源。8259A外部引腳信號(hào)定義 VCC A0 INTA IR7 IR6 IR5 IR4 IR3 IR2 IR1 IR0 INT SP/EN CAS2 CS WR RD D7 D6 D5 D4 D3 D2 D1 D0 CAS0 CAS1 GND 1 288259A 2 27 3 26 4 25 5 24 6 23 7 22 8 21 9 20 10 19 11 18 12 17 13 16 14 15 8259A引腳信號(hào)的含義D7D0:8條數(shù)據(jù)引線,在系統(tǒng)中,它們與系統(tǒng)總線的數(shù)據(jù)線相連,實(shí)現(xiàn)和CPU的數(shù)據(jù)交換。INT:和CPU的INTR信號(hào)相連,用來向CPU發(fā)送中斷請(qǐng)
36、求。INTA:接收來自CPU的中斷應(yīng)答信號(hào)。8259A要求中斷應(yīng)答信號(hào)由兩個(gè)負(fù)脈沖組成。RD:讀控制信號(hào)。WR:寫控制信號(hào)。CS:芯片選通信號(hào),它通過地址譯碼邏輯電路與高位地址總線相連。A0:8259A的端口選擇。8259A有兩個(gè)端口地址,一個(gè)為奇地址,一個(gè)為偶地址。IR7IR0:用來從I/O設(shè)備接收中斷請(qǐng)求。CAS2CAS0:在級(jí)聯(lián)方式下,用于主從片之間的聯(lián)絡(luò)。SP/EN:當(dāng)8259A工作在非緩沖方式時(shí),它作為輸入引腳,用來決定本片8259A是主片還是從片;當(dāng)8259A工作在緩沖方式時(shí),它作為輸出引腳時(shí),啟動(dòng)數(shù)據(jù)總線驅(qū)動(dòng)器。8259A內(nèi)部邏輯框圖IR0IR7中斷服務(wù)寄存器ISR優(yōu)先級(jí)分析器中
37、斷請(qǐng)求寄存器IRR中斷屏蔽寄存器IMROCW1OCW2OCW3ICW4ICW1ICW2ICW3CSA0D0 D7RDWRINTINTA地址譯碼地址線CAS0CAS1CAS2SP/EN屏蔽邏輯8259A的編程8259A的編程分為兩個(gè)階段:初始化階段和操作階段。初始化階段應(yīng)該在系統(tǒng)加電或復(fù)位后由系統(tǒng)初始化程序完成。這一階段要用輸出指令向8259置入初始化命令字。在操作階段,要用輸出指令向8259發(fā)適當(dāng)?shù)牟僮髅钭郑瑢?shí)現(xiàn)對(duì)8259的狀態(tài)、中斷方式和過程的控制。在這一階段一般不再發(fā)初始化命令字。初始化編程的任務(wù)設(shè)定中斷請(qǐng)求信號(hào)的有效形式,即高電平有效還是上升沿有效;設(shè)定8259是單片工作方式還是級(jí)聯(lián)工
38、作方式;設(shè)定8259管理的中斷類型號(hào)基值,即IR0對(duì)應(yīng)的中斷類型號(hào)。設(shè)定各級(jí)的優(yōu)先排序規(guī)則;設(shè)定一次中斷處理結(jié)束時(shí)的結(jié)束操作規(guī)則。初始化命令字的格式ICW1(A00)LTIM:用來設(shè)定有效的中斷請(qǐng)求信號(hào)形式。為1時(shí),為高電平有效;為0時(shí),為上升沿有效。SNGL:設(shè)定8259是否是單片工作方式。為1時(shí),表示是單片工作方式;為0時(shí),表示是多片級(jí)聯(lián)方式。IC4:是否需要確認(rèn)初始化命令字ICW4。為1時(shí),需要在后面設(shè)定ICW4;否則就不設(shè)定。IC4SNGL0LTIM1D0D1D2D3D4D5D6D7 ICW2(A01) ICW2用于設(shè)置中斷類型號(hào)基值。微處理器在響應(yīng)外中斷時(shí),依據(jù)中斷類型號(hào)獲得中斷向量
39、在中斷向量表內(nèi)的地址,即保存中斷服務(wù)子程序入口地址的地址。外中斷的中斷類型號(hào)是在中斷響應(yīng)期間由8259提供的。IRQ0對(duì)應(yīng)的中斷類型號(hào)稱為中斷類型號(hào)基值,它一定是可以被8整除的正整數(shù)。0T7D0D1D2D3D4D5D6D700T6T5T4T3ICW3(A01)如果外中斷控制邏輯只由一片8259組成(設(shè)置ICW1時(shí)D1位SNCL位為1),則不設(shè)置ICW3。只有在多片級(jí)聯(lián)方式下,才設(shè)置ICW3。對(duì)于主片和從片設(shè)置的ICW3是不同的,意義也是不同的。主片的ICW3的格式:每一位對(duì)應(yīng)一個(gè)IR輸入端那些接有從片的輸入端對(duì)應(yīng)的位設(shè)置為1,否則為0。S0S1S2S3S4S5S6S7D0D1D2D3D4D5D
40、6D7從片的ICW3格式為:CAS0CAS2的組合來指明,這片作為從片的8259連接到主片的哪個(gè)IR輸入端。000對(duì)應(yīng)IR0,001對(duì)應(yīng)IR1,111對(duì)應(yīng)IR7。CAS0CAS1CAS200000D0D1D2D3D4D5D6D7ICW4(A01)只有ICW1中的IC4位為1才能設(shè)置ICW4。SFNM:設(shè)置該位為1,將工作于特殊的全嵌套方式;該位為0,工作于正常的全嵌套方式。IBM PC系統(tǒng)設(shè)置該位為0。BUF:該位設(shè)置為1,表明緩沖方式。這時(shí)芯片的SP/EN信號(hào)為輸出引腳,可以作為數(shù)據(jù)收發(fā)緩沖器的控制信號(hào)。這位設(shè)置為0,表示是非緩沖方式。M/S:在BUF位為1時(shí)有效。該位為1則表示該片為主片;
41、該位為0時(shí)則表示為從片。PMAEOIM/SBUF0SFNM00D0D1D2D3D4D5D6D7AEOI:規(guī)定中斷結(jié)束方式。該位為1,自動(dòng)結(jié)束。這樣當(dāng)服務(wù)子程序結(jié)束后,不需其它任何操作;該位為0,為非自動(dòng)結(jié)束方式。必須在中斷服務(wù)子程序中發(fā)出中斷結(jié)束操作命令。PM:該位為1,表示與80X86微處理器配合工作;該位為0,表示與8080或8085微處理器配合工作。在IBM PC系統(tǒng)中,該位應(yīng)設(shè)定為1。8259初始化命令字設(shè)置次序ICW1ICW2SNGL=1?ICW3IC4=1?ICW4地址A0=0地址A0=1地址A0=1地址A0=1YYNN8259A級(jí)聯(lián)結(jié)構(gòu)圖IRQ8IRQ9IRQ10IRQ11IRQ
42、12IRQ13IRQ14IRQ15IRQ0IRQ1IRQ2IRQ3IRQ4IRQ5IRQ6IRQ7IR0IR1IR2IR3IR4IR5IR6IR7IR8IR1IR2IR3IR4IR5IR6IR708090A0B0C0D0E0F7071727374757677INTINTAINTRINTAINTINTACAS0CAS1CAS2CAS0CAS1CAS2端口地址:端口地址:20H21HA0HA1H中斷號(hào)中斷號(hào)T/C計(jì)時(shí)中斷鍵盤控制器中斷級(jí)聯(lián)中斷串行口2串行口1并行口2軟盤控制器并行口1實(shí)時(shí)時(shí)鐘中斷改向保留保留保留協(xié)處理器硬盤控制器保留根據(jù)上圖,對(duì)兩片8259A設(shè)置初始化命令字如下:主片:ICW100
43、010001,邊沿觸發(fā),有ICW4,級(jí)聯(lián)方式ICW200001000,中斷類型號(hào)基值為08HICW300000100,在IR2端接有從片ICW400000001,非數(shù)據(jù)總線緩沖方式,中斷非自動(dòng)結(jié)束,正常全嵌套方式從片: ICW100010001,邊沿觸發(fā),有ICW4,級(jí)聯(lián)方式 ICW210000000,中斷類型號(hào)基值為80H ICW300000010,該片的識(shí)別標(biāo)志,對(duì)應(yīng)主片的IR2端 ICW400000001,非數(shù)據(jù)總線緩沖方式,中斷非自動(dòng)結(jié)束,正常全嵌套方式操作命令字OCW1(A01)OCW1用于設(shè)置屏蔽狀態(tài)。命令字的各位與8259中的中斷屏蔽寄存器IMR的各位相對(duì)應(yīng),用輸出指令將OCW1
44、發(fā)送到IMR。IN AL , 21HPUSH AXAND AL, ;1為屏蔽OUT 21H , AL操作命令字OCW2(A00)R:該位為1指明中斷級(jí)的優(yōu)先次序是循環(huán)的。標(biāo)準(zhǔn)的循環(huán)方式,是按循環(huán)的順序每個(gè)中斷級(jí)輪流成為最高優(yōu)先級(jí)。如果當(dāng)前級(jí)為最高級(jí),它被服務(wù)完就變?yōu)樽畹图?jí),與它相鄰的高序號(hào)的級(jí)變成最高級(jí)。SL:該位指明是否要指定一個(gè)中斷級(jí)。該位為1,本控制字的L2L03位組合將指明一個(gè)中斷級(jí)。如果設(shè)定SL位為0,則L2L0無意義。L0L1L200EOISLRD0D1D2D3D4D5D6D7EOI:該位為1,說明這個(gè)操作控制字的任務(wù)之一是執(zhí)行結(jié)束中斷的操作,用作結(jié)束中斷命令;否則,該位為0,則不
45、執(zhí)行結(jié)束中斷操作。中斷結(jié)束操作意味著撤銷正在服務(wù)的中斷請(qǐng)求和服務(wù)標(biāo)志。如果初始化時(shí)ICW4的AEOI位為1,說明設(shè)定的是自動(dòng)結(jié)束中斷方式,設(shè)置OCW2時(shí)EOI位自然應(yīng)為0。有三種EOI方式:正常EOI,自動(dòng)EOI,特殊EOIMOV AL , 20HOUT 21H , ALOCW2的各種格式和應(yīng)用R、SL、EOIL2、L1、L0是否有意義意義和應(yīng)用000無全嵌套,用于方式設(shè)置001無結(jié)束命令010無無意義011有結(jié)束命令字,完全嵌套,清除ISR中指定位100無自動(dòng)循環(huán)排序101無結(jié)束命令,用于結(jié)束自動(dòng)循環(huán)方式,優(yōu)先級(jí)次序移動(dòng)級(jí)110有指定最低優(yōu)先級(jí)循環(huán)111有指定最低優(yōu)先級(jí)操作命令字OCW3(A
46、00)OCW3用于管理特殊的屏蔽方式和查詢方式。ESMM:特殊屏蔽方式控制位。該位為1則允許特殊屏蔽方式。SMM:特殊屏蔽方式標(biāo)志位。該位為1,表示特殊屏蔽方式;該位為0,表示非特殊屏蔽方式。只有ESMM位為1,SMM位的意義才有效。如果ESMM位為0,SMM位無任何意義。RISRRP10SMMESMM0D0D1D2D3D4D5D6D7P:用于管理查詢方式。該位為1,指明用查詢方式,即查詢決定優(yōu)先級(jí)次序;該位為0,為非查詢方式。P位為1的OCW可用作查詢命令。下一條對(duì)同一地址的讀命令起中斷識(shí)別作用。其操作時(shí),如當(dāng)時(shí)有中斷請(qǐng)求,將識(shí)別出優(yōu)先級(jí)最高的中斷請(qǐng)求,把ISR的相應(yīng)位置置1,同時(shí)輸入一個(gè)字
47、節(jié)的信息道CPU。I:表示有無中斷請(qǐng)求。I為1時(shí),表示有中斷請(qǐng)求,否則,I為0時(shí),表示沒有請(qǐng)求。W0W1W2ID0D1D2D3D4D5D6D7W2W0:只有在I為1時(shí),是有意義的。它們的組合指明請(qǐng)求服務(wù)的各中斷中的最高優(yōu)先級(jí)。RR、RIS:用于控制讀出8259內(nèi)部寄存器IRR和ISR的內(nèi)容。發(fā)送RR、RIS的組合為10的OCW3后,對(duì)同一地址的輸入命令將讀回中斷請(qǐng)求寄存器IRR的內(nèi)容到CPU;發(fā)送RR和RIS的組合為11的OCW3后,對(duì)同一地址的輸入命令將讀回中斷請(qǐng)求寄存器ISR的內(nèi)容到CPU。RR和RIS位組合為00和01時(shí)無意義。8259A的工作方式8259A有多種工作方式,這些工作方式都
48、可以通過編程來設(shè)置,所以使用起來很靈活。下面對(duì)8259A的工作方式分類介紹。設(shè)置優(yōu)先級(jí)的方式按照優(yōu)先級(jí)設(shè)置方法來分,8259有如下方式:全嵌套方式全嵌套方式是8259A最常用的工作方式,如果對(duì)8259A進(jìn)行初始化以后沒有設(shè)置其他優(yōu)先級(jí)方式,則8259A就按全嵌套方式工作。在全嵌套方式中,中斷請(qǐng)求按優(yōu)先級(jí)07級(jí)進(jìn)行處理,0級(jí)中斷的優(yōu)先級(jí)最高。只有高級(jí)的中斷請(qǐng)求才能嵌套。特殊全嵌套方式特殊全嵌套方式和全嵌套方式基本相同,只有一點(diǎn)不同,就是在特殊全嵌套方式下,當(dāng)處理某一級(jí)中斷時(shí),如果有同級(jí)的中斷請(qǐng)求,也會(huì)給與響應(yīng),從而實(shí)現(xiàn)一種對(duì)同級(jí)中斷請(qǐng)求的特殊嵌套。優(yōu)先級(jí)自動(dòng)循環(huán)方式優(yōu)先級(jí)自動(dòng)循環(huán)方式一般用來系統(tǒng)
49、中多個(gè)中斷源優(yōu)先級(jí)相等的場合。在這種方式下,優(yōu)先級(jí)隊(duì)列是在變化的,一個(gè)設(shè)備受到中斷服務(wù)后,它的優(yōu)先級(jí)自動(dòng)降為最低。系統(tǒng)中是否采用自動(dòng)循環(huán)優(yōu)先級(jí),由8259A的操作命令字OCW2決定。優(yōu)先級(jí)特殊循環(huán)方式優(yōu)先級(jí)特殊循環(huán)方式和優(yōu)先級(jí)自動(dòng)循環(huán)方式相比,只有一點(diǎn)不同,就是在優(yōu)先級(jí)特殊循環(huán)方式中,一開始的最低優(yōu)先級(jí)是由編程確定的,從而最高優(yōu)先級(jí)也由此而定。優(yōu)先級(jí)特殊循環(huán)方式也是由8259A的操作命令字OCW2來設(shè)定的。屏蔽中斷源的方式按照對(duì)中斷源的屏蔽方式來分,8259A有如下方式:普通屏蔽方式在普通屏蔽方式中,8259A的每個(gè)中斷請(qǐng)求輸入端都可以通過對(duì)應(yīng)屏蔽位的設(shè)置被屏蔽,從而使這個(gè)中斷請(qǐng)求不能從825
50、9A送到CPU。8259A內(nèi)部有一個(gè)屏蔽寄存器,它的每一位對(duì)應(yīng)了一個(gè)中斷請(qǐng)求輸入,程序設(shè)計(jì)時(shí),可以通過設(shè)置操作命令字OCW1使屏蔽寄存器中任一位或幾位置1。當(dāng)某一位為1時(shí),對(duì)應(yīng)的某一級(jí)中斷就受到屏蔽。特殊屏蔽方式設(shè)置屏蔽方式后,用OCW1對(duì)屏蔽寄存器中某一位進(jìn)行置位時(shí),就會(huì)同時(shí)使當(dāng)前中斷服務(wù)寄存器中的對(duì)應(yīng)位自動(dòng)清0,這樣就不只屏蔽了當(dāng)前正在處理的這級(jí)中斷,而且真正開放了其他級(jí)別低的中斷。特殊屏蔽方式總是在中斷處理程序中使用的。結(jié)束中斷處理的方式中斷自動(dòng)結(jié)束方式這種方式只能用在系統(tǒng)中只有一片8259A,并且多個(gè)中斷不會(huì)嵌套的情況。在中斷自動(dòng)結(jié)束方式中,系統(tǒng)一進(jìn)入中斷過程,8259A就自動(dòng)將當(dāng)前中
51、斷服務(wù)寄存器中的對(duì)應(yīng)位ISRn清除,這樣系統(tǒng)正在為某個(gè)設(shè)備進(jìn)行中斷服務(wù),當(dāng)前中斷服務(wù)寄存器中卻沒有對(duì)應(yīng)位作指示,就好像已經(jīng)結(jié)束了中斷服務(wù)一樣。這是最簡單的中斷結(jié)束方式,主要是怕沒有經(jīng)驗(yàn)的程序忘記在中斷服務(wù)程序中給出中斷結(jié)束命令而設(shè)立的。一般的中斷結(jié)束方式一般中斷結(jié)束方式用在全嵌套情況下。當(dāng)CPU用輸出指令往8259A發(fā)出一般中斷結(jié)束命令時(shí),8259A就會(huì)把當(dāng)前中斷服務(wù)寄存器中的最高的非零ISRn位復(fù)位,也就相當(dāng)于結(jié)束了當(dāng)前正在處理的中斷。發(fā)送一般的中斷結(jié)束命令是很簡單的,只要在偶地址端口輸出一個(gè)操作命令字OCW2,并使得OCW2中的EOI1。特殊的中斷結(jié)束方式在非全嵌套方式下,用當(dāng)前的中斷服務(wù)
52、寄存器是無法確定哪一級(jí)中斷為最后響應(yīng)和處理的,即無法確定當(dāng)前正在處理的哪級(jí)中斷,這時(shí)就要采用特殊的中斷處理結(jié)束方式。特殊中斷結(jié)束命令是通過往8259A偶地址輸出操作命令字OCW2來發(fā)送的,當(dāng)OCW2中的EOI1,SL1,R0時(shí),就是一個(gè)特殊中斷結(jié)束命令。L2、L1、L0這3位指出了到底要對(duì)哪一個(gè)ISRn位進(jìn)行復(fù)位。不管是用一般的中斷結(jié)束方式,還是用特殊的中斷結(jié)束方式,一個(gè)中斷處理程序結(jié)束時(shí),都必須用兩次中斷結(jié)束命令,一次是對(duì)主片發(fā)的,另一次是對(duì)從片發(fā)的。連接系統(tǒng)總線的方式按照8259A和系統(tǒng)總線的連接來分,有下列兩種方式:緩沖方式在多片8259A級(jí)聯(lián)的大系統(tǒng)中,8259A通過總線驅(qū)動(dòng)器和數(shù)據(jù)總
53、線相連。SP/EN輸出一個(gè)低電平,可作為總線驅(qū)動(dòng)器的啟動(dòng)信號(hào)。緩沖方式是用8259A的初始化命令字ICW4來設(shè)置的。非緩沖方式當(dāng)系統(tǒng)中只有單片8259A時(shí),一般將它直接與數(shù)據(jù)總線相連,它也是通過8259A的初始化命令字ICW4來設(shè)置的。在非緩沖方式下,8259A的SP/EN端作為輸入端,來選擇主片或從片。引入中斷請(qǐng)求的方式邊沿觸發(fā)方式8259A將中斷請(qǐng)求輸入端出現(xiàn)的上升沿作為中斷請(qǐng)求信號(hào),可以通過初始化命令字ICW1來設(shè)置的。電平觸發(fā)方式8259A將中斷請(qǐng)求輸入端出現(xiàn)的高電平作為中斷請(qǐng)求信號(hào),可以通過初始化命令字ICW1來設(shè)置的。需要注意的是,要及時(shí)撤銷高電平,否則可能引起不應(yīng)該有的第二次中斷
54、。在應(yīng)用中斷控制機(jī)構(gòu)時(shí)都要完成如下工作:分配合適的中斷優(yōu)先級(jí)。分配IRQ端的規(guī)則是:首先,只能利用沒有被系統(tǒng)已有設(shè)備占用的IRQ端。其次,分配時(shí)參照接口完成的任務(wù)緊急程度。任務(wù)越緊急,應(yīng)分配優(yōu)先級(jí)較高的IRQ端。設(shè)計(jì)或選擇中斷請(qǐng)求信號(hào)產(chǎn)生邏輯。為中斷服務(wù)子程序分配合理的存儲(chǔ)空間并把服務(wù)程序的入口地址置入中斷向量表。為服務(wù)程序分配空間的原則是不被其他程序沖掉。利用DOS功能調(diào)用設(shè)置中斷向量入口參數(shù)應(yīng)這樣設(shè)置:AH中置入功能號(hào)25H;AL中置入要設(shè)置的中斷類型號(hào)n;DS:DX中置入中斷服務(wù)程序的入口地址; MOV DX, OFFSET INTSUB PUSH DS MOV AX, SEG INTS
55、UB MOV DS, AX MOV AL, 0AH MOV AH, 25H INT 21H POP DS利用DOS功能調(diào)用保護(hù)中斷向量入口參數(shù)應(yīng)這樣設(shè)置:AH中置入功能號(hào)35H;AL中置入要設(shè)置的中斷類型號(hào)n;ES:BX中置入中斷服務(wù)程序的入口地址; MOV AL, 0AH MOV AH, 35H INT 21H PUSH ES PUSH BX利用傳送指令設(shè)置中斷向量 VECTABSEGMENTAT0ORG4*NVSUBDW 2DUP(?) VECTAB ENDS CODE SEGMENT PUSH DS MOV AX, VECTAB MOV DS, AX CLI MOV WORD PTR V
56、SUB, OFFEST INTSUB MOV WORD PTR VSUB+2, SEG INTSUB STI POP DS CODE ENDS 中斷向量表4*nCODE SEGMENT ASSUME CS:CODE ORG 1000HMAIN: JMP init8259ZXK EQU 0FFDCHZWK EQU 0FFDDHLED DB 0C0H,0F9HPort0 EQU 0FFE0H ;取決地址譯碼 Port1 EQU 0FFE1H init8259:CLI 設(shè)置中斷向量 ;9259初始化 MOV AL,13H ;ICW1 MOV DX,Port0 OUT DX,AL MOV AL,08H
57、 ;ICW2 MOV DX,Port1 OUT DX,AL MOV AL,09H ;ICW4 OUT DX,AL MOV AL,7FH ;中斷屏蔽字IRQ7 STI LED:循環(huán)顯示字符串 ; 利用實(shí)驗(yàn)2的程序 JMP LED INT8259 PROC CLI 顯示特殊字符 MOV AL, 20H ;EOI命令 MOV DX, Port0 OUT DX, AL STI IRETINT8259 ENDPCODE ENDS END MAIN返回本章首頁7.4DMA傳送和DMA控制器微處理器CPU外圍控制邏輯的另一重要部分是DMA傳送控制邏輯,它一側(cè)與微處理器相連,其中重要的兩條信號(hào)線是HOLD(總
58、線控制權(quán)請(qǐng)求)和HLDA(總線控制權(quán)應(yīng)答)。它所形成的接受DMA請(qǐng)求信號(hào)DRQ和DMA請(qǐng)求確認(rèn)信號(hào)線DACK作為系統(tǒng)總線的一部分,出現(xiàn)在擴(kuò)充插槽的接點(diǎn)上供外設(shè)接口使用。DMA傳送的基本原理圖回答請(qǐng)求CPU8086主機(jī)板總線邏輯DMA控制器8237I/O接口I/O設(shè)備存儲(chǔ)器系統(tǒng)總線DMA傳送的特點(diǎn)不經(jīng)過CPU,不破壞CPU內(nèi)各寄存器的內(nèi)容,直接實(shí)現(xiàn)存儲(chǔ)器與I/O設(shè)備之間的數(shù)據(jù)傳送。在IBM PC系統(tǒng)中,DMA方式傳送一個(gè)字節(jié)的時(shí)間通常是一個(gè)總線周期,即5個(gè)時(shí)鐘周期時(shí)間。CPU內(nèi)部的指令操作在這個(gè)總線周期只是暫停,然后繼續(xù)操作,指令的操作次序不會(huì)被破壞。所以DMA傳送特別適用于外部設(shè)備與存儲(chǔ)器之間
59、高速成批的數(shù)據(jù)傳送。DMA傳送階段第一階段:準(zhǔn)備階段。這是程序工作階段,它包括對(duì)DMA控制器的初始化,工作方式和基本參數(shù)的設(shè)置,對(duì)I/O設(shè)備及其接口的初始化等。第二階段:DMA傳送操作階段。DMA傳送操作過程是這樣的:I/O設(shè)備通過I/O接口向系統(tǒng)總線的某個(gè)DRQ段發(fā)出DMA傳送請(qǐng)求,DMA控制器接受請(qǐng)求,在自己的HRQ輸出端輸出有效信號(hào),作為向CPU發(fā)出的DMA傳送請(qǐng)求信號(hào)。HRQ與CPU的DMA請(qǐng)求輸入端HOLD相連,使CPU接收請(qǐng)求。CPU結(jié)束當(dāng)前的總線周期(不一定是一條指令的結(jié)束),即響應(yīng)DMA傳送請(qǐng)求,在自己的HLDA 端輸出響應(yīng)信號(hào),微處理器的HLDA連接到DMA控制器的HLDA端
60、,并把系統(tǒng)總線控制權(quán)轉(zhuǎn)交給DMA控制器,CPU與系統(tǒng)總線中的地址線、數(shù)據(jù)總線和某些控制線之間進(jìn)入高阻態(tài)。DMA控制器把CPU的響應(yīng)信號(hào)轉(zhuǎn)加到系統(tǒng)總線的DACK端,進(jìn)而加到提出請(qǐng)求的I/O設(shè)備接口。DMA控制器向地址總線發(fā)出將要傳送數(shù)據(jù)的存儲(chǔ)器地址信息,以備訪問相應(yīng)的存儲(chǔ)單元。DMA控制器向系統(tǒng)總線發(fā)出控制存儲(chǔ)器和I/O設(shè)備操作需要的讀、寫信號(hào)。修改DMA控制器中提供存儲(chǔ)器地址的地址寄存器,指向存儲(chǔ)器下一單元;記錄字節(jié)數(shù);為下一個(gè)字節(jié)傳送做好準(zhǔn)備。 如果在第一階段設(shè)置方式時(shí)設(shè)置的是單字節(jié)方式,DMA控制器就會(huì)把總線控制權(quán)交回給CPU,使CPU繼續(xù)執(zhí)行被中斷的指令。如果設(shè)置的是多字節(jié)的數(shù)據(jù)塊傳送方
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 皮革制品修補(bǔ)技術(shù)國際標(biāo)準(zhǔn)與規(guī)范考核試卷
- 燃?xì)饩咝袠I(yè)清潔生產(chǎn)與資源綜合利用考核試卷
- 珠海市高三月質(zhì)量監(jiān)測(二模)理綜試題
- 連云港市重點(diǎn)中學(xué)2025年初三下學(xué)期期末學(xué)業(yè)水平調(diào)研英語試題試卷含答案
- 西藏那曲市色尼區(qū)2024-2025學(xué)年三下數(shù)學(xué)期末復(fù)習(xí)檢測模擬試題含解析
- 山西省晉中市四校2025屆高三教學(xué)質(zhì)量檢測試題英語試題含解析
- 江西信息應(yīng)用職業(yè)技術(shù)學(xué)院《工程估價(jià)與費(fèi)用管理雙語》2023-2024學(xué)年第一學(xué)期期末試卷
- 遼寧省錦州市義縣2024-2025學(xué)年五年級(jí)數(shù)學(xué)第二學(xué)期期末達(dá)標(biāo)測試試題含答案
- 山西應(yīng)用科技學(xué)院《核醫(yī)學(xué)實(shí)驗(yàn)技術(shù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 南京大學(xué)《阿拉伯語視聽說》2023-2024學(xué)年第二學(xué)期期末試卷
- 購車金融方案
- 腸內(nèi)營養(yǎng)泵的使用護(hù)理課件
- 想成為一個(gè)什么樣的人
- 量化投資策略開發(fā)報(bào)告總結(jié)
- 人工晶體脫位查房
- 投產(chǎn)申請(qǐng)書完整版本
- GB/Z 43281-2023即時(shí)檢驗(yàn)(POCT)設(shè)備監(jiān)督員和操作員指南
- 電磁波簡介完
- 焦化廠培訓(xùn)課件講解
- 桂林漓江風(fēng)景名勝區(qū)規(guī)劃分析(及修編)
- 2023高壓電氣設(shè)備減隔震設(shè)計(jì)規(guī)程
評(píng)論
0/150
提交評(píng)論