中斷控制器及定時(shí)控制器_第1頁(yè)
中斷控制器及定時(shí)控制器_第2頁(yè)
中斷控制器及定時(shí)控制器_第3頁(yè)
中斷控制器及定時(shí)控制器_第4頁(yè)
中斷控制器及定時(shí)控制器_第5頁(yè)
已閱讀5頁(yè),還剩127頁(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)介

2023/9/21第10章中斷控制器、計(jì)數(shù)/定時(shí)控制器10.1中斷概述10.2可編程中斷控制器8259A10.3可編程計(jì)數(shù)/定時(shí)控制器825310.4DMA的概念習(xí)題2023/9/2210.1中斷概述10.1.1中斷的一般概念10.1.28086/8088的中斷方式10.1.3中斷優(yōu)先權(quán)管理返回2023/9/2310.1.1中斷的一般概念

中斷(Interrupt)

是一種使CPU中止正在執(zhí)行的程序而轉(zhuǎn)去處理特殊事件的操作過(guò)程。它是微處理器與外部設(shè)備進(jìn)行信息交換的一種方式。目的:解決CPU與外設(shè)之間速度不匹配的矛盾。(一)中斷控制方式的優(yōu)點(diǎn)(二)中斷源(三)中斷系統(tǒng)的功能(四)中斷服務(wù)程序與一般子程序調(diào)用的區(qū)別返回2023/9/24(一)中斷控制方式的優(yōu)點(diǎn)使CPU與外設(shè)并行工作實(shí)現(xiàn)實(shí)時(shí)處理自動(dòng)地進(jìn)行故障處理返回2023/9/25(二)中斷源

引起中斷的事件,或提出中斷申請(qǐng)的來(lái)源,稱為中斷源。如:輸入/輸出設(shè)備中斷(如鍵盤(pán)、打印機(jī))、過(guò)程控制產(chǎn)生的中斷(如程序調(diào)試)、電源故障中斷等。中斷源分為內(nèi)部中斷和外部中斷兩大類。內(nèi)部中斷(軟件中斷):產(chǎn)生于處理器內(nèi)部,由專門的中斷指令引起。外部中斷(硬件中斷):產(chǎn)生于處理器外部,由外部硬件引起。

返回2023/9/26(三)中斷系統(tǒng)的功能能實(shí)現(xiàn)中斷及正確地返回中斷前:保護(hù)斷點(diǎn)和現(xiàn)場(chǎng)返回前:恢復(fù)現(xiàn)場(chǎng)和斷點(diǎn)能實(shí)現(xiàn)優(yōu)先權(quán)排隊(duì)和中斷嵌套

中斷優(yōu)先權(quán):多個(gè)中斷源同時(shí)提出申請(qǐng)時(shí),CPU響應(yīng)中斷的先后次序。中斷嵌套:CPU處理低級(jí)中斷源的中斷響應(yīng)時(shí),能夠被高級(jí)中斷中止而轉(zhuǎn)去響應(yīng)高級(jí)中斷。能屏蔽某些中斷

由中斷允許觸發(fā)器決定是否響應(yīng)中斷請(qǐng)求。8086/8088中,當(dāng)中斷標(biāo)志位IF=1時(shí),才允許響應(yīng)可屏蔽中斷INTR。返回2023/9/27(四)中斷服務(wù)程序與一般子程序調(diào)用的區(qū)別

產(chǎn)生中斷的時(shí)間具有隨機(jī)性,何時(shí)執(zhí)行中斷服務(wù)程序是不確定的。在中斷方式中,CPU自動(dòng)完成對(duì)標(biāo)志寄存器FR的保護(hù)與恢復(fù),無(wú)需PUSHF和POPF指令。中斷服務(wù)程序采用中斷返回指令I(lǐng)RET,而不是子程序返回指令RET,二者執(zhí)行的操作不同。中斷服務(wù)程序中總有一條開(kāi)中斷指令(該指令安排在IRET指令前,以便返回主程序后能再次響應(yīng)中斷;該指令若安排在中斷服務(wù)程序開(kāi)始的地方,則允許在中斷處理過(guò)程中響應(yīng)更高級(jí)的中斷源請(qǐng)求)。返回2023/9/2810.1.28086/8088的中斷方式

(一)8086/8088中斷分類(二)8086/8088中斷向量表(三)8086/8088中斷響應(yīng)過(guò)程

返回2023/9/29(一)8086/8088中斷分類8086/8088中斷系統(tǒng)可處理256種不同的中斷,其中斷源如圖10-1所示。這256種中斷分兩大類:硬件中斷(外部中斷)——由外部硬件引起的中斷。軟件中斷(內(nèi)部中斷)——由CPU執(zhí)行某些指令引起的,即由INT指令或CPU執(zhí)行程序時(shí)某些錯(cuò)誤引起的中斷。返回2023/9/210圖10-18086/8088中斷源返回中斷邏輯INTn指令單步TF=1除法錯(cuò)誤INTO指令非屏蔽中斷請(qǐng)求INTR2NMICPU014nIR0IR1IR2IR3IR4IR5IR6IR782510AINT可編程中斷控制器(PIC)系統(tǒng)定時(shí)器鍵盤(pán)彩色圖形接口保留(通信)串行通信接口保留(ALT打印機(jī))軟盤(pán)保留(打印機(jī))08090A0B0C0D0E0F圖10-18086/8088中斷源返回類型號(hào)2023/9/211(1)硬件中斷非屏蔽中斷NMI由引腳NMI(non-maskableinterrupt)引入,中斷類型號(hào)為2。NMI不受中斷允許標(biāo)志IF的屏蔽。當(dāng)NMI引腳上出現(xiàn)寬度大于2個(gè)時(shí)鐘周期的正脈沖時(shí),CPU在執(zhí)行完當(dāng)前指令后就馬上響應(yīng)NMI中斷。一般用于處理系統(tǒng)的重大故障,如系統(tǒng)掉電等??善帘沃袛郔NTR由引腳INTR(interrupt)引入,采用高電平觸發(fā)方式。INTR上的中斷請(qǐng)求可被IF屏蔽。只有當(dāng)IF=1時(shí),CPU才能響應(yīng)INTR中斷。IF的狀態(tài)可由開(kāi)中斷指令STI和關(guān)中斷指令CLI來(lái)設(shè)置。注意:系統(tǒng)復(fù)位或響應(yīng)任一種中斷后,IF均被清零,必須在一定時(shí)候用STI來(lái)開(kāi)放中斷。8086/8088只有一條INTR輸入線。將INTR與中斷控制器8259A的INT相連,由8259A可擴(kuò)展多個(gè)外部中斷源。返回2023/9/212(2)軟件中斷軟件中斷通常由三種情況引起:①由指令I(lǐng)NT引起的中斷②由CPU某些錯(cuò)誤引起的中斷

③由DEBUG調(diào)試程序設(shè)置的中斷注:286以上微處理器常將軟件中斷稱為異常返回2023/9/213①由指令I(lǐng)NT引起的中斷CPU執(zhí)行一條INTn

指令后立即產(chǎn)生中斷。n為中斷類型號(hào),可為00H~FFH中的某數(shù)。

返回2023/9/214②由CPU某些錯(cuò)誤引起的中斷除數(shù)為0中斷——類型0中斷。除法運(yùn)算中,若除數(shù)為0或商超過(guò)寄存器所能表達(dá)的范圍,則產(chǎn)生類型0中斷。沒(méi)有相應(yīng)的中斷指令。溢出中斷(INTO指令)——類型4中斷。當(dāng)溢出標(biāo)志OF=1時(shí),CPU執(zhí)行INTO指令就會(huì)進(jìn)入溢出中斷處理程序,打印出錯(cuò)信息,并把控制權(quán)交給操作系統(tǒng)。若OF=0,INTO指令不起作用。因此,將INTO指令放在加、減法運(yùn)算指令后,可對(duì)OF的狀態(tài)進(jìn)行檢測(cè),一旦發(fā)生溢出便給予出錯(cuò)報(bào)警。

返回2023/9/215③由DEBUG調(diào)試程序設(shè)置的中斷單步中斷——類型1中斷。在跟蹤標(biāo)志(TrapFlag)TF=1時(shí),CPU在每條指令執(zhí)行后,自動(dòng)產(chǎn)生類型1中斷,顯示各寄存器和有關(guān)存儲(chǔ)單元的內(nèi)容,以及下條要執(zhí)行的指令。TF由DEBUG程序修改。斷點(diǎn)中斷——類型3中斷。用DEBUG程序的G命令設(shè)置斷點(diǎn),實(shí)質(zhì)上是把一條斷點(diǎn)指令I(lǐng)NT3插入到斷點(diǎn)設(shè)置處。當(dāng)CPU執(zhí)行到斷點(diǎn)處,自動(dòng)進(jìn)入類型3的中斷服務(wù)程序,顯示相關(guān)寄存器和存儲(chǔ)器的內(nèi)容??墒?xiě)為INT(單字節(jié)指令)。返回下一頁(yè)2023/9/216軟件中斷的特點(diǎn)及優(yōu)先級(jí)軟件中斷的特點(diǎn):a.

