計(jì)算機(jī)硬件及網(wǎng)絡(luò)并行接口ppt課件
《計(jì)算機(jī)硬件及網(wǎng)絡(luò)并行接口ppt課件》由會(huì)員分享,可在線閱讀,更多相關(guān)《計(jì)算機(jī)硬件及網(wǎng)絡(luò)并行接口ppt課件(89頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1,1,2,計(jì)算機(jī)系統(tǒng)的數(shù)據(jù)傳送方式有兩種:并行數(shù)據(jù)傳送和串行數(shù)據(jù)傳送。 并行數(shù)據(jù)傳送是微機(jī)系統(tǒng)最基本的信息交換方式,是以計(jì)算機(jī)的字長(zhǎng)(如8位、16位、32位、64位)為單位,一次傳送一個(gè)字長(zhǎng)的數(shù)據(jù)。 串行數(shù)據(jù)傳送是通過(guò)一根數(shù)據(jù)線,將數(shù)據(jù)一位一位順序送出。,2,并行傳送速率比串行傳送快,適合于外設(shè)與微機(jī)之間近距離、大量和快速的信息交換,但引線多、且線間電容會(huì)引起串?dāng)_,不適合用于遠(yuǎn)距離傳送。 例如系統(tǒng)板上各部件(CPU與存儲(chǔ)器、CPU與I/O接口)、I/O擴(kuò)展板上各部件、CPU與并行打印機(jī)、CPU與磁盤(pán)之間的數(shù)據(jù)交換都是采用并行數(shù)據(jù)傳送方式。,3,4,并行接口電路能從微處理器或外設(shè)接收數(shù)據(jù),然后再發(fā)送出去,因此在信息傳送過(guò)程中,起著鎖存或緩沖的作用。 通常,并行接口應(yīng)具有如下功能和硬件支持:,具有鎖存器或緩沖器的數(shù)據(jù)交換端口; 每個(gè)端口都具有可與CPU用查詢方式或中斷方式交換數(shù)據(jù)所必須的控制和狀態(tài)信息, 有與外設(shè)交換數(shù)據(jù)所必須的控制和狀態(tài)信息;還有片選和控制電路。,4,5,在并行接口中一般都需要在接口與外設(shè)之間設(shè)置一對(duì)握手信號(hào)。(除無(wú)條件傳送) 在并行接口中8位或16位數(shù)據(jù)線是同時(shí)動(dòng)作的,即使只用到其中的1、2位也是一次傳送8位或16位; 并行傳送的數(shù)據(jù)不需要固定的格式(與串行傳送不同),這就免去了因此而產(chǎn)生的編碼/解碼過(guò)程,所謂“并行轉(zhuǎn)送”,是指接口電路與I/O設(shè)備之間的數(shù)據(jù)傳送,而不是指接口與CPU之間的傳送(必然的是并行傳送),5,常用的可編程并行接口芯片有 Intel公司的8255A、 Motorola公司的MC6820、 Zilog公司的Z80PIO等等。,6,7,并行接口連接外設(shè)示意圖:,7,8,是Intel86系列的8位并行接口芯片 工作方式等設(shè)置具有可選擇性; 可以由用戶在其應(yīng)用程序中通過(guò)向其傳送命令字的形式改變各種設(shè)置,8,9,8255A的外部引腳,8255A芯片采用NMOS工藝制造,40個(gè)引腳的雙列直插40條引腳可分為與CPU連接和與外設(shè)連接的引腳。,9,10,8255A的引腳功能,面向控制總線的信號(hào)線: RD:讀信號(hào),低電平有效,與CPU的控制線相連。當(dāng)CPU執(zhí)行IN指令時(shí),該信號(hào)有效,CPU讀取各端口的數(shù)據(jù)或狀態(tài)。 WR:寫(xiě)信號(hào),低電平有效,與CPU的控制線相連。當(dāng)CPU執(zhí)行OUT指令是,該信號(hào)有效,CPU將數(shù)據(jù)或控制字寫(xiě)入8255A。 RESET:復(fù)位信號(hào),高電平有效。當(dāng)RESET=1時(shí),清除所有內(nèi)部寄存器的內(nèi)容,并將A、B、C口自動(dòng)設(shè)為方式0下的輸入端口。 Vcc、GND:電源和地線 。,,,10,11,與外設(shè)相連的信號(hào)線 PA7~PA0:端口A的輸入/輸出線,三態(tài)、雙向,可直接與外設(shè)相連。 PB7~PB0:端口B的輸入/輸出線,三態(tài)、雙向,可直接與外設(shè)相連。 PC7~PC0:端口C的輸入/輸出線,三態(tài)、雙向,可直接與外設(shè)相連。,8255A的引腳功能,端口A和端口B一般只作為數(shù)據(jù)口使用 端口C除了作為數(shù)據(jù)口之外還可以控制端口使用: 例如:產(chǎn)生與外設(shè)之間的聯(lián)絡(luò)信號(hào);作為狀態(tài)口;按位控制等等,11,12,8255A的引腳功能,與CPU連接的信號(hào)線 面向數(shù)據(jù)總線的信號(hào)線: 面向地址總線的信號(hào)線:,D7~D0:雙向、三態(tài)數(shù)據(jù)線,與CPU系統(tǒng)數(shù)據(jù)總線相連。,CS:片選信號(hào),低電平有效。CS=0時(shí),表明8255A被選中。通常與地址譯碼電路輸出端相連。,A1、A0:端口地址選擇信號(hào),用來(lái)指明哪一個(gè)端口被選中。,,,12,13,8255A有A、B、C三個(gè)數(shù)據(jù)端口和一個(gè)控制端口(用來(lái)接收CPU送來(lái)的控制字)。A1A0為00、01、10、11時(shí),分別選中A口、B口、C口、控制端口。,13,14,8255A的端口操作表,CS、A1、A0、RD、WR的信號(hào)組合所實(shí)現(xiàn)的讀/寫(xiě)操作如下:,14,15,8255A的內(nèi)部結(jié)構(gòu),15,16,8255A的內(nèi)部結(jié)構(gòu)由以下4部分組成: (1)數(shù)據(jù)總線緩沖器 這是一個(gè)8位雙向、三態(tài)緩沖器,可直接與CPU系統(tǒng)數(shù)據(jù)總線相連,是8255A與CPU之間傳輸數(shù)據(jù)的必經(jīng)之路。所有輸入/輸出數(shù)據(jù)、CPU發(fā)出的控制命令字以及從外設(shè)讀入的狀態(tài)信息,都通過(guò)它傳送。,8255A的內(nèi)部結(jié)構(gòu),16,17,(2)讀/寫(xiě)控制邏輯 與CPU的6根控制線相連,接收來(lái)自CPU的地址總線信號(hào)和控制總線信號(hào),轉(zhuǎn)變?yōu)楦鞣N命令送到A、B組控制邏輯電路進(jìn)行相應(yīng)的操作。 CS、A1 、A0用于芯片選擇和端口尋址,RD、WR用來(lái)決定內(nèi)部和外部數(shù)據(jù)總線信息傳送的方向,RESET用來(lái)使8255A復(fù)位。,8255A的內(nèi)部結(jié)構(gòu),17,18,(3)數(shù)據(jù)端口A、B、C 8255A有A,B,C三個(gè)輸入/輸出端口(簡(jiǎn)稱A口,B口,C口),用來(lái)與外設(shè)相連,進(jìn)行數(shù)據(jù)信息、狀態(tài)信息的交換。每個(gè)端口均有8位,可為輸入或輸出端口。 C口可以作為一個(gè)獨(dú)立的I/O口,也可分為兩個(gè)4位端口,作為數(shù)據(jù)輸入/輸出端口,或作為控制狀態(tài)端口,配合端口A、B工作。,8255A的內(nèi)部結(jié)構(gòu),18,19,(4)A組和B組控制邏輯 端口A和端口C的高4位(PC7~PC4)構(gòu)成A組,由A組控制邏輯電路進(jìn)行控制; 端口B和端口C的低4位(PC3~PC0)構(gòu)成B組,由B組控制邏輯電路進(jìn)行控制。 這兩個(gè)控制電路內(nèi)部有控制寄存器,用來(lái)接收數(shù)據(jù)總線送來(lái)的控制字和讀/寫(xiě)控制信號(hào),并按控制字確定各端口的工作方式。,8255A的內(nèi)部結(jié)構(gòu),19,20,在對(duì)8255A進(jìn)行地址譯碼電路設(shè)計(jì)時(shí),對(duì)于8086系統(tǒng),它有16位數(shù)據(jù)總線。 8255的D7~D0總是接到系統(tǒng)總線的低8位。 要選擇讀寫(xiě)8255A的端口,端口地址必須為偶地址,應(yīng)將系統(tǒng)地址總線的A2A1接到8255的A1A0。,注意:,20,21,21,例如:系統(tǒng)分配給8255的端口地址是4個(gè)連續(xù)的偶地址 假如是0020H,0022H,0024H,0026H 4個(gè)連續(xù)的偶地址 這四個(gè)地址的低四位分別對(duì)應(yīng)為:,接8255的A1,接8255的A0,22,例如:系統(tǒng)分配給8255的端口地址是0024H,0026H,0028H,002AH 4個(gè)連續(xù)的偶地址,C口,控制口,A口,B口,23,24,8255A的控制字及其工作方式,8255A可以通過(guò)指令往控制端口中設(shè)置控制字來(lái)決定它的工作方式。 8255A有兩個(gè)控制字: 方式選擇控制字 端口C置位/復(fù)位控制字 兩個(gè)控制字共用一個(gè)地址:A1=A0=1。 為區(qū)分兩個(gè)控制字,將控制字的D7作為特征位, D7=1,表示方式選擇控制字; D7=0,表示C口置位/復(fù)位控制字。,24,25,8255A的控制字及其工作方式,8255A的3個(gè)端口共有3種工作方式:,25,26,8255A的方式選擇控制字,26,27,D7:特征位(標(biāo)志位)。 D6、D5:A組方式選擇。00—方式0;01—方式1;10和11為方式2。 D4:A口的輸入/輸出選擇。0為輸出,1為輸入。 D3:C口(高4位)輸入/輸出選擇。0為輸出,1位輸入。 D2:B組方式選擇。0為方式0,1為方式1。 D1:B口的輸入/輸出方式選擇。0為輸出,1為輸入。 D0:C口(低4位)的輸入/輸出選擇。0為輸出,1為輸入。,8255A的方式選擇控制字,27,28,從中可看出: A口可工作在方式0\方式1\方式2; B口只能工作在方式0 \方式1; C口的高4位、低4位可分別設(shè)定其輸入輸出方式,但不能設(shè)定其工作方式(只能方式0),8255A的方式選擇控制字,28,29,【例】 按下述要求對(duì)8255A進(jìn)行初始化: A口設(shè)為輸入數(shù)據(jù),工作于方式1; B口設(shè)為輸出數(shù)據(jù),工作于方式0; C口高四位輸出,低四位輸入數(shù)據(jù)。 8255A的端口地址為300H~306H。,解: 根據(jù)要求,8255的工作方式字=10110001=B1H,初始化程序段如下: MOV DX,306H ;送控制口地址 MOV AL,0B1H ;設(shè)置方式選擇控制字 OUT DX,AL,29,30,C口的任一位都可通過(guò)控制寄存器寫(xiě)入該控制字,使之置位(輸出為1),或復(fù)位(輸出為0),而不影響其他位的狀態(tài)。其格式如圖。,8255A的置位/復(fù)位控制字,30,31,D7:特征位=0,表明寫(xiě)入的是C口置位/復(fù)位控制字。 D6~D4:不用,可為任意值,一般取‘0’。 D3~D1:選擇對(duì)那一位進(jìn)行操作。 D0:選擇對(duì)選定的該位置置位還是復(fù)位。 1為置位,0為復(fù)位。,特別需要注意的是,盡管該控制字是對(duì)C口進(jìn)行操作,但必須寫(xiě)入控制端口,而不是寫(xiě)入C口。,8255A的置位/復(fù)位控制字,31,32,例:如果要把C口的PC2引腳置成高電平輸出,可以使用置位/復(fù)位命令字。 置位/復(fù)位命令字=00000101=05H 假設(shè)8255控制口地址=306H 該程序段為: MOV AL,05H MOV DX,306H OUT DX, AL,8255A的置位/復(fù)位控制字,32,33,例:如果要使C口的PC2引腳輸出低電平,可以使用 置位/復(fù)位命令字=00000100=04H 假設(shè)8255控制口地址=306H 該程序段為: MOV AL,04H MOV DX,306H OUT DX, AL,8255A的置位/復(fù)位控制字,33,34,例:如果要使8255的PC7產(chǎn)生一個(gè)負(fù)脈沖,作為打印機(jī)接口電路的數(shù)據(jù)選通信號(hào)。,使用置位/復(fù)位命令字,首先讓PC7輸出“1”,然后再輸出“0”,最后再輸出“1”,便形成一個(gè)負(fù)脈沖.,MOV DX,306H MOV AL, 0FH OUT DX,AL; PC7置“1” MOV AL,OEH OUT DX,AL ; PC7置“0” NOP ;延時(shí) NOP MOV AL,0FH; PC7置“1” OUT DX,AL,8255A的置位/復(fù)位控制字,34,35,*(選講)【例】 試編程使8255A的C口PC3位產(chǎn)生一個(gè)方波信號(hào)。8255A的端口地址為04A0H~04A6H。 解:可利用C口置/復(fù)位控制字,交替使PC3位輸出“1”和“0”。程序段如下: MOV DX,04A6H ;送控制口地址 LL:MOV AL,00000111B ;對(duì)PC3位置1 OUT DX,AL CALL DELAY ;延時(shí) MOV AL,00000110B ;對(duì)PC3位置0 OUT DX,AL JMP LL ;循環(huán),產(chǎn)生周期信號(hào),8255A的置位/復(fù)位控制字,35,36,8255A的工作方式0,方式0 — 基本輸入/輸出方式 工作特點(diǎn)和使用場(chǎng)合 : A口、B口、C口的高4位,低4位均可獨(dú)立地設(shè)置為輸出或輸入。 方式0可用于無(wú)條件傳送或查詢式傳送場(chǎng)合。 無(wú)條件傳送時(shí),不用聯(lián)絡(luò)信號(hào),CPU隨時(shí)用指令可對(duì)該外設(shè)進(jìn)行讀寫(xiě)。一般用于連接簡(jiǎn)單的外設(shè),如鍵盤(pán)、開(kāi)關(guān)、指示器。 單向I/0,不能同時(shí)指定某個(gè)端口又作輸入,又作輸出,36,37,【例】 在工業(yè)控制等實(shí)際應(yīng)用中,經(jīng)常需要檢測(cè)某些開(kāi)關(guān)量的狀態(tài)。 如圖所示,在某系統(tǒng)中,采用8255A不斷檢測(cè)8個(gè)開(kāi)關(guān)K7~K0的通斷狀態(tài),并隨時(shí)在8個(gè)發(fā)光二極管LED7~LED0上顯示出來(lái)。 要求開(kāi)關(guān)閉合時(shí),相應(yīng)的LED亮; 開(kāi)關(guān)斷開(kāi)時(shí),相應(yīng)的LED滅。 8255A的端口地址為60H~66H。,工作方式0及其應(yīng)用,37,38,8255A讀取開(kāi)關(guān)狀態(tài)的電路圖,38,39,解:由電路原理可知,A口為方式0輸入,B口為方式0輸出,則8255A的方式字=10010000B=90H。 且開(kāi)關(guān)閉合,則A口輸入低電平;當(dāng)B口輸出低電平時(shí),相應(yīng)的LED點(diǎn)亮。程序段如下: MOV DX,66H MOV AL,90H ;設(shè)置方式選擇控制字 OUT DX,AL TES:MOV DX,60H ;讀A口(開(kāi)關(guān)狀態(tài)) IN AL,DX MOV DX,62H ;送B口顯示 OUT DX,AL JMP TES ;循環(huán)檢測(cè),思考: 如果要求開(kāi)關(guān)打開(kāi)時(shí),相應(yīng)的LED亮;程序如何修改?,39,40,例:并行打印機(jī)接口設(shè)計(jì),(8255工作方式0應(yīng)用),,,,,,6,C2,,,2F4H—2F7H,端口地址?,40,41,LPST:,打印機(jī)忙否(PC2 =BUSY=?),PC2=1,打印機(jī)忙,繼續(xù)測(cè)試PC2,CL中為將要打印的字符→AL,MOV AL,0DH ; OUT DX, AL,MOV DX, 02F6H IN AL,DX ;,AND AL,04H ;,JNZ LPST ;,MOV AL, CL ;,MOV DX,02F4H OUT DX, AL ;,MOV AL, 0CH MOV DX, 02F7H OUT DX, AL ;,INC AL OUT DX, AL ;,MOV AL,81H; MOV DX, 02F7H; OUT DX,AL,41,42,8255A的工作方式1,方式1 — 選通輸入/輸出方式 一、工作特點(diǎn) A口、B口可作為數(shù)據(jù)傳輸口,而C口的一些引腳規(guī)定作為A口、B口的聯(lián)絡(luò)信號(hào)。 按照方式1工作時(shí)必須配合一些專門(mén)的聯(lián)絡(luò)信號(hào)(C口的一些引腳),實(shí)現(xiàn)接口電路與外設(shè)之間的應(yīng)答; 單向傳送; 上述引腳的定義在方式1輸入與方式1輸出時(shí)有所不同;,42,43,當(dāng)A口作為方式1輸入時(shí),C口的PC3、PC4、PC5作為控制信號(hào),PC6、PC7仍可作為I/O口利用。 當(dāng)B口作為方式1輸入時(shí),C口的PC0、PC1、PC2作為控制信號(hào)。,各控制信號(hào)的定義如下:,1、方式1輸入時(shí),端口對(duì)應(yīng)的控制信號(hào),二、方式1時(shí)端口對(duì)應(yīng)的聯(lián)絡(luò)信號(hào),43,44,IBF:輸入緩沖器滿信號(hào),高電平有效。 它是對(duì)STB的響應(yīng)信號(hào),當(dāng)STB有效時(shí),把數(shù)據(jù)傳送到輸入鎖存器中,輸入鎖存器鎖存數(shù)據(jù)后,使IBF置位,發(fā)IBF信號(hào)。 該信號(hào)一方面可作為8255A發(fā)出的狀態(tài)信號(hào),供CPU查詢。當(dāng)CPU查詢到該信號(hào),說(shuō)明端口已有數(shù)據(jù),執(zhí)行輸入指令,讀取數(shù)據(jù)。同時(shí),讀信號(hào)RD的上升沿使IBF清0, 等待下一個(gè)數(shù)據(jù)。另一方面,作為外設(shè)的STB的響應(yīng)信號(hào),該信號(hào)送給外設(shè),阻止外設(shè)發(fā)送新的數(shù)據(jù)發(fā)送。,44,45,INTE(內(nèi)部信號(hào)):A口、B口的中斷允許信號(hào),高電平有效。該信號(hào)通過(guò)軟件對(duì)C端口的置/復(fù)位指令來(lái)實(shí)現(xiàn)對(duì)中斷的控制。將PC4置1,A口允許中斷;將PC2置1,B口允許中斷。清0,則屏蔽中斷。 需要說(shuō)明的是,C口的PC4、PC2具有雙重功能,置/復(fù)位控制字寫(xiě)入輸出鎖存器,其輸出緩沖器不選通,純粹是對(duì)內(nèi)部寄存器的操作。而STB信號(hào)通過(guò)輸入緩沖器輸入。兩者在硬件上的隔離,不會(huì)沖突。,INTR:中斷請(qǐng)求信號(hào),高電平有效。該信號(hào)由8255A向CPU申請(qǐng)中斷。當(dāng)STB和IBF均為高電平時(shí),在INTE有效的情況下,INTR=1,表明CPU可以從端口讀入數(shù)據(jù)。CPU讀取數(shù)據(jù)后,RD的下降沿自動(dòng)使INTR清0。,45,46,在方式1下,數(shù)據(jù)從I/O設(shè)備通過(guò)8255送到CPU的過(guò)程如下:,CPU,8255,I/O設(shè)備,46,47,1、方式1輸入時(shí),端口對(duì)應(yīng)的控制信號(hào),,,47,48,當(dāng)A口作為方式1輸出時(shí),C口的PC7、PC6、PC3作為控制信號(hào), PC4、PC5作為I/O口使用。 當(dāng)B口作為方式1輸出時(shí),C口的PC0、PC1、PC2作為控制信號(hào),PC4、PC5作為I/O口使用。,2、方式1輸出時(shí)的聯(lián)絡(luò)信號(hào),48,49,INTE (內(nèi)部信號(hào)) :中斷允許信號(hào),高電平有效。 PC6=1時(shí),允許A口中斷;PC2=1,允許B口中斷。,INTR:中斷請(qǐng)求信號(hào),高電平有效。 當(dāng)OBF=1,ACK=1,且INTE=1時(shí),使INTR=1。,49,50,在方式1下,數(shù)據(jù)從CPU 通過(guò)8255送到I/O設(shè)備的過(guò)程如下:,CPU,8255,I/O設(shè)備,50,51,方式1輸出時(shí),端口對(duì)應(yīng)的控制信號(hào),,,51,52,方式1的使用場(chǎng)合 方式1常用于查詢方式傳送和中斷方式傳送。 查詢方式:CPU可通過(guò)讀取IBF、 OBF的狀態(tài)決定CPU是否進(jìn)行數(shù)據(jù)傳輸。 IBF(輸入:1—CPU讀取, 0—CPU不讀?。?、 OBF(輸出: 1—CPU寫(xiě)入數(shù)據(jù),0—CPU不寫(xiě)入數(shù)據(jù)) 中斷方式:A口、B口自動(dòng)向CPU申請(qǐng)中斷(若INTE=1)。,52,53,方式0與方式1并行傳送數(shù)據(jù)的接口應(yīng)用舉例:,甲方方式1發(fā)送,乙方方式0接收;共傳送1K字節(jié)的數(shù)據(jù),雙方均采用查詢的方式交換數(shù)據(jù)。雙方的端口地址均為300H—306H。,53,54,甲方發(fā)送數(shù)據(jù)的程序:,MOV DX,306H MOV AL,0A0H;工作方式字=10100000=A0H (A口方式1輸出) OUT DX,AL MOV AL,0DH;置位/復(fù)位字=00001101=0DH (PC6置‘’1’’,A口輸出中斷允許) OUT DX,AL LEA SI, BUFS MOV CX,3FFH; 發(fā)送的字節(jié)數(shù)=1KB MOV DX,300H MOV AL,[SI] OUT DX,AL; 向A口寫(xiě)第一個(gè)數(shù)據(jù),產(chǎn)生OBF信號(hào)送給乙方, 等待乙方的ACK信號(hào) INC SI; 地址指針加1 DEC CX; 字節(jié)計(jì)數(shù)器減1,54,55,L:MOV DX,304H; 讀C口,查詢發(fā)送中斷請(qǐng)求INTRA=1? IN AL, DX AND AL,08H ;PC3=1? JZ L; 如果沒(méi)有中斷請(qǐng)求,反復(fù)查詢;如果有,向A口寫(xiě)數(shù)據(jù) (因?yàn)槿绻麛?shù)據(jù)輸出緩沖器滿時(shí):INTRA=1) MOV DX, 300H MOV AL, [SI] OUT DX, AL; 向A口寫(xiě)第二個(gè)數(shù)據(jù), INC SI; 地址指針加1 DEC CX;字節(jié)計(jì)數(shù)器減1 JNZ L MOV AH,4CH INT 21H : BUFS DB 1024個(gè)字節(jié)的數(shù)據(jù),,55,56,乙方接收數(shù)據(jù)的程序:,MOV DX,306H MOV AL,98H; 工作方式字=10011000=98H (A口方式0輸入;C上半口輸入,下半口輸出) OUT DX,AL MOV AL,07H;置位/復(fù)位字=00000111=07H (PC3置‘’1’’,輸出ACK=1,為產(chǎn)生有效的ACK=0初始化) OUT DX,AL MOV DI,OFFSET BUFR MOV CX,3FFH; 發(fā)送的字節(jié)數(shù)=1KB L1:MOV DX,304H IN AL,DX;讀C口 AND AL, 80H ; 測(cè)試PC7=?來(lái)自甲方的 OBF=? JNZ L1; 當(dāng)OBFA=1,甲方輸出緩沖未滿;當(dāng)OBFA=0,甲方輸出緩沖 滿 MOV DX, 300H IN AL, DX MOV [DI],AL;,56,57,MOV DX, 306H; MOV AL,04H;PC3置“0”,產(chǎn)生ACK=0信號(hào),發(fā)給甲方 OUT DX,AL NOP NOP MOV AL, 07H; PC3置“1”,恢復(fù)原狀態(tài),為下一次準(zhǔn)備 OUT DX, AL INC DI DEC CX JNZ L1 MOV AH,4CH INT 21H : : BUFR DB 1024DUP(?),,57,58,8255A的工作方式2及其應(yīng)用,方式2 — 雙向輸入/輸出方式 一、工作特點(diǎn) 該方式只適用于A口(因其有輸入、輸出兩個(gè)鎖存器)。在該方式下,可使外設(shè)利用A口的8位數(shù)據(jù)線與CPU之間分時(shí)進(jìn)行雙向數(shù)據(jù)傳送,即在單一的8位數(shù)據(jù)線PA7-PA0上,既可輸出數(shù)據(jù)給外設(shè),又可以從外設(shè)輸入數(shù)據(jù)(當(dāng)然不能同時(shí)進(jìn)行)。輸入或輸出數(shù)據(jù)均鎖存。 A口工作在方式2時(shí),C口的PC7~PC3被規(guī)定為控制信號(hào),配合A口使用。圖中控制信號(hào)的含義與方式1中完全相同。,58,59,二、方式2的控制信號(hào),,,59,60,可以看出,雙向傳輸方式不過(guò)是A口在方式1情況下輸出和輸入的組合。此時(shí),INTE1由PC6置位決定, INTE2由PC4置位決定。只要輸入、輸出方式有一個(gè)發(fā)出中斷申請(qǐng),則INTRA=1。 當(dāng)A口工作在方式2時(shí),B口可工作在方式0或方式1。在方式1情況下,可用PC2~PC0作為控制信號(hào)。,60,使用場(chǎng)合 根據(jù)方式2的工作特點(diǎn),若有個(gè)外設(shè)具有輸入、輸出功能,但不是同時(shí)輸入輸出數(shù)據(jù),可采用此方式。如磁盤(pán)驅(qū)動(dòng)器,既可接收主機(jī)來(lái)的數(shù)據(jù),也可向主機(jī)提供數(shù)據(jù),而這種輸入、輸出的過(guò)程是分時(shí)進(jìn)行的。可將磁盤(pán)驅(qū)動(dòng)器的數(shù)據(jù)線與8255A的PA7~PA0相連,再將8255A的PC7~PC3與磁盤(pán)驅(qū)動(dòng)器的控制線、狀態(tài)線相連,即可使用。,61,62,補(bǔ)充題1:,要求針對(duì)圖示電路連線圖編寫(xiě)8255的初始化程序,同時(shí)實(shí)現(xiàn)開(kāi)關(guān)閉合時(shí)對(duì)應(yīng)的指示燈點(diǎn)亮。8255的端口地址由圖示的譯碼電路確定。,62,補(bǔ)充題2:,假設(shè)系統(tǒng)分配給8255的端口地址為0224H—022AH,要求用LED數(shù)碼管顯示開(kāi)關(guān)閉合的個(gè)數(shù)(0,1,…8)。已知LED數(shù)碼管的顯示編碼保存在內(nèi)存DISBUF起始處。編寫(xiě)該系統(tǒng)的初始化程序和工作程序。,63,64,8255A的應(yīng)用舉例,【例】8255A作為矩陣鍵盤(pán)接口,工作于方式0,如圖示。試編程讀取矩陣鍵盤(pán)的按鍵掃描碼。 矩陣式鍵盤(pán)是非編碼鍵盤(pán)的一種,指按鍵開(kāi)關(guān)按行列排列,形成二維矩陣的結(jié)構(gòu)。圖6.10中的鍵盤(pán)為4行×4列的矩陣鍵盤(pán),其行線接8255A的端口A的低4位,列線接端口B的低4位。8255A的A口設(shè)為方式0輸出,B口設(shè)為方式0輸入。 識(shí)別鍵盤(pán)上哪個(gè)鍵被按下的過(guò)程稱為鍵盤(pán)掃描,其過(guò)程如下:先使行線全為“0”,若此時(shí)無(wú)鍵按下,則列線應(yīng)為全“1”;若有鍵按下,則相應(yīng)位置的列線應(yīng)為“0”。有鍵按下時(shí),還要判斷按下的鍵在哪行哪列,即讀取按鍵的掃描碼。方法之一是逐行掃描法,也就是先掃,64,65,矩陣鍵盤(pán)接口,65,66,8255A的應(yīng)用舉例,描第一行,使PA0=0,PA3~PA1為1,判別列線有無(wú)低電平。若有,則可識(shí)別出第一行哪一列上有鍵按下(此時(shí)A口、B口的值即為該鍵的掃描碼);若沒(méi)有,則繼續(xù)掃描第二行,使PA1=0,其余為1,依上述方法判別,直至掃描完所有4行,總可以找到按下的按鍵。 當(dāng)然,在檢測(cè)到有鍵按下后,還必須消除按鍵的抖動(dòng)。消除按鍵抖動(dòng)的常用方法是在檢測(cè)到有鍵按下后,延長(zhǎng)一定的時(shí)間(通常為20ms),再檢查該鍵是否仍被按著,若是,才能認(rèn)定該鍵確實(shí)被按下了,而不是干擾信號(hào)。 設(shè)圖6.10中8255A的端口地址為80~86H,其鍵盤(pán)掃描程序段如下:,66,67,8255A的應(yīng)用舉例,;判別是否有鍵按下 START:MOV AL,82H ;設(shè)置8255A的工作方式字 OUT 86H,AL MOV AL,00H ;給A口輸出00H OUT 80H,AL WAIT1:IN AL,82H ;讀入B口的值 AND AL,0FH ;取低4位 CMP AL,0FH ;比較 JZ WAIT ;結(jié)果為0,則無(wú)鍵按下,繼續(xù)等待 CALL DELAY;調(diào)用延時(shí)子程序,消除按鍵抖動(dòng) IN AL,82H ;再次讀B口,測(cè)試有無(wú)低電平 AND AL,0FH CMP AL,0FH JZ WAIT ;結(jié)果為0,則是干擾,繼續(xù)等待 ;判斷哪個(gè)鍵按下,67,68,8255A的應(yīng)用舉例,MOV CL,4 ;設(shè)置計(jì)數(shù)初值 MOV AL,0EH ;使A0=0,準(zhǔn)備先掃描第一行 CHECK:OUT 80H,AL MOV AH,AL ;保存行掃描碼 IN AL,82H ;讀B口 AND AL,0FH ;取低4位 CMP AL,0FH ;比較 JNZ TABLE ;不為0,則該行有鍵按下,轉(zhuǎn)鍵值處理子程序 MOV AL,AH ;無(wú)鍵按下,則修改行掃描碼 ROL AL,1 DEC CL ;行數(shù)減1 JNZ CHECK ;未掃描完4行,則繼續(xù) JMP START ;重新掃描 TABLE:CALL KEYVALUE ;此時(shí)AH中為行掃描碼,AL中為列掃描碼,調(diào)用鍵值處理子程序,68,69,8255A的應(yīng)用舉例,;等待按鍵釋放 MOV AL,00 ;向A口輸出00H OUT 80H,AL WAIT2:IN AL,82H ;讀B口 AND AL,0FH ;取低4位 CMP AL,0FH ;比較 JNZ WAIT2 ;按鍵未釋放,則繼續(xù)等待 ... ;后續(xù)處理 對(duì)于圖6.10的電路,還可以采用反轉(zhuǎn)法讀取按鍵的掃描碼,即在已辨別出有鍵按下,要讀取行和列的掃描碼時(shí),可重新設(shè)置8255A的工作方式字,使A口為輸入,B口為輸出。然后將剛才B口讀入的列值從B口輸出,再?gòu)腁口讀入行值。這樣,從A口讀入的值為行掃描碼,,69,70,8255A的應(yīng)用舉例,從B口讀入的值為列掃描碼。根據(jù)上述方法,讀者可以自行編寫(xiě)出程序,這里略過(guò)。 【例6-6】 8255A作為打印機(jī)接口,工作于方式0,如圖6.11所示。試編寫(xiě)程序?qū)崿F(xiàn):CPU用查詢方式向打印機(jī)輸出26個(gè)英文字母。8255A的端口地址為80H~86H。 打印的工作過(guò)程如下:當(dāng)主機(jī)要向打印機(jī)輸出字符時(shí),先查詢打印機(jī)忙信號(hào),若打印機(jī)正在處理一個(gè)字符或正在打印一行字符,則BUSY=1;反之,則BUSY=0。因此,當(dāng)查詢到BUSY=0時(shí),則可通過(guò)8255A向打印機(jī)輸出一個(gè)字符。此時(shí),要給打印機(jī)的選通端STB一個(gè)負(fù)脈沖,將字符選通到打印機(jī)的輸入緩沖器中。 解:由電路圖可知,A口作為傳送字符的通道,工作于,70,71,8255A作為打印機(jī)接口(查詢方式),71,72,8255A的應(yīng)用舉例,方式0輸出;C口高四位工作于方式0輸出,C口低四位工作于方式0輸入。故8255A的方式選擇控制字為10000001B,即81H。其程序如下: DATA SEGMENT EWO DB ‘a(chǎn)bcdefghijklmnopqrstuvwxyz’ DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA ;裝載DS MOV DS,AX MOV AL,81H ;設(shè)置8255A方式選擇控制字 OUT 086H,AL MOV AL,0DH ;用C口置/復(fù)位控制字使PC6=1 OUT 086H,AL MOV BX,26 ;設(shè)置計(jì)數(shù)初值 LEA SI,EWO ;內(nèi)存緩沖區(qū)的首地址送SI,72,73,8255A的應(yīng)用舉例,LL:IN AL,084H ;讀C口的值 AND AL,04H JNZ LL ;不為0,則PC2=1,打印機(jī)正忙,等待 MOV AL,[SI] ;打印機(jī)不忙,則送字符給A口 OUT 080H,AL MOV AL,0CH ;使=0 OUT 086H,AL INC AL ;使=1,則得一個(gè)負(fù)脈沖輸出 OUT 086H,AL INC SI ;修改地址指針 DEC BX ;修改計(jì)數(shù)值 JNZ LL ;26個(gè)字母未輸完,則繼續(xù) MOV AH,4CH ;返回DOS系統(tǒng) INT 21H CODE ENDS END START,73,74,8255A的應(yīng)用舉例,【例6-7】 8255A也可用作中斷方式工作的并行打印機(jī)接口,如圖6.12所示。試編寫(xiě)程序?qū)崿F(xiàn):CPU用查詢方式向打印機(jī)輸出26個(gè)英文字母。8255A的端口地址為80H~86H。8259A的端口地址為20H、21H。 圖中,8255A的A口工作在方式1輸出,用于給打印機(jī)傳送字符。C口的PC7、PC6自動(dòng)成為A口的控制信號(hào),但由于PC7(OBFA)產(chǎn)生的信號(hào)不能滿足打印機(jī)STB選通端的要求,故不用PC7端,而用軟件在PC0端產(chǎn)生一個(gè)負(fù)脈沖,提供給打印機(jī)的STB端。另外,C口的PC3作為中斷請(qǐng)求信號(hào)送到中斷控制器8259A的IR3端,對(duì)應(yīng)的中斷類型號(hào)為0BH。 解:由電路原理圖可知,8255A的A口工作于方式1輸出,,74,75,8255A作為打印機(jī)接口(中斷方式),75,76,8255A的應(yīng)用舉例,則其方式選擇控制字為10100000B,即A0H。程序如下: DATA SEGMENT EWO DB ‘a(chǎn)bcdefghijklmnopqrstuvwxyz’ DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,SEG IS8255 ;設(shè)置中斷向量0BH MOV DS,AX MOV AX,OFFSET IS8255 MOV DX,AX MOV AX,250BH INT 21H MOV AX,DATA ;裝載DS MOV DS,AX MOV AL,0A0H ;設(shè)置8255A方式選擇控制字 OUT 086H,AL,76,77,8255A的應(yīng)用舉例,MOV AL,01H ;用C口置/復(fù)位控制字使PC0=1 OUT 086H,AL MOV AL,0DH ;用C口置/復(fù)位控制字使PC6=1 OUT 086H,AL IN AL,21H ;讀8259A的中斷屏蔽字 AND AL,0F7H ;開(kāi)放8259A的IR3中斷 OUT 21H,AL MOV CL,26 ;設(shè)置計(jì)數(shù)初值 LEA SI,EWO ;內(nèi)存緩沖區(qū)的首地址送SI STI ;開(kāi)中斷 LL:CMP CL,0 ;26個(gè)英文字母未輸完,則繼續(xù)等待中斷 JNZ LL MOV AH,4CH ;返回DOS系統(tǒng) INT 21H IS8255 PROC MOV AL,[SI] ;打印機(jī)不忙,則送字符給A口 OUT 080H,AL,77,78,8255A的應(yīng)用舉例,MOV AL,0CH ;使STB=0 OUT 086H,AL INC AL ;使STB=1,則得一個(gè)負(fù)脈沖輸出 OUT 086H,AL INC SI ;修改地址指針 DEC CL ;修改計(jì)數(shù)值 JNZ NEXT MOV AL,0CH ;使PC6置為0,關(guān)閉打印機(jī)中斷 OUT 086H,AL IN AL,21H ;讀8259A的屏蔽字 OR AL,08H ;恢復(fù)8259A原有的屏蔽字 OUT 21H,AL NEXT:MOV AL,20H ;給8259A發(fā)EOI命令 OUT 20H,AL IRET IS8255 ENDP CODE ENDS END START,78,79,8255A在PC機(jī)中的應(yīng)用,在IBM PC/XT微機(jī)的應(yīng)用 在IBM PC/XT微機(jī)系統(tǒng)中,使用一片8255A,端口地址為60~7FH,常用的是60H~63H(64H~7FH為映像地址,A4未接),分別是A口、B口、C口、控制端口的地址。其連接電路如圖6.13所示。 在XT機(jī)中,8255A工作在方式0。A口在正常工作時(shí)為輸入,用來(lái)讀取鍵盤(pán)掃描碼;在加電自檢時(shí)為輸出,輸出當(dāng)前檢測(cè)部件的標(biāo)志信號(hào)。B口為輸出方式,用于鍵盤(pán)控制、RAM和I/O通道檢驗(yàn)、揚(yáng)聲器的啟動(dòng)和控制。C口為輸入方式,低4位讀取系統(tǒng)配置開(kāi)關(guān)DIP的值以確定系統(tǒng)工作狀態(tài),如是否使用8087、選擇RAM容量大小、顯示配置類型以及所連接的軟盤(pán)驅(qū)動(dòng)器的數(shù)量;,79,80,圖8.13 PC/XT機(jī)的8255A連線圖,80,81,8255A在PC機(jī)中的應(yīng)用,高4位讀取系統(tǒng)狀態(tài)測(cè)試位,如揚(yáng)聲器的狀態(tài)、RAM和I/O通道的奇偶檢驗(yàn)結(jié)果等。 在圖8.13中,系統(tǒng)配置開(kāi)關(guān)的8個(gè)信號(hào)分兩組均接到PC3~PC0,由PB3決定是讀取DIP開(kāi)關(guān)的低四位還是高四位。工作過(guò)程如下:要讀取低四位,CPU先使PC3=0,一方面該信號(hào)經(jīng)74LS04反相后為高電平,由于7407為同相OC門(mén)(集電極開(kāi)路),則7407的輸出全為高阻態(tài),不會(huì)影響外部信號(hào)的狀態(tài);另一方面PC3信號(hào)使三態(tài)緩沖器74LS244的控制端1G、2G有效,則緩沖器打開(kāi),DIP開(kāi)關(guān)的低四位信號(hào)SW-1~SW-4送到PC3~PC0 ,可供CPU讀取。要讀取DIP開(kāi)關(guān)的高四位,先使PC3=1,一方面該信號(hào)使三態(tài)緩沖器74LS244的控制端1G、2G,81,82,8255A在PC機(jī)中的應(yīng)用,無(wú)效,則禁止緩沖器輸出;另一方面PC3信號(hào)經(jīng)74LS04反相后為低電平,則7407的輸出為低電平,DIP開(kāi)關(guān)的低四位信號(hào)SW-5~SW-8送到PC3~PC0 ,可供CPU讀取。由以上原理,讀者可以自行編寫(xiě)出讀DIP開(kāi)關(guān)的程序段,這里略過(guò)。 在80286以上的微機(jī)中的應(yīng)用 在80286以上的微機(jī)系統(tǒng)中, 8255A的對(duì)應(yīng)電路被集成到多功能芯片內(nèi)部。為了保持兼容性,系統(tǒng)保留了8255A的端口地址和它的相應(yīng)功能。也就是說(shuō),仍可以用60H地址讀取鍵盤(pán)掃描碼,用PB1和PB0控制發(fā)聲系統(tǒng)。,82,83,8255A的實(shí)驗(yàn)設(shè)計(jì),8.4.1 實(shí)驗(yàn)?zāi)康?掌握8255A的工作方式及應(yīng)用編程。 掌握8255A的典型應(yīng)用電路接法。 8.4.2 實(shí)驗(yàn)設(shè)備 PC機(jī)一臺(tái),ADEK88ET實(shí)驗(yàn)裝置一套。 8.4.3 實(shí)驗(yàn)內(nèi)容 基本輸入輸出實(shí)驗(yàn)。編寫(xiě)程序,使8255A的A口為輸出,B口為輸入,完成開(kāi)關(guān)到LED燈的數(shù)據(jù)傳輸。要求只要開(kāi)關(guān)撥動(dòng),LED燈的顯示就要改變。 流水燈顯示實(shí)驗(yàn)。編寫(xiě)程序,使8255A的A口為輸出,實(shí)現(xiàn)8位LED燈的循環(huán)顯示。,83,84,8255A的實(shí)驗(yàn)設(shè)計(jì),8.4.4 實(shí)驗(yàn)原理 可編程外圍接口芯片8255A是Intel公司生產(chǎn)的通用并行接口芯片,它有A、B、C三個(gè)8位并行接口,用+5V單電源供電,能在以下三種工作方式下工作:方式0—基本輸入/輸出方式,方式1—選通輸入/輸出方式,方式2—雙向輸入/輸出方式。8255A的內(nèi)部結(jié)構(gòu)和引腳如圖6.1和6.2所示。8255A的方式選擇控制字和C口置/復(fù)位控制字如圖6.3和6.4所示。 8.4.4 實(shí)驗(yàn)步驟及說(shuō)明 基本輸入/輸出實(shí)驗(yàn) 本實(shí)驗(yàn)使8255A的端口A工作在方式0輸出,端口B工作,84,85,8255A的實(shí)驗(yàn)設(shè)計(jì),在方式0輸入。用一組開(kāi)關(guān)信號(hào)接入端口B,端口A的輸出線接至一組LED燈上,然后通過(guò)對(duì)8255A的編程實(shí)現(xiàn)其輸入/輸出功能。8255A的內(nèi)部連線圖和LED燈電路如圖8.14所示,其程序流程圖如圖8.15所示。 具體實(shí)驗(yàn)步驟如下: 完成硬件連接。實(shí)驗(yàn)箱上的開(kāi)關(guān)K1~K8分別接至8255A的PB0~PB7,8255A的PA0~PA7分別接至LED燈DL1~DL8,8255A的片選信號(hào)CS55接至地址譯碼信號(hào)218H~21FH。 編寫(xiě)程序,檢查無(wú)誤后匯編、連接。 打開(kāi)實(shí)驗(yàn)箱電源,下載并運(yùn)行程序,撥動(dòng)開(kāi)關(guān)組,觀察LED燈的顯示。 流水燈顯示實(shí)驗(yàn) 本實(shí)驗(yàn)使8255A的端口A工作在方式0輸出。端口A的,85,86,圖8.14 8255A的內(nèi)部連線圖及LED燈電路,86,87,8255A的實(shí)驗(yàn)設(shè)計(jì),輸出線接至一組LED燈上。然后編寫(xiě)程序,實(shí)現(xiàn)LED燈的循環(huán)顯示。8255A流水燈顯示實(shí)驗(yàn)的程序流程圖如圖8.16所示。 具體實(shí)驗(yàn)步驟如下: 完成硬件連接。8255A的PA0~PA7分別接至LED燈DL1~DL8,8255A的片選信號(hào)CS55接至地址譯碼信號(hào)218H~21FH。 編寫(xiě)程序,檢查無(wú)誤后匯編、連接。 打開(kāi)實(shí)驗(yàn)箱電源,下載并運(yùn)行程序,觀察LED燈的顯示。,87,88,圖8.15 8255A基本輸入/輸出實(shí)驗(yàn)的程序流程圖,圖8.16 8255A流水燈顯示實(shí)驗(yàn)的程序流程圖,88,作業(yè),P224 8.1,89,- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來(lái)的問(wèn)題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
20 積分
下載 |
- 配套講稿:
如PPT文件的首頁(yè)顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開(kāi)word文檔。
- 特殊限制:
部分文檔作品中含有的國(guó)旗、國(guó)徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 計(jì)算機(jī)硬件 網(wǎng)絡(luò) 并行 接口 ppt 課件
鏈接地址:http://www.820124.com/p-1482764.html