第9章 中斷控制器 計(jì)數(shù)定時(shí)控制器及DMA控制器-鄭學(xué)堅(jiān)、周斌《微型計(jì)算機(jī)原理及應(yīng)用》_第1頁(yè)
第9章 中斷控制器 計(jì)數(shù)定時(shí)控制器及DMA控制器-鄭學(xué)堅(jiān)、周斌《微型計(jì)算機(jī)原理及應(yīng)用》_第2頁(yè)
第9章 中斷控制器 計(jì)數(shù)定時(shí)控制器及DMA控制器-鄭學(xué)堅(jiān)、周斌《微型計(jì)算機(jī)原理及應(yīng)用》_第3頁(yè)
第9章 中斷控制器 計(jì)數(shù)定時(shí)控制器及DMA控制器-鄭學(xué)堅(jiān)、周斌《微型計(jì)算機(jī)原理及應(yīng)用》_第4頁(yè)
第9章 中斷控制器 計(jì)數(shù)定時(shí)控制器及DMA控制器-鄭學(xué)堅(jiān)、周斌《微型計(jì)算機(jī)原理及應(yīng)用》_第5頁(yè)
已閱讀5頁(yè),還剩144頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

8259數(shù)據(jù)線與系統(tǒng)數(shù)據(jù)總線間連接方式采用非緩沖方式(即直接相連,無(wú)數(shù)據(jù)總線驅(qū)動(dòng)器)時(shí),作為輸入。主8259接高電平,從8259接低電平。

8259數(shù)據(jù)線與系統(tǒng)數(shù)據(jù)總線間連接方式采用緩沖方式(即有數(shù)據(jù)總線驅(qū)動(dòng)器)時(shí),作為輸出,用于啟動(dòng)數(shù)據(jù)總線驅(qū)動(dòng)器。如果工作在緩沖方式并且有級(jí)連應(yīng)用時(shí),作為輸出,用于啟動(dòng)數(shù)據(jù)總線驅(qū)動(dòng)器。主從片的設(shè)置用軟件解決?!窦?jí)聯(lián)緩沖/比較器1可編程中斷控制器8259A輸入:作為主片時(shí)接+5V作為從片時(shí)接地8259工作于非緩沖方式1可編程中斷控制器8259A8259工作于緩沖方式數(shù)據(jù)緩沖器輸出:作為數(shù)據(jù)緩沖器的選通信號(hào)1可編程中斷控制器8259ACAS0IR0CAS1IR1CAS2IR2

IR3-INTAIR4IR5INTIR6IR7-SP/-EN

CAS0-INTA

CAS1

CAS2INT

IR0

IR1-SP/-ENIR7CAS0IR0CAS1IR1CAS2IR2IR3-INTAIR4IR5INTIR6IR7-SP/-EN-INTAINTR+5V8259級(jí)聯(lián)工作示意圖輸出得到響應(yīng)的從片編號(hào)1可編程中斷控制器8259A

8259A的多片級(jí)連方式

