Upload
others
View
13
Download
0
Embed Size (px)
Citation preview
第七章 输入输出接口技术
本 章 要 点本章讨论主机板上与输入输出有关的逻
辑,重点掌握有关输入输出的基本知识,微
机系统的中断功能及实现。掌握中断控制器
8259的工作要求及其编程;重点掌握可编程并行接口芯片8255A和定时计数器8253/8254的工作原理及其应用编程;掌握输入输出接
口的基本结构;掌握ISA系统总线结构。
7.1 输入输出接口基础
系统总线形成与控制逻
定时
微处理器(C
PU
)
微处理器级总线
存储器RAM/ROM
DBABCB
系统(级)总线
I/O
设1I/O接口电路(1)
DBABCB
I/O接口电路(2)
I/O
设2
DBABCB
一. 微型计算机系统硬件组成
二.接口和接口技术
1.接口
7.1 输入输出接口基础
接口指CPU和外设之间通过系统
总线进行连接的电路部分,是CPU与
外界进行信息交换的中转站。
二.接口和接口技术
2.接口技术
接口技术是研究CPU如何与外部世界
进行最佳耦合与匹配,实现双方高效、
可靠地交换信息的一门技术,是软件、
硬件结合的体现,是微机应用的关键。
7.1 输入输出接口基础
7.1 输入输出接口基础
二.接口和接口技术
3.为什么要用接口电路?
外设是用来实现人机交互的一些机
电设备。外设处理信息的类型、速度、
通信方式与CPU不匹配, 不能直接挂在
总线上,必须通过接口和系统相连。
7.1 输入输出接口基础
并行三态缓冲、锁存
串行
串/并转换
并/串转换并行通信方式
慢解决传送方式快工作速度
数字量三态缓冲、锁存
模拟量
模/数转换(A/D)
数/模转换(D/A)数字量信息类型
外设接口作用CPU
三.接口电路的典型结构
设
备
系
统
总
线
数据端口
命令端口
状态端口地址译码电路
接口电路
片选信号
DB
ABCB
7.1 输入输出接口基础
三.接口电路的典型结构
ϕ从编程角度看,接口内部主要包括
一个或多个CPU可以进行读/写操作
的寄存器,又称为I/O端口。
κ各I/O端口由端口地址区分。
7.1 输入输出接口基础
λ按存放信息的不同,I/O端口可分为三种类型数据端口:用于存放CPU与外设间传送的数据信息
状态端口:用于暂存外设的状态信息
控制端口:用于存放CPU对外设或接口的控制信息,
控制外设或接口的工作方式。
三.接口电路的典型结构
7.1 输入输出接口基础
µ CPU对外设输入/输出的控制,是通过对接
口电路中各I/O端口的读/写操作完成。
(读操作用IN指令,写操作用OUT指令)
三.接口电路的典型结构
7.1 输入输出接口基础
四. I/O端口的编址方式
1.I/O端口的编址方式
端口与存储器分别独立编址
端口与存储器统一编址
ϕ端口与存储器分别独立编址例 Intel的80X86系列、Z80系列
7.1 输入输出接口基础
四. I/O端口的编址
特点:
端口与存储器分别独立编址
端口不占用内存空间
设有专门的 I/O指令对端口进行读写,
对内存操作的指令不能用于I/O端口操作
7.1 输入输出接口基础
I/O空间
例 : 对内存操作MOV [ 00000H ], AL
MOV DL , [BX]
对端口操作
OUT 0000H, AL
IN AL,0010H
内存空间
00000H
FFFFFH0000H
FFFFH
7.1 输入输出接口基础
四. I/O端口的编址
κ端口与存储器统一编址例 Motorola的M6800系列、Intel 51单片机系列
特点:
I/O端口相当于内存的一部分,使内存容量减小;
对I/O端口的读/写与对存储器的读/写相同,
所有可对内存操作的指令对I/O端口均可使用;
指令系统中不专设I/O指令。
7.1 输入输出接口基础
四. I/O端口的编址
内存和I/O共享空间
端口与存储器统一编址
7.1 输入输出接口基础
五. 8088/8086输入/输出指令和时序
8088/8086CPU采用I/O端口与存储器分别
独立编址。
可寻址220= 1M个内存单元内存范围00000 ~FFFFFH内存单元的地址有5种寻址
7.1 输入输出接口基础
8088/8086CPU采用I/O端口与存储器
分别独立编址。
可寻址216= 64 K个I/O端口I/O端口范围0000 ~ FFFFHI/O端口的地址由一个8位二进制数直接
寻址或DX寄存器间接寻址。
五. 8088/8086输入/输出指令和时序
7.1 输入输出接口基础1. 输入指令IN
格式 执行操作
IN AL, port (AL) ← (port 端口)
IN AX, port (AL) ← (port 端口)(AH) ← (port+1 端口)
IN AL, DX (AL) ← ((DX)端口)
IN AX, DX (AL) ← ((DX)端口)(AH) ← ((DX)+1 端口)
port 为端口地址(直接寻址), 大小为0~255 或0~FFH
间接寻址
直接寻址
7.1 输入输出接口基础
例: (1) IN AL,28H若 (28H端口) = 1010 1111B执行后 (AL) = (28H端口) = 0AFH
(2) IN AX,28H若 (28H端口)= 1010 1111B
(29H端口)= 0101 0000B执行后 (AL) = (28H端口) = 0AFH
(AH) = (29H端口) = 50H
(3) MOV DX, 300HIN AL,DX
若 (300H端口)= 69H执行后 (AL) = (300H端口) = 69H
7.1 输入输出接口基础2.输出指令OUT
port为端口地址(直接寻址), 大小为0~255 或0~FFH
格式 执行操作
OUT port, AL (port 端口) ←(AL)
OUT port, AX (port 端口) ←(AL)(port +1 端口) ←(AH)
OUT DX, AL ((DX)端口) ←(AL)
OUT DX, AX ((DX) 端口) ← (AL)((DX)+1 端口) ←(AH)
间接寻址
直接寻址
7.1 输入输出接口基础
例:(1) OUT 21H, AL若(AL)= 1100 1100B执行后 (21H端口) = 0CCH
(2) MOV DX , 21BHOUT DX, AL若(AL)= 1010 0110B执行后 (21BH端口)= (AL) = 0A6H
五. 8088/8086输入/输出指令和时序
7.1 输入输出接口基础输入/输出指令(IN、OUT)特点:
(1) 累加器AL、AX的专用指令对输入指令IN ,目的操作数只能为AL, 或AX
IN AL, 21H √
IN AX, DX √
IN BX, 21H ㄨ
对输出指令OUT ,源操作数只能为AL, 或AX
OUT 20H, AL √
OUT [DX], AX ㄨ
OUT DX, CX ㄨ
7.1 输入输出接口基础
(2)端口地址可为直接寻址方式或间接间接方式
ϕ当端口号在0~FFH,即0~255时,可在指令中直接指定端口号
例 IN AL, 21HOUT 20H, AL
κ当端口号>FFH,即>255时,需把端口号放在DX寄存器中,DX是一个16位寄存器,范围在0~FFFFH之间。
7.1 输入输出接口基础
当端口号在0~FFH,即0~255时,可在指令中直接指定端口号,称双字节指令。
当端口号>FFH,即>255时, 需把端口号放在DX寄存器中,称单字节指令。
例 指令 机器码IN AL, 21H E421 ;两个字节OUT 20H, AL E620IN AL, DX EC ;一个字节OUT DX, AL EE
7.1 输入输出接口基础
(3) 可进行字节或字传送由指令中AL或AX的类型决定
IN AL, 20H ;字节传送IN AX, 20H ;字传送IN AL, DX ;字节传送IN AX, DX ;字传送
OUT 20H, AL ;字节传送OUT 20H, AX ;字传送OUT DX, AL ;字节传送OUT DX, AX ;字传送
(4)输入输出指令的执行不影响任何状态标志。
7.1 输入输出接口基础
3. 输入/输出指令时序当CPU执行IN指令时,进入I/O端口
读周期。当CPU执行OUT指令时,进入I/O端
口写周期。I/O操作总线周期占5个时钟周期的时
间,在T3和T4状态之间插入了一个等待周期TW。
7.1 输入输出接口基础
8088对I/O端口的读、写周期与存储器读、写的过程相似,不同之处:
1.IO/M变高,CPU操作I/O端口。
2.端口的地址信号出现在A15~A0上,
A19~A16全为低电平。
7.1 输入输出接口基础ϕ8088CPU最小模式下, I/O端口读周期时序
T1 T2 T3 T4
IO/M
A15~A8
A19~A16
ALE
RD
DT/R
DEN
CLK
A7 ~ A0 D7 ~ D0AD7~AD0
7.1 输入输出接口基础
T1 T2 T3 T4
IO/M
A15~A8
AD7~AD0
ALE
WR
DT/R
DEN
CLK
A7 ~ A0 D7 ~ D0
A19~A16
②8088CPU最小模式下, I/O端口写周期时序
7.1 输入输出接口基础
(2) IBM PC/XT 系统总线上I/O端口的读、写周期
与读、写存储器的过程相似,不同之处:
1.IOR或IOW变低,CPU操作I/O端口。
2.端口的地址信号出现在A15~A0上,
A19~A16全为低电平。
3. 增加了一个TW等待周期
7.1 输入输出接口基础
IBM PC/XT 总线上I/O端口读周期
D7 ~ D0
IOR
A15~A0
ALE
CLK
T4T1 T2 T3 Tw
7.1 输入输出接口基础
IBM PC/XT 总线上I/O端口写周期
A15~A0
ALE
IOW
CLK
D7 ~ D0
T4T1 T2 T3 Tw
7.1 输入输出接口基础
六. 输入/输出方法
在微型计算机系统中,一般有三种基
本的输入输出方法,这三种方法很好地解
决了CPU与各类外设之间进行数据传送时的
同步问题和速度问题。
7.1 输入输出接口基础
1.程序直接控制传送方式
程序直接控制输入输出方式就是完全
通过执行程序来控制实现CPU与外部设备之
间的数据交换。这种方法又分以下两种:
①无条件输入输出方法
②查询法输入输出方法
六. 输入/输出方法
7.1 输入输出接口基础
①无条件输入输出方法
当CPU任何时刻用IN指令从数据输入端口
读取输入设备数据时,输入设备总有一组有
效数据让CPU读走(即输入设备常处于数据
准备好状态,如开关设备)。这样的设备与
CPU传送数据通常采用无条件输入方法。输
入设备与系统总线之间的接口电路中只包
含一个数据输入端口。
7.1 输入输出接口基础
输入端口
CS
输入设备
译码电路
ABCB
DB系
统
总
线
无条件输入方法接口电路框图
能作为输入端口的常用接口芯片有74LS244、74LS245、8255等。
7.1 输入输出接口基础
当CPU任何时刻用OUT指令通过数据输出
端口向输出设备输出数据时,输出设备总处
于接收数据准备好状态(如LED设备)。这
样的设备与CPU传送数据通常采用无条件输
出方法。输出设备与系统总线之间的接口电
路中只包含一个数据输出端口。
7.1 输入输出接口基础
输出端口
CS
输出设备
译码电路
ABCB
DB系
统
总
线
无条件输出方法接口电路框图
能作为输出端口的常用接口芯片有74LS373、74LS374、8255等。
7.1 输入输出接口基础
②查询法输入输出方法对有些设备,CPU能否与其之间传送数
据,与设备的状态有关。如A/D转换器与CPU之间的数据传送,CPU要读取A/D转换后的数字量信号,必须查询A/D转换器是否转换结束,只有转换结束后,才能读取转换结果。又如CPU向打印机输出数据前,必须查询打印机是否处于接收准备好状态。
这样一些设备与CPU之间数据传送时,常采用查询法。其接口方法如下图所示。
7.1 输入输出接口基础
设
备
系
统
总
线
数据端口
命令端口
状态端口地址译码电路
接口电路
片选信号
DB
ABCB
7.1 输入输出接口基础
查询法程序结构
其它功能
从状态端口读入设备状态
用I/O指令传送数据
其它功能
准备好?N
Y
7.1 输入输出接口基础
查询法输入输出方法的优缺点:
优点:接口电路简单,硬件成本低。
缺点:①为了测试和等待外部设备做好
传送数据的准备,常常要花费大量
的时间,在这段时间内,程序不能
完成其它任务,所以系统的时间利
用率大大降低。
7.1 输入输出接口基础
②CPU在一段时间里只能和一个外部设备
之间传送数据,其它设备只能等待。
③不能发现和处理预先无法估计的错误
和异常现象。
所以这种输入输出方式只适用于CPU数
据处理任务不繁忙,而且外部设备数较少的
情况。
7.1 输入输出接口基础
2.程序中断控制方式
●程序中断就是计算机在运行程序时
出现了特殊的情况,暂时停止执行正在运
行的程序,转到另一段处理特殊情况的程
序,待特殊情况处理程序执行完后,返回
到被暂时停止的程序接着运行。
六. 输入/输出方法
7.1 输入输出接口基础
●中断有可能是运行程序时,CPU内部
出现的某种情况,例如在执行除法指令时,
遇到了除数为零,这种情况出现时将停止
执行下条指令,转去指令一段“除数为零处理”程序段。像这种由于CPU内部操作或
执行某些指令时引起的中断,称为内部中
断。
六. 输入/输出方法
7.1 输入输出接口基础
●中断也有可能发生在CPU外部。在微
处理器的输入输出引脚中,一般都有称为
“中断请求”引脚。在这个引脚上加上有效信号,也将引起CPU停止执行正在运行的
程序,转去执行一段中断处理程序,待中
断处理程序执行完后,返回到被中断的程
序继续运行。这种由于CPU外部信号引起
的程序中断,称为外中断。
六. 输入/输出方法
7.1 输入输出接口基础
●借助于CPU响应外中断请求的能力,
实现输入输出的控制,可以简称为程序中
断式输入输出。
首先,外部设备要有接口逻辑,能把
外部设备的状态信息变成中断请求信号,
加入CPU的中断请求输入端。
六. 输入/输出方法
7.1 输入输出接口基础
例如,对于输入设备,可把“数据准备好”状态变换成中断请求信号;对于输出设备,
可以把“设备已空闲”状态变换成中断请求信号。然后,CPU接受(响应)中断请求,
转入中断处理程序(即中断服务程序),
输入输出数据的传送是在中断处理程序中
用输入输出指令实现的。
六. 输入/输出方法
7.1 输入输出接口基础
8086
CPU
D0
D7
INT
8259A
AD0-AD7
INTR
INTA
NMI
… IR0IR1
IR7
……
中
断
源
程序中断控制方法硬件实现框图:
7.1 输入输出接口基础
程序中断控制方法的特点:
①虽然程序中断功能参与了控制,
但数据的传送仍然要靠在程序中排入
I/O指令完成。这一点和程序直接控
制输入输出方式是相同的。
7.1 输入输出接口基础
②为保证可靠地进行数据输入输出传送,
需要外部设备形成的“已做好传送数据准备”的状态信息,不是用指令输入来测试的,而
是从CPU的中断请求输入端直接加入的。正
是由于CPU具有响应外部中断请求的能力,
避免了用指令查询外部设备状态造成的大量
时间浪费,从而使系统的时间利用率大大提
高了。
7.1 输入输出接口基础
③中断控制输入输出是靠硬件和软
件相配合实现的。与程序直接控制输入
输出相比较,中断控制输入输出大大提
高了CPU的时间利用率,这是这种输入
输出方式的主要优点。但它实现起来相
对复杂。
7.1 输入输出接口基础
3.存储器直接存取方式
●存储器直接存取DMA(Direct Memory Access)
方式的基本思想是在外部设备和存储器之间开辟直接的
数据传送通路,数据传送不是靠执行I/O指令,数据不经
过CPU内的任何寄存器,也就不破坏任何寄存器原来的内
容,而是在存储器和外部设备之间的通路上直接传送数
据。这种I/O方式的实现主要是靠硬件(DMA控制器)实
现的。
六. 输入/输出方法
7.1 输入输出接口基础
DMA控制器通过占用系统总线可实现外
部设备和存储器之间直接数据传送。DMA控
制器通过向8086/8088的HOLD引脚发送一个
高电平信号向CPU 提出占用系统总线的请求
信号,通常在现行总线周期完成后,
8086/8088CPU作出响应,使HLDA引脚变成高
电平,通知DMA控制器可以使用系统总线。
7.1 输入输出接口基础
DMA控制器接收到HLDA引脚的高电
平后,掌握系统总线控制权,进行外部
设备与存储器之间的直接数据传送。当
DMA控制器完成传送任务时,撤销发向
HOLD引脚的总线请求信号,CPU重新获
得对系统总线的控制权。
7.1 输入输出接口基础
需着重指出的是,DMA控制器虽然
通过挪用总线周期实现外部设备与存储
器之间的直接数据传送,提高了整个系
统的能力,但DMA控制器却不能执行指
令,其能力是相当有限的。
7.1 输入输出接口基础
存储器直接存取方式的特点:
优点:由于在数据传送时没有程序和指令介
入,CPU只是暂停一个或几个总线周期的时间,
CPU内各寄存器的内容没有任何改变,所以CPU的
时间利用率比前两种I/O方式大大提高。这种I/O
方式最适合于高速外部设备与存储器之间交换成
批数据的情况。例如,磁盘与存储器之间的数据
传送一般利用这种方式。
7.1 输入输出接口基础
缺点:说没有程序和指令介入仅仅是数
据传送期间,并不意味着DMA输入输出的全
过程都没有程序介入。恰恰相反,数据传送
前的准备工作,例如传送涉及的存储区的开
始地址,要传送的字节数等参数,都是用程
序预置于DMA控制器中的。
7.1 输入输出接口基础
这就是说,DMA的I/O的实现更加复
杂,不仅要有DMA传送数据的控制机构,
还要有程序直接控制的输入输出方式或
中断控制输入输入方式的硬件和软件支
持DMA的实现。
7.1 输入输出接口基础
七. I/O端口地址译码方法
1、译码电路的作用
将CPU执行IN/OUT指令发出的地址信号,“翻译”成欲操作端口的选通信号,解决存储器、I/O
设备与CPU连接时地址总线失配问题。
此信号常作为接口内三态门或锁存器的控制信
号,接通或断开接口数据线与系统的连接。
7.1 输入输出接口基础
七. I/O端口地址译码方法
IN指令时序
A15~A0
IOR
CLK
D7~ D0
T4T1 T2 T3 Tw
7.1 输入输出接口基础
七. I/O端口地址译码方法
A15~A0
CLK
IOW
D7~D0
T4T1 T2 T3 Tw
OUT指令时序
7.1 输入输出接口基础例 一个输入设备的简 单 接 口 电 路
三 态缓冲器
输入设备
数据 线
IOR
地址译码
地址线 200H
00 0
D7~
D0A15
~A0
或
门
PC总线
AEN 0
图中译码电路的作
用:只当A15~A0上
出现200H时,(即
0 0 0 0 0 0 1 0 0 0 0 0
0000B)输出0,其
它地址输出1。
7.1 输入输出接口基础例1 一个输入设备的简 单 接 口电路
三 态缓冲器
输入设备
数据 线
IOR
地址译码
地址线 200H
00 0
D7~
D0A15
~A0
或
门
PC总线
AEN 0
该电路在CPU执行指令:
MOV DX, 200HIN AL, DX
将输入设备的数据读入CPU内AL中.
7.1 输入输出接口基础
七. I/O端口地址译码方法
●输入接口电路设计时,硬件上要保证:
只有CPU从该端口用 IN指令读数据时,用作
该端口的三态门才处于工作状态,使输入设备的
数据送上系统总线一侧,而CPU执行其它指令时, 三态门均处于高阻状态, 使输入设备的数据线与系
统总线侧断开。
7.1 输入输出接口基础例2 一个输出设备的简单接口电路
输 出锁存器
输出设备
数据 线
IOW
地址译码
地址线 300H
00 0
D7~
D0A15
~A0
或
门
PC总线
AEN 0
图中译码电路的
作用只当A15~A0上出现300H时,(即 0 0 0 0 0 0 1 1 0000 0000B)输出
0 。
7.1 输入输出接口基础例2 一个输出设备的简单接口电路
输 出锁存器
输出设备
数据 线
IOW
地址译码
地址线 300H
00 0
D7~
D0A15
~A0
或
门
PC总线
AEN 0
该电路在CPU执行指令:
MOV DX, 300HOUT DX, AL
将CPU内AL中的数据送至输出锁存器.
7.1 输入输出接口基础
●设计输出接口电路时,在硬件上要保证:
只有CPU向该端口写数据时,输出锁存
器才处于工作状态,其输出随输入变化,
并在写控制信号IOW变高的瞬间,将输出的
数据(即AL的内容)锁存于锁存器的输出端。
七. I/O端口地址译码方法
7.1 输入输出接口基础
七. I/O端口地址译码方法
2、译码电路的构成I/O地址译码和存储器地址译码一样,可用门
电路、译码器或者两者的组合实现,不同之处是参加译码的控制信号不同。
译码器可用:
双2-4线译码器 74LS1553-8线译码器 74LS1384-16线译码器 74LS154 等
7.1 输入输出接口基础
3、设计译码电路的方法
七. I/O端口地址译码方法
I/O地址译码方法和存储器地址译码方法一样,
也分全地址译码和部分地址译码两种方法。
不管采用哪种译码方法,译码时,都是根据给定的端口地址确定地址信号A15~A0的取值,用门电路、
译码器或两者组合实现满足此取值情况的电路。
7.1 输入输出接口基础
例 1 在PC系统总线上设计一个输出端口,分配给该端口的地址为218H,试画出该端口的译码电路。
七. I/O端口地址译码方法
①地址分析
对应218H端口的地址信号为(取A9~A0):
A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 (地址信号)
1 0 0 0 0 1 1 0 0 0 B
2 1 8 H
7.1 输入输出接口基础②译码电路设计
方法一:用门电路实现218H的I/O地址译码
D0 ~ D7
0
A9A8A7A6A5A4A3A2A1A0
AENIOW
D0~
D7100001100000
& CS
PC系统总线
7.1 输入输出接口基础
②译码电路设计
方法二用译码器、门电路组合实现218H的地址译码 74LS138
218HA Y0
B Y1C Y2 G1 Y3
Y4 G2A Y5
Y6G2B Y7
000011000010
&
A0A1A2
AENA3A4A5A6A7A8A9
IOW
CS
D0~
D7D0 ~ D7
PC系统总线
●
7.1 输入输出接口基础
例 2 在PC系统总线上设计一个输入端口,分配给该端口的地址为218H,试画出该端口的译码电路。
七. I/O端口地址译码方法
①地址分析
对应218H端口的地址信号为(取A9~A0):
A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 (地址信号)
1 0 0 0 0 1 1 0 0 0 B
2 1 8 H
7.1 输入输出接口基础②译码电路设计
方法一:用门电路实现218H的I/O地址译码
D0 ~ D7
0
A9A8A7A6A5A4A3A2A1A0
AENIOR
D0~
D7100001100000
& CS
PC系统总线
7.1 输入输出接口基础
②译码电路设计
方法二用译码器、门电路组合实现218H的地址译码 74LS138
218HA Y0
B Y1C Y2 G1 Y3
Y4 G2A Y5
Y6G2B Y7
000011000010
&
A0A1A2
AENA3A4A5A6A7A8A9
IOR
CS
D0~
D7D0 ~ D7
PC系统总线
●
7.1 输入输出接口基础
74LS138
218HA Y0
B Y1C Y2 G1 Y3
Y4 G2A Y5
Y6G2B Y7&
A0A1A2
AENA3A4A5A6A7A8A9
IOR
CS
D0~
D7D0 ~ D7
PC系统总线
●
思考1:Y2 ~ Y7 译出的端
口地址各
是多少?
7.1 输入输出接口基础
74LS138
218HA Y0
B Y1C Y2 G1 Y3
Y4 G2A Y5
Y6G2B Y7&
A0A1A2
AENA3A4A5A6A7A8A9
IOR
CS
D0~
D7D0 ~ D7
PC系统总线
●
思考2:若A9不
参加译码, Y1 ~ Y7 译出的端
口地址各
是多少?
7.1 输入输出接口基础
八.简单的I/O接口电路设计
例 : 在PC/XT系统总线上设计一个输出端口,分配给该端口的地址为280H,输出接口芯片用74LS3748D数据锁存器,输出设备为8个LED发光二极管。
1.试画出接口电路图。2.编写将LED0~LED3灯点亮、LED4~LED7灯熄灭的程序。3.编写使LED0~LED7间隔1秒循环点亮的程序 (假如
DELAY1S延时子程序可调用)。
74LS374-8D数据锁存器芯片介绍
D0 Q0D7 Q7
OE
CP
功能表
OE CP D Q0 0 00 1 10 × × Q0(保持)1 × × 高阻
OE 输出允许控制
CP (锁存)控制
:数据输入端
数据输出端
Χ原理图:
三.8086/8088CPU工作于最小方式下引脚定义与系统总线结构
7.1 输入输出接口基础
①确定系统总线及设计此电路所需的总线信号
PC/XT系统总线
D7-D0
A19-A10
A9-A0
MEMW
MEMR
IOW
IOR
AEN
1.试画出接口电路图。
7.1 输入输出接口基础
②地址分析
对应280H端口的地址信号为(取A9~A0):
A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 (地址信号)
1 0 1 0 0 0 0 0 0 0 B
2 8 0 H
7.1 输入输出接口基础
③译码电路设计(用全地址译码方法)A8A6A5A4A3A2
A9
AEN
A7
A1A0
IOW
选通信号
作74LS374的CP选通信号
7.1 输入输出接口基础
④接口电路设计
●
●
●
●
●
●
●
●
●
7.1 输入输出接口基础
2.编写将LED0~LED3灯点亮、LED4~LED7灯熄灭的程序。
MOV DX , 280HMOV AL , 00001111BOUT DX , AL
八.简单的I/O接口电路设计
7.1 输入输出接口基础
八.简单的I/O接口电路设计
3.编写使LED0~LED7间隔1秒循环点亮的程序(假如 DELAY1S延时子程序可调用)。
MOV DX , 280HMOV AL , 00000001B
NEXT: OUT DX , ALCALL DELAY1SROL AL , 1JMP NEXT
……
作业
P3121.3.4.
7.2 中断系统
一、微处理器的中断功能
中断是指CPU暂停正在执行的程序,转
去执行处理中断事件的中断服务程序,待执
行完中断服务程序再返回到原被中断的程序
继续执行。
通常称引起中断的事件为中断源。
一、微处理器的中断功能
1、中断的种类和中断类型号:
从大方面分,中断可分为两大类:外部硬中断和内部中断。
可屏蔽中断
外部硬中断 非可屏蔽中断
中断 陷阱中断
异常中断 故障中断
内部中断 终止
软中断
一、微处理器的中断功能
• 外部硬中断:是微处理器外部事件发生,产生中断请求信号,中断请求信号再通过微处理器芯片上的接受中断请求信号的引脚,加入微处理器而出现的中断。
• CPU芯片上有两个引脚用于接受外部中断请求信号:NMI和INTR,分别接受非可屏蔽中断请求和可屏蔽中断请求。
• “可屏蔽”和“非可屏蔽”是指CPU的PSW寄存器中的IF控制位对中断响应是否存在控制作用。
外中断
外中断
• 可屏蔽中断的中断请求信号在INTR端加入。• 可屏蔽中断是受IF位控制的中断:若IF位为1,
CPU将能响应可屏蔽中断的中断请求,称为开中断状态,置IF为1的指令STI称为开中断指令;若IF为0,就关闭CPU响应可屏蔽中断的中断求,称为关中断状态,清除IF为0的指令CLI称为关中断指令。
• 常规外部设备(键盘、打印机、串行异步通信接口),自行开发的接口设备或专用接口等,利用中断机制和CPU交换信息,都利用可屏蔽中断。
一、微处理器的中断功能
外中断
• 非屏蔽中断NMI用来处理存储器奇偶校验出错等对整个系统来说之名的异常情况,个人用户通常不介入NMI的使用。
一、微处理器的中断功能
• 内部中断:中断源在CPU内部。由于CPU主要的工作就是执行程序中的指令,因此内部中断都将涉及到指令的执行。
• 内部中断分为:异常中断和软中断两类。• 软中断:是中断指令INT执行时所产生的中软中断同其它中断一样,将转去执行中断服务子程序。
内中断
内中断
•问题:INT指令是作为指令排入程序中的,那
么INT的位置是编程者设定的,执行INT就是要调用一个子程序。为什么不把这个子程序直接排在INT指令的位置上或者用CALL指令调用这个子程序呢?
用软中断到底干什么?
内中断
•回答:软中断是用汇编语言编程时,用户的应用程
序调用系统软件中的子程序的主要方法。系统软件特别在ROM BIOS和常驻内存的操作系统中,有设计好的子程序可作为系统资源供用户使用。在高级语言编程时,这些系统子程序常以应用程序接口函数的形式被调用。在汇编语言编程时,INT指令的作用同应用接口函数的作用一样,用于调用系统资源。
• INT 21H指令的功能就是用软中断来实现应用程序调用系统程序。
• 异常中断:分为故障中断、陷阱中断(或叫自陷中断)和终止三种。
• 故障中断:在执行之前已经检测出不具备正确执行指令的条件,从而引起的中断。例如,除法指令执行前已经检测出除数为零或由于除数太小不能得到合理的商值时,将产生故障中断,通知用户出现了除法错误(divide error)。特点:中断服务程序返回后重新执行被中断的指令。
• 陷阱中断:在指令执行时,由于满足了陷阱条件引起中断,即本条指令已经执行结束,在中断返回时,不重新执行本条指令而是执行下一条指令。例如,当将PSW中的TF控制标志位置1后(设置了陷阱条件),CPU每执行完一条指令都将产生一次中断。用DEBUG程序调试程序时,执行有断点的G命令就利用了这种中断。
内中断
内中断
• 终止:不能准确确定引起异常条件的指令位置。终止将造成停机。例如,在进入某种异常中断处理程序后又出现另一种异常条件,引发双重异常中断,若再发生第3次异常中断条件,再继续操作无意义,进入停机状态。
一、微处理器的中断功能
中断类型号
• 不同的中断用中断类型号来区别。用固定的中断类型号来表示每种中断,发生中断时,借助中断类型号使程序转入相应的中断服务程序。
• 中断类型号的范围为0~255,即最多256个。其中,由中断指令产生的软中断,其中断类型号由指令本身给出。INT n指令中的n即是中断类型号。例如,INT 21H中断类型号为21H。可屏蔽中断的中断类型号由外部中断控制逻辑提供,再CPU响应中断时从外部输入CPU。
中断类型号
表中给出80x86非可屏蔽中断NMI和内部中断的中断类型号。
中断名称 类型号 说明
除法错 0 除数为0而发生
单步中断 1 TF=1时每执行完一条指令产生NMI 2 NMI引脚加有效信号产生
断点中断 3 执行单字节指令INT产生
溢出中断 4 执行单字节指令INTO时
边界范围异常 5 执行BOUND指令时
操作码非法 6 遇到无定义的指令时产生
中断名称 类型号 说明
无协处理器 7 执行到与协处理器有关的指令无协处理器时
双重故障 8 进入10、11、12、13后又出现异常
协处理器越段 9 执行到与协处理器有关的指令,某些字超越段范围
无效TSS 10 任务切换时,TSS不正确产生
段不在主存 11 要访问的段中的P位为0而产生
堆栈异常 12 访问堆栈越界一般保护异常 13 处理器检测出违反保护规则时产生
页面故障 14 页功能有效时,访问不足主存的页协处理器异常 16 浮点运算出错对准检查异常 17 字操作时访问奇地址,双字访问非
4的倍数地址
一、微处理器的中断功能
2、中断向量表和中断描述符表:
如何获得中断服务程序的入口地址?一是依据每种中断有自己的中断类型号;再者与中断类型号相适应,在实模式下有中断向量表,在保护模式下有中断描述符表IDT。
• 存储器地址最低的1024单元。即0000H~03FFH,专用于存储各种中断服务程序的入口地址。
• 存储器地址最低的1024个单元共可存256种中断向量,这个专用于存储中断向量的存储区称为中断向量表。
• 从00000H开始,每4个单元存放一个中断服务程序入口。其中前两个单元的16位是入口地址的段内偏移部分,后两个单元的16位是入口地址的段地址。
• 程序运行转入中断服务程序时,入口地址的段内偏移部分装入IP中,入口地址的段地址装入CS。中断服务程序的这32位以逻辑地址形式表示的入口地址称为中断向量或中断指针。
中断向量表
中断向量表
• 中断类型号与中断向量表的关系:中断向量在中断向量表中的存储顺序是以中断类型号为索引的。
• 中断类型号乘以4就是该种中断向量在中断向量表中的开始地址。例如,中断类型号为0,中断向量在向量表的00000H~00003H 地址;中断类型号为1,中断向量在向量表的00004H~00007H 地址;...中断类型号为255时,中断向量在向量表的003FCH~003FFH 地址。
二、中断响应和返回操作过程
中断响应的操作过程,对于可屏蔽中
断、非可屏蔽中断和内部中断是不相同的。
二、中断响应和返回操作过程
1、外部可屏蔽中断的响应操作:
在IF位为1(即开中断)情况下,从INTR端加入中断请求信号开始,到进入中断服务程序为止经过的一系列操作,称为可屏蔽中断的响应过程。
二、中断响应和返回操作过程
1、外部可屏蔽中断的响应操作:
响应过程包括以下操作:
① 等待当前指令结束,然后进入中断响应周期。即在进入中断响应周期之前必须执行完当前指令。
② 从CPU外部的中断控制逻辑获得中断类型号。如8259。
③ 当前的PSW、CS和IP的内容依次压入堆栈。即保存了断点的状态和断点的地址,以便返回时恢复。
④ 清除PSW中的IF位和TF位为0。清除IF位为0即关中断,中断服务程序中排有STI指令开中断,或者服务程序结束时返回指令IRET后才恢复开中断状态。
二、中断响应和返回操作过程
1、外部可屏蔽中断的响应操作:
⑤ 把中断服务程序的入口地址置入IP和CS,即把地址为4×n和4×n+1的两个单元的16为作为中断服务程序入口的偏移地址置入IP,把地址为4×n+2和4×n+3的两个单元的16位数作为服务程序的段地址置入CS。
二、中断响应和返回操作过程
2、非可屏蔽中断的响应过程:非可屏蔽中断请求在NMI端加入。CPU对其
响应不受IF位的控制。• 非可屏蔽中断同可屏蔽中断一样,要等待当前指令执行结束。
• 若同时出现了非可屏蔽中断请求和可屏蔽中断请求,CPU将优先响应非可屏蔽中断。
• 非可屏蔽中断的中断类型号为2,是微处理器硬件决定的。
• 不需要从外部取回一个字节的中断类型号操作。
二、中断响应和返回操作过程
3、内部中断的响应操作:内部中断的中断响应操作的共同点:
• 中断类型号是指令码给定的或是处理器硬件决定的,不需要从外部逻辑输入;
• 没有包括INTA信号的响应周期;• 不受IF位的控制,但单步中断受TF位控制;• 除单步中断之外,其它内部中断都比外部中断优先响应。
• CPU对中断响应的优先次序为:除数为0中断、INT N和INTO指令的优先级最高,NMI次之,INTR再次,单步中断优先级最低。
二、中断响应和返回操作过程
4、中断返回:中断的返回,无论内部中断或外部中断,
都是由中断服务器程序的末尾设置IRET指令实现的。
• IRET指令的操作是恢复断点处的地址和PSW的内容,即依次从堆栈中弹出保存的IP、CS和PSW值,使被中断了的程序继续执行。
三、中断优先权
除单步中断外的内部所有中断的优先权>外部中断
对于外部中断NMI>INTR>单步中断
例:设计一个INT 40H软中断指令(中断服务程序),完成回车、换行。
;建立中断向量表PUSH DSMOV AX, 0MOV DS, AXMOV BX, 40H*4MOV AX, OFFSET INTRUPMOV [BX], AXMOV AX, SEG INTRUP
INTRUP: MOV AH, 02HMOV DL, 0DHINT 21HMOV AH, 02HMOV DL, 0AHINT 21HIRETMOV [BX]+2,AXPOP DS
利用DOS功能调用建立的中断向量表:
PUSH DSMOV AX, SEG INTRUPMOV DS, AXMOV DX, OFFSET INTRUPMOV AL, 40H; AL NMOV AH, 25HINT 21HPOP DS
INT 40H
……
四、外中断控制逻辑和中断控制芯片8259A
对于微处理器,与可屏蔽中断有关的两个引脚是INTR中断请求信号,用于接受外部中断请求;INTA中断响应信号输出引脚,用于指明对中断请求的响应情况。
四、外中断控制逻辑和中断控制芯片8259A
1、中断控制器8259A的外部特性:
D0 IR0~ ~D7 IR7
8259
INT SP/EN
INTA
WR CAS0
RD CAS1
CS A0 CAS2
外部可屏蔽中断请求输入端可以分别与8个不同外设的中断请
求连接
INTR
INTA双向控制信号
3条双向级联控制信号;当8259被指定为主控芯片时,为输出信号线;当8259为从属芯片时,为输入信号线,分别连接来自主控芯片的CAS0~CAS2。
1、中断控制器8259A的外部特性:
• A0为地址线;• 双向控制信号SP/EN具有双重功能:
当8259工作在缓冲模式时,为输出信号,用于控制数据总线缓冲器。
当工作在非缓冲模式时,该引线为输入,若输入为高电平,则指定此8259为主控芯片;若输入为低电平,则指定8259为从属芯片。
• IR0~IR7是低电平到高电平的上升沿有效,还是高电平本身有效,将在初始化时用指令设定。
2、8259的内部结构:
服务
寄存器
ISR
优先级
分析器
中断请求
寄存器IRR
中断屏蔽寄存器IMROCW1ICW1
OCW2
OCW3
ICW2
ICW3
ICW4
2、8259的内部结构:
• 中断请求寄存器IRR用来寄存有中断请求的所有中断级,每级对应一位,有中断请求时对应位置1。
• 服务寄存器ISR寄存正在服务的所有中断级。• 优先分析器能把IRR内所有为1的位按优先规进行分析,确定哪一级为最高级。
• 内部的7个寄存器被分为两组:第1组4个寄存器寄存初始化命令字ICW1~ICW4,一般在系统加电后程序对系统初始化阶段设置的,在以后的操作中基本保持不变;第2组3个寄存器寄存操作命令字OCW1~OCW3。
3、8259的编程:
8259的编程分为两个阶段:初始化阶段和操作阶段。
• 初始化阶段应该在系统加电或复位后由初始化程序完成。用输出指令向8259置入初始化命令。
• 操作阶段,用输出指令向8259发适当的操作命令字,实现对8259的状态、中断方式和过程的控制。
3、8259的编程:
(1)初始化编程:• 初始化编程的任务:
第一、设定中断请求信号的有效形式,即高电平有效,还是低电平向高电平跳变的上升沿有效;
第二、是单片工作方式还是级联工作方式;
第三、设定8259管理的中断类型号基值,即0级中断IR0对应的中断类型号,当中断请求响应时,得到中断向量表中相应的地址;
第四、设定各级的优先排序规则;
第五、设定一次中断处理结束时的结束操作规则。
通过向8259发初始化命令字ICW实现。
3、8259的编程:(1)初始化编程:① 初始化命令字ICW1:格式:
D7 D6 D5 D4 D3 D2 D1 D0× × × 1 LTIM 0 SNGL IC4
其中:×表示无关位,可以是任意值;
LTIM位为1,表示有效的中断请求信号是高电平,为0是低电平向高电平跳变的上升沿;
SNGL位为1表示在后面程序还要设置初始化命令字ICW4,为0不再设置ICW4;设置ICW1需要I/O地址为A0=0。发送的命令字的位4为1是ICW1的特征标志。
3、8259的编程:(1)初始化编程:② 初始化命令字ICW2:用于设置中断类型号基值。格式:
D7 D6 D5 D4 D3 D2 D1 D0T7 T6 T5 T4 T3 0 0 0
其中:低3位必须为0;若两片8259A的中断类型号基值分别为08H和70H,ICW2
的高5位T7~T3分别为00001和01110。设置ICW2的地址为A0=1
3、8259的编程:
② 初始化命令字ICW2说明:
• 外中断的中断类型号是在中断需要期间由8259提供的;
• 8259是根据初始化过程中用ICW2命令置入的中断类型号基值来提供中断类型号。
• IR0对应的中断类型号是中断类型号基值,一定能被8整除的正整数。
3、8259的编程:
③ 初始化命令字ICW3:专为级联而设置的。当只有一片8259A(即设ICW1的D1位为1),则不设ICW3;当多于一片时,将主片和从片的ICW1中D1位设置为0;且在设置ICW2之后向A0=1地址设置的才是ICW3。
ICW3(主控)
1:相应的IR接从属的82590:相应的IR未接从属的8259
3、8259的编程:ICW3(从属)
0 0 0 0 0
该3位的编码对应从属8259接主控IR的编号
例如:从属芯片接到主控芯片的IR2上,则从属芯片的ICW3对应的是02H;主片中设置的ICW3为00000100。
3、8259的编程:
④ 初始化命令字ICW4:只有ICW1的IC4位为1才能设置ICW4。
格式:
D7 D6 D5 D4 D3 D2 D1 D00 0 0 SFNM BUF M/S AEOI µPM
1-8086/8088方式0-8080/8085方式
1-中断自动结束0-中断正常结束
0 ×非缓冲方式1 0 缓冲方式/从片1 1缓冲方式/主片
1-特殊全嵌套方法0-正常全嵌套方法
8259初始化命令字设置次序:3、8259的编程:
ICW1
ICW2
是级联?SNGL=1?
ICW3
IC4=1?
Y
ICW4
N
Y
N
地址A0=0 (20H)
A0=1 (21H)
A0=1 (21H)
A0=1 (21H)
3、8259的编程:
(2)操作过程编程:需要向8259发各种操作命令字,由命令字决定中断方式,管理中断响应次序。
8259可控的中断方式有:全嵌套方式、循环优先方特殊的屏蔽方式和查询方式。
① 操作命令字OCW1:用于设置屏蔽状态。用输出指令OCW1发送到IMR。
• 中断屏蔽寄存器IMR中为1 的位对应的中断级的输入线IR处于被屏蔽状态。
• 被屏蔽的中断级请求不能使8259的INT输出端产生有效的请求信号。
• 设置OCW1的I/O地址是A0=1
OCW1
D7 D6 D5 D4 D3 D2 D1 D0
1:屏蔽响应的IR0:允许相应的IR中断
例如:将42H写入OCW1,则IR6的IR1被屏蔽,而IR0、IR2、IR3、IR4、IR5和IR7允许中断。
② OCW2:设置OCW2地址的是A0=0 。
R SL EOI 0 0 L2 L1 L0
指定中断级0 0 0 00 0 1 1...1 1 1 7
R=0 固定优先权R=1 循环优先权
SL=0 表明L2、L1、LO无意义SL=1 表明L2、L1、LO有意义
EOI=1 表示撤消中断EOI=0 表示不撤消中断
③ OCW3:用于管理特殊的屏蔽方式和查询方法。设置OCW3地址的是A0=0 。
0 ESMM SMM 0 1 P RR RIS
1.I/O端口的编址方式一、微处理器的中断功能一、微处理器的中断功能2、8259的内部结构:3、8259的编程:3、8259的编程:3、8259的编程:3、8259的编程:3、8259的编程:3、8259的编程:3、8259的编程:3、8259的编程:3、8259的编程:3、8259的编程: