第五章可編程并行通信接口8255A_第1頁
第五章可編程并行通信接口8255A_第2頁
第五章可編程并行通信接口8255A_第3頁
第五章可編程并行通信接口8255A_第4頁
第五章可編程并行通信接口8255A_第5頁
已閱讀5頁,還剩66頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、17.2 可編程并行接口8255A一、8255A的外部特性和內(nèi)部結(jié)構(gòu)18255A的基本特性(1)具有兩個8位口(A和B)和兩個4位口(C口高低四位)。 為Intel系列CPU與外設(shè)之間提供TTL電平兼容的接口。 PC口還具有按位置位復(fù)位功能,為按位控制提供了強大的支持。(2)設(shè)置有3種工作方式:0方式、1方式和2方式(雙向傳送)。 能適應(yīng)CPU與IO接口之間的多種數(shù)據(jù)傳送方式的要求。如無條件傳送,應(yīng)答方式(查詢)傳送,中斷方式傳送。2 (3)提供兩條編程命令(方式字和控制字)。 用戶可根據(jù)外界條件(I/O設(shè)備需要哪些信號線以及它能提供哪些狀態(tài)線)來使用8255A構(gòu)成多種接口電路、組建微機應(yīng)用系

2、統(tǒng)。 (4)具有可供查詢的狀態(tài)字。 可保留8255A執(zhí)行命令過程中和執(zhí)行命令完畢后,所產(chǎn)生的狀態(tài)。3(5)8255A的 PC口的使用比較特殊??勺鲾?shù)據(jù)口; 工作在1方式和2方式時,部分信號線被分配作專用聯(lián)絡(luò)信號;可以進行按位控制; 在CPU讀取8255A狀態(tài)時,PC口又作1、2方式的狀態(tài)口用。 這是使用8255的難點所在,學習時要特別予以注意。(6)8255A芯片內(nèi)部主要由控制寄存器、狀態(tài)寄存器和數(shù)據(jù)寄存器組成。428255A的外部引線與內(nèi)部結(jié)構(gòu)(1)外部引腳面向系統(tǒng)總線的信號線D0D7: 雙向數(shù)據(jù)線。CS : 片選信號。 A1、A0:片內(nèi)端口尋址。 直接與系統(tǒng)地址線相連。RD : 讀信號。W

3、R : 寫信號。 RESET: 復(fù)位信號線,高電平有效。 它清除控制寄存器并將8255A的A、B、C三個端口均置為輸入方式;輸出寄存器和狀態(tài)寄存器被復(fù)位,并屏蔽中斷請求;24條面問外設(shè)的信號線呈現(xiàn)高阻懸浮狀態(tài)。直到用方式命令才能改變,使其進入用戶所需的工作方式。 5面向IO設(shè)備的信號線有:PA0一PA7:端口A的輸入/輸出線PB0一PB7:端口B的輸入/輸出線PC0一PC7:端口C的輸入/輸出線注: . A、B口只作輸入/輸出的數(shù)據(jù)口,有時也可用于讀取外設(shè)的狀態(tài)信號(如打印機的“忙”狀態(tài)),但它們都不是專門的狀態(tài)口。 . A、B口作為數(shù)據(jù)口輸入/輸出時,是8位同時行動,即便只用其中的一位,也要

4、同時輸入/出8位。 6. C口作用與8255A的工作方式有關(guān): a. 作數(shù)據(jù)口:PC47位與A口組成A組;PC03位與B口組成B組。而且是4位一起行動。 b. 作狀態(tài)口:在方式1和2時,C口是8255A的狀態(tài)口。且其狀態(tài)字內(nèi)容與該口的外部引腳連線無關(guān)。 c. 作專用(固定)聯(lián)絡(luò)(握手)信號。 d. 作按位控制用。C口的任何一個引腳都可以輸出作為控制信號的高/低電平。 7數(shù)據(jù)總線緩沖器:三態(tài)雙向8位緩沖器。它是8255A與CPU系統(tǒng)數(shù)據(jù)總線的接口。所有數(shù)據(jù)的收/發(fā), CPU發(fā)出的控制字和從8255A來的狀態(tài)信息都通過該緩沖器傳送。 8讀寫控制邏輯:由RD,WR,CS以及端口選擇信號A1A0等組成

