第5章 并行接口技术-8255A_第1页
第5章 并行接口技术-8255A_第2页
第5章 并行接口技术-8255A_第3页
第5章 并行接口技术-8255A_第4页
第5章 并行接口技术-8255A_第5页
已阅读5页,还剩77页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

上章作业:P77 2题、13题、14题补充作业:在8086系统中接有一片8259A

,8259A的8位端口地址分 别为60H、62H,画出接口 电路图。1第5章并行接口技术

5.1概述并行通信是把一个数据的各个数位用几条线同时进行传输,具有传输速度快,信息率高的特点。但它比串行通信所用的电缆多,因此,并行通信常用在传输距离较短(几米至几十米)和数据传输率较高的场合。2

实现并行通信的接口就是并行接口。一个并行接口可设计为只作为输出接口;还可设计为只作为输入接口。另外,还可以设计成既作为输入又作为输出的接口。它可以用两种方法实现,一种是利用同一个接口中的两个通路,一个作输入通路,一个作输出通路;另一种是用一个双向通路,既作为输入又作为输出。3典型的并行接口和外部设备连接如图所示。图中的并行接口用一个通道和输入设备相连,用另一个通道和输出设备相连,每个通道中除数据线外均配有一定的控制线和状态线。2/1/20234从图1中看到,并行接口中应该有一个控制寄存器用来接收CPU对它的控制命令,有一个状态寄存器提供各种状态位供CPU查询。为了实现输入和输出,并行接口中还必定有相应的输入缓冲寄存器和输出缓冲寄存器。5硬件:对外设的要求:应提供设备状态信息

对接口的要求:需要提供状态口RD输入设备锁存器三态缓冲器(8位)选通三态缓冲器(1位)D+5VCPQ&8086及其配置地址译码&M/IO数据口状态口DB查询输入接口电路原理图Di状态信息R

触发器数据ABC查询传送方式61.并行接口在输入过程中的作用外部设备首先将数据送给接口,并使状态线“数据输入准备好”成为高电平。接口把数据接收到数据输入缓冲寄存器的同时,使“数据输入回答”线变为高电平,作为对外部设备的响应。外部设备接到此信号,便撤除数据和“数据输入准备好”信号。数据到达接口中后,接口会在状态寄存器中设置“输入准备好”状态位,以便CPU对其进行查询,接口也可以在此时向CPU发一个中断请求。7所以,CPU既可以用软件查询方式,也可以用中断方式来设法读取接口中的数据。CPU从并行接口中读取数据后,接口会自动清除状态寄存器中的“输入准备好”状态位,并且使数据总线处于高阻状态。此后,又可以开始下一个输入过程。8

2.并行接口在输出过程中的作用每当外部设备从接口取走一个数据之后,接口就会将状态寄存器中的“输出准备好”状态位置“1”,以表示CPU当前可以往接口中输出数据,这个状态位可供CPU进行查询。此时,接口也可以向CPU发一个中断请求。所以,CPU既可以用软件查询方式,也可以用中断方式设法往接口中输出一个数据。9当CPU输出的数据到达接口的输出缓冲寄存器中后,接口会自动清除“输出准备好”状态位,并且将数据送往外部设备,同时,接口往外部设备发送一个“驱动信号”来启动外部设备接收数据。外部设备被启动后,开始接收数据,并往接口发一个“数据输出回答”信号。接口收到此信号,便将状态寄存器中的“输出准备好”状态位重新置“1”,以便CPU输出下一个数据。105.2可编程并行接口芯片8255A

8255A是Intel86系列微处理机的配套并行接口芯片,它可为86系列CPU与外部设备之间提供并行输入/输出的通道。由于它是可编程的,可以通过软件来设置芯片的工作方式,所以,用8255A连接外部设备时,通常不用再附加外部电路,使用时很方便。115.2.1、8255A芯片内部结构12131.并行输入/输出端口A,B,C8255A芯片内部包含3个8位端口,这三个端口均可作为独立的8位端口使用,实现数据的输入/输出。必要时端口C可分成两个4位端口,分别与端口A和端口B配合工作,通常将端口A和端口B定义为输入/输出的数据端口,而端口C可作为状态或控制信息的传送端口。142.A组和B组控制部件端口A与端口C的高4位(PC7~PC4)构成A组,由A组控制部件实现控制功能,端口B与端口C的低4位(PC3~PC0)构成B组,由B组控制部件实现控制功能。它们各有一个控制单元,可接收来自读/写控制部件的命令和CPU通过数据总线(D7~D0)送来的控制字,并根据它们来定义各个端口的操作方式。153.数据总线缓冲存储器这是一个三态双向8位数据缓冲存储器,它是8255A与8086/8088CPU之间的数据接口。CPU执行输出指令时,可将控制字或数据通过数据总线缓冲存储器传送给8255A。CPU执行输入指令时,8255A可将状态信息或数据通过总线缓冲存储器向CPU输入。因此它是CPU与8255A之间交换信息的必经之路。164.读/写控制部件这是8255A内部完成读/写控制功能的部件,它能接收CPU的控制命令,并根据它们向片内各功能部件发出操作命令。有关引脚如下:(1)CS——片选信号。由CPU输入,通常由端口的高位地址码译码得到。(2)RD,WR——读、写控制信号。由CPU发出,表示CPU本次操作的类型。17(3)RESET——复位信号。由CPU输入。RESET有效时,清除8255A中所有控制字寄存器内容,并将各端口置成输入方式。(4)A1和A0——端口选择信号。 当A1A0=00,选择端口A; 当A1A0=01,选择端口B; 当A1A0=10,选择端口C; 当A1A0=11,选择控制字寄存器。18195.2.38255A芯片的控制字定义工作方式控制字通过方式定义控制字可以设置8255各端口的工作方式。如图所示:202置位/复位控制字

只对端口C有效,格式如图所示。格式如图所示,当将端口A定义为方式1或方式2或将端口B定义为方式1时,要求使用端口C的某些位作控制用,这时需要使用一个专门的置位/复位控制字来对控制端口C的各位分别进行置位/复位操作。21225.2.4工作方式8255A各端口共有3种工作方式:方式0——基本输入/输出方式;方式1——选通输入/输出方式;方式2——双向传送方式。端口A有3种工作方式(方式0,方式1和方式2),端口B只可处于两种方式(方式0和方式1),端口C常被分成高4位和低4位两部分,可分别用来传送数据或控制信息。23工作方式0

基本输入/输出方式这是8255A中各端口的基本输入/输出方式。它只完成简单的并行输入/输出操作,CPU可从指定端口输入信息,也可向指定端口输出信息。如果3个端口均处于工作方式0,则可由工作方式控制字定义16种工作方式的组合,这种情况下,工作方式控制字的具体格式应如下图所示。2425(2)工作方式1选通输入/输出方式