中斷類型號(hào)由指令提供;b.

不受中斷允許標(biāo)志IF的影響;c.

在執(zhí)行軟件中斷時(shí),如果有外部硬件中斷請(qǐng)求,CPU會(huì)在執(zhí)行完當(dāng)前指令后給予響應(yīng)(對(duì)于可屏蔽中斷請(qǐng)求,要求IF=1)。中斷源優(yōu)先權(quán)級(jí)別由高到低的順序?yàn)椋?/p>

除法錯(cuò)→INTn→INTO→NMI→INTR→單步

返回2023/9/217(二)8086/8088中斷向量表中斷向量是中斷服務(wù)程序的入口地址(段地址和偏移地址)。8086/8088系統(tǒng)在存儲(chǔ)器00000H~003FFH的1KB區(qū)域建立了一個(gè)中斷向量表,可存儲(chǔ)256個(gè)中斷向量(類型號(hào)00~FFH),每個(gè)向量占4個(gè)字節(jié),低2個(gè)字節(jié)存放中斷入口地址的段內(nèi)偏移地址(IP),高2個(gè)字節(jié)存放中斷入口的段地址(CS),如圖10-2所示。中斷類型號(hào)由指令給定或由外設(shè)提供。當(dāng)CPU響應(yīng)中斷時(shí),將中斷類型號(hào)n乘以4就得到中斷向量的存放地址,取4n和4n+1單元中的內(nèi)容裝入IP,取4n+2和4n+3單元中的內(nèi)容裝入CS,程序就轉(zhuǎn)入相應(yīng)的中斷處理過(guò)程。見(jiàn)舉例。

返回下一頁(yè)2023/9/218(二)中斷向量表(續(xù))在8086/8088中斷向量表中,前5個(gè)是專用中斷,用戶不能修改,除類型2外都是軟件中斷。類型05H~1FH是系統(tǒng)使用中斷,不允許用戶修改。其中類型08H~0FH對(duì)應(yīng)8259中斷控制器的8路可屏蔽中斷請(qǐng)求,類型10H~1AH為BIOS中斷,類型1DH~1FH指向三個(gè)專用數(shù)據(jù)表。類型20H~3FH為DOS中斷,用戶程序可調(diào)用,特別是類型21H中斷,稱為DOS系統(tǒng)功能調(diào)用,使用特別多。類型40H以后的中斷類型大都可由用戶安排。返回2023/9/219圖10-28086/8088中斷向量表返回2CSIPCSIPCSIPCSIPCSIPCSIPCSIP0000:0000H0000:0003H0000:0004H0000:0007H0000:0008H0000:000BH0000:000CH0000:000FH0000:0010H0000:0013H0000:0014H0000:007EH0000:007FH0000:03FFH除數(shù)為0的中斷單步中斷非屏蔽中斷斷點(diǎn)中斷溢出中斷類型0類型1類型2類型4類型3類型5類型31類型32類型255(十進(jìn)制)(十進(jìn)制)專用中斷(共5個(gè))保留中斷(共27個(gè))供用戶定義的中斷(共225個(gè))返回12023/9/220舉例

執(zhí)行INT05H過(guò)程:取中斷類型號(hào)05H計(jì)算中斷向量地址05H*4=14H取中斷入口的偏移地址FF54H→IP,取段地址FF00H→CS程序轉(zhuǎn)向中斷服務(wù)程序入口FF00H:FF54H返回0000:0014HFFH00HFFH54H0000:0015H0000:0016H0000:0017H2023/9/221(三)8086/8088中斷響應(yīng)過(guò)程8086/8088的中斷響應(yīng)過(guò)程分三大步:(1)響應(yīng)中斷,獲取中斷類型號(hào)(2)中斷服務(wù),包括保護(hù)現(xiàn)場(chǎng)、保護(hù)斷點(diǎn)和斷點(diǎn)處理(3)中斷返回,包括恢復(fù)斷點(diǎn)和恢復(fù)現(xiàn)場(chǎng)在8086/8088各類中斷中,除了第一步不同類型中斷提供中斷類型號(hào)的方式不同之外,第二步、第三步的處理過(guò)程大體是相同的。返回2023/9/222(1)中斷類型號(hào)的獲取獲取方式有:可屏蔽中斷INTR——由外設(shè)(8259A)提供中斷類型號(hào)

8086/8088響應(yīng)INTR中斷要用兩個(gè)總線周期:第一個(gè)總線周期通知8259A,CPU準(zhǔn)備響應(yīng)中斷,要求準(zhǔn)備好中斷類型號(hào);第二個(gè)總線周期中,被響應(yīng)外設(shè)的中斷類型號(hào)通過(guò)低8位數(shù)據(jù)總線送給CPU。CPU將類型號(hào)左移兩位,成為中斷向量的存放地址,存入暫存器。(參考圖10-1)非屏蔽中斷NMI——不經(jīng)過(guò)中斷響應(yīng)周期,自動(dòng)形成中斷類型號(hào)02H;專用軟件中斷——自動(dòng)形成中斷類型號(hào)。除法出錯(cuò)0,單步中斷1,斷點(diǎn)中斷3,溢出中斷4;中斷指令I(lǐng)NTn——由指令提供中斷類型號(hào)n。返回2023/9/223(2)中斷響應(yīng)取得中斷類型碼后的操作過(guò)程大體相同,順序?yàn)椋ㄒ?jiàn)圖10-3

):①根據(jù)中斷類型碼計(jì)算中斷向量所在地址;②將標(biāo)志寄存器FR的內(nèi)容入棧,保護(hù)現(xiàn)場(chǎng);③復(fù)制TF的狀態(tài),IF和TF標(biāo)志清0,以屏蔽外部其它中斷及防止單步運(yùn)行中斷服務(wù)程序;④將斷點(diǎn)地址CS和IP的內(nèi)容推入堆棧保護(hù);⑤從中斷向量表讀取中斷向量送入CS和IP,轉(zhuǎn)入中斷服務(wù)程序。以上各步驟是CPU自動(dòng)完成的。返回2023/9/224圖10-38086/8088中斷響應(yīng)流程圖返回是內(nèi)部中斷嗎?是非屏蔽中斷嗎?是可屏蔽中斷嗎?TF=1嗎?執(zhí)行下一條指令結(jié)束當(dāng)前指令I(lǐng)F=1嗎?取中斷類型碼標(biāo)志推入堆棧令TEMP=TF清除IF和TFCS和IP推入堆棧進(jìn)入中斷處理程序TEMP=1嗎?執(zhí)行中斷處理程序彈出IP和CS彈出標(biāo)志有NMI嗎?是是是是否否否否否是響應(yīng)中斷有無(wú)是否返回?cái)帱c(diǎn)2023/9/225(3)中斷處理和返回進(jìn)入中斷服務(wù)程序,完成以下內(nèi)容:⑥保護(hù)現(xiàn)場(chǎng),將有關(guān)寄存器內(nèi)容推入堆棧保護(hù)。⑦開(kāi)中斷,用STI指令使IF=1(若允許中斷嵌套的話,否則應(yīng)將開(kāi)中斷放在中斷返回之前)。⑧對(duì)中斷源提出的中斷請(qǐng)求進(jìn)行處理。⑨恢復(fù)現(xiàn)場(chǎng),將保存在堆棧中的各寄存器原內(nèi)容彈回原寄存器。⑩執(zhí)行中斷返回IRET。完成兩個(gè)功能:一是將保存在堆棧中的斷點(diǎn)地址送回IP和CS,二是恢復(fù)標(biāo)志寄存器FR中的內(nèi)容(相當(dāng)于POPF),使CPU回到原程序繼續(xù)運(yùn)行。返回2023/9/22610.1.3中斷優(yōu)先權(quán)管理中斷優(yōu)先權(quán)(Priority):多個(gè)中斷源同時(shí)提出申請(qǐng)時(shí),CPU響應(yīng)中斷的優(yōu)先次序。中斷嵌套:CPU處理低級(jí)中斷源的中斷響應(yīng)時(shí),能夠被高級(jí)中斷中止而轉(zhuǎn)去響應(yīng)高級(jí)中斷。(一)用軟件確定中斷優(yōu)先權(quán)(二)硬件確定中斷優(yōu)先權(quán)返回2023/9/227(一)用軟件確定中斷優(yōu)先權(quán)軟件查詢:由軟件查詢的先后次序決定中斷源的優(yōu)先權(quán),先查詢的中斷源的優(yōu)先權(quán)高于后查詢的中斷源。結(jié)構(gòu)組成:圖10-4將8個(gè)外設(shè)的中斷請(qǐng)求信號(hào)相“或”后送到CPU的INTR端,同時(shí)把這8個(gè)外設(shè)的中斷請(qǐng)求寄存器組成一個(gè)端口,賦予端口地址20H。任一外設(shè)有中斷請(qǐng)求,CPU響應(yīng)后進(jìn)入中斷服務(wù)程序,執(zhí)行中斷優(yōu)先權(quán)查詢程序,讀入端口內(nèi)容,逐位查詢每位的狀態(tài),查到哪位有中斷請(qǐng)求就轉(zhuǎn)入相應(yīng)的中斷服務(wù)程序。其流程圖見(jiàn)圖10-5。屏蔽法查詢與移位法查詢軟件查詢的優(yōu)、缺點(diǎn)返回2023/9/228圖10-4軟件查詢方式的接口電路返回INTR70電源故障磁盤(pán)磁帶顯示器紙帶輸入鍵盤(pán)輸入紙帶穿孔打印輸出端口地址20H2023/9/229圖10-5軟件查詢程序流程圖返回C申請(qǐng)服務(wù)?B申請(qǐng)服務(wù)?A申請(qǐng)服務(wù)?保留現(xiàn)場(chǎng)恢復(fù)現(xiàn)場(chǎng)外設(shè)C中斷服務(wù)程序外設(shè)B中斷服務(wù)程序外設(shè)A中斷服務(wù)程序NNNYYY2023/9/230屏蔽法查詢屏蔽法查詢:

INAL,20HTESTAL,80HJNEPWF;轉(zhuǎn)電源故障處理

TESTAL,40HJNEDISS;轉(zhuǎn)磁盤(pán)服務(wù)程序

TESTAL,20HJNEMT;轉(zhuǎn)磁帶服務(wù)程序

……返回2023/9/231移位法查詢

移位法查詢

INAL,20HSALAL,1;AL中的值算術(shù)左移1位

JCPWF;轉(zhuǎn)電源故障處理

SALAL,1JCDISS;轉(zhuǎn)磁盤(pán)服務(wù)程序

……返回2023/9/232軟件查詢法的優(yōu)、缺點(diǎn)

軟件查詢法的優(yōu)點(diǎn):①優(yōu)先權(quán)次序由程序確定;②省硬件,不需要復(fù)雜電路缺點(diǎn):CPU響應(yīng)中斷的速度慢,即由詢問(wèn)轉(zhuǎn)至相應(yīng)服務(wù)程序的入口需較長(zhǎng)時(shí)間。返回2023/9/233(二)硬件確定中斷優(yōu)先權(quán)(1)用編碼器和比較器組成的優(yōu)先權(quán)排隊(duì)電路(2)菊花鏈?zhǔn)絻?yōu)先權(quán)排隊(duì)電路(3)專用的中斷控制器返回2023/9/234(1)用編碼器和比較器組成的優(yōu)先權(quán)排隊(duì)電路電路原理如圖10-6所示。優(yōu)先權(quán)編碼器對(duì)中斷輸入線進(jìn)行優(yōu)先權(quán)編碼。中斷源I0=1編碼為A2A1A0=000;中斷源I1=1編碼為A2A1A0=001,…,I7=1編碼為A2A1A0=111。111的優(yōu)先權(quán)最高。有多個(gè)中斷源提出請(qǐng)求時(shí),編碼器輸出優(yōu)先權(quán)最高的編碼。優(yōu)先權(quán)寄存器存放當(dāng)前正在處理的中斷優(yōu)先權(quán)編碼B2B1B0。當(dāng)前沒(méi)有中斷處理時(shí),“優(yōu)先權(quán)失效”=1,這時(shí)任一中斷請(qǐng)求,都可通過(guò)與門2送到CPU的INTR端。如果CPU當(dāng)前正在處理中斷的話,則“優(yōu)先權(quán)失效”=0,與門2被封鎖,中斷請(qǐng)求能否經(jīng)過(guò)與門1受比較器輸出信號(hào)的控制。若提出請(qǐng)求的中斷源的優(yōu)先權(quán)編碼高于正在處理的中斷源,即A>B,則比較器輸出“1”,與門1開(kāi)通,中斷請(qǐng)求經(jīng)與門1送CPU;否則比較器輸出“0”,該中斷被封鎖,直至當(dāng)前中斷處理完畢才通過(guò)與門2送至CPU。中斷類型號(hào)由A2A1A0提供。返回2023/9/235圖10-6編碼器和比較器的優(yōu)先權(quán)排隊(duì)電路返回優(yōu)先權(quán)寄存器8到3優(yōu)先權(quán)編碼器CPU數(shù)據(jù)總線A>B比較器A2A1A0B2B1B0中斷輸入21去CPUINTR優(yōu)先權(quán)失效2023/9/236(2)菊花鏈?zhǔn)絻?yōu)先權(quán)排隊(duì)電路菊花鏈?zhǔn)絻?yōu)先權(quán)排隊(duì)電路如圖10-7所示。中斷請(qǐng)求Ii通過(guò)或門送入CPU的INTR端。CPU響應(yīng)后輸出INTA。若中斷源I1提出請(qǐng)求,則與門A1被打開(kāi),緩沖器A被選通,該中斷類型號(hào)被送入CPU,轉(zhuǎn)入該中斷服務(wù)程序。I1輸入與門A1的同時(shí),也輸入與門A2,使A2輸出低電平,將A級(jí)以下的各中斷請(qǐng)求Ii都屏蔽掉。在菊花鏈優(yōu)先權(quán)排隊(duì)電路中,排在最前面的中斷請(qǐng)求優(yōu)先權(quán)最高,即I1>I2>I3……。若前級(jí)有中斷請(qǐng)求,則屏蔽本級(jí)和以下各級(jí)的中斷請(qǐng)求;若本級(jí)有中斷請(qǐng)求,則屏蔽以下各級(jí)的中斷請(qǐng)求。返回2023/9/237圖10-7菊花鏈?zhǔn)絻?yōu)先權(quán)排隊(duì)電路返回緩沖器A緩沖器B緩沖器CA1A2C2C1B2B1INTACPU

DB中斷矢量中斷矢量中斷矢量INTR2023/9/238(3)專用的中斷控制器

微機(jī)系統(tǒng)中,常采用專門的中斷控制器進(jìn)行中斷優(yōu)先權(quán)管理,如Intel公司的8259A,通過(guò)它對(duì)外設(shè)接口的中斷請(qǐng)求進(jìn)行管理。返回2023/9/23910.2可編程中斷控制器8259A

10.2.1

8259A的內(nèi)部結(jié)構(gòu)

10.2.28259A的引腳

10.2.38259A的工作方式

10.2.48259A的命令字

10.2.58259A的級(jí)聯(lián)使用返回小結(jié)2023/9/24010.2.18259A的內(nèi)部結(jié)構(gòu)

8259A的內(nèi)部結(jié)構(gòu)如圖10-8所示,包括八部分:(1)中斷請(qǐng)求寄存器IRR(InterruptRequestRegister):保存中斷請(qǐng)求信號(hào)IR0~

