第五章微機中斷系統(tǒng)和DMA控制方式_第1頁
第五章微機中斷系統(tǒng)和DMA控制方式_第2頁
第五章微機中斷系統(tǒng)和DMA控制方式_第3頁
第五章微機中斷系統(tǒng)和DMA控制方式_第4頁
第五章微機中斷系統(tǒng)和DMA控制方式_第5頁
已閱讀5頁,還剩86頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

微機原理及其應用普通高等教育“十一五”國家級規(guī)劃教材作者丁新民2007年5月第五章微機中斷系統(tǒng)和DMA控制方式學習目標1、識記中斷概念、中斷處理過程、中斷嵌套等概念。2、識記8259A可編程中斷控制器的結(jié)構(gòu)和工作原理,以及中斷控制器的級聯(lián)。3、理解8259A可編程中斷控制器的編程及其應用。4、識記8237可編程DMA控制器的結(jié)構(gòu)、工作原理。5、理解8237可編程DMA控制器的編程及其應用。第五章微機中斷系統(tǒng)、DMA控制方式

5.1中斷系統(tǒng)概述5.28259A可編程中斷控制器及其應用5.3DMA控制方式和8237A可編程控制器一、中斷系統(tǒng)概述1.中斷的基本概念2.中斷源的分類3.中斷優(yōu)先級與中斷向量第一節(jié)中斷的基本概念1.中斷的基本概念程序執(zhí)行過程中,出現(xiàn)異?;蛲庠O請求,CPU暫停正在運行的程序,轉(zhuǎn)而去執(zhí)行請求中斷的外設或異常事件的處理操作。處理結(jié)束后,再回到被中止的程序繼續(xù)執(zhí)行,這個過圖5-1-1中斷控制示意

主程序

STI;開中斷,允許CPU響應中斷請求

┇中斷請求響應中斷,執(zhí)行中斷服務程序中斷服務程序程稱為中斷,如圖5-1-1所示。為實現(xiàn)中斷處理而設置的硬件和軟件,統(tǒng)稱為中斷系統(tǒng)。1.中斷的基本概念中斷處理的過程,如圖5-1-2所示。一般中斷響應過程包括關(guān)中斷、保存斷點、識別中斷源(尋找相應中的斷服務程序入口地址)、保護現(xiàn)場、執(zhí)行中斷服務程序、恢復現(xiàn)場、開中斷和返回七個部分。圖5-1-2中斷處理過程中斷服務子程序入口中斷返回恢復現(xiàn)場中斷處理保護現(xiàn)場1.中斷的基本概念80X86CPU對一個硬件事件激發(fā)的中斷,稱為硬中斷或外中斷;由CPU內(nèi)部的異常事件引起的中斷,稱為軟中斷或內(nèi)中斷。①中斷源引起程序中斷的事件稱為中斷源。②中斷屏蔽通過軟件或硬件方法,使CPU拒絕響應中斷請求,但該中斷請求仍然存在,這種狀態(tài)稱為中斷屏蔽。有可屏蔽中斷和不可屏蔽中斷兩種。如80X86系統(tǒng)的INTR和NMI信號。1.中斷的基本概念③中斷優(yōu)先權(quán)中斷優(yōu)先權(quán)又稱為“中斷優(yōu)先級”。即為中斷源安排的服務次序,就是中斷優(yōu)先權(quán)。④中斷允許標志位