過(guò)程:8259A中斷控制器支持級(jí)連工作方式,在級(jí)連的系統(tǒng)中,由一個(gè)主片和若干個(gè)從片組成(最大9片可構(gòu)成64級(jí)中斷源)。當(dāng)從片中產(chǎn)生中斷請(qǐng)求時(shí),CPU響應(yīng)中斷后,在第一個(gè)中斷響應(yīng)負(fù)脈沖,由主片通過(guò)CASx向從片發(fā)出相對(duì)應(yīng)的中斷源位置號(hào),在第二個(gè)中斷響應(yīng)負(fù)脈沖,由被選中的從片向數(shù)據(jù)總線輸出中斷類型碼。1可編程中斷控制器8259A8259級(jí)聯(lián)工作示意圖1可編程中斷控制器8259A1可編程中斷控制器8259A中斷向量表物理地址單元內(nèi)容INT4AH地址單元內(nèi)容

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中斷處理服務(wù)程序IRET003FFH類型FFH中斷處理程序入口地址軟件中斷的工作過(guò)程1可編程中斷控制器8259A中斷請(qǐng)求寄存器D7D6D5D4D3D2D1D000000000111D4D2D0中斷屏蔽寄存器D7D6D5D4D3D2D1D000000100D4D0D0去往CPU請(qǐng)求階段8259A的工作過(guò)程1可編程中斷控制器8259A響應(yīng)階段中斷請(qǐng)求寄存器D7D6D5D4D3D2D1D0000101010中斷服務(wù)寄存器D7D6D5D4D3D2D1D0000000001中斷類型碼CPU取走類型碼8259A的工作過(guò)程1可編程中斷控制器8259A8259A工作結(jié)束階段注:ISR寄存器的內(nèi)容的改變與中斷結(jié)束方式有關(guān)。在自動(dòng)結(jié)束(AEOI)方式時(shí),當(dāng)?shù)谝粋€(gè)中斷響應(yīng)信號(hào)到達(dá),ISR的相應(yīng)位清0。其它方式時(shí),ISR中的位保持到EOI(中斷結(jié)束)命令執(zhí)行。8259A的工作過(guò)程1可編程中斷控制器8259A8259A的工作過(guò)程請(qǐng)求信號(hào)IRR鎖存優(yōu)先權(quán)判別器PR邏輯電路根據(jù)IMR判斷IMR對(duì)應(yīng)位為08259A的INT端為1優(yōu)先權(quán)最高CPU的INTR端CPU響應(yīng)中斷IF=18259AINTAISR相應(yīng)位置1,IRR響應(yīng)位清0,送中斷類型碼●若允許嵌套,PR依據(jù)ISR的狀態(tài),判斷新的中斷請(qǐng)求優(yōu)先權(quán)是否高于正在服務(wù)的中斷,是則送出INT=1。此時(shí)ISR中將有兩個(gè)(或兩個(gè)以上)的中斷服務(wù)狀態(tài)置1●服務(wù)結(jié)束,8259A清除ISR響應(yīng)位。1可編程中斷控制器8259A普通全嵌套方式特殊全嵌套方式自動(dòng)循環(huán)方式特殊循環(huán)方式優(yōu)先權(quán)固定方式優(yōu)先權(quán)循環(huán)方式設(shè)置優(yōu)先權(quán)方式普通中斷結(jié)束方式特殊中斷結(jié)束方式自動(dòng)中斷結(jié)束方式非自動(dòng)中斷結(jié)束方式結(jié)束中斷方式中斷屏蔽方式普通屏蔽方式特殊屏蔽方式中斷觸發(fā)方式邊沿觸發(fā)方式電平觸發(fā)方式數(shù)據(jù)線連接方式緩沖方式非緩沖方式與CPU配合方式與8080/8085CPU配合與8086/8088CPU配合級(jí)連方式級(jí)連不級(jí)連8259A的工作方式1可編程中斷控制器8259A優(yōu)先級(jí)排隊(duì)的方式固定優(yōu)先級(jí):指各中斷源的優(yōu)先級(jí)由IRi引腳編號(hào)確定,優(yōu)先級(jí)是固定的。有普通全嵌套方式和特殊全嵌套方式兩種

(1)普通全嵌套方式

在該方式下,IR7~I(xiàn)R0的優(yōu)先級(jí)順序是IR0最高,IR7最低。且一個(gè)中斷被響應(yīng),只有比它更高優(yōu)先級(jí)的中斷請(qǐng)求才會(huì)被響應(yīng)。(2)特殊全嵌套方式

與全嵌套方式基本相同,不同之處在于該方式不但響應(yīng)比本級(jí)高的中斷申請(qǐng),而且響應(yīng)同級(jí)的中斷申請(qǐng)。

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

IR1有請(qǐng)求,開(kāi)中斷后才能被響應(yīng)

STIIR1中斷處理程序(嵌套)

STI

ISR1=1中斷結(jié)束命令I(lǐng)SR1被清除IRET返回IR2中斷處理程序中斷結(jié)束命令I(lǐng)SR2被清除ISR4=1IR4中斷處理程序STI中斷結(jié)束命令I(lǐng)RET返回IR2中斷處理程序

IRETISR4被清除返回主程序?yàn)槭裁吹蛢?yōu)先級(jí)的IR4可以打斷高優(yōu)先級(jí)的IR2的執(zhí)行?完全嵌套例:1片8259A,在IR2和IR4引腳上同時(shí)出現(xiàn)中斷請(qǐng)求。IR1引腳上又有中斷請(qǐng)求。1可編程中斷控制器8259AD.主8259AIR0IR1IR2IR3IR4IR5IR6IR7一般嵌套方式:從片的INT被主片封鎖,故更高級(jí)別的IR0-IR2中斷也無(wú)法得到響應(yīng)特殊嵌套方式:因主片不封鎖從片的INT,故級(jí)別高的IR0-IR2中斷可以得到響應(yīng)。(但I(xiàn)R3-IR7仍被本從片封鎖)C.假定IR7發(fā)生中斷,并獲得服務(wù)一般嵌套方式:IR4的中斷被服務(wù)時(shí),這些中斷將被封鎖。B.特殊嵌套方式:IR4的中斷被服務(wù)時(shí),只封鎖IR5-IR7。A.INTE.從8259AINTIR0IR1IR2IR3IR4IR5IR6IR7去CPU1可編程中斷控制器8259A循環(huán)優(yōu)先級(jí):

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

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

a)一般中斷結(jié)束方式(全嵌套)非自動(dòng)結(jié)束方式

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

IR0~IR7以高電平方式作為中斷請(qǐng)求的有效信號(hào)。邊沿觸發(fā)方式:

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

初始化命令字ICW(InitializationCommandWords)

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

和ICW2

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

,對(duì)應(yīng)的8個(gè)中斷類型碼為:40~47H,寫(xiě)出其ICW2的初始化程序。如果其IR4的中斷類型碼是0BCH;則該8259A的IR0~IR7

,對(duì)應(yīng)的8個(gè)中斷類型碼為:

0B8H到0BFHMOVAL,40HOUT21H,AL1可編程中斷控制器8259A例.已知某中斷向量存放在000D4H地址單元處。并且由000D4H單元起始依次存放著10H、20H、30H、40H。請(qǐng)回答:(1)中斷類型號(hào)為何?(2)接入8259時(shí),該8259的ICW2應(yīng)為何?(3)該中斷源應(yīng)接入該8259的哪個(gè)中斷請(qǐng)求輸入引腳?(4)該中斷向量的物理地址為何?(5)CPU響應(yīng)該中斷時(shí),CS中的值為何?IP中的值為何?1可編程中斷控制器8259A初始化命令字ICW1ICW2ICW3ICW4有多片8259A級(jí)聯(lián)時(shí),才需要設(shè)置ICW31A0IR7IR6IR5IR4IR3IR2IR1IR0D7D6D5D4D3D2D1D01:該引腳有從片,0:該引腳無(wú)從片主片×××××ID2ID1ID0D7D6D5D4D3D2D1D0從片從設(shè)備的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:自動(dòng)結(jié)束方式0:非自動(dòng)結(jié)束1:8086/8088系統(tǒng)0:8080/8085系統(tǒng)1可編程中斷控制器8259A例

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

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

單片8259A

中斷請(qǐng)求電平觸發(fā)

中斷類型碼從40H開(kāi)始

一般全嵌套方式

非緩沖方式

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

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

設(shè)置方法:

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

取消方法:

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

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

8259A的讀操作

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

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

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

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

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

例2:

IN AL,21H ;讀IMROR AL,80H ;關(guān)閉IR7中斷

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

(A0=0)(A0=1)

從片:FFF8H、FFFAH

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

實(shí)現(xiàn)定時(shí)的方式2可編程計(jì)數(shù)/定時(shí)控制器8253減1計(jì)數(shù)器判零外設(shè)計(jì)數(shù)/定時(shí)脈沖CLK外設(shè)OUTCPU預(yù)置值CPU計(jì)數(shù)和計(jì)時(shí)本質(zhì)上是相同的,它們都是對(duì)一個(gè)輸入脈沖進(jìn)行計(jì)數(shù)。計(jì)數(shù)器的輸入信號(hào)可以是隨機(jī)信號(hào),定時(shí)器的輸入信號(hào)要求具有固定周期??删幊潭〞r(shí)/計(jì)數(shù)器8253就是一個(gè)減法計(jì)數(shù)器,它是Intel公司專為80×86系列配套開(kāi)發(fā)的16位可編程定時(shí)/計(jì)數(shù)器芯片。定時(shí)/計(jì)數(shù)器的計(jì)數(shù)方式2可編程計(jì)數(shù)/定時(shí)控制器8253具有3個(gè)獨(dú)立的16位計(jì)數(shù)器通道;每個(gè)通道有6種工作方式,可由程序設(shè)置和改變;每個(gè)計(jì)數(shù)器均可按二進(jìn)制或二—十進(jìn)制計(jì)數(shù);每個(gè)計(jì)數(shù)器的計(jì)數(shù)速率高達(dá)2MHz;

可用作可編程方波頻率產(chǎn)生器、分頻器、程控單脈沖發(fā)生器等;所有的輸入輸出電平都與TTL兼容。8253引腳及功能2可編程計(jì)數(shù)/定時(shí)控制器8253CLK0GATE0OUT0CLK1GATE1OUT1CLK2GATE2OUT2計(jì)數(shù)器0計(jì)數(shù)器1計(jì)數(shù)器2數(shù)據(jù)總線緩沖器讀/寫(xiě)邏輯控制字寄存器D7~D0A1A0WRRDCS內(nèi)部總線雙向、三態(tài)、8位,CPU通過(guò)數(shù)據(jù)總線緩沖器可向控制字寄存器寫(xiě)入控制字,向計(jì)數(shù)器寫(xiě)入計(jì)數(shù)初值;也可讀出計(jì)數(shù)器當(dāng)前計(jì)數(shù)值。接收來(lái)自CPU的控制信號(hào)。完成對(duì)8253各計(jì)數(shù)器的讀/寫(xiě)操作。接收CPU寫(xiě)入的控制字,決定8253使用哪個(gè)計(jì)數(shù)器,工作方式、讀/寫(xiě)格式、計(jì)數(shù)方式。計(jì)數(shù)器的門(mén)控信號(hào)實(shí)現(xiàn)對(duì)CLK輸入時(shí),減1計(jì)數(shù)器是否工作的控制。其控制關(guān)系由不同工作方式確定。計(jì)數(shù)器的輸出信號(hào)減1計(jì)數(shù)器為0時(shí)的輸出信號(hào),可以用于對(duì)外部控制,也可用于向CPU申請(qǐng)中斷。計(jì)數(shù)器的時(shí)鐘信號(hào)計(jì)數(shù)器:由外設(shè)提供的計(jì)數(shù)脈沖。定時(shí)器:時(shí)鐘脈沖8253的內(nèi)部結(jié)構(gòu)2可編程計(jì)數(shù)/定時(shí)控制器8253CSRDWRA1A0功能

0001001對(duì)計(jì)數(shù)器A1A0設(shè)置計(jì)數(shù)初值

1001011設(shè)置控制字或給一個(gè)命令

0000101從計(jì)數(shù)器A1A0讀出計(jì)數(shù)值

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

