版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、I/O接口概述,并行接口 8255A,掌握可编程并行接口芯片 8255A的连接与编程,微机系统的信息交换有并行通信 和串行通信两种方式。,并行通信是以微机的字长为传输单位;适合于外部设备与微机之间进行近距离、大量和快速的信息交换。,概 述,10.1 8255A的基本功能和结构,一、8255A的内部结构和引脚信号,1. 8255A内部结构,图10.1 8255A内部结构,8255A包括四大部分:数据总线缓冲器、读写控制部件、A组和B组控制部件、端口A、B、C。,(1) 并行输入 / 输出端口A、B、C,端口A:包含一个8位数据输出锁存器/缓冲器和一个8位数据输入锁存器,输入输出数据均受到锁存。,
2、端口B和C: 都包含一个8位数据输入缓冲器和一个8位的数据输出锁存器/缓冲器,输出数据能锁存,输入数据不锁存。 端口C:可分成两个4位端口,分别定义为输入或输出端口,还可定义为控制、状态端口,配合端口A和端口B工作。,(2) A组和B组控制部件,A组,B组的控制寄存器,接收来自数据总线的控制字,并根据控制字确定各端口的工作状态和工作方式。,(3) 数据总线缓冲器,(4)读/写控制部件,接收来自CPU地址总线信号和控制信号,并发出命令到两个控制组 (A组和B组)。,RESET:复位信号。RESET有效时,清 8255A 所有控制寄存器内容, 并将各端口置成输入方式。,2. 8255A的引脚,82
3、55A采用40线双列直插封装,引脚图如图所示。,图10.2 8255A引脚定义,* PA7PA0:A端口数据信号引脚,* PB7PB0:B端口数据信号引脚,* PC7PC0:C端口数据信号引脚,* D7D0: 8255A的8位数据线,* A1A0: 端口选择信号,当A1A0=00时 选择端口A,当A1A0=01时 选择端口B,当A1A0=10时 选择端口C,当A1A0=11时 选择控制端口,表10.1 8255A的读写操作控制,8255A共有两个控制字:即工作方式控制字和对C口置位/复位控制字。,1. 控制字,(1)工作方式控制字: 控制字和各位的含义如图所示。,10.2 8255A的控制字及
4、方式选择,图10.3 8255A工作方式控制字格式,(2) 端口C的置位/复位控制字,控制字的格式如图所示。,图10.4 8255A 置位/复位控制字格式,关于控制字要说明几点:,(1) 设置方式控制字时,A口、B口作为整体设置,而C口要分成上、下两部分分别设置。三个端口的工作方式由一个控制字规定。,(2) C口按位置位/复位控制字不是送到C口地址,而是送到控制寄存器地址;且一个控制字只能使C口一位置位或复位。,(3) 方式控制字和按位置位/复位控制字均写入同一个控制寄存器地址,二者通过最高位D7来区别。D7=1为方式控制字,D7=0为按位置位/复位控制字。,方式0是一种基本输入输出工作方式,
5、它的24条I/O线可以全部都用作传送数据,不设置应答信号线,常用于无条件传送,输出有锁存,输入只有缓冲能力而无锁存功能。,方式0控制字具体格式如图10.5所示,10.3 方式0 基本输入/输出方式,图10.5 8255A工作方式0控制字格式,由控制字中D4D3D1D0等4位的不同 取值可定义方式0的16种工作方式的组 合如表10.2所示。,方式0中,端口C被分成两个4位 端口,它们可被定义为输入或输出端 口,CPU与3个端口之间交换数据, 可直接由CPU执行IN和OUT指令来完 成。,表10.2 方式0的工作状态组合, 方式1选通输入,方式1操作使端口A或端口B作为锁存输入设备工作。端口C也可
6、按方式1操作使用但不是对数据,而是对控制信号,或当端口A或端口B为选通输入端口时的握手信号。,下图示出8255A方式1选通输入时的内部结构图。,10.4 方式1选通式输入/输出方式,图10.6工作方式1输入控制字格式,(a)端口A方式1输入,(b)端口B方式1输入,图10.7方式1输入端口状态,IBF:输入缓冲器满信号,向外设输 出,高电平有效。,INTE:中断允许信号,它是通过端口PC4(端口A)或PC2(端口B)的位来编程的内部位。, 方式1选通输出,图10.8 方式1输出控制字格式,图10.9 方式1输出端口状态,(a)端口A方式1输出,(b)端口B方式1输出,INTE:中断允许信号。,
7、INTR:中断请求信号。高 电平有效。,方式2只允许A组采用,此时端口A变为双向,允许数据在同一组8条线上发送和接收。,下图示出方式2操作内部结构图。,10.5 方式2双向选通输入/输出方式,图10.10 端口A方式2控制字,图10.11 端口A工作在方式2的端口状态,IBFA:输入缓冲器满信号,向外设输出,高电平有效。,INTE:中断允许信号 (INTE1和INTE2)。高电平有效。,INTRA:中断请求信号,高电平有效。,8255A中端口A工作方式2时,允许端口B工作于方式0或方式1,完成输入/输出功能。4种组合状态及其工作方式控制字格式如表10.3。,表10.3 方式2的组合状态与控制字
8、格式,目前打印机一般采用并行接口Centronics标准,其主要信号与传送时序如图10.12。打印机接收主机传送数据的过程是这样的:,10.6 8255A的应用实例,10.6.1 8255A与打印机接口,一、用方式0与打印机接口,当主机准备好输出打印的一个数据时,通过8255A把数据送给打印机接口的数据引脚DATA0DATA7,同时送出一个数据选通信号STROBE 给打印机。打印机收到该信号后,把数据锁存到内部缓冲区,同时在BUSY信号线上发出忙信号。待打印机处理好输入数据时,打印机撤消忙信号,同时向主机送出一个响应信号ACK。主机根据BUSY信号或信号ACK决定是否输出下一个数据。,图10.
9、12 方式0的打印机接口,本例中,CPU与8255A采用查询方式输出数据。端口A设置为方式0,输出打印数据,端口C的PC7产生负脉冲选通信号,PC2连接打印机的BUSY信号查询其状态,PC0连接打印机的信号。 假设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 ;输
10、出打印数据子程序,打印数据 ;在AH中 PUSH AX 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,STRO
11、BE,要求将8255单元与LED-KEYBOARD单元连接,编写程序,扫描键盘输入,并将扫描结果送数码块显示。,二、用方式1与打印机接口,图10.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 ;取
12、一个数据 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工作在选通方式,当执行输出指令时,自动
13、由硬件从PC7(OBFA)输出负脉冲选通信号。当打印机ACK变为有效时,自动将PC7置为高电平。,最简单的键盘如图10.14(a)所示,其中每个键对应I/O端口的一位。没有键闭合时,各位均处于高电平;当有一个键按下时,就使对应位接地而成为低电平,而其它位仍为高电平。这样,CPU只要检测到某一位为0,便可判别出对应键已按下。,10.6.2 8255A与键盘接口,一、键盘的工作原理,图10.14 键盘的结构,用图10.14(a)的结构设计键盘有一个很大的缺点:占用的I/O端口也太多。所以,这种简单结构只用在只有几个键的小键盘中。,通常使用的键盘是矩阵结构的。以33=9个键为例,如图10.14(b)
14、,这个矩阵分为3行3列,如果键5按下,则第1行和第2列线接通而形成通路。如果第1行线接低电平,则键5的闭合,会使第2列线也输出低电平。,二、键的识别,(1)行扫描法,图10.15是一个8行8列组成的键盘。行扫描法识别按键的原理如下:先使第0行接低电平,其余行为高电平,然后看第0行是否有键闭合。这是通过检查列线电位来实现的,即在第0行接低电平时,看是否有哪条列线变成低电平。,图10.15 键盘接口电路,如果没有任何一条列线为低电平,则说明第0行没有任何键被按下。此后,再将第1行接低电平,检测是否有变为低电平的列线。如此重复地扫描,直到最后一行。在扫描过程中,当发现某一行有键闭合时,便退出扫描,通
15、过组合行线和列线即可识别此刻按下的是哪一键。,图10.15中将行线与8255A端口B相连,端口B设置为输出。CPU使端口B的某一位为0,便相当于将该行线接低电平;某位为1,则该行线接高电平。将列线与端口A相连,端口A设置为输入。CPU只要读取端口A的数据,就可以判别是否有键被按下及是第几列的键被按下。,从上面的原理可知,键盘扫描程序的第一步应该判断是否有键被按下。为此,使输出端口各位全为0,即相当于将所有行线接低电平。然后,从输入端口读取数据,如果读得的数据不是FFH,则说明必有列线处于低电平,从而可断定必有键被按下。此时,为了消除键的抖动,调用延迟程序。如果读得的数据是FFH,则程序在循环中
16、等待。这段程序如下:,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行为低电平,其它行为高。输出扫描初值后,马上读取列线的值,看是否有列线处于
17、低电平。若无,则将扫描初值循环左移一位,变为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 K
18、EY1 ;所有行都没有键按下,则返回继 ;续检测 KEY3: ; 此时,AL=列值,AH=行值,进行后 ; 续处理,将行线接一个数据端口,先让它工作在输出方式;将列线也接到一个数据端口,先让它工作在输入方式。程序使CPU通过输出端口往各行线上送低电平,然后读入列线值。如果此时有某键被按下,则程序再对两个端口进行方式设置,使接行线的端口改为输入方式,接列线的端口改为输出方式。并将刚才读得的列值从列线所接端口输出,再读取行线的输入值,那么,闭合键所在的行线值必定为0。,(2) 行反转法,为了查找键代码,键盘程序设计时,可将各个键对应的行、列值放在一个表中,程序通过查表来确定哪一个键被按下,进而在另
19、一个表中找到这个键的代码。 如果遇到多个键同时闭合的情况,则输入的行值或者列值中一定有一个以上的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, ;设置
20、行线接输入端口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 ;不
21、相同,继续比较 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的代码 ;全部键的代码,当用手按下一个键时,往往会出现按键在闭合和断开位置之间跳几下才稳定到闭合状态的情况;在释放一个键时,也会出现类似的情况,这就是
22、抖动。抖动持续时间随操作员而异,一般不大于10ms。抖动问题不解决就会引起对闭合键的错误识别。,三、抖动和重键问题,图10.16 抖动和硬件消抖电路,所谓重键就是指两个或多个键同时闭合。出现重键时,读取的键值必然出现有一个以上的0。于是就产生了到底是否给予识别哪一个键的问题。 对重键问题的处理,简单的情况下,可以不予识别,即认为重键是一个错误的按键。,通常情况,则是只承认先识别出来的键,对此时同时按下的其它键均不作识别,直到所有键都释放以后,才读入下一个键,称为连锁法。另外还有一种巡回法,它的基本思想是:等被识别的键释放以后,就可以对其它闭合键作识别,而不必等待全部键释放。显然巡回法比较适合于
23、快速键入操作。,LED数码管的主要部分是七段发光二极管,如图10.17(a)所示。这七段发光二极管分别称为a、b、c、d、e、f、g,有的产品还附带有一个小数点h,通过7个发光段的不同组合,可以显示09和AF共16个字母数字或其它异形字符。,10.6.3 8255A与LED数码管接口,一、LED数码管的工作原理,(a)数码管外型,图10.17 LED数码管,(b)共阳极结构,(d) 与8255A的连接,(c) 共阴极结构,图10.17 LED数码管,表10.4七段LED编码表,为了将一个十六进制数在一个LED上显示出来,就需要将十六进制数译为LED的7位显示代码。一种方法是采用专用的带驱动的L
24、ED段译码器,实现硬件译码。另一种常用的方法是软件译码。在程序设计时,将0F这16个数字(也可为09)对应的显示代码组成一个表。,比如,用共阴极数码管如图10.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
25、为与数码管 ;相接的端口地址 OUT DX, AL ;输出显示 TABLE DB 3FH, 06H, 5BH, ;显示代码表,实际使用时,往往要用几个数码管实现多位显示。如果每一个数码管占用一个独立的输出端口,将占用太多的通道,驱动电路的数目也很多。 图10.18是多位显示的接口电路示意图,这是一种常用的方案。在这种方案中,硬件上用公共的驱动电路来驱动各数码管;软件上用扫描方法实现数字显示。,二、多位显示,反相驱动器 位控制端口,同相驱动器 段控制端口,图10.18 多位数码管显示接口示意图,从图中可以看到,用2个8位输出端口就可以实现8个数码管的显示控制。其中,一个端口用作位控制,即控制哪个
26、(位)数码管显示。对于图10.18的共阳极数码管,当位控制端口的控制码某位为低电平时,经反相驱动,便在相应的数码管的阳极加上了高电平,这个数码管就可以显示数据。,但具体显示什么数码,则由另一个端口,即段控制端口决定。段控制端口通过段驱动电路送出显示代码到数码管响应段。此端口由8个数码管共用,因此当CPU送出一个显示代码时,各数码管的阴极都收到了此代码。但是,只有位控制码中为低的位所对应的数码管才显示数字,其它管子并不发光。,综上所述,只要CPU通过段控制端口送出段代码,然后通过位控制端口送出位代码,指定的数码管便显示相应的数字。如果CPU顺序地输出段码和位码,依次让每个数码管显示数字,并不断地
27、重复,当重复频率达到一定程度,利用人眼的视觉暂留特性,从数码管上便可见到相当稳定的数字显示。,程序设计时可以开辟一个BUFDATA缓冲区,依次存放要显示的数字。还需要建立一个显示代码表TABLE,依次存放0F对应的七段显示代码。显示代码是和硬件连接有关的,在图10.18的接口电路中,数字0的显示代码为C0H,1的显示代码为F9H,。,MOV DI, OFFSET BUFDATA ;指向数字缓冲区 MOV CL, 0FEH ;指向最右边数码管 DISP: MOV AL, DI ;取出数字 MOV BX, OFFSET TABLE ;指向显示代码表 XLAT ;得到显示代码 MOV DX, SEG
28、PORT ;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,
29、98H,88H,83H DB 0C6H,0A1H,86H,8EH BUFDATA DB 8 DUP(0) ;数字缓冲区,例:设8255A的端口地址为344H347H。由16个按键组成44矩阵式键盘,编写程序读取按键(定义键值为0F)将键值写入输出口,在数码管上显示,以观察输入的键位。,10.6.4 8255A与键盘/LED接口,8255A与键盘和LED连接电路,程序流程如下:,流程图,相应程序如下:,DATA SEGMENTdisc DB 0BBH, 0A0H, 097H, 0B5H, 0ACH, 3DHDB 3FH, 0A1H, 0BFH, 0BDH, 0AFH, 3EH, 0B6HDB 1
30、FH, 0FH ; 0f 显示段码表DISO DB Press any of the keys to quit !. 24H; 提示信息DQQ DB 0DATA Ends,CODE SEGMENTMAIN PROC FARASSUME CS:CODE DS:DATA START: MOV AL, 3 ; 清屏幕MOV AH, 0INT 10H MOV AX, DATA ;显示提示信息MOV DS, AXMOV AH, 2 ;光标定位MOV BH, 0MOV DX, 0614HINT 10HMOV 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, DQQMOV BH, 0MOV DI, BXMOV AL, DI;取0F显示字形码OUT DX, AL;将显示字形码送B口 MOV DX,346H;8255A C口地址MOV AL,0E0HOUT DX,AL;,MOV BX,DLYC1LPO:MOV
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 47784-2026纺织品织物触感检测与评价旋翼刮刀法
- 初中科学九年级专题复习:生命起源与生物进化高阶教学设计
- 小学四年级综合实践活动《节约用水》项目式教学设计
- 小学二年级数学《平均分(二):不同分法》教学设计
- 小学四年级英语上册 Unit 6 单元整合与拓展应用课教学设计
- 中职建筑工程施工专业二年级《钢筋工程安全隐患排查与标准化作业实训》教学设计
- 2026兰州物业面试题库及答案
- 2026美的工厂ai面试题目及答案
- 2026潜山路小学面试题及答案
- 2026处长升职面试题及答案
- 2026年安徽合肥经开区社区工作者招聘考试试卷-含答案解析
- 2026年广东省中考化学试卷(含答案及解析)
- 2026年全国保密教育线上培训考试题库(含标准答案)
- 2026广西来宾市机关事务管理中心招聘事业单位后勤服务控制数人员1人笔试备考题库及答案详解
- 2026-2030泡沫金属行业市场发展分析及发展趋势与投资前景研究报告
- 2026海南万宁市总工会招聘工会社会工作者11人(第1号)笔试参考题库及答案详解
- 功能性消化不良诊疗指南(2026版)
- 2026年东风汽车校招人才测评题库
- 2026年湖北省荆门市东宝区3年级数学期中人教版考试及答案
- (必刷)山东省大数据专业高级职称(大数据应用分析专业)考点精粹必做500题-含答案
- 市政给水管网竣工资料方案
评论
0/150
提交评论