原理及接口技術(shù)-第9章_第1頁(yè)
原理及接口技術(shù)-第9章_第2頁(yè)
原理及接口技術(shù)-第9章_第3頁(yè)
原理及接口技術(shù)-第9章_第4頁(yè)
原理及接口技術(shù)-第9章_第5頁(yè)
已閱讀5頁(yè),還剩56頁(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)介

第9章輸入輸出控制技術(shù)學(xué)習(xí)目標(biāo)輸入/輸出(簡(jiǎn)稱I/O)設(shè)備是計(jì)算機(jī)的主要組成部分。I/O接口是CPU同輸入/輸出設(shè)備之間進(jìn)行信息交換的重要樞紐。本章首先介紹輸入輸出接口基本概念、CPU與外設(shè)數(shù)據(jù)傳送的方式。然后,重點(diǎn)討論中斷與計(jì)數(shù)/定時(shí)控制技術(shù)。1第9章輸入輸出控制技術(shù)學(xué)習(xí)要求著重理解接口基本結(jié)構(gòu)的特點(diǎn)。掌握CPU與外設(shè)之間數(shù)據(jù)的傳送方式與控制方式。正確理解中斷源、向量中斷、中斷優(yōu)先權(quán)等基本概念。重點(diǎn)掌握8086/8088中斷系統(tǒng)及其用戶定義的內(nèi)部中斷處理方法。能正確理解和靈活運(yùn)用中斷向量表。掌握8259A內(nèi)部8個(gè)部件的功能及其關(guān)系。重點(diǎn)掌握8259A初始化編程。掌握可編程計(jì)數(shù)器/定時(shí)器8253-5的內(nèi)部結(jié)構(gòu)和進(jìn)行計(jì)數(shù)/定時(shí)控制的原理。掌握8253-5的方式控制字格式的設(shè)置,能夠理解各計(jì)數(shù)器有6種可供選擇的工作方式,并完成定時(shí)、計(jì)數(shù)或脈沖發(fā)生器等多種功能。29.1輸入輸出接口概述1.CPU與外設(shè)間的連接CPU與外設(shè)的連接須通過(guò)各自的專用接口電路(或接口芯片)來(lái)實(shí)現(xiàn),這些接口電路簡(jiǎn)稱為I/O接口。2.接口電路的基本結(jié)構(gòu)接口電路的基本結(jié)構(gòu)同它傳送的信息種類有關(guān)。信息可分為3類:數(shù)據(jù)信息;狀態(tài)信息;控制信息。39.2CPU與外設(shè)之間數(shù)據(jù)傳送的方式9.2.1 程序傳送程序傳送:在程序控制(即IN或OUT指令控制)下進(jìn)行數(shù)據(jù)傳送,是CPU與外設(shè)間最簡(jiǎn)單的一種數(shù)據(jù)傳送方式。它可分為無(wú)條件傳送方式和有條件傳送方式兩種。1.無(wú)條件傳送(又稱同步傳送) 無(wú)條件傳送方式對(duì)少量數(shù)據(jù)傳送來(lái)說(shuō), 是最省時(shí)間的一種傳送方法,適用于 各類巡回檢測(cè)和過(guò)程控制。AB:AddressBusDB:DataBus42.程序查詢傳送(條件傳送—異步傳送)程序查詢傳送是有條件的異步傳送。1)程序查詢輸入查詢輸入部分的程序:POLL:INAL,STATUS_PORT ;讀狀態(tài)端口的信息

TESTAL,80H ;設(shè)“準(zhǔn)備就緒”(READY)信息在D7位

JEPOLL ;未“準(zhǔn)備就緒”,則循環(huán)再查

INAL,DATA_PORT ;已“準(zhǔn)備就緒”(READY=1),則讀入數(shù)據(jù)52.程序查詢傳送(條件傳送—異步傳送)2)程序查詢輸出查詢輸出部分的程序:POLL:INAL,STATUS_PORT ;查狀態(tài)端口中的狀態(tài)信息D7 TESTAL,80H JNEPOLL ;D7=1即忙線=1,則循環(huán)再查

MOVAL,STORE ;否則,外設(shè)空閑,則由內(nèi)存讀取數(shù)據(jù)

OUTDATA_PORT,AL ;輸出到DATA地址端口單元ATATUS和DATA分別為狀態(tài)端口 和數(shù)據(jù)端口的符號(hào)地址; STORE為待輸出數(shù)據(jù)的內(nèi)存單元 的符號(hào)地址。62.程序查詢傳送(條件傳送—異步傳送)3)一個(gè)采用查詢方式的數(shù)據(jù)采集系統(tǒng)START:MOVDL,0F8H ;設(shè)置啟動(dòng)A/D轉(zhuǎn)換信號(hào),且低3位選通多路開關(guān)通道

MOVAX,SEGDSTOR ;設(shè)置輸入數(shù)據(jù)的內(nèi)存單元地址指針

MOVES,AX LEADI,DSTORAGAIN: MOVAL,DL ANDAL,0EFH ;使D4=0 OUT04,AL ;停止A/D轉(zhuǎn)換

CALLDELAY ;等待停止A/D轉(zhuǎn)換操作的完成

MOVAL,DL OUT04,AL ;選輸入通道并啟動(dòng)A/D轉(zhuǎn)換73)一個(gè)采用查詢方式的數(shù)據(jù)采集系統(tǒng)POLL: INAL,02 ;輸入狀態(tài)信息

SHRAL,1 ;查AL的D0 JNCPOLL ;判READY=1?若D0=0,未準(zhǔn)備好,則循環(huán)再查