IR7;(2)中斷屏蔽寄存器IMR(InterruptMaskRegister):對(duì)IRR中相應(yīng)的中斷源進(jìn)行屏蔽(置“1”);(3)中斷服務(wù)寄存器ISR(InterruptServiceRegister):記錄正在處理的中斷請(qǐng)求,相應(yīng)的ISR位置“1”;(4)優(yōu)先權(quán)判別器PR(PriorityResolver):判別保存在IRR中的中斷請(qǐng)求的優(yōu)先級(jí),將優(yōu)先級(jí)最高的中斷請(qǐng)求在中斷響應(yīng)周期送至ISR寄存器。多重中斷時(shí),由PR判定是否允許IRR中的中斷請(qǐng)求打斷正在處理的ISR中保存的中斷;返回下一頁(yè)2023/9/241圖10-88259A內(nèi)部結(jié)構(gòu)框圖數(shù)據(jù)總線緩沖器讀/寫(xiě)控制電路級(jí)聯(lián)緩沖器/比較器D7~D0CAS0CAS1CAS2A0RDWR控制電路中斷服務(wù)寄存器(ISR)優(yōu)先權(quán)判別器(PR)中斷請(qǐng)求寄存器(IRR)INTINTA中斷屏蔽寄存器(IMR)IR7…CSSP/ENIR6IR1IR0返回2023/9/24210.2.18259A的內(nèi)部結(jié)構(gòu)(續(xù))(5)數(shù)據(jù)總線緩沖器:雙向8位三態(tài)緩沖器,構(gòu)成8259A與系統(tǒng)總線之間的數(shù)據(jù)接口;(6)讀/寫(xiě)控制電路:控制狀態(tài)信息的讀出和控制命令的寫(xiě)入;(7)級(jí)聯(lián)緩沖器/比較器:用于多片8259A的連接,最多可級(jí)聯(lián)8塊8259A,將中斷源由8級(jí)擴(kuò)展到64級(jí);(8)控制電路:控制8259A芯片內(nèi)部部件運(yùn)行。返回2023/9/24310.2.28259A的引腳8259A的引腳如圖10-9所示,它有28個(gè)引腳。CAS2~CAS0為級(jí)聯(lián)信號(hào)線。在多片8259A級(jí)聯(lián)系統(tǒng)中,主片8259A的CAS2~CAS0為輸出線,從片的CAS2~CAS0為輸入線。與SP/EN配合使用。SP/EN為級(jí)聯(lián)/緩沖允許信號(hào)線。當(dāng)8259A工作于非緩沖方式時(shí),SP作為輸入,用來(lái)決定本片8259A是主片還是從片,SP=1時(shí)為主片,SP=0時(shí)為從片。當(dāng)8259A采用緩沖方式時(shí),EN引腳作為輸出,與數(shù)據(jù)總線驅(qū)動(dòng)緩沖器OE相連,控制數(shù)據(jù)傳輸方向。返回2023/9/244圖10-98259A的引腳圖11011121314567892342819181716152423222120272625D7~D0數(shù)據(jù)總線RD讀輸入WR寫(xiě)輸入A0端口選擇信號(hào)CS選片CAS2~CAS0級(jí)聯(lián)信號(hào)線SP/EN級(jí)聯(lián)/緩沖允許線INT中斷輸出INTA中斷響應(yīng)輸入IR0~IR7中斷請(qǐng)求輸入引腳名CAS2SP/ENINTIR0IR1IR2IR3IR4IR5IR6IR7INTAA0VccD0D1D2D3D4D5D6D7RDWRCS地CAS0CAS1返回2023/9/24510.2.38259A的工作方式(一)

優(yōu)先級(jí)設(shè)置方式(二)中斷結(jié)束(EOI)處理方式(三)中斷屏蔽方式(四)中斷請(qǐng)求引入方式(五)8259A與系統(tǒng)總線的連接方式

返回2023/9/246(一)優(yōu)先級(jí)設(shè)置方式(1)

全嵌套方式(2)

特殊全嵌套方式(3)

優(yōu)先級(jí)自動(dòng)循環(huán)方式(4)

優(yōu)先級(jí)特殊循環(huán)方式

返回2023/9/247(1)全嵌套方式

全嵌套方式是8259A的默認(rèn)方式,也是最常用的工作方式。此方式中,中斷優(yōu)先級(jí)是固定的,IR0優(yōu)先級(jí)最高,IR7優(yōu)先級(jí)最低,即IR0>IR1

>IR2

>IR3

>IR4

>IR5

>IR6

IR7

可實(shí)現(xiàn)中斷嵌套:只允許高一級(jí)中斷進(jìn)入嵌套,不允許同級(jí)和低級(jí)中斷進(jìn)入嵌套。CPU響應(yīng)中斷時(shí),中斷服務(wù)寄存器ISR中的相應(yīng)位保持為“1”。返回2023/9/248(2)特殊全嵌套方式特殊全嵌套方式只屏蔽低級(jí)中斷,允許同級(jí)和高級(jí)中斷進(jìn)入嵌套。優(yōu)先級(jí)次序仍是IR0>IR1

>IR2

>IR3

>IR4

>IR5

>IR6

>IR7該方式用于8259A級(jí)聯(lián),主片8259A設(shè)置為此方式,從片處于其他工作方式。同一個(gè)從片上不同優(yōu)先級(jí)的8個(gè)中斷源對(duì)于主片來(lái)講卻是同一級(jí)別。所以主片的特殊全嵌套方式,使得CPU除能響應(yīng)主片的高一級(jí)中斷外,還能響應(yīng)對(duì)于主片是同一級(jí)、對(duì)于從片是更高一級(jí)的中斷。返回2023/9/249(3)優(yōu)先級(jí)自動(dòng)循環(huán)方式

優(yōu)先級(jí)自動(dòng)循環(huán)方式中,中斷源的優(yōu)先級(jí)是變化的。初始優(yōu)先級(jí)次序規(guī)定為IR0、IR1、…、IR7,當(dāng)一個(gè)外設(shè)得到中斷服務(wù)后,它的優(yōu)先級(jí)自動(dòng)降為最低,其后一級(jí)中斷升為最高級(jí)。例如IR4申請(qǐng)中斷,處理完IR4中斷后,IR5變?yōu)樽罡呒?jí),IR4降為最低優(yōu)先級(jí),優(yōu)先級(jí)隊(duì)列自動(dòng)循環(huán)成IR5、IR6、IR7、IR0、…、IR4。此方式適用于多個(gè)中斷源優(yōu)先級(jí)相等的場(chǎng)合。返回2023/9/250(4)優(yōu)先級(jí)特殊循環(huán)方式優(yōu)先級(jí)特殊循環(huán)方式與優(yōu)先自動(dòng)循環(huán)方式只有一點(diǎn)不同,即初始的最低優(yōu)先級(jí)由用戶編程確定,從而優(yōu)先級(jí)次序及最高優(yōu)先級(jí)也就確定了。例如,編程(OCW2)確定IR5為最低優(yōu)先級(jí),則優(yōu)先級(jí)次序?yàn)镮R6、IR7、IR0、IR1、…、IR5。返回2023/9/251(二)中斷結(jié)束(EOI)處理方式中斷結(jié)束(EOI)處理就是對(duì)中斷服務(wù)寄存器ISR中對(duì)應(yīng)位的處理。當(dāng)某中斷被CPU響應(yīng)后,8259A使ISR的對(duì)應(yīng)位置“1”,中斷處理結(jié)束時(shí),必須將ISR中對(duì)應(yīng)位清“0”,以便再次接受同級(jí)別的中斷。8259A有三種中斷結(jié)束(EOI)處理方式:(1)普通EOI方式(2)特殊EOI方式(3)自動(dòng)EOI方式(AEOI)

