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