5、。 讀寫控制邏輯控制了總線的開放與關(guān)閉和信息傳送的方向。以便把CPU的控制命令或輸出數(shù)據(jù)送到相應(yīng)的端口;或把外設(shè)的信息或輸入數(shù)據(jù)從相應(yīng)的端口送到CPU。 98255A的基本操作及在TP86A、PCXT和實驗平臺上的端口地址如下表所示。 10數(shù)據(jù)端口A、B、C:8255A包括三個8位輸入輸出端口(PORT)。每個端口都有一個數(shù)據(jù)輸入寄存器和一個數(shù)據(jù)輸出寄存器。 A口和B口各具有一個8位輸出鎖存器緩沖器和一個8位輸入鎖存器; C口具有一個8位輸出鎖存器緩沖器和一個8位輸入緩沖器。 C口與A口和B口配合,可輸出控制信號和從外部輸入狀態(tài)信號。 在實際應(yīng)用中,PC口的8位可分為兩個4位端口(0方式下),

6、也可以分成一個5位端口和一個3位端口(2方式下)來使用。11A組和B組控制電路:控制A、B和C三個端口的工作方式。 A組控制A口和C口的上半部(PC7-PC4)的工作方式和輸入輸出。 B組控制B口和C口的下半部(PC3-PC0)的工作方式和輸入輸出。 A組、B組的控制寄存器還接收按位控制命令,以實現(xiàn)對PC口的按位置位/復(fù)位操作。12二、8255A的編程命令 2個編程命令: 工作方式命令 PC口的按位操作命令。這2個編程命令都是控制字,初始化時將被送入同一個命令端口。8255A通過特征位來區(qū)別它們。131. 方式命令 用于指定并行端口PA、PB、PC用作輸入或輸出端口;選擇8255的工作方式。本

7、方式字實現(xiàn)對8255A的初始化??梢姡篈組有三種方式(方式0、l、2)、而B組只有二種工作方式(方式0、1)。端口PC分成兩部分,上半部歸A組,下半部歸B組。 端口的工作方式是:置1指定為輸入;置0指定為輸出。利用方式字的不同代碼組合,可以分別選擇A組和B組的工作方式和各端口的輸入輸出。 1415值得注意的是: PC口的PC0PC7被分配給指定為方式1的A口和B口作為專用的聯(lián)絡(luò)信號線。 1方式下專用聯(lián)絡(luò)線的分配如下:A口:輸入時:PC3、PC4、PC5 輸出時:PC3、PC6、PC7B口:PC0、PC1、PC2 一旦A口或B口被指定為1方式,就獲得了相應(yīng)的專用聯(lián)絡(luò)線,此時它們各有固定的輸入或輸

8、出方向。并且,在方式字中對PC口指定的輸入/輸出方向?qū)λ鼈儫o效,僅對非專用聯(lián)絡(luò)線有效。16 PC口的PC3PC7被分配給指定為方式2的A口作為專用的聯(lián)絡(luò)信號線。 同理,只要A口被指定為方式2,聯(lián)絡(luò)信號線的輸入或輸出方向是固定的。方式字中對PC口指定的輸入/輸出方向?qū)λ鼈儫o效,僅對非專用聯(lián)絡(luò)線PC0 PC2有效。17例:把A口設(shè)置為方式0輸入,B口設(shè)成方式l輸出,PC3設(shè)成輸入,C上半口(PC7PC4)設(shè)為方式0輸出。試給出8255A的初始化程序段。MOV AL,95H ;方式控制字為10010101OUT 63H,AL ;寫入控制寄存器 注:由于B口設(shè)成方式l,所以PC0PC2為固定聯(lián)絡(luò)線。此