CPU的標志寄存器中,設有一位IF中斷允許位,當IF為“1”時,表示允許CPU響應外部中斷請求。IF是響應中斷請求的總開關(guān)。IF標志是可編程控制的,可以用STI和CLI指令,對其進行置位和清除設定。第二節(jié)中斷源的分類2.中斷源的分類80X86系列具有功能很強的中斷系統(tǒng),它可以處理256種不同的中斷,分別定義0,1,…,255中斷類型。按中斷產(chǎn)生的原因分類,可分為外部中斷和內(nèi)部中斷。80X86系統(tǒng)的中斷源,如圖5-1-3所示。圖5-1-380X86中斷源80X86CPUNMIINTR不可屏蔽中斷請求中斷邏輯8259AINTn指令I(lǐng)NTO指令除法出錯單步(TF=1)2.中斷源的分類(1)外部中斷由外部事件、外部設備或設備故障等產(chǎn)生的中斷稱為外部中斷,又可稱為硬件中斷。硬件中斷分為不可屏蔽中斷和可屏蔽中斷兩種類型。可屏蔽中斷是由CPU引腳INTR的外部中斷請求信號引入的,中斷請求是否被CPU響應,要受到標志寄存器的中斷允許標志位IF控制。2.中斷源的分類(2)內(nèi)部中斷內(nèi)部中斷也稱為軟件中斷。軟件中斷來自于INT、運算錯誤,調(diào)試程序設置的中斷。①由中斷指令I(lǐng)NTn引起的中斷②由CPU的某些運算錯誤引起的中斷③由調(diào)試程序Debug設置的中斷④由程序設置的異常引起的中斷(陷阱)第三節(jié)中斷優(yōu)先級與中斷向量3.中斷優(yōu)先級與中斷向量(1)中斷優(yōu)先級中斷系統(tǒng)的優(yōu)先級有兩個含義:響應優(yōu)先級和處理優(yōu)先級。響應優(yōu)先級是由硬排隊線路來決定響應次序;處理優(yōu)先級則是由CPU編程控制的響應次序。由硬排隊線路決定的響應次序是不能更改的,若需要更變,只能借助中斷屏蔽碼來實現(xiàn)。中斷屏蔽碼可以由程序員對屏蔽寄存器編程,屏蔽寄存器的每一位都對應一個中斷請求端口。3.中斷優(yōu)先級與中斷向量(2)中斷向量每一類中斷都包含若干個中斷源,每個中斷源對應一個中斷服務程序。每個中斷服務程序的入口地址,即為中斷向量。為便于處理,給每個中斷源也賦予一個編號,該編號與中斷向量是相對應的,又稱中斷類型碼。80X86系統(tǒng)有256個中斷向量,中斷類型號為0~255。實地址方式下,中斷向量用四個字節(jié);保護方式下,用中斷描述表來替代,每個中斷向量用八個字節(jié),如表5-1-1所示。3.中斷優(yōu)先級與中斷向量(2)中斷向量中斷類型向量地址功能微處理器類型00H~3H除法錯全部失效14H~7H單步調(diào)試全部陷阱28H~BH不可屏蔽中斷全部NMI3CH~FH斷點中斷全部陷阱410H~13H溢出中斷全部陷阱514H~17H邊界檢查80186以上失效618H~1BH非法操作碼80186以上失效71CH~1FH協(xié)處理器無效80186以上失效820H~23H雙重故障80386以上終止924H~27H協(xié)處理器段越界80386陷阱A28H~2BH非法TSS80386以上失效B2CH~2FH段不存在80386以上失效C30H~33H堆棧異常80386以上失效D34H~37H一般保護錯80386以上失效E38H~3BH頁面失效80386以上失效F3CH~3FH保留

1040H~43H協(xié)處理器錯80286以上失效1144H~47H對齊檢測中斷80486SX失效1248H~4FH機器檢測異常Pentium以上失效13~1F50H~7FH保留

20~1FF80H~3FFH軟中斷80286以上陷阱3.中斷優(yōu)先級與中斷向量(3)中斷向量的設置用戶定義的中斷向量設置,可以通過INTR信號、8259A、INTn指令引入CPU。用戶可編程設置的方法如下:①指令設置法

MOVAX,0

;主程序中設置

MOVES,AX MOVBX,n

4

;中斷類型號n×4 MOVAX,OFFSETINTSUB;存入偏移地址

MOVES:WORDPTR[BX],AX MOVAX,SEGINTSUB;存入段地址3.中斷優(yōu)先級與中斷向量(3)中斷向量的設置①指令設置法(續(xù))

MOVES:WORDPTR[BX+2],AX STI ┇INTSUB:┅;中斷服務子程序 ┇

IRET;中斷返回②利用DOS功能直接調(diào)用

MOVAL,n

;取中斷向量到ES:BX中

MOVAH,35H INT21H3.中斷優(yōu)先級與中斷向量(3)中斷向量的設置②利用DOS功能直接調(diào)用(續(xù))

PUSHES

;原中斷向量進棧保存

PUSHBX PUSHDS MOVAX,SEGINTSUB;設置中斷向量段地址在DS MOVDS,AX MOVDX,OFFSETINTSUB MOVAL,n

;中斷類型號n MOVAH,25H;設置中斷向量

INT21H ┇3.中斷優(yōu)先級與中斷向量(3)中斷向量的設置②利用DOS功能直接調(diào)用(續(xù))

POPDS

;恢復原中斷向量

POPBX POPES MOVAL,n MOVAH,25H;設置中斷向量

INT21H RETINTSUB:┅

;中斷服務子程序 ┇

IRET

;中斷返回二、8259A可編程中斷控制器及其應用1.8259A引腳和結(jié)構(gòu)2.8259A單片連接和編程3.8259A級聯(lián)與編程4.8259A應用舉例第一節(jié)8259A引腳和結(jié)構(gòu)1.8259A引腳和結(jié)構(gòu)(1)8259A引腳說明8259A為28個引腳的雙列直插式芯片,其外部引腳如圖5-2-1所示。圖5-2-18259A引腳示意28272625242322212019181716151234567891011121314CSWRRDD7D6D5D4D3D2D1D0CAS0CAS1GNDVCC(+5V)A0INTAIR7IR6IR5IR4IR3IR2IR1IR0INTSP/ENCAS28259A(2)內(nèi)部結(jié)構(gòu)由八個功能模塊組成,如圖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送來的讀/寫命令、片選信號及端口選擇信號A0。

SP/EN○INTA

INTRDWRA0CSD7~D0IR0IR1IR2IR3IR4IR5IR6IR7控制電路級聯(lián)緩沖器/比較器中斷服務寄存器(ISR)優(yōu)先權(quán)判別器(PR)中斷請求寄存器(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)③中斷請求寄存器IRR和中斷服務寄存器ISR8位的IRR和ISR對應外部輸入信號IR7~IR0。

④中斷屏蔽寄存器IMRIMR也是8位,用以屏蔽IRR的中斷請求。⑤優(yōu)先級判別器PRPR對IRR中的中斷請求進行優(yōu)先級識別。⑥級聯(lián)緩沖器/比較器有級聯(lián)和緩沖兩種工作方式。1.8259A引腳和結(jié)構(gòu)(3)8259A編程結(jié)構(gòu)①初始化命令字8259A初始化命令字編程,需預置ICW4~ICW1四個命令字。初始化命令字必須順序填寫。8259A由地址碼A0來訪問兩個端口地址,一個為偶地址,另一個為奇地址。若8259A由ICW1編程為級聯(lián)方式,那么就必須對ICW3編程。1.8259A引腳和結(jié)構(gòu)(3)8259A編程結(jié)構(gòu)①初始化命令字(續(xù))●

ICW1——芯片控制初始化命令字

ICW1對應偶地址端口,地址A0=0。格式:●

ICW2——中斷類型號初始化命令字

ICW2對應奇地址端口,地址A0=1。格式:D7D6D5D4D3D2D1D00001LTIM0SNGLIC4D7D6D5D4D3D2D1D0T7T6T5T4T30001.8259A引腳和結(jié)構(gòu)(3)8259A編程結(jié)構(gòu)①初始化命令字(續(xù))●

ICW3——標識主片/從片初始化命令字

ICW3對應奇地址端口,地址A0=1。主片格式:

ID2~ID0表示從片的識別地址,從片格式:D7D6D5D4D3D2D1D0S7S6S5S4S3S2S1S0D7D6D5D4D3D2D1D000000ID2ID1ID01.8259A引腳和結(jié)構(gòu)(3)8259A編程結(jié)構(gòu)①初始化命令字(續(xù))●

ICW4——方式控制字初始化命令字

ICW4對應奇地址端口,地址A0=1。格式:D7D6D5D4D3D2D1D0000SFNMBUFM/SAEOI

PM1.8259A引腳和結(jié)構(gòu)(3)8259A編程結(jié)構(gòu)②操作命令字

8259A的操作命令字有OCW1~OCW3,對設置的次序沒有要求。

OCW1——中斷屏蔽操作命令字

OCW1對應奇地址端口,地址A0=1。格式:D7D6D5D4D3D2D1D0M7M6M5M4M3M2M1M01.8259A引腳和結(jié)構(gòu)(3)8259A編程結(jié)構(gòu)②操作命令字(續(xù))●

OCW2——優(yōu)先循環(huán)和中斷結(jié)束操作字

OCW2對應偶地址端口,地址A0=0。格式:●

OCW3——特殊屏蔽和查詢方式操作字

OCW3對應偶地址端口,地址A0=0。格式:

D7D6D5D4D3D2D1D0RSLEOI00L2L1L0優(yōu)先權(quán)輪換指定中斷等級中斷結(jié)束標志位中斷等級編碼D7D6D5D4D3D2D1D01ESMMSMM01PRRRIS1.8259A引腳和結(jié)構(gòu)(4)8259A中斷管理方式①優(yōu)先級設置方式●完全嵌套方式●特殊全嵌套方式●優(yōu)先級自動循環(huán)方式●優(yōu)先級特殊循環(huán)方式②中斷結(jié)束方式●普通EOI結(jié)束方式●特殊EOI結(jié)束方式●自動EOI結(jié)束方式1.8259A引腳和結(jié)構(gòu)(4)8259A中斷管理方式③循環(huán)優(yōu)先級的循環(huán)方式●普通EOI循環(huán)方式●特殊EOI循環(huán)方式●自動EOI循環(huán)方式④中斷源屏蔽方式●普通屏蔽方式●特殊屏蔽方式第二節(jié)8259A單片連接和編程2.8259A單片連接和編程(1)初始化流程8259A工作之前,必須進行初始化。初始化是將編程的初始化命令字寫入8259A,設定8259A的初始狀態(tài)。初始化流程如圖5-2-3所示。圖5-2-38259A初始化流程YN用ICW4設置是否為特殊全嵌套、緩沖方式、自動結(jié)束中斷方式、8088/8088系統(tǒng)結(jié)束需要用ICW4嗎?Y開始用ICW1設置級聯(lián)、請求信號格式、是否用ICW4用ICW2設置中斷類型碼Y設ICW3,各位對應IR0~IR7的連接N設ICW3高五位為0,低三位為標識碼本片是主片嗎?是否為級聯(lián)方式?N2.8259A單片連接和編程(2)8259A與PC/XT標準總線的連接8259A與PC/XT標準總線的連接,如圖5-2-4所示。

主從程序/允許緩沖器中斷請求

圖5-2-48259A與標準總線的連接數(shù)據(jù)總線地址總線控制總線

CS

A0D7~D0RDWRINT

INTACAS2~CAS0

SP/EN

IR7

IR02.8259A單片連接和編程(2)8259A與PC/XT標準總線的連接8259A的中斷源,如表5-2-3所示。表5-2-38259A中斷源8259A輸入中斷類型號設備8259A輸入中斷類型號設備IRQ008H定時器(0通道)IRQ40CH串行接口IRQ109H鍵盤IRQ50DH未用IRQ20AH顯示器接口IRQ60EH軟盤IRQ30BH未用IRQ70FH打印機2.8259A單片連接和編程(3)初始化程序如系統(tǒng)分配給8259A的I/O地址號為20H和21H。BIOS程序中對8259A的初始化規(guī)定:中斷優(yōu)先級管理采用完全嵌套方式,中斷請求信號采用上升沿觸發(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),有兩個中斷源分別從IR2和IR3接入,按完全嵌套方式獲取優(yōu)先權(quán)。中斷類型號分別為42H和43H。中斷請求采用邊沿觸發(fā),非緩沖,非自動EOI結(jié)束方式。兩個端口地址為FF00H和FF01H。初始化程序如下:

MOVAL,00010011B;邊沿觸發(fā)方式,單片,用ICW4

MOVDX,0FF00H;8259A端口地址

OUTDX,AL

;加載ICW12.8259A單片連接和編程(4)中斷響應過程單級主控制方式為例,中斷操作過程。①當IR7~IR0出現(xiàn)中斷,使相應IRR位置位。②對IRR和IMR分析處理后,發(fā)出中斷請求。③在指令執(zhí)行結(jié)束時,且當IF=1,進入兩個中斷響應周期。④第一個中斷響應周期,接收第一個INTA中斷響應信號,將ISR置位、IRR復位。

⑤第二個中斷響應周期,收到第二個INTA中斷響應信號,送中斷類型號,進入中斷服務子程序。第三節(jié)8259A級聯(lián)與編程3.8259A級聯(lián)與編程一片8259A最多可管理八級中斷,采用級聯(lián)方式。第一級為主片,第二級為從片,主片可接1~8個從片,最多可管理64個中斷源。(1)兩級主、從式中斷系統(tǒng)結(jié)構(gòu)如圖5-2-5所示,主片、從片的中斷類型號為40H、60H。假設程序中注釋條件成立,初始化程序為:主片參數(shù):

