




已阅读5页,还剩114页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
I/O接口概述,并行接口 8255A,掌握可编程并行接口芯片 8255A的连接与编程,微机系统的信息交换有并行通信 和串行通信两种方式。,并行通信是以微机的字长为传输单位;适合于外部设备与微机之间进行近距离、大量和快速的信息交换。,概 述,一、8255A的内部结构和引脚信号,1. 8255A内部结构,11.1 可编程并行接口芯片8255A,图11.1 8255A内部结构,8255A包括四大部分:数据总线缓冲器、读写控制部件、A组和B组控制部件、端口A、B、C。,(1) 并行输入 / 输出端口A、B、C,端口A:包含一个8位数据输出锁存器/缓冲器和一个8位数据输入锁存器,输入输出数据均受到锁存。,端口B和C: 都包含一个8位数据输入缓冲器和一个8位的数据输出锁存器/缓冲器,输出数据能锁存,输入数据不锁存。 端口C:可分成两个4位端口,分别定义为输入或输出端口,还可定义为控制、状态端口,配合端口A和端口B工作。,(2) A组和B组控制部件,A组,B组的控制寄存器,接收来自数据总线的控制字,并根据控制字确定各端口的工作状态和工作方式。,(3) 数据总线缓冲器,(4)读/写控制部件,接收来自CPU地址总线信号和控制信号,并发出命令到两个控制组 (A组和B组)。,RESET:复位信号。RESET有效时,清 8255A 所有控制寄存器内容, 并将各端口置成输入方式。,2. 8255A的引脚,8255A采用40线双列直插封装,引脚图如图所示。,图11.2 8255A引脚定义,* PA7PA0:A端口数据信号引脚,* PB7PB0:B端口数据信号引脚,* PC7PC0:C端口数据信号引脚,* D7D0: 8255A的8位数据线,* A1A0: 端口选择信号,当A1A0=00时 选择端口A,当A1A0=01时 选择端口B,当A1A0=10时 选择端口C,当A1A0=11时 选择控制端口,表11.1 8255A的读写操作控制,8255A共有两个控制字:即工作方式控制字和对C口置位/复位控制字。,1. 控制字,(1)工作方式控制字: 控制字和各位的含义如图所示。,二 、 8255A的控制字及其工作方式,图11.3 8255A工作方式控制字格式,(2) 端口C的置位/复位控制字,控制字的格式如图所示。,图11.4 8255A 置位/复位控制字格式,关于控制字要说明几点:,(1) 设置方式控制字时,A口、B口作为整体设置,而C口要分成上、下两部分分别设置。三个端口的工作方式由一个控制字规定。,(2) C口按位置位/复位控制字不是送到C口地址,而是送到控制寄存器地址;且一个控制字只能使C口一位置位或复位。,(3) 方式控制字和按位置位/复位控制字均写入同一个控制寄存器地址,二者通过最高位D7来区别。D7=1为方式控制字,D7=0为按位置位/复位控制字。,(1) 方式0 基本输入/输出方式,方式0是一种基本输入输出工作方式,它的24条I/O线可以全部都用作传送数据,不设置应答信号线,常用于无条件传送,输出有锁存,输入只有缓冲能力而无锁存功能。,方式0控制字具体格式如图11.5所示,2. 工作方式,图11.5 8255A工作方式0控制字格式,由控制字中D4D3D1D0 等4位的不同 取值,可定义方式0的16种工作方式的组 合,如表11.2所示。,方式0中,端口C被分成两个4位 端口,它们可被定义为输入或输出端 口,CPU与3个端口之间交换数据, 可直接由CPU执行IN和OUT指令来完 成。,表11.2 方式0的工作状态组合,(2) 工作方式1选通式输入/输出方式, 方式1选通输入,方式1操作使端口A或端口B作为锁存输入设备工作。端口C也可按方式1操作使用但不是对数据,而是对控制信号,或当端口A或端口B为选通输入端口时的握手信号。,下图示出8255A方式1选通输入时的内部结构图。,图11.6工作方式1输入控制字格式,(a)端口A方式1输入,(b)端口B方式1输入,图11.7方式1输入端口状态,IBF:输入缓冲器满信号,向外设输 出,高电平有效。,INTE:中断允许信号,它是通过端口PC4(端口A)或PC2(端口B)的位来编程的内部位。, 方式1选通输出,图11.8 方式1输出控制字格式,图11.9 方式1输出端口状态,(a)端口A方式1输出,(b)端口B方式1输出,INTE:中断允许信号。,INTR:中断请求信号。高 电平有效。,(3) 工作方式2双向选通输入/输出方式,方式2只允许A组采用,此时端口A变为双向,允许数据在同一组8条线上发送和接收。,下图示出方式2操作内部结构图。,图11.10 端口A方式2控制字,图11.11 端口A工作在方式2的端口状态,IBFA:输入缓冲器满信号,向外设输出,高电平有效。,INTE:中断允许信号 (INTE1和INTE2)。高电平有效。,INTRA:中断请求信号,高电平有效。,8255A中端口A工作在方式2时,允许端口B工作于方式0或方式1,完成输入/输出功能。4种组合状态及其工作方式控制字格式如表11.3。,表11.3 方式2的组合状态与控制字格式,3. 8255A的工作方式初始化(初始化),4. 8255A中PC口置位/复位操作,目前打印机一般采用并行接口Centronics标准,其主要信号与传送时序如图11.12。打印机接收主机传送数据的过程是这样的:,11.2 8255A的应用实例,一、 8255A与打印机接口,1、用方式0与打印机接口,当主机准备好输出打印的一个数据时,通过8255A把数据送给打印机接口的数据引脚DATA0DATA7,同时送出一个数据选通信号STROBE 给打印机。打印机收到该信号后,把数据锁存到内部缓冲区,同时在BUSY信号线上发出忙信号。待打印机处理好输入数据时,打印机撤消忙信号,同时向主机送出一个响应信号ACK。主机根据信号BUSY或信号ACK决定是否输出下一个数据。,图11.12 方式0的打印机接口,本例中,CPU与8255A采用查询方式输出数据。端口A设置为方式0,输出打印数据,端口C的PC7产生负脉冲选通信号,PC2连接打印机的BUSY信号查询其状态,PC0连接打印机的ACK信号。 假设8255A的A、B、C口的I/O地址为FFF8H、FFFAH和FFFCH,控制端口地址为FFFEH。,;初始化程序段 MOV DX , 0FFFEH MOV AL , 81H ; A口方式0输出, C口上半部输出, ;下半部输入 OUT DX , AL ; 输出工作方式字 MOV AL , 0FH ; C口的置位/复位控制字, ; 使PC7 = 1, 即置STROBE= 1 OUT DX , AL PUSH AX ;输出打印数据子程序, 打印数据 ; 在AH中 PUSH DX PM: MOV DX , 0FFFCH,IN AL, DX ;查询PC2 AND AL, 04H ;BUSY=0? JNZ PM ;忙,则等待,D2=1 表示忙 MOV DX, 0FFF8H ;不忙,则输出数据 MOV AL, AH OUT DX, AL MOV DX, 0FFFEH MOV AL,0EH ;使PC7=0,即置 = 0 OUT DX, AL,NOP ;适当延时,产生一定宽 度的低电平 NOP MOV AL, 0FH ;使PC7=1,置 = 1 OUT DX, AL POP DX POP AX RET,STROBE,2、用方式1与打印机接口,图11.13 方式1的打印机接口,PRINT PROC PUSH AX ;保护寄存器 PUSH BX PUSH CX PUSH DX MOV DX , 0FFFEH ;设定A口为选通输出方式 MOV AL , 0A0H OUT DX , AL MOV AL , 0CH ;使INTEA(PC6)为0 , 禁止 中断 OUT DX , AL MOV CX , M ;打印字节数送CX,MOV BX , OFFSET BUF ; 取缓冲区首址 送BX PRINT1: MOV AL , BX ; 取一个数据 MOV DX , 0FFF8H OUT DX , AL ; 从A口输出 MOV DX , 0FFFCH PRINT2: IN AL , DX ;读C口 TEST AL , 80H ;检测OBFA(PC7) ;是否为1?,JZ PRINT2 ; 为0,则继续检测 INC BX ;为1,说明数据已输出 LOOP PRINT1 ;准备取下一个数据输出 POP DX ; 打印结束,恢复寄存器 POP CX POP BX POP AX RET ; 返回 PRINT ENDP,本例与上例的主要区别是:在上例中,由软件对PC7复位和置位来产生打印机的选通信号,而本例中,8255A工作在选通方式,当执行输出指令时,自动由硬件从PC7(OBFA)输出负脉冲选通信号。当打印机ACK变为有效时,自动将PC7置为高电平。,最简单的键盘如图11.14(a)所示,其中每个键对应I/O端口的一位。没有键闭合时,各位均处于高电平;当有一个键按下时,就使对应位接地而成为低电平,而其它位仍为高电平。这样,CPU只要检测到某一位为0,便可判别出对应键已按下。,二、 8255A与键盘接口,1、键盘的工作原理,图11.14 键盘的结构,用图11.14(a)的结构设计键盘有一个很大的缺点:占用的I/O端口也太多。所以,这种简单结构只用在只有几个键的小键盘中。,通常使用的键盘是矩阵结构的。以33=9个键为例,如图11.14(b),这个矩阵分为3行3列,如果键5按下,则第1行和第2列线接通而形成通路。如果第1行线接低电平,则键5的闭合,会使第2列线也输出低电平。,2、键的识别,(1)行扫描法,图11.15是一个8行8列组成的键盘。行扫描法识别按键的原理如下:先使第0行接低电平,其余行为高电平,然后看第0行是否有键闭合。这是通过检查列线电位来实现的,即在第0行接低电平时,看是否有哪条列线变成低电平。,图11.15 键盘接口电路,如果没有任何一条列线为低电平,则说明第0行没有任何键被按下。此后,再将第1行接低电平,检测是否有变为低电平的列线。如此重复地扫描,直到最后一行。在扫描过程中,当发现某一行有键闭合时,便退出扫描,通过组合行线和列线即可识别此刻按下的是哪一键。,图11.15中将行线与8255A端口B相连,端口B设置为输出。CPU使端口B的某一位为0,便相当于将该行线接低电平;某位为1,则该行线接高电平。将列线与端口A相连,端口A设置为输入。CPU只要读取端口A的数据,就可以判别是否有键被按下及是第几列的键被按下。,从上面的原理可知,键盘扫描程序的第一步应该判断是否有键被按下。为此,使输出端口各位全为0,即相当于将所有行线接低电平。然后,从输入端口读取数据,如果读得的数据不是FFH,则说明必有列线处于低电平,从而可断定必有键被按下。此时,为了消除键的抖动,调用延迟程序。如果读得的数据是FFH,则程序在循环中等待。这段程序如下:,KEY1: MOV AL , 00H MOV DX , ROWPORT ;ROWPORT为行线 ;端口地址 OUT DX , AL ;使所有行线为低 MOV DX , COLPORT ; COLPORT为列线 ;端口地址 IN AL , DX ;读取列值 CMP AL , 0FFH ;判定是否有列线为低电平 JZ KEY1 ;没有,无闭合键,则循环等待 CALL DELAY ;有, 则延迟20ms清除抖动,键盘扫描程序的第二步是逐行扫描以判断哪一个键被按下了。开始时,将计数值设置为行数。扫描初值11111110使第0行为低电平,其它行为高。输出扫描初值后,马上读取列线的值,看是否有列线处于低电平。若无,则将扫描初值循环左移一位,变为11111101,同时,计数值减1,如此下去,直到计数值为0,或找到按键所在行时止,程序段如下:,MOV AH , 0FEH ;扫描初值送AH MOV CX , 8 ;行数送CX KEY2: MOV AL , AH MOV DX , ROWPORT OUT DX , AL ;输出行值(扫描值) MOV DX , COLPORT IN AL , DX ;读进列值,CMP AL , 0FFH ; 判断有无键按下 JNZ KEY3 ;有,则转下一步处理 ROL AH , 1 ; 无 , 则修改扫描值, ;准备下一行扫描 LOOP KEY2 ; 计数一次 , 未扫完8 行, 则 继续循环 JMP KEY1 ; 所有行都没有键按下,则 返回继续检测 KEY3: ; 进行后续, 处理此时AL=列值, AH=行值 ;,将行线接一个数据端口,先让它工作在输出方式;将列线也接到一个数据端口,先让它工作在输入方式。程序使CPU通过输出端口往各行线上送低电平,然后读入列线值。如果此时有某键被按下,则程序再对两个端口进行方式设置,使接行线的端口改为输入方式,接列线的端口改为输出方式。并将刚才读得的列值从列线所接端口输出,再读取行线的输入值,那么,闭合键所在的行线值必定为0。,(2) 行反转法,为了查找键代码,键盘程序设计时,可将各个键对应的行、列值放在一个表中,程序通过查表来确定哪一个键被按下,进而在另一个表中找到这个键的代码。 如果遇到多个键同时闭合的情况,则输入的行值或者列值中一定有一个以上的0,而由程序预先建立的键值表中不会有此值,因而可以判为重键而重新查找。用这种方法可以方便地解决重键问题。,KEY1: ;设置行线接输出端口ROWPORT, ;列线接输入端口COLPORT, 并 ;判断是否有键按下 KEY2: MOV AL , 00H MOV DX , ROWPORT OUT DX , AL ; 行线全为低 MOV DX , COLPORT IN AL , DX ; 读取列值 CMP AL , 0FFH JZ KEY2 ; 无闭合键 , 循环等待 PUSH AX ; 有闭合键 , 保存列值 PUSH AX, ;设置行线接输入端口ROWPORT, ;列线接输出端口COLPORT, MOV DX , COLPORT POP AX OUT DX , AL ; 输出列值 MOV DX , ROWPORT IN AL , DX ; 读取行值 POP BX ; 结合行列值 ,此时 MOV AH , BL ; AL=行值 ,AH=列值,;查找键代码 MOV SI , OFFSET TABLE ; TABLE为键值表 MOV DI , OFFSET CHAR ; CHAR为键对应的代码表 MOV CX , 64 ; 键的个数 KEY3: CMP AX, SI ;与键值比较 JZ KEY4 ; 相同 ,说明查到 INC SI ;不相同 ,继续比较 INC SI INC DI LOOP KEY3 JMP KEY1 ;全部比较完, 仍无相同, 说明是重键 KEY4: MOV AL , DI ; 获取键代码送AL ; 判断按键是否释放,没有则等待,CALL DELAY ; 按键释放, 延时消除抖动 ;后续处理 TABLE DW 0FEFEH ; 键0的行列值(键值) DW 0FDFEH ;键1的行列值 DW 0FBFEH ;键2的行列值 ;全部键的行列值 CHAR DB ;键0的代码 DB ;键1的代码 ;全部键的代码,当用手按下一个键时,往往会出现按键在闭合和断开位置之间跳几下才稳定到闭合状态的情况;在释放一个键时,也会出现类似的情况,这就是抖动。抖动持续时间随操作员而异,一般不大于10ms。抖动问题不解决就会引起对闭合键的错误识别。,3、抖动和重键问题,图11.16 抖动和硬件消抖电路,所谓重键就是指两个或多个键同时闭合。出现重键时,读取的键值必然出现有一个以上的0。于是就产生了到底识别哪一个键的问题。 对重键问题的处理,简单的情况下,可以不予识别,即认为重键是一个错误的按键。,通常情况,则是只承认先识别出来的键,对此时同时按下的其它键均不作识别,直到所有键都释放以后,才读入下一个键,称为连锁法。另外还有一种巡回法,它的基本思想是:等被识别的键释放以后,就可以对其它闭合键作识别,而不必等待全部键释放。显然巡回法比较适合于快速键入操作。,LED数码管的主要部分是七段发光二极管,如图11.17(a)所示。这七段发光二极管分别称为a、b、c、d、e、f、g,有的产品还附带有一个小数点h,通过7个发光段的不同组合,可以显示09和AF共16个字母数字或其它异形字符。,三、8255A与LED数码管接口,1、LED数码管的工作原理,(a)数码管外型,图11.17 LED数码管,(b)共阳极结构,(d) 与8255A的连接,(c) 共阴极结构,图11.17 LED数码管,表11.4七段LED编码表,为了将一位十六进制数在一个LED上显示出来,就需要将十六进制数译为LED的7位显示代码。 硬件译码:采用专用的带驱动的LED段译码器。 软件译码:在程序设计时,将0F这16个数字(也可为09)对应的显示代码 组成一个表。,比如,用共阴极数码管如图11.17(d)所示连接,则0的显示代码为3FH,1的显示代码为06H,并在表中按顺序排列,则要显示的数字可以很方便地通过8086的换码指令译码为该数字对应的显示代码。,1位数字的LED显示程序如下:,MOV BX , OFFSET BUFDATA ; BUFDATA区存放 待显示的数字 MOV AL , BX ; 取出要显示的数字 MOV BX , OFFSET TABLE ;取显示代码表首地址 XLAT ;换码为显示代码 MOV DX , PORT ;PORT为与数码管 ;相接的端口地址 OUT DX , AL ; 输出显示 TABLE DB 3FH , 06H , 5BH , ; 显示代码表,实际使用时,往往要用几个数码管实现多位显示。如果每一个数码管占用一个独立的输出端口,将占用太多的通道,驱动电路的数目也很多。 图11.18是多位显示的接口电路示意图,这是一种常用的方案。在这种方案中,硬件上用公共的驱动电路来驱动各数码管;软件上用扫描方法实现数字显示。,2、多位显示,反相驱动器 位控制端口,同相驱动器 段控制端口,图11.18 多位数码管显示接口示意图,从图中可以看到,用2个8位输出端口就可以实现8个数码管的显示控制。其中,一个端口用作位控制,即控制哪个(位)数码管显示。对于图11.18的共阳极数码管,当位控制端口的控制码某位为低电平时,经反相驱动,便在相应的数码管的阳极加上了高电平,这个数码管就可以显示数据。,但具体显示什么数码,则由另一个端口,即段控制端口决定。段控制端口通过段驱动电路送出显示代码到数码管响应段。此端口由8个数码管共用,因此当CPU送出一个显示代码时,各数码管的阴极都收到了此代码。但是,只有位控制码中为低的位所对应的数码管才显示数字,其它管子并不发光。,综上所述,只要CPU通过段控制端口送出段代码,然后通过位控制端口送出位代码,指定的数码管便显示相应的数字。如果CPU顺序地输出段码和位码,依次让每个数码管显示数字,并不断地重复,当重复频率达到一定程度,利用人眼的视觉暂留特性,从数码管上便可见到相当稳定的数字显示。,程序设计时可以开辟一个BUFDATA缓冲区,依次存放要显示的数字。还需要建立一个显示代码表TABLE,依次存放0F对应的七段显示代码。显示代码是和硬件连接有关的,在图11.18的接口电路中,数字0的显示代码为C0H,1的显示代码为F9H,。,MOV DI , OFFSET BUFDATA ;指向数字缓冲区 MOV CL , 0FEH ; 指向最右边数码管 DISP: MOV AL , DI ; 取出数字 MOV BX , OFFSET TABLE ;指向显示代码表 XLAT ;得到显示代码 MOV DX , SEGPORT ; SEGPORT为段控制 端口 OUT DX , AL ; 送出段码 MOV AL , CL ; 取出位显示代码 MOV DX , BITPORT ; BITPORT为位控制端口 OUT DX , AL ; 送出位码,CALL DELAY ; 延时1ms,让数码管有充分的点 亮时间 INC DI ; 指向下一个数字 ROL CL , 1 ; 指向下一个数码管 CMP CL , 0FEH ; 是否指向最右边的数码管 JNZ DISP ; 没有,显示下一个数字 RET ; 8位数码管都显示一遍 , 返回 TABLE DB 0C0H , 0F9H , 0A4H , 0B0H ;显示代码表 DB 99H , 92H , 82H , 0F8H DB 80H , 98H , 88H , 83H DB 0C6H , 0A1H , 86H , 8EH BUFDATA DB 8 DUP ( 0 ) ;数字缓冲区,例:设8255A的端口地址为344H347H。由16个按键组成44矩阵式键盘,编写程序读取按键(定义键值为0F)将键值写入输出口,在数码管上显示,以观察输入的键位。,四、8255A与键盘/LED接口,8255A与键盘和LED连接电路,程序流程如下:,流程图,相应程序如下:,DATA SEGMENT disc DB 0BBH, 0A0H, 097H, 0B5H, 0ACH, 3DH DB 3FH, 0A1H, 0BFH, 0BDH, 0AFH, 3EH, 0B6H DB 1FH, 0FH ; 0f 显示段码表 DISO DB Press any of the keys to quit !. 24H ; 提示信息 DQQ DB 0 DATA Ends,CODE SEGMENT MAIN PROC FAR ASSUME CS:CODE DS:DATA START: MOV AL, 3 ; 清屏幕 MOV AH, 0 INT 10H MOV AX, DATA ;显示提示信息 MOV DS, AX MOV AH, 2 ;光标定位 MOV BH, 0 MOV DX, 0614H INT 10H MOV DX, OFFSET DISO;显示:“Press”,QWE: MOV DX, 347H ;8255A控制寄存器初始化 MOV AL, 80H ;B口、C口设为输出 OUT DX, AL MOV DX, 345H ; 345H为8255A的B口地址 MOV BL, DQQ MOV BH, 0 MOV DI, BX MOV AL, DI ;取0F显示字形码 OUT DX, AL ;将显示字形码送B口 MOV DX,346H ;8255A C口地址 MOV AL,0E0H OUT DX,AL ;,MOV BX,DLYC1 LPO:MOV CX,DLYC2 ;延时 LP1:LOOP LP1 DEC BX JNZ LPO KS: MOV DX,350H ;指示灯显示 MOV AL,DQQ ;按下键的二进制值 OUT DX,AL MOV DX,347H ;8255A初始化,写控制字88H MOV AL,88H ; PC0PC3为输出,PC4PC7为输入 OUT DX,AL ; B口输出,方式0,A口输出。,KSLP: MOV DX,346H ; 读键盘 IN AL,DX AND AL,0F0H CMP AL,0F0H JNE KP ;有键按下,转处理判别 MOV DX,350H ;若键未按,查S1S4键是否退出 IN AL,DX AND AL,0F0H CMP AL,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 一 写进法律文献的民主说课稿-2025-2026学年高中历史人民版选修近代社会的民主思想与实践-人民版2004
- 2024全新事业单位实习合同下载
- 华为鸿蒙二试题及答案
- 2025年商业合作合同典范示例
- 2025商场店铺装修合同模板
- 2025年商业银行信用卡装修分期还款合同
- 美术什么是课件教学设计
- 各种管道试题及答案
- 2025水磨石地坪施工合同范本
- 剪纸图形测试题目及答案
- 2025秋季开学初班主任会议德育副校长讲话:从‘知责’到‘善育’这4步你做到几步
- 新生儿病房护理安全管理
- 瑞雪迎春春节家宴主题说明书
- 军用车修理知识培训课件
- 医务人员职业道德准则(2025年版)全文培训课件
- 乘客遗失物品处理课件
- 2025年云南省中考物理真题(含答案)
- 医院保卫科岗位竞聘工作汇报
- 医院科室停电应急预案
- 2025年教育学家教学理论考试试题及答案解析
- 项目初步验收汇报
评论
0/150
提交评论