第9章 中斷控制器 計數定時控制器及DMA控制器-鄭學堅、周斌《微型計算機原理及應用》_第1頁
第9章 中斷控制器 計數定時控制器及DMA控制器-鄭學堅、周斌《微型計算機原理及應用》_第2頁
第9章 中斷控制器 計數定時控制器及DMA控制器-鄭學堅、周斌《微型計算機原理及應用》_第3頁
第9章 中斷控制器 計數定時控制器及DMA控制器-鄭學堅、周斌《微型計算機原理及應用》_第4頁
第9章 中斷控制器 計數定時控制器及DMA控制器-鄭學堅、周斌《微型計算機原理及應用》_第5頁
已閱讀5頁,還剩144頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

電子信息類專業學科基礎課程物理與電子信息學院1授課教師:侯俊欽微機原理第九章中斷控制器、計數/定時控制器及DMA控制器第9章中斷控制器計數/定時控制器及DMA控制器章節目錄可編程中斷控制器8259A可編程計數/定時控制器8253123可編程DMA控制器8237A1可編程中斷控制器8259A8259A的主要功能專門處理和管理中斷事務的接口芯片基本功能接受中斷申請;并為中斷分配指定中斷類型碼判優及嵌套管理中斷屏蔽管理中斷結束管理其他功能單片8259A可以連接8個中斷源多片8259A級聯后,可以接入最多64個中斷源經判優后,最終選擇一個送INTR引腳通過數據總線,自動地向CPU發送中斷類型號基本功能具有多種不同的管理策略稱為:8259的工作方式其工作狀態和操作方式,可通過編輯和輸入命令字的方式進行設置、確定和更改稱為“可編程”1可編程中斷控制器8259A名稱輸入/輸出功能CS輸入片選信號WR輸入寫命令信號RD輸入讀命令信號D7-D0輸入/輸出雙向數據總線CAS0-CAS3輸入/輸出級聯總線SP/EN輸入/輸出主從定義/緩沖器方向INT輸出8259A中斷申請IR0-IR7輸入外設的中斷請求INTA輸入中斷響應信號A0輸入A0地址線8259A的外部結構及引腳功能級聯信號從設備編程/緩沖器允許引腳內部寄存器選擇。A0=0:ICW1,OCW2,OCW3A0=1:ICW2~ICW4,OCW1片選信號讀、寫信號1可編程中斷控制器8259A中斷請求中斷響應數據線中斷請求輸入8259A的外部結構及引腳功能8259A的內部結構及功能1可編程中斷控制器8259A68位的寄存器,用來接收來自IR0~IR7上的中斷請求信號,當收到請求信號時就在IRR的相應位置位。外設產生中斷請求的方式有兩種:一種是邊沿觸發方式,另一種是電平觸發方式。用戶可根據需要通過編程來設置。中斷請求信號輸出入線,高電平有效。與外設的中斷請求信號相連,接收來自外設的中斷請求。固定優先級方式下IR0優先權最高,IR7優先權最低。

8位的寄存器,用來存放中斷屏蔽字,它是由用戶通過編程(操作命令字OCW1)來設置的。IMRi與IRi一一對應,當IMR中第i位置位時,就屏蔽了來自IRi的中斷請求,使鎖存于IRRi位的中斷請求不能送達優先權裁決電路參加排隊,也就是說,禁止了IRi的中斷請求獲得服務的機會。這樣用戶就可以根據需要設置IMR的值,從而改變系統原有的中斷優先級。它是用來管理和識別各個中斷源的優先級的,也分為兩種情況。其一,根據優先級的規定,判別同時送達優先權電路的中斷源(IRRi=1且IMRi=0的位)那一個級別最高。其二,根據當前服務寄存器的狀態和新進入中斷優先權裁決電路的中斷請求,判別新的中斷請求的級別是否更高,以決定是否進入中斷嵌套。標記了CPU正在為哪些中斷源服務,這又分為兩種情況:其一,若CPU不處于中斷服務狀態,有未被屏蔽的中斷請求,CPU滿足中斷響應條件,將響應這些請求中級別最高的中斷。如經中斷優先權裁決電路裁決IRi的中斷請求被響應,當8259A收到第一個中斷響應信號時將使ISRi置“1”,而IRRi清“0”。ISRi置1表明CPU正在為IRi端的中斷請求服務;而IRRi由1變0則表示IRi端的中斷請求已被響應。其二,若CPU正在為中斷源服務,比如正在為IR6端的中斷請求服務中,如果IR0又申請中斷且沒被屏蔽,按8259A的默認優先級IR0高于IR6,因而CPU會暫停IR6的中斷處理而響應IR0的中斷請求,這樣ISR0也被置1,此時IRS0、IRS6均為1,這表明IR0、IR6的中斷服務均未結束。從該意義上而言,ISR的每一位都是“中斷服務的標志位”。1可編程中斷控制器8259A例:如果當前IRR=35H,問有哪幾個中斷請求尚未被響應?00110101IR7IR6IR5IR4IR3IR2IR1IR0IRR例:如果當前ISR=45H,問有哪幾個中斷請求已經被響應?如果按照IR0的中斷優先級最高,IR7的中斷優先級最低排序,當前正在相應的是哪一級中斷?ISR01000101IR7IR6IR5IR4IR3IR2IR1IR0當IR6有中斷請求時,沒有更高級的請求,給與響應。如果按照IR0的中斷優先級最高,IR7的中斷優先級最低排序,當IR2有中斷請求時,優先級高于IR6,中斷IR6,給與響應。當IR0有中斷請求時,優先級高于IR2,中斷IR2,給與響應。有三個中斷請求已經被響應(IR6,IR2,IR0),當前正在執行的是IR0的中斷服務。1可編程中斷控制器8259AISR寄存器中斷屏蔽寄存器IMR中斷請求優先級編碼器中斷請求寄存器IRR比較器B0B1B2A>BA0A1A2ISR編碼ISR7ISR6ISR5ISR4ISR3ISR2ISR1ISR0INTD0……D7IR0IR1IR2IR3IR4IR5IR6IR7中斷優先權裁決電路1可編程中斷控制器8259A9有一組初始化命令字寄存器(ICW1~ICW4共4個)和一組操作命令字寄存器(OCW1~OCW3共3個),這7個寄存器均由用戶根據需要通過編程來設置。控制邏輯可以按照編程所設置的工作方式來管理8259A的全部工作。在IRR中有未被屏蔽的中斷請求位時,它可以輸出高電平的INT信號向CPU申請中斷。在中斷響應期間,它使得ISR的相應位置位,并控制向CPU發送相應的中斷類型碼。在中斷服務結束時,它按照編程指定的方式進行結束處理。1可編程中斷控制器8259A108位的雙向三態緩沖器,用作8259A與系統數據總線的接口。用來傳輸初始化命令字、操作命令字、狀態字和中斷類型碼。1可編程中斷控制器8259A11