ICW1=00010001B=11H;邊沿觸發(fā),級聯(lián)方式,用ICW4

ICW2=01000000B=40H;主片中斷類型號

ICW3=01000000B=40H;IR6引腳有從片連接

ICW4=00010001B=11H;特殊嵌套,非緩沖,正常EOI3.8259A級聯(lián)與編程(1)兩級主、從式中斷系統(tǒng)結(jié)構(gòu)

從片參數(shù):

ICW1=00010001B=11H;與主片相同

ICW2=01100000B=60H;從片中斷類型號

ICW3=00000110B=06H;從片INT引腳連接到主片的IR6上

ICW4=00000001B=01H;完全嵌套,非緩沖,正常EOIGND…

+VCC

圖5-2-5主從式中斷系統(tǒng)的結(jié)構(gòu)中斷請求

(輸出)地址總線數(shù)據(jù)總線控制總線

CS

A0INTAINTCAS0CAS1

8259A(從片)CAS2SP/EN

IR7…IR0

CS

A0INTAINTCAS0CAS1

8259A(主片)CAS2IR7…IR0SP/EN3.8259A級聯(lián)與編程(2)級聯(lián)的初始化編程采用兩片8259A級聯(lián)方式組成的中斷系統(tǒng),從片的INT連到主片的IR2端。若當前主片從IR1、IR5端引入兩個中斷請求,中斷類型號為81H、85H。中斷服務程序的段基值為1000H,偏移地址分別為2600H及3500H。從片由IR2、IR3端引入兩個中斷請求,中斷類型號為94H和95H,中斷服務程序段基值為2000H,偏移地址為1800H及2800H。中斷采用電平觸發(fā),完全嵌套,普通EOI結(jié)束,非緩沖。如圖5-2-6所示。3.8259A級聯(lián)與編程(2)級聯(lián)的初始化編程①

將四個中斷入口地址寫入中斷向量表。

MOVAX,1000HMOVDS,AXMOVDX,2600HMOVAL,81HMOVAH,25H

INT21HMOVDX,3500HMOVAL,85HINT21HMOVAX,2000HMOVDS,AX3.8259A級聯(lián)與編程(2)級聯(lián)的初始化編程①

將四個中斷入口地址寫入中斷向量表。

MOVDX,1800HMOVAL,94HMOVAH,25HINT21HMOVDX,2800HMOVAL,95HINT21H3.8259A級聯(lián)與編程(2)級聯(lián)的初始化編程

②主片初始化:主片地址CCF8H和CCF9H。MOVAL,19H;定義ICW1,主片級聯(lián),電平觸發(fā)

MOVDX,0CCF8HOUTDX,ALMOVAL,80H;定義ICW2,中斷類型號80H~87HMOVDX,0CCF9HOUTDX,ALMOVAL,04H;定義ICW3,IR2端接從片INT端

OUTDX,ALMOVAL,01H

;ICW4,完全嵌套,非緩沖,非自動EOIOUTDX,AL3.8259A級聯(lián)與編程(2)級聯(lián)的初始化編程

②主片初始化:主片地址CCF8H和CCF9H。MOVAL,D9H;OCW1,允許IR1、IR2、IR5中斷

OUTDX,ALMOVAL,20H

;定義OCW2,普通EOI結(jié)束方式

MOVDX,0CCF8HOUTDX,AL③

從片初始化:從片地址FFECH和FFEDH。MOVAL,19H;定義ICW1,主片級聯(lián),電平觸發(fā)

MOVDX,0FFECHOUTDX,ALMOVAL,90H;定義ICW2,中斷類型號90H~97H3.8259A級聯(lián)與編程(2)級聯(lián)的初始化編程③

從片初始化:從片地址FFECH和FFEDH。MOVDX,0FFEDHOUTDX,ALMOVAL,02H;定義ICW3,從片接在主片IR2端

OUTDX,ALMOVAL,01H;ICW4,完全嵌套,非緩沖,非自動EOIOUTDX,ALMOVAL,0F3H;定義OCW1,允許IR2、IR3中斷

OUTDX,ALMOVAL,20H

;定義OCW2,普通EOI結(jié)束方式

