第七章-常用接口芯片_第1頁
第七章-常用接口芯片_第2頁
第七章-常用接口芯片_第3頁
第七章-常用接口芯片_第4頁
第七章-常用接口芯片_第5頁
已閱讀5頁,還剩71頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、主 要 內(nèi) 容可編程并行接口芯片8255A計(jì)數(shù)/定時(shí)器8253可編程中斷控制器82597.1可編程并行接口芯片8255A 并行輸入/輸出是在CPU與外設(shè)之間同時(shí)把若干個(gè)二進(jìn)制位信息進(jìn)行傳送的數(shù)據(jù)傳輸方式。優(yōu)點(diǎn):傳輸速度快、效率高。缺點(diǎn):傳輸需用的信號(hào)線較多。適用于傳輸效率高而傳輸距離相對(duì)較短的場(chǎng)合。1、8255A的引腳與結(jié)構(gòu)A組8255A123456789PA3GNDPA4VCC8255AA口A0RESET848PA1PA0RDCSA1A0PC7PC6PC5PC4PC0PC1PC2PC3PB0PB1PB2PA2101112131415161718192025242322212627282930

2、31323334353738394036PA5PA6PA7RESETD0D1D2D3D4D5D6PB7PB6PB5PB4PB3D7WR(a)C口C口B口(b)PA7PA0D7D0PC7PC4PC3PC04PB7PB0B組WRRDA1CS 三個(gè)8位并行端口(A、B、C);8位三態(tài)數(shù)據(jù)線;地址信號(hào)A1A0經(jīng)譯碼對(duì)應(yīng)A、B、C三個(gè)獨(dú)立的數(shù)據(jù)端口以及一個(gè)公共的控制端口;CS;RESET2、8255A的內(nèi)部結(jié)構(gòu)內(nèi)部DB(8)數(shù)據(jù)總線緩沖器讀/寫控制邏輯RESETA0A組端口A(8)A組端口C(高4位)B組端口C(低4位)B組端口B(8)A組控制部件PA7PA0PC7PC4PC3PC0PB7PB0D7D0

3、CSA1RDWRB組控制部件1)端口A、B、C都是8位端口,當(dāng)端口A和端口B作為選通輸入或輸出的數(shù)據(jù)端口時(shí),端口C的指定位與端口A和端口B配合使用,用作控制信號(hào)或狀態(tài)信號(hào)。2)A組和B組控制電路根據(jù)CPU送來的工作方式控制字控制8255工作方式輸入數(shù)據(jù)、輸出數(shù)據(jù)、CPU發(fā)給8255的控制字通過它來傳送負(fù)責(zé)管理8255A與CPU之間的數(shù)據(jù)傳送過程A1A0操 作01000寫端口A01001寫端口B01010寫端口C01011寫控制寄存器00100讀端口A00101讀端口B00110讀端口C00111無操作8255A各端口讀/寫操作時(shí)的信號(hào)關(guān)系 二、8255A的工作方式和控制字1、8255A的工作方

4、式方式0方式1方式2基本輸入輸出方式,即無須聯(lián)絡(luò)就可以直接進(jìn)行8255A與外設(shè)之間的數(shù)據(jù)輸入或輸出操作。A口、B口、C口的高4位和低4位均可設(shè)置為方式0。選通輸入輸出方式,此時(shí)8255A的A口和B口與外設(shè)之間進(jìn)行輸入或輸出操作時(shí),需要C口的部分I/O線提供聯(lián)絡(luò)信號(hào)。只有A口和B口可工作于方式1。選通雙向輸入輸出方式,即同一端口的I/O線既可以輸入也可以輸出,只有A口可工作于方式2。此種方式下需要C口的部分I/O線提供聯(lián)絡(luò)信號(hào)。8255A在工作之前必須先寫方式控制字,指定A、B、C三個(gè)端口各自的工作方式2、8255A的控制字1)工作方式選擇控制字A口有三種工作方式B口有兩種工作方式C口只能工作在

5、方式0必須為1在端口A工作于方式1或方式2,端口B工作于方式1時(shí),C口部分I/O線被定義為8255A與外設(shè)之間進(jìn)行數(shù)據(jù)傳送的聯(lián)絡(luò)信號(hào)線,此時(shí),C口剩下的I/O線仍工作于方式0,是輸入還是輸出由方式控制字的D0和D3位決定2)C口按位置位/復(fù)位控制字無關(guān)D70D6D5D4D3D2D1D0C口按位置位/復(fù)位控制字的特征位選擇位置位/復(fù)位1置位0復(fù)位編碼 選擇位0 0 0 PC00 0 1 PC10 1 0 PC20 1 1 PC31 0 0 PC41 0 1 PC51 1 0 PC61 1 1 PC7要使端口C的PC4置位的控制字為00001001B(09H)要使端口C的PC4復(fù)位的控制字為000

6、01000B(08H) C口的按位置位/復(fù)位控制字必須跟在方式選擇控制字之后寫入控制字寄存器,即使僅使用該功能,也應(yīng)先選送一個(gè)方式控制字。方式選擇控制字只需寫入一次,之后就可多次使用C口按位置位/復(fù)位控制字對(duì)C口的某些位進(jìn)行置1或清0操作。三、各種工作方式的功能1、方式0基本輸入輸出方式無需聯(lián)絡(luò)就可以直接進(jìn)行8255A與外設(shè)之間的數(shù)據(jù)輸入/輸出操作。適用于輸入/輸出設(shè)備始終處于準(zhǔn)備好狀態(tài)的場(chǎng)合A口、B口、C口的高四位和低四位可以分別設(shè)置為輸入/輸出數(shù)據(jù)從外設(shè)送往8255A時(shí)為輸入數(shù)據(jù)從8255A送往外設(shè)時(shí)為輸出 方式0也可以用于查詢法誰的輸入/輸出接口電路。如圖所示在向輸出設(shè)備送數(shù)據(jù)前,先通過

7、PC7查詢?cè)O(shè)備狀態(tài),若設(shè)備準(zhǔn)備好則從A口送出數(shù)據(jù),然后通過PC1發(fā)選通信號(hào)使輸出設(shè)備接收數(shù)據(jù)。從輸入設(shè)備取數(shù)據(jù)前,先通過PC6查詢?cè)O(shè)備狀態(tài),設(shè)備準(zhǔn)備好后,再從B口讀入數(shù)據(jù),然后通過PC0發(fā)清除信號(hào),以便輸入后續(xù)字節(jié)。C口聯(lián)絡(luò)線用戶可自行定義只能用于查詢例題:如圖所示,設(shè)8255A端口A工作在方式0下,通過A口輸出數(shù)據(jù)控制8個(gè)指示燈輪流點(diǎn)亮。設(shè)8255A端口的地址為04A0H 04A6H試給出實(shí)現(xiàn)程序。 MOV DX,04A6H ;控制口地址送DX MOV AL,80H ;寫工作方式控制字,方式0輸出 OUT DX,AL MOV DX,04A0H ; A端口地址送DX MOV AL,0FE ;低

8、電平燈亮AA1: OUT DX,AL ; 輸出數(shù)據(jù) CALL DELAY ; 延時(shí) ROL AL,1 ;輪流點(diǎn)亮 JMP AA1delay proc near push ax; mov ah,100 mov al,0 push cx mov cx,ax loop $ pop cx pop ax retdelay endp2、方式1選通輸入輸出方式必須在聯(lián)絡(luò)信號(hào)控制下才能完成I/O操作C口的某些I/O線已經(jīng)被定義好1)A口和B口均為輸入P253PC5PC4PA7PA0(PC4)INTEAIBFAINTRAI/OA口D7ASTBPC3PC7, PC6&RD10111/0D6D5D4D3D2D1D0

