版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
微機(jī)原理及其應(yīng)用普通高等教育“十一五”國(guó)家級(jí)規(guī)劃教材作者丁新民2007年5月第五章微機(jī)中斷系統(tǒng)和DMA控制方式學(xué)習(xí)目標(biāo)1、識(shí)記中斷概念、中斷處理過(guò)程、中斷嵌套等概念。2、識(shí)記8259A可編程中斷控制器的結(jié)構(gòu)和工作原理,以及中斷控制器的級(jí)聯(lián)。3、理解8259A可編程中斷控制器的編程及其應(yīng)用。4、識(shí)記8237可編程DMA控制器的結(jié)構(gòu)、工作原理。5、理解8237可編程DMA控制器的編程及其應(yīng)用。第五章微機(jī)中斷系統(tǒng)、DMA控制方式
5.1中斷系統(tǒng)概述5.28259A可編程中斷控制器及其應(yīng)用5.3DMA控制方式和8237A可編程控制器一、中斷系統(tǒng)概述1.中斷的基本概念2.中斷源的分類3.中斷優(yōu)先級(jí)與中斷向量第一節(jié)中斷的基本概念1.中斷的基本概念程序執(zhí)行過(guò)程中,出現(xiàn)異常或外設(shè)請(qǐng)求,CPU暫停正在運(yùn)行的程序,轉(zhuǎn)而去執(zhí)行請(qǐng)求中斷的外設(shè)或異常事件的處理操作。處理結(jié)束后,再回到被中止的程序繼續(xù)執(zhí)行,這個(gè)過(guò)圖5-1-1中斷控制示意
主程序
┇
STI;開中斷,允許CPU響應(yīng)中斷請(qǐng)求
┇中斷請(qǐng)求響應(yīng)中斷,執(zhí)行中斷服務(wù)程序中斷服務(wù)程序程稱為中斷,如圖5-1-1所示。為實(shí)現(xiàn)中斷處理而設(shè)置的硬件和軟件,統(tǒng)稱為中斷系統(tǒng)。1.中斷的基本概念中斷處理的過(guò)程,如圖5-1-2所示。一般中斷響應(yīng)過(guò)程包括關(guān)中斷、保存斷點(diǎn)、識(shí)別中斷源(尋找相應(yīng)中的斷服務(wù)程序入口地址)、保護(hù)現(xiàn)場(chǎng)、執(zhí)行中斷服務(wù)程序、恢復(fù)現(xiàn)場(chǎng)、開中斷和返回七個(gè)部分。圖5-1-2中斷處理過(guò)程中斷服務(wù)子程序入口中斷返回恢復(fù)現(xiàn)場(chǎng)中斷處理保護(hù)現(xiàn)場(chǎng)1.中斷的基本概念80X86CPU對(duì)一個(gè)硬件事件激發(fā)的中斷,稱為硬中斷或外中斷;由CPU內(nèi)部的異常事件引起的中斷,稱為軟中斷或內(nèi)中斷。①中斷源引起程序中斷的事件稱為中斷源。②中斷屏蔽通過(guò)軟件或硬件方法,使CPU拒絕響應(yīng)中斷請(qǐng)求,但該中斷請(qǐng)求仍然存在,這種狀態(tài)稱為中斷屏蔽。有可屏蔽中斷和不可屏蔽中斷兩種。如80X86系統(tǒng)的INTR和NMI信號(hào)。1.中斷的基本概念③中斷優(yōu)先權(quán)中斷優(yōu)先權(quán)又稱為“中斷優(yōu)先級(jí)”。即為中斷源安排的服務(wù)次序,就是中斷優(yōu)先權(quán)。④中斷允許標(biāo)志位
CPU的標(biāo)志寄存器中,設(shè)有一位IF中斷允許位,當(dāng)IF為“1”時(shí),表示允許CPU響應(yīng)外部中斷請(qǐng)求。IF是響應(yīng)中斷請(qǐng)求的總開關(guān)。IF標(biāo)志是可編程控制的,可以用STI和CLI指令,對(duì)其進(jìn)行置位和清除設(shè)定。第二節(jié)中斷源的分類2.中斷源的分類80X86系列具有功能很強(qiáng)的中斷系統(tǒng),它可以處理256種不同的中斷,分別定義0,1,…,255中斷類型。按中斷產(chǎn)生的原因分類,可分為外部中斷和內(nèi)部中斷。80X86系統(tǒng)的中斷源,如圖5-1-3所示。圖5-1-380X86中斷源80X86CPUNMIINTR不可屏蔽中斷請(qǐng)求中斷邏輯8259AINTn指令I(lǐng)NTO指令除法出錯(cuò)單步(TF=1)2.中斷源的分類(1)外部中斷由外部事件、外部設(shè)備或設(shè)備故障等產(chǎn)生的中斷稱為外部中斷,又可稱為硬件中斷。硬件中斷分為不可屏蔽中斷和可屏蔽中斷兩種類型??善帘沃袛嗍怯蒀PU引腳INTR的外部中斷請(qǐng)求信號(hào)引入的,中斷請(qǐng)求是否被CPU響應(yīng),要受到標(biāo)志寄存器的中斷允許標(biāo)志位IF控制。2.中斷源的分類(2)內(nèi)部中斷內(nèi)部中斷也稱為軟件中斷。軟件中斷來(lái)自于INT、運(yùn)算錯(cuò)誤,調(diào)試程序設(shè)置的中斷。①由中斷指令I(lǐng)NTn引起的中斷②由CPU的某些運(yùn)算錯(cuò)誤引起的中斷③由調(diào)試程序Debug設(shè)置的中斷④由程序設(shè)置的異常引起的中斷(陷阱)第三節(jié)中斷優(yōu)先級(jí)與中斷向量3.中斷優(yōu)先級(jí)與中斷向量(1)中斷優(yōu)先級(jí)中斷系統(tǒng)的優(yōu)先級(jí)有兩個(gè)含義:響應(yīng)優(yōu)先級(jí)和處理優(yōu)先級(jí)。響應(yīng)優(yōu)先級(jí)是由硬排隊(duì)線路來(lái)決定響應(yīng)次序;處理優(yōu)先級(jí)則是由CPU編程控制的響應(yīng)次序。由硬排隊(duì)線路決定的響應(yīng)次序是不能更改的,若需要更變,只能借助中斷屏蔽碼來(lái)實(shí)現(xiàn)。中斷屏蔽碼可以由程序員對(duì)屏蔽寄存器編程,屏蔽寄存器的每一位都對(duì)應(yīng)一個(gè)中斷請(qǐng)求端口。3.中斷優(yōu)先級(jí)與中斷向量(2)中斷向量每一類中斷都包含若干個(gè)中斷源,每個(gè)中斷源對(duì)應(yīng)一個(gè)中斷服務(wù)程序。每個(gè)中斷服務(wù)程序的入口地址,即為中斷向量。為便于處理,給每個(gè)中斷源也賦予一個(gè)編號(hào),該編號(hào)與中斷向量是相對(duì)應(yīng)的,又稱中斷類型碼。80X86系統(tǒng)有256個(gè)中斷向量,中斷類型號(hào)為0~255。實(shí)地址方式下,中斷向量用四個(gè)字節(jié);保護(hù)方式下,用中斷描述表來(lái)替代,每個(gè)中斷向量用八個(gè)字節(jié),如表5-1-1所示。3.中斷優(yōu)先級(jí)與中斷向量(2)中斷向量中斷類型向量地址功能微處理器類型00H~3H除法錯(cuò)全部失效14H~7H單步調(diào)試全部陷阱28H~BH不可屏蔽中斷全部NMI3CH~FH斷點(diǎn)中斷全部陷阱410H~13H溢出中斷全部陷阱514H~17H邊界檢查80186以上失效618H~1BH非法操作碼80186以上失效71CH~1FH協(xié)處理器無(wú)效80186以上失效820H~23H雙重故障80386以上終止924H~27H協(xié)處理器段越界80386陷阱A28H~2BH非法TSS80386以上失效B2CH~2FH段不存在80386以上失效C30H~33H堆棧異常80386以上失效D34H~37H一般保護(hù)錯(cuò)80386以上失效E38H~3BH頁(yè)面失效80386以上失效F3CH~3FH保留
1040H~43H協(xié)處理器錯(cuò)80286以上失效1144H~47H對(duì)齊檢測(cè)中斷80486SX失效1248H~4FH機(jī)器檢測(cè)異常Pentium以上失效13~1F50H~7FH保留
20~1FF80H~3FFH軟中斷80286以上陷阱3.中斷優(yōu)先級(jí)與中斷向量(3)中斷向量的設(shè)置用戶定義的中斷向量設(shè)置,可以通過(guò)INTR信號(hào)、8259A、INTn指令引入CPU。用戶可編程設(shè)置的方法如下:①指令設(shè)置法
MOVAX,0
;主程序中設(shè)置
MOVES,AX MOVBX,n
4
;中斷類型號(hào)n×4 MOVAX,OFFSETINTSUB;存入偏移地址
MOVES:WORDPTR[BX],AX MOVAX,SEGINTSUB;存入段地址3.中斷優(yōu)先級(jí)與中斷向量(3)中斷向量的設(shè)置①指令設(shè)置法(續(xù))
MOVES:WORDPTR[BX+2],AX STI ┇I(xiàn)NTSUB:┅;中斷服務(wù)子程序 ┇
IRET;中斷返回②利用DOS功能直接調(diào)用
MOVAL,n
;取中斷向量到ES:BX中
MOVAH,35H INT21H3.中斷優(yōu)先級(jí)與中斷向量(3)中斷向量的設(shè)置②利用DOS功能直接調(diào)用(續(xù))
PUSHES
;原中斷向量進(jìn)棧保存
PUSHBX PUSHDS MOVAX,SEGINTSUB;設(shè)置中斷向量段地址在DS MOVDS,AX MOVDX,OFFSETINTSUB MOVAL,n
;中斷類型號(hào)n MOVAH,25H;設(shè)置中斷向量
INT21H ┇3.中斷優(yōu)先級(jí)與中斷向量(3)中斷向量的設(shè)置②利用DOS功能直接調(diào)用(續(xù))
POPDS
;恢復(fù)原中斷向量
POPBX POPES MOVAL,n MOVAH,25H;設(shè)置中斷向量
INT21H RETINTSUB:┅
;中斷服務(wù)子程序 ┇
IRET
;中斷返回二、8259A可編程中斷控制器及其應(yīng)用1.8259A引腳和結(jié)構(gòu)2.8259A單片連接和編程3.8259A級(jí)聯(lián)與編程4.8259A應(yīng)用舉例第一節(jié)8259A引腳和結(jié)構(gòu)1.8259A引腳和結(jié)構(gòu)(1)8259A引腳說(shuō)明8259A為28個(gè)引腳的雙列直插式芯片,其外部引腳如圖5-2-1所示。圖5-2-18259A引腳示意28272625242322212019181716151234567891011121314CSWRRDD7D6D5D4D3D2D1D0CAS0CAS1GNDVCC(+5V)A0INTAIR7IR6IR5IR4IR3IR2IR1IR0INTSP/ENCAS28259A(2)內(nèi)部結(jié)構(gòu)由八個(gè)功能模塊組成,如圖5-2-2所示。①數(shù)據(jù)總線緩沖器數(shù)據(jù)總線緩沖器是8位雙向三態(tài)緩沖器,是8259A與系統(tǒng)數(shù)據(jù)總線的接口,通常連接8位數(shù)據(jù)總線D7~D0。
1.8259A引腳和結(jié)構(gòu)(2)內(nèi)部結(jié)構(gòu)②讀寫控制讀寫控制電路接收CPU送來(lái)的讀/寫命令、片選信號(hào)及端口選擇信號(hào)A0。
SP/EN○INTA
INTRDWRA0CSD7~D0IR0IR1IR2IR3IR4IR5IR6IR7控制電路級(jí)聯(lián)緩沖器/比較器中斷服務(wù)寄存器(ISR)優(yōu)先權(quán)判別器(PR)中斷請(qǐng)求寄存器(IRR)中斷屏蔽寄存器(IMR)讀/寫控制電路數(shù)據(jù)總線緩沖器CAS0CAS1CAS2內(nèi)部總線圖5-2-28259A內(nèi)部結(jié)構(gòu)1.8259A引腳和結(jié)構(gòu)(2)內(nèi)部結(jié)構(gòu)③中斷請(qǐng)求寄存器IRR和中斷服務(wù)寄存器ISR8位的IRR和ISR對(duì)應(yīng)外部輸入信號(hào)IR7~IR0。
④中斷屏蔽寄存器IMRIMR也是8位,用以屏蔽IRR的中斷請(qǐng)求。⑤優(yōu)先級(jí)判別器PRPR對(duì)IRR中的中斷請(qǐng)求進(jìn)行優(yōu)先級(jí)識(shí)別。⑥級(jí)聯(lián)緩沖器/比較器有級(jí)聯(lián)和緩沖兩種工作方式。1.8259A引腳和結(jié)構(gòu)(3)8259A編程結(jié)構(gòu)①初始化命令字8259A初始化命令字編程,需預(yù)置ICW4~I(xiàn)CW1四個(gè)命令字。初始化命令字必須順序填寫。8259A由地址碼A0來(lái)訪問(wèn)兩個(gè)端口地址,一個(gè)為偶地址,另一個(gè)為奇地址。若8259A由ICW1編程為級(jí)聯(lián)方式,那么就必須對(duì)ICW3編程。1.8259A引腳和結(jié)構(gòu)(3)8259A編程結(jié)構(gòu)①初始化命令字(續(xù))●
ICW1——芯片控制初始化命令字
ICW1對(duì)應(yīng)偶地址端口,地址A0=0。格式:●
ICW2——中斷類型號(hào)初始化命令字
ICW2對(duì)應(yīng)奇地址端口,地址A0=1。格式:D7D6D5D4D3D2D1D00001LTIM0SNGLIC4D7D6D5D4D3D2D1D0T7T6T5T4T30001.8259A引腳和結(jié)構(gòu)(3)8259A編程結(jié)構(gòu)①初始化命令字(續(xù))●
ICW3——標(biāo)識(shí)主片/從片初始化命令字
ICW3對(duì)應(yīng)奇地址端口,地址A0=1。主片格式:
ID2~ID0表示從片的識(shí)別地址,從片格式:D7D6D5D4D3D2D1D0S7S6S5S4S3S2S1S0D7D6D5D4D3D2D1D000000ID2ID1ID01.8259A引腳和結(jié)構(gòu)(3)8259A編程結(jié)構(gòu)①初始化命令字(續(xù))●
ICW4——方式控制字初始化命令字
ICW4對(duì)應(yīng)奇地址端口,地址A0=1。格式:D7D6D5D4D3D2D1D0000SFNMBUFM/SAEOI
PM1.8259A引腳和結(jié)構(gòu)(3)8259A編程結(jié)構(gòu)②操作命令字
8259A的操作命令字有OCW1~OCW3,對(duì)設(shè)置的次序沒(méi)有要求。
●
OCW1——中斷屏蔽操作命令字
OCW1對(duì)應(yīng)奇地址端口,地址A0=1。格式:D7D6D5D4D3D2D1D0M7M6M5M4M3M2M1M01.8259A引腳和結(jié)構(gòu)(3)8259A編程結(jié)構(gòu)②操作命令字(續(xù))●
OCW2——優(yōu)先循環(huán)和中斷結(jié)束操作字
OCW2對(duì)應(yīng)偶地址端口,地址A0=0。格式:●
OCW3——特殊屏蔽和查詢方式操作字
OCW3對(duì)應(yīng)偶地址端口,地址A0=0。格式:
D7D6D5D4D3D2D1D0RSLEOI00L2L1L0優(yōu)先權(quán)輪換指定中斷等級(jí)中斷結(jié)束標(biāo)志位中斷等級(jí)編碼D7D6D5D4D3D2D1D01ESMMSMM01PRRRIS1.8259A引腳和結(jié)構(gòu)(4)8259A中斷管理方式①優(yōu)先級(jí)設(shè)置方式●完全嵌套方式●特殊全嵌套方式●優(yōu)先級(jí)自動(dòng)循環(huán)方式●優(yōu)先級(jí)特殊循環(huán)方式②中斷結(jié)束方式●普通EOI結(jié)束方式●特殊EOI結(jié)束方式●自動(dòng)EOI結(jié)束方式1.8259A引腳和結(jié)構(gòu)(4)8259A中斷管理方式③循環(huán)優(yōu)先級(jí)的循環(huán)方式●普通EOI循環(huán)方式●特殊EOI循環(huán)方式●自動(dòng)EOI循環(huán)方式④中斷源屏蔽方式●普通屏蔽方式●特殊屏蔽方式第二節(jié)8259A單片連接和編程2.8259A單片連接和編程(1)初始化流程8259A工作之前,必須進(jìn)行初始化。初始化是將編程的初始化命令字寫入8259A,設(shè)定8259A的初始狀態(tài)。初始化流程如圖5-2-3所示。圖5-2-38259A初始化流程YN用ICW4設(shè)置是否為特殊全嵌套、緩沖方式、自動(dòng)結(jié)束中斷方式、8088/8088系統(tǒng)結(jié)束需要用ICW4嗎?Y開始用ICW1設(shè)置級(jí)聯(lián)、請(qǐng)求信號(hào)格式、是否用ICW4用ICW2設(shè)置中斷類型碼Y設(shè)ICW3,各位對(duì)應(yīng)IR0~I(xiàn)R7的連接N設(shè)ICW3高五位為0,低三位為標(biāo)識(shí)碼本片是主片嗎?是否為級(jí)聯(lián)方式?N2.8259A單片連接和編程(2)8259A與PC/XT標(biāo)準(zhǔn)總線的連接8259A與PC/XT標(biāo)準(zhǔn)總線的連接,如圖5-2-4所示。
主從程序/允許緩沖器中斷請(qǐng)求
圖5-2-48259A與標(biāo)準(zhǔn)總線的連接數(shù)據(jù)總線地址總線控制總線
CS
A0D7~D0RDWRINT
INTACAS2~CAS0
SP/EN
IR7
~
IR02.8259A單片連接和編程(2)8259A與PC/XT標(biāo)準(zhǔn)總線的連接8259A的中斷源,如表5-2-3所示。表5-2-38259A中斷源8259A輸入中斷類型號(hào)設(shè)備8259A輸入中斷類型號(hào)設(shè)備IRQ008H定時(shí)器(0通道)IRQ40CH串行接口IRQ109H鍵盤IRQ50DH未用IRQ20AH顯示器接口IRQ60EH軟盤IRQ30BH未用IRQ70FH打印機(jī)2.8259A單片連接和編程(3)初始化程序如系統(tǒng)分配給8259A的I/O地址號(hào)為20H和21H。BIOS程序中對(duì)8259A的初始化規(guī)定:中斷優(yōu)先級(jí)管理采用完全嵌套方式,中斷請(qǐng)求信號(hào)采用上升沿觸發(fā)方式、緩沖器方式,中斷結(jié)束采用EOI命令方式。初始化程序如下: ┇
INTA00EQU20HINTA01EQU21H ┇MOVAL,13H;寫ICW12.8259A單片連接和編程(3)初始化程序
OUTINTA01,ALMOVAL,09H;寫ICW4OUTINTA01,AL ┇
在中斷處理程序中,向8259A發(fā)出中斷結(jié)束命令(普通EOI命令)的程序段為: ┇
MOVAL,20H;普通EOI命令
OUT20H,AL ┇2.8259A單片連接和編程(3)初始化程序又如某單片8259A中斷系統(tǒng),有兩個(gè)中斷源分別從IR2和IR3接入,按完全嵌套方式獲取優(yōu)先權(quán)。中斷類型號(hào)分別為42H和43H。中斷請(qǐng)求采用邊沿觸發(fā),非緩沖,非自動(dòng)EOI結(jié)束方式。兩個(gè)端口地址為FF00H和FF01H。初始化程序如下:
┇
MOVAL,00010011B;邊沿觸發(fā)方式,單片,用ICW4
MOVDX,0FF00H;8259A端口地址
OUTDX,AL
;加載ICW12.8259A單片連接和編程(4)中斷響應(yīng)過(guò)程單級(jí)主控制方式為例,中斷操作過(guò)程。①當(dāng)IR7~IR0出現(xiàn)中斷,使相應(yīng)IRR位置位。②對(duì)IRR和IMR分析處理后,發(fā)出中斷請(qǐng)求。③在指令執(zhí)行結(jié)束時(shí),且當(dāng)IF=1,進(jìn)入兩個(gè)中斷響應(yīng)周期。④第一個(gè)中斷響應(yīng)周期,接收第一個(gè)INTA中斷響應(yīng)信號(hào),將ISR置位、IRR復(fù)位。
⑤第二個(gè)中斷響應(yīng)周期,收到第二個(gè)INTA中斷響應(yīng)信號(hào),送中斷類型號(hào),進(jìn)入中斷服務(wù)子程序。第三節(jié)8259A級(jí)聯(lián)與編程3.8259A級(jí)聯(lián)與編程一片8259A最多可管理八級(jí)中斷,采用級(jí)聯(lián)方式。第一級(jí)為主片,第二級(jí)為從片,主片可接1~8個(gè)從片,最多可管理64個(gè)中斷源。(1)兩級(jí)主、從式中斷系統(tǒng)結(jié)構(gòu)如圖5-2-5所示,主片、從片的中斷類型號(hào)為40H、60H。假設(shè)程序中注釋條件成立,初始化程序?yàn)椋褐髌瑓?shù):
ICW1=00010001B=11H;邊沿觸發(fā),級(jí)聯(lián)方式,用ICW4
ICW2=01000000B=40H;主片中斷類型號(hào)
ICW3=01000000B=40H;IR6引腳有從片連接
ICW4=00010001B=11H;特殊嵌套,非緩沖,正常EOI3.8259A級(jí)聯(lián)與編程(1)兩級(jí)主、從式中斷系統(tǒng)結(jié)構(gòu)
從片參數(shù):
ICW1=00010001B=11H;與主片相同
ICW2=01100000B=60H;從片中斷類型號(hào)
ICW3=00000110B=06H;從片INT引腳連接到主片的IR6上
ICW4=00000001B=01H;完全嵌套,非緩沖,正常EOIGND…
…
+VCC
圖5-2-5主從式中斷系統(tǒng)的結(jié)構(gòu)中斷請(qǐng)求
(輸出)地址總線數(shù)據(jù)總線控制總線
CS
A0INTAINTCAS0CAS1
8259A(從片)CAS2SP/EN
IR7…IR0
CS
A0INTAINTCAS0CAS1
8259A(主片)CAS2IR7…IR0SP/EN3.8259A級(jí)聯(lián)與編程(2)級(jí)聯(lián)的初始化編程采用兩片8259A級(jí)聯(lián)方式組成的中斷系統(tǒng),從片的INT連到主片的IR2端。若當(dāng)前主片從IR1、IR5端引入兩個(gè)中斷請(qǐng)求,中斷類型號(hào)為81H、85H。中斷服務(wù)程序的段基值為1000H,偏移地址分別為2600H及3500H。從片由IR2、IR3端引入兩個(gè)中斷請(qǐng)求,中斷類型號(hào)為94H和95H,中斷服務(wù)程序段基值為2000H,偏移地址為1800H及2800H。中斷采用電平觸發(fā),完全嵌套,普通EOI結(jié)束,非緩沖。如圖5-2-6所示。3.8259A級(jí)聯(lián)與編程(2)級(jí)聯(lián)的初始化編程①
將四個(gè)中斷入口地址寫入中斷向量表。
MOVAX,1000HMOVDS,AXMOVDX,2600HMOVAL,81HMOVAH,25H
INT21HMOVDX,3500HMOVAL,85HINT21HMOVAX,2000HMOVDS,AX3.8259A級(jí)聯(lián)與編程(2)級(jí)聯(lián)的初始化編程①
將四個(gè)中斷入口地址寫入中斷向量表。
MOVDX,1800HMOVAL,94HMOVAH,25HINT21HMOVDX,2800HMOVAL,95HINT21H3.8259A級(jí)聯(lián)與編程(2)級(jí)聯(lián)的初始化編程
②主片初始化:主片地址CCF8H和CCF9H。MOVAL,19H;定義ICW1,主片級(jí)聯(lián),電平觸發(fā)
MOVDX,0CCF8HOUTDX,ALMOVAL,80H;定義ICW2,中斷類型號(hào)80H~87HMOVDX,0CCF9HOUTDX,ALMOVAL,04H;定義ICW3,IR2端接從片INT端
OUTDX,ALMOVAL,01H
;ICW4,完全嵌套,非緩沖,非自動(dòng)EOIOUTDX,AL3.8259A級(jí)聯(lián)與編程(2)級(jí)聯(lián)的初始化編程
②主片初始化:主片地址CCF8H和CCF9H。MOVAL,D9H;OCW1,允許IR1、IR2、IR5中斷
OUTDX,ALMOVAL,20H
;定義OCW2,普通EOI結(jié)束方式
MOVDX,0CCF8HOUTDX,AL③
從片初始化:從片地址FFECH和FFEDH。MOVAL,19H;定義ICW1,主片級(jí)聯(lián),電平觸發(fā)
MOVDX,0FFECHOUTDX,ALMOVAL,90H;定義ICW2,中斷類型號(hào)90H~97H3.8259A級(jí)聯(lián)與編程(2)級(jí)聯(lián)的初始化編程③
從片初始化:從片地址FFECH和FFEDH。MOVDX,0FFEDHOUTDX,ALMOVAL,02H;定義ICW3,從片接在主片IR2端
OUTDX,ALMOVAL,01H;ICW4,完全嵌套,非緩沖,非自動(dòng)EOIOUTDX,ALMOVAL,0F3H;定義OCW1,允許IR2、IR3中斷
OUTDX,ALMOVAL,20H
;定義OCW2,普通EOI結(jié)束方式
MOVDX,0FFECHOUTDX,AL第四節(jié)8259A應(yīng)用舉例4.8259A應(yīng)用舉例某微機(jī)系統(tǒng)需增設(shè)一個(gè)鍵盤應(yīng)用接口,用一塊8259A芯片作為中斷控制器,一塊8253芯片作為定時(shí)時(shí)鐘的發(fā)生器,74LS138譯碼器作為選擇電路的控制。其程序如下:
TABLESEGMENTWORDPUBLIC TYPE_64DW2DUP(0);時(shí)鐘地址
TYPE_65DW2DUP(0);本程序中不使用
TYPE_66DW2DUP(0);鍵盤地址
TABLEENDS
DATASEGMENTWORDPUBLIC SECONDSDB0 MINUTESDB04.8259A應(yīng)用舉例
HOURSDB0 INT_COUNTDW203E8H;1KHz中斷計(jì)數(shù)
KEY_BUFDB100DUP(0)
;100個(gè)字符的緩沖
DATAENDS STACKSEGMENT DW100DUP(0) TOPLABLEWORDSTACKENDS CODESEGMENTPUBLIC ASSUMECS:CODE,DS:TABLE,SS:STACK MOVAX,STACK;初始化堆棧
MOVSS,AX
;設(shè)置段寄存器
MOVSP,OFFSETTOP;初始化棧頂指針4.8259A應(yīng)用舉例
MOVAX,TABLE;初始化數(shù)據(jù)
MOVDS,AX
;設(shè)置段寄存器;定義中斷服務(wù)子程序地址
MOVTYPE_64+2,SEGCLOCK;時(shí)鐘處理子程序地址
MOVTYPE_64,OFFSETCLOCK MOVTYPE_66+2,SEGKEYBOARD;鍵盤子程序地址
MOVTYPE_66,OFFSETKEYBOARD;初始化數(shù)據(jù)段寄存器
ASSUMEDS:DATA MOVAX,DATA MOVDS,AX;初始化8259A中斷控制器
MOVAL,00010001B
;定義ICW1采用邊沿觸發(fā)4.8259A應(yīng)用舉例
MOVDX,0FF00H;指向8259A中斷控制器
OUTDX,AL;寫入到ICW1 MOVAL,01000000B;定義ICW2中斷類型碼
MOVDX,0FF02H
;指向8259A的ICW2 OUTDX,AL;寫入ICW2 MOVAL,00000001B;定義ICW4為80X86模式
OUTDX,AL;寫入到ICW4 MOVAL,11111010B
;OCW1屏蔽字,開放IR0,IR2 OUTDX,AL;寫入到OCW1;初始化8253計(jì)數(shù)器0。8253計(jì)數(shù)器的內(nèi)容參見(jiàn)第六章
MOVAL,00110111B;計(jì)數(shù)通道0、先低后高、方式3、BCD MOVDX,0FF07H;指向8253計(jì)數(shù)器4.8259A應(yīng)用舉例
OUTDX,AL;寫入到控制字寄存器
MOVAL,58H
;加載計(jì)數(shù)器的低字節(jié)
MOVDX,0FF01H;指向計(jì)數(shù)器0數(shù)據(jù)地址
OUTDX,AL;寫入計(jì)數(shù)器0
MOVAL,24H;加載計(jì)數(shù)器的高字節(jié)
OUTDX,AL;寫入計(jì)數(shù)器0;開放80X86中斷
STI
HERE:JMPHERE
;等待中斷
CLOCKPROCFAR;時(shí)鐘處理子程序……
MOVAL,00100000B;OCW2:普通EOI,IR04.8259A應(yīng)用舉例
MOVDX,0FF00H;指向OCW2 OUTDX,AL
;寫入到ICW1 IRETCLOCKENDP
KEYBOARDPROCFAR;鍵盤處理子程序……
MOVAL,00100000B;OCW2:普通EOI,IR0 MOVDX,0FF00H;指向OCW2 OUTDX,AL
;寫入ICW1 IRETBOARDENDPCODEENDS
END三、DMA控制方式和8237A可編程控制器1.DMA的基本操作2.8237A的編程結(jié)構(gòu)3.8237A初始化編程4.8237A應(yīng)用舉例第一節(jié)DMA的基本操作1.DMA的基本操作以磁盤控制器讀數(shù)據(jù)送到存儲(chǔ)器的DMA操作過(guò)程為例,當(dāng)磁盤控制器在讀第一個(gè)字節(jié)的數(shù)據(jù)時(shí),就發(fā)一個(gè)DMA請(qǐng)求信號(hào),如果DMA控制器的輸入通道未被屏蔽,那么DMA控制器就向CPU發(fā)出一個(gè)總線保持請(qǐng)求,即作為CPU的HOLD信號(hào)端的輸入。若CPU響應(yīng)的話,CPU讓出總線,并向DMA控制器發(fā)回一個(gè)總線允許信號(hào)HLDA;DMA控制器得到總線控制權(quán)后,發(fā)送磁盤控制器寫入存儲(chǔ)器的第一個(gè)字節(jié)地址以及DMA確認(rèn)信號(hào),通知磁盤控制器準(zhǔn)備輸出數(shù)據(jù)。隨后DMA控制器發(fā)出存儲(chǔ)器寫1.DMA的基本操作與IO讀命令,磁盤控制器收到IO讀命令,即將數(shù)據(jù)送數(shù)據(jù)總線并撤消請(qǐng)求;存儲(chǔ)器收到數(shù)據(jù)后,就向DMA控制器發(fā)出一個(gè)準(zhǔn)備好信號(hào),使DMA控制器的傳送數(shù)據(jù)地址加“1”或減“1”、傳送長(zhǎng)度減“1”,并撤消總線請(qǐng)求信號(hào),完成一次DMA輸入。當(dāng)磁盤控制器準(zhǔn)備好下一個(gè)數(shù)據(jù)時(shí),再重復(fù)上述的控制過(guò)程。當(dāng)傳送長(zhǎng)度值為“0”時(shí),DMA傳輸過(guò)程結(jié)束。此時(shí),DMA控制器向CPU發(fā)一個(gè)中斷請(qǐng)求信號(hào),通知處理器DMA操作結(jié)束。第二節(jié)8237A的編程結(jié)構(gòu)2.8237A的編程結(jié)構(gòu)(1)引腳功能圖5-3-1所示,8237A是具有40個(gè)引腳的雙列直插式器件。(2)內(nèi)部寄存器圖5-3-2所示8237A內(nèi)部可編程寄存器主要有10個(gè),表5-3-1展示了可由CPU讀/寫的DMA內(nèi)部寄存器,表中I/O端口地址是從起始地址開始算起。2.8237A的編程結(jié)構(gòu)(2)內(nèi)部寄存器2.8237A的編程結(jié)構(gòu)(2)內(nèi)部寄存器2.8237A的編程結(jié)構(gòu)(2)內(nèi)部寄存器①工作方式寄存器2.8237A的編程結(jié)構(gòu)(2)內(nèi)部寄存器②命令寄存器2.8237A的編程結(jié)構(gòu)(2)內(nèi)部寄存器③請(qǐng)求寄存器④屏蔽寄存器
2.8237A的編程結(jié)構(gòu)(2)內(nèi)部寄存器⑤狀態(tài)寄存器第三節(jié)8237A初始化編程3.8237A初始化編程8237A初始化編程步驟:①先對(duì)總清命令寄存器復(fù)位。②將起始地址的低8位和高8位分別寫入地址寄存器。③將字計(jì)數(shù)值的低8位和高8位分別寫入字計(jì)數(shù)寄存器。④寫工作方式寄存器。⑤寫屏蔽寄存器。⑥寫命令寄存器。3.8237A初始化編程
以IBMPC/XT系統(tǒng)為例,8237A的端口地址0000~000FH,程序以DMA為首地址0000H。與8237A相關(guān)的最高4位地址A19~A16是由頁(yè)面地址寄存器74LS670提供的,輸出端口號(hào)為80H~83H。程序中用注釋來(lái)說(shuō)明8237A初始化的過(guò)程,源程序如下:
MOVAL,04
;禁止DMA控制器工作
MOVDX,DMA+8;CR端口地址為DMA+8 OUTDX,AL
;寫CR,關(guān)閉8237A MOVDX,DMA+0DH;總清命令寄存器端口地址
OUTDX,AL
;對(duì)8237A復(fù)位
MOVDX,DMA
;通道0的CAR和BR端口地址3.8237A初始化編程
MOVCX,0004
;置循環(huán)次數(shù)為4WRITE:MOVAL,0FFH;地址初值為FFH OUTDX,AL
;寫通道0的CAR和BR低8位
OUTDX,AL
;再寫高8位,CAR和BR為FFFFH INCDX INCDX
;指向下一通道端口地址
LOOPWRITE;循環(huán)對(duì)4個(gè)通道的CAR和BR寫FFFFH MOVDX,DMA+0BH;通道0的MR端口地址
MOVAL,58H;通道0的MR:?jiǎn)巫止?jié)讀,地址加“1”,自動(dòng)預(yù)置
OUTDX,AL
;寫通道0的MR MOVAL,41H;通道1的MR:?jiǎn)巫止?jié)校驗(yàn),地址加“1”,無(wú)自動(dòng)預(yù)置3.8237A初始化編程
OUTDX,AL
;寫通道1的MR MOVAL,42H;通道2的MR:與通道1相同
OUTDX,AL;寫通道2的MR MOVAL,43H;通道3的MR:與通道1相同
OUTDX,AL;寫通道3的MR MOVDX,DMA+08H;CR端口地址為DMA+08H MOVAL,0
;CR:DACK低電平,DREQ高電平,固定優(yōu)先級(jí),啟動(dòng)工作
OUTDX,AL;寫CR MOVDX,DMA+0AH;MRSR端口地址
OUTDX,AL;寫通道0的MRSR,清除屏蔽
MOVAL,01 OUTDX,AL;寫通道1的MRSR,清除屏蔽3.8237A初始化編程
MOVAL,02 OUTDX,AL;寫通道2的MRSR,清除屏蔽
MOVAL,03 OUTDX,AL;寫通道3的MRSR,清除屏蔽這個(gè)初始化程序的片段,對(duì)四個(gè)DMA通道中的各個(gè)CAR和BR均寫入FFFFH地址值,通道0設(shè)置為單字節(jié)讀傳輸;通道1~3為校驗(yàn)傳輸,校驗(yàn)傳輸是一種虛擬傳輸,不修改地址,也不真正傳輸數(shù)據(jù),所以CAR的內(nèi)容不變。第四節(jié)8237A應(yīng)用舉例4.8237A應(yīng)用舉例(1)用8237A實(shí)現(xiàn)存儲(chǔ)器到存儲(chǔ)器傳輸8237A與80X86處理器相連時(shí),使用地址鎖存器作為地址暫存。本例中用地址鎖存器B。假設(shè)將內(nèi)存地址0000H~13FFFH的內(nèi)容傳輸?shù)?4000H~17FFFH中,用DMA控制傳輸。其控制程序如下,其中CX寄存器作為計(jì)數(shù),SI、DI分別作為源、目的寄存器,ES段寄存器為數(shù)據(jù)地址。
LATCHBEQU10H;鎖存器B CLEAR_FEQU7CH;F/C觸發(fā)器
CH0_AEQU70H;通道0地址4.8237A應(yīng)用舉例(1)用8237A實(shí)現(xiàn)存儲(chǔ)器到存儲(chǔ)器傳輸(續(xù))
CH1_AEQU72H;通道1地址
CH1_CEQU73H;通道1計(jì)數(shù)地址
MODEEQU7BH;工作方式寄存器
CMMDEQU78H;命令寄存器
MASKSEQU7FH;屏蔽寄存器
REQEQU79H
;請(qǐng)求寄存器
STATUSEQU78H
;狀態(tài)寄存器
TRANSPROCFARUSESAX MOVAX,ES;對(duì)鎖存器B編程
MOVAL,AH SHRAL,4 OUTLATCHB,AL4.8237A應(yīng)用舉例(1)用8237A實(shí)現(xiàn)存儲(chǔ)器到存儲(chǔ)器傳輸(續(xù))
OUTCLEAR_F,AL;清除F/C觸發(fā)器
MOVAX,ES;對(duì)源地址編程
SHLAX,4 ADDAX,SI
;源地址偏移量
OUTCH0_A,AL MOVAL,AH OUTCH0_A,AL MOVAX,ES
;對(duì)目的地址編程
SHLAX,4 ADDAX,DI
;目的地址偏移量
OUTCH1_A,AL MOVAL,AH4.8237A應(yīng)用舉例(1)用8237A實(shí)現(xiàn)存儲(chǔ)器到存儲(chǔ)器傳輸(續(xù))
OUTCH1_A,AL MOVAX,CX;對(duì)計(jì)數(shù)器編程
DECAX
;調(diào)整計(jì)數(shù)值
OUTCH1_C,AL MOVAL,AH OUTCH1_C,AL MOVAL,88H
;對(duì)工作方式寄存器編程
OUTMODE,AL MOVAL,85H OUTMODE,AL MOVAL,1 ;允許存儲(chǔ)器間塊傳送
OUTCMMD,AL4.8237A應(yīng)用舉例(1)用8237A實(shí)現(xiàn)存儲(chǔ)器到存儲(chǔ)器傳輸(續(xù))
MOV
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度智能充電樁施工安裝服務(wù)合同范本4篇
- 2025年中國(guó)紗庫(kù)支架行業(yè)市場(chǎng)發(fā)展前景及發(fā)展趨勢(shì)與投資戰(zhàn)略研究報(bào)告
- 2024版研究生實(shí)習(xí)合同模板2篇
- 2025年度公共安全設(shè)施招標(biāo)文件編制及安全性能評(píng)估服務(wù)合同3篇
- 狗仔扣鑰匙鏈行業(yè)行業(yè)發(fā)展趨勢(shì)及投資戰(zhàn)略研究分析報(bào)告
- 2025年水資源利用項(xiàng)目投產(chǎn)資金借貸合同3篇
- 2025年度個(gè)人健康數(shù)據(jù)共享合同范本3篇
- 2025年度個(gè)人農(nóng)業(yè)貸款抵押合同示范文本4篇
- 2025年挖掘機(jī)采購(gòu)與專業(yè)人才引進(jìn)合同3篇
- 2025年度個(gè)人入股分紅合作開發(fā)項(xiàng)目合同4篇
- 機(jī)械點(diǎn)檢員職業(yè)技能知識(shí)考試題庫(kù)與答案(900題)
- 成熙高級(jí)英語(yǔ)聽力腳本
- 北京語(yǔ)言大學(xué)保衛(wèi)處管理崗位工作人員招考聘用【共500題附答案解析】模擬試卷
- 肺癌的診治指南課件
- 人教版七年級(jí)下冊(cè)數(shù)學(xué)全冊(cè)完整版課件
- 商場(chǎng)裝修改造施工組織設(shè)計(jì)
- (中職)Dreamweaver-CC網(wǎng)頁(yè)設(shè)計(jì)與制作(3版)電子課件(完整版)
- 統(tǒng)編版一年級(jí)語(yǔ)文上冊(cè) 第5單元教材解讀 PPT
- 中班科學(xué)《會(huì)說(shuō)話的顏色》活動(dòng)設(shè)計(jì)
- 加減乘除混合運(yùn)算600題直接打印
- ASCO7000系列GROUP5控制盤使用手冊(cè)
評(píng)論
0/150
提交評(píng)論