它接收來自CPU的讀/寫命令,完成規定的操作。具體動作由片選信號CS,地址輸入信號A0,以及讀(RD)和寫(WR)信號共同控制。1可編程中斷控制器8259A12在級聯方式的主?從結構中用來存放和比較系統中各8259A的從設備標志(ID)。其中CAS0~CAS2是8259A相互間連接用的專用總線,用來構成8259A的主?從式級聯控制結構。SP/EN在緩沖方式下產生總線啟動信號,以控制總線緩沖器的接收和發送.1可編程中斷控制器8259A●級聯緩沖/比較器一個系統中,8259A可以級聯,有一個主8259A,若干個(最多8個)從8259A級聯時,主8259A的三條級連線CAS0~CAS2作為輸出線,連至每個從8259A的CAS0~CAS2每個從8259A的中斷請求信號INT,連至主8259A的一個中斷請求輸入端IR主8259A的INT線連至CPU的中斷請求輸入端SP*/EN*在非緩沖方式下,規定該8259A是主片(SP*=1)還是從片(SP*=0)1可編程中斷控制器8259ASP/EN:主從片設定/允許緩沖信號,雙向雙功能,低電平有效。

8259數據線與系統數據總線間連接方式采用非緩沖方式(即直接相連,無數據總線驅動器)時,作為輸入。主8259接高電平,從8259接低電平。

8259數據線與系統數據總線間連接方式采用緩沖方式(即有數據總線驅動器)時,作為輸出,用于啟動數據總線驅動器。如果工作在緩沖方式并且有級連應用時,作為輸出,用于啟動數據總線驅動器。主從片的設置用軟件解決。●級聯緩沖/比較器1可編程中斷控制器8259A輸入:作為主片時接+5V作為從片時接地8259工作于非緩沖方式1可編程中斷控制器8259A8259工作于緩沖方式數據緩沖器輸出:作為數據緩沖器的選通信號1可編程中斷控制器8259ACAS0IR0CAS1IR1CAS2IR2

IR3-INTAIR4IR5INTIR6IR7-SP/-EN

CAS0-INTA

CAS1

CAS2INT

IR0

IR1-SP/-ENIR7CAS0IR0CAS1IR1CAS2IR2IR3-INTAIR4IR5INTIR6IR7-SP/-EN-INTAINTR+5V8259級聯工作示意圖輸出得到響應的從片編號1可編程中斷控制器8259A

8259A的多片級連方式

過程:8259A中斷控制器支持級連工作方式,在級連的系統中,由一個主片和若干個從片組成(最大9片可構成64級中斷源)。當從片中產生中斷請求時,CPU響應中斷后,在第一個中斷響應負脈沖,由主片通過CASx向從片發出相對應的中斷源位置號,在第二個中斷響應負脈沖,由被選中的從片向數據總線輸出中斷類型碼。1可編程中斷控制器8259A8259級聯工作示意圖1可編程中斷控制器8259A1可編程中斷控制器8259A中斷向量表物理地址單元內容INT4AH地址單元內容

IP=1806H

CS=F000HF000:180600000H類型0中斷處理程序入口地址MOVAL,300:0124類型49H中斷向量00001H0:01250:0126

向量地址:4AH*4=0128H0:012700004H類型1中斷處理程序入口地址0:012806H0:012918H0:012A00H0:012BF0H00008H…………………………………………0:012C類型4BH中斷向量0:012D0:012E0:012F中斷處理服務程序IRET003FFH類型FFH中斷處理程序入口地址軟件中斷的工作過程1可編程中斷控制器8259A中斷請求寄存器D7D6D5D4D3D2D1D000000000111D4D2D0中斷屏蔽寄存器D7D6D5D4D3D2D1D000000100D4D0D0去往CPU請求階段8259A的工作過程1可編程中斷控制器8259A響應階段中斷請求寄存器D7D6D5D4D3D2D1D0000101010中斷服務寄存器D7D6D5D4D3D2D1D0000000001中斷類型碼CPU取走類型碼8259A的工作過程1可編程中斷控制器8259A8259A工作結束階段注:ISR寄存器的內容的改變與中斷結束方式有關。在自動結束(AEOI)方式時,當第一個中斷響應信號到達,ISR的相應位清0。其它方式時,ISR中的位保持到EOI(中斷結束)命令執行。8259A的工作過程1可編程中斷控制器8259A8259A的工作過程請求信號IRR鎖存優先權判別器PR邏輯電路根據IMR判斷IMR對應位為08259A的INT端為1優先權最高CPU的INTR端CPU響應中斷IF=18259AINTAISR相應位置1,IRR響應位清0,送中斷類型碼●若允許嵌套,PR依據ISR的狀態,判斷新的中斷請求優先權是否高于正在服務的中斷,是則送出INT=1。此時ISR中將有兩個(或兩個以上)的中斷服務狀態置1●服務結束,8259A清除ISR響應位。1可編程中斷控制器8259A普通全嵌套方式特殊全嵌套方式自動循環方式特殊循環方式優先權固定方式優先權循環方式設置優先權方式普通中斷結束方式特殊中斷結束方式自動中斷結束方式非自動中斷結束方式結束中斷方式中斷屏蔽方式普通屏蔽方式特殊屏蔽方式中斷觸發方式邊沿觸發方式電平觸發方式數據線連接方式緩沖方式非緩沖方式與CPU配合方式與8080/8085CPU配合與8086/8088CPU配合級連方式級連不級連8259A的工作方式1可編程中斷控制器8259A優先級排隊的方式固定優先級:指各中斷源的優先級由IRi引腳編號確定,優先級是固定的。有普通全嵌套方式和特殊全嵌套方式兩種