計(jì)數(shù)執(zhí)行部件CE(16位減1計(jì)數(shù)器)高8位低8位1)16位計(jì)數(shù)初值寄存器CR

存放計(jì)數(shù)初值可通過(guò)程序來(lái)設(shè)置2)計(jì)數(shù)執(zhí)行部件CE

一個(gè)16位減1計(jì)數(shù)器;初值是計(jì)數(shù)初值寄存器的內(nèi)容;在GATE控制下,對(duì)CLK脈沖計(jì)數(shù);啟動(dòng)后每出現(xiàn)一個(gè)CLK脈沖計(jì)數(shù)值減1;當(dāng)減為0時(shí)通過(guò)OUT輸出結(jié)束信號(hào)。3)輸出鎖存器OL

通常隨計(jì)數(shù)執(zhí)行部件CE的內(nèi)容變化;

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

通過(guò)編程對(duì)計(jì)數(shù)器預(yù)置一個(gè)初值n。如果門(mén)控信號(hào)GATE允許,計(jì)數(shù)器對(duì)CLK輸入的脈沖進(jìn)行減1計(jì)數(shù)(二進(jìn)制/十進(jìn)制)。

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

通過(guò)編程對(duì)定時(shí)器預(yù)置一個(gè)初值n。如果門(mén)控信號(hào)GATE允許,定時(shí)器對(duì)CLK輸入的脈沖進(jìn)行減1計(jì)數(shù)(二進(jìn)制/十進(jìn)制)。

當(dāng)計(jì)數(shù)器的值減為0時(shí)從OUT端輸出一個(gè)脈沖信號(hào)。CLK端輸入定時(shí)脈沖,定時(shí)脈沖周期為tCLK。2可編程計(jì)數(shù)/定時(shí)控制器8253在對(duì)8253進(jìn)行編程時(shí),由CPU向它寫(xiě)控制字,來(lái)選定計(jì)數(shù)器通道,并規(guī)定所選計(jì)數(shù)器的工作方式。D7D6D5D4D3D2D1D0SC1

SC0

RW1RW0M2

M1

M0

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

方式1,5時(shí):門(mén)控信號(hào)為上升沿觸發(fā)

方式2,3時(shí):門(mén)控信號(hào)為電平或上升沿觸發(fā)

高電平允許:當(dāng)GATE=0,即使出現(xiàn)CLK,也不計(jì)數(shù)——方式0,2,3,4上升沿允許(上升沿觸發(fā))——方式1,5,2,3寫(xiě)入控制字后,OUT的狀態(tài)計(jì)數(shù)過(guò)程中,OUT的狀態(tài)計(jì)數(shù)終了,OUT的狀態(tài)3)計(jì)數(shù)操作可否重復(fù)不可重復(fù)——模式0,4自動(dòng)重復(fù)——模式2,3條件重復(fù)——模式1,52)OUT信號(hào)的狀態(tài)2可編程計(jì)數(shù)/定時(shí)控制器82531、方式0——計(jì)數(shù)結(jié)束中斷方式時(shí)序圖CW=10HCLKGATEOUTWRLSB=66543210CRCECR=68253的工作方式用途:常用來(lái)對(duì)外部事件計(jì)數(shù),利用OUT由低到高的變化中斷請(qǐng)求信號(hào)。

2可編程計(jì)數(shù)/定時(shí)控制器8253兩種特殊情況:

1CW=10HCLKGATEOUT1

0WRLSB=44322210CRCECR=40101GATE門(mén)控信號(hào)的改變2可編程計(jì)數(shù)/定時(shí)控制器8253兩種特殊情況:

CR=3CW=10HCLKGATEOUTWRLSB=33213210CRCECR=3LSB=3CRCE中途改變計(jì)數(shù)初值2可編程計(jì)數(shù)/定時(shí)控制器82532、方式1——可編程單穩(wěn)態(tài)輸出方式時(shí)序圖CRCE12CW=12HCLKGATEOUTWRLSB=330CRCECR=3用途:輸出穩(wěn)態(tài)負(fù)脈沖

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

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

