微機原理 第七章 8255接口電路_第1頁
微機原理 第七章 8255接口電路_第2頁
微機原理 第七章 8255接口電路_第3頁
微機原理 第七章 8255接口電路_第4頁
微機原理 第七章 8255接口電路_第5頁
已閱讀5頁,還剩56頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

本章學習的知識點:1)掌握并行接口8255的基本功能2)掌握并行接口8255的三種工作方式的特點和用法3)掌握并行接口8255的硬軟件設計方法本章學習的難點:1)掌握8255的3種工作方式的特點和用法2)掌握8255的硬軟件設計方法第七章可編程并行接口電路82558255是Intel公司為其8086/8088系列微處理器生產(chǎn)的8位(數(shù)據(jù)線)通用可編程并行輸入輸出接口芯片。它具有很強的功能,在使用中可利用軟件編程來指定它將要完成的功能。因此,8255獲得了廣泛的應用。7.1可編程并行接口8255引腳功能和結構1)外部引線8255的外部引線如圖所示D0~D7:雙向數(shù)據(jù)信號線RD:讀信號線WR:寫信號線CS:片選信號線A0、A1:口地址選擇信號線RESET:復位輸入信號PA0-PA7:A口輸入輸出信號線PB0-PB7:B口輸入輸出信號線PC0-PC7:B口輸入輸出信號線1、8255的外部引線及內(nèi)部結構圖7-18255的外部引線圖(1)與外設接口部分有三個8位的輸入輸出端口:端口A、端口B、端口C,其編號:PA7~PA0、PB7~PB0、PC7~PC0。端口都是8位,都可以作為輸入或輸出,但功能上各有特色:2)內(nèi)部結構8255的內(nèi)部結構框圖如圖7.2所示,由三部分組成??贏:對應一個8位數(shù)據(jù)輸出鎖存和緩沖器;一個8位數(shù)據(jù)輸入鎖存器??贐和口C:對應一個8位數(shù)據(jù)輸出鎖存和緩沖器;一個8位數(shù)據(jù)輸入緩沖器。注意:口B和口C都沒有輸入鎖存,用于輸入方式時不能對數(shù)據(jù)鎖存,即如第一次進來的數(shù)據(jù)沒被取走時,第二次進來的數(shù)據(jù)把第一次進來的數(shù)據(jù)淹沒。圖7.28255的內(nèi)部結構框圖(2)與微處理器接口部分

這部分主要完成數(shù)據(jù)傳送及邏輯控制。有:RD、WR、CS、RESET、D0-D7,8255的各端口地址線A0、A1。(3)內(nèi)部控制部分

由A、B兩組控制電路組成。主要作用是根據(jù)CPU送來的控制字用以決定兩組端口(A組為A口和C口的高4位,B組為B口和C口的低4位)的工作方式,也可根據(jù)控制字的要求對C口按位進行置位或復位。8255四個端口:8255有三個8位的數(shù)據(jù)輸入輸出口外,還有一個控制口,其功能是用于對8255的工作方式進行設置。重點掌握和理解的內(nèi)容:哪個口工作由A0、A1的組合實現(xiàn)選擇:A1A0選中的口地址號00選中A口01選中B口10選中C口11選中控制口A1A0RDWRCS完成的操作000010000111000端口A→數(shù)據(jù)總線端口B→數(shù)據(jù)總線端口C→數(shù)據(jù)總線00110101111100000000數(shù)據(jù)總線→端口A數(shù)據(jù)總線→端口B數(shù)據(jù)總線→端口C數(shù)據(jù)總線→控制口X1XX1XX0XX11100D7~D0數(shù)據(jù)總線呈高阻狀態(tài)非法狀態(tài)D7~D0數(shù)據(jù)總線呈高阻狀態(tài)8255四個端口尋址邏輯關系與微處理器接口部分的硬件電路圖實例圖7-3口C上半部口C下半部口A口BRDWRRESETA1A0A1A0825574LS138G1G2AG2BCBAA5M/IOA6A4A3A2D0~D7CSY0地址譯碼邏輯關系:G2AG1G2BCB