9、時方式字中的D0=1只能指定PC3為輸入方式,對PC0PC2則無效。A口被設(shè)置成方式0,沒有固定的聯(lián)絡(luò)線,故方式字中的D3=0對PC7PC4有效,都被設(shè)置為輸出方式。 182. 按位置位/復(fù)位命令字 用于指定PC口的某一位輸出高電平或低電平。利用按位置值復(fù)位控制字可以使PC口的8根線中的任意一根置成高電平輸出或低電平輸出。例:將PC口的PC2引腳置位的程序段: MOV DX,303H ;8255A控制口地址 MOV AL,05H ;使PC21的控制字 OUT DX,AL ;送到控制口 如果要使該引腳復(fù)位,則用下列程序段實現(xiàn): MOV DX,303H ;8255A控制口地址 MOV AL,04H

10、 ;使PC20的控制字 OUT DX,AL ;送到控制口 19 注:按位置位復(fù)位命令可以放在8255A初始化以后的程序中的任何位置。產(chǎn)生的輸出信號,可作為控制開關(guān)的通斷,繼電器的吸臺釋放,馬達的啟停等操作的選通信號。 另外,在后面將要討論的8255A的狀態(tài)字中的中斷允許位INTE的置位和復(fù)位,即允許8255A提出中斷與禁止8255A提出中斷,也是采用這個按位控制的命令字來實現(xiàn)的。 20例:利用8255A的PC7產(chǎn)生負脈沖,作為打印機接口電路的數(shù)據(jù)選通信號,程序段為:MOV DX,303H ;命令口MOV AL,0EH ;PC7=0OUT DX,ALNOP ;延時以增加脈沖寬度NOP MOV A

11、L,0FH ;PC7=1OUT DX,AL21 另外,需要指出的是:按位輸出控制的功能不僅C口具有,A口、B口也有按位的輸出控制,只不過實現(xiàn)的方法不同。 C口按位輸出控制是以命令的形式送到命令口去執(zhí)行的。而A口、B口的按位輸出控制是以送數(shù)據(jù)到A口、B口來實現(xiàn)的。 當然,能夠這樣做的條件是8255A的輸出有鎖存能力。當定義數(shù)據(jù)口為輸出而對其執(zhí)行IN指令時,所讀到的內(nèi)容就是上次輸出時鎖存的數(shù)據(jù),而不是讀入外設(shè)送來的數(shù)據(jù)。 其具體作法是:先對端口進行讀操作,將讀入的原輸出值“或”上一個字節(jié)(該位為1,其他位為0),或者“與”上一個字節(jié)(該位為0,其他位為1),然后再送到同一端口即可實現(xiàn)對該位的置位,

12、復(fù)位控制而不影響其他位的狀況。22例如,使B口的PB6和PB4同時置位復(fù)位,其程序如下:MOV DX,301H ;PB數(shù)據(jù)口地址IN AL,DX ;讀入原輸出值MOV AH,AL ;保存原輸出值OR AL,50H ;使PB6PB411OUT DX,AL ;同時輸出PB6PB4.AND AL,0AFH ;使PB6PB400OUT DX,AL ;同時輸出PB6PB4237.3 8255A的0方式及其應(yīng)用一、特點 (1)0方式是基本輸入/輸出工作方式。 本方式下24條IO線全部由用戶分配功能,無專用聯(lián)絡(luò)信號。 這種方式不能采用中斷方式與CPU交換數(shù)據(jù),只能用于簡單(無條件)傳送,或應(yīng)答(查詢)傳送。

13、 方式0使8255或作為緩沖輸入設(shè)備,或作為鎖存輸出設(shè)備。 (即:輸出鎖存,輸入只有緩沖能力而無鎖存功能。)24采用應(yīng)答式傳送時,用A口和B口傳送數(shù)據(jù),而把C口的上、下半部作應(yīng)答用的控制與狀態(tài)信號線。但是這種情況與1、2方式中固定的專用聯(lián)絡(luò)信號線不同、C口中的哪根線充當何種應(yīng)答功能是不固定的,由用戶任意指定。25 在方式0中,C口雖可對上下兩部分獨立地定義為輸入或者輸出,但是CPU對其操作時是以字節(jié)為單位,而不是單獨讀寫某一個4位端口。若這兩個端口一個定義為輸入,另一個定義為輸出,CPU讀C口時,定義為輸出的4位無效(指從它們讀入的數(shù)據(jù)無效,因為它們不是外設(shè)的輸入信號,而是它們最近一次輸出時鎖

14、存的信號);CPU向C口寫入時,定義為輸入的4位不受影響(此時它們不接受CPU寫入數(shù)據(jù),只接收外設(shè)的輸入信號)。26 (2)0方式下,只能把C口的高4位為一組或低4位為一組同時輸入或輸出,不能再把4位中一部分作輸入另一部分作輸出。 (3)端口信號線之間無固定的時序關(guān)系,由用戶根據(jù)數(shù)據(jù)傳送的要求決定輸入輸出的操作過程。0方式?jīng)]有設(shè)置固定的狀態(tài)字。 (4)是單向I0,一次初始化只能指定端口作輸入或作輸出,不能指定端口同時既作輸入又作輸出。27 例:為某微機系統(tǒng)設(shè)計一個打印機接口,并且,通過該接口,CPU采用查詢方式把存放在BUF緩沖區(qū)的256個字符(ASCII碼)送去打印。 分析:打印接口直接面向