(1)普通全嵌套方式

在該方式下,IR7~IR0的優先級順序是IR0最高,IR7最低。且一個中斷被響應,只有比它更高優先級的中斷請求才會被響應。(2)特殊全嵌套方式

與全嵌套方式基本相同,不同之處在于該方式不但響應比本級高的中斷申請,而且響應同級的中斷申請。

系統中若只有單片8259A時,通常采用普通全嵌套方式。系統中有多片8259A級聯時,主片必須采用特殊全嵌套方式,從片可采用全嵌套方式。1可編程中斷控制器8259A主程序初始化STIIR2,IR4有請求ISR2=1IR2中斷處理程序

IR1有請求,開中斷后才能被響應

STIIR1中斷處理程序(嵌套)

STI

ISR1=1中斷結束命令ISR1被清除IRET返回IR2中斷處理程序中斷結束命令ISR2被清除ISR4=1IR4中斷處理程序STI中斷結束命令IRET返回IR2中斷處理程序

IRETISR4被清除返回主程序為什么低優先級的IR4可以打斷高優先級的IR2的執行?完全嵌套例:1片8259A,在IR2和IR4引腳上同時出現中斷請求。IR1引腳上又有中斷請求。1可編程中斷控制器8259AD.主8259AIR0IR1IR2IR3IR4IR5IR6IR7一般嵌套方式:從片的INT被主片封鎖,故更高級別的IR0-IR2中斷也無法得到響應特殊嵌套方式:因主片不封鎖從片的INT,故級別高的IR0-IR2中斷可以得到響應。(但IR3-IR7仍被本從片封鎖)C.假定IR7發生中斷,并獲得服務一般嵌套方式:IR4的中斷被服務時,這些中斷將被封鎖。B.特殊嵌套方式:IR4的中斷被服務時,只封鎖IR5-IR7。A.INTE.從8259AINTIR0IR1IR2IR3IR4IR5IR6IR7去CPU1可編程中斷控制器8259A循環優先級:

指當某個中斷源受到中斷服務后,它的優先權就自動降為最低,而優先級較其低一級的升為最高。例如,IR4被服務后,相應的IR5的優先級升為最高,依次為IR6,IR7,IR0,IR1,IR2,IR3,IR4。(1)優先權普通循環方式該方式下,8259A總是自動規定:初始時,IR0有最高優先權,IR7最低。當某個中斷源受到中斷服務后,它的優先權就自動降為最低,而優先級較其低一級的升為最高。(2)優先權特殊循環方式該方式下,由用戶編程決定初始時的最低優先級。如規定IR5最低,則相應的最高優先權為IR6,依次為IR7,IR0,IR1,IR2,IR3,IR4,IR5。1可編程中斷控制器8259AIR7IR6IR5IR4IR3IR2IR1IR0原始狀態ISR01000100優先級76543210結束IR2ISR01000000優先級43210765結束IR6ISR00000000優先級07654321思考:8259工作于優先權普通循環方式,當IR3的中斷服務結束時,IR6處于優先級的哪一級?IR7IR6IR5IR4IR3IR2IR1IR0優先級32107654優先權普通循環方式舉例:1可編程中斷控制器8259AIR7IR6IR5IR4IR3IR2IR1IR0原始狀態ISR01000100優先級76543210執行置位優先權命令ISR01000100優先級21076543置位優先權命令:將IR4置為優先權最低思考:如果欲將IR2的優先級設為最高級,應如何實現?答:使用置位優先權命令:將IR1置為優先權最低.優先權特殊循環方式舉例:1可編程中斷控制器8259A中斷屏蔽方式普通屏蔽方式當CPU執行主程序時不希望某幾個中斷源申請中斷,或在執行某一中斷服務程序時不希望比該中斷源級別更高的中斷源申請中斷,可采用此法。方法是:將中斷屏蔽字寫入IMR,若某位寫入“1”,則禁止相應的IR申請中斷,若寫入“0”,則開放相應的中斷源。特殊屏蔽方式在執行某一中斷服務程序時,僅對本級中斷進行屏蔽,允許接受級別較低的中斷請求。設置特殊屏蔽方式后,對正在響應的某級中斷,編程使IMR對應位置1,就會同時使ISR的對應位復位。這樣,不只屏蔽了當前正在處理的本級中斷,而且開放了較低級的中斷請求。1可編程中斷控制器8259A34由上面的敘述可以看出,普通屏蔽方式的命令字可在主程序或中斷服務程序中寫入,而特殊屏蔽方式的命令字應當在中斷服務程序中寫入。00001000IR7IR6IR5IR4IR3IR2IR1IR0IMR0000000ISR例如正在執行IR3的中斷服務:0雖OCW3能將8259A中將IMRi置1,實現了特殊屏蔽,但中斷服務程序的運行并未真正清除;所以,該中斷服務程序臨近結束時,應解除特殊屏蔽,以保證該中斷服務程序的正常結束和返回故需要發送兩次的OCW1

和OCW31可編程中斷控制器8259A自動結束方式(AEOI):當某一中斷發生后,CPU一旦響應該中斷,8259A在第一個INTA脈沖將ISR相應位置為1,在第二個INTA脈沖由8259A的ISR寄存器輸出中斷向量類型碼到數據總線上由CPU讀取,同時8259A自動清除ISR中的相應位,這種方式通常用于非中斷嵌套方式的單片系統中。(進入中斷程序后自動清除)非自動結束方式(EOI):在非自動結束中斷方式下,必須在中斷服務程序返回之前,向8259A發出中斷結束命令EOI,使得ISR中的當前服務位清除“0”。

a)一般中斷結束方式(全嵌套)非自動結束方式