返回2023/9/252(1)普通EOI方式該方式適合于全嵌套工作方式。中斷服務(wù)程序結(jié)束返回上一級(jí)程序前,CPU發(fā)一個(gè)EOI命令,使8259A自動(dòng)將ISR寄存器中級(jí)別最高的置“1”位清“0”(即結(jié)束了當(dāng)前正在處理的中斷)。普通EOI方式的設(shè)置是使OCW2中的EOI位為1,即OCW2中的R、SL、EOI=001。在優(yōu)先級(jí)循環(huán)方式中,普通EOI循環(huán)方式的設(shè)置通過(guò)使OCW2中的R、SL、EOI=101來(lái)實(shí)現(xiàn),它使8259A將ISR寄存器中級(jí)別最高的置“1”位清“0”的同時(shí),賦予該位最低優(yōu)先級(jí),將最高優(yōu)先級(jí)賦給原來(lái)比它低一級(jí)的中斷請(qǐng)求,其它中斷源的優(yōu)先級(jí)依次遞增。返回2023/9/253(2)特殊EOI方式在非嵌套方式中,中斷服務(wù)程序無(wú)法確定哪一級(jí)中斷為最后響應(yīng)和處理的,這就要采用特殊EOI方式,即由中斷結(jié)束命令指明8259A的中斷服務(wù)寄存器ISR中的哪一位被清“0”。特殊EOI方式的設(shè)置通過(guò)使OCW2中的R、SL、EOI=011來(lái)實(shí)現(xiàn),而OCW2中的L2、L1、L0指明了ISR中對(duì)應(yīng)的清“0”位。在優(yōu)先級(jí)循環(huán)方式中,特殊EOI循環(huán)方式的設(shè)置通過(guò)使OCW2中的R、SL、EOI=111來(lái)實(shí)現(xiàn),此時(shí)OCW2中的L2、L1、L0指明了清“0”和降為最低優(yōu)先級(jí)的中斷源,原來(lái)比它低一級(jí)的中斷請(qǐng)求則升為最高優(yōu)先級(jí),其它中斷源的優(yōu)先級(jí)依次遞增。返回2023/9/254(3)自動(dòng)EOI方式(AEOI)自動(dòng)EOI方式:在CPU進(jìn)入中斷響應(yīng)周期,發(fā)第二個(gè)INTA脈沖后,8259A自動(dòng)將ISR中的對(duì)應(yīng)位清“0”。中斷結(jié)束時(shí),不再向8259A送回任何信息。在CPU處理中斷期間,ISR中沒(méi)有相應(yīng)標(biāo)志,有可能出現(xiàn)低級(jí)中斷打斷高級(jí)中斷,產(chǎn)生重復(fù)嵌套,嵌套深度無(wú)法控制。用于沒(méi)有多級(jí)中斷嵌套的場(chǎng)合。在優(yōu)先級(jí)循環(huán)方式中,8259A自動(dòng)將ISR中相應(yīng)位清“0”的同時(shí),并按循環(huán)方式改變中斷的優(yōu)先級(jí)別。在8259A級(jí)聯(lián)方式下,不用AEOI方式,而用非自動(dòng)EOI方式。中斷處理結(jié)束時(shí)發(fā)兩次中斷結(jié)束命令,一個(gè)送主片,另一個(gè)送從片,將主、從8259A中的ISR相應(yīng)位均清“0”。返回2023/9/255(三)中斷屏蔽方式CPU用CLI指令將IF清零后,將禁止所有可屏蔽中斷,CPU自身無(wú)法做到有選擇地屏蔽某一級(jí)或幾級(jí)中斷。8259A通過(guò)中斷屏蔽寄存器IMR可實(shí)現(xiàn)這一點(diǎn)。(1)普通屏蔽方式:8259A的IMR的每一位對(duì)應(yīng)一個(gè)中斷請(qǐng)求輸入,可以通過(guò)設(shè)置操作命令字OCW1使IMR中某一位或某幾位置“1”,從而屏蔽對(duì)應(yīng)的某一級(jí)或某幾級(jí)中斷。(2)特殊屏蔽方式:只屏蔽同級(jí)中斷請(qǐng)求,而允許高級(jí)中斷或低級(jí)中斷進(jìn)入系統(tǒng)的方式。利用操作命令字OCW3設(shè)置該方式。該方式設(shè)置后,對(duì)8259A的中斷屏蔽寄存器IMR的某位置“1”使本級(jí)中斷被屏蔽時(shí),會(huì)同時(shí)使當(dāng)前中斷服務(wù)寄存器ISR中的相應(yīng)位自動(dòng)清零。這樣就不僅屏蔽了本級(jí)中斷,而且開(kāi)放了較低級(jí)中斷。這種方式常用于動(dòng)態(tài)地改變系統(tǒng)中斷優(yōu)先級(jí)的場(chǎng)合。返回2023/9/256(四)中斷請(qǐng)求引入方式

中斷請(qǐng)求引入有三種方式:(1)

電平觸發(fā)方式(2)邊沿觸發(fā)方式(3)中斷查詢方式返回2023/9/257(1)電平觸發(fā)方式電平觸發(fā)方式:8259A把中斷請(qǐng)求輸入端IRi出現(xiàn)的高電平作為中斷請(qǐng)求信號(hào)。需要注意的是,當(dāng)中斷請(qǐng)求被響應(yīng)后,輸入端必須及時(shí)撤銷高電平,否則在CPU進(jìn)入中斷處理過(guò)程,并且開(kāi)中斷的情況下,原輸入端的高電平會(huì)引起第二次中斷的錯(cuò)誤。8259A通過(guò)初始化命令字ICW1中的LTIM位設(shè)置,LTIM=1為高電平觸發(fā)方式。返回2023/9/258(2)邊沿觸發(fā)方式邊沿觸發(fā)方式:8259A將中斷請(qǐng)求輸入端IRi出現(xiàn)的上升沿作為中斷請(qǐng)求信號(hào),該信號(hào)可以一直保持高電平。8259A通過(guò)初始化命令字ICW1中的LTIM位設(shè)置,LTIM=0為邊沿觸發(fā)方式。返回2023/9/259(3)中斷查詢方式中斷查詢方式一般用于多于64級(jí)中斷的場(chǎng)合,或者用于CPU內(nèi)部的中斷允許觸發(fā)器復(fù)位、中斷輸入信號(hào)不起作用的場(chǎng)合。在中斷查詢方式下,外設(shè)通過(guò)IRi向8259A發(fā)中斷請(qǐng)求。但8259A不通過(guò)INT端向CPU發(fā)中斷申請(qǐng)信號(hào),而是靠CPU執(zhí)行查詢命令來(lái)確定中斷源。中斷查詢方式既有中斷的特點(diǎn),又有查詢的特點(diǎn)。查詢命令通過(guò)8259A的操作命令字OCW3實(shí)現(xiàn)。8259A接到命令后,將ISR中有中斷請(qǐng)求的對(duì)應(yīng)位置“1”,并把查詢字送到數(shù)據(jù)總線上。中斷查詢字格式如圖10-10所示。返回2023/9/260圖10-10中斷查詢字格式D7D6D2D1D0D5D4D3L2L1L0IR1:有中斷請(qǐng)求0:無(wú)中斷請(qǐng)求返回當(dāng)前中斷請(qǐng)求的最高優(yōu)先級(jí)編碼2023/9/261(五)8259A與系統(tǒng)總線的連接方式(1)非緩沖方式:當(dāng)系統(tǒng)只有單片8259A或少量幾片8259A級(jí)聯(lián)時(shí),將8259A的D7~D0直接與數(shù)據(jù)總線相連。8259A的SP/EN引腳作為輸入,在單片8259A系統(tǒng)中,SP/EN端必須接高電平;在多片系統(tǒng)中,主片8259A的SP/EN端接高電平,從片的SP/EN端接低電平。(2)緩沖方式:在多片8259A級(jí)聯(lián)的大系統(tǒng)中,8259A通過(guò)總線驅(qū)動(dòng)器與數(shù)據(jù)總線相連。8259A的SP/EN引腳作為輸出,與總線驅(qū)動(dòng)緩沖器的允許端OE相連,控制數(shù)據(jù)傳輸方向。返回2023/9/26210.2.48259A的命令字8259A編程有兩類命令字:

①初始化命令字ICW(InitializationCommandWord),用于系統(tǒng)初始化設(shè)置,只設(shè)置一次。

②操作命令字OCW(OperationCommandWord),定義8259A的操作方式,允許多次設(shè)置,以動(dòng)態(tài)地改變8259A的操作與控制方式。CPU對(duì)8259A的寫(xiě)入和讀出,由CS、A0、RD和WR等信號(hào)的組合來(lái)控制,見(jiàn)表9-1。返回下一頁(yè)2023/9/263表10-18259A的讀/寫(xiě)操作A0100IRR,ISR或中斷級(jí)別數(shù)據(jù)總線(注1)IMR數(shù)據(jù)總線001數(shù)據(jù)總線OCW2數(shù)據(jù)總線OCW3數(shù)據(jù)總線ICW1數(shù)據(jù)總線OCW1,ICW2,ICW3,ICW4(注2)D4D3RDWRCS輸入操作(讀)輸出操作(寫(xiě))斷開(kāi)功能000000000000111111111110000XXXXXXXXXXX數(shù)據(jù)總線——3態(tài)(無(wú)操作)數(shù)據(jù)總線——3態(tài)(無(wú)操作)注1:IRR、ISR或中斷級(jí)別的選擇,取決于在讀操作前所寫(xiě)入的OCW3的內(nèi)容

2:由片上的順序邏輯隊(duì)列,使這些命令字按適當(dāng)?shù)捻樞驅(qū)懭?。返?023/9/26410.2.48259A的命令字(續(xù))8259A包含兩個(gè)端口地址:偶地址A0=0,奇地址A0=1,高位地址由片選信號(hào)CS等確定。ICW在系統(tǒng)開(kāi)機(jī)初始化時(shí)按順序填寫(xiě)。ICW1寫(xiě)入偶地址端口,其余寫(xiě)入奇地址端口。OCW沒(méi)有寫(xiě)入順序要求。OCW1寫(xiě)入奇地址端口,其余寫(xiě)入偶地址端口。(一)

初始化命令字ICW(二)

操作命令字OCW

返回2023/9/265(一)初始化命令字ICW

初始化命令字ICW(InitializationCommandWord)又稱預(yù)置命令字,只在初始化時(shí)設(shè)置一次。四個(gè)初始化命令字ICW1~I(xiàn)CW4不是任何情況下都需要設(shè)置,根據(jù)實(shí)際使用情況確定,設(shè)置流程如圖10-11所示。(1)

芯片控制初始化命令字ICW1

(2)中斷類型初始化命令字ICW2(3)主/從片初始化命令字

ICW3(4)