INAL,03 ;若已準(zhǔn)備就緒,則經(jīng)端口3將采樣數(shù)據(jù)輸入至AL STOSB ;輸入數(shù)據(jù)轉(zhuǎn)送內(nèi)存單元

INCDL ;輸入模擬量通道增1 JNEAGAIN ;8個(gè)模擬量未輸入完則循環(huán) ↘ ;輸入完畢,則執(zhí)行別的程序89.2.2中斷傳送中斷是外設(shè)或其他中斷源中止CPU當(dāng)前正在執(zhí)行的程序,而轉(zhuǎn)向?yàn)樵撏庠O(shè)服務(wù)(如完成它與CPU之間傳送一個(gè)數(shù)據(jù))的程序,一旦服務(wù)結(jié)束,又返回原程序繼續(xù)工作。這樣,外設(shè)處理數(shù)據(jù)期間,CPU就不必浪費(fèi)大量時(shí)間去查詢它們的狀態(tài),只待外設(shè)處理完畢主動(dòng)向CPU提出請(qǐng)求(向CPU發(fā)中斷請(qǐng)求信號(hào)),而CPU在每一條指令執(zhí)行的結(jié)尾階段,均查詢是否有中斷請(qǐng)求信號(hào)(這種查詢是由硬件完成的,不占用CPU的工作時(shí)間),若有,則暫停執(zhí)行現(xiàn)行的程序,轉(zhuǎn)去為申請(qǐng)中斷的某個(gè)外設(shè)服務(wù),以完成數(shù)據(jù)傳送。中斷傳送方式的好處是:大大提高了CPU的工作效率。99.2.3直接存儲(chǔ)器存取傳送直接存儲(chǔ)器存取傳送DMA(directmemoryaccess)方式或稱為數(shù)據(jù)通道方式是一種由專門的硬件電路執(zhí)行I/O交換的 傳送方式,它讓外設(shè)接口可直接與 內(nèi)存進(jìn)行高速的數(shù)據(jù)傳送,而不必 經(jīng)過(guò)CPU,可實(shí)現(xiàn)對(duì)存儲(chǔ)器的直接 存取。109.3中斷技術(shù)9.3.1中斷概述1.中斷與中斷源中斷:使CPU暫停運(yùn)行原來(lái)的程序而應(yīng)更為急迫事件的需要轉(zhuǎn)向去執(zhí)行為中斷源服務(wù)的程序(稱為中斷服務(wù)程序),待該程序處理完后,再返回運(yùn)行原程序,此即中斷(或中斷技術(shù))。中斷源,即引起中斷的事件或原因,或發(fā)出中斷申請(qǐng)的來(lái)源。通常中斷源有以下幾種:外部設(shè)備;實(shí)時(shí)時(shí)鐘;故障源。以上3種屬于隨機(jī)中斷源。由隨機(jī)引起的中斷,稱為強(qiáng)迫中斷。還有一種為調(diào)試程序設(shè)置的中斷源。這是指CPU執(zhí)行了特殊指令(自陷指令)或由硬件電路引起的中斷,主要是供用戶調(diào)試程序時(shí)而采取的檢查手段。如斷點(diǎn)設(shè)置、單步調(diào)試等。這些都要由中斷系統(tǒng)實(shí)現(xiàn)。一般稱這種中斷為自愿中斷。119.3.1中斷概述2.中斷系統(tǒng)及其功能中斷系統(tǒng):為實(shí)現(xiàn)中斷而設(shè)置的各種硬件與軟件,包括中斷控制邏輯及相應(yīng)管理中斷的指令。中斷系統(tǒng)具有下列功能:1)能響應(yīng)中斷、處理中斷與返回2)能實(shí)現(xiàn)優(yōu)先權(quán)排隊(duì)3)高級(jí)中斷源能中斷低級(jí)的中斷 處理——中斷嵌套的技術(shù)。129.3.2單個(gè)中斷源的中斷簡(jiǎn)單的中斷過(guò)程應(yīng)包括:中斷請(qǐng)求、中斷響應(yīng)、中斷處理和中斷返回等環(huán)節(jié)。1.中斷源向CPU發(fā)中斷請(qǐng)求信號(hào)的條件中斷源是通過(guò)其接口電路向CPU發(fā)中斷請(qǐng)求信號(hào)的,該信號(hào)能否發(fā)給CPU,應(yīng)滿足下列兩個(gè)條件:1)設(shè)置中斷請(qǐng)求觸發(fā)器2)設(shè)置中斷屏蔽觸發(fā)器139.3.2單個(gè)中斷源的中斷2.CPU響應(yīng)中斷的條件當(dāng)中斷源向CPU發(fā)出INTR信號(hào)后,CPU若要響應(yīng)它,還應(yīng)滿足下列條件。1)CPU開放中斷2)CPU在現(xiàn)行指令結(jié)束后響應(yīng)中斷149.3.2單個(gè)中斷源的中斷3.CPU響應(yīng)中斷及處理過(guò)程1)關(guān)中斷2)保留斷點(diǎn) CPU響應(yīng)中斷后,立即封鎖斷點(diǎn)地址,且把此值壓棧保護(hù),以備在中斷處理完畢后,CPU能返回?cái)帱c(diǎn)處繼續(xù)運(yùn)行主程序。3)保護(hù)現(xiàn)場(chǎng)4)給出中斷入口(地址),轉(zhuǎn)入相應(yīng)的中斷服務(wù)程序8086/8088是由中斷源提供中斷類型號(hào),并根據(jù) 中斷類型號(hào)在中斷向量表中取得中斷服務(wù)程序 的起始地址。5)恢復(fù)現(xiàn)場(chǎng)這個(gè)操作是在中斷服務(wù)程序中用POP指令來(lái)完成的。6)開中斷與返回159.3.3向量中斷向量中斷(VectoredInterrupt),是指通過(guò)中斷向量進(jìn)入中斷服務(wù)程序的一種方法;而中斷向量則是用來(lái)提供中斷入口地址的一個(gè)地址指針(即CS:IP)。例如8086/8088CPU的中斷系統(tǒng)就是采用這種向量中斷。9.3.4中斷優(yōu)先權(quán)在實(shí)際的系統(tǒng)中,具有多個(gè)中斷源,而CPU的可屏蔽中斷請(qǐng)求線往往只有一條。如何解決多個(gè)中斷源同時(shí)請(qǐng)求中斷而只有一根中斷請(qǐng)求線的矛盾呢?這就要求CPU按多個(gè)中斷源的優(yōu)先權(quán)由高至低依次來(lái)響應(yīng)中斷申請(qǐng)。同時(shí),當(dāng)CPU正在處理中斷時(shí),還要能響應(yīng)更高級(jí)的中斷申請(qǐng),而屏蔽掉同級(jí)或低級(jí)的中斷申請(qǐng)。CPU可以通過(guò)軟件查詢技術(shù)或硬件排隊(duì)電路兩種方法來(lái)實(shí)現(xiàn)按中斷優(yōu)先權(quán)對(duì)多個(gè)中斷源的管理,也有專門用于協(xié)助CPU按中斷優(yōu)先權(quán)處理多個(gè)中斷源的中斷控制芯片,如8259A芯片。169.48086/8088的中斷系統(tǒng)和中斷處理9.4.18086/8088的中斷系統(tǒng)8086/8088的中斷系統(tǒng)采用中斷向量結(jié)構(gòu),可以處理多達(dá)256種類型的中斷。179.4.18086/8088的中斷系統(tǒng)1.外部中斷8086/8088CPU有兩條引腳供外部中斷源請(qǐng)求中斷:一條是高電平有效的可屏蔽中斷INTR;另一條是正跳變有效的非屏蔽中斷NMI。1)可屏蔽中斷可屏蔽中斷是由用戶定義的外部硬件中斷。當(dāng)8086/8088CPU的INTR引腳上出現(xiàn)一高電平有效請(qǐng)求信號(hào)時(shí),它必須保持到當(dāng)前指令的結(jié)束。若IF=0(CLI),此時(shí)CPU是處于關(guān)中斷狀態(tài),則不響應(yīng)INTR;若IF=1(STI),則CPU是處于開中斷狀態(tài),將響應(yīng)INTR,并通過(guò)引腳向產(chǎn)生INTR的設(shè)備接口(中斷源)發(fā)回響應(yīng)信號(hào),啟動(dòng)中斷過(guò)程。8086/8088CPU在發(fā)回第2個(gè)中斷響應(yīng)信號(hào)時(shí),將使發(fā)出中斷請(qǐng)求信號(hào)的接口把1字節(jié)的中斷類型號(hào)通過(guò)數(shù)據(jù)總線傳送給CPU。由該中斷類型號(hào)指定了中斷服務(wù)程序入口地址在中斷向量表中的位置。中斷允許標(biāo)志IF位的狀態(tài)可用指令STI使其置位,即開中斷;也可用CLI指令使其復(fù)位,即關(guān)中斷。181.外部中斷2)非屏蔽中斷當(dāng)8086/8088CPU的NMI引腳上出現(xiàn)一上升沿的邊沿觸發(fā)有效請(qǐng)求信號(hào)時(shí),它將由CPU內(nèi)部的鎖存器將其鎖存起來(lái)。8086/8088要求NMI上的請(qǐng)求脈沖的有效寬度(高電平的持續(xù)時(shí)間)大于兩個(gè)時(shí)鐘周期。一旦此中斷請(qǐng)求信號(hào)產(chǎn)生,不管標(biāo)志位IF的狀態(tài)如何,即使在關(guān)中斷(IF=0)的情況下,CPU也能響應(yīng)它。199.4.18086/8088的中斷系統(tǒng)2.內(nèi)部中斷8086/8088的內(nèi)部中斷又叫軟件中斷,它包括以下幾種內(nèi)部中斷:除法出錯(cuò)中斷——類型0;溢出中斷——類型4;單步中斷——類型1;斷點(diǎn)中斷——類型3;用戶定義的軟件中斷——類型n。應(yīng)著重掌握用戶定義的軟件中斷——類型n。它是一個(gè)可由用戶定義的雙字節(jié)的中斷指令I(lǐng)NTn,其第1個(gè)字節(jié)為INT的操作碼,第2個(gè)字節(jié)n是它的中斷類型號(hào)。中斷類型號(hào)n由程序員編程時(shí)給定,用它指出中斷服務(wù)程序的入口地址。203.內(nèi)部中斷的特點(diǎn)1)內(nèi)部中斷由一條INTn指令直接產(chǎn)生。2)除單步中斷以外,所有內(nèi)部中斷都不能被屏蔽。3)所有內(nèi)部中斷都沒有中斷響應(yīng)機(jī)器總線周期。4)8086/8088中斷系統(tǒng)規(guī)定了硬、軟中斷的優(yōu)先級(jí)排隊(duì)。5)作為軟件調(diào)試手段,單步中斷是逐條地跟蹤調(diào)試,而斷點(diǎn)中斷(INT3)是逐段地調(diào)試,它們均可用中斷服務(wù)程序在屏幕上顯示有關(guān)的各種信息。6)為了避開由外設(shè)硬件產(chǎn)生INTR中斷請(qǐng)求信號(hào)和提供中斷類型號(hào)的麻煩,可以用軟件中斷指令I(lǐng)NTnn來(lái)模擬外設(shè)提供的硬件中斷。214.中斷向量表8086/8088中斷系統(tǒng)的中斷向量表中給出了與中斷類型對(duì)應(yīng)的256個(gè)中斷向量,每個(gè)向量包含4個(gè)字節(jié),2個(gè)低地址字節(jié)是IP偏移量, 2個(gè)高地址字節(jié)是CS段地址。用來(lái)存放256 個(gè)向量的中斷向量表需要占用1K字節(jié)的存 儲(chǔ)空間,且設(shè)置在存儲(chǔ)器的最低端(000H ~3FFH)。這樣,每個(gè)中斷都可轉(zhuǎn)到1MB空 間的任何地方。224.中斷向量表當(dāng)CPU響應(yīng)中斷訪問中斷向量表時(shí),外設(shè)通過(guò)接口將一個(gè)8位的中斷類型編碼n放在數(shù)據(jù)總線上,CPU對(duì)編號(hào)n乘以4得到4n指向該中斷向量的首字節(jié);4n和4n+1單元中存放的是中斷向量的偏移地址值,其低字節(jié)在4n地址中,高字節(jié)在4n+1地址中;4n+2和4n+3單元中存放的是中斷 向量的段地址值,也是低 字節(jié)在前,高字節(jié)在后。 實(shí)現(xiàn)中斷轉(zhuǎn)移時(shí),CPU將把 有關(guān)的標(biāo)志位和斷點(diǎn)地址的 CS和IP值入棧,然后通過(guò)中 斷向量間接轉(zhuǎn)入中斷服務(wù)程 序。 中斷處理結(jié)束,用返回指令 彈出斷點(diǎn)地址的IP與CS值以 及標(biāo)志位,然后返回被中斷 的程序。239.4.28086/8088的中斷處理過(guò)程8086/8088的中斷處理過(guò)程259.4.28086/8088的中斷處理過(guò)程(1)所有中斷處理都包括中斷請(qǐng)求、中斷響應(yīng)、中斷處理和中斷返回4個(gè)基本過(guò)程。(2)響應(yīng)順序均按預(yù)先設(shè)計(jì)的中斷優(yōu)先權(quán)來(lái)響應(yīng)。優(yōu)先權(quán)由高到低依次為:內(nèi)部中斷;NMI中斷;INTR中斷;單步中斷。(3)CPU開始響應(yīng)中斷的時(shí)刻,在一般情況下,都要待當(dāng)前指令執(zhí)行完后方可響應(yīng)中斷申請(qǐng)。但有少數(shù)情況是在下一條指令完成之后才響應(yīng)中斷請(qǐng)求。例如,REP(重復(fù)前綴),LOCK(封鎖前綴)和段超越前綴(ES:)等指令都應(yīng)當(dāng)將前綴看作指令的一部分,在執(zhí)行前綴和指令間不允許中斷。段寄存器的傳送指令MOV和段寄存器的彈出指令POP也是一樣,在執(zhí)行下條指令之前都不能響應(yīng)中斷。(4)在WAIT指令和重復(fù)數(shù)據(jù)串操作指令執(zhí)行的過(guò)程中間可以響應(yīng)中斷請(qǐng)求,但必須要等一個(gè)基本操作或一個(gè)等待檢測(cè)周期完成后才能響應(yīng)中斷。(5)由于NMI引腳上的中斷請(qǐng)求是需要立即處理的,所以在進(jìn)入執(zhí)行任何中斷(包括內(nèi)部中斷)服務(wù)程序之前,都要安排測(cè)試NMI引腳上是否有中斷請(qǐng)求,以保證它實(shí)際上有最高的優(yōu)先權(quán)。這時(shí)要為轉(zhuǎn)入執(zhí)行NMI中斷服務(wù)程序而再次保護(hù)現(xiàn)場(chǎng)和斷點(diǎn),并在執(zhí)行完NMI中斷服務(wù)程序后返回到所中斷的服務(wù)程序。269.4.28086/8088的中斷處理過(guò)程(6)若在執(zhí)行某個(gè)中斷服務(wù)時(shí)無(wú)NMI中斷發(fā)生,則接著去查看暫存寄存器TEMP的狀態(tài)。若TEMP=1,則在中斷前CPU已處于單步工作方式,就和NMI一樣重新保護(hù)現(xiàn)場(chǎng)和斷點(diǎn),轉(zhuǎn)入單步中斷服務(wù)程序。若TEMP=0,也就是在中斷前CPU處于非單步工作方式,則這時(shí)CPU將轉(zhuǎn)去執(zhí)行最先引起中斷的中斷服務(wù)程序。(7)待中斷處理程序結(jié)束時(shí),由中斷返回指令將堆棧中存放的IP、CS以及PSW值還原給指令指針I(yè)P、代碼段寄存器CS以及程序狀態(tài)字PSW。

