• 基本IO接口技术——微机第七章笔记


    基本I/O接口技术——微机第七章笔记

    前言

    明天考试,速通!

    这一章主要是一些并行接口知识点,涉及到8255、8253还有一些串行接口。

    MindMap

    在这里插入图片描述

    并行通信和串行通信

    通信

    指计算机与外设、计算机与计算机之间的 信息交换

    基本方法

    并行通信串行通信

    并行通信

    就是将数据的各位 同时 在 多根并行传输线上进行传输。

    优点

    传输速度快,适用于数据传输率较高、传输距离较短的场合。

    串行通信

    和并行相反,将数据的各位按 时间顺序 依次在一根传输线上传输。

    特点

    传输速度慢、远程、费用低,适用于长距离、中低速的通信。

    并行接口概述

    并行接口连接CPU 与 并行外设,实现两者间的 并行通信

    硬件结构(典型)

    1. 锁存或缓冲的数据端口。
    2. 与CPU、外设进行数据交换所必须的 控制状态信号。
    3. 端口译码电路。
    4. 控制电路。

    8255A

    引脚结构图

    在这里插入图片描述

    具有三个 8位并行端口, 40个引脚。

    工作原理

    结构和功能

    在这里插入图片描述

    数据端口

    38位 I/O端口(A、B、C),24根I/O线和外设交换数据或通信,C口分两个 4位口。

    A、B口用为8位数据I/O口,C可8位,也可两个4位,还常用于配合A口和B口,作为 控制信号输出、或作为 状态信号 输入。

    端口地址
    在这里插入图片描述

    在这里插入图片描述

    控制字

    方式选择控制字

    定义 各端口的工作方式。

    三种方式:

    1. 方式0——基本输入输出
    2. 方式1——选通输入输出
    3. 方式2——双向总线I/O方式

    在这里插入图片描述

    置位复位控制字

    对C端口的 任一进行置位或者复位操作。

    在这里插入图片描述

    端口C常用于 控制应答信号,我们可以对其进行复位和置位,通过对控制口进行写入 按位置位/复位控制字。

    状态字

    在这里插入图片描述

    工作方式

    前面提到,8255A有三种工作方式,在方式1和方式2时,C口用于A口/B口的联络信号,用IN指令可以读取C口的状态。

    方式0——基本输入输出方式

    适用于不需应答信号的简单I/O场合。

    输出有锁存,输入无锁存。

    方式1——选通输入/输出方式

    输入

    输入或输出都通过 应答信号实现,这是A/B用作数据口,C的部分用于 握手信号线中断请求线

    数据口的输入、输出都可以锁存。

    在这里插入图片描述

    PC35和PC02分别用于A口和B口的状态和控制线,PC6~7用作IO线。

    STB-数据选通输入信号,低电平有效,由外设输入;

    IBF-输入缓冲器满信号,高电平有效,由8255A输出的状态信号,表示输入锁存器已满,向外设指明不能再送入数据。

    INTEA: Interrupt Enable,中断允许信号,设置中断允许或屏蔽中断的信号。INTE没有外部引出端,由软件对C口某位进行置0或置1的操作实现。对A口,中断允许端是PC4,对B口,是PC2。置1允许中断,置0屏蔽中断。

    INTRA: 8255向CPU申请中断,高有效,请求CPU中断。
    INTR为高有3个条件: 1) STB为高,即数据已打入8255; 2) IBF为高,即8255已收到数据;3) INTE(中断请求允许)为高,即8255允许以中断方式应答。
    INTRA为高,通知CPU可以取8255A口中的数。

    输出

    PC3、PC6和PC7作A口的应答信号,PC0、PC1和PC2作B口的应答信号。余下的PC4和PC5可作输入或输出线。

    在这里插入图片描述

    OBF-输出缓冲器满信号,输出,低电平有效。表示CPU已输出数据到指定端口。

    ACK-外设的回答信号,低电平有效,由外设送给8255A。表示CPU送到指定端口的数据已被外设接受。

    INTE-中断允许信号。

    INTR-中断请求信号,高电平有效。

    方式2——双向总线方式(仅A口)

    这时PA7~PA0作为双向数据总线,PC3 PC7用作A口的联络控制信号。PC2PC0可用作B口的应答信号线,或作I/O线。

    在这里插入图片描述

    INTRA-中断请求信号,高电平有效.

    OBFA-输出缓冲器满,低电平有效.

    ACKA-外设响应信号,低电平有效.

    IBFA-输入缓冲器满信号,高电平有效.

    STBA-选通输入信号,低电平有效.

    C口状态字

    在方式1和2时,C口产生与外设的联络信号,此时读取C口的内容,可检查或测试外设的状态。

    在这里插入图片描述

    来段8255的汇编助兴

    MOV DX, 1023H           ; set control port address
    MOV AL, 1001X000B       ; set function control word
    OUT DX, AL
    MOV AL, 0               ; line light port PC0, set low
    OUT DX, AL
    
    MOV DX, 1021H           ; port B address
    MOV AL, 80H             ; pb7
    OUT DX, AL              ; open control
    
    A:
    MOV DX, 1020H           ; port A address
    IN AL, DX               ; get data
    CMP AL, 0               ; if PA0~PA7 have one is hight, it impress have abnormal
    JZ A                    ; keep monitor
    
    MOV CX, 3               ; set loop times
    MOV DX, 1022H           ; port C address
    
    B:
    MOV AL, 1
    OUT DX, AL              ; alarm lamp light on
    CALL DELAY
    MOV AL, 0
    OUT DX, AL              ; alarm lamp light off
    CALL DELAY
    LOOP B
    JMP A                   ; keep monitor
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    可编程定时/计数器 8253

    8253 是一种 硬件定时/计数器芯片

    一、外部引线级内部结构

    3个16位的定时/计数器(通道)
    24引脚双列直插式
    最高计数频率2.6MHz
    TTL电平兼容
    单电源+5V供电

    在这里插入图片描述

    通道选择

    在这里插入图片描述

    在这里插入图片描述

    二、计数启动方式

    程序指令启动(软启动)外部电路信号启动(硬件启动)两种过程。

    在这里插入图片描述

    编程结构

    在这里插入图片描述

    控制字

    在这里插入图片描述

    8253 控制字格式

    在这里插入图片描述

    工作过程

    1. 设置8253的工作方式
    2. 设置计数初值到初值寄存器
    3. 第一个CLK 下降沿信号使初值寄存器的内容置入计数寄存器
    4. 以后每来一个CLK信号,计数寄存器减1
    5. 减到0时,OUT端输出一特殊波形的信号
      注:以上计数过程中还受到GATE信号的控制

    三、工作方式

    控制字的D1~D3其实就是 工作方式的选择,有如下6种工作方式:

    方式0——计数结束中断
    方式1——可重复触发的单稳态触发器
    方式2——频率发生器
    方式3——方波发生器
    方式4——软件触发选通
    方式5——硬件触发选通

    方式0 计数结束中断

    软件启动,不自动重复计数。装入控制字后OUT端变低电平,计数结束OUT输出高电平。

    计数过程中,GATE端应保持高电平。GATE信号变低,则暂停计数,直到GATE恢复。OUT端输出是一个约(N+1)TCLK宽度的负脉冲。计数过程中可随时修改初值重新开始计数。

    方式1 单稳态触发器

    硬件启动,不自动重复计数。装入控制字后OUT端变高电平。计数开始OUT端变为低电平,计数结束后又变高。

    门控信号GATE端的跳变触发计数,可重复触发。若下一次GATE上升沿提前到达,则OUT端负脉冲拉宽为两次计数过程之和。计数过程中写入新初值不影响本次计数。

    方式2 频率发生器

    软、硬件启动,自动重复计数。装入控制字后OUT端变高电平,计数到最后一个CLK时OUT输出负脉冲,并连续重复此过程。

    GATE为计数的控制信号:GATE变低计数停止,再变高时的下一个CLK下降沿,从初值开始重新计数。
    每个计数周期结束时(减到1时),OUT端输出一个TCLK宽度的负脉冲。
    计数过程自动重复进行。
    计数过程中修改初值不影响本轮计数过程。

    方式3 方波发生器

    软、硬件启动,自动重复计数。装入控制字后OUT端变高电平,然后OUT连续输出对称方波:前 N/2或(N+1)/2 个CLK,OUT为高,后N/2或(N-1)/2 个CLK, OUT为低。

    OUT输出方波,前半周期为高,后半周期为低。
    计数过程中修改初值不影响本半周期计数过程。
    GATE可以作为计数的控制信号:GATE变低计数停止,再变高时的下一个CLK下降沿,从初值开始重新计数。

    方式4 软件触发选通

    软件启动,不自动重复计数。装入控制字后输出端变高电平,计数结束输出一个CLK宽度的负脉冲。

    计数过程中,GATE端应保持高电平。
    每写入一次初值,计数一个周期,然后停止计数。
    每个计数周期结束时(减到0时),OUT端输出一个TCLK宽度的负脉冲。
    计数过程中修改初值不影响本轮计数过程。

    方式5 硬件触发选通

    硬件启动,不自动重复计数。OUT端波形与方式4相同。

    写入初值时,GATE端应保持低电平。
    GATE每出现一次正脉冲,计数一个周期,然后停止计数。
    每个计数周期结束时(减到0时),OUT端输出一个TCLK宽度的负脉冲。
    计数过程中修改初值不影响本轮计数过程。

    四、8253的应用

    分三部分:连接系统、设置工作方式、置计数初值。后面两个就是编程了。

    初始化程序流程

    在这里插入图片描述

    CNT0:
    MOV DX, 0123H       ; set control port address
    MOV AL, 34H         ; set word funtion is 2
    OUT DX, AL
    MOV DX, 01020H      ; counting channel 0
    MOV AX, 20000
    OUT DX, AL          ; clock frequency
    MOV AL, AH
    OUT DX, AL
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    这个我也没懂,随便看看吧

    MOV DX, 3E3H        ; set control port address
    MOV AL, 00110110B   ; chanel 0, function 3
    OUT DX, AL
    MOV DX, 3E0H        ; chanel 0 port address
    MOV AX, 20000       ; 2MHz
    OUT DX, AL
    MOV AL, AH
    OUT DX, AL
    
    XOR AL, AL
    MOV DX, 3E5H
    OUT DX, AL          ; set 0 let cp goto
    MOV DX, 3E4H        ; trisate gate
    
    NEXT:
    IN AL, DX
    AND AL, 01H
    JZ NEXT
    
    MOV DX, 3E5H
    MOV AL, 2
    OUT DX, AL
    
    GOON:
    MOV AH, 1
    INT 16H
    JZ GOON
    XOR AL, AL
    OUT DX, AL
    MOV AH, 4C
    INT 21H
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31

    后话

    其他的,像串行接口和并行异步这些不是重点,所以不写了。

  • 相关阅读:
    Git 学习笔记
    SpringCloud 微服务全栈体系(十二)
    docker+mysql+flask+redis+vue3+uwsgi+docker部署
    Android TV 桌面图标闪
    Relational Message Passing for Fully InductiveKnowledge Graph Completion
    Jansson库中的json_delete函数
    【es6】解决箭头函数所有的问题,箭头函数的 this 指针,使用 new 操作符
    Spark - 第4章 结构化API概述
    C++内存篇
    【Leetcode】【每日一题】【简单】2558. 从数量最多的堆取走礼物
  • 原文地址:https://blog.csdn.net/weixin_54891898/article/details/125548119