15、的對象是打印機接口標準,而不是打印機本身。所以,打印機接口的設(shè)計要按照接口標準的要求來進行。并行打印機接口標準Centronics定義了36芯插頭座,這里只簡單介紹其中主要的幾個信號線定義和工作時序。DATA18:數(shù)據(jù)輸入信號。STROBE: 數(shù)據(jù)選通。用于將DB上的數(shù)據(jù)打入打印機內(nèi)部的數(shù)據(jù)輸入寄存器。BUSY: 打印機忙ASK: 打印機準備接收數(shù)據(jù)28 由并行打印機接口數(shù)據(jù)傳送時序可知,在=1時打印機“忙”,不能接收CPU的新數(shù)據(jù),只有在=0時才能接收新數(shù)據(jù)。因此可以描述數(shù)據(jù)打印過程如下: 29 當CPU通過接口要求打印機打印數(shù)據(jù)時,首先查看BUSY信號,若BUSY=0,則將數(shù)據(jù)通過DB送往

16、接口。 等數(shù)據(jù)在與打印機連接的數(shù)據(jù)引腳上穩(wěn)定后,CPU再發(fā)一個選通信號STROBE,將該數(shù)據(jù)存入打印機內(nèi)部的數(shù)據(jù)輸入寄存器。并由STROBE的上升沿使打印機的信號BUSY=1,即“忙”。(注意:可見打印機的BUSY信號的置1不是打印機完成的,而是由STROBE信號引起的)。 待打印機處理完該數(shù)據(jù)后,它產(chǎn)生信號ACK=0,表示打印機準備就緒。同時ACK的前沿或后沿(可任選)使BUSY=1,即“閑”。此時一個數(shù)據(jù)的傳送過程結(jié)束。可進行下一個數(shù)據(jù)的傳送。 30設(shè)計: 接口電路: 采用8255A芯片,用A口作數(shù)據(jù)口向打印機傳送數(shù)據(jù),用PC7發(fā)送選通信號,用PC2接收BUSY信號。 8255A數(shù)據(jù)線與系

17、統(tǒng)總線的低8位相連,讀寫引腳分別接8288總線控制器的輸出信號和。 設(shè)8255A的A、B、C及控制口地址分別為300H303H。 故可用A1、A0作片內(nèi)端口尋址。用A9A2配合AEN實現(xiàn)對8255A的片選。 3132接口驅(qū)動程序 33347.4 8255A的1方式及其應(yīng)用一、特點(1)1方式是選通輸入/輸出方式(應(yīng)答方式),需設(shè)置專用的聯(lián)絡(luò)信號線及中斷請求線。因此,這種方式通常用于查詢(條件)傳送或中斷傳送,本方式下,數(shù)據(jù)的輸入輸出(即:A、B口)都有鎖存能力。(2)PA和PB為數(shù)據(jù)口,而PC口分配作聯(lián)絡(luò)信號用的引腳,用戶不能再指定作其他用途。(3)各聯(lián)絡(luò)信號線之間有固定的時序關(guān)系,傳送數(shù)據(jù)時