注意:當(dāng)有多個(gè)中斷請(qǐng)求同時(shí)產(chǎn)生時(shí),8086/8088CPU將根據(jù)各中斷源優(yōu)先權(quán)的高低來(lái)處理,首先響應(yīng)優(yōu)先權(quán)較高的中斷請(qǐng)求,等具有較高優(yōu)先權(quán)的中斷請(qǐng)求處理完以后,再去依次響應(yīng)和處理其他中斷申請(qǐng)。279.4.3可屏蔽中斷的過(guò)程1.INTR中斷的全過(guò)程圖中所示的是可屏蔽中斷從中斷發(fā)生到中斷 服務(wù)結(jié)束并返回的整個(gè)操作過(guò)程。CPU響應(yīng)NMI或內(nèi)部中斷請(qǐng)求時(shí)的操作順序 基本上與上述過(guò)程相同,只是不需要前3步 操作和讀取中斷類型碼。一旦CPU接到NMI 引腳上的中斷請(qǐng)求或內(nèi)部中斷請(qǐng)求時(shí),CPU 就會(huì)自動(dòng)地轉(zhuǎn)向它們各自的中斷服務(wù)程序。289.4.3可屏蔽中斷的過(guò)程2.中斷類型號(hào)的獲得獲得中斷類型號(hào)有3個(gè)途徑:(1)除法錯(cuò)誤,單步中斷,非屏蔽中斷,斷點(diǎn)中斷和溢出中斷分別由CPU芯片內(nèi)的硬件自動(dòng)提供類型號(hào)0~4。(2)軟件中斷則是從INTn指令流中,即在第2個(gè)字節(jié)中讀得中斷類型號(hào)n。(3)外部中斷INTR可以用不同的方法獲得中斷類型號(hào)。例如,在PC系列微機(jī)中,可以由Intel8259A芯片或集成了8259A的超大規(guī)模集成外圍芯片來(lái)提供中斷類型號(hào)。299.4.4中斷響應(yīng)時(shí)序了解中斷響應(yīng)時(shí)序的組成以及中斷類型號(hào)的獲取方法與時(shí)間。309.5可編程中斷控制器8259A9.5.18259A的引腳與功能結(jié)構(gòu)8259A是一個(gè)28引腳的雙列直插式芯片。要了解引腳的功能,較好地理解CAS0~CAS2這3根級(jí)聯(lián)控制信號(hào)。319.5.28259A內(nèi)部結(jié)構(gòu)框圖和中斷工作過(guò)程1.8259A內(nèi)部結(jié)構(gòu)框圖8259A中斷控制器包括8個(gè)主要功能部件,其內(nèi)部結(jié)構(gòu)框圖如圖所示。8259A內(nèi)部除上述幾個(gè)處理8級(jí)中斷請(qǐng)求(IR0~I(xiàn)R7)的功能部件IRR、ISR與PR之外,還有一組用于寄存控制命令字的8位寄存器。329.5.28259A內(nèi)部結(jié)構(gòu)框圖和中斷工作過(guò)程2.8259A的中斷工作過(guò)程8259A的8個(gè)功能部件組成一個(gè)有機(jī)的整體,共同協(xié)調(diào)處理其中斷工作過(guò)程。難點(diǎn):當(dāng)CPU對(duì)某個(gè)中斷請(qǐng)求做出的中斷響應(yīng)結(jié)束后,8259A將如何根據(jù)一個(gè)名為方式控制器的結(jié)束方式位的不同設(shè)置,在不同時(shí)刻將ISR中置1“的中斷請(qǐng)求位復(fù)“0”。實(shí)際情況是:在自動(dòng)結(jié)束中斷(AEOI)方式下,8259A會(huì)將ISR中原來(lái)在第1個(gè)負(fù)脈沖到來(lái)時(shí)設(shè)置的“1”(即響應(yīng)此中斷請(qǐng)求位)在第2個(gè)脈沖結(jié)束時(shí),自行復(fù)位成“0”。若是非自動(dòng)結(jié)束中斷方式(EOI),則ISR中該位的“1”狀態(tài)將一直保持到中斷過(guò)程結(jié)束,由CPU發(fā)EOI命令才能復(fù)位成“0”。8級(jí)中斷請(qǐng)求信號(hào)所對(duì)應(yīng)的中斷類型碼(或中斷向量)規(guī)定:其前5位T7~T3由用戶在8259A初始化編程時(shí)選擇的,后3位則由8259A自動(dòng)插入的。339.5.38259A的控制字格式8259A的中斷處理功能和各種工作方式,都是通過(guò)編程設(shè)置的。即對(duì)8259A內(nèi)部有關(guān)寄存器寫入控制命令字來(lái)實(shí)現(xiàn)控制的。按照控制字功能及設(shè)置的要求不同,可分為兩種 類型的命令字:(1)初始化命令字ICW:ICW1~I(xiàn)CW4,它們必須在 初始化時(shí)分別寫入4個(gè)相應(yīng)的寄存器。并且,一旦 寫入,一般在系統(tǒng)運(yùn)行過(guò)程中就不再改變。(2)工作方式命令字或操作命令字OCW:OCW1~OCW3, 它們必須在設(shè)置初始化命令后方能分別寫入3個(gè)相應(yīng) 的寄存器。它們用來(lái)對(duì)中斷處理過(guò)程進(jìn)行動(dòng)態(tài)的操作 與控制。在一個(gè)系統(tǒng)運(yùn)行過(guò)程中,操作命令字可以 被多次設(shè)置。341.初始化命令字1)ICW1ICW1叫芯片控制初始化命令字,用于啟動(dòng)8259A中的初始化順序。該字寫入8位的芯片控制寄存器。寫ICW1的標(biāo)記為:A0=0,D4=1。351.初始化命令字2)ICW2ICW2是設(shè)置中斷類型碼的初始化命令字。該字寫入8位的中斷類型寄存器。寫ICW2的標(biāo)記為:A0=1。361.初始化命令字3)ICW3ICW3是標(biāo)志主片/從片的初始化命令字,該字寫入8位的主/從標(biāo)志寄存器,它只用于級(jí)聯(lián)方式。寫ICW3的標(biāo)記為:A0=1。371.初始化命令字3)ICW3在IBMPC/XT機(jī)中,僅用1片8259A,能提供8級(jí)中斷請(qǐng)求。在IBMPC/AT機(jī)中用2片8259A組成級(jí)聯(lián)方式,最多可以提供15級(jí)中斷請(qǐng)求。381.初始化命令字4)ICW4ICW4叫方式控制初始化命令字。該字寫入8位的方式控制寄存器。寫ICW4控制字標(biāo)記為:A0=1。392.操作命令字當(dāng)8259A經(jīng)預(yù)置ICWi后已進(jìn)入初始化狀態(tài),便可接收來(lái)IRi端的中斷請(qǐng)求。然后自動(dòng)進(jìn)入操作命令狀態(tài),準(zhǔn)備接收由CPU寫入8259A的操作命令字OCWi。1)OCW1寫OCW1的標(biāo)記為:A0=1。OCW1用來(lái)寫入IMR寄存器。402.操作命令字2)OCW2OCW2是用來(lái)設(shè)置中斷優(yōu)先級(jí)循環(huán)方式和中斷結(jié)束方式的操作命令字。寫OCW2的標(biāo)記為:A0=0、D3=D4=041OCW2的編碼