MOVDX,0FFECHOUTDX,AL第四節(jié)8259A應用舉例4.8259A應用舉例某微機系統(tǒng)需增設一個鍵盤應用接口,用一塊8259A芯片作為中斷控制器,一塊8253芯片作為定時時鐘的發(fā)生器,74LS138譯碼器作為選擇電路的控制。其程序如下:

TABLESEGMENTWORDPUBLIC TYPE_64DW2DUP(0);時鐘地址

TYPE_65DW2DUP(0);本程序中不使用

TYPE_66DW2DUP(0);鍵盤地址

TABLEENDS

DATASEGMENTWORDPUBLIC SECONDSDB0 MINUTESDB04.8259A應用舉例

HOURSDB0 INT_COUNTDW203E8H;1KHz中斷計數(shù)

KEY_BUFDB100DUP(0)

;100個字符的緩沖

DATAENDS STACKSEGMENT DW100DUP(0) TOPLABLEWORDSTACKENDS CODESEGMENTPUBLIC ASSUMECS:CODE,DS:TABLE,SS:STACK MOVAX,STACK;初始化堆棧

MOVSS,AX

;設置段寄存器

MOVSP,OFFSETTOP;初始化棧頂指針4.8259A應用舉例

MOVAX,TABLE;初始化數(shù)據(jù)

MOVDS,AX

;設置段寄存器;定義中斷服務子程序地址

MOVTYPE_64+2,SEGCLOCK;時鐘處理子程序地址

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應用舉例

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計數(shù)器0。8253計數(shù)器的內(nèi)容參見第六章

MOVAL,00110111B;計數(shù)通道0、先低后高、方式3、BCD MOVDX,0FF07H;指向8253計數(shù)器4.8259A應用舉例

OUTDX,AL;寫入到控制字寄存器

MOVAL,58H

;加載計數(shù)器的低字節(jié)

MOVDX,0FF01H;指向計數(shù)器0數(shù)據(jù)地址

OUTDX,AL;寫入計數(shù)器0

MOVAL,24H;加載計數(shù)器的高字節(jié)

OUTDX,AL;寫入計數(shù)器0;開放80X86中斷

STI

HERE:JMPHERE

;等待中斷

CLOCKPROCFAR;時鐘處理子程序……

MOVAL,00100000B;OCW2:普通EOI,IR04.8259A應用舉例

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應用舉例第一節(jié)DMA的基本操作1.DMA的基本操作以磁盤控制器讀數(shù)據(jù)送到存儲器的DMA操作過程為例,當磁盤控制器在讀第一個字節(jié)的數(shù)據(jù)時,就發(fā)一個DMA請求信號,如果DMA控制器的輸入通道未被屏蔽,那么DMA控制器就向CPU發(fā)出一個總線保持請求,即作為CPU的HOLD信號端的輸入。若CPU響應的話,CPU讓出總線,并向DMA控制器發(fā)回一個總線允許信號HLDA;DMA控制器得到總線控制權(quán)后,發(fā)送磁盤控制器寫入存儲器的第一個字節(jié)地址以及DMA確認信號,通知磁盤控制器準備輸出數(shù)據(jù)。隨后DMA控制器發(fā)出存儲器寫1.DMA的基本操作與IO讀命令,磁盤控制器收到IO讀命令,即將數(shù)據(jù)送數(shù)據(jù)總線并撤消請求;存儲器收到數(shù)據(jù)后,就向DMA控制器發(fā)出一個準備好信號,使DMA控制器的傳送數(shù)據(jù)地址加“1”或減“1”、傳送長度減“1”,并撤消總線請求信號,完成一次DMA輸入。當磁盤控制器準備好下一個數(shù)據(jù)時,再重復上述的控制過程。當傳送長度值為“0”時,DMA傳輸過程結(jié)束。此時,DMA控制器向CPU發(fā)一個中斷請求信號,通知處理器DMA操作結(jié)束。第二節(jié)8237A的編程結(jié)構(gòu)2.8237A的編程結(jié)構(gòu)(1)引腳功能圖5-3-1所示,8237A是具有40個引腳的雙列直插式器件。(2)內(nèi)部寄存器圖5-3-2所示8237A內(nèi)部可編程寄存器主要有10個,表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)部寄存器③請求寄存器④屏蔽寄存器