——选通输入方式数据输入操作要在选通信号控制下完成。需要使用的控制信号如下:①STB——选通信号。由外部输入,低电平有效。STB有效时,将外部输入的数据锁存到所选端口的输入锁存器中。对A组来说,指定端口C的第4位(PC4)用来接收向端口A输入的STB信号;对B组来说,指定端口C的第2位(PC2)用来接收向端口B输入的STB信号。26②IBF——输入缓冲存储器满信号。向外部输出,高电平有效。IBF有效时,表示由输入设备输入的数据已占用该端口的输入锁存器,它实际上是对STB信号的回答信号,待CPU执行IN指令时,RD有效,将输入数据读入CPU,其后沿把IBF置“0”,表示输入缓冲存储器已空,外部设备可继续输入后续数据。对A组来说,指定端口C的第5位(PC5)作为从端口A输出的IBF信号;对B组来说,指定端口的第一位(PC1)作为从端口B输出的IBF信号。27③INTR——中断请求信号。向CPU输出,高电平有效。对A组来说,指定端口C的第3位(PC3)作为从端口A输出的INTR信号;对B组来说,指定端口的第0位(PC0)作为从端口B输出的INTR信号。在A组和B组控制电路中分别设置一个内部中断触发器INTEA和INTEB,前者由STBA(PC4)控制置位,后者由STBB(PC2)控制置位。28当任一组中的STB有效,则把IBF置“1”,表示当前输入缓冲存储器已满,并由STB后沿置“1”各组的INTE,于是输出INTR有效,向CPU发出中断请求信号。待CPU响应这一中断请求,可在中断服务程序中安排IN指令读取数据后,将IBF置“0”,外部设备才可继续输入后续数据。8255A中的端口A和端口B均可工作于方式1完成输入操作功能,这种情况下工作方式控制字的具体格式如图所示。292/1/2023302/1/202331从图中可看出,当端口A和端口B同时被定义为工作方式1完成输入操作时,端口C的PC5~PC0被用作控制信号,只有PC7和PC6位可完成数据输入或输出操作,因此这实际上可构成两种组合状态:它们是端口A,B输入,PC7,PC6输入和端口A,B输入,PC7,PC6输出。32工作方式1

——选通输出方式方式1也可完成输出操作,使用的控制信号有:①OBF——输出缓冲存储器满信号。向外部输出,低电平有效。OBF有效时,表示CPU已将数据写入该端口正等待输出。当CPU执行OUT指令,WR有效时,表示将数据锁存到数据输出缓冲存储器,由WR的上升沿将OBF置为有效。对于A组,系统规定端口C的第7位(PC7)用作从端口A输出的OBF信号,对于B组,规定端口C的第1位(PC1)用作从端口B输出的OBF信号。33②ACK——外部应答信号。由外部输入,低电平有效。ACK有效,表示外部设备已收到由8255A输出的八位数据,它实际上是对OBF信号的回答信号。对于A组,指定端口C的第6位(PC6)用来接收向端口A输入的ACK信号;对于B组,指定端口C的第2位(PC2)用来接收向端口B输入的ACK信号。34③INTR——中断请求信号。向CPU输出,高电平有效。对于端口A,内部中断触发器INTEA由PC6(ACKA)置位,对于端口B,INTEB由PC2(ACKB)置位。当ACK有效时,OBF被复位为高电平,并将相应端口的INTE置“1”,于是INTR输出高电平,向CPU发出输出中断请求,待CPU响应该中断请求,可在中断服务程序中安排OUT指令继续输出后续字节。对于A组,指定端口C的第3位(PC3)作为由端口A发出的INTR信号;对于B组,指定端口C的第0位(PC0)作为由端口B发出的INTR信号。35如果将8255A中的端口A和端口B均定义为工作方式1的输出方式,则工作方式控制字的具体格式如下图所示。36经这样定义的端口状态如下图所示。图102/1/202337从图中可看出,当端口A和端口B同时被定义为工作方式1完成输出操作时,端口C的PC6,7和PC3~PC0被用作控制信号,只有PC4,5两位可完成数据输入或输出操作。因此可构成两种组合状态:①端口A,B输出,PC4,5输入;②端口A,B输出,PC4,5输出。38图11采用工作方式1,也可将端口A和端口B分别定义为输入和输出端口。将端口A定义为方式1输入,将端口B定义为方式1输出,其方式控制字格式如图所示。2/1/202339经定义的端口状态如图所示。图122/1/202340(3)工作方式2

带选通的双向传送方式。8255A中只允许端口A处于工作方式2,可用来在CPU与外设之间实现双向并行通信。其有关的控制信号由端口C提供,并可向CPU发出中断请求信号。当端口A工作于方式2时,允许端口B工作方式0或方式1完成输入/输出功能,其方式控制字格式如下图所示。41图122/1/202342端口C的使用:在方式0,其为基本的I/O端口;若有端口工作于其他方式,则读取端口C为状态数据。431、计算机系统有一并行接口芯片8255A,初始化时将8255A的A口设置成方式1的输出,这时8255A与外设的联络信号为:

A)IBF、STB B)RDY、STB C)OBF、ACK D)INTR、ACK2、有一并行接口芯片8255A,初始化时将其设置成方式1的输出,其中断输出引脚连接至8259的IR2,这时系统对该中断源的屏蔽分

级。

A)1 B)2 C)3 D)444

MOV AL,90H;初始化

OUT 63H,ALLP: IN AL,60H XOR AL,0FFH OUT61H,AL JMP LP【例1】从A口输入开关状态,利用LED显示:开关断开,相应LED点亮;开关闭合,相应LED点亮。

8255端口地址:60H~63HLED0LED1LED745【例2】在PC/XT系统中接有一个打印机,8255A作为输出接口,工作在选通方式,试编程将内存某缓冲区BUF内的200H个字节的ASCII码送打印机打印,其接口电路如图。设8255A的端口地址:A口、B口、C口、控制字寄存器:

210H,211H,212H,213H

PA7~PA0PC6(ACKA)PC0PC7PC3D7~D0ACKSTB8255A打印机8259AIRQ2OBF46主程序…CLIMOVAL,0A0H ;8255A方式控制字MOVDX,213HOUTDX,ALMOVAL,0DH ;置位PC6,使A口中断允许OUTDX,ALPUSHDS;保存DSMOVAX,SEGPRINT_INT;中断服务程序PRINT段址送DSMOVDS,AXLEADX,PRINT_INT;PRINT偏址送DXMOVAL,0AH;中断类型码送ALMOVAH,25H;功能号送AHINT21H;调用DOS设中断向量功能

INAL,21H;读中断屏蔽寄存器IMR内容ANDAL,0FBHOUT21H,AL;开放IR2中断

POPDS;恢复DS

47MOV DX,213HMOV AL,01HOUT DX,ALMOV SI,OFFSETBUFMOV AL,[SI]INC SIMOV BUFPT,SIMOV CX,NUM-1MOV DX,210HOUT DX,AL

STI MOV DX,213H MOV AL,00 OUT DX,AL INC AL NOP OUT DX,ALNEXT:HLT ;等待中断

LOOP NEXT IN AL,21H OR AL04H OUT 21H,AL …48中断处理子程序PRINT_INT PROC MOV SI,BUFPT MOV AL,[SI] INC BUFPT MOV DX,210H OUT DX,AL MOV DX,213H MOV AL,00H OUT DX,AL NOP INC AL OUT DX,ALP_END: MOV AL,20H OUT 20H,AL IRETPRINT ENDP49【例3】将开关的通断状态用七段LED数码管显示。

例如,K8闭合,其余3个断开,则七段LED显示器显示数字7。505152工作原理分析同相驱动器

A口工作于输入方式,PA3-PA0与4个开关相连,B口工作于输出方式,PB7-PB0经同相驱动器与七段LED显示器相连(B口输出的是TTL电平信号,要使LED显示器发光,必须加上驱动电路,才能提供足够大的电流)。开关合上后,PA接地,输入“0”电平;开关断开时,PA经一电阻接+5V,输入“1”电平。CPU从8255读入A口的状态,根据转换码表查表转换为相应的七段码,输出相应信号到B口。PB端经同相驱动器接七段LED显示器,其电平为“0”时相应的LED灭;电平为“1”时相应的LED亮。53;012345678TABLEDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH

9AbCdEFDB6FH,77H,7CH,39H,5EH,79H,71H

┅┅PORTAEQU0F0H;A口地址

PORTBEQU0F2H;B口地址

PORTCTLEQU0F6H;控制寄存器地址

┅┅MOVAL,10010000BOUTPORTCTL,AL;写方式控制字