方式控制初始化命令字ICW4返回ICW編程舉例2023/9/266圖10-118259A預(yù)置命令字設(shè)置流程圖ICW1ICW2ICW3ICW4可中斷返回A00A7A6A51LTIMADISNGLIC4A15/T7A14/T6A13/T5A12/T4A11/T3A10A9A8TRUE11S7S6S5S4S3FALSES2/ID2S1/ID1S0/ID01000SFNMBUFM/SAEOIμPMD7D6D5D4D3D2D1D0SNGL=“1”IC4=“1”ADIA5~A158085A時(shí)使用T3~T78086時(shí)使用S0~S7主控制器時(shí)使用ID0~ID2從控制器時(shí)使用TRUEFALSE8253例2023/9/267(1)芯片控制初始化命令字ICW101A5A6A7LTIMADISNGLIC4A0764532108086/8088系統(tǒng)中不用標(biāo)志位1:需要設(shè)置ICW40:不需設(shè)置ICW41:單級(jí)使用0:級(jí)聯(lián)使用1:調(diào)用地址間隔為40:調(diào)用地址間隔為8(8086/8088不用)1:電平觸發(fā)0:邊沿觸發(fā)返回圖10-12ICW1格式下一頁(yè)8253例2023/9/268(1)芯片控制初始化命令字ICW1(續(xù))A0:ICW1寫(xiě)入偶端口地址(A0=0);D4:D4=1和A0=0是ICW1的標(biāo)志;D3(LTIM):定義中斷請(qǐng)求觸發(fā)方式,LTIM=0表示邊沿觸發(fā),LTIM=1表示高電平觸發(fā);D2(ADI):對(duì)8086/8088系統(tǒng)無(wú)效;D1(SNGL):?jiǎn)纹?多片指示。SNGL=1表示單片8259A使用,SNGL=0表示多片8259A級(jí)聯(lián)使用。D0(IC4):指示是否需要設(shè)置ICW4。在8086/8088系統(tǒng)中IC4必須設(shè)定為1。返回2023/9/269(2)中斷類型初始化命令字ICW2ICW2緊跟在ICW1之后,端口地址為奇地址(A0=1)。用于設(shè)置中斷類型碼的高5位,而低3位取決于引入中斷的引腳IR0~I(xiàn)R7。例:在PC/XT機(jī)中T7~T3=00001,所以8個(gè)中斷IR0~I(xiàn)R7對(duì)應(yīng)的中斷類型碼為08H~0FH。返回1T7T3T4T6T5765430A0中斷類型碼的高5位圖10-13ICW2格式8253例2023/9/270(3)主/從片初始化命令字ICW31S7S6S5S4S3S2S1S076543210A0Si=0:表示IRi端上未接8259A從片1:表示IRi端上接有8259A從片(a)(b)1A0ID0ID1ID2210從8259A的識(shí)別地址圖10-14ICW3格式主8259A從8259A返回下一頁(yè)2023/9/271(3)主/從片初始化命令字ICW3(續(xù))ICW3只在級(jí)聯(lián)(ICW1的SNGL=0)時(shí)才設(shè)置。必須寫(xiě)入奇地址端口(A0=1);主片8259A的ICW3中,Si=1表示對(duì)應(yīng)引腳IRi上接有8259A從片;從片8259A的ICW3中,ID2~I(xiàn)D0表明該從片接在主片的哪個(gè)IR引腳上。例如某從片8259A的ID2~I(xiàn)D0=100,則表明該從片接在主片的IR4引腳上。返回2023/9/272(4)方式控制初始化命令字ICW4

1000BUFM/SAEOI

PMA0764532101:8086/8088配置0:8080/8085配置1:自動(dòng)EOI方式0:非自動(dòng)EOI方式1:特殊完全嵌套方式(級(jí)聯(lián),主片)0:非特殊完全嵌套方式SFNM非緩沖方式0x緩沖方式從8259A10主8259A11返回圖10-15ICW4格式OCW2下一頁(yè)8253例2023/9/273(4)方式控制初始化命令字ICW4(續(xù))ICW4在ICW1中的IC4=1才需要設(shè)置,8086/8088必須有。A0=1:ICW4必須寫(xiě)入奇地址端口。D0(μPM):指定CPU類型。μPM=0表示與8080/8085系統(tǒng)配合;μPM=1表示與8086/8088系統(tǒng)配合。D1(AEOI):設(shè)置中斷結(jié)束方式。AEOI=1表示采用自動(dòng)中斷結(jié)束方式,即CPU響應(yīng)中斷進(jìn)入中斷過(guò)程時(shí),8259A自動(dòng)清除ISR中的對(duì)應(yīng)位;AEOI=0表示采用非自動(dòng)EOI方式,即CPU必須發(fā)中斷結(jié)束命令,8259A才清除ISR中的標(biāo)志位。返回下一頁(yè)2023/9/274(4)方式控制初始化命令字ICW4(續(xù))D2(M/S):主/從片選擇位,緩沖方式(BUF=1)下,M/S=1表示本片為主8259A,M/S=0表示本片為從8259A。BUF=0時(shí)M/S不起作用。D3(BUF):表示8259A是否采用緩沖方式。BUF=1表采用緩沖方式,EN輸出有效,EN=0允許緩沖器輸出,EN=1允許緩沖器輸入;BUF=0表示采用非緩沖方式,SP輸入有效,SP=1表主片,SP=0表從片。BUF、M/S和SP/EN的關(guān)系見(jiàn)表9-2。D4(SFNM):表示嵌套方式,為1時(shí)表示特殊全嵌套方式(允許響應(yīng)同級(jí)中斷);為0時(shí)表示一般全嵌套方式。單級(jí)時(shí)設(shè)定D4=0。返回2023/9/275表10-2BUF、M/S和SP/EN的關(guān)系BUF位M/S位SP/EN端非緩沖方式緩沖方式主8259A從8259A1001無(wú)意義SP有效(輸入信號(hào))EN有效(輸出信號(hào))SP=1SP=0EN=1EN=0主8259A從8259ACPU8259A8259ACPU返回2023/9/276ICW編程舉例例:當(dāng)8086系統(tǒng)中采用單級(jí)8259A,其端口地址為20H和21H,對(duì)8259A進(jìn)行初始化編程。

MOVAL,13H;初始化ICW1OUT20H,AL;邊沿觸發(fā),單級(jí)使用,需要ICW4

MOVAL,18H;初始化ICW2OUT21H,AL;中斷類型碼高5位為00011BMOVAL,01H;初始化ICW4OUT21H,AL;全嵌套、非緩沖、非AEOI、8086式ICW2確定的中斷類型碼為18H~1FH。返回2023/9/277(二)操作命令字OCW8259A經(jīng)ICW初始化后,進(jìn)入工作狀態(tài),可通過(guò)OCW(OperationCommandWord)使它按不同的方式工作。8259A三個(gè)操作命令字OCW1~OCW3可獨(dú)立使用,寫(xiě)入次序不限。OCW1須寫(xiě)入奇地址端口,OCW2、OCW3寫(xiě)入偶地址端口。(1)中斷屏蔽命令字OCW1(2)中斷結(jié)束方式命令字OCW2(3)特殊屏蔽和查詢方式命令字OCW3返回2023/9/278(1)中斷屏蔽命令字OCW1

OCW1用于向中斷屏蔽寄存器IMR寫(xiě)入屏蔽信息M7~M0對(duì)應(yīng)IR7~I(xiàn)R0,Mi=1表示對(duì)應(yīng)的IRi被屏蔽,禁止它產(chǎn)生中斷輸出INT;反之則允許對(duì)應(yīng)的IRi產(chǎn)生中斷信號(hào)。返回1M7M6M5M4M3M2M1M070A0Mi=1:屏蔽由IRi引入的中斷請(qǐng)求0:允許IRi端中斷請(qǐng)求進(jìn)入圖10-16OCW1格式8253例2023/9/279(2)中斷結(jié)束方式命令字OCW200EOISLRA0764532100L0L1L2D4D3=00是OCW2的標(biāo)志位001普通EOI方式101普通EOI循環(huán)方式000取消自動(dòng)EOI循環(huán)方式110置位優(yōu)先權(quán)命令010無(wú)效100設(shè)置自動(dòng)EOI循環(huán)方式011特殊EOI方式111特殊EOI循環(huán)方式000IR0100IR4101IR5110IR6111IR7010IR2011IR3001IR1圖10-17OCW2的格式返回下一頁(yè)2023/9/280(2)中斷結(jié)束方式命令字OCW2(續(xù))OCW2設(shè)置中斷優(yōu)先級(jí)循環(huán)方式和中斷結(jié)束方式。A0=0、D4D3=00為OCW2的標(biāo)志位。D7(Rotate):優(yōu)先級(jí)循環(huán)標(biāo)志。R=0為固定優(yōu)先級(jí);D6(SpecificLevel):指明L2L1L0是否有效。SL=1時(shí),L2L1L0有效。D5(EndOfInterrupt):中斷結(jié)束命令位。在非自動(dòng)EOI方式(見(jiàn)ICW4)下,EOI=1表示中斷結(jié)束命令,使ISR中相應(yīng)位清0;EOI=0則不起作用。對(duì)于非AEOI方式,中斷結(jié)束前必須發(fā)OCW2命令字,以給出EOI標(biāo)志。D2D1D0(L2L1L0):當(dāng)SL=1時(shí),L2L1L0指定操作的中斷源IRi。L2L1L0為000、001、…、111分別對(duì)應(yīng)于IR0~I(xiàn)R7。返回下一頁(yè)2023/9/281(2)中斷結(jié)束方式命令字OCW2(續(xù))

