好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

可编程并口8255A.ppt

50页
  • 卖家[上传人]:012****78
  • 文档编号:132674369
  • 上传时间:2020-05-18
  • 文档格式:PPT
  • 文档大小:401KB
  • / 50 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 可编程并口8255A 8255A是一种典型的通用选通并行接口芯片 其内部有三个独立的8位数据口 即A口 B口 C口 有三种工作方式 0 基本输入 输出方式 1 选通输入 输出方式 2 双向传送方式 8255A外部引脚 8255A内部结构图 8255A内部结构 主要由数据总线缓冲器 读写控制逻辑 A B C三个双向I O端口及有关控制电路组成 数据总线缓冲器三态双向8位缓冲 用于收发数据总线上的数据读 写控制逻辑包括RD WR CS A0 A1 控制总线的开放 关闭和数据的传送方向 8255A的编程控制字 8255A共有两个控制字 方式选择控制字 对端口C按位置位 复位控制字 这两个控制字共用一个地址号 即当地址线A1A0都为1时就是访问控制字寄存器的片内地址 而用控制字的D7位来区分是方式设定控制字 还是对C端口的按位置位 复位命令 当D7位为1 是方式控制字 若D7位为0 是对端口C按位置位 复位的命令 8255A方式选择控制字 例1 要把A口指定为1方式 输入 C口上半部定为输出 B口指定为0方式 输出 C口下半部定为输入 则工作方式命令代码是 10110001B或B1H 例1 要把A口指定为1方式 输入 C口上半部定为输出 B口指定为0方式 输出 C口下半部定为输入 则工作方式命令代码是 10110001B或B1H 若将此命令代码写到8255A的命令寄存器 即实现了对8255A工作方式及端口功能的指定 或者说完成了对8255A的初始化 初始化的程序段为 MOVDX 303H 8255A命令口地址MOVAL OB1H 初始化命令OUTDX AL 送到命令口 8255AC口置位 复位控制字 端口C的每一位都可以通过向控制寄存器写入置位 复位控制字 而使它每一位置位 输输出为1 或复位 即输出为0 端口C的任意一位 都可以用一条输出指令访问控制寄存器 使其置位或复位 按位置位 复位指令只影响指定位 而不改变其它位的状态 例2 若要把C口的PC2引脚置成高电平输出 则命令字应该为00000101B或05H 将该命令的代码写入8255A的命令寄存器 就会使得从PC口的PC2引脚输出高电平 其程序段为 MOVDX 303H 8255A命令口地址MOVAL 05H 使PC2 l的命令字OUTDX AL 送到命令口 如果要使引脚PC2输出低电位 则程序段为 MOVDX 303H 8255A命令口地址 MOVAL 04H 使PC2 0的命令OUTDX AL 送到命令口 利用C口的按位控制特性还可以产生正 负脉冲或方波输出 对外设进行控制 例3 利用8255的PC7产生负脉冲 作打印机接口电路的数据选通信号 其程序段为 MOVDX 303H 8255A命令口MOVAL 00001110B 置PC7 0OUTDX ALNOP 维持低电平NOPMOVAL 00001111B 置PC7 1OUTDX AL 例4 利用8255A的PC6 产生方波 经滤波和功放后 送到喇叭 使产生不同频率的声音 其程序段为 OUTSPKPROCMOVDX 303H 8255A命令口MOVAL 00001101 置PC6 lOUTDX ALCALLDELAY1 PC6输出高电乎维持的时间MOVAL 00001100B 置PC6 0OUTDX AL CALLDELAY1 PC6输出低电平维持的时间若改变DELAY1的延时时间 即可改变喇叭发声的频率 例 对B口的PB1和PB0同时置位复位 产生方波 movdx 301h PortB端口地址为301hlp inal dxoral 03houtdx al PB1PB0 11calldelayandal 0fchoutdx al PB1PB0 00calldelayjmplp 关于两个命令的讨论 方式命令是对8255A的3个端口的工作方式及功能进行指定 即进行初始化 初始工作要在使用8255A之前做 也就是说 凡是用到8255A 就一定要先初始化 按位置位 复位命令只是对PC口的输出进行控制 使用它并不破坏已经建立的3种工作方式 而是对它们实现动态控制的一种支持 它可放在初始化程序以后的任何地方 两个命令的最高位 D7 都分配作了特征位 之所以要设置特征位 是为了识别两个不同的命令 在命令代码中设置特征位 标志位 是解决多个命令写入同一个命令口时如何进行识别而经常采用的方法之一 由于8255A两个命令的特征位不同 D7 1时 为工作方式命令 D7 0时 为按位置位 复位命令 按位置位 复位的命令代码只能写入命令口 这个问题经常有人弄错 因为表面看起来 按位置位 复位命令是对C口进行操作 所以 也就认为可以把按位置位 复位的命令代码写到C口 数据口 这是错误的想法 因为按位置位 复位是一个命令 它就要按命令的定义格式来处理每一位 如果把它写入C口 就会按C口的数据定义格式来处理 这两种定义完全不同的格式是不能互换的 所以 它只能写到命令口 按命令定义来处理 A口和B口另一个有趣的使用方法 A口 B口也可以按位输出高 低电平 但是 它与前面的按位置位 复位命令有本质的差别 并且实现的方法也不同 C口按位输出是以命令的形式送到命令寄存器去执行的 而A口 B口的按位输出是以送数据到A口 B口来实现的 A口 B口按位输出高 低电平 其具体作法是 若要使某一位置高电平 则先对端口进行读操作 将读入的原输出值 或 上一个字节 字节中使该位为l 其他位为0 然后再送到同一端口 即可使该位置位 若要使某一位置低电平 则先读入1个字节 再将它 与 上一个字节 字节中使该位为0 其他位为1 然后再送到同一端口 即可实现对该位的复位而不影响其他位的状况 当然 能够这样作的条件是8255A的输出有锁存能力 若定义数据口为输出而对其执行IN指令时 所读到的内容就是上次输出时锁存的数据 而不是读入外设送来的数据 例5 若要使PA7位输出高 低电平 则用下列程序段 使PA7输出高电平MOVDX 300 PA数据口地址INAL DX 读入A口原输出内容MOVAH AL 保存原输出内容ORAL 80H 使PA7 1OUTDX AL 输出PA7 MOVAL AH 恢复原输出内容OUTDX AL 使PA7输出低电平MOVDX 300 A口地址INAL DX 读入端口原输出值 MOVAH AL 保存原输出位ANDAL 7FH 使PA7 0OUTDX AL 输出PA7 MOVAL AH 恢复原输出值OUTDX AL用这种方法不仅可实现使单独一位输出高 低电平 还可以使几位同时输出高 低电平 例6 使B口的PB1和PB0同时置位复位 其程序如下 MOVDX 301H PB数据口地址INAL DX 读入原输出值MOVAH AL 保存原输出值ORAL 03H 使PB1PB0 11OUTDX AL 同时输出PB1PB0 ANDAL OFCH 使PB1PB0 00OUTDX AL 同时输出PB1PB0 1 方式0及其应用 0方式特点 0方式是一种基本输入 输出工作方式 通常不用联络信号 或不使用固定的联络信号 因此 所谓基本I O方式是指查询方式传送 也包括无条件传送 这种方式不能采用中断方式和CPU交换数据 输出锁存 输入有三态缓冲能力而无锁存功能 在0方式下 彼此独立的两个8位和两个4位并行口 共24根I O线全部由用户支配 都能被指定作为输入或者作为输出用 共有16种不同的使用组态 要特别强调的是 在0方式下 只能把C口的高4位为一组或低4位为一组同时输入或输出 不能再把4位中一部分作输入另一部分作输出 即4位一起行动 在0方式下不设置专用联络信号线 需要联络时 可由用户任意指定C口中的哪根线完成某种联络功能 这与后面要讨论的在1方式 2方式下设置固定的专用联络信号线不同 由于无固定的专用联络信号 因此也就在端口与I O设备之间无固定的时序关系 由用户根据数据传送的要求决定输入 输出的操作过程 0方式也没有设置固定的状态字 是单向I O 一次初始化只能指定端口 PA PB和PC 作输入或作输出 不能指定端口同时既作输入又作输出 端口的输入 输出配置有16种使用组合A口 8位 输入 输出B口 8位 输入 输出C口 低4位 输入 输出C口 高4位 输入 输出 打印机接口设计1用8255A构成的打印机接口 CPU用查询方式将缓冲区中的字符送去打印 打印机接口数据传送时序如下 设定A口为输出 C口用作握手信号 PC7为输出 PC2为输入 根据被控对象的要求 这里使用了一对联络信号线 即STB和BUSY 并选定8255A的PC7和PC2两个引脚分别作这两个联络线使用 但是 并不是非选PC7和PC2不可 而是完全可以选C口的其他引脚来做联络线使用 即联络信号线不是固定的 这是0方式的特点 程序流图 汇编程序 movdx 303hmoval 10000001boutdx almoval 00001111boutdx al PC7 1movsi offsetbufmovcx 0ffh 打印字符数lp decdxinal dxandal 04hjnzlp 等待busy信号movdx 300h moval si outdx almovdx 303hmoval 00001110boutdx al PC7 0nopnopmoval 00001111boutdx al PC7 1incsideccxjnzlp 2 方式1及其应用 8255A方式1 输入 方式1的特点 称为选通输入 输出方式A口 B口用作数据传送口 可输入或输出使用C口中的若干线作专用的握手信号输出具有锁存功能 输入具有缓冲功能和锁存功能 方式1输入 STB 外部设备发来 低电平将数据锁存在输入缓冲器 INBUFFER IBF输入缓冲器满INTR 由8255A发给8259A 中断请求信号INTEA或B A口与B口内的中断允许控制位 中断请求允许位 INTEA对应PC4位 INTEB对应PC2位 即 对INTEA B的置位 复位是通过对PC4 2的置位 复位来完成的 8255A方式1输入时序 方式1输出 OBF输出缓冲器满 表示CPU已把数据写入8255A中 ACK低电平通知8255已将数据从端口A或端口B取走INTR中断请求信号INTEA或B中断请求允许位 INTEA对应PC6位 INTEB对应PC2位 即 对INTEA B的置位 复位是通过对PC6 2的置位 复位来完成的 8255A方式1 输出 8255A输出时序 8255A方式1状态字状态字是在8255A输入 输出过程中由内部产生 从C口读取的 说明在输入方式下 PC2 PC4的取值是由程序设定 与外部引脚STBB STBA无关在输出方式下 PC2 PC6的取值是由程序设定 与外部引脚ACKB ACKA无关 举例 两台微机间通过8255并口传送1k字节数据 两CPU均采用查询方式 发送方工作在方式1 接收方工作在方式0 3 方式2及其应用 8255A方式2 方式2的特点 称为双向选通输入 输出方式A口在某一时刻可输入数据 在另一时刻可输出数据可采用中断方式或查询方式传送数据此时 B口只能工作在方式1或方式0使用C口中的若干线作专用的握手信号 是方式1下输入 输出的握手线的组合 不同点是 当ACK为低电平时 才使端口A的三态输出缓冲器送出数据 8255A方式2时序 8255A方式2状态字 说明输入 输出的先后顺序是任意的输出过程一定是WR信号在前 ACK信号在后输入过程一定是STB信号在前 RD信号在后 8255A应用 。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.