可编程外围接口芯片8255A及其应用.ppt_第1页
可编程外围接口芯片8255A及其应用.ppt_第2页
可编程外围接口芯片8255A及其应用.ppt_第3页
可编程外围接口芯片8255A及其应用.ppt_第4页
可编程外围接口芯片8255A及其应用.ppt_第5页
已阅读5页,还剩55页未读 继续免费阅读

下载本文档

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

文档简介

9 1可编程并行通信接口8255A 8255A是INTER系列的并行接口芯片 它是可编程的 可以通过软件来设置芯片的工作方式 一 8255A的结构和功能 1 数据端口A B C 8255A内部包含3个8位的输入输出端口A B和C 用于与外设交换数据或进行通信联络 端口A包含一个8位的数据输入锁存器和一个8位的数据输出锁存器 缓冲器 因此A口作输入 输出可以同时锁存数据 端口B包含一个8位的数据输入 输出锁存器和一个8位的数据输入缓冲器 输出数据可以锁存 输入数据也可锁存 但输入 输出不能同时锁存 端口C包含一个8位的数据输入缓冲器和一个8位的数据输出锁存器 无输入锁存功能 当它被分成两个4位端口时 每个端口有一个4位的输出锁存器 2 A组和B组控制逻辑 8255A的端口A和端口C的高4位 PC7 PC4 由A组控制逻辑管理 端口B和端口C的低4位 PC3 PC0 由B组控制逻辑管理 这两组控制电路都从读 写控制逻辑接受命令信号 从内部数据总线接收控制字 然后向各有关端口发出相应的控制命令 控制每个端口的工作方式 还可以根据CPU的命令字对端口C的每一位按位进行置位或复位 3 数据总线缓冲器 4 读写控制信号 二 8255A的控制字 8255A控制字分为两类 芯片各端口的方式选择控制字 它可以使8255A的3个数据端口工作在不同的工作方式 C端口置位 复位控制字 它可以使C端口中的任何一条口线进行置位或复位 而不影响其他各位的状态 1 方式控制字 2 端口C置1 0控制字 0 D7D6D5D4D3D2D1D0 1 置10 置0 端口C置1 0控制字 000PC0001PC1010PC2011PC3100PC4101PC5110PC6111PC7 图 端口C置1 0控制字 例1 设A端口工作方式0 输出 B端口工作于方式0 输入 方式选择控制字 10001 0011 0 10000010 82H 方式选择 A口方式0 A口输出 C口高位不用 B口方式0 B口输入 C口低位不用 例2 设8255A的控制口地址为00EEH 要求对端口C的PC7置1 则控制字00001111B 0FH 要求对端口C的PC3置0 控制字为00000110B 06H 下面的程序可以实现上述要求 MOVAL 0FH 对PC7置1的控制字MOVDX 00EEH 控制口地址送DXOUTDX AL 对PC7置1操作MOVAL 06H 对PC3置0的控制字OUTDX AL 对PC3进行置0的操作 三 8255A的工作方式和C口状态字 1 方式0 基本输入输出方式 适用于不需要用应答信号的简单输入输出场合 在这种方式下 A口和B口可作为8位的端口 C口的高4位和低4位可作为两个4位的端口 这4个端口中的任何一个可作输入或者输出 从而构成16种不同的输入输出组态 在实际应用时 C口的两半部分也可以合在一起 构成一个8位的端口 这样8255A可构成3个8位的端口 或两个8位 两个4位的端口 CPU与这些端口交换数据时 可以直接用输入指令从指定端口读取数据 或用输出指令将数据写入指定的端口 由于输入不能锁存 在用IN指令读取数据时 所得到的数据是信号有效时端口线上的状态 在输出方式下 用OUT指令把CPU的数据写入端口时 信号把数据锁存到该端口的输出锁存器中 输出口线上的数据会一直保持不变 直到再次改变锁存器的值为止 2 方式1 选通的输入输出方式 A口和B口均可工作于输人或输出方式 这两个8位数据口的输入 输出数据都能锁存 C口被定义为A口 B口的联络信号 PC0 PC2作端口B的状态和控制线 PC3 PC7作端口A的状态和控制线 用于提高数据交换性能 方式1下输入 输出的操作时序与引脚定义不同 在采用中断方式进行输入 输出的场合 如果外部设备能为8255A提供选通信号或着数据接收应答信号 则通常使用8255A的端口工作方式1的情况 1 方式1输入 INTR InterruptRequest 中断请求信号 高电平有效 8255A输出给CPU的中断请求信号 只有当STB IBF和INTE三者都高时 INTR才能被置为高电平 INTE InterruptEnable 中断允许信号 为1时 使端口处于中断允许状态 而为0时 使端口处于中断屏蔽状态 没有外部引出脚 用软件才能使这两个触发器置 或清0 INTE A由C口按位操作控制字通过对PC4位的置位 复位来控制 INTE B通过PC2位控制 例 MOVAL 00001001BOUTCTRL PORT AL INTEA 1 RD PA7 PA0 INTEA PC4 PC5 PC3 PC6 PC7 IO INTRA IBFA STBA 来自外设的选同信号输入端 去外设的输入缓冲区满信号 送往8259A的中断请求信号 中断允许信号 INTE由置位STB PC4 操作置 1 A口方式1输入有关信号的规定 RD INTEB PC2 PC1 PC0 PB7 PB0 STBB IBFB INTRB B口方式1输入有关信号的规定 选通信号输入端 来自外设 输入缓冲区满信号 送往外设 送往8259A的中断请求信号 中断允许信号 INTE由置位 复位STB PC2 操作置1 0 方式1输入 选通输入时序 方式1输入C口状态字 在方式1下 CPU用输入指令对C口进行读操作得到C口状态字 其中存有端口C的握手信号的状态 B组方式1输入状态字为 A组方式1输入状态字为 2 方式1输出 OBF OutputBufferFull 输出缓冲器满信号 低电平有效 输出 当它为低电平时 表示CPU已将数据写到8255A的指定输出端口 即数据已被输出锁存器锁存 并出现在端口数据线PA7 PA0或PB7 PB0上 通知外设可将数据取走 ACK Acknowledge 外设的应答信号 低电平有效 由外设送给8255A 当它为低电平时 表示CPU输出到8255A的A口或B口的数据已被外设接受 A口方式1输出有关信号的规定 输出缓冲区满信号 去外设 外设响应信号 来自外设 中断请求信号 中断允许信号 INTE由PC6 ACKA 置 1 INTR有效 中断允许信号 INTE由ACKB PC2 置 1 INTR有效 输出缓冲区满信号 高电平有效 外设响应信号 是外设送给8255A的 中断请求信号 B口方式1输出有关信号的规定 方式1输出 选通输出时序 方式1输出C口状态字 在方式1下 CPU用输入指令对C口进行读操作得到C口状态字 其中存有端口C的握手信号的状态 B组方式1输出状态字为 A组方式1输出状态字为 只有A口可以工作于这种方式 在这种方式下 CPU与外设交换数据时 可在单一的8位端口数据线PA7 PA0上进行 既可以通过A口把数据传送到外设 又可以从A口接收从外设送过来的数据 而且输入和输出数据均能锁存 端口A工作于方式2时 端口C的高5位 PC3 PC7 作A口的联络控制信号 方式2看成是A口方式1输出和方式1输入的结合 B口可工作在方式0或方式1 与A口无关 3 方式2 双向传输方式 方式2的方式控制字 方式2的控制信号 输出缓冲区满信号 外设收到数据 发响应信号 外设准备好数据 发选通信号 8255A收到数据 向外设发输入缓冲区满信号 方式2时序 方式2状态字 注 方式2下 输入 输出都可能通过同一个INTR向CPU提出中断请求 因此在检测到INTR有效时 应该通过查询OBF IBF状态位 以判断是输出中断还是输入中断 9 28255使用举例 例1 键盘接口 如何检测是否有键按下 把所有行线都输出低电平 当所有按键都没有按下时 所有列线都不与行线连接 而是通过上拉电阻直接挂在 5V 这时读取列线只能得到高电平 PA3 PA0 1111 如果至少有一个键按下 则PA3 PA0中至少有一个是0 把行线全定为低电平 再比较列线是否都是高电平 就可知是否有键按下 如何确定按下的是哪个键 当有键按下时 采用逐行检查的方法来确定按下的按键 检查第r行时 只把该行线设为低电平 其余行线都是高电平 然后读取列线的状态 如果列线都是高电平 则该行上的按键都没有被按下 如果第c条列线等于低电平 则可确定第r行 第c列交叉处的按键被按下 并称此时的行线 列线状态为行码 列码 把行码放在前 列码放在后 形成按键扫描码 它表示按键的行列位置 例如 按键 9 在第3行 第2列 其扫描码为11011011 DBH 这种依次按行检查的方法称为行扫描法 按键扫描码表示了按键在矩阵中的位置 并不表明按键功能含义 例如 按键 7 它的扫描码为BEH 其功能却是数字 7 称其键值为 7 在矩阵键盘中 按键的扫描码是唯一确定的 但每个按键的键值可能有不同的定义 为了便于实现从扫描码到键值的转换 根据键值从小到大的顺序 依次存放按键的扫描码 形成按键扫描码表 获得按键扫描码后 把它与表中的数据依次比较 相等时对应的顺序号就是该键的键值 按键的抖动与处理按键开关通常为机械弹性开关 均利用了机械触点的闭合 断开作用 由于机械触点的弹性作用 在闭合及断开的瞬间均伴随有一连串的抖动 抖动时间的长短由按键的机械弹性决定 一般5 10ms 操作人员的压键 释键操作表现为按键稳定闭合 断开 反映在电平上就是稳定的低电平 高电平 为了确保CPU对一次击键动作只确认一次压键 必须消除抖动的影响 按键操作有几种 软件消除抖动的方法在第一次检测到有键按下时 执行一段延时10ms的子程序以后再读取键盘状态 进行比较 如果两次的状态电平保持一致则认为真正有键稳定按下 从而消除抖动的影响 如果两次的状态不一致 重复前两个步骤 定义各端口地址A PORTEQU0FFE0H A口地址B PORTEQU0FFE2H B口地址C PORTEQU0FFE4H C口地址CTRL PORTEQU0FFE6H 控制口地址 数据段 单个按键扫描码表DATASEGMENTTABLEDB077H 07BH 07DH 07EHDB0B7H 0BBH 0BDH 0BEHDB0D7H 0DBH 0DDH 0DEHDB0E7H 0EBH 0EDH 0EEHDATAENDS STACKSEGMENT 堆栈段DW100DUP 0 TOP STACKLABELWORDSTACKENDS CODESEGMENT 代码段ASSUMECS CODE DS DATA SS STACKMAINPROCFARSTART MOVAX STACKMOVSS AXLEASP TOP STACKMOVAX DATAMOVDS AX 初始化 A组方式0 A口输入 C口高4位输出MOVDX CTRL PORTMOVAL 10010000BOUTDX AL 检查是否所有键都弹起MOVAL 00HMOVDX C PORTOUTDX AL 所有行线等于0WAIT OPEN MOVDX A PORTINAL DXANDAL 0FHCMPAL 0FHJNEWAIT OPEN 所有键都弹起 MOVAL 00H 检查是否有键被按下MOVDX C PORTOUTDX AL 所有行线等于0WAIT PRES MOVDX A PORTINAL DXANDAL 0FHCMPAL 0FHJEWAIT PRESMOVAH AL 有键按下时 消抖MOVCX 16EAHLOOP INAL DXANDAL 0FHCMPAL AHJNEWAIT PRES 不相等 抖动状态 稳定状态 确定是哪个键被按下MOVCL 0EFH 指向第一行NEXT ROW MOVDX C PORTMOVAL CLOUTDX ALMOVDX A PORTINAL DXANDAL 0FH 低4位等于列码CMPAL 0FHJNEENCODEROLCL 01 指向下一行JMPNEXT ROW 检查下一行 ENCODE ANDCL 0F0H 组成按键扫描码ORAL CL AL 扫描码 根据扫描码查找键值NEXT TRY MOVBX 000FHCMPAL TABLE BX JEFINDDECBXJNSNEXT TRY MOVAH 001H 出错标志JMPEXITFIND MOVAL BL AL 键值0 FMOVAH 00HEXIT HLT 方式1输入假设8255A的A B C 控制端口地址分别为70H 71H 72H 73H PA7 PA0分别与PB7 PB0对应连接 PC4与PC0连接 PC3 PC5都悬空 对于以下程序段 指出缓冲区BUFFER的内容 START MOVAL 10111000BOUT73H ALMOVBX 0000HMOVAL 01HOUT73H ALMOVAL 00HOUT73H AL STB 0 MOVAL 88HOUT71H AL PA PB 88HINAL 70H AL A口锁存器值 PA7 PA0 88HMOVBUFFER BX ALINCBXMOVAL 01HOUT73H AL STB 0 1 A口锁存88HINAL 70H AL A口锁存器值 88HMOVBUFFER BX AL INCBXMOVAL 77HOUT71H AL PA PB 77HINAL 70H AL 锁存器值 88H PA 77HMOVBUFFER BX AL 运行结果BUFFER中数据为 88H 88H 88H 方式1输出 打印机接口 定义各端口地址PORT AEQU2F8H 8255A端口A地址PORT BEQU2FAH 8255A端口B地址PORT CEQU2FCH 8255A端口C地址PORT CTRLEQU2FEH 8255A控制口地址PORT 0EQU2F0H 8259A偶地址PORT 1EQU2F2H 8259A奇地址 STACKSEGMENT 堆栈段DW50DUP 0 TOP POINTERLABELWORDSTACKENDS DATASEGMENT 数据段MESS 1DB Thisistest DB0DH 0AHMESS LENEQU MESS 1PRNT DONEDB0POINTERDW0000HCOUNTDB0PRNT ERRDB0DATAENDS CODESEGMENT 代码段ASSUMECS CODE DS DATA SS STACKMAINPROCFARSTART MOVAX STACKMOVSS AXLEASP TOP POINTERMOVAX DATAMOVDS AX 填写中断向量表MOVAX 0000HMOVES AXMOVBX 00AHSHLBX 1SHLBX 1MOVAX OFFSETPRNT INTMOVES BX AXMOVAX SEGPRNT INTMOVES BX 2 AX 8259A 边沿触发 单片 非缓冲 非自动EOI 8088CPU 允许请求IR2MOVDX PORT 0MOVAL 00010011BOUTDX ALMOVDX PORT 1MOVAL 08HOUTDX ALMOVAL 00000001BOUTDX ALMOVAL 11111011BOUTDX AL 8255A A口方式0输入 C口高4位输出 B口方式1输出 C口低4位输入MOVDX PORT CTRLMOVAL 10010100BOUTDX ALMOVAL 00001001B OUTDX AL 初始化打印机 给出负脉冲 PC5 INIT MOVDX PORT CTRLMOVAL 00001011BOUTDX AL 1MOVAL 00001010BOUTDX AL 0MOVCX 17H 延时5

温馨提示

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

评论

0/150

提交评论