A0A7A6A5A4A3A2A1

A0110000XXY0=0Y1=0C0H~C3HC0H→A口C1H→B口C2H→C口C3H→控制口C0HC2HC1H&A7

8255有三種工作方式,三種工作方式都可由CPU向8255的控制口寫入控制字來決定8255的工作方式。控制字有兩種:①方式選擇控制字

②C口的按位置位/復位控制字7.28255方式控制字及狀態(tài)字(重點內(nèi)容)1、8255的工作方式1)方式選擇控制字方式選擇控制字用來決定8255A三個數(shù)據(jù)端口各自的工作方式,它由一個8位的寄存器組成,它的格式如下所示。D7D6D5D4D3D2D1D0特征位A組方式00=方式001=方式11X=方式2A口0=輸出1=輸入C口C7~C40=輸出1=輸入B組方式0=方式01=方式1B口0=輸出1=輸入C口C3~C00=輸出1=輸入A組控制B組控制D7位為“1”時,為方式選擇控制字的標識位。D6、D5位決定A端口的工作方式。D4位決定A端口工作在輸入還是輸出方式。D3位決定C端口高4位PC7~PC4是作為輸入端口,還是作為輸出端口。D2位用來選擇B端口的工作方式。D1位決定B端口作為輸入還是輸出端口。D0位決定C端口低4位PC3~PC0作為輸入,還是輸出。D7D6D5D4D3D2D1D0特征位A組方式00=方式001=方式11X=方式2A口0=輸出1=輸入C口C7~C40=輸出1=輸入B組方式0=方式01=方式1B口0=輸出1=輸入C口C3~C00=輸出1=輸入A組控制B組控制例:要求A口為輸入,B口為輸出,C口為輸出,A口方式0,B口方式1。根據(jù)要求設置方式控制字:94HMOVAL,94HOUT(PORTC),AL;PORTC為控制口地址號

注意:8255在工作過程中如果改變工作方式,則控制口設置的內(nèi)容全部復位(CPU自動完成),接著要設置新的方式控制字后才能進入新的工作方式。3種工作方式可用軟件編程對控制口設置來指定。三種基本的工作方式為:方式0-基本的輸入輸出方式方式1-選通輸入輸出方式方式2-雙向傳送方式。7.38255的工作方式

1)工作方式0(基本輸入輸出方式)功能:方式0不使用聯(lián)絡信號,也不使用中斷,A口和B口可定義為輸入或輸出口,C口分成兩個部分(高四位和低四位),C口的兩個部分也可分別定義為輸入或輸出。在方式0,所有口輸出均有鎖存,輸入只有緩沖,無鎖存,C口還具有按位將其各位清0或置1的功能。常用于與外設無條件的數(shù)據(jù)傳送或接收外設的數(shù)據(jù)。

2)工作方式1(選通輸入輸出方式)

A口借用C口的一些信號線用作控制和狀態(tài)信號,組成A組,B口借用C口的一些信號線用作控制和狀態(tài)信號,組成B組。在方式1下,C口的某些位被占用。

當A口工作于方式1且用作輸出口時,C口的PC7線用作輸出緩沖器滿OBF信號,PC6用作外設收到數(shù)據(jù)后的響應信號ACK,PC3用作中斷請求輸出信號線INTR。方式1的輸出:當B口工作于方式l且用作輸出口時,C口的PC1線用作輸出緩沖器滿OBF信號,PC2用作外設收到數(shù)據(jù)后的響應信號ACK,PC0用作中斷請求輸出信號線INTR。

方式1下A口、B口為輸出圖7.4方式1下,A、B口均為輸出的信號定義控制字的設置D7D6D5D4D3D2D1D00A組方式01=方式1A口0=輸出C口I/OB組方式1=方式1B口0=輸出C口I/O①OBF為輸出緩沖器滿信號,低電平有效。8255輸出信號,當其有效時,CPU已將數(shù)據(jù)送到指定的口,用于通知外設可將數(shù)據(jù)取走。各個控制位的作用(重點掌握和理解的內(nèi)容)