9、A組工作方式控制字(A口工作于方式1輸入;PC5PC3用于A口的聯(lián)絡(luò)信號(hào);PC7和PC6工作于方式0,D3位決定是輸入還是輸出)PC1PC2PB7PB0(PC2)INTEBIBFBINTRBB口BSTBPC0&RDD7111D6D5D4D3D2D1D0B組工作方式控制字(B口工作于方式1輸入;PC2PC0用于B口的聯(lián)絡(luò)信號(hào))STB(Strobe):選通信號(hào),輸入,低電平有效。當(dāng)STB有效時(shí),允許外設(shè)數(shù)據(jù)進(jìn)入端口A或端口B的 輸入數(shù)據(jù)緩沖器。STBA接PC4,STBB接PC2。IBF(Input Buffer Full):輸入緩沖器滿信號(hào),輸出,高電平有效。當(dāng)IBF有效時(shí),表示當(dāng)前已有一個(gè)新數(shù)據(jù)

10、進(jìn)入端 口A或端口B緩沖器,尚未被CPU取走,外設(shè)不能送新的數(shù)據(jù)。一旦CPU完成數(shù)據(jù)讀入操 作后,IBF便復(fù)位(變 為低電平)。INTE(Interrupt Enable):中斷允許信號(hào),高電平有效。它是8255A內(nèi)部控制8255A是否發(fā)出中斷請(qǐng)求信號(hào)(INTR) 的控制信號(hào)。這是由軟件通過對(duì)C口的置位或復(fù)位來實(shí)現(xiàn)對(duì)中斷請(qǐng)求的允許或禁止的。端口A的中斷請(qǐng)求 INTRA可通過對(duì)PC4的置位或復(fù)位加以控制:PC4置1,允許INTRA工作;PC4清0,則屏蔽INTRA。端口B 的中斷請(qǐng)求INTRB可通過對(duì)PC2的置位或復(fù)位加以控制。INTR(Interrupt Request):中斷請(qǐng)求信號(hào),輸出,

11、高電平有效。在中斷允許信號(hào)INTE=1且IBF=1的條件下,由STB 信號(hào)的后沿(上升沿)產(chǎn)生,該信號(hào)可接至中斷管理器8259A作中斷請(qǐng)求。它表明數(shù)據(jù)端口已輸入一個(gè)新數(shù)據(jù)。 若CPU響應(yīng)此中斷請(qǐng)求,則讀入數(shù)據(jù)端口的數(shù)據(jù),并由RD信號(hào)的下降沿使INTR復(fù)位(變?yōu)榈碗娖?。2)A口和B口均為輸出PC7PC6PA7PA0(PC6)INTEAINTRAI/OA口D7AACKPC3PC4, PC5&PC1PC2PB7PB0(PC2)INTEBINTRBB口PC0&WR10101/0D6D5D4D7110D6D5D4D3D2D1D0D3D2D1D0AOBFWRBACKBOBFA組工作方式控制字(A口工作于

12、方式1輸出;PC7、PC6和PC3用于A口的聯(lián)絡(luò)信號(hào);PC5和PC4工作于方式0)B組工作方式控制字(B口工作于方式1輸出;PC2PC0用于B口的聯(lián)絡(luò)信號(hào))OBF(Output Buffer Full):輸出緩沖器滿信號(hào),輸出,低電平有效。當(dāng)CPU把數(shù)據(jù)寫入端口A或B的輸出緩沖器 時(shí),寫信號(hào)WR的上升沿把OBF置成低電平,通知外設(shè)到端口A或B來取走數(shù)據(jù),當(dāng)外設(shè)取走數(shù)據(jù)時(shí)8255A 發(fā)應(yīng)答信號(hào)ACK,ACK的下降沿使OBF恢復(fù)為高電平。ACK(Acknowledge):外設(shè)應(yīng)答信號(hào),輸入,低電平有效。ACK有效時(shí)表示CPU輸出到8255A的數(shù)據(jù)已被外設(shè)取走。INTE(Interrupt Enab

13、le):中斷允許信號(hào),與方式1輸入類似,端口A的輸出中斷請(qǐng)求INTRA可以通過對(duì)PC6的置位 或復(fù)位來加以允許或禁止。端口B的輸出中斷請(qǐng)求信號(hào)INTRB可以通過對(duì)PC2的置位或復(fù)位來加以允許或禁止。INTR(Interrupt Request):中斷請(qǐng)求信號(hào),輸出,高電平有效。該信號(hào)由ACK的后沿(上升沿)在INTE=1且OBF=1 的條件下產(chǎn)生,該信號(hào)使8255A向CPU發(fā)出中斷請(qǐng)求。若CPU響應(yīng)此中斷請(qǐng)求,則向數(shù)據(jù)口寫入一新的數(shù)據(jù), 寫信號(hào)WR上升沿(后沿)使INTR復(fù)位,變?yōu)榈碗娖健?)混合輸入與輸出B口輸出PA7PA0D7110D6D5D40111/0D3D2D1D0ASTB8255A

14、PC4IBFAI/OA口輸入工作方式控制字PC5PC3INTRAPB7PB0PC2PC1PC0PC6,PC7BOBFBACKINTRBRDWRB口輸入PA7PA0D7111D6D5D40101/0D3D2D1D0AOBF8255APC7I/OA口輸出工作方式控制字PC6PC3INTRAPB7PB0PC2PC1PC0PC4,PC5BSTBINTRBRDWRAACKIBFB3、方式2選通雙向輸入輸出方式IBFI/OINTR(PC6)1PC3PA7PA0&PC7PC6INTE1(PC4)INTE2PC4PC5&PC2PC0ACKOBFSTBRDWRD711/01/01/011/0工作方式控制字D6D

15、5D4D3D2D1D0輸出的中斷允許信號(hào)輸入的中斷允許信號(hào)可以作為B口工作方式1時(shí)的聯(lián)絡(luò)線,也可以獨(dú)立工作于方式0四、8255A的應(yīng)用舉例8255A初始化編程。設(shè)8255A的A口工作方式1輸出,B口工作方式1輸入,PC4和PC5輸入,禁止B口中斷。設(shè)片選信號(hào)CS由A9A2=10000000確定。試編寫程序?qū)?255A進(jìn)行初始化。INTR外設(shè) I/OIBFBRDWR8255AA0INTRA(PC3)IORIOW譯碼A2A9PA7PA0PC7PC6PC3PB7PB0PC2PC1PC4, PC5AOBFAACKBSTBD7D0A0A1A1CS控制字特征位D7111011工作方式控制字D6D5D4D3

16、D2D1D00A口方式1A口輸出PC4, PC5輸入B口輸入任意B口方式1MOVAL,10101110B;控制字送ALMOVDX,1000000011B;8255A控制字寄存器地址送DX,A9A2,A1A0OUTDX,AL;控制字送8255A的控制寄存器MOVAL,00001101B;PC6置1,允許A口中斷OUTDX,ALMOVAL,00000100B;PC2置0,禁止B口中斷(P334)OUTDX,AL 練習(xí):設(shè)8255A端口的地址為0D0H 0A6H,若系統(tǒng)要求8255A的A口為方式1輸出,B口為方式0輸入,C口高四位為輸出,低四位為輸入,且要求對(duì)C口PC5置位,試完成對(duì)8255A的初始

17、化。方式選擇控制字方式控制字的特征位D7A口方式1 1D6D5D4D3D2D1D0A口輸出A組PC7PC4輸出B口方式0B口輸入B組PC3PC0輸入0100011無關(guān)D70D6D5D4D3D2D1D0C口按位置位/復(fù)位控制字的特征位1置位 編碼 選擇位1 0 1 PC51101初始化程序:MOVAL,0A3HOUT0D6H,AL ;送方式控制字MOV AL,0BHOUT 0D6H,AL ;送對(duì)C口置位/復(fù)位控制字(到控制寄存器中)1、如下圖所示,8255的PA口與8個(gè)發(fā)光二極管相連接,PB口與8個(gè)DIP開關(guān)相連接。(1)請(qǐng)編寫初始化程序段,并編程序段以查詢方式實(shí)現(xiàn)以下功能:當(dāng)8個(gè)DIP開關(guān)中某

18、個(gè)按鍵閉合,則PA口對(duì)應(yīng)號(hào)碼的發(fā)光二極管被點(diǎn)亮。(不考慮抖動(dòng))。(2)編寫循環(huán)彩燈程序,初始時(shí)D7亮,其余不亮,D7亮一秒后移位一次,D6亮,其余不亮,以此類推每隔一秒移位一次,每移位8次為一個(gè)循環(huán),共循環(huán)8次,要求用匯編語言寫出滿足上述要求的程序段(已知一個(gè)延時(shí)1秒的子程序入口地址為DELAYIS)。 答:(1)8255的A口、B口、C口及控制口地址分別為:F0H、 F2H、F4H、F6H。 MOV AL,1000X01XB ;初始化A口方式0輸出,B口方式0輸入 OUT 0F6H,AL IN AL,0F2H ;讀入按鍵狀態(tài) MOV BL,0FFH SUB BL,AL MOV AL,BL O

19、UT 0F0H, AL;設(shè)置LED狀態(tài)(2)分析:PA口工作在方式0輸出,高電平燈亮 MOV AL,10000000B ;初始化A口方式0輸出 OUT 0F6H,AL MOV CX,8 ;循環(huán)初始化 MOV AL,80HN0: OUT 0F0H,AL ;數(shù)據(jù)輸出 CALL DELAY1S ;延時(shí)1秒 ROR AL,1 ;循環(huán)右移,為下次輸出準(zhǔn)備 JNC N0 LOOP N0 ;CF=1,循環(huán)計(jì)數(shù)減1例:利用8255A對(duì)44非編碼鍵盤進(jìn)行管理0#8255APA0CPU總線行05 VPA1PA2PA3PB0PB1PB2PB312#1#13#2#14#3#15#行1行2行3列0列1列2列3A口工作于

20、方式0輸出,B口工作于方式0輸入,則工作方式控制字為10000010A口對(duì)應(yīng)的地址為80HB口對(duì)應(yīng)的地址為81H控制寄存器的地址為83H程序流程:是否有鍵按下(調(diào)用延時(shí)程序)判斷行號(hào)判斷列號(hào)調(diào)用相應(yīng)的子程序 APORT EQU 8000H ;定義端口的符號(hào)地址 BPORT EQU 8001H CPORT EQU 8002H CTRL_P EQU 8003HDATA SEGMENTTAB1 DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,31HDATA ENDSCODE SEGMENT ASSUME DS:DATA,C

21、S:CODESTART:MOV AX,DATA MOV DS,AX MOV AL,90H ;設(shè)置8255A方式字 MOV DX,CTRL_P OUT DX,ALADD1:MOV DX,APORT IN AL,DX ;取鍵盤信息 AND AL,0FH ;屏蔽高四位 MOV BX,OFFSET TAB1 ;取斷碼表首地址 XLAT ;查表得段碼 MOV DX, BPORT ;輸出顯示 OUT DX,AL MOV CX,0600HADD2: LOOP ADD2 JMP ADD1 ;循環(huán)延時(shí)CODE ENDS END START 7.2 可編程定時(shí)器8253定時(shí)與計(jì)數(shù)技術(shù)動(dòng)態(tài)存儲(chǔ)器的刷新定時(shí)、系統(tǒng)日歷

22、時(shí)鐘的計(jì)時(shí)、定時(shí)中斷、定時(shí)檢測(cè)、定時(shí)掃描,對(duì)外界事件的計(jì)數(shù)!定時(shí)方法軟件定時(shí)不可編程的硬件定時(shí)可編程的硬件定時(shí)借助于CPU執(zhí)行每條指令都需要固定時(shí)間來實(shí)現(xiàn)但是占用CPU資源,降低CPU利用率硬件電路設(shè)計(jì)好之后,無法更改定時(shí)值及定時(shí)范圍定時(shí)值和定時(shí)范圍可由軟件來控制和修改Intel公司生產(chǎn)的8253/8254通用定時(shí)/計(jì)數(shù)器在8086/8088系統(tǒng)中廣泛采用一、可編程定時(shí)/計(jì)數(shù)器的基本功能作為計(jì)數(shù)器:先設(shè)置好計(jì)數(shù)初值后,計(jì)數(shù)器開始減1,當(dāng)減為“零”時(shí),輸出一個(gè)計(jì)數(shù)回零信號(hào)便結(jié)束。作為定時(shí)器:先設(shè)置好定時(shí)常數(shù)后,定時(shí)器開始減1,并按定時(shí)常數(shù)不斷的輸出為時(shí)鐘周期整數(shù)倍的定時(shí)間隔。一般定時(shí)器具有自動(dòng)重

23、裝入功能,當(dāng)定時(shí)常數(shù)減為“零”后,自動(dòng)裝入定時(shí)常數(shù)的初值,重新開始新的定時(shí)。二、8253的結(jié)構(gòu)與功能1、8253的引腳24腳雙列直插式芯片用5V電源供電芯片內(nèi)部有三個(gè)相互獨(dú)立的16位定時(shí)/計(jì)數(shù)器數(shù)據(jù)線雙向三態(tài)8253124223322421520619718817916101511141213D7CLK0OUT0GATE0GNDOUT1VCCA1CLK2OUT2GATE2CLK1GATE1D6D5D4D3D2D1D0WRRDCSA0 0#8253D7D0A0CLK0GATE0OUT0CLK1GATE1OUT1CLK2GATE2OUT2WRRDA1CS 1# 2#片選,低電平有效由CPU輸出的地

24、址經(jīng)地址譯碼器產(chǎn)生地址線A0,A1:這兩根線接到系統(tǒng)地址總線的A0,A1上,當(dāng)CS為低電平,且8253被選中時(shí),用它們來選擇8253內(nèi)部的四個(gè)寄存器??刂茣r(shí)鐘脈沖信號(hào)CLK0CLK2:計(jì)數(shù)器0、計(jì)數(shù)器1和計(jì)數(shù)器2的時(shí)鐘輸入端。脈沖可以是系統(tǒng)時(shí)鐘(或系統(tǒng)時(shí)鐘的分頻脈沖)或其他任何脈沖源所提供的脈沖。若CLK是由精確的時(shí)鐘脈沖提供,則8253作為定時(shí)器使用;若CLK是由外部事件輸入的脈沖,則8253作為計(jì)數(shù)器使用。門控脈沖信號(hào)GATE0GATE2:計(jì)數(shù)器0、計(jì)數(shù)器1和計(jì)數(shù)器2的門控制脈沖輸入端,是由外部送入的門控脈沖, 該信號(hào)的作用是控制啟動(dòng)定時(shí)器/計(jì)數(shù)器工作。輸出信號(hào)OUT0OUT2:計(jì)數(shù)器0、

25、計(jì)數(shù)器1和計(jì)數(shù)器2的輸出端。當(dāng)計(jì)數(shù)器計(jì)數(shù)到0時(shí),該端輸出一標(biāo)志信號(hào), 從而產(chǎn)生不同工作方式時(shí)的輸出波形。2、8253的內(nèi)部結(jié)構(gòu)A1CLK0OUT0數(shù)據(jù)總線緩沖器讀/寫邏輯控制字寄存器計(jì)數(shù)器2號(hào)計(jì)數(shù)器1號(hào)計(jì)數(shù)器0號(hào)8888CLK1GATE1OUT1GATE0D7D0CSA0RDWR8CLK2GATE2OUT2內(nèi)部總線數(shù)據(jù)總線緩沖器、讀/寫邏輯、控制字寄存器、3個(gè)獨(dú)立的16位計(jì)數(shù)器 計(jì)數(shù)器內(nèi)部結(jié)構(gòu)示意圖1)3個(gè)獨(dú)立的16位計(jì)數(shù)器16位的計(jì)數(shù)初值寄存器CR和16位的輸出鎖存寄存器OL共同占用一個(gè)I/O端口地址,CPU用輸出指令向CR預(yù)置計(jì)數(shù)初值,用輸入指令讀回OL中的數(shù)值,這兩個(gè)寄存器都沒有計(jì)數(shù)功能

26、,只起鎖存作用。16位的減1計(jì)數(shù)器CE執(zhí)行計(jì)數(shù)操作,其操作方式受控制寄存器控制,最基本的操作是:接受計(jì)數(shù)初值寄存器的初值,對(duì)CLK信號(hào)進(jìn)行減1計(jì)數(shù),把計(jì)數(shù)結(jié)果送輸出鎖存寄存器中鎖存。包括:一個(gè)8位的控制寄存器一個(gè)16位的計(jì)數(shù)初值寄存器CR一個(gè)16位的減1計(jì)數(shù)器CE一個(gè)16位的輸出鎖存寄存器OL2)控制寄存器當(dāng)A1和A0均為1時(shí),控制寄存器被訪問。它從數(shù)據(jù)總線緩沖器接收來自CPU的控制字并寄存起來。該控制字決定了每個(gè)計(jì)數(shù)器的操作方式、選擇二進(jìn)制或BCD數(shù)的計(jì)數(shù),并控制每個(gè)計(jì)數(shù)初值寄存器的寫入操作??刂萍拇嫫髦荒軐懭?,不能讀出。3)數(shù)據(jù)總線緩沖器是8253和CPU數(shù)據(jù)總線的接口部件,是8位、雙向、

27、三態(tài)的緩沖器,CPU訪問8253時(shí)所有的數(shù)據(jù)都是經(jīng)過數(shù)據(jù)總線緩沖器傳送。4)讀/寫邏輯讀/寫邏輯的任務(wù)是接收來自CPU的控制信號(hào),完成對(duì)8253內(nèi)部操作的控制。這些控制信號(hào)包括讀信號(hào)RD、寫信號(hào)WR、片選信號(hào)CS以及用于片內(nèi)寄存器尋址的地址信號(hào)A0和A1。當(dāng)片選信號(hào)有效,即CS=0時(shí),讀寫邏輯才能工作。該控制邏輯根據(jù)讀/寫命令及送來的地址信息,決定三個(gè)計(jì)數(shù)器和控制寄存器中的哪一個(gè)工作,并控制內(nèi)部總線上數(shù)據(jù)傳送的方向。8253共占用4個(gè)I/O地址A1A000,選中計(jì)數(shù)器0A1A001,選中計(jì)數(shù)器1A1A010,選中計(jì)數(shù)器2A1A011,3個(gè)計(jì)數(shù)器內(nèi)的3個(gè)控制寄存器的共用地址,由控 制字中的最高兩

28、位編碼決定哪個(gè)計(jì)數(shù)器8253計(jì)數(shù)器工作之前需要進(jìn)行初始化:CPU用輸出指令向控制寄存器送控制字,然后用輸出指令向計(jì)數(shù)初值寄存器預(yù)置初始值;啟動(dòng)工作后,CR中的初值就送入減1計(jì)數(shù)器CE對(duì)CLK輸入的計(jì)數(shù)/定時(shí)脈沖信號(hào)進(jìn)行減1計(jì)數(shù);當(dāng)CE中的內(nèi)容減為0,表示計(jì)數(shù)/定時(shí)到,則OUT端輸出信號(hào)。輸出信號(hào)的波形形式由工作方式?jīng)Q定。三、8253的編程1、8253的控制字格式2、8253的讀/寫操作1)寫操作:寫入控制字或?qū)懭胗?jì)數(shù)初值注意: 對(duì)每個(gè)計(jì)數(shù)器,必須先寫控制字,后寫計(jì)數(shù)初值。因?yàn)楹笳叩母袷绞怯汕罢邲Q定的。 寫入的計(jì)數(shù)初值必須符合控制字(D5D4兩位)決定的格式。16位數(shù)據(jù)應(yīng)先寫低8位,再寫 高8位

29、。2)讀操作:讀出某計(jì)數(shù)器的當(dāng)前計(jì)數(shù)值到CPU中方法先使計(jì)數(shù)器停止計(jì)數(shù)(在GATE端加低電平或關(guān)閉CLK脈沖)在計(jì)數(shù)的過程中不影響CE的計(jì)數(shù)而讀取數(shù)值根據(jù)送入的控制字中的D5D4位的狀態(tài),用輸入指令讀CE的內(nèi)容。在計(jì)數(shù)過程中,OL的內(nèi)容是跟隨CE內(nèi)容變化的。此時(shí)CE不再計(jì)數(shù),故可穩(wěn)定地讀出OL(即CE)的內(nèi)容。應(yīng)先對(duì)8253寫入一個(gè)具有鎖存功能的控制字,即D5D4位應(yīng)為00,這樣就可以將當(dāng)前的CE內(nèi)容鎖存入OL中,然后再用輸入指令將OL的內(nèi)容讀到CPU中。當(dāng)CPU讀取了計(jì)數(shù)值后,或?qū)τ?jì)數(shù)器重新進(jìn)行初始化編程后,8253會(huì)自動(dòng)解除鎖存狀態(tài),OL中的值又隨減1計(jì)數(shù)器CE值變化。例:設(shè)8253芯片的

30、端口地址為388H38BH?,F(xiàn)要求計(jì)數(shù)器0工作在方式3,計(jì)數(shù)初值為2354,十進(jìn)制計(jì)數(shù);計(jì)數(shù)器1工作在方式2,計(jì)數(shù)初值為18H,二進(jìn)制計(jì)數(shù)。試根據(jù)上述要求編寫初始化程序及讀取計(jì)數(shù)器0當(dāng)前計(jì)數(shù)值的程序。;計(jì)數(shù)器0的初始化程序MOVDX,38BH;給計(jì)數(shù)器0送控制字MOVAL,00110111BOUTDX,ALMOVDX,388H;送計(jì)數(shù)初值的低8位MOVAL,54HOUTDX,ALMOVAL,23H;送計(jì)數(shù)初值的高8位OUTDX,AL ;計(jì)數(shù)器1的初始化程序MOVDX,38BH;給計(jì)數(shù)器1送控制字MOVAL,01010100BOUTDX,ALMOVDX,389H;計(jì)數(shù)初值送低8位MOVAL,18

31、HOUTDX,AL ;計(jì)數(shù)器0當(dāng)前計(jì)數(shù)值讀出程序MOVDX,38BH;送計(jì)數(shù)器0當(dāng)前計(jì)數(shù)值鎖存命令MOVAL,00H;使D5D4為00,具有鎖存功能OUTDX,ALMOVDX,388H;讀出當(dāng)前計(jì)數(shù)值的低8位INAL,DXMOVCL,ALINAL,DX;讀出當(dāng)前計(jì)數(shù)值的高8位MOVCH,AL四、8253的工作方式同一個(gè)芯片中的三個(gè)計(jì)數(shù)器,可以分別選擇不同的工作方式1、方式0計(jì)數(shù)結(jié)束產(chǎn)生中斷寫入方式0的控制字(CW)后,其輸出端變低。再寫入計(jì)數(shù)初值N(圖中N=5),在寫信號(hào)WR以后經(jīng)過CLK的一個(gè)上升沿和一個(gè)下降沿,初值進(jìn)入減1計(jì)數(shù)器CE。計(jì)數(shù)器減到0后,OUT成為高電平。此信號(hào)通常接至8259

32、A的IR端作為中斷請(qǐng)求信號(hào)。整個(gè)計(jì)數(shù)過程中,GATE始終保持高電平。 GATE=0,則暫停計(jì)數(shù);待GATE=1后,從暫停的計(jì)數(shù)值繼續(xù)往下遞減!方式0主要用于單次計(jì)數(shù),計(jì)數(shù)到時(shí),利用OUT信號(hào)作為查詢信號(hào)或中斷請(qǐng)求信號(hào)。由于8253內(nèi)部沒有中斷控制管理電路,故用OUT作為中斷請(qǐng)求信號(hào)時(shí),需要通過中斷優(yōu)先級(jí)控制電路(如8259)向CPU申請(qǐng)中斷。、方式可編程單次脈沖硬件啟動(dòng)、不能自動(dòng)重復(fù)但通過GATE的正跳變可使計(jì)數(shù)過程重新開始在寫入方式1的控制字后OUT成為高電平,在寫入計(jì)數(shù)初值后,要等GATE信號(hào)出現(xiàn)正跳變時(shí)才能開始計(jì)數(shù)。在下一個(gè)CLK脈沖到來后,OUT變低,將計(jì)數(shù)初值送入CE并開始減1計(jì)數(shù),

33、直到計(jì)數(shù)器減到0后OUT變?yōu)楦唠娖?。又來一次寬度為N*TCLK 在方式1計(jì)數(shù)過程中,若寫入新的計(jì)數(shù)初值,也只是寫入到計(jì)數(shù)初值寄存器中,并不馬上影響當(dāng)前計(jì)數(shù)過程,同樣要等到下一個(gè)GATE正跳變啟動(dòng)信號(hào),計(jì)數(shù)器才接收新初值重新計(jì)數(shù)。3、方式2分頻工作方式P312方式2既可以用軟件啟動(dòng) (GATE=1時(shí)寫入計(jì)數(shù)初值后啟動(dòng)),也可以用硬件啟動(dòng)(GATE=0時(shí)寫入計(jì)數(shù)初值后并不立即開始計(jì)數(shù),等GATE由低變高時(shí)啟動(dòng)計(jì)數(shù))。方式2一旦啟動(dòng),計(jì)數(shù)器就可以自動(dòng)重復(fù)地工作。OUT輸出信號(hào)的頻率為CLK信號(hào)頻率的1/N,即N次分頻,故稱這種工作方式為分頻工作方式。方式2需要GATE信號(hào)保持高電平。當(dāng)GATE變?yōu)榈?/p>

34、電平時(shí),停止計(jì)數(shù)。GATE由低變高后,CR中的計(jì)數(shù)初值又重新裝入減1計(jì)數(shù)器CE中開始計(jì)數(shù)。方式2在計(jì)數(shù)過程中若寫入新的計(jì)數(shù)初值,并不影響當(dāng)前的計(jì)數(shù)過程。在本次計(jì)數(shù)結(jié)束后,才以新的計(jì)數(shù)初值開始新的分頻工作方式。4、方式3方波發(fā)生器P298工作于方式3時(shí),在計(jì)數(shù)過程中其輸出前一半時(shí)間為高電平,后一半時(shí)間為低電平。其輸出是可以自動(dòng)重復(fù)的周期性方波,輸出的方波周期為N*TCLK每次讓計(jì)數(shù)器減2若為奇數(shù),則計(jì)數(shù)的前半個(gè)周期為(N+1)/2,后半個(gè)周期為(N-1)/2在寫入計(jì)數(shù)初值時(shí),如果GATE信號(hào)為低電平,計(jì)數(shù)器并不開始計(jì)數(shù)。待GATE變?yōu)楦唠娖綍r(shí),才啟動(dòng)計(jì)數(shù)過程。在計(jì)數(shù)過程中,應(yīng)始終使GATE=1。

35、若GATE=0,不僅中止計(jì)數(shù),而且OUT端馬上變高。待恢復(fù)GATE=1時(shí),產(chǎn)生硬件啟動(dòng),計(jì)數(shù)器又從頭開始計(jì)數(shù)。5、方式4軟件觸發(fā)選通軟件啟動(dòng)、不自動(dòng)重復(fù)的計(jì)數(shù)方式在寫入方式4的控制字后,OUT變?yōu)楦唠娖?。如果GATE為搞電平,當(dāng)寫入計(jì)數(shù)初值后立即開始計(jì)數(shù)(這就是軟件啟動(dòng))。當(dāng)計(jì)數(shù)到0后,OUT輸出變?yōu)榈碗娖剑掷m(xù)一個(gè)CLK脈沖周期后恢復(fù)為高電平,計(jì)數(shù)器停止計(jì)數(shù)。故這種方式是一次性的。只有CPU再次將計(jì)數(shù)初值寫入CR后才會(huì)啟動(dòng)另一次計(jì)數(shù)過程。6、方式5硬件觸發(fā)選通硬件啟動(dòng)、不自動(dòng)重復(fù)的計(jì)數(shù)方式 在寫入方式5控制字后,OUT變高,寫入計(jì)數(shù)初值時(shí),既使GATE信號(hào)為高電平,計(jì)數(shù)過程仍不啟動(dòng),而是要求

36、GATE信號(hào)出現(xiàn)一個(gè)正跳變,然后在下一個(gè)CLK信號(hào)到來后才開始計(jì)數(shù)。計(jì)數(shù)器減到0時(shí),OUT變低,經(jīng)一個(gè)CLK信號(hào)后變高且一直保持。8253工作方式比較五、8254與8253的區(qū)別 允許最高計(jì)數(shù)脈沖(CLK)的頻率不同。8253的最高頻率為2 MHz,而8254允許的最高計(jì)數(shù)脈沖頻率可達(dá)10 MHz(8254為8 MHz,82542為10 MHz)。 8254每個(gè)計(jì)數(shù)器內(nèi)部都有一個(gè)狀態(tài)寄存器和狀態(tài)鎖存器,而8253沒有。 8254有一個(gè)讀回命令字,用于讀出當(dāng)前減1計(jì)數(shù)器CE的內(nèi)容和狀態(tài)寄存器的內(nèi)容,而8253沒有此讀回命令字。 六、8253應(yīng)用舉例P301使用8253計(jì)數(shù)器2產(chǎn)生頻率為40 kH

37、z的方波,設(shè)8253的端口地址為0040H0043H,已知時(shí)鐘端CLK2輸入信號(hào)的頻率為2 MHz。試設(shè)計(jì)8253與8088總線的接口電路,并編寫產(chǎn)生方波的程序。& 74LS138ABC8253D0A0CLK0GATE0OUT0CLK1GATE1OUT1CLK2GATE2OUT2D7D7D0RDWRA1CS0Y1G2BG2AG1&A0A1A2A3A4A5A6A7A8A9A15IOWIOR方波方式350分頻可得到頻率為40KH的方波,所以計(jì)數(shù)初值為50MOV AL,10010111B;對(duì)計(jì)數(shù)器2送控制字MOV DX,0043HOUTDX,ALMOVAL,50 ;送計(jì)數(shù)初值50MOVDX,0042

38、HOUTDX,AL8253在IBM/XT機(jī)中的應(yīng)用(P321)8253計(jì)數(shù)器0、計(jì)數(shù)器1、計(jì)數(shù)器2以及控制寄存器的端口地址分別為40H、41H、42H和43H。7.3可編程中斷控制器Intel 8259A一、8259A的功能為8080/8085系列以及8086/8088系列設(shè)計(jì)的可編程的中斷控制器 1、可管理8個(gè)中斷源電路的中斷,具有8級(jí)優(yōu)先級(jí)控制,通過級(jí)連可擴(kuò)展到最多64級(jí)優(yōu)先級(jí)控制P238。 2、對(duì)中斷源有屏蔽或允許申請(qǐng)中斷的操作,每一級(jí)中斷都可以控制或屏蔽。 3、能自動(dòng)送出中斷類型號(hào),在中斷響應(yīng)周期中,8259A可以通過數(shù)據(jù)總線向CPU提供中斷源的中斷類型碼(8086/8088)或直接提

39、供中斷向量(8080/8085),使CPU能迅速的轉(zhuǎn)到中斷服務(wù)程序。 4、有多種工作方式,可以通過編程來進(jìn)行選擇,適應(yīng)多種系統(tǒng)的要求。二、 8259A的內(nèi)部結(jié)構(gòu)及外部引腳 1、8259A的內(nèi)部結(jié)構(gòu) 1)數(shù)據(jù)總線緩沖器 數(shù)據(jù)總線緩沖器是8259A與系統(tǒng)之間傳送信息的數(shù)據(jù)通道。它是一個(gè)8位、雙向、三態(tài)緩沖器,8259A通過它與 CPU 進(jìn)行數(shù)據(jù)和命令的傳送。 2)讀/寫控制邏輯 讀/寫控制邏輯接收來自CPU經(jīng)OUT或IN指令發(fā)出或接收的控制信號(hào),完成規(guī)定的操作。當(dāng)CPU執(zhí)行OUT指令時(shí),通過數(shù)據(jù)緩沖器把CPU送來的控制字寫到8259A相應(yīng)的控制寄存器中。當(dāng)CPU執(zhí)行IN指令時(shí),通過數(shù)據(jù)緩沖器把IR

40、R、ISR和IMR中所存放的中斷狀態(tài)信息讀入CPU。此外,A0和/CS是片內(nèi)寄存器選擇和8259A的片選信號(hào)。在對(duì)8259A操作的過程中,必修保證A0為有效電平。 3)中斷請(qǐng)求寄存器IRR 中斷請(qǐng)求寄存器IRR(Interrupt Request Register)是一個(gè)8位的具有鎖存功能的寄存器。其作用是接受并鎖存來自IR0IR7的中斷請(qǐng)求信號(hào)。當(dāng)IR0IR7上出現(xiàn)某一中斷請(qǐng)求信號(hào)時(shí),IRR對(duì)應(yīng)位被置高電平,該信號(hào)將被鎖存于IRR的相應(yīng)位中,8259A產(chǎn)生的中斷類型碼就是根據(jù)IRR的內(nèi)容確定的。 4)優(yōu)先權(quán)判別器PR 優(yōu)先權(quán)判別器PR(Priority Resolver)能夠?qū)⒏髦袛嗾?qǐng)求中優(yōu)

41、先級(jí)最高者選中,并將ISR中相應(yīng)位置1。若某中斷請(qǐng)求正在被處理,8259A外部又有新的中斷請(qǐng)求,則由優(yōu)先權(quán)判別器將新進(jìn)入的中斷請(qǐng)求和當(dāng)前正在處理的中斷進(jìn)行比較,以決定哪一個(gè)優(yōu)先級(jí)更高。若新的中斷請(qǐng)求比正在處理的中斷級(jí)別高,則正在處理的中斷自動(dòng)被禁止,先處理級(jí)別高的中斷,由PR通過控制邏輯向CPU發(fā)出中斷申請(qǐng)INT。 5)中斷服務(wù)寄存器ISR ISR是一個(gè)8位的寄存器,用來存放正在處理中的中斷請(qǐng)求。中斷服務(wù)寄存器ISR(In-Service Register),8位,保存當(dāng)前正在處理的中斷請(qǐng)求,例如,如果ISR的D0=1,表示CPU正在為來自IR0的中斷請(qǐng)求服務(wù)。當(dāng)沒有進(jìn)行中斷處理時(shí),ISR各位

42、均為“0”。中斷嵌套時(shí),可能多個(gè)位置“1”。例如,當(dāng)CPU正在處理第4級(jí)中斷時(shí),ISR的D4=1,若第4級(jí)中斷尚未處理完畢,3號(hào)外設(shè)又發(fā)出第3級(jí)中斷請(qǐng)求,外設(shè)3的中斷優(yōu)先級(jí)高于外設(shè)4的,并且允許在第4級(jí)中斷處理的過程中響應(yīng)級(jí)別更高的中斷請(qǐng)求,則系統(tǒng)執(zhí)行中斷嵌套,暫停處理第4級(jí)中斷服務(wù)程序,轉(zhuǎn)而執(zhí)行第3級(jí)中斷服務(wù)程序。這樣,除了ISR的D3=1,D4仍然為1。等第3級(jí)中斷處理完畢后,返回來再處理第4級(jí)中斷。由于第3級(jí)中斷已經(jīng)處理完畢,ISR的D3=0,等到第4級(jí)中斷處理完畢后,ISR的D4=0。 6)中斷屏蔽寄存器IMR IMR是一個(gè)8位的寄存器,用于存放對(duì)中斷請(qǐng)求的屏蔽信息。當(dāng)該寄存器的8位中

43、某一位為“1” ,則與之對(duì)應(yīng)的一級(jí)中斷被屏蔽。所謂屏蔽,就是指該位能禁止IRR寄存器中對(duì)應(yīng)的置1位發(fā)出中斷請(qǐng)求信號(hào)INT。屏蔽優(yōu)先級(jí)別較高的中斷請(qǐng)求輸入,不會(huì)影響優(yōu)先級(jí)較低的中斷請(qǐng)求輸入。必須注意,IMR的屏蔽作用與8086/8088 CPU的屏蔽作用不同。前者是8259A對(duì)外設(shè)的IRi信號(hào)的屏蔽,后者是依靠中斷允許標(biāo)志位IF對(duì)接口的INTR 信號(hào)的屏蔽。 7)控制邏輯電路 控制邏輯電路按照初始化程序設(shè)定的工作方式管理8259A的全部工作。該電路可以根據(jù)IRR的內(nèi)容和PR的判斷結(jié)果向CPU發(fā)出中斷請(qǐng)求信號(hào)INT,并接受來自CPU的中斷響應(yīng)信號(hào)INTA,使8259A進(jìn)入中斷服務(wù)狀態(tài),并使IRR

44、相應(yīng)位淸0。 8)級(jí)連緩沖器/比較器 級(jí)聯(lián)緩沖/比較器用來存放和比較在系統(tǒng)中用到的所有8259A的級(jí)聯(lián)地址。主控8259A通過CAS0、CAS1和CAS2發(fā)送級(jí)聯(lián)地址,選中從控8259A。 2、8259A的外部引腳片選信號(hào),低電平有效通知8259A接收CPU從數(shù)據(jù)總線上送來的命令字讀取8259A中某些寄存器的內(nèi)容級(jí)連總線,作為總控制器時(shí),該總線為輸出;為從控制器時(shí),為輸入發(fā)中斷請(qǐng)求信號(hào)中斷請(qǐng)求信號(hào)中斷響應(yīng)信號(hào),通知8259A中斷請(qǐng)求已被響應(yīng),將中斷類型號(hào)送到數(shù)據(jù)總線上地址輸入信號(hào)P228與8088系統(tǒng)相連,該引腳接地址總線的A0;與8086系統(tǒng)相連,該引腳接地址總線的A1三、 8259A的工作

45、方式1、中斷優(yōu)先級(jí)管理方式當(dāng)一個(gè)中斷請(qǐng)求被響應(yīng)時(shí),ISR中的對(duì)應(yīng)位ISn被置1,8259A把中斷類型號(hào)放到數(shù)據(jù)總線上,然后進(jìn)入中斷服務(wù)程序。一般情況下(除中斷自動(dòng)結(jié)束方式外),在CPU發(fā)出中斷結(jié)束命令(EOI)前,此對(duì)應(yīng)位一直保持為1,以封鎖同級(jí)或低級(jí)的中斷請(qǐng)求,但并不禁止比本級(jí)優(yōu)先級(jí)高的中斷請(qǐng)求,以實(shí)現(xiàn)中斷嵌套。P228由IR端引入的中斷請(qǐng)求具有固定的優(yōu)先級(jí),IR0最高、IR7最低。可以設(shè)置最低的優(yōu)先級(jí)全嵌套方式特殊全嵌套方式優(yōu)先級(jí)自動(dòng)循環(huán)方式優(yōu)先級(jí)特殊循環(huán)方式在主從結(jié)構(gòu)的8259A系統(tǒng)中,將主片設(shè)置為特殊全嵌套方式,允許接受同級(jí)或更高級(jí)的中斷請(qǐng)求進(jìn)入。 一個(gè)設(shè)備的中斷服務(wù)完成時(shí),優(yōu)先級(jí)自動(dòng)

46、降為最低,而將最高優(yōu)先級(jí)賦給原來比它低一級(jí)的中斷請(qǐng)求,最初的最高優(yōu)先級(jí)一定為IR0。普通屏蔽方式:特殊屏蔽方式:允許優(yōu)先級(jí)較低的中斷進(jìn)入正在處理的高級(jí)別中斷。適用于全嵌套方式下的中斷結(jié)束。中斷服務(wù)程序結(jié)束時(shí),向8259A發(fā)常規(guī)中斷結(jié)束命令,將8259A的中斷服務(wù)寄存器中最高優(yōu)先級(jí)的IS位清零。 在非全嵌套方式下,根據(jù)ISR內(nèi)容無法確定最后響應(yīng)和處理的是哪一級(jí)中斷,所以在程序中發(fā)一條指令指定要清除ISR中的哪一位在INTA負(fù)脈沖的后沿完成對(duì)應(yīng)的ISR位的復(fù)位。在中斷響應(yīng)后,若此時(shí)出現(xiàn)中斷請(qǐng)求,則響應(yīng)此中斷!2.中斷屏蔽方式通過IMR(中斷屏蔽寄存器)設(shè)定。IMR中的每一位對(duì)應(yīng)一個(gè)級(jí)別的中斷請(qǐng)求,

47、某一位為1時(shí),與之對(duì)應(yīng)的某一級(jí)別的中斷請(qǐng)求被屏蔽;還可以通過對(duì)IMR的修改,禁止高級(jí)別中斷的進(jìn)入。3.中斷結(jié)束方式1)中斷自動(dòng)結(jié)束方式2)一般中斷結(jié)束方式3)特殊中斷結(jié)束方式(SEOI)適用于中斷請(qǐng)求信號(hào)的持續(xù)時(shí)間有限制以及不出現(xiàn)中斷嵌套的場(chǎng)合!級(jí)連用一般結(jié)束方式和特殊結(jié)束方式4.中斷觸發(fā)方式電平觸發(fā)方式邊沿觸發(fā)方式以IR端上出現(xiàn)的高電平作為中斷請(qǐng)求信號(hào)。請(qǐng)求被響應(yīng),高電平信號(hào)應(yīng)及時(shí)撤除。以IR端上出現(xiàn)由低電平向高電平的跳變作為中斷請(qǐng)求信號(hào),跳變后高電平一直保持,直到被響應(yīng)。5.與系統(tǒng)總線的連接方式1)緩沖方式主要用于多片8259A級(jí)連的大系統(tǒng)中。緩沖方式下,8259A通過總線收發(fā)器和數(shù)據(jù)總線

48、相連。2)非緩沖方式單片時(shí):SP/EN端接高電平多片時(shí):主片SP/EN接高電平,從片接低電平適用于單片8259A或片數(shù)不多的8259A級(jí)連系統(tǒng)中直接與系統(tǒng)總線相連6、8259A的中斷順序 (1)當(dāng)有一個(gè)或多個(gè)中斷源申請(qǐng)中斷時(shí),通過IR0IR7輸入給8259A,使中斷請(qǐng)求寄存器IRR相應(yīng)位置1。 (2)當(dāng)對(duì)中斷源的中斷申請(qǐng)不屏蔽的情況下,向中斷控制器發(fā)中斷申請(qǐng)信號(hào),中斷控制器把該信號(hào)轉(zhuǎn)發(fā)給優(yōu)先級(jí)判別器PR。 (3)優(yōu)先級(jí)判別器PR根據(jù)中斷請(qǐng)求寄存器IRR的內(nèi)容決定CPU正在服務(wù)的中斷源,若優(yōu)先級(jí)高于正在服務(wù)的中斷源,通過控制邏輯的INT線向CPU申請(qǐng)中斷。 (4)若CPU處于開中斷狀態(tài),則在當(dāng)前

49、指令執(zhí)行完后,進(jìn)入中斷服務(wù)程序,并用INTA信號(hào)作為響應(yīng)中斷的回答信號(hào)。 (5) 8259A接收到INTA信號(hào)后,使中斷服務(wù)寄存器ISR相應(yīng)位置0,以避免該中斷源再次發(fā)生中斷申請(qǐng)。 (6)CPU啟動(dòng)另一個(gè)中斷響應(yīng)周期,輸出另一個(gè)INTA脈沖信號(hào)。這時(shí)8259A通過數(shù)據(jù)總線向CPU輸出當(dāng)前級(jí)別最高的中斷申請(qǐng)?jiān)吹闹袛囝愋吞?hào),以便CPU很快轉(zhuǎn)入中斷服務(wù)程序。 (7)若8259A工作在AEOI模式,在第二個(gè)INTA脈沖信號(hào)結(jié)束時(shí),使中斷源在中斷服務(wù)寄存器中的相應(yīng)位置0;否則,直至中斷服務(wù)寄存器中的相應(yīng)位復(fù)位。7、內(nèi)部寄存器: 8259A可訪問的內(nèi)部寄存器有9個(gè): IRR中斷申請(qǐng)寄存器、ISR當(dāng)前中斷服

50、務(wù)寄存器。 初始化命令字寄存器:ICW1ICW4(只能寫入)。 操作字寄存器:OCW1OCW3(只能寫入)。端口分配: A0=0:ICW1、OCW2、OCW3、IRR、ISR(奇地址); A0=1:ICW2ICW4、OCW1、IMR、狀態(tài)寄存器(偶地址)。四、 8259A的編程 初始化命令I(lǐng)CW:建立起8259A操作的初始狀態(tài);操作命令OCW:控制8259A執(zhí)行不同的操作方式。發(fā)ICW和OCW時(shí),CPU中斷申請(qǐng)引腳INTR應(yīng)關(guān)閉!1.初始化命令字1)ICW1:設(shè)置連接和觸發(fā)方式工作方式,寫入A0=0端口(芯片控制) 對(duì)A0=0的端口寫入一個(gè)D4=1的數(shù)據(jù),表示初始化編程開始。 D4:特征位,必