b)特殊中斷結束方式(特殊嵌套)結束中斷方式1可編程中斷控制器8259A一般中斷結束方式:當8259A工作在全嵌套方式時采用此結束方式,即CPU中斷服務結束時,向8259A輸出一條一般中斷結束方式命令,8259A會自動清除ISR中的最高級位。(OCW2)特殊中斷結束方式:它用于特殊嵌套方式中,由于此時優先級結構在變化,無法確定正在響應的是哪一級中斷,所以給8259A發一個特殊中斷結束命令,該命令指明要清除當前中斷服務寄存器ISR中的哪一位。當8259A工作在級連方式時,一般采用非自動結束方式,但需發兩個EOI命令,第一個給從片8259A,并且讀取從片的ISR值,確認從片ISR沒有新的中斷后,發第二個給主片8259A。(OCW2)1可編程中斷控制器8259A電平觸發方式:

IR0~IR7以高電平方式作為中斷請求的有效信號。邊沿觸發方式:

IR0~IR7以上升延跳變方式作為中斷請求的有效信號。3)查詢方式:在此方式下,外設仍需通過IR0~IR7向8259A發送中斷信號,但與上兩種方式不同是,8259A不向CPU發中斷INTR信號,而是通過CPU向8259A發查詢命令(OCW3的D2)后,讀取查詢字來確定是否有外設請求中斷服務。中斷觸發方式1可編程中斷控制器8259A屏蔽方式正常屏蔽特定屏蔽請求方式電平觸發邊沿觸發中斷請求IRRIR0IR7…優先級編碼器&INT≥1&&中斷屏蔽IMRD0D7……ISR編碼比較器最高優先級IRINT嵌套方式完全嵌套特殊全嵌套優先級管理固定輪轉不指定指定自動結束方式時總是后,請求IR優先結束方式自動手工不指定指定級聯方式緩沖非緩沖主、從片關系8259A工作方式(小結)1可編程中斷控制器8259A8259A的編程8259A的工作狀態和操作方式是由CPU通過命令字進行控制的。8259A有兩類命令字——

初始化命令字ICW(InitializationCommandWords)

操作命令字OCW(OperationCommandWords)。初始化命令字ICW,當計算機剛啟動時,由CPU按次序發送24個不同格式的ICW,用來建立起8259A操作的初始狀態,此后的整個工作過程中該狀態保持不變。操作命令字(OCW)用于動態控制中斷處理,是在需要改變或控制8259A操作時隨時發送的。每片8259A有2個片內地址A0=0和A0=1,所有的命令字都是通過這兩個端口來發送的。1可編程中斷控制器8259A1.初始化命令字ICW8259A在開始工作前必須寫入初始化命令字初始化命令字ICW最多可以有4個:ICW1~ICW4,必須按照以上順序依次寫入其中ICW1

和ICW2

是必須的,ICW3和ICW4是否需要,由ICW1指明ICW1寫入偶地址,其他寫入奇地址級聯方式下,主從片都要寫ICW3關中斷設置ICW1設置ICW2級聯?從片?設置主片ICW3設置ICW4開中斷NN設置從片ICW3需要ICW4?YNY1可編程中斷控制器8259A初始化命令字ICW1ICW2ICW3ICW40A0A7A6A5D7D6D51D4LTIMD3ADID2SINGLD1IC4D0中斷向量地址的A7~A5,僅用于8080/8085系統,其他系統無意義。中斷請求觸發方式選擇:1:電平觸發0:邊沿觸發調用地址間隔(8080/8085用):1:4個字節0:8個字節1:單一82590:8259級聯1:需用ICW40:不用ICW41可編程中斷控制器8259A初始化命令字ICW1ICW2ICW3ICW4用于設定中斷類型碼1A0A15A14A13A12A11A10A9A8D7D6D5D4D3D2D1D0T7T6T5T4T3×××8080/8085系統為中斷向量地址的A15~A8.8086/8088系統中為中斷類型碼的高5位1可編程中斷控制器8259A假設偶地址端口地址為20H,指令執行后,對8259A設置了基本工作狀態,ICW1的含義是什么?MOVAL,11HOUT20H,AL00010001一片8259A上的8個中斷源的8個中斷類型碼是連續的設置ICW2=40H,則8259A的IR0~IR7

,對應的8個中斷類型碼為:40~47H,寫出其ICW2的初始化程序。如果其IR4的中斷類型碼是0BCH;則該8259A的IR0~IR7

,對應的8個中斷類型碼為:

0B8H到0BFHMOVAL,40HOUT21H,AL1可編程中斷控制器8259A例.已知某中斷向量存放在000D4H地址單元處。并且由000D4H單元起始依次存放著10H、20H、30H、40H。請回答:(1)中斷類型號為何?(2)接入8259時,該8259的ICW2應為何?(3)該中斷源應接入該8259的哪個中斷請求輸入引腳?(4)該中斷向量的物理地址為何?(5)CPU響應該中斷時,CS中的值為何?IP中的值為何?1可編程中斷控制器8259A初始化命令字ICW1ICW2ICW3ICW4有多片8259A級聯時,才需要設置ICW31A0IR7IR6IR5IR4IR3IR2IR1IR0D7D6D5D4D3D2D1D01:該引腳有從片,0:該引腳無從片主片×××××ID2ID1ID0D7D6D5D4D3D2D1D0從片從設備的ID編碼1可編程中斷控制器8259A主8259

IR7……IR4………IR0INT從8259(1)

IR7……IR4………IR0INT從8259(2)

IR7……IR4………IR0芯片名ICW3主8259從8259(1)從8259(2)00010001=11H00000100=04H00000000=00H例1可編程中斷控制器8259A初始化命令字ICW1ICW2ICW3ICW41A0000D7D6D5SFNMD4BUFD3M/SID2AEOID1μPMD01:特殊完全嵌套方式0:完全嵌套方式0X:非緩沖方式10:緩沖方式,從片11:緩沖方式,主片1:自動結束方式0:非自動結束1:8086/8088系統0:8080/8085系統1可編程中斷控制器8259A例

一個CPU為8086/8088的系統,采用1片8259A做控制器,要求其工作在全嵌套方式,不用中斷自動結束方式,不用緩沖方式,中斷請求信號為邊沿觸發方式,中斷類型碼為0B0H~0B7H。該8259A的兩個端口地址分別為20H和21H,試完成初始化程序。0A0A7A6A5D7D6D51D4LTIMD3ADID2SINGLD1IC4D0ICW120H0001001ICW41(13H)ICW21A0A15A14A13A12A11A10A9A8D7D6D5D4D3D2D1D0T7T6T5T4T3×××21H10110000(B0H)1可編程中斷控制器8259A例

一個CPU為8086/8088的系統,采用1片8259A做控制器,要求其工作在全嵌套方式,不用中斷自動結束方式,不用緩沖方式,中斷請求信號為邊沿觸發方式,中斷類型碼為0B0H~0B7H。該8259A的兩個端口地址分別為20H和21H,試完成初始化程序。ICW41A0000D7D6D5SFNMD4BUFD3M/SID2AEOID1μPMD021H00000001(01H)MOVAL,13HOUT20H,ALMOVAL,0B0HOUT21H,ALICW1ICW2MOVAL,01HOUT21H,ALICW41可編程中斷控制器8259A假設8259A的端口地址為B0H、B1H思考:8259A如下要求的初始化程序段該如何寫?該8259A芯片的工作狀態為:

單片8259A

中斷請求電平觸發

中斷類型碼從40H開始

一般全嵌套方式

非緩沖方式

自動中斷結束方式MOVAL,1BHOUTB0H,ALMOVAL,40HOUTB1H,ALMOVAL,03HOUTB1H,AL1可編程中斷控制器8259A8259A初始化例例:2片8259級聯,從片的INT接主片的IR2假設端口地址:主片20H、21H,從片A0H、A1H主片和從片均采用邊沿觸發;均為非自動結束方式主片采用特殊全嵌套方式,從片是一般全嵌套方式采用非緩沖方式,主片SP接+5V,從片SP接地主片的中斷類型號為38H~3FH,從片的中斷類型號為70H~77H寫出主8259A和從8259A的初始化程序段1可編程中斷控制器8259A初始化程序段如下:ICW1AEQU20H ;定義主片端口地址符號ICW2AEQUICW1A+1ICW3AEQUICW2AICW4AEQUICW2AICW1BEQU0A0H ;定義從片端口地址符號ICW2BEQUICW1B+1ICW3BEQUICW2BICW4BEQUICW2B

;-----------主片8259A------------MOVAL,11H ;ICW1,邊沿觸發,多片,需ICW4OUTICW1A,ALMOVAL,38H ;ICW2,中斷類型碼OUTICW2A,ALMOVAL,04H ;ICW3,IR2接從片OUTICW3A,ALMOVAL,11H ;ICW4,非緩沖,特殊全嵌套;非自動結束中斷OUTICW4A,AL;-----------從片8259A------------MOVAL,11H ;ICW1,邊沿觸發,多片,需ICW4OUTICW1B,ALMOVAL,70H ;ICW2,中斷類型碼OUTICW2B,ALMOVAL,02H ;ICW3,INT接主片的IR2OUTICW3B,ALMOVAL,01H;ICW4,非緩沖,普通全嵌套;非自動結束OUTICW4B,AL1可編程中斷控制器8259A操作命令字OCW1OCW2OCW31可編程中斷控制器8259A操作命令字OCW1OCW2OCW31A0M7M6M5M4M3M2M1M0D7D6D5D4D3D2D1D0IR7IR6IR5IR4IR3IR2IR1IR0Mi=1:IRi的中斷請求被屏蔽Mi=0:IRi的中斷請求開放1可編程中斷控制器8259A操作命令字OCW1OCW2OCW30A000D4D3RD7SLD61:L2~L0有意義0:L2~L0無意義L2L1L0D2D1D01:循環優先級0:固定優先級EOID51:有中斷結束功能0:無中斷結束功能1可編程中斷控制器8259A操作命令字OCW1OCW2OCW30A000D4D3RD7SLD6L2L1L0D2D1D0EOID5SL=1時有意義:R=1、EOI=0時指出循環優先級起始最低優先級,即為特殊循環優先級。R=0、EOI=1時指出要清除的ISR位,即為特殊中斷結束方式。R=EOI=1時是上述兩功能的組合,即指出要清除的ISR位,同時指定它為最低優先級。1可編程中斷控制器8259ARSLEOIL2~L0功能名稱應用000無用設置固定優先級用于固定優先級和循環優先級間的切換100無用設置循環優先級001無用一般的EOI命令(一般的中斷結束)固定優先級下的中斷結束命令字011給出要清除的ISR位的編碼特殊的EOI命令(特殊中斷結束方式)101無用循環優先級一般的EOI命令循環優先級下的中斷結束命令字110給出循環優先級的最低起始級的中斷編碼設置特殊循環優先級用于設置特殊循環優先級111給出要清除的ISR位,同時又指定它為循環優先級的最低起始級特殊的EOI命令特殊的循環優先級特殊循環優先級下的中斷結束命令字1可編程中斷控制器8259A操作命令字OCW1OCW2OCW30A001D4D30D7ESMMD6SMMD5特殊屏蔽方式允許位:1:允許;0:禁止特殊屏蔽方式位:1:進入特殊屏蔽0:恢復一般屏蔽(D6=1時有效)11:進入特殊屏蔽10:退出特殊屏蔽0X:無意義1可編程中斷控制器8259A操作命令字OCW1OCW2OCW30A001D4D30D7ESMMD6PD2RRD1RISD0SMMD5查詢方式位:1:查詢命令;0:無查詢功能讀IRR,ISR寄存器允許位:1:允許;0:禁止RR=1有效RIS=0:讀IRRRIS=1:讀ISR1XX:設置為查詢方式(從偶地址口讀回)00X:無意義010:讀IRR允許(從偶地址口讀回)011:讀ISR允許(從偶地址口讀回)1可編程中斷控制器8259A讀取狀態字CPU可隨時讀出IRR、ISR、IMR和查詢字A0為低(偶地址)時由OCW3中RR和RIS位編碼決定讀取的是IRR或ISR,由OCW3中P位決定讀取的是查詢字,查詢字可反映8259A是否有中斷請求,及哪個引腳上有中斷請求A0為高(奇地址)時,讀取的是IMR1可編程中斷控制器8259A查詢字I----W2W1W0D7D6D5D4D3D2D1D0中斷位I位為1,有外設請求中斷W2~W0的編碼當前中斷請求的最高優先級1可編程中斷控制器8259AESMMSMM功能0*該操作對特殊屏蔽無效10無效特定屏蔽11設置特定屏蔽