R、SL、EOI組合產(chǎn)生8種功能:001—普通EOI方式,中斷處理結(jié)束時(shí),將ISR寄存器中當(dāng)前級(jí)別最高的置“1”位清“0”,適于全嵌套中斷方式。011—特殊EOI方式,中斷處理結(jié)束時(shí),由L2L1L0指定清除ISR中的哪一位,適用于非全嵌套中斷方式。101—普通EOI循環(huán)方式,中斷處理結(jié)束時(shí),將ISR寄存器中當(dāng)前級(jí)別最高的置“1”位清“0”并賦予最低優(yōu)先級(jí),最高優(yōu)先級(jí)賦給它的下一級(jí),其它中斷優(yōu)先級(jí)依次循環(huán)改變。111—特殊EOI循環(huán)方式,中斷處理結(jié)束時(shí),由L2L1L0指定清除ISR中的哪一位,并賦予最低優(yōu)先級(jí),最高優(yōu)先級(jí)賦給它的下一級(jí),其它中斷優(yōu)先級(jí)依次循環(huán)改變。下一頁(yè)返回2023/9/282(2)中斷結(jié)束方式命令字OCW2(續(xù))100—設(shè)置自動(dòng)EOI循環(huán)方式,在CPU進(jìn)入中斷響應(yīng)發(fā)第二個(gè)INTA脈沖后,8259A自動(dòng)將ISR中正在服務(wù)的對(duì)應(yīng)位清“0”,并賦予最低優(yōu)先級(jí),最高優(yōu)先級(jí)賦給它的下一級(jí),其它優(yōu)先級(jí)依次循環(huán)改變。000—取消自動(dòng)EOI循環(huán)方式。110—設(shè)置優(yōu)先級(jí)特殊循環(huán)方式,由L2L1L0指定最低優(yōu)先級(jí)中斷,其它中斷優(yōu)先級(jí)依次循環(huán)排列。010—無(wú)意義返回2023/9/283(3)特殊屏蔽和查詢方式命令字OCW30A00SMMESMM1RRPRIS6453210標(biāo)志位0X:無(wú)效10:下次RD有效,讀IRR11:下次RD有效,讀ISR1:查詢8259A狀態(tài)0:不查詢0X:無(wú)效11:特殊屏蔽方式置位10:特殊屏蔽方式復(fù)位圖10-18OCW3

格式返回下一頁(yè)7舉例2023/9/284(3)特殊屏蔽和查詢方式命令字OCW3(續(xù))OCW3用來(lái)管理特殊屏蔽方式,設(shè)置中斷查詢方式,設(shè)置8259A寄存器的讀出命令。A0=0,D4D3=01:OCW3的標(biāo)志位。D6(ESMM):特殊屏蔽方式允許位。D5(SMM):特殊屏蔽方式位。只有當(dāng)ESMM=1時(shí),才允許SMM位起作用。SMM=1,選擇特殊屏蔽方式,即只屏蔽本級(jí)中斷請(qǐng)求,允許高級(jí)或低級(jí)中斷進(jìn)入系統(tǒng)。SMM=0,取消特殊屏蔽方式。返回下一頁(yè)2023/9/285(3)特殊屏蔽和查詢方式命令字OCW3(續(xù))D2(P):查詢方式位。P=1將8259A置于中斷查詢方式,8259A不向CPU發(fā)中斷請(qǐng)求信號(hào),而是CPU靠發(fā)送查詢命令,讀取查詢字(圖10-19)來(lái)獲得外部設(shè)備的中斷請(qǐng)求信息。返回下一頁(yè)IR76453210L0L1L2給出當(dāng)前中斷請(qǐng)求的最高優(yōu)先級(jí)0:無(wú)中斷請(qǐng)求1:有中斷請(qǐng)求0A0圖10-198259A中斷狀態(tài)字格式2023/9/286(3)特殊屏蔽和查詢方式命令字OCW3(續(xù))D1(RR):讀寄存器命令。RR=1允許讀IRR或ISR寄存器,RR=0禁止讀取。D0(RIS):讀IRR或ISR的選擇位。RIS=1允許讀ISR寄存器;RIS=0允許讀IRR寄存器。注:A0、P、RR、RIS組合成8259A的讀取命令:

A0PRRRIS讀取內(nèi)容

01xx中斷查詢命令

0010讀IRR命令

0011讀ISR命令

1xxx讀IMR狀態(tài)返回舉例2023/9/287讀8259A狀態(tài)舉例IMR的讀取:

INAL,21HIRR的讀?。?/p>

MOVAL,00001010BOUT20H,ALINAL,20HISR的讀取:

MOVAL,00001011BOUT20H,ALINAL,20H返回2023/9/28810.2.58259A的級(jí)聯(lián)使用一片8259A芯片只能管理8級(jí)中斷,在多于8級(jí)中斷的系統(tǒng)中,必須將多片8259A級(jí)聯(lián)使用。兩級(jí)級(jí)聯(lián)情況下,最多可管理64級(jí)中斷源。第一級(jí)用一片8259A作主片,第二級(jí)用1~8片8259A作從片,如圖10-20所示。級(jí)聯(lián)時(shí),主片8259A的SP/EN端接Vcc,從片的SP/EN端接地。從片的INT腳接主片的IRi端,主片的IRi端若未接從片,可直接連中斷源。主片的CAS2~CAS0作輸出端,從片的CAS2~CAS0作輸入端,二者相連。返回下一頁(yè)2023/9/289INTCAS0CAS2IR7INTACAS1SP/ENIR1IR2IR3IR4IR5IR6IR08259A(從8)INTCAS0CAS28259A(主)IR0IR1IR2IR6IR7INTACAS1SP/EN...INTCAS0CAS2IR7INTACAS1SP/ENIR1IR2IR3IR4IR5IR6IR08259A(從1)中斷請(qǐng)求輸入中斷請(qǐng)求輸入VCC...圖10-208259A級(jí)聯(lián)方式連接返回嵌套引腳2023/9/29010.2.58259A的級(jí)聯(lián)使用(續(xù))CPU響應(yīng)中斷時(shí)回送兩個(gè)INTA信號(hào)。第1個(gè)INTA有效時(shí),主片將級(jí)聯(lián)地址從CAS2~CAS0端輸出給所有的從片;第2個(gè)INTA有效時(shí),與主片發(fā)出的級(jí)聯(lián)地址相符的從片將中斷類型號(hào)n通過(guò)低八位數(shù)據(jù)總線送給CPU。當(dāng)從片引入的中斷處理過(guò)程結(jié)束時(shí),CPU應(yīng)發(fā)出兩個(gè)EOI命令,一個(gè)送主片,將主8259A中的ISR相應(yīng)位清“0”;另一個(gè)送從片,將從8259A中的ISR相應(yīng)位也清“0”。圖10-21為8086在最小模式下的一種8259A級(jí)聯(lián)方式。返回下一頁(yè)2023/9/29110.2.58259A的級(jí)聯(lián)使用(續(xù))級(jí)聯(lián)使用與單片使用在初始化時(shí)的不同處:(1)對(duì)于主片8259A:①級(jí)聯(lián)時(shí)ICW1中的SNGL=0,單片時(shí)SNGL=1;②級(jí)聯(lián)時(shí)設(shè)置ICW3,ICW3中Si=1表示對(duì)應(yīng)引腳IRi上接有從片。單片不要設(shè)置ICW3