單脈沖寬度T=NTCLK

不必每次都寫(xiě)初值。方式2:計(jì)數(shù)初值N寫(xiě)入CR后,當(dāng)GATE為高電平時(shí),輸入端每輸入N個(gè)時(shí)鐘脈沖,在輸出端出現(xiàn)一個(gè)負(fù)的時(shí)鐘脈沖——N分頻器。自動(dòng)重裝入初值。2可編程計(jì)數(shù)/定時(shí)控制器82536種工作方式小結(jié):方式4:計(jì)數(shù)初值N寫(xiě)入CR后,觸發(fā)計(jì)數(shù)(此時(shí)GATE必須為高電平),經(jīng)N個(gè)時(shí)鐘脈沖,輸出端產(chǎn)生選通負(fù)脈沖信號(hào),寬度=1個(gè)CLK 只計(jì)一次方式3:計(jì)數(shù)初值N寫(xiě)入CR后,當(dāng)GATE為高電平時(shí),n為偶數(shù)時(shí)OUT輸出一系列方波(N分頻器)

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

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

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

N0=fCLK/fOUT=1MHz/2KHz

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

N1=TOUT/TCLK

=480s/1s

=4802可編程計(jì)數(shù)/定時(shí)控制器8253例1:3)計(jì)數(shù)器2:模式5,OUT2輸出門(mén)控單脈沖,N2=26A9~A0=1100010XX0310H~316H480us寬單脈沖CLK0808674LS1388253CLK1CLK2GATE0OUT0GATE1OUT1GATE2OUT21MHzCSA1A0RDWRD7~D0D7~D0WRRDA1A2A0A3A4ABCG2BG2AG1A5A6A7A8A9M/IO2KHzY4負(fù)脈沖+5V2可編程計(jì)數(shù)/定時(shí)控制器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可編程計(jì)數(shù)/定時(shí)控制器8253例2:時(shí)鐘脈沖以2MHz輸入8253,實(shí)現(xiàn)每5秒定時(shí)中斷(設(shè)8253端口地址40H~46H)分析:按照公式計(jì)數(shù)初值n=Tout/Tclk=107,而初值計(jì)數(shù)器只有16位,最大計(jì)數(shù)次數(shù)為65536,所以一個(gè)計(jì)數(shù)器不行,需要兩個(gè)計(jì)數(shù)器串聯(lián),一個(gè)計(jì)數(shù)器的輸出作為另一個(gè)計(jì)數(shù)器的輸入。OUT0GATE0CLK0OUT1GATE1CLK1+5V+5V2MHz每5秒產(chǎn)生一個(gè)脈沖2可編程計(jì)數(shù)/定時(shí)控制器8253級(jí)聯(lián)時(shí)每個(gè)計(jì)數(shù)器初值的計(jì)算N0=Tout0/Tclk0=Tout0/Tout1=Tout0/(N1*Tclk1)N0*N1=Tout0/Tclk1=107采取級(jí)聯(lián)后,要使得級(jí)聯(lián)的兩個(gè)計(jì)數(shù)器的計(jì)數(shù)初值的乘積為107,所以兩個(gè)計(jì)數(shù)器的初值N1、N2可以多種取值,只要N1*N2=107即可。可以取N1=10000,N2=10002可編程計(jì)數(shù)/定時(shí)控制器8253首先,選擇工作方式要實(shí)現(xiàn)每5秒,即自動(dòng)循環(huán)計(jì)數(shù),那么方式

0:只計(jì)數(shù)一次,不符合

1:每次要用上升沿才能觸發(fā)計(jì)數(shù),不行

2:只要Gate為高電平就可以自動(dòng)循環(huán)計(jì)數(shù),滿足

3:類似方式2,也滿足

4:Gate為高電平時(shí),計(jì)數(shù)一次

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

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論