設置方法:

用OCW1屏蔽部分IR[含自己],用OCW3置SMM即可。

取消方法:

用OCW3取消特定屏蔽,用OCW1取消被屏蔽的IR。

特定屏蔽管理:1可編程中斷控制器8259A

8259A的讀操作

在PC機中8259A的端口地址為20H和21H。常用的讀操作有如下幾種。

(1)讀出IRR的值:先向20H端口寫0AH(OCW3RR=1、RIS=0),再讀20H端口。例如:

MOV AL,00001010B ;OCW3=0AHOUT 20H,AL ;OCW3寫入8259AIN AL,20H ;讀出IRR內容1可編程中斷控制器8259A(2)讀出ISR的值:先向20H端口寫0BH(OCW3RR=1、RIS=1),再讀20H端口。例如:

MOV AL,00001011B ;OCW3=0BHOUT 20H,AL ;OCW3寫入8259AIN AL,20H ;讀出ISR內容(3)讀查詢字(讀出最高級別的中斷請求IR):先向20H端口寫0CH(OCW3P=1),再讀20H端口。例如:

MOV AL,00001100B ;OCW3=0CHOUT 20H,AL ;OCW3寫入8259AIN AL,20H ;讀出查詢字內容1可編程中斷控制器8259A(4)讀IMR的值。隨時可用奇地址讀IMR的值,并對其作修改。例1:IN AL,21H ;讀IMRAND AL,7FH ;開放IR7中斷OUT 21H,AL ;修改IMR

例2:

IN AL,21H ;讀IMROR AL,80H ;關閉IR7中斷

OUT 21H,AL ;修改IMR1可編程中斷控制器8259A已知有A、B、C、D四個中斷源,它們的中斷類型號如下:ABCD40H45H32H33H應如何將它們接入8259?主8259IR7….IR5…IR3….IR0從8259IR7….IR5…IR3IR2..IR0ABCDINTINTCPU設它們的端口地址為:主片:FFE8H、FFEAH;

(A0=0)(A0=1)

從片:FFF8H、FFFAH

(A0=0)(A0=1)8259級聯應用舉例1可編程中斷控制器8259A要求:中斷信號邊沿觸發;非自動EOI;非緩沖方式1、主片8259的初始化:MOVAL,11HMOVDX,0FFE8HOUTDX,ALMOVDX,0FFEAHMOVAL,40HOUTDX,ALMOVAL,08HOUTDX,ALMOVAL,11HOUTDX,ALMOVAL,0D6HOUTDX,AL寫入ICW1寫入ICW2寫入ICW3寫入ICW4寫入OCW11可編程中斷控制器8259AMOVAL,11HMOVDX,0FFF8HOUTDX,ALMOVDX,0FFFAHMOVAL,30HOUTDX,ALMOVAL,03HOUTDX,ALMOVAL,01HOUTDX,ALMOVAL,0F3HOUTDX,AL寫入ICW1寫入ICW2寫入ICW3寫入ICW4寫入OCW12、從片8259的初始化:2可編程計數/定時控制器8253主要用途1.中斷信號2.輸出精確的定時信號3.波特率發生器4.實現延遲2可編程計數/定時控制器8253軟件定時(也稱軟件延時)定時時間由軟件編程(循環執行某段程序)來控制。方法簡單、費用低;但CPU的利用率低。不可編程的硬件定時定時時間由不可編程器件和外圍電路控制,通過改變電路參數,可在一定的范圍內改變定時時間,定時精度不高。如:555芯片。可編程的硬件定時定時時間和范圍是通過軟件對可編程器件進行編程控制,由CPU的時鐘信號提供時間基準,定時精確。與CPU并行工作,應用比較廣泛,如8253,8254。

實現定時的方式2可編程計數/定時控制器8253減1計數器判零外設計數/定時脈沖CLK外設OUTCPU預置值CPU計數和計時本質上是相同的,它們都是對一個輸入脈沖進行計數。計數器的輸入信號可以是隨機信號,定時器的輸入信號要求具有固定周期。可編程定時/計數器8253就是一個減法計數器,它是Intel公司專為80×86系列配套開發的16位可編程定時/計數器芯片。定時/計數器的計數方式2可編程計數/定時控制器8253具有3個獨立的16位計數器通道;每個通道有6種工作方式,可由程序設置和改變;每個計數器均可按二進制或二—十進制計數;每個計數器的計數速率高達2MHz;

可用作可編程方波頻率產生器、分頻器、程控單脈沖發生器等;所有的輸入輸出電平都與TTL兼容。8253引腳及功能2可編程計數/定時控制器8253CLK0GATE0OUT0CLK1GATE1OUT1CLK2GATE2OUT2計數器0計數器1計數器2數據總線緩沖器讀/寫邏輯控制字寄存器D7~D0A1A0WRRDCS內部總線雙向、三態、8位,CPU通過數據總線緩沖器可向控制字寄存器寫入控制字,向計數器寫入計數初值;也可讀出計數器當前計數值。接收來自CPU的控制信號。完成對8253各計數器的讀/寫操作。接收CPU寫入的控制字,決定8253使用哪個計數器,工作方式、讀/寫格式、計數方式。計數器的門控信號實現對CLK輸入時,減1計數器是否工作的控制。其控制關系由不同工作方式確定。計數器的輸出信號減1計數器為0時的輸出信號,可以用于對外部控制,也可用于向CPU申請中斷。計數器的時鐘信號計數器:由外設提供的計數脈沖。定時器:時鐘脈沖8253的內部結構2可編程計數/定時控制器8253CSRDWRA1A0功能