18、,要嚴格按照時序進行。(4)輸入輸出操作產(chǎn)生固定的狀態(tài)字,這些狀態(tài)信息可作為查詢或中斷請求之用,可從PC口讀取。35 (5)單向傳送。一次初始化只能設(shè)置在一個方向上傳送。不能同時作兩個方向的傳送。 (6)在1方式下,PC口用于聯(lián)絡(luò)的各線的傳輸方向固定,與方式字中D3或D0位的設(shè)置無關(guān),通常在8255A初始化時使之為0即可。 36二、1方式下聯(lián)絡(luò)信號線的定義及其時序1. 方式1下輸入聯(lián)絡(luò)信號線的定義及其時序 聯(lián)絡(luò)信號的定義 當A口和B口為輸入時,各指定了C口的3根線作為8255A與外設(shè)及CPU之間的應(yīng)答信號,如圖所示。 37STB:外設(shè)送到8255A的“輸入選通”信號,低電平有效。 當它變?yōu)榈碗?/p>

19、平時,將數(shù)據(jù)鎖存到8255A端口的輸入數(shù)據(jù)寄存器。 IBF:8255A給外設(shè)的應(yīng)答信號,高電平有效。 當IBF=1,說明8255A的“輸入緩沖器滿”,數(shù)據(jù)尚未被CPU取走,通知外設(shè)不能送新數(shù)據(jù); 當IBF=0時,說明輸入緩沖器已空,允許外設(shè)送新數(shù)據(jù)。 38INTR:8255A送到CPU的“中斷請求”信號,高電平有效。 當INTR=1時,請求CPU從8255A讀數(shù)。使INTR變?yōu)楦唠娖降臈l件是: STB1(即數(shù)據(jù)已打入8255A輸入鎖存器),IBF1(輸入緩沖器滿), INTE1(中斷請求被允許),三個條件都具備時,才使INTR變高,向CPU發(fā)出中斷請求。 “中斷允許”信號INTE是8255A為

20、控制中斷而設(shè)置的內(nèi)部控制信號。當INTE1時,允許中斷,當INTE0時,禁止中斷。這要通過向C口寫入按位置位復(fù)位命令來設(shè)置,內(nèi)部不能自動產(chǎn)生該控制信號。 39 1方式輸入的工作時序 40 (1)數(shù)據(jù)輸入時,外設(shè)處于主動地位,當外設(shè)準備好數(shù)據(jù)并放到數(shù)據(jù)線上時,首先發(fā)STB信號。由它把數(shù)據(jù)輸入到8255A。 (2) STB的下降沿約300NS,在數(shù)據(jù)已鎖存到8255A的鎖存器后,引起IBF=1。禁止輸入新的數(shù)據(jù)。 (3)在STB的上升沿約300NS后,在中斷允許(INTE1)的情況下IBF的高電平產(chǎn)生中斷請求,使INTR=1,通知CPU現(xiàn)接口中已有數(shù)據(jù),請求CPU讀取。CPU接受中斷請求后,轉(zhuǎn)到相

21、應(yīng)的中斷子程序。在子程序中執(zhí)行IN指令,將鎖存器中的數(shù)據(jù)取走。 若CPU采用查詢方式,則通過查詢狀態(tài)字中的INTR位或IBF位是否置位來判斷有無數(shù)據(jù)可讀。41 (4)CPU執(zhí)行讀操作時,的下降沿使INTR復(fù)位,撤銷中斷請求,為下一次中斷請求作好準備。信號的上升沿延時一段時間后清除IBF使其變低,表示接口的輸入緩沖器變空,允許外設(shè)輸入新數(shù)據(jù)。如此反復(fù),直至完成全部數(shù)據(jù)的輸入。 422方式1下輸出聯(lián)絡(luò)信號線的定義及其時序 聯(lián)絡(luò)信號的定義 OBF:8255A送到外設(shè)的“輸出緩沖器滿”信號,低電平有效。當它為低電平時,通知外設(shè)來取數(shù)。 ACK:外設(shè)的“回答”信號,低電平有效。當它為低電平時,表示外設(shè)已

