当前位置: 首页 > news >正文

西电微机原理-第七章 常用接口器件

目录
  • 计算机与外设之间如何通过接口传送数据(非DMA)
  • 典型接口芯片
    • 8255可编程并行接口
      • 内部结构与外部引线
      • 8255的控制字
      • 8255的工作方式
      • 8255的寻址及连接使用
    • 8253 可编程定时器
      • 外部引线及功能
      • 六种工作方式
      • 控制字
      • 连接与初始化程序
    • 级联使用(关键)

计算机与外设之间如何通过接口传送数据(非DMA)

非中断方式:

Untitled

中断方式:单向【OBF:Output Buffer Full | IBF: Input Buffer Full】

Untitled

  1. 输出接口向CPU发送中断请求 INTR;CPU向输出接口中写入数据
  2. 当输出接口的缓冲区满以后,OBF置为0,外设将数据从输出接口中取走
  3. 外设向输出接口发送ACK信号,表示数据已接收,输出接口再向CPU发送INTR,OBF置为1,进入下一个循环

Untitled

  1. 输入接口向外设发IBF信号(置为0,表示输入缓冲区不满),外设收到后向输入接口写入数据,然后IBF置为1
  2. 当输入接口的缓冲区满以后,向CPU发送中断请求,CPU将数据从输入接口中取走
  3. 进入下一个循环

中断方式:双向

Untitled

典型接口芯片

8255可编程并行接口

三种工作方式

Untitled

Untitled

Untitled

内部结构与外部引线

  1. 对于外设:分为ABC三个口,A、B、C口都是八根线。

    1. A口:工作在方式012
    2. B口:工作在方式01
    3. C口:工作在方式0;高低四位可以分别配置,支持位操作
  2. 对CPU:数据线、地址线、控制线、片选线、复位线

    1. 8255内部有两个数据线,对应4个接口地址

    2. 如下:

      00 A口寄存器
      01 B口寄存器
      10 C口寄存器
      11 控制字
  3. 分组管理:

    A口和C口的上半 ⇒ A组

    B口和C口的下半 ⇒ B组

Untitled

C口只能工作在方式0,输入时用三态门,又没有缓冲区寄存器,自然没有锁存能力

C口只能工作在方式0,输入时用三态门,又没有缓冲区寄存器,自然没有锁存能力

8255的控制字

本质:8255内部的一个寄存器,接口地址为 A1A0=11

有两种作用

  1. 首位为1:设置8255的工作方式
  2. 首位为0:对C口进行位操作

Untitled

8255的工作方式

方式0:

Untitled

方式1:

Untitled

Untitled

A口工作在方式1时:借用PC4和PC5用作输入,PC6和PC7用所输出。既然在方式1只会用作输入和输出,只会用到两条线,为什么这里要分开设置呢,为的是设置方式2(输入输出同时有效)的时候可以方便一些。

我们知道:8255有四个接口地址,分别对应8255内部的四个寄存器:ABC口寄存器与控制字寄存器。

ABC口寄存器为8位,控制着每一个口对应八根线的高低电平。

我们知道:A口工作在方式1的时候,会向C口借PC7/6或者PC4/5两根线。

现在设想下面这种情况:我们想要知道此时8255的输出缓冲区是或否为满,那么我们需要读哪个状态信号呢,显然是OBF【对应C口寄存器的第七位】而不是ACK【对应C口寄存器的第六位】。那么ACK既然读了也没用,几乎一直出于1的状态,那么C口寄存器的第六位的作用就丧失了,所以我们赋予该为全新的意义:表示中断是否允许。

Untitled

方式3:

Untitled

Untitled

8255的寻址及连接使用

寻址与读写时序

Untitled

Untitled

数据在STROBE的上升沿写入,同时BUSY置为高,写入完成后发送ACK负脉冲

方式0,程序查询方式:

Untitled

此处初始化A口为方式0的输出,C口高四位为输出:PC6;第四位为输入 PC1

此处初始化A口为方式0的输出,C口高四位为输出:PC6;第四位为输入 PC1