0001001對計數器A1A0設置計數初值

1001011設置控制字或給一個命令

0000101從計數器A1A0讀出計數值

10讀寫控制邏輯組合功能表2可編程計數/定時控制器8253高8位低8位GATECLKOUT輸出鎖存器OL計數初值寄存器CR高8位低8位

計數執行部件CE(16位減1計數器)高8位低8位1)16位計數初值寄存器CR

存放計數初值可通過程序來設置2)計數執行部件CE

一個16位減1計數器;初值是計數初值寄存器的內容;在GATE控制下,對CLK脈沖計數;啟動后每出現一個CLK脈沖計數值減1;當減為0時通過OUT輸出結束信號。3)輸出鎖存器OL

通常隨計數執行部件CE的內容變化;

當接收到CPU鎖存命令時,鎖存當前的計數值,而當前計數值被CPU讀取后,OL內容又隨CE的內容變化。4)CLK信號周期性時鐘信號,定時器功能;非周期性計數信號,計數器功能。5)GATE信號控制輸入端有多種控制作用(允許/禁止計數、啟動/停止計數)定時/計數器的內部結構及工作原理2可編程計數/定時控制器8253作為計數器使用時:

通過編程對計數器預置一個初值n。如果門控信號GATE允許,計數器對CLK輸入的脈沖進行減1計數(二進制/十進制)。

當計數器的值減為0時從OUT端輸出一個脈沖信號。BCD:初值可以為0000~9999H;當初值為0時,先減1得9999H,到最后減為0,進行了10000次計數,所以初值0相當于10000二進制:0000~FFFFH;初值0000H相當于655362可編程計數/定時控制器82538253作為定時器使用時,其定時時間計算公式為:例:在某系統中,8253的CLK上的計數脈沖頻率為0.5MHz,8253計數器的初值是n=500。定時時間=時鐘脈沖周期tclk預置的計數初值n注意:8253外部輸入引腳CLKi上的時鐘脈沖頻率不能大于2MHz。定時時間=2s500=1ms作為定時器使用時:

通過編程對定時器預置一個初值n。如果門控信號GATE允許,定時器對CLK輸入的脈沖進行減1計數(二進制/十進制)。

當計數器的值減為0時從OUT端輸出一個脈沖信號。CLK端輸入定時脈沖,定時脈沖周期為tCLK。2可編程計數/定時控制器8253在對8253進行編程時,由CPU向它寫控制字,來選定計數器通道,并規定所選計數器的工作方式。D7D6D5D4D3D2D1D0SC1

SC0

RW1RW0M2

M1

M0

BCD00:選擇通道001:選擇通道110:選擇通道211:無效00:計數器鎖存01:讀寫低字節10:讀寫高字節11:先低,后高000:方式0001:方式1X10:方式2X11:方式3100:方式4101:方式51:BCD0:2進制BCD:0000~9999H;二進制:0000~FFFFH;BCD:1200H=1200;二進制:1200H=4608控制字格式2可編程計數/定時控制器82531.初始化步驟:(1)寫入控制字;(2)按控制字要求寫入計數初值。計數初值N=fCLK/fOUT=TOUT/TCLK例:8253的地址為3F0H、3F2H、3F4H、3F6H,要求8253的計數器0工作于方式3,BCD碼計數,計數器初值n=1234H,初始化程序為:MOV AL,37HMOV DX,3F6HOUT DX,ALMOV AL,34HMOV DX,3F0HOUT DX,ALMOV AL,12HOUT DX,AL寫控制字寫計數值低8位寫計數值高8位*非必須2可編程計數/定時控制器82532.各工作模式應注意的特點1)門控信號的影響方式0,4時:門控信號為電平觸發

方式1,5時:門控信號為上升沿觸發

方式2,3時:門控信號為電平或上升沿觸發

高電平允許:當GATE=0,即使出現CLK,也不計數——方式0,2,3,4上升沿允許(上升沿觸發)——方式1,5,2,3寫入控制字后,OUT的狀態計數過程中,OUT的狀態計數終了,OUT的狀態3)計數操作可否重復不可重復——模式0,4自動重復——模式2,3條件重復——模式1,52)OUT信號的狀態2可編程計數/定時控制器82531、方式0——計數結束中斷方式時序圖CW=10HCLKGATEOUTWRLSB=66543210CRCECR=68253的工作方式用途:常用來對外部事件計數,利用OUT由低到高的變化中斷請求信號。

2可編程計數/定時控制器8253兩種特殊情況:

1CW=10HCLKGATEOUT1

0WRLSB=44322210CRCECR=40101GATE門控信號的改變2可編程計數/定時控制器8253兩種特殊情況:

CR=3CW=10HCLKGATEOUTWRLSB=33213210CRCECR=3LSB=3CRCE中途改變計數初值2可編程計數/定時控制器82532、方式1——可編程單穩態輸出方式時序圖CRCE12CW=12HCLKGATEOUTWRLSB=330CRCECR=3用途:輸出穩態負脈沖

OUT端輸出負脈沖的寬度=時鐘脈沖寬度×計數值N。2可編程計數/定時控制器8253注意:在計數過程中,GATE為高、低和下降沿,均不影響計數;但若又來一上升沿,則將計數初值重新裝入實際計數器,重新開始計數,使OUT端的負脈沖變長;2可編程計數/定時控制器82533、方式2——比率發生器時序圖CRCECRCECW=14HCLKGATEOUTWRLSB=3321032103CRCECR=321用途:分頻器若計數器的初值為n,則OUT引腳產生的波形頻率為時鐘脈沖頻率的n分之一。2可編程計數/定時控制器8253注意:(1)任何時候重新寫入新的計數初值,當原計數值減為0時,才按新寫入的計數值進行計數;

