已阅读5页,还剩34页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第8章 并行通信接口技术,并行传输是指多位数据通过多根传输线同时进行的传输。并行传输以计算机的字长为传输单位(如8位、16位或32位),一次传送1个字长的数据。这种方式适合于外部设备与微机之间进行近距离、大量和快速的信息交换,例如:微机与并行接口打印机、硬盘驱动器之间的数据交换。,本章要点,简单并行接口电路的构成方法 可编程并行接口芯片8255A的工作方式 可编程并行接口芯片8255A的编程 用8255A实现微处理器与打印机的接口 微处理器与键盘的接口方法,8.1 简单的并行接口电路 8.1.1 锁存器74LS373,74LS373是一种通用的锁存器芯片,常用于地址信号的锁存,它实质上是由8个带三态缓冲输出的D触发器组成,其功能示意图如图8-1所示,图8-1 74LS373功能示意图,74LS244是一种通用的带三态输出的8位单向缓冲器芯片,常用于数据的输入控制和总线驱动, 1A11A4和2A12A4是2组4位数据输入端, 1Y11Y4和2Y12Y4是相应的两组输出端。,图8-2 74LS244功能示意图,8.1.2 缓冲器74LS244,74LS245是一种通用的8位双向总线数据收发器芯片,常用于控制两组总线数据之间传递。假设A总线与芯片的A0A7相连,B总线与芯片的B0B7相连,则芯片既可以控制数据从A总线到B总线传递,也可以控制数据从B总线到A总线传递。,图8-3 74LS245功能示意图,8.1.3 双向数据收发器74LS245,8.1.4 应用举例,来看1个简单并行接口控制的实例。如图8-4所示,一组8位开关S0S7作为输入设备通过缓冲器74LS244与CPU相连,图中表示将74LS244的和连接在一起得到的控制端;同时一组8位发光二极管LED0LED7作为输出设备通过锁存器74LS373以及反相器74LS06与CPU相连。图中粗实线表示成组的数据总线D0D7或地址总线A0A15。设经过译码得到的地址是8000H,由图中的控制逻辑可见,74LS244和74LS373共用此地址,区别在于74LS244控制的是输入,而74LS373控制的是输出。 假设我们想用8位开关S0S7控制8位发光二极管LED0LED7的点亮或熄灭,结合图8-4,可编写如下汇编程序段以实现控制功能。其中延时子程序delay没有给出 .,next: mov dx,8000h ;DX指向数据端口 in al,dx ;从输入端口读开关状态 not al ;反相 out dx,al ;送输出端口显示 call delay ;调子程序延时 jmp next ;重复,图8-4 简单并行接口控制实例,8.2 可编程并行接口芯片8255A,8255A有24个输入/输出引脚,这些引脚可以分为2组进行控制,也可以定义为3个并行的数据端口,作为数据输入/输出端口时,可以通过编程设置为3种不同的工作方式。,8255的3个8位的数据端口分别称为A口、B口和C口,共24个I/O引脚,各端口共有3种输入输出工作方式,分别是:基本输入/输出方式(A/B/C口)、选通输入或选通输出方式(A/B口)和双向选通工作方式(A口)。根据内部控制逻辑,这3个数据端口又可以被分为两组:A组和B组。,(1) 3个数据端口A,B,C。 A口:是一个独立的8位I/O口,它的内部有对数据输入/输出的锁存功能。 B口:也是一个独立的8位I/O口,仅对输出数据的锁存功能 C口:可以看作是一个独立的8位I/O口;也可以看作是两个独立的4位I/O口。也是仅对输出数据进行锁存,A口:是一个独立的8位I/O口,它的内部有对数据输入/输出的锁存功能。,(2) A组和B组的控制电路。 这是两组根据CPU命令控制8255A工作方式的电路,这些控制电路内部设有控制寄存器,可以根据CPU送来的编程命令来控制8255A的工作方式,也可以根据编程命令来对C口的指定位进行置/复位的操作。 A组控制电路用来控制A口及C口的高4位; B组控制电路用来控制B口及C口的低4位。 (3) 数据总线缓冲器。 它是8位的双向的三态缓冲器。作为8255A与系统总线连接的界面,输入/输出的数据,CPU的编程命令以及外设通过8255A传送的工作状态等信息,都是通过它来传输的。,A口:是一个独立的8位I/O口,它的内部有对数据输入/输出的锁存功能。,(4) 读/写控制逻辑 读/写控制逻辑电路负责管理8255A的数据传输过程。它接收片选信号CS#及系统读信号RD#、写信号WR# 、复位信号RESET,还有来自系统地址总线的口地址选择信号A0和A1。8255A内部共有4个端口:A口,B口,C口和控制口,A0和A1两个引脚信号的不同组合可以选中不同的端口。 CS#、RD#、WR#、A1和A0这几个信号的组合决定了8255A的所有具体操作,如表8-1所示。,8255A有3种工作方式:方式0、方式1和方式2。 方式0:简单输入/输出查询方式;适用于A、B、C3个端口。 方式1:选通输入/输出中断方式;适用于A 、B3个端口。 方式2:双向输入/输出中断方式;仅A端口适用。 2方式1:选通输入/输出方式 方式1是一种选通I/O方式,A口和B口仍作为2个独立的8位I/O数据通道,可单独连接外设,通过编程分别设置它们为输入或输出。而C口不再作为独立的8位数据端口使用,因为其中的6位要被征用,分别作为A口和B口的应答联络线;其余2位仍可工作在方式0,可通过编程设置为输入或输出。 (1) 方式1的输入组态和应答信号的功能。图8-7给出了8255A的A口和B口方式1的输入组态。,8.2.2 8255A的工作方式,图8-8 方式1的输出组态,图8-7 方式1的输入组态,C口的PC3-PC5用作A口的应答联络线,PC0-PC2则作用B口的应答联络线,余下的PC6和 PC7则可作为方式0使用。 应答联络线的功能如下: STB#:选通输入。用来将外设输入的数据存入8255A的输入缓冲器。 IBF:输入缓冲器满。可作为的应答信号,。 INTR:中断请求信号。INTR置位的条件是为高电平, IBF为高电平,且INTE为高。 INTE:中断允许信号。对A口来讲,是由PC4置位来实现,对B口来讲,则是由PC0置位来实现。事先将其置位。 (2) 方式1的输出组态和应答信号功能。图8-8给出了8255A的A口和B口方式1的输出组态。,C口的PC3、PC6、PC7用作A口的应答联络线,PC0-PC2则作用B口的应答联络线,余下的PC4和PC5则可作为方式0使用。 应答联络线的功能如下: OBF#:输出缓冲器满。当CPU已将要输出的数据送入8255A时有效,用来通知外设可以从8255A取数。 ACK#:响应信号。作为对的响应信号,表示外设已将数据从8255A的输出缓冲器中取走。 INTR:中断请求信号。INTR置位的条件是ACK为高且为高且INTE为高。 INTE:中断允许。对A口来讲,由PC6的置位来实现,对B口仍是由PC2的置位来实现。,方式2是一种双向工作方式,如果一个并行外部设备既可以作为输入设备,又可以作为输出设备,并且输入输出动作不会同时进行。如图8-9所示,方式2将方式1的选通输入与选通输出功能组合成一个双向数据端口,可以发送数据和接收数据。只有端口A可以工作于方式2,需要利用端口C的5个信号线,其作用与方式1相同。而C口余下的PC0PC2正好可以充当B 口方式1的应答线,若B口不用或工作于方式0,则这三条线也可工作于方式0。,3方式2:双向输入/输出方式,方式2的数据输入过程与方式1的输入方式一样;方式2的数据输出过程与方式1的输出方式有一点不同:数据输出时8255A不是在OBF#有效时向外设输出数据,而是在外设提供响应信号ACK#有效时才送出数据。,图8-9 方式2组态,8.2.3 8255A的编程,图8-10 8255A的控制字格式,对8255A的编程涉及到两个内容:写控制字设置工作方式;置位(复位)C口的指定位。它们均须以命令字的方式写入8255的控制口。 (1) 控制字格式。控制字要写入8255A的控制口,写入控制字之后,8255A才能按指定的工作方式工作。8255A的控制字格式与各位的功能如图8-10所示。,例8-1 某系统要求使用8255A的A口方式0输入,B口方式0输出,C口高4位方式0输出,C口低4位方式0输入。设控制口的地址为fffeh。 根据图8-6,控制字为: 10010001B,即91H。 初始化程序为: MOV AL, 91H OUT 0fffeh,AL (2) C口的置位/复位功能。只有C口才有,它是通过向控制口写入按指定位置位/复位的控制字来实现的。C口的这个功能可用于设置方式1的中断允许,可以设置外设的启/停等。按位置位/复位的控制字格式如图8-11所示,例8-2 A口方式2,要求发两个中断允许,即PC4和PC6均需置位。B口方式1要求使PC2置位来开放中断。初始化程序可补充完整如下: MOV AL,0C4H OUT CTRL_PORT,AL ;设置工作方式 MOV AL,09H OUT CTRL_PORT,AL ;PC4置位,A口输入允许中断 MOV AL,ODH OUT CTRL_PORT,AL ;PC6置位,A口输出允许中断 MOV AL, 05H OUT CTRL_PORT,AL ;PC2置位;B口输出允许中断,8.3 8255A应用举例 8.3.1 用8255A实现微处理器与打印机的接口,图8-12 打印机数据传输时序,普通的打印机一般通过一个并行接口与主机相连。打印机的并行接口中,最常用的接口信号线有10根,包括8根数据线D7D0、选通信号和打印机“忙”信号BUSY,如图8-12所示。是打印机的控制信号,当其为低电平(有效)时,要打印的数据就可通过数据线D7D0送入打印机的数据缓冲区内,打印机就可以打印数据了。BUSY是打印机的状态信号,打印机数据缓冲区满时,会置BUSY信号线为高电平(有效),通知主机停止传送数据。通常打印机还有一根响应信号,当打印机处理完数据缓冲区内的数据后使有效,通知主机可以发下一个数据,同时使BUSY失效。打印机的工作时序如图8-12所示。,例8-3 利用8255A的A口方式0与微型打印机相连,将内存缓冲区BUFF中的字符打印输出。试完成相应的软硬件设计。(CPU为8088)硬件连线如图8-13所示。用8255A的方式0实现。由PC0充当打印机的选通信号,通过对PC0的置位/复位来产生选通。同时,由PC7来接收打印机发出的“BUSY”信号,作为查询能否输出的条件。 8255A的控制字为:10001000,即88H。A口方式0,输出;C口高位方式0输入,低位方式0输出。 PC0置位:00000001,即01H。 PC0复位:00000000,即 00H。 设8255A的4个口地址设依次为:00H、01H、02H和03H。,图8-13 打印机通过8255A接口与主机连线,编制程序如下: ;数据段 BUFF DB Print try!,$ ;代码段 START:MOV SI,OFFSET BUFF MOV AL,88H ;8255A初始化,A口方式0,输出 OUT 03H,AL ;C口高位方式0输入,低位方式0输出 MOV AL,01H OUT 03H,AL ;使PC0置位,即使选通无效 WAIT: IN AL,02H TEST AL, 80H ;检测PC7是否为1即是否忙 JNZ WAIT ;为忙则等待 MOV AL,SI CMP AL,$ ;是否结束符 JZ DONE ;是则输出回车 OUT 00H,AL ;不是结束符,则从A口输出 MOV AL,00H OUT 03H, AL,MOV AL, 01H OUT 03H,AL ;产生选通信号 INC SI ;修改指针,指向下一个字符 JMP WAIT DONE: MOV AL,0DH OUT 00H,AL ;输出回车符 MOV AL, 00H OUT 03H,AL MOV AL, 01H OUT 03H,AL ;产生选通 WAIT1:IN AL, 02H TEST AL, 80H ;检测PC7是否为1即是否忙 JNZ WAIT 1 ; 为忙则等待 MOV AL,0AH OUT 00H,AL ;输出换行符 MOV AL, 00H OUT 03H,AL MOV AL, 01H OUT 03H,AL ;产生选通信号 MOV AH,4CH INT 21H,例8-4 将上例中8255A的工作方式改为方式1,采用中断方式将BUFF开始的缓冲区中的100个字符从打印机输出。,图8-14 中断方式硬件连线,8255A的控制字为:1010XXX0 PC0置位: 00000001,即01H。 PC0复位: 00000000,即00H。 PC6置位: 00001101,即0DH,允许8255A的A口输出中断。 由硬件连线可以分析出,8255A的4个口地址分别为:00H,01H,02H,03H。 假设8259A初始化时送ICW2为08H,则8255A A口的中断类型码是0BH,此中断类型码对应的中断向量应放到中断向量表从2CH开始的4个单元中。,;主程序: MAIN: MOV AL,0A0H OUT 03H,AL ;设置8255A的控制字 MOV AL,01H ;使选通无效 OUT 03H,AL XOR AX,AX MOV DS,AX MOV AX,OFFSET ROUTINTR MOV WORD PTR 002CH,AX MOV AX,SEG ROUTINTR MOV WORD PTR 002EH,AX ;送中断向量 MOV AL,0DH OUT 03H,AL ;使8255A A口输出允许中断 MOV DI,OFFSET BUFF ;设置地址指针 MOV CX,99 ;设置计数器初值 MOV AL,DI OUT 00H,AL ;输出一个字符 INC DI MOV AL,00H OUT 03H,AL ;产生选通信号,INC AL OUT 03H,AL ;撤消选通 STI ;开中断 NEXT: HLT ;等待中断 LOOP NEXT ;修改计数器值,指向下一个输出字符 HLT ;中断服务子程序: ROUTINTR:MOV AL,DI OUT 00H,AL ;从A口输出一个字符 MOV AL,00H OUT 03H,AL ;产生选通信号 INC AL MOV 03H,AL ;撤消选通 INC DI ;修改地址指针 IRET ;中断返回 思考:是否可以采用A口的作为打印机的选通信号?如可以的话,软件该如何修改?是否可用打印机的BUSY作为8255的A口?,8.3.2 微处理器与键盘的接口 1. 矩阵式键盘的结构,在微型机系统中,键盘是一种最常用的外设,它由多个开关组合而成。可以用来制造键盘的按键开关有好多种,最常用的有机械式、薄膜式、电容式和霍尔效应式等4种。机械式开关较便宜,但压键时会产生触点抖动,即在触点可靠地接通前会通断多次,而且长期使用后可靠性会降低。图8-15 简易矩阵键盘及其接口,图8-15 简易矩阵键盘及其接口,设16个键分别为16进制数字09和AF,键盘排列、连线及接口电路如图8-15所示。16个键排成4行4列的矩阵,接到8255A两个端口上,再通过8255A与微处理器连接。其中端口A作输出,端口B作输入。矩阵键盘的4条行线接到输出端口A的PA0PA3,键盘的4条列线接输人端口B的PB0PB3。 在无键按下时,由于接到+5V上的上拉电阻的作用,列线为高电平。按下某一键后,该键所在的行线和列线连通。这时,如果向被按下键所在的行线上输出一个低电平信号,则对应的列线也呈现低电平。当从B口读取列线信号时,便能检测到该列线上的低电平。比如,键4按下时,如果将PA2行线输出低电平信号,再读取列线,会从PB0列线读取到低电平,而其它列线读取的是高电平。这样CPU就可以通过读取的列线数据判别是否有键按下以及是第几列的键按下。 有两种方法可以识别出矩阵式键盘中闭合键的位置,即扫描法和反转法,下文分别加以介绍(下文中高电平信号简称为1,低电平信号简称为0)。,(1) 逐行扫描法。首先进行“粗扫描”,即行线送全0,列线检测到全1,说明无键按下;否则,有键按下,遂进入下一步逐行扫描。 逐行扫描的过程为:某行送0其余送1,此时若列线检测到全1,说明该行无键按下,换下一行继续扫描;若列线检测到非全1,说明该行有键按下,通过组合此时的行码和列码可形成与特定按键相对应的识别码。 对于机械按键,在按下或释放一个键时,往往会出现按键在闭合位置和断开位置之间跳几下才稳定到闭合状态,这叫做“抖动”,抖动的持续时间通常不大于10ms。当检测到有键按下后,必须消除键抖动(Disturbance)。消除键抖动的常用方法是在检测到有键按下后,延长一定时间(通常为20ms),再检查该键是否仍处于被按下状态,若是,才认定该键确实被按下了,而不是干扰。,2. 按键位置的识别方法,针对图8-15,我们可以编写如下的键盘扫描程序。程序中的符号rowport表示连接行线的8255A端口(A口)地址,colport表示连接列线的8255A端口(B口)地址。在执行程序前,需设置8255A的A口为输出口,B口为输入口。 ;粗扫描,判断是否有键按下 key1: mov al,00h mov dx,rowport ; 行地址送dx out dx,al ;使所有行线为低电平 mov dx,colport ; 列地址送dx in al,dx ;读取列值 and al,0fh ; 屏蔽al高四位 cmp al,0fh ; 判断列线是否读到全1 jz key1 ; 是,无闭合键,循环等待 call delay ; 否,延迟20ms清除抖动 ;逐行扫描,确定按键位置,mov cx,4 ;扫描行数送cx mov ah,0eh ;PA0行扫描初值送ah key2: mov al,ah mov dx,rowport out dx,al ;输出行码(扫描码) mov dx,colport in al,dx ;读到列码 and al,0f cmp al,0fh ;判断列线是否全1 jnz key3 ;否,有按键,转下一步处理 or ah, 0f0h ;将高四位置1, 为下面循环移位做准备 rol ah,1 ;是,无按键,扫描码移位 and ah, 0fh loop key2 ;扫描下一行 jmp key1 ;所有行都没有键按下,返回粗扫 key3: ; 后续处理,此时,al列码,ah行码 (*1) not ax and ax,0f0fh ;整理行码和列码的表示形式 (*2),(2) 反转法。实际上,借助8255A数据端口灵活的工作方式,可以以更巧妙和简便的方式来识别按键位置,这就是反转法。我们根据图8-15来说明这种方法。 第一步,先将行线(A口控制)设为输出、列线(B口控制)设为检测输入。CPU通过输出端口(A口)将行线(控制线)全部设置为低电平,然后从输入端口(B口)读取列线(检测线),若读得列码为全1,说明无键按下,否则有键按下,转第二步。 第二步,将行线和列线作用反转,即将列线(B口控制)设为输出,行线(A口控制)设为检测输入。将前一步读到的列码从B端口输出,并从A端口读取行线的输入码(行码)。 当一个键被按下时,必然涉及一对特定的行码和列码,以此组成按键特定的识别码。根据反转法的工作原理,我们可以编写响应的键盘扫描程序,其中第一步识别有无按键按下的程序与扫描法相同。,;反转法识别按键程序 ;设置8255A的A口为输出端口,B口为输入端口 key2: mov al,00h mov dx,rowport ; 行地址送dx out dx,al ; 设置行线全为低 mov dx,colport ; 列地址送dx in al,dx ;读取列值 and al,0fh cmp al,0fh jz key2 ;无闭合键,循环等待 call delay,push ax ;有闭合键,保存列值 push ax ;再保存一次列值,最后取出形成行码和列码 ;设置8255A的B口为输出端口,A口为输入 mov dx,colport pop ax out dx,al ;将
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026广东省选聘珠海市干部队伍储备人才20人历年真题汇编及答案解析(夺冠)
- 浙江国企招聘-2025年衢州产投集团下属兴衢供应链公司招聘6人历年真题汇编带答案解析
- 2026重庆市面向中国海洋大学定向选调应届毕业生历年真题汇编带答案解析
- 浙江国企招聘-2025宁波市奉化区红果文体产业运营管理有限公司公开招聘工作人员2人历年真题汇编及答案解析(夺冠)
- 2025航天工程大学下半年社会用工招聘20人笔试备考试卷带答案解析
- 2026年劳务员之劳务员基础知识考试题库200道及答案(夺冠系列)
- 2025江西人力诚聘派遣至中国铁路南昌局集团有限公司赣州工务段招聘21人历年真题汇编带答案解析
- 学前班安全主题班会课件
- 2025年汉中市南郑区人民医院招聘(2人)备考公基题库附答案解析
- 2025辽宁时代万恒股份有限公司及所属企业招聘13人备考题库附答案解析
- 2025年中建项目经理能力测试题及答案
- 港口码头合同范本(2025版)
- 高端人才引进及培养协议
- 国家能源集团陆上风电项目通 用造价指标(2025年)
- 2025年学校食堂从业人员食品安全知识培训考试试题(附答案)
- 2025年少先队辅导员技能大赛考试题库(含答案)
- 辅警2025面试题目和答案
- 如何开好班前班后会培训
- 韩国留学生HSK六级考试书信写作错误分析
- 《大数据金融》高等院校经济类专业全套教学课件
- 2025年江苏省南京市鼓楼区中考一模英语试题及答案
评论
0/150
提交评论