51、須為1; D3:LTIM位,設(shè)置中斷請(qǐng)求信號(hào)的觸發(fā)方式,0為邊沿觸發(fā),1為高電平觸發(fā)。 D1:SGNL位,是否工作在單片方式,0為多片級(jí)聯(lián),1為單片。 D0:是否有ICW4,0不需設(shè)置命令字ICW4,1需要設(shè)置。 8086/8088系統(tǒng)中必須有ICW4。 D2和D7D5這4位在僅對(duì)8080/8085系統(tǒng)有意義,8086/8088系統(tǒng)中這4位不用,通常置為0。2)ICW2:設(shè)置中斷類型號(hào),寫入A0=1端口在8086/8088系統(tǒng)中,只設(shè)置D7D3,即只需設(shè)置中斷類型號(hào)的高5位,編程時(shí)D2D0的值可任意設(shè)定(通常設(shè)為0),D2D0的實(shí)際內(nèi)容由8259A根據(jù)中斷請(qǐng)求來自IR0IR7的哪一個(gè)輸入端,自

52、動(dòng)填充為000111中的某一組編碼(由硬件電路自動(dòng)產(chǎn)生),與高5位一同構(gòu)成8位的中斷類型號(hào)。例在PC/XT中ICW2為00001000B對(duì)于從IR0、IR1、IR2、IR3、IR4、IR5、IR6和IR7上引入的各中斷請(qǐng)求,其相應(yīng)的中斷類型號(hào)為08H、09H、0AH、0BH、0CH、0DH、0EH和0FH。 若主片ICW3的內(nèi)容為07H(00000111B)時(shí),說明主片的IR0、IR1、IR2上連有從片。若某從片ICW3的內(nèi)容為07H,說明該從片的INT引腳與主片的IR7相連。3)ICW3:設(shè)置級(jí)連(主從片關(guān)系),寫入A0=1端口只有ICW1的SNGL位為0(多片)時(shí),才寫入ICW3主片: I

53、CW3的S0S7指明了IR0IR7各引腳連接從片的情況,置1的位表示對(duì)應(yīng)的引腳有從片級(jí)聯(lián)從片: ICW3的D7D3不用,置0即可;用D2D0表示與主片的對(duì)應(yīng)引腳級(jí)聯(lián)。4)ICW4:設(shè)置8259A的工作方式,寫入A0=1端口ICW1的IC4位為1時(shí),才寫入ICW408080/8085系統(tǒng)A0D01 自動(dòng)EOI101BUFM/SAEOImPMD1D2D3SFNM000D4D5D6D718086/8088系統(tǒng)0非自動(dòng)EOI非緩沖方式緩沖/從片緩沖/主片0X1011特殊嵌套一般嵌套D3:BUF位,若該位為1,則8259A工作于緩沖方式,8259A通過數(shù)據(jù)總線收發(fā)器和總線相連,SP/EN 引腳為輸出;該

54、位為0,8259A工作于非緩沖方式,SP/EN引腳為輸入,用做主片、從片選擇端。D2:M/S位,當(dāng)D3即BUF位為1時(shí),該位才有效,用于主片/從片選擇當(dāng)BUF位為0時(shí),該位無效,可設(shè)為任意值。 M/S位為0表示本片8259A為從片,1表示本片8259A為主片;D1:AEOI位,設(shè)置結(jié)束中斷方式。0表示中斷正常結(jié)束,靠中斷結(jié)束指令清除ISR相應(yīng)位; 1表示自動(dòng)結(jié)束中斷,即CPU響應(yīng)中斷后,立即自動(dòng)清除ISR相應(yīng)位 。2、初始化編程N(yùn)YNY寫ICW1單片?寫ICW2寫ICW3需ICW4寫ICW4 初始化主片 MOV AL,11H OUT 20H,AL MOV AL,08H OUT 21H,AL M

55、OV AL,04H;(級(jí)聯(lián)從片) OUT 21H,AL MOV AL,01H OUT 21H,AL 初始化從片MOV AL,11HOUT 0A0H,ALMOV AL,70HOUT 0A1H,AL MOV AL,02H;級(jí)聯(lián)引腳OUT 0A1H,ALMOV AL,01HOUT 0A1H,AL PC/AT機(jī)中8259A的主片定義為:上升沿觸發(fā)、在IR2級(jí)聯(lián)從片、有ICW4、非AEOI方式、中斷類型號(hào)08H0FH、一般的中斷嵌套方式、端口地址是20H、21H;從片定義為:上升沿觸發(fā)、級(jí)聯(lián)到主片的IR2、有ICW4、非AEOI方式、中斷類型號(hào)為70H78H、一般的中斷嵌套方式、端口地址是A0H、A1H

56、。初始化過程如下:(P231的ICW)。3.操作命令字 P2341)OCW1:設(shè)置和清除(中斷屏蔽寄存器)的相應(yīng)位,寫入A0=1端口MX=1表示屏蔽中斷源IRX;MX=0表示來自IRX的中斷請(qǐng)求得到允許。若OCW1=03H,說明IR0和IR1上的中斷請(qǐng)求被屏蔽2)OCW2:設(shè)置優(yōu)先級(jí)循環(huán)方式和中斷結(jié)束方式,寫入A0=0端口為1,OCW2用作結(jié)束中斷命令;為0,OCW2用作設(shè)定優(yōu)先級(jí)循環(huán)方式的命令字中斷級(jí)別編碼特征位A00RSLEOI00L2L1L0D7D6D5D4D3D2D1D000001100201031104001510160117111001EOI方式011特殊EOI(按編碼復(fù)位ISR)

57、101EOI且優(yōu)先權(quán)自動(dòng)循環(huán)100設(shè)置優(yōu)先權(quán)自動(dòng)循環(huán)000清除優(yōu)先權(quán)自動(dòng)循環(huán)111EOI且按編碼循環(huán)優(yōu)先權(quán)110按編碼循環(huán)優(yōu)先權(quán)010 OCW2無意義L2L0位,只有SL位為1時(shí),這三位才有意義。L2L0位有三個(gè)作用:一是當(dāng)OCW2給出特殊中斷結(jié)束命令時(shí),L2、L1和L0三位的編碼指出了要清除中斷服務(wù)寄存器ISR中的哪一位;二是當(dāng)OCW2給出結(jié)束中斷且指定新的最低優(yōu)先級(jí)命令時(shí),將ISR中與L2、L1和L0編碼值對(duì)應(yīng)的位清0,并將當(dāng)前系統(tǒng)最低優(yōu)先級(jí)設(shè)為L2、L1和L0指定的值;三是當(dāng)OCW2給出優(yōu)先級(jí)特殊循環(huán)命令時(shí),由L2、L1和L0的編碼指定循環(huán)開始的最低優(yōu)先級(jí)。寫入的是OCW3D1D0=10

58、時(shí),表明緊接著要讀出IRR的值;D1D0=11時(shí),表明緊接著要讀出ISR的值3)OCW3:設(shè)置和撤銷特殊屏蔽方式;設(shè)置中斷查詢方式;設(shè)置對(duì)8259A內(nèi)部寄存器的讀出 寫入A00的端口4.8259A的讀操作PC機(jī)中8259A的端口地址為20H和21H(1) 讀出IRR的值:先向20H端口寫0AH(OCW3 RR=1、RIS=0),再讀20H端口。 例如: MOVAL,0AH;OCW3=0AH OUT 20H,AL ;OCW3寫入8259A IN AL,20H ;讀出IRR 內(nèi)容 (2) 讀出ISR的值:先向20H端口寫0BH(OCW3 RR=1、RIS=1),再讀20H端口。 例如: MOVAL,0BH ;OCW3=0BH OUT 20H,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論