22、經(jīng)從8255A的端口接收到了數(shù)據(jù),它是對OBF的回答。ACK信號的下降沿延時一段時間后,清除OBF,使其變成高電平,為下一次輸出作好準備。 43INTR:8255A送到CPU的“中斷請求”信號,高電平有效。 當它為高電平時,請求CPU向8255A寫數(shù)。INTR變成高電平的條件是WR、OBF、ACK和INTE都為高電平,表示CPU已寫完一個數(shù)據(jù)(WR=1),輸出緩沖器已空(OBF1),回答信號已結(jié)束(ACK1),外設(shè)已收到數(shù)據(jù),并且允許中斷(INTE1)。只有這4個條件同時滿足才能產(chǎn)生中斷請求。 44 1方式輸出的工作時序 (1)數(shù)據(jù)輸出時,CPU處于主動地位,當CPU向8255A寫一個數(shù)據(jù)時,

23、WR的上升沿使OBF有效,表示輸出緩沖器已滿,通知外設(shè)讀取數(shù)據(jù)。WR還使中斷請求INTR變低,封鎖中斷請求。 45 (2)外設(shè)讀取數(shù)據(jù)后,用ACK回答8255A,表示數(shù)據(jù)已收到。 (3)ACK的下降沿將OBF置為高電平,使OBF無效,為下一次輸出作準備。在中斷允許(INTE1)的情況下ACK的上升沿使INTR變?yōu)楦唠娖?,產(chǎn)生中斷請求。CPU響應(yīng)中斷后在中斷服務(wù)程序中,執(zhí)行OUT指令,向8255A寫下一個數(shù)據(jù)。46三、1方式的狀態(tài)字 8255A在1方式下有固定的狀態(tài)字,它為查詢方式提供狀態(tài)標志位。 8255A不能直接提供中斷向量,因此當8255A采用中斷方式時,CPU也要通過讀狀態(tài)字來確定中斷源

24、,實現(xiàn)查詢中斷。如INTRA=1和INTRB=1分別表示A口和B口有中斷請求。 47注: 狀態(tài)字是通過讀C口獲得的,但從C口讀出的狀態(tài)字與C口的外部引腳所連接的外部輸入信號無關(guān)。例如,在輸入時,狀態(tài)位PC4表示的是INTEA的狀態(tài),而不是外部引腳PC4輸入的聯(lián)絡(luò)信號STB的狀態(tài)。 輸入和輸出操作的狀態(tài)字是不同的,使用時應(yīng)“對號入座”,查相應(yīng)的狀態(tài)位。若采用查詢方式、則般是查INTR是否置位,此信號的可靠性最高。當然亦可查IBF或OBF位。 狀態(tài)字中設(shè)置了INTR位,說明8255A只能提供查詢中斷,而不能提供向量中斷。若需要采用向量中斷,則需借助中斷控制器來提供中斷向量。 48狀態(tài)字中INTE位

25、是控制標志位,控制8255A能否提出中斷請求,因此它不是IO操作過程中自動產(chǎn)生的狀態(tài)。而是由程序通過按位置位復(fù)位命令來設(shè)置或清除的。 例:若允許PA口輸入時,產(chǎn)生中斷請求,則必須設(shè)置INTEA1即置PC41;若禁止它中斷請求,則置INTEA0,即置PC40。其程序段為: MOV DX,303H ;8255A命令口 MOV AL,00001001B ;置PC4=1,允許中斷請求 OUT DX,AL MOV AL,00001000B ;置PC4=0,禁止中斷請求 OUT DX,AL49四、1方式的接口方法 在1方式下,首先根據(jù)要求確定A口和B口是作輸入還是輸出,然后把C口的專用應(yīng)答線與外設(shè)相應(yīng)的控

26、制或狀態(tài)線相連。如果是采用中斷方式則還要把中斷請求線接到微處理器或中斷控制器;若采用查詢方式,則中斷請求線可以空著不接。 1方式的中斷處理,由于8255A不能直接提供中斷向量,所以一般都通過系統(tǒng)中的中斷控制器來提供尋找中斷服務(wù)程序入口地址的中斷類型號。對于不采用向量中斷的微處理器,可以將INTR線直接連到CPU的中斷線(例如在單片機系統(tǒng)中)。50 1方式下CPU采用查詢方式時:對輸入,通過C口查IBF位或INTR位的狀態(tài)。對輸出,查OBF位或INTR位的狀態(tài)。 INTR位的可靠性高,通常對它進行查詢,但前提一定是要使INTE=1。否則,8255A根本不能產(chǎn)生中斷請求,因而狀態(tài)字中的INTR位也