(2)計數過程中,當GATE再產生上升沿時,在下一個時鐘脈沖下降沿,重新將計數初值裝入實際計數器,開始減1計數。2可編程計數/定時控制器82534、方式3——方波發生器時序圖CRCECW=16HCLKGATEOUTWRLSB=44242424CRCECR=424計數初值為偶數時的波形CRCECRCECRCE2可編程計數/定時控制器82532CRCECW=16HCLKGATEOUTWRLSB=5542554CR=525計數初值為奇數時的波形CRCECRCECRCE4、方式3——方波發生器時序圖2可編程計數/定時控制器82535、方式4——軟件觸發選通時序圖CR=2CRCECW=18HCLKGATEOUTWRLSB=22102100CRCECR=2LSB=22可編程計數/定時控制器82536、方式5——硬件觸發選通時序圖CRCECRCE12CW=1AHCLKGATEOUTWRLSB=3303332CRCECR=32可編程計數/定時控制器82536種工作方式小結:方式0:計數初值N寫入CR后,當GATE為高電平時,經過N個時鐘脈沖之后OUT由0到1跳變每寫一次初值僅僅計數一次方式1:計數初值N寫入CR后,由GATE上升沿觸發,OUT輸出一個負的單脈沖

單脈沖寬度T=NTCLK

不必每次都寫初值。方式2:計數初值N寫入CR后,當GATE為高電平時,輸入端每輸入N個時鐘脈沖,在輸出端出現一個負的時鐘脈沖——N分頻器。自動重裝入初值。2可編程計數/定時控制器82536種工作方式小結:方式4:計數初值N寫入CR后,觸發計數(此時GATE必須為高電平),經N個時鐘脈沖,輸出端產生選通負脈沖信號,寬度=1個CLK 只計一次方式3:計數初值N寫入CR后,當GATE為高電平時,n為偶數時OUT輸出一系列方波(N分頻器)

。N值為奇數時,輸出矩形波,高低電平時間不同(差一個時鐘周期)

。 自動重裝入初值。方式5:計數初值N寫入CR后,硬觸發(GATE輸入一個正脈沖)后,經N個時鐘脈沖,輸出端產生選通負脈沖信號,寬度=CLK 不必每次都寫初值2可編程計數/定時控制器8253實際應用例子的解題思路:確定端口地址—確定計數初值-確定工作方式—確定電路圖——編程(寫入控制字、初值)8253的編程只需要初始化。初始化之后,芯片自動工作,無需程序干擾注意:用到多個通道時,對每個通道都要依次寫控制字,寫初值。8253的應用舉例2可編程計數/定時控制器82538253A的A1、A0:與8086CPU的A2、A1相連; 與8088CPU的A1、A0相連。A1A1A0A08位80888253端口地址:A1A000011011X0HX1HX2HX3H80868253低8位A2A1A1A0A2A1A0000110110000端口地址:X0HX2HX4HX6H8253的端口地址及片選信號2可編程計數/定時控制器8253例1:

在某個以8086為CPU的系統中使用了一塊8253芯片,通道的基地址為310H,所用的時鐘脈沖頻率為1MHz。要求3個計數通道分別完成以下功能:1)計數器0工作于方式3,輸出頻率為2KHz的方波;2)計數器1產生寬度為480s的單脈沖;3)計數器2用硬件方式觸發,輸出單脈沖,時間常數為26。通道的地址為310H,312H,314H,316H。1)計數器0:方式3,OUT0輸出方波

N0=fCLK/fOUT=1MHz/2KHz

=106/2103=5002)計數器1:方式1,OUT1輸出單脈沖

N1=TOUT/TCLK

=480s/1s

=4802可編程計數/定時控制器8253例1:3)計數器2:模式5,OUT2輸出門控單脈沖,N2=26A9~A0=1100010XX0310H~316H480us寬單脈沖CLK0808674LS1388253CLK1CLK2GATE0OUT0GATE1OUT1GATE2OUT21MHzCSA1A0RDWRD7~D0D7~D0WRRDA1A2A0A3A4ABCG2BG2AG1A5A6A7A8A9M/IO2KHzY4負脈沖+5V2可編程計數/定時控制器8253;通道0方式字及初值MOVDX,316HMOVAL,00110111BOUTDX,ALMOVDX,310HMOVAL,00HOUTDX,ALMOVAL,05H;通道1方式字及初值MOVDX,316HMOVAL,01110011BOUTDX,ALMOVDX,312HMOVAL,80HOUTDX,ALMOVAL,04HOUTDX,AL;通道2的方式字及初值MOVDX,316HMOVAL,10011011BOUTDX,ALMOVDX,314HMOVAL,26HOUTDX,AL2可編程計數/定時控制器8253例2:時鐘脈沖以2MHz輸入8253,實現每5秒定時中斷(設8253端口地址40H~46H)分析:按照公式計數初值n=Tout/Tclk=107,而初值計數器只有16位,最大計數次數為65536,所以一個計數器不行,需要兩個計數器串聯,一個計數器的輸出作為另一個計數器的輸入。OUT0GATE0CLK0OUT1GATE1CLK1+5V+5V2MHz每5秒產生一個脈沖2可編程計數/定時控制器8253級聯時每個計數器初值的計算N0=Tout0/Tclk0=Tout0/Tout1=Tout0/(N1*Tclk1)N0*N1=Tout0/Tclk1=107采取級聯后,要使得級聯的兩個計數器的計數初值的乘積為107,所以兩個計數器的初值N1、N2可以多種取值,只要N1*N2=107即可。可以取N1=10000,N2=10002可編程計數/定時控制器8253首先,選擇工作方式要實現每5秒,即自動循環計數,那么方式

0:只計數一次,不符合

1:每次要用上升沿才能觸發計數,不行

2:只要Gate為高電平就可以自動循環計數,滿足

3:類似方式2,也滿足

4:Gate為高電平時,計數一次

5:必須用Gate上升沿才能觸發計數,同12可編程計數/定時控制器8253例2:計數器1:方式2,OUT1每5ms輸出一個脈沖,初值 N1=定時時間/Tc=5ms/0.5s=10000計數器0:方式2,OUT0每5s輸出一個脈沖,初值 N2=定時時間/Tc=5s/5ms=1000OUT0GATE0CLK0OUT1GATE1CLK1+5V+5V2MHz每

溫馨提示

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

評論

0/150

提交評論