INAL,PORTA;读A口开关状态ANDAL,0FH;高4位清0LEABX,TABLEXLAT;利用换码表转换为七段码值OUTPORTB,AL;从B口输出,驱动LED发光JMP LPLP:54【例4】

键盘及显示55OUTBIT equ08002h ;位控制口OUTSEG equ08004h ;段控制口IN_KEY equ08001h ;键盘读入口datasegmentLEDBuf db6dup(?) ;显示缓冲Num db1dup(?) ;显示的数据DelayT db1dup(?)LEDMAP: ;八段管显示码

db3fh,06h,5bh,4fh,66h,6dh,7dh,07hdb7fh,6fh,77h,7ch,39h,5eh,79h,71hKeyTable: ;键码定义

db16h,15h,14h,0ffh,13h,12h,11h,10hdb0dh,0ch,0bh,0ah,0eh,03h,06h,09hdb0fh,02h,05h,08h,00h,01h,04h,07hdataends56codesegmentassumecs:code,ds:dataDelayprocnearpushax;延时子程序

pushcx

moval,0

mov

cx,axloop$popcxpopaxretDelayendp57DisplayLEDprocnear

mov

bx,offsetLEDBuf

mov

cl,6;共6个八段管

movah,00100000b;从左边开始显示DLoop:

mov

dx,OUTBIT

moval,0outdx,al;关所有八段管

moval,[bx]

mov

dx,OUTSEGoutdx,al

mov

dx,OUTBIT

moval,ahoutdx,al;显示一位八段管

pushax

movah,1callDelaypopax

shrah,1incbx

dec

cl

jnz

DLoop

mov

dx,OUTSEG

moval,0outdx,al;关所有八段管

retDisplayLED

endp58TestKeyprocnear

mov

dx,OUTBIT

mov al,0out dx,al;输出线置为0

mov

dx,IN_KEYin al,dx;读入键状态

not aland al,0fh;高四位不用

retTestKey

endp59GetKeyprocnear

mov

ch,00100000b

mov

cl,6KLoop:

mov

dx,OUTBIT

moval,ch;找出键所在列

notaloutdx,al

shr

ch,1

mov

dx,IN_KEYinal,dxnotalandal,0fh

jneGoon_;该列有键入

dec

cl

jnz

KLoop

mov

cl,0ffh;没有键按下,返回0ffh

jmpExit1Goon_:

dec

cl

shl

cl,2;键值=列X4+行

mov

ch,4LoopC:testal,1

jnzExit1

shral,1inccl

dec

ch

jnz

LoopC60Exit1:

mov

dx,OUTBIT

moval,0outdx,al

mov

ch,0

mov

bx,offsetKeyTableaddbx,cx

moval,[bx];取出键码

mov

bl,alWaitRelease:

mov

dx,OUTBIT

moval,0outdx,al;等键释放

movah,10callDelaycallTestKey

jne

WaitRelease

moval,blretGetKey

endp61Startprocnear

movax,data

mov

ds,ax

mov

LEDBuf,0ffh;显示8.8.8.8.

movLEDBuf+1,0ffh

movLEDBuf+2,0ffh

movLEDBuf+3,0ffh

movLEDBuf+4,0

movLEDBuf+5,0MLoop:callDisplayLED;显示

callTestKey;有键入?

jz

MLoop;无键入,继续显示

callGetKey;读入键码

andal,0fh;显示键码

movah,0

mov

bx,offsetLEDMAPaddbx,ax

moval,[bx]

movLEDBuf+5,al

jmp

MLoopStartendpcodeendsendstart62【例5】8255A与A/D芯片配合构成数据采集系统。A/D转换器的原理框图以及主要工作时序如下图所示。编写程序完成8255A的初始化以及启动A/D变换的程序。设8255A的端口地址范围为300~303H。BUSYBUSY63PA7~PA0PC7PC0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论