27、就不能置位。 51五、舉例兩種方式并行傳送接口設(shè)計例:在甲乙兩臺微機之間并行傳送1K字節(jié)數(shù)據(jù)。甲機發(fā),乙機接收。甲機一側(cè)8255A采用1方式。乙機一側(cè)8255A采用0方式。兩機的CPU與接口之間都采用查詢方式交換數(shù)據(jù)。分析與設(shè)計:硬件連接 根據(jù)題目要求,甲機8255A是1方式發(fā)送,因此,可把PA口指定為數(shù)據(jù)輸出,則必然可用PC7和PC6引腳分別作聯(lián)絡(luò)線OBF和ACK。 乙機8255A是0方式接收,可把PA口定義為數(shù)據(jù)輸入,因0方式無固定的聯(lián)絡(luò)線,故現(xiàn)選用引腳PC4和PC3作聯(lián)絡(luò)線。 符合題意的接口電路圖如下: 5253編程甲機發(fā)送程序段:MOV DX,303H ;8255A命令口MOV AL,

28、10100000B ;初始化方式字OUT DX,ALMOV AL,0DH ;置發(fā)送中斷允許INTEA=1OUT DX,AL ;PC6=1MOV SI,OFFSET BUFSMOV CX,3FFH ;發(fā)送字節(jié)數(shù)MOV DX,300H ;向A口寫第1個數(shù),產(chǎn)生第一個MOV AL,SI ;信號給乙方,以獲取乙方的信號OUT DX,ALINC SIDEC CX(接下頁)54L:MOV DX,302H ;8255A狀態(tài)口 IN AL,DX ;查發(fā)送中斷請求INTRA=1? AND AL,08H ;PC3=1? JZ L ;無中斷請求,則等待,有,則向A口寫數(shù) MOV DX,300H ;8255A的PA口

29、地址 MOV AL,SI OUT DX,AL ;通過A口向乙機發(fā)送第二個數(shù) INC SI DEC CX JNZ L 55乙機接收程序: MOV DX,303H ;8255A命令口 MOV AL,10011000B ;初始化方式字 OUT DX,AL MOV AL,00000111B ;置ACK=1(PC3=1) OUT DX,AL ;將應(yīng)答信號初始化為無效狀態(tài)。 MOV DI,OFFSET BUFR MOV CX,3FFHL1:MOV DX,302H ;8255A的PC口 IN AL,DX ;查甲機的OBF=0?(乙機PC4=0?) AND AL,10H ;即查甲機是否有數(shù)據(jù)發(fā)來 JNZ L1

30、 ;無,則等。有,則從A口讀之。 MOV DX,300H ;8255A的PA口地址 IN AL,DX ;從A口讀入數(shù)據(jù) (接下頁)56MOV DI,AL MOV DX,303H ;產(chǎn)生ACK信號,并發(fā)回給甲機 MOV AL,00000110B ;PC3置0 OUT DX,AL NOP NOP MOV AL,00000111B ;PC3置1,使ACK =1 OUT DX,AL INC DI DEC CX JNZ L1 57主從結(jié)構(gòu)兩級微機并行傳送接口設(shè)計 例:設(shè)某測量與控制系統(tǒng)由兩級微機組成:以8031為前級機,完成設(shè)備的運動控制和數(shù)據(jù)采集任務(wù);上位機80286作為主控,發(fā)布各種命令,進行數(shù)據(jù)處

31、理和存盤、打印及顯示任務(wù)。兩者之間,采用并行口進行連接和通信,以便80286把命令送到803l,并及時從8031取得各種操作的狀態(tài)與數(shù)據(jù)。分析:題目要求使用并行口連接兩級微機,實現(xiàn)通信。由于主從兩級微機都需要通過接口進行數(shù)據(jù)輸入和輸出兩種操作,即雙向傳送。因此,我們可以選8255A作雙向接口的主芯片。此時,數(shù)據(jù)信號輸入、輸出可分別用A或B口擔任,C口用于控制信號的傳遞。 58設(shè)計:硬件設(shè)計: 設(shè)PC機提供給8255A的口地址為300H303H,8031提供的口地址為4000H4003H。 可考慮對主從兩側(cè)的8255A都采用A口為1方式輸入、 B口為0方式輸出。A口1方式輸入具有固定的聯(lián)絡(luò)信號線