②ACK為外設響應信號,低電平有效。由外設送來,有效時表明8255的數(shù)據(jù)已被外設取走。③INTR為中斷請求信號,高電平有效。它是當外設將數(shù)據(jù)取走并給出應答ACK信號之后,8255向CPU提出中斷請求,讓CPU輸出一個新的數(shù)據(jù)。④INTE中斷允許信號,高電平有效。為低時則屏蔽中斷請求,即不發(fā)出中斷請求信號INTR。INTE的狀態(tài)由通過對C口PC6或PC2置1后A口和B口才允許中斷。INTE=1,允許A口或B口向CPU申請中斷,INTE=0,禁止A口或B口向CPU申請中斷。

8255的中斷設置方法:中端允許信號INTE是由軟件通過對C口的按位置位/復位的控制字來置1或清0的設置的,PC6置1時,A口允許中斷,PC2置1時,B口允許中斷。注意:在方式1輸出方式時,PC4和PC5的工作狀態(tài)由控制字決定其為輸出還是輸入。設置后不影響其它位的作用。方式1下A口、B口為輸入(重點掌握和理解的內(nèi)容)

1)A口工作于方式1且用作輸入口時,C口的PC4線用作選通輸入信號線STB,PC5用作輸入緩沖器滿輸出信號線IBF,PC3用作中斷請求輸出信號線INTR。2)B口工作于方式1且用作輸入口時,C口的PC2線用作選通輸入信號線STB,PC1用作輸入緩沖器滿輸出信號線IBF,PC0用作中斷請求輸出信號線INTR。

方式1下A口、B口均為輸入圖7.5方式1下A、B口均為輸入時的信號定義D7D6D5D4D3D2D1D00A組方式01=方式1A口1=輸入C口I/OB組方式1=方式1B口1=輸入C口I/O控制字的設置①STB:選通控制,輸入信號。當外部設備來的8位數(shù)據(jù)送入到8255的輸入緩沖器中時該位有效。在時間上,外部設備先把數(shù)據(jù)送到8255的數(shù)據(jù)口A或B,然后再送出STB信號,用于把數(shù)據(jù)鎖存到8255的輸入數(shù)據(jù)寄存器,等待CPU取數(shù)據(jù)。②IBF:輸入緩沖器滿信號,輸出信號,高電平有效。當8255的輸入緩沖器有新數(shù)據(jù)后,該位有效,為8255給外設的聯(lián)絡信號,告知外設輸入的數(shù)據(jù)已被接收到,但還沒被CPU取走,不能再送新的數(shù)據(jù)。該信號在STB變?yōu)榈秃?300NS時間內(nèi)變?yōu)楦唠娖剑ㄗ詣油瓿桑?。在CPU讀取了數(shù)據(jù)后,RD信號撤消后的300NS時間內(nèi)IBF信號才撤消,變?yōu)榈碗娖?,告知外設可輸入新的數(shù)據(jù)。③INTR:為中斷請求信號,高電平有效。中端請求的條件:STB變高后300ns內(nèi),并IBF信號也為高。(要等數(shù)據(jù)全部進入到輸入緩沖器后才發(fā)出中斷請求)④INTE:中斷允許信號,高電平有效。為低時則屏蔽中斷請求。INTE的狀態(tài)由通過對C口PC4或PC2置1后A口和B口才允許中斷。(與INTR完全不同,是無條件的,由軟件對C口PC4或PC2置1即可實現(xiàn)中斷)3)工作方式2(雙向輸入輸出方式)功能:方式2是A組獨有的工作方式。外設既能在A口的8條引線上發(fā)送數(shù)據(jù),又能接收數(shù)據(jù)。此方式也是借用C口的5條信號線作控制和狀態(tài)線,A口的輸入和輸出均帶有鎖存。理解內(nèi)容:

圖7.6方式2下的信號定義OBF:輸出緩沖器滿,輸出,低有效。這是8255A送給外設的控制信號,有效時表示數(shù)據(jù)已送入到A口輸出鎖存器中,用該信號通知外設將數(shù)據(jù)取走。ACK:應答,輸入,低有效。這是外設送來的信號,有效時表示外設已經(jīng)從A口輸出線上將數(shù)據(jù)取走。STB:選通信號,輸入,低有效。這是由外設送來的信號,有效時將由外設送來的位于A口引線的8位數(shù)據(jù)鎖存到A口的輸入鎖存器中。INTR:中斷請求,輸出,高有效。這是8255A送給CPU的中斷請求信號。無論是輸入操作還是輸出操作,當一個操作完成,要進行下一個操作時8255A都通過該引腳向CPU發(fā)中斷請求信號。方式2的A口輸入和輸出傳送各自作為一個中斷源,兩個中斷請求信號在8255A內(nèi)部相或,只產(chǎn)生一個中斷請求通過PC3發(fā)給CPU。IBF:輸入緩沖器滿,輸出,高有效。這是8255A送給外設的響應信號,有效時表示數(shù)據(jù)已送入到輸入鎖存器中,CPU可以取走。INTE1:中斷允許1。它是由內(nèi)部的中斷控制觸發(fā)器發(fā)出的允許中斷或屏蔽中斷的信號。INTE=l,允許A口在輸出緩沖器變空(數(shù)據(jù)已被外設取走)時向CPU申請中斷,讓CPU輸出一個新的數(shù)據(jù);INTE=0,則屏蔽了輸出中斷請求,這樣,即使A口的輸出緩沖器已經(jīng)變空了,也不能在INTR上產(chǎn)生中斷請求信號。INTE1為0還是為1是由軟件通過對PC6復位/置位來完成的,PC6=0使INTE1為0,PC6=l使INTE1為1。(由軟件置1實現(xiàn)中斷)INTE2:中斷允許2。它也是由內(nèi)部的中斷控制觸發(fā)器發(fā)出的允許中斷或屏蔽中斷的信號。INTE2=1,允許A口在輸入數(shù)據(jù)就緒時向CPU申請中斷,讓CPU將數(shù)據(jù)取走;INTE2=0,則屏蔽了輸入中斷請求。INTE2為0還是為1是由軟件通過對PC4復位/置位來完成的,PC4=0使INTE2為0,PC4=1使INTE2為1。(由軟件置1實現(xiàn)中斷)

8255A和CPU傳輸數(shù)據(jù)的過程中,經(jīng)常將C端口的某幾位作為控制位或狀態(tài)位來使用,從而配合A端口或B端口的工作。7.4C口按位置位/復位控制字

控制字D7=0在8255A芯片初始化時,C端口置1/置0控制字可以單獨設置C端口的某一位為0或某一位為1??刂谱值腄7位為“0”時,是C端口置1/置0控制字中的標識位,這個控制字只對C口起作用,任何一位都可以通過按位置位/復位控制字來設置。注意:對C口的置位/復位控制不是把控制字送到C口,而是由控制口決定各位的狀態(tài),是把控制字送到控制口圖7.7C口的按位操作控制字格式D0位的狀態(tài)決定了是對由D3-D1選中位是復位還是置位,每設置一次只能對其中的一位實現(xiàn)設置!D7位必須為0D7D6D5D4D3D2D1D0C口置位識別位D0=0任意值選中位置1/置0選擇D0=0:置0,D0=1:置1000:PC0001:PC1010:PC2011:PC3100:PC4101:PC5110:PC6111:PC7C口位選擇例:設置C7=1,C5=1,C3=0MOVAL,0FHOUT(PORTC),AL;C7=1MOVAL,0BHOUT(PORTC),AL;C5=1MOVAL,06HOUT(PORTC),AL;C3=0每位需兩條指令完成設置PORTC為控制口的地址號7.68255應用設計舉例例1、8255與打印機連接的硬軟件設計查詢式,用C口的一些位做工作狀態(tài)(靈活應用!)圖7.88255與打印機的連接