;③級(jí)聯(lián)時(shí)應(yīng)設(shè)置為特殊全嵌套方式,即ICW4中SFNM=1。(2)對(duì)于從片8259A:①ICW1中SNGL=0;②要設(shè)置ICW3,由ICW3中低3位ID2~I(xiàn)D0標(biāo)記該從片接在主片的哪個(gè)IRi引腳上。返回2023/9/29282828286INTRINTAWRRDM/IOIR0IR5IR6IR7IR4IR3IR2IR1CAS0CAS2CAS1SP/ENA0D7~D0CSINTA從8259A#2INTD7~D0IR0CAS0CAS2CAS1IR5IR6IR7IR4IR3IR2IR1SP/ENA0CSINTA從8259A#1INTIR0IR5IR6IR7IR4IR3IR2IR1CAS0CAS2CAS1SP/ENA0D7~D0CSINTA主8259AVCC數(shù)據(jù)總線地址總線控制總線圖10-218259A級(jí)聯(lián)方式系統(tǒng)連接返回2023/9/2938259A芯片的功能小結(jié)8259A芯片的功能:(1)一片8259A具有8級(jí)優(yōu)先權(quán)控制,通過(guò)級(jí)聯(lián)用9片8259A(1主片+8從片)可以擴(kuò)展到64級(jí)中斷優(yōu)先權(quán);(2)每一級(jí)中斷可由程序單獨(dú)屏蔽或允許;(3)在中斷響應(yīng)周期,可以提供中斷類型號(hào);(4)可通過(guò)編程選擇多種工作方式,使用靈活。核心問(wèn)題:中斷優(yōu)先權(quán)管理返回2023/9/29410.3可編程計(jì)數(shù)/定時(shí)控制器8253

在微機(jī)系統(tǒng)中常常需要定時(shí)器或計(jì)數(shù)器。8253是三通道16bit的可編程計(jì)數(shù)/定時(shí)器。10.3.18253芯片的內(nèi)部結(jié)構(gòu)10.3.28253芯片的工作方式10.3.38253應(yīng)用舉例返回2023/9/29510.3.18253芯片的內(nèi)部結(jié)構(gòu)8253芯片內(nèi)部結(jié)構(gòu)和引腳信號(hào)如圖所示。返回由四部分組成:(1)數(shù)據(jù)總線緩沖存儲(chǔ)器(2)讀/寫(xiě)控制電路(3)3個(gè)計(jì)數(shù)通道(4)控制字寄存器2023/9/296(1)數(shù)據(jù)總線緩沖存儲(chǔ)器是8253與CPU之間的數(shù)據(jù)接口,由8位雙向三態(tài)緩沖存儲(chǔ)器構(gòu)成,是CPU與8253之間交換信息的必經(jīng)之路。

返回2023/9/297(2)讀/寫(xiě)控制電路

接收來(lái)自CPU的地址信號(hào)和控制信號(hào),完成對(duì)8253內(nèi)部各功能的控制和操作。信號(hào)如下:①A1A0:端口選擇信號(hào)。選擇8253內(nèi)部的計(jì)數(shù)器通道或控制字寄存器。如表10-3所示。②CS:片選信號(hào),低電平有效。③RD:讀信號(hào)低電平有效時(shí),CPU讀取由A1A0所選定的計(jì)數(shù)通道中的內(nèi)容。④WR:寫(xiě)信號(hào)低電平有效時(shí),CPU將計(jì)數(shù)初值寫(xiě)入選定通道的計(jì)數(shù)器中,或?qū)⒎绞娇刂谱謱?xiě)入控制字寄存器中。

8253的讀/寫(xiě)操作如表10-4所示。

返回2023/9/298表10-3A1、A0的定義A1A0

端口00011011計(jì)數(shù)通道0計(jì)數(shù)通道1計(jì)數(shù)通道2控制字寄存器表10-3A1、A0的定義返回2023/9/299表10-48253的讀/寫(xiě)操作狀態(tài)01000010010101001011001000010100110001111×

××

×011××裝入通道0計(jì)數(shù)器裝入通道1計(jì)數(shù)器裝入通道2計(jì)數(shù)器寫(xiě)方式控制字讀通道0計(jì)數(shù)器讀通道1計(jì)數(shù)器讀通道2計(jì)數(shù)器無(wú)操作禁止使用無(wú)操作操作說(shuō)明CSRDWR

A1

A0表10-48253的讀/寫(xiě)操作狀態(tài)返回2023/9/2100(3)通道0~通道23個(gè)計(jì)數(shù)通道功能完全相同,操作獨(dú)立。每個(gè)通道內(nèi)部設(shè)有一個(gè)16位減法計(jì)數(shù)器,可進(jìn)行二進(jìn)制(計(jì)數(shù)范圍0000H~FFFFH)或十進(jìn)制(BCD碼)(范圍0000~9999)計(jì)數(shù)。每個(gè)計(jì)數(shù)通道有三個(gè)引腳:

CLKi腳:時(shí)鐘脈沖輸入端,頻率不大于2.6MHz

OUTi腳:計(jì)數(shù)器輸出端,計(jì)數(shù)/定時(shí)結(jié)束時(shí)產(chǎn)生信號(hào)

GATEi腳:門控脈沖輸入端,高電平允許減法計(jì)數(shù)返回下一頁(yè)2023/9/2101(3)通道0~通道2(續(xù))每一通道既可作計(jì)數(shù)器,也可作定時(shí)器使用,其內(nèi)部操作完全相同。

①用作計(jì)數(shù)器時(shí),從CLKi端輸入外部事件產(chǎn)生的計(jì)數(shù)脈沖。

②用作定時(shí)器時(shí),從CLKi端輸入精確的時(shí)鐘脈沖。

定時(shí)時(shí)間=時(shí)鐘脈沖周期×計(jì)數(shù)器初值(定時(shí)系數(shù))每輸入一個(gè)計(jì)數(shù)/時(shí)鐘脈沖,計(jì)數(shù)器內(nèi)容減“1”,待計(jì)數(shù)值減到“0”,OUTi端將有輸出,表示計(jì)數(shù)次數(shù)/定時(shí)時(shí)間到。返回2023/9/2102(4)控制字寄存器

存放由CPU寫(xiě)入的方式選擇控制字,以定義各通道的工作方式,其格式如圖10-24所示。SC1、SC0位:選擇通道。RL1、RL0位:定義選中通道計(jì)數(shù)器的操作方式。

RL1RL0=00時(shí),將該通道中當(dāng)前計(jì)數(shù)器的內(nèi)容送到鎖存器中,供CPU讀取計(jì)數(shù)值。利用該鎖存命令可隨時(shí)讀取計(jì)數(shù)器當(dāng)前的計(jì)數(shù)值。

RL1RL0=01時(shí),只讀/寫(xiě)計(jì)數(shù)器低8位,寫(xiě)時(shí)高8位自動(dòng)清0RL1RL0=10時(shí),只讀/寫(xiě)計(jì)數(shù)器高8位,寫(xiě)時(shí)低8位自動(dòng)清0RL1RL0=11時(shí),先讀/寫(xiě)計(jì)數(shù)器低8位,后讀/寫(xiě)高8位BCD位:定義是采用二進(jìn)制計(jì)數(shù)還是BCD計(jì)數(shù)。M2M1M0位:定義選中通道的工作方式。返回2023/9/2103圖10-248253芯片方式選擇控制字格式00:計(jì)數(shù)器鎖存,供CPU讀01:只讀/寫(xiě)計(jì)數(shù)器低字節(jié)10:只讀/寫(xiě)計(jì)數(shù)器高字節(jié)11:先讀/寫(xiě)計(jì)數(shù)器低字節(jié),后讀/寫(xiě)高字節(jié)1:BCD碼計(jì)數(shù)0:二進(jìn)制計(jì)數(shù)000:方式0001:方式1x10:方式2x11:方式3100:方式4101:方式500:選通道001:選通道110:選通道211:無(wú)效SC1SC0RL1RL0M2M1M0BCDD6D7D6D4D5D2D3D1D0返回應(yīng)用例1例2例32023/9/210410.3.28253芯片的工作方式8253提供6種工作方式,遵循以下基本原則:控制字寫(xiě)入8253,所有的控制邏輯電路復(fù)位,輸出端進(jìn)入初始狀態(tài);初始計(jì)數(shù)值寫(xiě)入后,經(jīng)過(guò)一個(gè)CLK脈沖后,才由計(jì)數(shù)初值寄存器送入計(jì)數(shù)執(zhí)行單元。從第二個(gè)CLK脈沖的下降沿開(kāi)始,計(jì)數(shù)器作減1計(jì)數(shù);通常,在CLK脈沖的上升沿,門控信號(hào)GATE被采樣。不同的工作方式,GATE信號(hào)的觸發(fā)方式也不同,分為電平觸發(fā)、邊沿觸發(fā);8253內(nèi)部沒(méi)有中斷控制電路,也沒(méi)有專用的中斷請(qǐng)求線,若需中斷,可將OUT端作為中斷請(qǐng)求信號(hào);啟動(dòng)計(jì)數(shù)過(guò)程分兩種:軟件啟動(dòng)(由程序指令啟動(dòng))、硬件啟動(dòng)(由外部電路信號(hào)啟動(dòng))。下

溫馨提示

  • 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)論