32、,而對B口的0方式輸出,我們選PC6作為數(shù)據(jù)選通信號STB輸出端,以實現(xiàn)把數(shù)據(jù)線上的數(shù)據(jù)打入對方8255的A口輸入緩沖器。并選PC1為狀態(tài)信號輸入線,以接收對方8255發(fā)出的IBF(輸入緩沖器滿)信號。 電路圖如下: 5960軟件設(shè)計 可以采用在上位機以菜單形式向8031提供測控命令。用戶選定一個命令,則上位機就執(zhí)行一個子程序,從而實現(xiàn)上位機通過8255A端口發(fā)送命令代碼到前端機8031的8255A。8031通過8255A端口以中斷方式接受命令代碼。然后對命令代碼進行解釋并轉(zhuǎn)相應(yīng)子程序去執(zhí)行,產(chǎn)生相應(yīng)操作。示例子程序如下: 615.2 8255A控制字及狀態(tài)字控制字及狀態(tài)字5.2.1項目項目2

33、:8255A控制控制LED燈左循環(huán)亮燈左循環(huán)亮 1. 項目要求與目的(1)項目要求:根據(jù)開關(guān)的狀態(tài),用8255的PA端口控制8只LED發(fā)光二極管,PB口接1只開關(guān),編寫程序?qū)崿F(xiàn)K0閉合,LED燈左循環(huán)亮。(2)項目目的:了解8255控制方式的設(shè)置。掌握8255的初始化及編程方法。2項目電路連接與說明 (1)項目電路連接:8255A的片選CS孔用導(dǎo)線接至譯碼處200H207H插孔,8255A的PA0-PA7用導(dǎo)線接至LED0-LED7,PB0用導(dǎo)線接至開關(guān)K0。(2)項目說明: Intel 8255A是常用的并行可編程接口芯片,它有3個8位并行輸入/輸出端口,可利用編程方法設(shè)置3個端口是作為輸入

34、端口還是作為輸出端口,在使用時,要對8255進行初始化。本項目PA口作為輸出口,PB口作為輸入口,工作于方式0。當開關(guān)K0閉合,LED燈左循環(huán)亮。3項目電路原理框圖 用8255A控制LED燈左循環(huán)亮電路框圖如圖5-4所示。電路由8086CPU芯片、8255A芯片、8只LED發(fā)光二極管和1只開關(guān)K0等組成。圖5-4 8255A控制LED燈左循環(huán)亮電路原理框圖 4項目程序設(shè)計(1)程序流程圖用8255A控制LED燈左循環(huán)亮程序流程圖如圖5-5所示。圖5-5 8255A控制LED燈左循環(huán)亮程序流程圖(2)程序清單用8255A控制LED燈左循環(huán)亮程序清單如下所示。CODE SEGMENTASSUME

35、CS:CODE START: MOV DX,203H ;8255控制端口 MOV AL,82H;PA輸出,PB輸入 OUT DX,AL MOV DX,200H ;PA端口地址 MOV AH,0FEH; ;置LED0亮初始值 BG: MOV AL,AH OUT DX,AL ; 點亮LED燈 CALL DELAY;調(diào)延時子程序 MOV DX,201H;PB端口地址 IN AL,DX ;讀開關(guān)的狀態(tài) TEST AL,01H;PB0=0嗎?(K0閉合嗎) JNZ BG ;PB00,轉(zhuǎn)移 ROL AH,1 ; PB0=0,左移 MOV DX,200H JMP BGDELAY PROC NEAR ;延時子程序MOV BL,100DELAY2: MOV CX,374DELAY1: NOP NOP LOOP DELAY1 DEC BL JNZ DELAY2 RETDELAY ENDPCODE ENDS END START5.3.1項目項目

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論