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

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

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

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

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

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

8、出方向。并且,在方式字中對(duì)PC口指定的輸入/輸出方向?qū)λ鼈儫o效,僅對(duì)非專用聯(lián)絡(luò)線有效。16 PC口的PC3PC7被分配給指定為方式2的A口作為專用的聯(lián)絡(luò)信號(hào)線。 同理,只要A口被指定為方式2,聯(lián)絡(luò)信號(hào)線的輸入或輸出方向是固定的。方式字中對(duì)PC口指定的輸入/輸出方向?qū)λ鼈儫o效,僅對(duì)非專用聯(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、時(shí)方式字中的D0=1只能指定PC3為輸入方式,對(duì)PC0PC2則無效。A口被設(shè)置成方式0,沒有固定的聯(lián)絡(luò)線,故方式字中的D3=0對(duì)PC7PC4有效,都被設(shè)置為輸出方式。 182. 按位置位/復(fù)位命令字 用于指定PC口的某一位輸出高電平或低電平。利用按位置值復(fù)位控制字可以使PC口的8根線中的任意一根置成高電平輸出或低電平輸出。例:將PC口的PC2引腳置位的程序段: MOV DX,303H ;8255A控制口地址 MOV AL,05H ;使PC21的控制字 OUT DX,AL ;送到控制口 如果要使該引腳復(fù)位,則用下列程序段實(shí)現(xiàn): MOV DX,303H ;8255A控制口地址 MOV AL,04H

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

27、就不能置位。 51五、舉例兩種方式并行傳送接口設(shè)計(jì)例:在甲乙兩臺(tái)微機(jī)之間并行傳送1K字節(jié)數(shù)據(jù)。甲機(jī)發(fā),乙機(jī)接收。甲機(jī)一側(cè)8255A采用1方式。乙機(jī)一側(cè)8255A采用0方式。兩機(jī)的CPU與接口之間都采用查詢方式交換數(shù)據(jù)。分析與設(shè)計(jì):硬件連接 根據(jù)題目要求,甲機(jī)8255A是1方式發(fā)送,因此,可把PA口指定為數(shù)據(jù)輸出,則必然可用PC7和PC6引腳分別作聯(lián)絡(luò)線OBF和ACK。 乙機(jī)8255A是0方式接收,可把PA口定義為數(shù)據(jù)輸入,因0方式無固定的聯(lián)絡(luò)線,故現(xiàn)選用引腳PC4和PC3作聯(lián)絡(luò)線。 符合題意的接口電路圖如下: 5253編程甲機(jī)發(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個(gè)數(shù),產(chǎn)生第一個(gè)MOV AL,SI ;信號(hào)給乙方,以獲取乙方的信號(hào)OUT DX,ALINC SIDEC CX(接下頁(yè))54L:MOV DX,302H ;8255A狀態(tài)口 IN AL,DX ;查發(fā)送中斷請(qǐng)求INTRA=1? AND AL,08H ;PC3=1? JZ L ;無中斷請(qǐng)求,則等待,有,則向A口寫數(shù) MOV DX,300H ;8255A的PA口

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

30、 ;無,則等。有,則從A口讀之。 MOV DX,300H ;8255A的PA口地址 IN AL,DX ;從A口讀入數(shù)據(jù) (接下頁(yè))56MOV DI,AL MOV DX,303H ;產(chǎn)生ACK信號(hào),并發(fā)回給甲機(jī) 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)兩級(jí)微機(jī)并行傳送接口設(shè)計(jì) 例:設(shè)某測(cè)量與控制系統(tǒng)由兩級(jí)微機(jī)組成:以8031為前級(jí)機(jī),完成設(shè)備的運(yùn)動(dòng)控制和數(shù)據(jù)采集任務(wù);上位機(jī)80286作為主控,發(fā)布各種命令,進(jìn)行數(shù)據(jù)處

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

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

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

34、端口還是作為輸出端口,在使用時(shí),要對(duì)8255進(jìn)行初始化。本項(xiàng)目PA口作為輸出口,PB口作為輸入口,工作于方式0。當(dāng)開關(guān)K0閉合,LED燈左循環(huán)亮。3項(xiàng)目電路原理框圖 用8255A控制LED燈左循環(huán)亮電路框圖如圖5-4所示。電路由8086CPU芯片、8255A芯片、8只LED發(fā)光二極管和1只開關(guān)K0等組成。圖5-4 8255A控制LED燈左循環(huán)亮電路原理框圖 4項(xiàng)目程序設(shè)計(jì)(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 ; 點(diǎn)亮LED燈 CALL DELAY;調(diào)延時(shí)子程序 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 ;延時(shí)子程序MOV BL,100DELAY2: MOV CX,374DELAY1: NOP NOP LOOP DELAY1 DEC BL JNZ DELAY2 RETDELAY ENDPCODE ENDS END START5.3.1項(xiàng)目項(xiàng)目

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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)論