Untitled

  1. 忙检测:读取PC1,即C口寄存器的第一位
  2. MOV DX,AL 虽然写入的是8位数据,但是C口的高八位是输出模式,所以允许往里面写数据(好把写入的数据送出去),而C口的低八位是输入模式,不允许往里面写数据(否则读到的数据就乱了)。所以在执行 MOV DX,AL 的时候,只会把PC6置0,不会影响到PC1

忙检测+送数据+生成负脉冲

方式1,程序查询方式:

Untitled

Untitled

Untitled

当数据被写入时,输出缓冲区满了,OBF产生下降沿,经过单稳触发器,产生一个1us的负脉冲,作为STROBE信号,所以在软件中,STROBE的负脉冲就无须自己生成了

方式1,中断方式:

中断处理程序

中断处理程序

由于是中断方式,检测忙信号是由中断控制器执行的,所以在中断处理程序中忙检测也不用写了

8253 可编程定时器

外部引线及功能

Untitled

每个定时器:(本质是减计数器)

  • 时钟输入、门控输入、输出
  • 三个寄存器:初值、减一、锁存

由于减一寄存器是内部寄存器,不需要给接口地址,初值寄存器和锁存寄存器分别只写和只读,所以可以共用一个接口地址

因此,每个寄存器占用一个接口地址,加上一个控制寄存器,8255共占用4个接口地址

Untitled

六种工作方式

方式0:计数结束产生中断

方式1:可编程单稳(把一个沿变为一个负脉冲)

生成一个持续nT的负脉冲【方式0严格来讲不算负脉冲】

生成一个持续nT的负脉冲【方式0严格来讲不算负脉冲】

Untitled

Untitled

方式2:频率发生器

方式3:方波发生器

生成周期为nT的负脉冲或方波

生成周期为nT的负脉冲或方波

Untitled

Untitled

方式4:软件触发选通

方式5:硬件触发选通

间隔nT后生成一个负脉冲

间隔nT后生成一个负脉冲

Untitled

Untitled

Untitled

控制字

格式:

Untitled

Untitled

连接与初始化程序

例一:

Untitled

Untitled

例二:

Untitled

Untitled

Untitled

Untitled

例三:

Untitled

Untitled

Untitled

Untitled

级联使用(关键)

http://www.wxhsa.cn/company.asp?id=4821

相关文章:

  • CF1264D1 Beautiful Bracket Sequence (easy version)
  • 西电微机原理-第六章 输入输出技术
  • 【FAQ】应用A如何使用应用B内的文件?
  • OpenStack Cinder 创建卷
  • 西电微机原理-第二章 Intel单核处理器
  • 二叉树的迭代遍历(非递归)
  • 记录---用好了 defineProps 才叫会用 Vue3,90% 的写法都错了
  • 今日流水账-2025年9月15日
  • c#给原文件重命名
  • tcpdump常用随笔
  • 2025年HR经理必备:10款高效人力资源管理软件推荐
  • GAS中GA变量数据的同步
  • 提升员工绩效的5大人才管理软件评测与分析
  • 【触想智能】工业显示屏与普通显示屏的八大区别以及应用领域分析
  • LLaVA- Improved Baselines with Visual Instruction Tuning - jack
  • 042-WEB 攻防:PHP 应用 MYSQL 架构 SQL 注入 跨库查询 文件读写 权限操作
  • Dsu On Tree 笔记
  • 西电微机原理-第一章 序论:微型计算机概述
  • Liunx 硬盘扩容
  • 船舶航向控制算法
  • pyside6 1
  • 基于WSL下载Hadoop和HBASE
  • 应用多、交付快,研发运维怎么管?看云效+SAE 如何一站式破局
  • revit二次开发之 钢筋功能详细分析
  • java-wxj02
  • 停止win10自动升级操作
  • vue3 - elementPlus
  • GAS_Aura-Target Data
  • windows 把恢复分区调整到 c 盘前面
  • wso2~对已发布api的元信息管理