




已閱讀5頁(yè),還剩76頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第7章 可編程并行接口8255A,7.4.1并行接口的概述 7.4.2 可編程并行接口8255A 7.4.3 8255A的0方式及其應(yīng)用 7.4.4 8255A的1方式及其應(yīng)用 7.4.5 8255A的2方式及其應(yīng)用,CPU與外設(shè)之間的信息傳送都是通過接口電路來進(jìn)行的。 計(jì)算機(jī)與外部設(shè)備、計(jì)算機(jī)與計(jì)算機(jī)之間交換信息稱之為計(jì)算機(jī)通信,計(jì)算機(jī)通信可分為兩大類: 并行通信:8位或16位或32位數(shù)據(jù)同時(shí)傳輸, 速度快,信息 率高,成本高 串行通信:一位一位數(shù)據(jù)傳送(在一條線上順序傳送),成本低 實(shí)現(xiàn)并行通信的接口就是并行接口。,7.4.1并行接口的概述,一、串行與并行通信,并行接口最基本的特點(diǎn)是在多根據(jù)數(shù)據(jù)線上以數(shù)據(jù)字節(jié)(字)為單位與I/O設(shè)備或被控對(duì)象傳送信息。 如: 打印機(jī)接口,A/D、D/A轉(zhuǎn)換器接口,IEEE-488接口,開關(guān)量接口,控制設(shè)備接口等。 在并行接口中,除了少數(shù)據(jù)場(chǎng)合之外,一般都要求在接口與外設(shè)之間設(shè)置并行數(shù)據(jù)線的同時(shí),至少還要設(shè)置兩根握手(聯(lián)線)信號(hào)線,以便進(jìn)行互鎖異步握手方式(即查詢方式)的通信。 在并行接口中,8位或16位是一起行動(dòng)的,因此,當(dāng)采用并行接口與外設(shè)交換數(shù)據(jù)時(shí),即使是只用到其中的一位,也是一次輸入/輸出8位或16位。 并行傳送信息,不要求固定的格式,這與串行傳送的數(shù)據(jù)格式的要求不同。,二、并行接口的特點(diǎn),8255A8255A,概述 Intel8255A是一種通用的可編程序并行I/O接口芯片,又稱“可編程外設(shè)接口芯片”,是為Intel8080/8085系列微處理設(shè)計(jì)的,也可用于其它系列的微機(jī)系統(tǒng)??捎沙绦騺砀淖兤涔δ?,通用性強(qiáng)、使用靈活。通過8255A,CPU可直接同外設(shè)相連接,是應(yīng)用最廣的并行I/O接口芯片。 含3個(gè)獨(dú)立的8位并行輸入/輸出端口,各端口均具有數(shù)據(jù)的控制和鎖存能力??赏ㄟ^編程設(shè)置各端口的工作方式和數(shù)據(jù)傳送方向(入/出/雙向)。,并行接口連接外設(shè)示意圖,不可編程并行接口和可編程并行接口 不可編程并行接口的工作方式和功能: 是由硬件接線決定,不能用軟件來控制。 可編程并行接口的工作方式和功能: 可用軟件編程的方法改變, 使接口具有更大的靈活性和通用性。,一般情況下不交叉使用,因?yàn)? 只有本系列的芯片才能更好地保證時(shí)序上的配合, 和各種功能的發(fā)揮,使CPU可靠與外設(shè)交換信息。,在并行接口芯片中, 不同的產(chǎn)品系列研制出與之相匹配的接口芯片。,例 在80X86系列中使用8255A芯片 在Z80系列中使用Z80-PIO芯片 在6800系列中使用MC6820PIA芯片,8255A8255A,8255A的內(nèi)部結(jié)構(gòu),8255A8255A,數(shù)據(jù)總線緩沖器:三態(tài)8位雙向緩沖器,與系統(tǒng)數(shù)據(jù)總線連接的緩沖部件;傳送數(shù)據(jù)、控制字、狀態(tài)字的通道。 3個(gè)8位數(shù)據(jù)端口(PA、PB、PC):通常PA口與PB口用作輸入輸出的數(shù)據(jù)端口,PC口用作數(shù)據(jù)傳輸或提供聯(lián)絡(luò)線的端口。在方式字的控制下,PC口可以分成兩個(gè)4位的端口,其中PC7PC4同端口A配合使用, PC3PC0同端口B配合使用。 A組、B組控制電路:這兩組控制電路根據(jù)CPU發(fā)出的方式選擇控制字來控制8255A的工作方式,每個(gè)控制組都接收來自讀寫控制邏輯的“命令”,接收來自內(nèi)部數(shù)據(jù)總線的“控制字”,并向與其相連的端口發(fā)出適當(dāng)?shù)目刂菩盘?hào)。A組控制電路控制PA口和PC口高4位,B組控制電路控制PB口和PC口低4位。 讀/寫控制邏輯:用來管理數(shù)據(jù)、控制字和狀態(tài)字的傳送,接收系統(tǒng)總線發(fā)來的有關(guān)信號(hào),并向A、B兩組控制部件發(fā)送命令。,DIP封裝,共40個(gè)引腳。 1. 連接系統(tǒng)總線的主要引腳 D0D7:數(shù)據(jù)線,雙向,連CPU數(shù)據(jù)總線; RESET:復(fù)位輸入,接系統(tǒng)總線的RESET; CS*:片選控制輸入,接譯碼器; RD*:讀命令輸入,接CPU的RD*或IOR*; WR*:寫命令輸入,接CPU的WR*或IOW*; A0,A1:片內(nèi)端口地址輸入,可選4個(gè)片內(nèi) 端口。接AB的任2位。,1.面向CPU一側(cè)的引腳信號(hào),D7D0,8位,雙向,三態(tài)數(shù)據(jù)線 RESET,復(fù)位信號(hào) CS*,片選信號(hào) RD*,讀信號(hào) WR*,寫信號(hào) A1 、A0,端口選擇信號(hào),8255A的讀/寫操作控制,2.面向外設(shè)一側(cè)的引腳信號(hào),端口A:PA0PA7 A組,支持工作方式0、1、2 端口B:PB0PB7 B組,支持工作方式0、1 端口C:PC0PC7 僅支持工作方式0 A組控制高4位PC4PC7 B組控制低4位PC0PC3,端口A:PA0PA7 常作數(shù)據(jù)端口,功能最強(qiáng)大 端口B:PB0PB7 常作數(shù)據(jù)端口 端口C:PC0PC7 可作數(shù)據(jù)、狀態(tài)和控制端口 分兩個(gè)4位,每位可獨(dú)立操作 控制最靈活,最難掌握,功能:,8255A與系統(tǒng)的連接示意圖,8255A的工作方式 方式0基本輸入/輸出方式(A、B、C口) 方式1選通工作方式(A、B口) 方式2雙向選通傳送方式(僅A口) 某端口工作于哪一種方式,可通過軟件編程來指定。即向8255寫入方式控制字來決定其工作方式。,8255A的工作方式方式0(基本輸入/輸出方式) 特點(diǎn): 8255A相當(dāng)于三個(gè)獨(dú)立的8位數(shù)據(jù)口。 各端口既可設(shè)置為輸入口,也可設(shè)置為輸出口,但不能同時(shí)實(shí)現(xiàn)輸入及輸出。 C端口即可以是一個(gè)8位的簡(jiǎn)單接口,也可以分為兩個(gè)獨(dú)立的4位端口。 設(shè)置為輸出口時(shí)有鎖存能力,設(shè)置為輸入口時(shí)無鎖存能力。 適用于: 無條件輸入輸出方式。 查詢輸入輸出方式:把A、B口作為8位數(shù)據(jù)的輸入或輸出口,C口的高/低4位分別定義為A、B口的控制位和狀態(tài)位。,8255A的工作方式方式0(基本輸入/輸出方式) IN AL,PORT 外設(shè)將數(shù)據(jù)送到8255輸入緩沖器中; CPU給出有效的8255地址; CPU發(fā)讀命令,將8255A輸入緩沖器中數(shù)據(jù)讀入CPU的AL寄存器中。,8255A的工作方式方式0(基本輸入/輸出方式) 方式0輸入時(shí)序:,8255A的工作方式方式0(基本輸出方式) OUT PORT,AL CPU給出有效的8255地址; CPU發(fā)寫命令,將CPU的AL寄存器中數(shù)據(jù)寫入8255A輸出鎖存器中。,8255A的工作方式方式0(基本輸入/輸出方式) 方式0輸出時(shí)序:,有效,8255A的工作方式方式1(選通工作方式) 利用一組選通控制信號(hào)控制A端口和B端口的數(shù)據(jù)輸入輸出。 特點(diǎn): A、B口作輸入或輸出口,C口分為兩部分,其部分位(6位)固定用作A口、B口的選通控制信號(hào)。 C口的剩余位仍可作數(shù)據(jù)位使用。 A口、B口在作為輸入和輸出時(shí)的選通信號(hào)不同。 方式1的應(yīng)用: 主要用于中斷控制方式下的輸入輸出。 說明:C口除部分位用作選通信號(hào)外,其余位(2位)可工作在方式0下,作為輸入或輸出線,用程序指定其數(shù)據(jù)傳送方向。,(1)端口A方式1作輸入:,數(shù)據(jù)選通信號(hào) 表示外設(shè)已經(jīng)準(zhǔn)備好數(shù)據(jù),輸入緩沖器滿信號(hào) 表示A口已經(jīng)接收數(shù)據(jù),中斷請(qǐng)求信號(hào) 請(qǐng)求CPU接收數(shù)據(jù),若允許PA口輸入時(shí),產(chǎn)生中斷請(qǐng)求,則必須設(shè)置INTEA=1,即置PC4=1;若禁止它產(chǎn)生中斷請(qǐng)求,則置INTEA=0,即置PC4=0,其程序段為: MOV DX,203H ;8255A命令口 MOV AL,00001001B ;置PC4=1,允許中斷請(qǐng)求 OUT DX,AL MOV AL,00001000B ;置PC4=0,禁止中斷請(qǐng)求 OUT DX,AL,端口B方式1作輸入:,方式1輸入聯(lián)絡(luò)信號(hào)定義,STB*選通信號(hào),低電平有效 由外設(shè)提供的輸入信號(hào),當(dāng)其有效時(shí),將輸入設(shè)備送來的數(shù)據(jù)鎖存至8255A的輸入鎖存器 IBF輸入緩沖器滿信號(hào),高電平有效 8255A輸出的聯(lián)絡(luò)信號(hào)。當(dāng)其有效時(shí),表示數(shù)據(jù)已鎖存在輸入鎖存器 INTR中斷請(qǐng)求信號(hào),高電平有效 8255A輸出的信號(hào),可用于向CPU提出中斷請(qǐng)求,要求CPU讀取外設(shè)數(shù)據(jù) INTE 中斷允許信號(hào),高電平有效 用于控制中斷允許或中斷屏蔽,8255A方式1作輸入時(shí)的各聯(lián)絡(luò)信號(hào)對(duì)應(yīng)關(guān)系,8255A工作在方式1下的輸入時(shí)序,(3)端口A方式1作輸出:,外設(shè)響應(yīng)信號(hào) 表示外設(shè)已經(jīng)接收到數(shù)據(jù),輸出緩沖器滿信號(hào) 表示CPU已經(jīng)輸出了數(shù)據(jù),中斷請(qǐng)求信號(hào) 請(qǐng)求CPU再次輸出數(shù)據(jù),端口B方式1作輸出:,方式1輸出聯(lián)絡(luò)信號(hào),OBF*輸出緩沖器滿信號(hào),低有效 8255A輸出給外設(shè)的一個(gè)控制信號(hào),當(dāng)其有效時(shí),表示CPU已把數(shù)據(jù)輸出給指定的端口,外設(shè)可以取走 ACK*響應(yīng)信號(hào),低有效 外設(shè)的響應(yīng)信號(hào),指示8255A的端口數(shù)據(jù)已由外設(shè)接受 INTR中斷請(qǐng)求信號(hào),高有效 當(dāng)輸出設(shè)備已接受數(shù)據(jù)后,8255A輸出此信號(hào)向CPU提出中斷請(qǐng)求,要求CPU繼續(xù)提供數(shù)據(jù),8255A方式1作輸出時(shí)的各聯(lián)絡(luò)信號(hào)對(duì)應(yīng)關(guān)系,8255A工作在方式1下的輸出時(shí)序,A端口、B端口方式 1 比較,A端口輸入用C端口位PC3 、PC4 、 PC5 A端口輸出用C端口位PC3 、PC6 、 PC7 B端口輸入用C端口位PC0 、PC1 、 PC2 B端口輸出用C端口位PC0 、PC1 、 PC2 A端口輸入、輸出用不同的C端口的位 B端口輸入、輸出用相同的C端口的位 B端口只有方式 1 選通輸入/輸出 A端口還有方式 2 雙向數(shù)據(jù)傳送,C端口未被使用的位,A端口方式 0、B端口方式 0 C端口所有位未被使用,PC0 PC7 可作I/O用 A端口方式 0、B端口方式 1 PC0 PC2被用,PC3 PC7可作I/O用 A端口方式 1輸入、B端口方式 0 PC3、PC4、PC5被用,PC0 PC2、PC6、PC7 可作I/O用 A端口方式 1輸出、B端口方式 0 PC3、PC6、PC7 被用,PC0 PC2、PC4、PC5 可作I/O用 A端口方式 1輸入、B端口方式 1 PC6、PC7 可作I/O用 A端口方式 1輸出、B端口方式 1 PC4、PC5 可作I/O用 A端口方式2、B端口方式1;C口被用完,都不可作I/O用,3. 方式2(雙向選通方式),方式2將方式1的選通輸入輸出功能組合成一個(gè)雙向數(shù)據(jù)端口,可以發(fā)送數(shù)據(jù)和接收數(shù)據(jù) 只有端口A可以工作于方式2,需要利用端口C的5個(gè)信號(hào)線,其作用與方式1相同 方式2的數(shù)據(jù)輸入過程與方式1的輸入方式一樣 方式2的數(shù)據(jù)輸出過程與方式1的輸出方式有一點(diǎn)不同:數(shù)據(jù)輸出時(shí)8255A不是在OBF*有效時(shí)向外設(shè)輸出數(shù)據(jù),而是在外設(shè)提供響應(yīng)信號(hào)ACK*時(shí)才送出數(shù)據(jù),(1)方式2的信號(hào)定義,用PC6設(shè)置INTE1(輸出) 用PC4設(shè)置INTE2(輸入) 輸入和輸出中斷通過 或門輸出INTRA信號(hào),8255A工作在方式2下的工作時(shí)序,當(dāng)數(shù)據(jù)端口作為輸入工作時(shí),在STB有效時(shí),由外設(shè)把輸入數(shù)據(jù)送入端口,并發(fā)出IBF有效信號(hào)。當(dāng)CPU執(zhí)行IN指令對(duì)該數(shù)據(jù)口進(jìn)行讀入操作后,由RD的上升沿使IBF復(fù)位,為下一次輸入數(shù)據(jù)作好準(zhǔn)備。如果該數(shù)據(jù)端口的中斷允許INTE被置位,則在STB信號(hào)回復(fù)到高電平時(shí),8255A通過INTR向CPU發(fā)中斷請(qǐng)求。若CPU響應(yīng)該中斷請(qǐng)求,讀取該數(shù)據(jù)端口的輸入數(shù)據(jù),則RD由下降沿使INTR復(fù)位,為下一次數(shù)據(jù)輸入請(qǐng)求中斷作好準(zhǔn)備。,當(dāng)數(shù)據(jù)端口作為輸出口時(shí),在CPU把數(shù)據(jù)寫入端口后,由WR的上升沿使OBF有效并使INTR復(fù)位。OBF由8255A輸出到外設(shè),并通知外設(shè)可以取走端口的輸出數(shù)據(jù)。當(dāng)外設(shè)取走一個(gè)數(shù)據(jù)時(shí),應(yīng)向8255A發(fā)回應(yīng)答信號(hào)ACK。 ACK的有效低電平可以使OBF恢復(fù)高電平,為下一次輸出作好準(zhǔn)備。,方式2應(yīng)用接口電路圖,返回,8255A的初始化 可以利用軟件編程確定8255的3個(gè)端口工作于何種方式下。 8255A的各種工作方式由CPU對(duì)8255A寫入控制命令字來設(shè)定,這個(gè)過程稱為“初始化”。 8255A有2種控制命令字: 方式選擇控制字確定3個(gè)端口的工作方式; C口置位/復(fù)位控制字確定C口某一位的初始狀態(tài),或用于設(shè)置INTE位(方式1,2)。,8255A的初始化方式選擇控制字,8255A的初始化C口置位/復(fù)位控制字,8255A的初始化方式選擇控制字 在方式 1、2下,C口作為A口、B口聯(lián)絡(luò)信號(hào)的引腳,其動(dòng)作關(guān)系在芯片設(shè)計(jì)和制造時(shí)已固定,不由用戶自己安排,也不能編程改變。即C口作為聯(lián)絡(luò)信號(hào)的引腳:不受方式控制字的控制。該出則出,該入則入。,8255A的初始化 MOV DX,387H ;設(shè)控制口地址 MOV AL,82H ;1 00 0 0 0 1 0 OUT DX,AL ;輸出控制字 XOR AL,AL ;A口輸出全0 MOV DX,384H ;設(shè)A口地址 OUT DX,AL ;輸出到A口,8255A應(yīng)用舉例 圖中用8255A的PA口作為輸出打印數(shù)據(jù) 口,工作于方式0,PC口高4位工作于輸 出方式,PC6產(chǎn)生STB#信號(hào);PC口低4位 工作于輸入方式,PC2接收打印機(jī)的BUSY 信號(hào)。程序流程如右示。,例:利用8255A作為打印機(jī)的連接接口,要求CPU通過接口采用查詢方式,把存放在從BUF單元開始的內(nèi)存緩沖區(qū)中的256個(gè)字符(ASCII碼)輸出給打印機(jī)去打印。 假定8255A的 端口地址范圍為0FBD0H0FBD3H,則8255A與打印機(jī)接口的初始化程序段如下:,8255A與打印機(jī)接口的初始化程序段,INIT:MOV DX,0FBD3H ;8255A的控制寄存器端口地址 MOV AL,10000001B ;方式選擇控制字 (A組方式0:A口輸出, PC7PC4輸出; B組方式0:B口輸出, PC3PC0輸入) OUT DX,AL ;控制字送控制口寄存器 MOV AL,00001101B ;C口置位/復(fù)位控制字,使PC6置位,即1 OUT DX, AL ;C口置位/復(fù)位控制字送控制寄存器,對(duì)8255A初始化編程,并使PC6初始化狀態(tài)置1,為發(fā)選通脈沖(負(fù)脈沖)準(zhǔn)備,打印一組字符的程序段如下:,MOV SI,OFFSET BUF;取字符串的內(nèi)存首地址 MOV CX,0FFH ;將打印字符長(zhǎng)度作為循環(huán)次數(shù) PL:MOV DX,0FBD2H ;C口地址 IN AL,DX ;從C口查詢打印機(jī)的狀態(tài)信息BUSY0? (即PC20?) AND AL,00000100B JNZ PL ;若BUSY1,則循環(huán)等待; BUSY0,則 向A口送出數(shù)據(jù),8255A與打印機(jī)接口的初始化程序段(續(xù)),MOV AL,SI ;否則,從內(nèi)存中取一個(gè)字符準(zhǔn)備輸出 MOV DX, 0FBD0H ;A口地址送DX OUT DX,AL ;將內(nèi)存中的一個(gè)字符輸出到A口 MOV DX, 0FBD3H ;控制口地址 MOV AL, 00001100H ;設(shè)定C口按位操作控制字,置為低( PC6 0) NOP ;使負(fù)脈沖寬度延時(shí) NOP MOV AL, 00001101B ;置為高電平 ( PC6 1),在PC6上生成1個(gè)負(fù)脈沖 OUT DX, AL INC SI ;指向內(nèi)存中下一個(gè)字符 DEC CX ;字符數(shù)減1 JNZ PL ;若輸出字符未完,則繼續(xù) HLT ;若輸出字符已完,則暫停,返回,方式1輸出的聯(lián)絡(luò)信號(hào)定義,8255A方式1 從圖可見,當(dāng)CPU通過接口要求打印機(jī)打印數(shù)據(jù)時(shí),先要查看BUSY信號(hào),BUSY0時(shí),才能向打印機(jī)輸出數(shù)據(jù),在把數(shù)據(jù)送上DATA線后,先發(fā)STB#=0信號(hào)通知打印機(jī),打印機(jī)接到STB#=0后,發(fā)出BUSY1,接收效據(jù),當(dāng)數(shù)據(jù)接收好并存入內(nèi)部打印緩沖器后,送出ACK#=0信號(hào),表示打印機(jī)已準(zhǔn)備好接收新數(shù)據(jù),并復(fù)位BUSY=0。,例2,設(shè)8255A為工作方式1,A口為輸出。當(dāng)外設(shè)向8255A發(fā)回的應(yīng)答信號(hào)變?yōu)楦唠娖綍r(shí),若允許8255A向CPU發(fā)中斷請(qǐng)求信號(hào),則必須設(shè)置中斷允許信號(hào)INTEA1,即置PC61;若禁止它產(chǎn)生中斷請(qǐng)求,則INTEA0,即置PC60。假定端口的地址范圍為300H303H,其程序段為: MOV DX, 303H ;置8255A控制口 MOV AL, 00001101B ;置C口按位控制字,使PC61,允許發(fā)中斷請(qǐng)求 OUT DX, AL MOV AL, 00001100B ;置PC60,禁止發(fā)中斷請(qǐng)求 OUT DS,AL,8255A打印機(jī)接口,8255口線的使用,A為數(shù)據(jù)通道,方式1,輸出 PC0產(chǎn)生打印機(jī)的選通脈沖 PC7未用;PC6為/ACK輸入 PC3自動(dòng)作INTR,接中斷控制器8259A的IR3 ,中斷類型號(hào)0BH,中斷向量在0002CH0002FH單元 通道C其他位及通道B未用,8255初始化,MOV DX,303H; MOV AL,0A0H ;初始化,1010XXX0 OUT DX,AL ;A口方式1,出;PC0出 MOV AL,1 ;PC0=1,選通無效 OUT DX,AL,設(shè)置中斷向量,設(shè)置中斷服務(wù)入口0100H:2000H PUSH DS ;保護(hù)原數(shù)據(jù)段 XOR AX,AX MOV DS,AX ;設(shè)向量表段地址為0000H MOV AX,2000H MOV WORD PTR 002CH,AX;中斷服務(wù)程序偏移地址 MOV AX,0100H MOV WORD PTR 002EH,AX;中斷服務(wù)程序段地址 POP DS ;恢復(fù)原數(shù)據(jù)段,8255中斷設(shè)置,MOV AL,0DH ;0000 1101;PC6 置1 OUT 0C6H,AL ;允許8255A中斷 STI ;CPU開中斷 ;主程序,中斷服務(wù)程序,中斷服務(wù)程序發(fā)選通信號(hào),將數(shù)據(jù)送打印機(jī) 打印機(jī)接收并打印字符后發(fā)出應(yīng)答信號(hào),清除8255A的數(shù)據(jù)緩沖區(qū)滿信號(hào) RINT:MOV AL,DI ;輸出字符送A通道 MOV DX,300H OUT DX,AL MOV AL,0 ; PC0產(chǎn)生低電平脈沖選通信號(hào) MOV,DX,303H OUT DX,AL;0000 0000, PC0置0 INC AL OUT 0C6H,AL; 0000 0001, PC0置1 ;后續(xù)處理 IRET ;中斷返回,當(dāng)外設(shè)向8255A發(fā)回的應(yīng)答信號(hào)變?yōu)楦唠娖綍r(shí),若允許8255A向CPU發(fā)中斷請(qǐng)求信號(hào),即中斷允許信號(hào)INTEA1, 從PC3引腳發(fā)出中斷申請(qǐng)要求CPU發(fā)送新的數(shù)據(jù),例3 利用OBF#作為觸發(fā)打印機(jī)選通信號(hào)方式1輸出,若將8255A的端口A與打印機(jī)相連,使A口工作于方式1下輸出,并利用中斷方式向打印機(jī)輸出一組(字符串長(zhǎng)度為256字節(jié))字符,打印機(jī)接口連接電路如圖所示。試編寫采用中斷方式傳送一組打印字符的程序段。 假定8255A的端口地址范圍為300H303H,8259A的端口地址為020H與021H。初始化時(shí)使A口為方式1、輸出,B口可任意設(shè)定為方式0、輸出,C口除聯(lián)絡(luò)線以外的5位線也均設(shè)定為輸出,則方式選擇控制字為10100000B(0A0H)。允許A口輸出中斷請(qǐng)求的INTEA中斷允許信號(hào),由C口置位/復(fù)位控制字對(duì)PC6置位來設(shè)定。,中斷打印輸出字符的程序由主程序MAIN和中斷服務(wù)子程序SUBP兩部分組成。,主程序MAIN,MAIN: PUSH DS ;保存原DS MOV AX,SEG SUBP ;為打印驅(qū)動(dòng)子程序入口SUBP設(shè)置新的中斷向量 DS:DX MOV DS,AX ;SUBP的段地址送DS MOV DX,OFFSET SUBP ;SUBP的偏移地址送DX MOV AH,25H ;設(shè)置中斷向量的功能號(hào)AH MOV AL,0AH ;為8259A的IR2建立0AH號(hào)中斷向量表項(xiàng) INT 21H POP DS ;恢復(fù)原DS MOV DX,303H ;設(shè)定8255A控制端口地址 MOV AL,0A0H ;8255A初始化,設(shè)置方式選擇控制字 OUT DX,AL ;控制字送端口 MOV AL,00001101B ;設(shè)定C口置位/復(fù)位控制字 MOV DX,AL ;置PC61,使INTEA1,允許8255A產(chǎn)生中斷 MOV DX,300H MOV AL,00H ;設(shè)置空白字符的ASCII碼 OUT DX,AL ;A口輸出一個(gè)空白字符,以引發(fā)第一次中斷請(qǐng)求 MOV AX,OFFSET DATA ;打印字符串的標(biāo)號(hào)DATA(首地址)的偏移地址送AX MOV STR _ PTR,AX ;設(shè)置增1的打印字符串指針的偏移地址 MOV AX,SEG DATA MOV STR _ PTR+2,AX ;設(shè)置增1的打印字符串指針的段地址 STI ;CPU開中 ,中斷服務(wù)子程序SUBP,SUBP: PUSH SI PUSH DS PUSH AX LDS SI,DWORD PTR STR _ PTR ;設(shè)置打印字符串地址的指針DS:SI CLD LODSB :從SI尋址的字符串中取一個(gè)8位字符送AL MOV STR _ PTR,SI ;將自動(dòng)增1后的SI保存于新的字符串指針 MOV DX,300H ;8255A的A口地址 OUT DX,AL ;將AL的一個(gè)打印字符輸出到A口 MOV CX,0FFH DEC CX JNZ NEXT ;字符送完否?未完,轉(zhuǎn)NEXT MOV AL,00001100B ;已送完,重設(shè)C口置位/復(fù)位控制字 MOV DX,303H ;8255A控制端口地址 MOV DX,AL ;置PC60,使INTEA0,禁止8255A產(chǎn)生中斷 NEXT: MOV AL,20H ;設(shè)置8259A的OCW2命令 OUT 20H,AL ; 送中斷結(jié)束命令給8259A的端口 POP AX POP DS POP SI IRET ; 中斷返回,8255A應(yīng)用舉例 LED開關(guān)接口。8086CPU通過8255用開關(guān)與8段LED顯示器的接口如圖示。8255A PA口加驅(qū)動(dòng)器接LED顯示輸出;PB口低4位接開關(guān)輸入;PC口不用。8255A的A0、A1接地址總線的A1、A2,其端口地址為:0FFF8H、0FFFAH、0FFFCH、0FFFEH。要求:開關(guān)設(shè)置的二進(jìn)制信息由8255A的PB口輸入后,通過PA口輸出給8段LED顯示器,顯示開關(guān)狀態(tài)所對(duì)應(yīng)的十六進(jìn)制值,試編制其控制程序。,8255A應(yīng)用舉例 (1)控制字的設(shè)置 8255A的負(fù)載能力較小,PA輸出口加驅(qū)動(dòng)。 PA口設(shè)為方式0輸出,PB口設(shè)為方式0輸入。 由于地址總線的A0位未用,則8255A的每個(gè)端口有兩個(gè)地址。通常使用A0=0的地址。 則方式選擇控制字為:100001B 因未使用C口,故不需設(shè)置置位/復(fù)位控制字。,8255A應(yīng)用舉例 (2)開關(guān)狀態(tài)與LED顯示值關(guān)系 開關(guān)Ki閉合,則PBi=0,否則PBi=1。PB3PB0值與LED顯示值關(guān)系:,8255A應(yīng)用舉例 (3)PA口輸出值與LED顯示值間關(guān)系,8255A應(yīng)用舉例 (4) PB口輸入值轉(zhuǎn)換成PA口輸出值方法 將前述8段碼按0F順序連續(xù)存放于內(nèi)存中; 將PB3PB0對(duì)應(yīng)值置于AL中; 執(zhí)行換碼指令XLAT。指令執(zhí)行:(AL+BX)AL,8255A應(yīng)用舉例,ORG 2000H ;定位程序的段內(nèi)地址 MOV AL,82H ;82H=10000010B MOV DX,0FFFEH;設(shè)控制口地址 OUT DX,AL ;寫方式控制字 MOV DL,0FAH ;設(shè)PB口地址 IN AL,DX ;讀開關(guān)狀態(tài) AND AL,0FH ;屏蔽掉無用的高4位 MOV BX,OFFSET SSEGCODE XLAT ;查表取段選碼 MOV DL,0F8H ;設(shè)PA口地址 OUT DX,AL;開關(guān)值段選碼輸出顯示 MOV AX,56CH ;顯示延時(shí) DEC AX JNZ DELAY JMP RDPORTB ;循環(huán)讀開關(guān)新狀態(tài) HLT ORG 2500H ;定位段選碼表的段內(nèi)地址 SSEGCODE DB 0C0H,0F9H,0A4H ,0B0H,99H,92H,82H ;段碼表 DB 0F8H,80H, 98H,88H,83H, 0C6H,0A1H,86H, 8EH,RDPORTB:,DELAY:,兩種方式并行傳送接口設(shè)計(jì) 1 .要求 在甲乙兩臺(tái)微機(jī)之間并行傳送1K字節(jié)數(shù)據(jù)。甲機(jī)發(fā)送, 乙機(jī)接收。甲機(jī)一側(cè)的8255A采用1方式工作,乙機(jī)一側(cè)的8255A采用0方式工作。兩機(jī)的CPU與接口之間都采用查詢方式交換數(shù)據(jù)。,2.分析 雙機(jī)均采用可編程并行接口芯片8255A構(gòu)成接口電路,只是8255A的工作方式不同。此時(shí),雙方的8255A把對(duì)方視為I/O設(shè)備。 3.設(shè)計(jì) (1)硬件連接 根據(jù)上述要求,接口電路的連接如圖所示。 (2)軟件編程 接口驅(qū)動(dòng)程序包含發(fā)送與接收兩個(gè)程序。,甲機(jī)發(fā)送程序段: MOV DX,203H ;8255A命令口 MOV AL,10100000B ;初始化工作方式字 OUT DX,AL MOV AL,00001101B ;置發(fā)送中斷允許INTEA=1 OUT DX,AL ;PC6=1 MOV SI,OFFSET BUFS ;設(shè)置發(fā)送數(shù)據(jù)區(qū)的指針 MOV CX,3FFH ;發(fā)送字節(jié)數(shù) MOV DX,200H ;向A口寫第一個(gè)數(shù),產(chǎn)生第一個(gè) OBF-信號(hào) MOV AL,SI ;送給乙方,以便獲取乙方的ACK-信號(hào) OUT DX ,AL,INC SI ;內(nèi)存地址加1 DEC CX ;傳送字節(jié)數(shù)減1 L: MOV DX,202H ;8255A狀態(tài)口 IN AL, DX ;查發(fā)送斷請(qǐng)求INTRA=1? AND AL,08H ;PC3=1? JZ L ;若無中斷請(qǐng)求,則等待; ;若有中斷請(qǐng)求,則向A口寫數(shù) MOV DX,200H ;8255APA口地址 MOV AL,SI ;從內(nèi)存取數(shù) OUT DX,AL ;通過A口向乙機(jī)發(fā)送第二個(gè)數(shù)據(jù) INC SI ;內(nèi)存地址加1,DEC CX ;字節(jié)數(shù)減1 JNZ L ;字節(jié)未完,繼續(xù) MOV AH,4CH ;已完,退出 INT 21H ;返回 BUFS DB 1024個(gè)數(shù)據(jù) 乙機(jī)接收程序段:(略),例設(shè)甲、乙兩機(jī)之間進(jìn)行并行通信,共傳送1KB數(shù)據(jù)。甲機(jī)一方的8255A的PA口采用方式2并用中斷方式傳送數(shù)據(jù)。乙機(jī)一方8255A的PA口與PB口采用方式0輸出與輸入,按查詢方式傳送數(shù)據(jù)。兩機(jī)的CPU與接口之間都采用查詢方式交換數(shù)據(jù)。 硬件設(shè)計(jì):接口電路的連接如圖所示。甲機(jī)一側(cè)的8255A的A口作雙向傳送,既作輸出又作輸入,它的中斷請(qǐng) 求線由PC3接到8259A的IR2上。乙機(jī)一側(cè)的 8255A的A口
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 設(shè)備維修工作總結(jié)
- 設(shè)備設(shè)施部強(qiáng)電與暖通管理方案
- 安徽省阜陽(yáng)市阜南實(shí)驗(yàn)中學(xué)2024-2025學(xué)年高二下學(xué)期第二次階段性檢測(cè)(期中)生物試卷(有答案)
- 打造高效運(yùn)營(yíng)網(wǎng)絡(luò)劇與微電影行業(yè)公司的策略框架
- 森林古猿生物題目及答案
- 日語(yǔ)授受關(guān)系題目及答案
- 2021年12月山東省普通高中學(xué)業(yè)水平合格性考試物理仿真模擬試卷A(考試版)
- 2025屆北京市西城區(qū)高三一模語(yǔ)文試題(解析版)
- 2024-2025學(xué)年四川省樂山市普通高中高二上學(xué)期期末質(zhì)量檢測(cè)語(yǔ)文試題(解析版)
- 高爐爐頂裝料設(shè)備課件
- 酒吧入職合同模版
- 醫(yī)師法課件教學(xué)課件
- GB/T 44831-2024皮膚芯片通用技術(shù)要求
- 校園安全主題團(tuán)課
- 新版申請(qǐng)銀行減免利息的申請(qǐng)書
- 中職英語(yǔ)新課標(biāo)詞匯表
- 2024秋期國(guó)家開放大學(xué)《國(guó)際法》一平臺(tái)在線形考(形考任務(wù)1至5)試題及答案
- 中華文明的起源與早期國(guó)家課件
- Unit 8 I come from China. (教學(xué)設(shè)計(jì))-2023-2024學(xué)年湘少版(三起)英語(yǔ)四年級(jí)下冊(cè)
- 2024年浙江高考英語(yǔ)考綱詞匯表
評(píng)論
0/150
提交評(píng)論