基本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

可编程定时/计数器 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

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

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
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值