微机原理第六章 I/O接口

微机原理笔记分享
课程链接:https://www.bilibili.com/video/BV1qv411Y7AA?share_source=copy_web

I/O接口

I/O设备

常见的输入设备:

  • 键盘、鼠标、图形扫描仪、条形码读入器、光笔和触摸屏等。

常见的输出设备:

  • 显示器、打印机、绘图仪和影像输出设备等。

在测控系统中,还会用到模/数转换器、数/模转换器、发光二极管(LED)、按钮、开关等。此外,还有许多专用I/O设备。

IO接口

I/O接口的作用

在这里插入图片描述

  • 解决高速CPU与低速外设之间不匹配问题

    • 速度不匹配
    • 信号电平不匹配
    • 信号格式不匹配
    • 时序不匹配
  • I/O接口是位于系统与外设间、用来协助完成数据传送和控制任务的逻辑电路

接口电路的功能

  • 缓冲、锁存

    • 输入要缓冲,输出要锁存
  • 联络

    • 握手,应答,工作状态联络

      • Ready
      • Busy
  • 变换

    • 电压/电流变换
    • 串行/并行变换
    • 电平/电平变换
    • A/D、D/A变换
  • 地址译码

    • I/O寻址,选中工作端口
  • I/O端口交换信息类型

    • 数据

      • 通过数据口(数据寄存器)传送
    • 命令

      • 通过控制口接受CPU发送的各种控制信号启动、停止。中断使能等
    • 状态

      • 通过状态口提供外设状态,供CPU测试、联络等
  • 接口电路内部结构

    在这里插入图片描述

IO端口及寻址方式

  • I/O单独编址

    • 8086/8088、Z80等

      • 不占用存储空间,由M/IO区分
        在这里插入图片描述
  • I/O与存储器统一编址

    • 存储器映象方式

    • MC68000、68HCO5等

      • 无需I/O指令
      • 占存储空间
        在这里插入图片描述
  • 8086的I/O端口编址

    • 采用I/O独立编址方式(但地址线与存储器共用)
    • 地址线上的地址信号用IO/M来区分
    • I/O操作只使用20根地址线中的16根:A15~A0
    • 可寻址的I/O端口数为64K(65536)个
    • I/O地址范围为0~FFFFH
    • IBM PC只使用了1024个I/O地址(0~3FFH)
  • 常见I/O接口芯片

    在这里插入图片描述
    在这里插入图片描述

    • 可编程接口芯片

      • 8255:可编程并行接口芯片
      • 8251:可编程串行接口芯片
      • 8253:可编程定时/计数器
      • 8259:可编程中断控制器
      • 8237:可编程DMA控制器

CPU与外设的数据传输方式

  • 程序控制I/O方式

    • 无条件传送方式

      • 需要传送时,执行IN/OUT指令即可

      • 适用于无需应答联络的场合

      • IN/OUT指令

        • 使用累加器AX或AL传送信息

        • IN输入指令格式为:

          • IN AL,端口地址(8位地址,1个端口)
          • IN AX,端口地址(8位地址,2个端口)
          • IN AL,DX (16位地址,1个端口)
          • IN AX,DX (16位地址,2个端口)
        • OUT输出指令格式为:

          • OUT端口地址,AL
          • OUT 端口地址,A
          • OUT DX, AL
          • OUT DX,AX
        • 例1.简单输入口:将开关状态→CPU

          在这里插入图片描述

        • 例2.简单输出口:控制LED发光

          在这里插入图片描述

    • 条件传送/查询模式

      在这里插入图片描述

        • 例3.查询方式:打印输出

          • 状态口:83H
            数据口:82H
          • BUSY=1,忙
            0,空闲
            在这里插入图片描述
      • 查询方法

          • 例4.查询式I/0接口电路

            在这里插入图片描述

            在这里插入图片描述

  • 中断方式

    在这里插入图片描述

    • 查询与中断方式比较

      在这里插入图片描述

      • 查询:CPU主动查询外设状态,等待费时
      • 中断:外设准备好才向CPU请求中断,CPU效率高
  • DMA方式

    • DMA传送

      • 程序控制传送的不足:

        • 外设→CPU→存储器
        • 外设←CPU←存储器
      • 直接存储器存取DMA:

        • 外设→存储器
        • 外设←存储器
        • CPU释放总线,由DMA控制器管理
    • DMA传送过程

      • CPU对DMA控制器进行初始化设置

      • 外设、DMAC和CPU三者通过应答信号建立

        • 联系:CPU将总线交给DMAC控制
      • DMA传送

        • DMA读存储器:存储器→外设
        • DMA写存储器:存储器←外设
      • 自动增减地址和计数,判断传送完成否

8255的工作原理

可编程并行接口8255

  • 主要引线功能及结构

  • 3种工作方式及其特点

  • 应用

    • 芯片与系统的连接
    • 芯片的初始化编程
    • 数据输入/输出控制程序设计

8255特点

在这里插入图片描述

  • 通道型接口
  • 含3个独立的8位并行输入/输出端口,各端口均具有数据的控制和锁存能力
  • 可通过编程,设置各端口工作在某一确定状态下。

8255主要引脚

  • 连接系统端的主要引线:

    在这里插入图片描述

    在这里插入图片描述

  • 连接外设端的引脚:

    • PA0 —— PA7
    • PB0 —— PB7
    • PC0 —— PC7

8255与系统的连接示意图

在这里插入图片描述

接口和工作方式

  • 接口

    • B组

      • 端口B
      • 端口C的低4位
    • A组

      • 端口A
      • 端口C的高4位
  • 方式

    • 基本输入/输出方式(方式0)

      • 相当于三个独立的8位简单接口

      • 各端口既可设置为输入口,也可设置为输出口,但不能同时实现输入及输出

      • C端口可以是一个8位的简单接口,也可以分为两个独立的4位端口

      • 常用于连接简单外设,适于无条件或查询方式

        • 通常情饥:

          • A端口和B端口作为8位数据的输入或输出口
          • C口的某些位作为状态输入
          • 若使C端口低4位中某一位作为输入口,则低4位中其他位都应作为输入口。同时可设高4位作为输出。
      • 方式0连接示意图

        在这里插入图片描述

    • 选通工作方式(方式1)

      • 利用一组选通控制信号控制A端口和B端口的数据输入输出

      • A口、B口作输入或输出口,C口的部分位用作选通控制信号

      • A口、B口在作为输入和输出时的选通信号不同

        • 方式1主要用于中断控制方式下的输入输出
        • C口的8位除用作选通信号外,其余位可工作于方式0下,作为输入或输出口。

      在这里插入图片描述

    • 双向传送方式(方式2)

      • 双向输入输出方式

        • 可以既作为输入口,又作为输出口。
      • 只有A端口可工作在方式2下

      • 可使A端口作为双向端口所有

      • 用于中断控制方式

      • 当A口工作于方式2时:

        • B口可工作于方式1

          • 此时C口的所有位都用作选通控制信号的输入输出
        • B口也可工作于方式0

          • 此时C口的剩余位也可工作于方式0

8255控制字

  • 方式控制字:

    • 用于确定3个端口的工作方式及数据传送方向;
  • 位控制字

    • 仅用于C端口
    • 可设置C口某位的初始状态(为高电平或低电平)
    • 当其工作于方式0下且作为输出口时,一般需要对作为输出的位设置初始状态(即初始化)
  • 方式控制字

    在这里插入图片描述

  • 置位/复位控制字

    在这里插入图片描述

      • 从PC5引脚输出一正脉冲,设8255口地址:60H~63H
        在这里插入图片描述

8255应用举例

芯片与系统的连接(端口地址)

芯片的初始化

相应的控制程序

基本I/O

  • 检测开关KO7状态,并用LEDO7实时指示。(断开灯亮)
    在这里插入图片描述

确定8255端口地址

在这里插入图片描述

查询程序

在这里插入图片描述

键盘接口

  • 键盘结构

  • 编程要点

  • 确定是否有键按下

    • 发行码:行线输出全0
    • 读列码:判列线是否全1?
      否,则有键按下
      在这里插入图片描述
  • 确定键的位置(行反转法)

    • 置行线输出全0,列线输入
    • 闭合键的列线值必为0→AH
  • 置列线输出,行线输入

    • 将获得的列线值输出,读行线,闭合键所在行也为0→AL
    • 若为F键,则:AX=1111,1110,1111,0111求反→0000,0001,0000,1000
  • 确定键名

    • 将键码、键名排列成表,通过键码查表确定键名。
  • 程序实现

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

7段数码管显示

在这里插入图片描述

    • 设8255各端口地址分别为60H、62H、64H和66H,如果要求先显示数字“3”,然后显示数字“6”,写出程序段。

      • 直接法

        在这里插入图片描述

        在这里插入图片描述

      • 查表

        在这里插入图片描述
        请添加图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值