在使用中打印機的很多控制線中只使用少數(shù)的幾個控制信號就可以滿足正確打印的要求,其它信號線可以不要。8255PA0PA1PA7PC6PC1系統(tǒng)總線D0D1D7BUSYSTROBE打印機STROBE:告訴打印機是否能發(fā)數(shù)據(jù)。BUSY:=1,數(shù)據(jù)被打印機取走,=0,數(shù)據(jù)被打印機取走。打印程序如下:INIT55:MOVDX,0383H;控制口地址MOVAL,13H;A方式0、輸出、B方式0,輸入OUTDX,AL;C7-4輸出、C3-0輸入MOVAL,0DH;C6置1OUTDX,AL;給打印機一個接受數(shù)據(jù)信號PRINT:MOVAL,BLAK;BLAK為要打印的數(shù)據(jù)長度MOVCL,AL;數(shù)據(jù)長度送到CL保存MOVSI,OFFSETDATA1:取打印數(shù)據(jù)存放地址GOON:MOVDX,0382H;設C口地址PWAIT:INAL,DX;取回C口的內(nèi)容ANDAL,02H;判斷C1位,打印是否準備好JNZPWAIT;C1=0ZF=0則轉去繼續(xù)查詢等待MOVAL,[SI];準備好,取一個字符MOVDX,0380H;送打印字給A口OUTDX,AL;送數(shù)據(jù)MOVDX,0383HMOVAL,0CH:C6置0,使該位有跳變OUTDX,AL;按位置位控制字MOVAL,0DH;C6置1,給打印機一個接受數(shù)據(jù)信號OUTDX,AL;送脈沖INCSI;打印數(shù)據(jù)區(qū)地址移到下一個數(shù)據(jù)位置DECCL;數(shù)據(jù)長度減1JNZGOON;全部數(shù)據(jù)打印完嗎?沒完返回繼續(xù)打印RET;全部數(shù)據(jù)打印完,返回主程序在此例中,為了保證打印機正確的接收到數(shù)據(jù),先給出一個查詢信號STROBE,在打印機接到這個信號后并且處在“閑”狀態(tài)時,就回答給出BUSY=1,CPU就可以將要打印的數(shù)據(jù)送到A口,同時發(fā)出STROBE信號,告訴打印機,要發(fā)送下一個數(shù)據(jù)。例2:設計兩個8255,要求8255(1)地址為80H-83H,8255(2)地址為84H-87H地址譯碼:G1G2BG2ACBAA1A0A7M/IOA5+A6A4A3A2A1A0100000001000000110000010100000118255(1)Y0=0A口80HB口81HC口82H控制口83H100001001000010110000110100001118255(2)Y1=0A口84HB口85HC口86H控制口87H與CPU的硬件電路D0-7Y0Y1D0-7M/IOA7A6A5+A4A3A2ABCG2AG2BG1A1A0A1A0CSD0-7A1A0CSWRRDWRRDWRRDRESETRESETRESETA口B口A口B口C口C口對8255(1)的工作方式要求:A方式0、輸入,B方式1、輸出,C7-4輸出,C3-0輸入控制字為95H,初始化程序:MOVAL,95HOUT(83H),AL對8255(2)的工作方式要求:A方式1、輸出、B方式1,輸入,C7-4輸入,C3-0輸出控制字為AEH,初始化程序:MOVAL,AEHOUT(87H),AL要分別對兩個8255進行初始化設置1、當K全閉合時,8支燈亮;當有一個以上K斷開時,8支燈滅。例3:8255A的PA0~PA7端接有開關K0~K7,PB0~PB7接有8支LED發(fā)光管。端口A、B均工作在方式0下,根據(jù)開關狀態(tài)控制LED燈的顯示。設計任務:2、測試開關狀態(tài),控制相應的燈亮或滅。CSA1A0WRRDPA0PA7PB0PB1PB73:8CBAG1G2AG2BWRA7A6A5A4A3A2A1A0Y4…..+5V+5V…..M/IORDK0K7D0~D7地址:90H,91H,92H,93H方式控制字:10010000=90HWRRDPB7WRY4…..+5V+5V…..RDK0K7D0~D7CSA1A074LS138CBAG1G2AG2BA7A6A5A4A3A2A1A0PA0PA7M/IO到CPU數(shù)據(jù)總線PB0PB1L0L1L7任務1編程:START:MOVAL,90H;8255初始化設置 OUT93H,ALSTATES:INAL,90H,讀A口ANDAL,0FFH,判斷K0-K7全閉合JZHIGH ;當K全閉合時,8支燈亮;MOVAL,0FFH ;有一個以上K斷開,OUT91H,AL ;8支燈滅;JMPDONEHIGH:MOVAL,00H;8支燈亮(注意電路的非門)OUT91H,ALDONE:JMPSTATESSTART:MOVAL,90H OUT93H,ALAGAIN:INAL,90HOUT91H,ALJMPAGAIN任務2編程:例4用8255作為小鍵盤接口的設計

