基本I/O接口技术——微机第七章笔记
文章目录
前言
明天考试,速通!
这一章主要是一些并行接口知识点,涉及到8255、8253还有一些串行接口。
MindMap
并行通信和串行通信
通信
指计算机与外设、计算机与计算机之间的 信息交换
。
基本方法
并行通信
和 串行通信
。
并行通信
就是将数据的各位 同时
在 多根并行传输线上进行传输。
优点
传输速度快,适用于数据传输率较高、传输距离较短的场合。
串行通信
和并行相反,将数据的各位按 时间顺序
依次在一根传输线上传输。
特点
传输速度慢、远程、费用低,适用于长距离、中低速的通信。
并行接口概述
并行接口连接CPU 与 并行外设
,实现两者间的 并行通信
。
硬件结构(典型)
- 锁存或缓冲的数据端口。
- 与CPU、外设进行数据交换所必须的
控制
和状态
信号。 - 端口译码电路。
- 控制电路。
8255A
引脚结构图
具有三个 8位并行端口, 40个引脚。
工作原理
结构和功能
数据端口
有3个 8位
I/O端口(A、B、C),24根I/O线和外设交换数据或通信,C口分两个 4位口。
A、B口用为8位数据I/O口,C可8位,也可两个4位,还常用于配合A口和B口,作为 控制信号
输出、或作为 状态信号
输入。
端口地址
控制字
方式选择控制字
定义 各端口的工作方式。
三种方式:
- 方式0——基本输入输出
- 方式1——选通输入输出
- 方式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 控制字格式
工作过程
- 设置8253的工作方式
- 设置计数初值到初值寄存器
- 第一个CLK 下降沿信号使初值寄存器的内容置入计数寄存器
- 以后每来一个CLK信号,计数寄存器减1
- 减到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
后话
其他的,像串行接口和并行异步这些不是重点,所以不写了。