及功能說(shuō)明2.操作命令字3)OCW3OCW3叫多功能操作命令字。寫OCW3的標(biāo)記為:A0=0、D7=D4=0、D2=1。該命令字有3項(xiàng)功能:一是設(shè)置和撤消特殊屏蔽方式;二是設(shè)置中斷查詢方式;三是設(shè)置對(duì)8259A內(nèi)部寄存器的讀出命令。439.5.48259A應(yīng)用舉例在IBMPC/XT機(jī)中,只采用了1片8259A中斷控制器來(lái)提供8級(jí)中斷請(qǐng)求,其中IR0優(yōu)先級(jí)最高,IR7優(yōu)先級(jí)最低。它們分別用于日歷時(shí)鐘中斷、鍵盤中斷、保留、網(wǎng)絡(luò)通信、異步通信中斷、硬盤中斷、軟盤中斷及打印機(jī)中斷。8259A片選地址設(shè)定為20H、21H。

1.初始化MOV AL,13H ;寫ICW1,單片,邊沿觸發(fā),要ICW4OUT 20H,ALMOV AL,8 ;寫ICW2,中斷類型號(hào)從8開始OUT 21H,ALMOV AL,0DH ;寫ICW4,緩沖工作方式,8088/8086配置OUT 21H,ALMOV AL,0 ;寫OCW1,允許IR0~I(xiàn)R7全部8級(jí)中斷請(qǐng)求OUT 21H,AL442.送中斷向量入口地址例如,異步通信中斷IR4,其中斷向量類型號(hào)為8+4=12(0CH),則中斷入口地址的偏移量(IP值)與段地址(CS)在入口地址表中的存放地址為12×4=48(30H),49(31H),50(32H),51(33H)。其中30H、31H存放指令指針I(yè)P;32H,33H存放指令段碼CS。3.中斷子程序結(jié)束由于8259A采用中斷工作方式,且ICW4中的D1位(即AEOI)為0,這意味著采用正常結(jié)束中斷,因此,在中斷子程序結(jié)束前必須發(fā)EOI命令和IRET命令。MOV AL,20H ;寫OCW2命令,使ISR相應(yīng)位復(fù)位(即發(fā)EOI命令)。OUT 20H,ALIRET ;開放中斷允許,并從中斷返回4.中斷嵌套為了使中斷嵌套,即在中斷響應(yīng)過(guò)程中,允許比本中斷優(yōu)先級(jí)高的中斷進(jìn)入,只要在進(jìn)入中斷處理程序后,執(zhí)行開中斷指令STI即可達(dá)到此目的。9.5.48259A應(yīng)用舉例459.6計(jì)數(shù)/定時(shí)控制技術(shù)在微機(jī)應(yīng)用中,一般常用可編程計(jì)數(shù)器/定時(shí)器8253-5來(lái)進(jìn)行計(jì)數(shù)/定時(shí)控制。9.6.18253-5的引腳與功能結(jié)構(gòu)8253-5是一種24腳封裝的雙列直插式芯片。功能:計(jì)數(shù)與定時(shí),兩者的工作原理在實(shí)質(zhì)上是一樣的,都是利用計(jì)數(shù)器作減1計(jì)數(shù),減至0發(fā)信號(hào);兩者的差別只是用途不同。469.6.2 8253-5的內(nèi)部結(jié)構(gòu)和尋址方式1.內(nèi)部結(jié)構(gòu)8253-5的內(nèi)部結(jié)構(gòu)如圖所示。它有3個(gè)獨(dú)立結(jié)構(gòu)完全相同的16位計(jì)數(shù)器和1個(gè)8位控制字寄存器。472.尋址方式8253-5的尋址與相應(yīng)操作489.6.38253-5的6種工作方式及時(shí)序關(guān)系8253-5的各計(jì)數(shù)器都有6種可供選擇的工作方式,以完成定時(shí)、計(jì)數(shù)或脈沖發(fā)生器等多種功能。491.方式0計(jì)數(shù)結(jié)束產(chǎn)生中斷8253-5方式0有以下特點(diǎn):(1)當(dāng)寫入控制字后,OUT端輸出低電平作為起始電平,在有兩個(gè)負(fù)脈沖寬度的信號(hào)的上升沿將初值寫入初值寄存器CR, 待計(jì)數(shù)初值裝入計(jì)數(shù)器后,輸出仍 保持低電平。(2)GATE為計(jì)數(shù)控制門。(3)計(jì)數(shù)過(guò)程中可重新裝入計(jì)數(shù)初值。8253-5利用方式0既可計(jì)數(shù),也可定時(shí)。502.方式1可編程單穩(wěn)觸發(fā)器8253-5方式1有以下特點(diǎn):(1)當(dāng)寫入控制字后,OUT端將輸出高電平作為起始電平。(2)工作時(shí),由GATE輸入觸發(fā)脈沖的上升沿使OUT變?yōu)榈碗娖?,每?lái)一個(gè)計(jì)數(shù)脈沖,計(jì)數(shù)器作減1計(jì)數(shù),當(dāng)計(jì)數(shù)值減為0時(shí),OUT再變?yōu)楦唠娖?。?)如果在計(jì)數(shù)器未減到0時(shí),門控端GATE 又來(lái)一個(gè)觸發(fā)脈沖,則由下一個(gè)時(shí)鐘脈沖開 始,計(jì)數(shù)器將從原有的初始值(n=4)重新作 減1計(jì)數(shù)。當(dāng)減至0時(shí),輸出端又變?yōu)楦唠娖健?這樣,使輸出脈沖寬度延長(zhǎng)。(4)若在計(jì)數(shù)過(guò)程中,又寫入一個(gè)新的計(jì)數(shù) 初值,它并不影響本次計(jì)數(shù)過(guò)程,輸出也 不變。只是在下一次觸發(fā)時(shí),計(jì)數(shù)器按新的 輸入初值重新計(jì)數(shù)。513.方式2分頻器(又叫分頻脈沖產(chǎn)生器)方式2是n分頻計(jì)數(shù)器,n是寫入計(jì)數(shù)器的初值。當(dāng)計(jì)數(shù)器的控制寄存器寫入控制字后,OUT端輸出高電平作為起始電平。當(dāng)計(jì)數(shù)初值(圖中給出了兩個(gè)初值即n=4或n=3)在信號(hào)的上升沿寫入計(jì)數(shù)器后,從下一個(gè)時(shí)鐘脈沖起,計(jì)數(shù)器開始作減1計(jì)數(shù)。當(dāng)減到1(而不是減 到0)時(shí),OUT端輸出將變?yōu)榈碗娖健.?dāng) 計(jì)數(shù)端CLK輸入n個(gè)計(jì)數(shù)脈沖后,在輸出 端OUT輸出一個(gè)n分頻脈沖,其正脈沖寬 度為(n-1)個(gè)輸入脈沖時(shí)鐘周期,而 負(fù)脈沖寬度只是一個(gè)輸入脈沖時(shí)鐘周期。 GATE用來(lái)控制計(jì)數(shù),GATE=1,允許計(jì)數(shù); GATE=0,停止計(jì)數(shù)。注意:在方式2下,不但高電平的 門控信號(hào)有效,上升跳變的門控信號(hào) 也是有效的。524.方式3方波頻率發(fā)生器方式3類似于方式2,也有兩種啟動(dòng)方式,并具有自動(dòng)裝入計(jì)數(shù)初值的功能,但輸出的波形為方波或者為近似對(duì)稱的矩形波。注意:如果在計(jì)數(shù)過(guò)程中,GATE變?yōu)榈碗娖?,則暫停減1計(jì)數(shù),直到GATE再次表為高電平有效,重新從初值n開始減1計(jì)數(shù)。535.方式4軟件觸發(fā)選通脈沖按方式4工作時(shí),計(jì)數(shù)器寫入控制字后,輸出的OUT信號(hào)變?yōu)楦唠娖?。?dāng)由軟件觸發(fā)寫入初始值n(此例中n=4)經(jīng)過(guò)1個(gè)時(shí)鐘周期后,若GATE=1,允許計(jì)數(shù),則計(jì)數(shù)器在一個(gè)時(shí)鐘脈沖之后開始作減1計(jì)數(shù),當(dāng)計(jì)數(shù)器減到0時(shí),在OUT端輸出一個(gè)寬度等于一個(gè)計(jì)數(shù)脈沖周期的負(fù)脈沖。若GATE=0,則停止計(jì)數(shù),n保持為4;只有在GATE恢復(fù)高電平之后才重新計(jì)數(shù),即由n=4開始減1計(jì)數(shù),直至減至0才發(fā)出一個(gè)選通負(fù)脈沖。注意:方式4是通過(guò)軟件寫入新的計(jì)數(shù)值來(lái)使計(jì)數(shù)器重新工作的,故稱為軟件觸發(fā)選通脈沖方式。546.方式5硬件觸發(fā)選通脈沖方式5類似于方式4,所不同的是GATE端輸入信號(hào)的作用不同。按方式5工作時(shí),由GATE輸入觸發(fā)脈沖,從其上升沿開始,計(jì)數(shù)器作減1計(jì)數(shù),計(jì)數(shù)結(jié)束時(shí),在OUT端輸出一個(gè)寬度等于一個(gè)計(jì)數(shù)脈沖周期的負(fù)脈沖。在此方式中,計(jì)數(shù)器可重新觸發(fā)。在任何時(shí)刻,當(dāng)GATE觸發(fā)脈沖上升沿到來(lái)時(shí),將把計(jì)數(shù)初值重新送入計(jì)數(shù)器,然后開始計(jì)數(shù)過(guò)程。注意:方式5的選通負(fù)脈沖是通過(guò)硬件電路產(chǎn)生的門控信號(hào)GATE上升沿觸發(fā)后得到的,故稱為硬件觸發(fā)選通脈沖方式。559.6.48253應(yīng)用舉例在IBMPC/XT機(jī)中,8253-5是CPU外圍支持電路之一,為系統(tǒng)電子鐘提供時(shí)間基準(zhǔn),為動(dòng)態(tài)RAM刷新提供定時(shí)信號(hào)以及作為揚(yáng)聲器的聲源等功能。從圖可知,8253-5芯片的3個(gè)計(jì)數(shù)器使用相同的時(shí)鐘脈沖。CLK0~CLK2的頻率是PCLK(2.38MHz)的1/2,即1.19MHz,這由U22分頻實(shí)現(xiàn)。8253-5的3個(gè)計(jì)數(shù)器端口地址為:40H、41H、42H??刂萍拇嫫鞫丝诘刂窞?3H。563個(gè)計(jì)數(shù)器的用途1)計(jì)數(shù)器0向系統(tǒng)日歷時(shí)鐘提供定時(shí)中斷,選用方式3工作,控制字為36H。計(jì)數(shù)器值預(yù)置為0(即65536),GATE0接+5V,允許計(jì)數(shù)。OUT0輸出時(shí)鐘頻率為1.19MHz/65536=18.21Hz。它直接接到中斷控制器8259A的中斷請(qǐng)求端IR0,即0級(jí)中斷,每秒出現(xiàn)18.2次。每間隔55ms產(chǎn)生一次0級(jí)中斷請(qǐng)求。每一個(gè)輸出脈沖均以其正跳變產(chǎn)生一次中斷。2)計(jì)數(shù)器1向DMA控制器定時(shí)發(fā)動(dòng)態(tài)存儲(chǔ)器刷新請(qǐng)求,選用方式2工作,控制字為54H。計(jì)數(shù)器初始值為18,GATE1接+5V,允許計(jì)數(shù)。OUT1輸出分頻脈沖頻率為1.19MHz/18=66.1KHz,相當(dāng)于周期為15.1μS。計(jì)數(shù)器1每隔15.1μs經(jīng)由U21產(chǎn)生一個(gè)動(dòng)態(tài)RAM刷新的請(qǐng)求信號(hào)DRQ0。3)計(jì)數(shù)器2控制喇叭發(fā)聲音調(diào),用方式3工作,控制字為B6H,計(jì)數(shù)器的初值置533H(即1331),OUT2輸出方波頻率為1.19MHz/1331=894Hz。該計(jì)數(shù)器的工作由主機(jī)板8255A的PB0端控制。當(dāng)PB0輸出的TIME2GATESPK為高電平時(shí),計(jì)數(shù)器方能工作。OUT2的輸出與8255APB1端產(chǎn)生的喇叭音響信號(hào)SPKRDATA在U87相與后送到功放驅(qū)動(dòng)芯片75477的輸入端A。57本章小結(jié)輸入/輸出接口是微處理器同外部設(shè)備之間信息交換的重要樞紐。CPU對(duì)外設(shè)的I/O操作類似于存儲(chǔ)器的讀/寫操作。主存儲(chǔ)器可以與CPU直接連接,而I/O設(shè)備則需要經(jīng)過(guò)接口電路(即I/O適配器)與CPU連接。接口電路的基本結(jié)構(gòu)同它傳送的信息種類有關(guān)。CPU與外設(shè)之間數(shù)據(jù)傳送的方式有程序傳送、中斷傳送和DMA傳送3種方式。其中,中斷是控制異步數(shù)據(jù)傳送的一種軟硬件相結(jié)合的關(guān)鍵技術(shù),可以看成是由中斷源引起(即硬件隨機(jī)激發(fā)或軟件激發(fā))的一次過(guò)程調(diào)用。所有中斷過(guò)程都是由中斷系統(tǒng)實(shí)現(xiàn)的。中斷系統(tǒng)應(yīng)能響應(yīng)中斷、處理中斷與返回;還能能實(shí)現(xiàn)優(yōu)先權(quán)排隊(duì);并且能夠?qū)崿F(xiàn)中斷嵌套。8086/8088的中斷系統(tǒng)采用中斷向量結(jié)構(gòu),使每個(gè)不同的中斷都可以通過(guò)給定一個(gè)特定的中斷類型號(hào)(或中斷類型碼)供CPU識(shí)別,來(lái)處理多達(dá)256種類型的中斷。這些中斷可以來(lái)自外部,即由硬件產(chǎn)生,也可以來(lái)自內(nèi)部,即由軟件(中斷指令)產(chǎn)生,或者滿足某些特定條件(陷阱)后引發(fā)CPU中斷。8086/8088CPU有可屏蔽中斷INTR與非屏蔽中斷NMI兩條引腳來(lái)接受外部硬件中斷請(qǐng)求??善帘沃袛嘁軜?biāo)志寄存器的中斷允許標(biāo)志位IF的控制,而非屏蔽中斷不受標(biāo)志寄存器的中斷允許標(biāo)志位IF的控制。8086/8088CPU內(nèi)部中斷又叫軟件中斷,它包括除法出錯(cuò)中斷(類型0)、溢出中斷(類型4)、單步中斷(類型1)與斷點(diǎn)中斷(類型3);還有用戶定義的軟件中斷(類型n)。58本章小結(jié)8086/8088CPU中斷處理的過(guò)程比較復(fù)雜。首先要掌握單個(gè)中斷

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論