圖中8255A的A口工作于方式0輸出,B口工作于方式0輸入。0#8255APA0CPU總線行0+5VPA1PA2PA3PB0PB1PB2PB312#1#13#2#14#3#15#行1行2行3列0列1列2列31)CPU掃描8255的各行(使輸出逐位依此為0),讀回輸入,檢查是否有鍵按下(是否有某位為0)。設計思想:2)有鍵按下時,與之對應的行和列短接,使其為0,查鍵值。3)根據(jù)輸出行為0的順序,確定行值,然后根據(jù)輸入列為0的位,找到對應的鍵值。工作原理:使全部輸出線為0,讀回輸入線的數(shù)據(jù),如有鍵被按下,則肯定有一條線的數(shù)據(jù)(有一位)為0。鍵盤工作過程:首先進行第1次鍵盤掃描(判斷是否有鍵按下)。0#8255APA0CPU總線行0+5VPA1PA2PA3PB0PB1PB2PB312#1#13#2#14#3#15#行1行2行3列0列1列2列3工作原理:使全部輸出線為0,讀回輸入線的數(shù)據(jù),如有鍵被按下,則肯定有一條線的數(shù)據(jù)(有一位)為0。鍵盤工作過程:首先進行第1次鍵盤掃描(判斷是否有鍵按下)。①使A口PA3PA0輸出均為0,然后讀入B口的值,查看PB3PB0是否有低電平,若沒有低電平,則說明沒有鍵按下,繼續(xù)進行掃描(重復過程①)。0#8255APA0CPU總線行0+5VPA1PA2PA3PB0PB1PB2PB312#1#13#2#14#3#15#行1行2行3列0列1列2列3若PB3PB0中有一位為低電平,使用軟件延時1020ms以消除抖動,若低電平消失,則說明低電平是由干擾或按鍵的抖動引起的,必須再次掃描,否則,則確認有鍵按下,接著進行第2次掃描(行掃描,判斷所按鍵的位置)。②通過A口輸出使PA0=0,PA1=1,PA2=1,PA3=1(逐位為0)對第0行進行掃描,此時,讀入B口的值,判斷PB3PB0中是否有某一位為低電平,若有低電平,則說明第0行某一列上有鍵按下。0#8255APA0CPU總線行0+5VPA1PA2PA3PB0PB1PB2PB312#1#13#2#14#3#15#行1行2行3列0列1列2列3如果沒有低電平,接著使A口輸出PA0=1,PA1=0,PA2=1,PA3=1對第1行進行掃描。按上述方法判斷,直到找到被按下的鍵,并識別出其在矩陣中的位置,從而可根據(jù)鍵號去執(zhí)行該鍵對應的處理程序。設8255A的A口、B口和控制寄存器的地址分別為80H、81H和83H。MOVAL,82H;A口方式0輸出,B口方式0輸入OUT83H,AL;將工作方式控制字送控制寄存器MOVAL,00H OUT80H,AL;使PA3=PA2=PA1=PA0=0LOOA:INAL,81H;讀B口,判斷PB30是否有一位為低電平ANDAL,0FH;只考慮低四位的值 CMPAL,0FH;有鍵閉合嗎?JZLOOA ;無鍵被按下,轉LOOA等待CALLLD20ms;有鍵被按下,PB3PB0有一位為低,調(diào)延;時20ms子程序,消除抖動引起的誤動作。INAL,81H;再次讀入B口值。程序設計:ANDAL,0FH ;有鍵按下,在檢查是否真的按下。CMP AL,0FH ;如果延時后PB3PB0中低電平不再存在,JZ LOOA ;說明是由干擾或抖動引起的,則轉LOOA繼續(xù)掃描,延時后仍有某位為0,說明有鍵被按下,查鍵值。