2.8237A的編程結(jié)構(gòu)(2)內(nèi)部寄存器⑤狀態(tài)寄存器第三節(jié)8237A初始化編程3.8237A初始化編程8237A初始化編程步驟:①先對總清命令寄存器復位。②將起始地址的低8位和高8位分別寫入地址寄存器。③將字計數(shù)值的低8位和高8位分別寫入字計數(shù)寄存器。④寫工作方式寄存器。⑤寫屏蔽寄存器。⑥寫命令寄存器。3.8237A初始化編程

以IBMPC/XT系統(tǒng)為例,8237A的端口地址0000~000FH,程序以DMA為首地址0000H。與8237A相關(guān)的最高4位地址A19~A16是由頁面地址寄存器74LS670提供的,輸出端口號為80H~83H。程序中用注釋來說明8237A初始化的過程,源程序如下:

MOVAL,04

;禁止DMA控制器工作

MOVDX,DMA+8;CR端口地址為DMA+8 OUTDX,AL

;寫CR,關(guān)閉8237A MOVDX,DMA+0DH;總清命令寄存器端口地址

OUTDX,AL

;對8237A復位

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)對4個通道的CAR和BR寫FFFFH MOVDX,DMA+0BH;通道0的MR端口地址

MOVAL,58H;通道0的MR:單字節(jié)讀,地址加“1”,自動預置

OUTDX,AL

;寫通道0的MR MOVAL,41H;通道1的MR:單字節(jié)校驗,地址加“1”,無自動預置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)先級,啟動工作

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,清除屏蔽這個初始化程序的片段,對四個DMA通道中的各個CAR和BR均寫入FFFFH地址值,通道0設置為單字節(jié)讀傳輸;通道1~3為校驗傳輸,校驗傳輸是一種虛擬傳輸,不修改地址,也不真正傳輸數(shù)據(jù),所以CAR的內(nèi)容不變。第四節(jié)8237A應用舉例4.8237A應用舉例(1)用8237A實現(xiàn)存儲器到存儲器傳輸8237A與80X86處理器相連時,使用地址鎖存器作為地址暫存。本例中用地址鎖存器B。假設將內(nèi)存地址0000H~13FFFH的內(nèi)容傳輸?shù)?4000H~17FFFH中,用DMA控制傳輸。其控制程序如下,其中CX寄存器作為計數(shù),SI、DI分別作為源、目的寄存器,ES段寄存器為數(shù)據(jù)地址。

LATCHBEQU10H;鎖存器B CLEAR_FEQU7CH;F/C觸發(fā)器

CH0_AEQU70H;通道0地址4.8237A應用舉例(1)用8237A實現(xiàn)存儲器到存儲器傳輸(續(xù))

CH1_AEQU72H;通道1地址

CH1_CEQU73H;通道1計數(shù)地址

MODEEQU7BH;工作方式寄存器

CMMDEQU78H;命令寄存器

MASKSEQU7FH;屏蔽寄存器

REQEQU79H

;請求寄存器

STATUSEQU78H

;狀態(tài)寄存器

TRANSPROCFARUSESAX MOVAX,ES;對鎖存器B編程

MOVAL,AH SHRAL,4 OUTLATCHB,AL4.8237A應用舉例(1)用8237A實現(xiàn)存儲器到存儲器傳輸(續(xù))

OUTCLEAR_F,AL;清除F/C觸發(fā)器

MOVAX,ES;對源地址編程

SHLAX,4 ADDAX,SI

;源地址偏移量

OUTCH0_A,AL MOVAL,AH OUTCH0_A,AL MOVAX,ES

;對目的地址編程

SHLAX,4 ADDAX,DI

;目的地址偏移量

OUTCH1_A,AL MOVAL,AH4.8237A應用舉例(1)用8237A實現(xiàn)存儲器到存儲器傳輸(續(xù))

OUTCH1_A,AL MOVAX,CX;對計數(shù)器編程

DECAX

;調(diào)整計數(shù)值

OUTCH1_C,AL MOVAL,AH OUTCH1_C,AL MOVAL,88H

;對工作方式寄存器編程

OUTMODE,AL MOVAL,85H OUTMODE,AL MOVAL,1 ;允許存儲器間塊傳送

OUTCMMD,AL4.8237A應用舉例(1)用8237A實現(xiàn)存儲器到存儲器傳輸(續(xù))

MOV

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論