下段程序為判斷哪一個鍵按下

START:MOVBL,4 ;行數(shù)送BL(共四行) MOV BH,4 ;列數(shù)送BH(共四列) MOV AL,0FEH ;準備掃描0行,使D0位=0。 MOV CL,0FH ;鍵盤屏蔽碼送CL(只要低四位) MOV CH,00H ;CH中存放起始鍵號LOP1:OUT 80H,AL ;A口輸出,掃描一行(D0=0) ROL AL,1 ;行值左移一位,修改掃描碼,準;備掃描下一行。 MOV AH,AL ;暫時保存行線值 IN AL,81H ;讀B口,以便確定所按鍵的列值ANDAL,CL;比較是低四位,只保留低四位 CMPAL,CL ;檢查該列線是否為0, JNZLOP2;有列線為0,轉LOP2,找列值ADDCH,BH;無鍵按下,修改鍵號,檢查下一行 MOVAL,AH ;恢復掃描碼 DECBL ;行數(shù)減1 JNZ LOP1 ;行未掃描完轉LOP1,掃描下一行MOVCX,16;16個鍵,要找最多16次LOP2:MOVSI,TABLE;取鍵碼表值CMPAX,[SI];查找該鍵值JZLOP3;找到該值,到鍵處理子程序INCSIINCSILOOPLOP2鍵值表:

ORG1000HTABLE:DWFE0E;0鍵DWFD0E;1鍵DWFB0E;2鍵DWF70E;3鍵DWFE0D;4鍵DWFE0D;5鍵DWFD0D;6鍵DWFB0D;7鍵DWF70D;8鍵DWFE0D;9鍵;;鍵處理子程序:LOP3:MOVAX,SI;AL中的內(nèi)容就為該鍵值::

例5采用8255A進行雙機并行通信的接口要求在甲乙兩臺微機之間并行傳送1K字節(jié)數(shù)據(jù)。兩機的CPU與接口之間都采用查詢方式交換數(shù)據(jù)。1.甲機發(fā)送,1方式,PA口為輸出,PC7和PC6引腳分別固定作聯(lián)絡線OBF和ACK2.乙機接收。0方式,PA口為輸入,PC4和PC0作聯(lián)絡線。雖然,兩側的8255A都設置了聯(lián)絡線,但有本質(zhì)的差別:甲機8255A是1方式,其聯(lián)絡線是固定的不可替換;乙機的8255A是0方式,其聯(lián)絡線是不固定的可選擇,比如可選擇PC4和PC1或PC3、PC2等任意組合。雙機并行傳送接口電路框圖

甲機發(fā)送程序:MOVDX,0303H;8255A命令口MOVAL,10100000B;初始化工作方式字OUTDX,ALMOVAL,0DH;置發(fā)送中斷允許INTEA=1OUTDX,AL;PC6=1MOVAX,0030H;發(fā)送數(shù)據(jù)內(nèi)存首址MOVES,AXMOVBX,00H;MOVCX,0400H;發(fā)送字節(jié)數(shù)MOVDX,0300H;向A口寫第一個數(shù),產(chǎn)生第一個OBF信號分別對兩個系統(tǒng)進行程序設計MOVAL,ES:[BX];送給對方,以便獲取對

溫馨提示

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

評論

0/150

提交評論