微机原理与接口技术 第七章 常用接口技术(河北专升本计算机)

一、并行和串行通信

1. 并行通信

(1)数据的并行传送方式是以字节或字为单位传送
(2)并行通信通常用在传输距离近,数据率高的场合
(3)多位二进制同时由原端发向目的地。

如:微机与并行接口打印机、磁盘驱动器
系统板上各部件之间,
接口电路板上各部件之间

2.串行通信

(1)数据的串行传送方式是以位为的单位传送
(2)通信电线路的连接方式:单工、半双工、全双工
(3)串行通信协议分为:异步通信和同步通信
(4)异步串行通信的数据帧的格式:
传送数据的基本单位是字符,最优先传送的1位起始位, 低电平信号,随后5 ~ 8位数据位,1位奇偶校验位,最后1 ~ 2位高电平的停止位。

例:设每个字符对应1位起始位,7位信息位,1位奇偶校验位,1位停止位,若波特率为1200波特,则每秒传输的最大字符数为 ___ 120 ___ 个
1200 ÷ 10 = 120 1200\div 10=120 1200÷10=120

(5)异步串行通信的数据传输率
波特率(波特bit/s):每秒能传输的数据的二进制位数。
串行异步通信中,收发双方的波特率必须相同,只有波特率一致的情况下才能保证接收方和发送方获取同样的数据。

波 特 因 子 = 接 收 器 或 发 送 器 的 频 率 数 据 传 输 的 波 特 率 \pmb{波特因子=\frac{接收器或发送器的频率}{数据传输的波特率}} =波特因子==

例:如果9600波特传送一个7位ASCII字符并带1位奇偶校验位和2位停止位,写出该字符的传输速率。
1(起始位)+7+1+2=11
字符的传输速率 9600 11 = 872 字 符 / s \frac{9600}{11}=872字符/s 119600=872/s

(6)8251可编程串行接口芯片
支持异步和同步传送

二、8255(可编程并行接口芯片)的结构、功能和应用

1.结构

在这里插入图片描述

2. 特点

内 部 逻 辑 { A 组 控 制 { A 端 口 C 端 口 的 高 四 位 B 组 控 制 { B 端 口 C 端 口 的 低 四 位 内部逻辑\begin{cases} A组控制 \begin{cases} A端口\\C端口的高四位\\ \end{cases}\\ B组控制 \begin{cases} B端口\\C端口的低四位 \end{cases} \end{cases} A{ACB{BC

3 个 8 位 I / O 数 据 端 口 { P A P B P C 3个8位I/O数据端口\begin{cases} PA\\PB\\PC\end{cases} 38I/OPAPBPC
2 位 地 址 线 { A 1 A 0 2位地址线\begin{cases}A_1\\A_0 \end{cases} 2线{A1A0
4 个 I / O 端 口 地 址 { 0   0 → 端 口 A 0   1 → 端 口 B 1   0 → 端 口 C 1   1 → 控 制 口 ( 前 面 是 A 1 , 后 面 是 A 0 ) 4个I/O端口地址\begin{cases} 0\ 0\rightarrow 端口A\\ 0\ 1\rightarrow 端口B\\ 1\ 0\rightarrow 端口C\\ 1\ 1\rightarrow 控制口\\ (前面是A1,后面是A0) \end{cases} 4I/O0 0A0 1B1 0C1 1A1A0
1. 8255A可以无条件方式、查询方式和中断方式完成CPU与外设的数据交换。
2. 以无条件方式工作时,端口A、B和C都可以作为数据输入/输出端口。
3. 以查询或中断方式工作时,A口与B口可以作为数据输入/输出端口,C口作为握手联络信号,负责输出控制信息或输入状态信息。

3 种 工 作 方 式 : { 方 式 0 ( 基 本 输 入 输 出 方 式 ) { 适 用 于 无 条 件 传 送 和 条 件 传 送 通 常 不 用 联 络 信 号 或 不 适 用 固 定 的 联 络 信 号 可 以 有 16 种 组 合 进 行 数 据 的 输 入 / 输 出 直 接 由 C P U 执 行 I N / O U T 完 成 数 据 传 送 方 式 1 ( 选 通 输 入 输 出 方 式 ) { 适 用 于 条 件 传 送 和 中 断 方 式 通 常 使 用 固 定 的 联 络 信 号 一 般 作 中 断 方 式 输 入 / 输 出 输 入 : S T B ‾ 与 I B F ‾ 构 成 了 一 对 应 答 联 络 信 号 。 输 出 : O B F ‾ 与 A C K ‾ 构 成 了 一 对 应 答 联 络 信 号 A 口 和 B 口 通 常 用 于 I / O 数 据 传 送 , C 口 用 作 A 口 和 B 口 的 联 络 线 , 以 中 断 方 式 传 送 数 据 。 方 式 2 ( 双 向 选 通 传 送 方 式 ) { 适 用 于 条 件 传 送 和 中 断 方 式 只 有 端 口 A 可 以 工 作 在 方 式 2 P A 7 ~ P A 0 为 双 向 I / O 总 线 。 3种工作方式:\begin{cases}方式0(基本输入输出方式) \begin{cases} 适用于\pmb{无条件传送}和\pmb{条件传送}\\ 通常不用联络信号或不适用固定的联络信号\\ 可以有16种组合进行数据的输入/输出\\ 直接由CPU执行IN/OUT完成数据传送\\ \end{cases}\\ 方式1(选通输入输出方式) \begin{cases} 适用于\pmb{条件传送}和\pmb{中断方式}\\ 通常使用固定的联络信号\\ 一般作\pmb{中断方式输入/输出}\\ \pmb{输入}:\overline{STB}与\overline{IBF}构成了一对应答联络信号。\\ \pmb{输出}:\overline{OBF}与\overline{ACK}构成了一对应答联络信号\\ A口和B口通常用于I/O数据传送,C口用作A口和B口的联络线,以中断方式传送数据。\\ \end{cases}\\ 方式2(\pmb{双向}选通传送方式) \begin{cases} 适用于\pmb{条件传送}和\pmb{中断方式}\\ \pmb{只有端口A可以工作在方式2}\\ PA7~PA0为双向I/O总线。 \end{cases} \end{cases} 30无条件传送条件传送16/CPUIN/OUT1条件传送中断方式使/中断方式输入/输出/输入STBIBF输出OBFACKABI/OCAB线2双向条件传送中断方式A2只有端口A可以工作在方式2A2PA7PA0I/O线

方 式 1 输 入 : 方式1输入: 1
S T B ‾ \overline{STB} STB:选通输入,是由输入外设送来的输入信号。
I B F IBF IBF:输入缓冲器满,高电平有效。表示数据已送入8255A的输入锁存器,它由 S T B ‾ \overline{STB} STB信号的下降沿置 位,由信号的上升沿使其复位。
I N T R INTR INTR:中断请求信号,高电平有效。由8255A输出,向单片机发中断请求。
I N T E   A INTE\ A INTE A:允许端口A输入中断,由 P C 4 PC_4 PC4控制。
I N T E   B INTE\ B INTE B:允许端口B输入中断,由 P C 2 PC_2 PC2控制。

方 式 1 输 出 : 方式1输出: 1
O B F ‾ \overline{OBF} OBF:输出缓冲器满信号,8255A给外设的联络信号,外设可以将数据取走。
A C K ‾ \overline{ACK} ACK:外设的响应信号,外设已将数据取走。
I N T R ‾ \overline{INTR} INTR:中断请求信号。表示该数据已被外设取走,请求单片机继续输出下一个数据。
I N T E   A INTE\ A INTE A:允许端口A输出中断,由 P C 6 PC_6 PC6控制。
I N T E   B INTE\ B INTE B:允许端口B输出中断,由 P C 2 PC_2 PC2控制。

方 式 2 输 入 方式2输入 2 P A 7 ~ P A 0 PA_7~PA_0 PA7PA0 S T B A ‾ \overline{STBA} STBA I B F A ‾ \overline{IBFA} IBFA控制,其工作过程和方式1输入时相同;
方 式 2 输 出 方式2输出 2 P A 7 ~ P A 0 PA_7~PA_0 PA7PA0 O B F A ‾ \overline{OBFA} OBFA A C K A ‾ \overline{ACKA} ACKA控制,其工作过程和方式1输出时相同。

2 个 控 制 字 : { 方 式 控 制 字 ( 控 制 端 口 写 入 ) 端 口 C 的 按 位 复 位 / 置 位 字 2个控制字:\begin{cases}方式控制字(\pmb{控制端口}写入)\\ 端口C的按位复位/置位字\end{cases} 2{控制端口C/
方 式 控 制 字 ( 控 制 端 口 写 入 ) : 方式控制字(控制端口写入):

D 7 D_7 D7 D 6 D_6 D6 D 5 D_5 D5 D 4 D_4 D4 D 3 D_3 D3 D 2 D_2 D2 D 1 D_1 D1 D 0 D_0 D0
1

D 7 : 特 征 位 ( 永 远 是 1 ) D_7:特征位(永远是1) D7:1
D 6   D 5 { 0   0 : 端 口 A 方 式 0 0   1 : 端 口 A 方 式 1 1   0 ( x ) : 端 口 A 方 式 2 D_6\ D_5\begin{cases} 0\ 0:端口A方式0\\ 0\ 1:端口A方式1\\ 1\ 0(x):端口A方式2 \end{cases} D6 D50 0:A00 1:A11 0x:A2
D 4 { 0 : 端 口 A 输 出 1 : 端 口 A 输 入 D_4\begin{cases} 0:端口A输出\\ 1:端口A输入 \end{cases} D4{0A1A
D 3 { 0 : 端 口 C 高 四 位 ( P C 7 ∼ P C 4 ) 输 出 1 : 端 口 C 高 四 位 ( P C 7 ∼ P C 4 ) 输 入 D_3\begin{cases} 0:端口C高四位(PC_7\sim PC_4)输出\\ 1:端口C高四位(PC_7\sim PC_4)输入 \end{cases} D3{0CPC7PC41CPC7PC4
D 2 { 0 : 端 口 B 方 式 0 1 : 端 口 B 方 式 1 D_2\begin{cases} 0:端口B方式0\\ 1:端口B方式1 \end{cases} D2{0B01B1
D 1 { 0 : 端 口 B 输 出 1 : 端 口 B 输 入 D_1\begin{cases} 0:端口B输出\\ 1:端口B输入 \end{cases} D1{0B1B
D 0 { 0 : 端 口 C 低 四 位 ( P C 3 ∼ P C 0 ) 输 出 1 : 端 口 C 低 四 位 ( P C 3 ∼ P C 0 ) 输 入 D_0\begin{cases} 0:端口C低四位(PC_3\sim PC_0)输出\\ 1:端口C低四位(PC_3\sim PC_0)输入 \end{cases} D0{0CPC3PC01CPC3PC0

端 口 C 复 位 / 置 位 字 : 端口C复位/置位字: C/

D 7 D_7 D7 D 6 D_6 D6 D 5 D_5 D5 D 4 D_4 D4 D 3 D_3 D3 D 2 D_2 D2 D 1 D_1 D1 D 0 D_0 D0
00(x)0(x)0(x)

D 7 : 特 征 位 ( 永 远 是 0 ) D_7:特征位(永远是0) D70
D 6   D 5   D 4 : 无 用 ( 都 写 0 ) D_6\ D_5\ D_4:无用(都写0) D6 D5 D40
D 3   D 2   D 1 { 0   0   0 : P C 0 0   0   1 : P C 1 . . . 1   1   1 : P C 7 D_3\ D_2\ D_1\begin{cases} 0\ 0 \ 0:PC_0\\ 0\ 0\ 1:PC_1\\ .\\ .\\ .\\ 1\ 1\ 1:PC_7 \end{cases} D3 D2 D10 0 0PC00 0 1:PC1...1 1 1:PC7
D 0 : { 0 : 复 位 1 : 置 位 D_0:\begin{cases}0:复位\\ 1:置位 \end{cases} D0{01

3. 编程

设 某 8255 的 端 口 地 址 为 F B C 0 H ∼ F B C 3 H , 编 写 程 序 设 置 P C 3 为 置 位 , P C 4 为 复 位 设某8255的端口地址为FBC0H\sim FBC3H,编写程序设置PC_3为置位,PC_4为复位 8255FBC0HFBC3HPC3PC4
P C 3 置 位 : 0000   0111 = 07 H PC_3置位:0000\ 0111=07H PC30000 0111=07H
P C 4 复 位 : 0000   1000 = 08 H PC_4复位:0000\ 1000=08H PC40000 1000=08H
M O V   D X , F B C 3 H MOV\ DX,FBC3H MOV DX,FBC3H
M O V   A L , 07 H MOV\ AL,07H MOV AL,07H
O U T   D X , A L OUT\ DX,AL OUT DX,AL
M O V   A L , 08 H MOV\ AL,08H MOV AL,08H
O U T   D X , A L OUT\ DX,AL OUT DX,AL

8255的端口A、端口C均工作在方式0,以端口A作为输出控制8个LED灯,端口C作为输入口,连接8个开关 k 0 ∼ k 7 k_0\sim k_7 k0k7
(1)8255的端口地址和方式控制字
(2)编程控制:检测开关状态,若全闭合,PA端口口控制使灯亮起,否则使灯熄灭
在这里插入图片描述
(1)在这里插入图片描述
端口地址8080H~8083H
方式控制字:10001001=89H
(2)
M O V   D X , 8083 H ; 控 制 口 地 址 \qquad MOV\ DX,8083H\qquad\color{DeepSkyblue}{;控制口地址} MOV DX,8083H;
M O V   A L , 89 H ; 方 式 控 制 字 \qquad MOV\ AL,89H\qquad\color{DeepSkyblue}{;方式控制字} MOV AL,89H;
O U T   D X , A L ; 写 入 控 制 字 , 初 始 化 \qquad OUT\ DX,AL\qquad\color{DeepSkyblue}{;写入控制字,初始化} OUT DX,AL;
L 2 : M O V   D X , 8082 H I N   A L , D X } ; 间 接 寻 址 , 将 端 口 C 数 据 传 入 A L \color{DeepSkyblue}{\left. \begin{matrix} \color{black} {L_2:MOV\ DX,8082H}\\ \color{black} { IN\ AL,DX} \end{matrix} \right\};间接寻址,将端口C数据传入AL} L2:MOV DX,8082HIN AL,DX};CAL
C M P   A L , 0 J Z   L I G H T } ; 端 口 C 开 关 闭 合 / 端 口 A 熄 灭 状 态 跳 转 L I G H T \color{DeepSkyblue}{\left. \begin{matrix} \qquad\color{black} {CMP\ AL,0}\\ \qquad\color{black} {JZ\ LIGHT} \end{matrix} \right\};端口C开关闭合/端口A熄灭状态跳转LIGHT} CMP AL,0JZ LIGHT};C/ALIGHT
M O V   D X , 8080 H \qquad MOV\ DX,8080H MOV DX,8080H
M O V   A L , 0 \qquad MOV\ AL,0 MOV AL,0
O U T   D X , A L ; 让 8080 H 端 口 A 都 等 于 0 , 使 灯 熄 灭 \qquad OUT\ DX,AL\qquad\color{DeepSkyblue}{;让8080H端口A都等于0,使灯熄灭} OUT DX,AL;8080HA0使
J M P   L 1 \qquad JMP\ L_1 JMP L1
L I G H T : M O V   D X , 8080 H LIGHT:MOV\ DX,8080H LIGHT:MOV DX,8080H
M O V   A L , 0 F F H \qquad MOV\ AL,0FFH MOV AL,0FFH
O U T   D X , A L ; 让 8080 H 端 口 A 全 是 1 , 使 灯 亮 起 \qquad OUT\ DX,AL\qquad\color{DeepSkyblue}{;让8080H端口A全是1,使灯亮起} OUT DX,AL;8080HA1使
L 1 : J M P   L 2 L_1:JMP\ L_2 L1:JMP L2

8255的端口A作为输出打印口,工作方式0,PC高四位输出, P C 6 PC_6 PC6产生选通信号,PC口低四位为输入, P C 2 PC_2 PC2接收打印机的“忙”信号(busy),设被打印字符放在数据段有效地址为2000H写存储单元中,8255端口地址为80H~83H,写出8255初始化程序段,打印子程序

方式控制字: 1000   0001 = 81 H 1000\ 0001=81H 1000 0001=81H
PC6=0选通:置位/复位字:00001101=0DH
PC6=1时未选通:置位/复位字:00001100=0CH
M O V   A L , 81 H O U T   83 H , A L ; } ; 方 式 控 制 字 初 始 化 \color{DeepSkyblue}{\left. \begin{matrix} \qquad\color{black} MOV\ AL,81H\\ \qquad\color{black} OUT\ 83H,AL; \end{matrix} \right\};方式控制字初始化} MOV AL,81HOUT 83H,AL;};
M O V   A L , 0 D H O U T   83 H , A L } ; 置 位 / 复 位 字 初 始 化 \color{DeepSkyblue}{\left. \begin{matrix} \qquad\color{black} MOV\ AL,0DH\\ \qquad\color{black} OUT\ 83H,AL \end{matrix} \right\};置位/复位字初始化} MOV AL,0DHOUT 83H,AL};/
L 1 : I N   A L , 82 H L1:IN\ AL,82H L1:IN AL,82H
T e s t   A L , 04 H ; ; P C 2 = 1 忙 其 他 端 口 等 于 0 , 那 么 就 跟 04 H 相 与 \qquad Test\ AL,04H;\qquad\color{DeepSkyblue}{;PC_2=1忙其他端口等于0,那么就跟04H相与} Test AL,04H;;PC2=1004H
J N Z   L 1 \qquad JNZ\ L_1 JNZ L1
M O V   A L , [ 2000 H ] \qquad MOV\ AL,[2000H] MOV AL,[2000H]
O U T   80 H , A L \qquad OUT\ 80H,AL OUT 80H,AL
M O V   A L , O C H \qquad MOV\ AL,OCH MOV AL,OCH
O U T   83 H , A L \qquad OUT\ 83H,AL OUT 83H,AL
M O V   A L , 0 D H \qquad MOV\ AL,0DH MOV AL,0DH
O U T   83 H , A L \qquad OUT\ 83H,AL OUT 83H,AL

某8255A端口地址范围为03F8H~03FBH,A组和B组均工作在方式0,端口A作为数据输出端口,端口C低四位作为状态信号输入端口,其他端口未用,试画出8255A与系统的连接图,并编号初始化程序。

方式控制字:1000 001B=81H
初始化:MOV DX,03FBH
MOV AL,81H
OUT DX,AL
在这里插入图片描述在这里插入图片描述

三、8253(可编程计数器/定时器)的结构、功能和应用

1.结构

在这里插入图片描述

2.特点

3 个 独 立 的 16 位 减 一 计 数 器 通 道 : { 计 数 端 口 0 计 数 端 口 1 计 数 端 口 2 3个独立的16位减一计数器通道:\begin{cases}计数端口0\\ 计数端口1\\ 计数端口2\end{cases} 316012
2 个 地 址 线 { A 1 A 0 2个地址线\begin{cases} \pmb{A_1}\\ \pmb{A_0} \end{cases} 2线{A1A1A1A0A0A0
4 个 端 口 地 址 { 0   0 → 计 数 器 端 口 0 0   1 → 计 数 器 端 口 1 1   0 → 计 数 器 端 口 2 1   1 → 控 制 口 ( 前 面 是 A 1 , 后 面 是 A 0 ) 4个端口地址\begin{cases} 0\ 0\rightarrow 计数器端口0\\ 0\ 1\rightarrow 计数器端口1\\ 1\ 0\rightarrow 计数器端口2\\ 1\ 1\rightarrow 控制口\\ (前面是A1,后面是A0) \end{cases} 40 000 111 021 1A1A0
2 种 计 数 制 { 二 进 制 计 数 B C 码 计 数 2种计数制\begin{cases}二进制计数\\ BC码计数\end{cases} 2{BC
3 个 计 数 器 { C L K 0 : 时 钟 输 入 信 号 g a t e 0 : 门 控 输 入 信 号 O U T 0 : 计 数 器 输 出 信 号 3个计数器\begin{cases} CLK_0:时钟输入信号\\ gate_0:门控输入信号\\ OUT_0:计数器输出信号 \end{cases} 3CLK0gate0OUT0

6种工作方式

  • 方 式 0 : 计 数 结 束 ( 产 生 ) 中 断 方 式 方式0:计数结束(产生)中断方式 0
    (软件启动,不重复计数,计数结束OUT输出高电平,可作为中断请求信号)
    特 点 { ① 只 计 数 一 个 周 期 , 重 新 写 入 计 数 初 值 后 , 开 始 新 的 计 数 周 期 ② 在 计 数 过 程 中 , G A T E 变 为 低 电 平 , 停 止 计 数 ③ 在 脉 冲 信 号 下 降 沿 , 计 数 器 减 1 ④ 计 数 过 程 中 , 可 修 改 计 数 值 特点\begin{cases} ①只计数一个周期,重新写入计数初值后,开始新的计数周期\\ ②在计数过程中,GATE变为低电平,停止计数\\ ③在脉冲信号下降沿,计数器减1\\ ④计数过程中,可修改计数值\end{cases} GATE沿1

  • 方 式 1 : G A T E 信 号 的 单 稳 负 脉 冲 ( 可 编 程 单 稳 触 发 器 ) 方式1:GATE信号的单稳负脉冲(可编程单稳触发器) 1GATE
    (负脉冲:是一个由高电平跳变到低电平,然后再由低电平跳变到高电平的信号。)
    (硬件启动,不自动重复的工作方式)
    特 点 { ① 写 入 控 制 字 后 , O U T 输 出 高 电 平 ② 写 入 计 数 器 初 值 后 , 计 数 器 不 开 始 计 数 , 当 G A T E 端 由 低 到 高 跳 变 后 , 在 下 一 个 脉 冲 的 下 降 沿 开 始 计 数 , O U T 端 由 高 变 低 , 计 数 结 束 后 , O U T 输 出 高 电 平 。 ( G A T E 由 低 到 高 才 触 发 计 数 ) 特点\begin{cases} ①写入控制字后,OUT输出高电平\\ ②写入计数器初值后,计数器不开始计数,当GATE端由低到高跳变后,在下一个脉冲的下降沿开始计数,OUT端由高变低,计数结束后,OUT输出高电平。\\ (GATE由低到高才触发计数)\\ \end{cases} OUTGATE沿OUTOUTGATE
    在这里插入图片描述

  • 方 式 2 : 频 率 发 生 器 ( 分 频 器 ) 方式2:频率发生器(分频器) 2
    (可以软件启动,也可以硬件启动,计数器自动重复计数)
    特 点 { ① 在 写 入 控 制 字 和 计 数 初 值 期 间 G A T E 一 直 为 高 电 平 , 则 在 下 一 个 c l k 开 始 计 数 ② 若 写 入 初 值 时 , G A T E 位 低 电 平 , 则 要 等 到 G A T E 由 低 到 高 时 才 启 动 。 ③ 一 旦 启 动 , 可 以 重 复 工 作 。 特点\begin{cases} ①在写入控制字和计数初值期间GATE一直为高电平,则在下一个clk开始计数\\ ②若写入初值时,GATE位低电平,则要等到GATE由低到高时才启动。\\ ③一旦启动,可以重复工作。 \end{cases} GATEclkGATEGATE
    在这里插入图片描述

  • 方 式 3 : 方 波 发 生 器 方式3:方波发生器 3
    (可以软件启动,也可硬件启动,计数器自动重复工作,写入控制字后,OUT为高电平,如果GATE为高电平,写入初值后,开始减1 )
    当计数器减到 N 2 \frac{N}{2} 2N时(高电平与低电平一样多),OUT变为低电平,直到减为0,接着自动重新装入初值,OUT变为高电平,计数器自动重复工作。
    在这里插入图片描述

  • 方 式 4 : 软 件 触 发 选 通 信 号 发 生 器 方式4:软件触发选通信号发生器 4
    (软件启动,不自动重复计数)
    写入控制字后,OUT为高电平,计数器装入初值后即自动计数,计数结束后,OUT输出一个Tclk宽度负脉冲

  • 方 式 5 : 硬 件 触 发 选 通 脉 冲 发 生 器 方式5:硬件触发选通脉冲发生器 5
    (硬件启动,不自动重复计数)
    ①GATE上升沿触发计数器,计数结束后,OUT输出一个Tclk宽度负脉冲
    ②GATE再次出现上升沿,将重新计数

3. 编程

(1)计数初值

N = T o u t T c l k ( s ) = f c l k f o u t ( H z ) N=\frac{Tout}{Tclk}(s)=\frac{fclk}{fout}(Hz) N=TclkTout(s)=foutfclk(Hz)
设定时时间为t,通道时钟频率为f,计数初值为N,则: N = t × f N=t×f Nt×f
二进制:计数值范围: 0000 H ∼ F F F F H 0000H\sim FFFFH 0000HFFFFH
BCD码:计数值范围: 0000 ∼ 9999 0000\sim 9999 00009999

1 H z = 1 0 3 K H z ( 千 赫 兹 ) = 1 0 6 M H z ( 兆 赫 兹 ) = 1 0 9 G H z ( 千 兆 赫 兹 ) 1Hz=10^{3}KHz(千赫兹)=10^6MHz(兆赫兹)=10^9GHz(千兆赫兹) 1Hz=103KHz=106MHz=109GHz
1 s = 1 0 − 3 m s ( 毫 秒 ) = 1 0 − 6 μ s ( 微 秒 ) = 1 0 − 9 n s ( 纳 秒 ) 1s=10^{-3}ms(毫秒)=10^{-6}\mu s(微秒)=10^{-9}ns(纳秒) 1s=103ms=106μs=109ns
1GHz=1000MHz,1MHz=1000kHz,1kHz=1000Hz
1s=1000ms,1 ms=1000μs,1μs=1000ns

(2)方式控制字 CW

D 7 D_7 D7 D 6 D_6 D6 D 5 D_5 D5 D 4 D_4 D4 D 3 D_3 D3 D 2 D_2 D2 D 1 D_1 D1 D 0 D_0 D0

D 7   D 6 { 0   0 : 计 数 器 端 口 0 0   1 : 计 数 器 端 口 1 1   0 : 计 数 器 端 口 2 D_7\ D_6\begin{cases}0\ 0:计数器端口0 \\ 0\ 1:计数器端口1 \\ 1\ 0:计数器端口2\end{cases} D7 D60 000 1:11 0:2
D 5   D 4 { ( 读 写 方 式 ) 0   1 : 只 写 低 8 位 1   0 : 只 写 高 8 位 1   1 : 先 写 低 八 位 、 再 写 高 八 位 D_5\ D_4\begin{cases} (读写方式)\\ 0\ 1 :只写低8位\\ 1\ 0:只写高8位\\ 1\ 1:先写低八位、再写高八位 \end{cases} D5 D40 181 081 1
D 3   D 2   D 1 { ( 工 作 方 式 ( 六 种 ) ) 0   0   0 0   0   1 0   1   0 0   1   1 1   0   0 1   0   1 D_3\ D_2\ D_1\begin{cases} (工作方式(六种))\\ 0\ 0\ 0\\ 0\ 0\ 1\\ 0\ 1\ 0\\ 0\ 1\ 1\\ 1\ 0\ 0\\ 1\ 0\ 1\\ \end{cases} D3 D2 D10 0 00 0 10 1 00 1 11 0 01 0 1
D 0 { 0 : 二 进 制 计 数 1 : B C D 码 计 数 D_0\begin{cases} 0:二进制计数\\ 1:BCD码计数 \end{cases} D0{01BCD

(3)程序格式

写 入 控 制 字 C W { M O V   A L , C W O U T   p o r t ( 控 制 端 口 地 址 ) , A L 写入控制字CW\begin{cases} MOV\ AL,CW\\ OUT\ port(控制端口地址),AL \end{cases} CW{MOV AL,CWOUT port,AL
写 入 初 值 N { N 为 字 节 ( D 5 : 0   D 4 : 1 ) { M O V   A L , N O U T   p o r t ( 计 数 器 端 口 地 址 ) , A L N 为 字 ( D 5 : 1   D 4 : 1 ) { { M O V   A L , N ( 低 8 位 ) O U T   p o r t ( 计 数 器 端 口 地 址 ) , A L { M O V   A L , N ( 高 8 位 ) O U T   p o r t ( 计 数 器 端 口 地 址 ) , A L 写入初值N\begin{cases} N为字节(D_5:0\ D_4:1 ) \begin{cases} MOV\ AL,N\\ OUT\ port(计数器端口地址),AL \end{cases}\\ N为字(D_5:1\ D_4:1 ) \begin{cases} \begin{cases} MOV\ AL,N(低8位)\\ OUT\ port(计数器端口地址),AL\\ \end{cases}\\ \begin{cases} MOV\ AL,N(高8位)\\ OUT\ port(计数器端口地址),AL\\ \end{cases}\\ \end{cases} \end{cases} NND5:0 D4:1{MOV AL,NOUT port,ALND5:1 D4:1{MOV AL,N8OUT port,AL{MOV AL,N8OUT port,AL

例:计数0,工作方式2,二进制计数,输出的波形的重复周期为1ms,其中负脉冲宽度为200ns,计算初值,并写出初始化程序段。已知8253端口地址为40H~43H
N = T o u t T c l k = 1 m s 200 n s = 1 ∗ 1 0 − 3 2 ∗ 1 0 − 7 = 5000 N=\frac{Tout}{Tclk}=\frac{1ms}{200ns}=\frac{1*10^{-3}}{2*10^{-7}}=5000 N=TclkTout=200ns1ms=21071103=5000
1 s = 1 0 3 m s = 1 0 6 u s = 1 0 9 n s 1s=10^3ms=10^6us=10^9ns 1s=103ms=106us=109ns
C W = 0011   0100 = 34 H CW=0011\ 0100=34H CW=0011 0100=34H
{ M O V   A L , 34 H O U T   43 H , A L ; 43 H 控 制 口 地 址 \begin{cases}MOV\ AL,34H\\ OUT\ 43H,AL\qquad\color{DeepSkyblue}{;43H控制口地址}\end{cases} {MOV AL,34HOUT 43H,AL;43H
{ { M O V   A X , 5000 ; 二 进 制 计 数 , 此 处 将 N 写 全 O U T   40 H , A L ; 先 传 低 8 位 { M O V   A L , A H ; 二 进 制 计 数 , 此 处 N 写 A H O U T   40 H , A L ; 后 传 高 8 位 \begin{cases} \begin{cases}MOV\ AX,5000\qquad\color{DeepSkyblue}{;二进制计数,此处将N写全}\\ OUT\ 40H,AL\qquad\color{DeepSkyblue}{;先传低8位}\end{cases}\\ \begin{cases}MOV\ AL,AH\qquad\color{DeepSkyblue}{; 二进制计数,此处N写AH}\\ OUT\ 40H,AL\qquad\color{DeepSkyblue}{;后传高8位}\end{cases} \end{cases} {MOV AX,5000;NOUT 40H,AL;8{MOV AL,AH;NAHOUT 40H,AL;8
改BC码计数
N = 5000 N=5000 N=5000
C W = 0011   0101 = 35 H CW=0011\ 0101=35H CW=0011 0101=35H
{ M O V   A L , 35 H O U T   43 H , A L ; 43 H 控 制 口 地 址 \begin{cases}MOV\ AL,35H\\ OUT\ 43H,AL\qquad\color{DeepSkyblue}{;43H控制口地址}\end{cases} {MOV AL,35HOUT 43H,AL;43H
{ { M O V   A X , 00 H O U T   40 H , A L ; 先 传 低 8 位 { M O V   A L , 50 H O U T   40 H , A L ; 后 传 高 8 位 \begin{cases} \begin{cases}MOV\ AX,00H\\ OUT\ 40H,AL\qquad\color{DeepSkyblue}{;先传低8位}\end{cases}\\ \begin{cases}MOV\ AL,50H\\ OUT\ 40H,AL\qquad\color{DeepSkyblue}{;后传高8位}\end{cases} \end{cases} {MOV AX,00HOUT 40H,AL;8{MOV AL,50HOUT 40H,AL;8

计数器0,工作方式2, f c l k 0 = 5 m h z , f o u t = 1 k h z f_{clk0}=5_{mhz}, f_{out}=1_{khz} fclk0=5mhz,fout=1khz,二进制计数,计数器1,工作方式0, o u t 0 out_0 out0作为该计数器的计数脉冲,初值为1000,BCD码计数。端口地址为04B0H~04B3H,编初始化程序段。
N 0 = f c l k 0 f o u t 0 = 5 M h z 1 K h z = 5000 N_0=\frac{f_{clk_{0}}}{f_{out{0}}}=\frac{5Mhz}{1Khz}=5000 N0=fout0fclk0=1Khz5Mhz=5000
C W 0 = 0011   0100 B = 34 H CW_0=0011\ 0100B=34H CW0=0011 0100B=34H
N 1 = 1000 N_1=1000 N1=1000
C W 1 = 0111   0001 B = 71 H CW_1=0111\ 0001B=71H CW1=0111 0001B=71H
计数器0:
{ M O V   D X , 04 B 3 H M O V   A L , 34 H O U T   D X , A L \begin{cases} MOV\ DX,04B3H\\ MOV\ AL,34H\\ OUT\ DX,AL \end{cases} MOV DX,04B3HMOV AL,34HOUT DX,AL
{ { M O V   D X , 04 B O H M O V   A X , 5000 O U T   D X , A L { M O V   A L , A H O U T   D X , A L \begin{cases} \begin{cases} MOV\ DX,04BOH\\ MOV\ AX,5000\\ OUT\ DX,AL \end{cases}\\ \begin{cases} MOV\ AL,AH\\ OUT\ DX,AL \end{cases} \end{cases} MOV DX,04BOHMOV AX,5000OUT DX,AL{MOV AL,AHOUT DX,AL
计数器1:
{ M O V   D X , 04 B 3 H M O V   A L , 71 H O U T   D X , A L \begin{cases} MOV\ DX,04B3H\\ MOV\ AL,71H\\ OUT\ DX,AL \end{cases} MOV DX,04B3HMOV AL,71HOUT DX,AL
{ { M O V   D X , 04 B 1 H M O V   A X , 00 H O U T   D X , A L { M O V   A L , 10 H O U T   D X , A L \begin{cases} \begin{cases} MOV\ DX,04B1H\\ MOV\ AX,00H\\ OUT\ DX,AL \end{cases}\\ \begin{cases} MOV\ AL,10H\\ OUT\ DX,AL \end{cases} \end{cases} MOV DX,04B1HMOV AX,00HOUT DX,AL{MOV AL,10HOUT DX,AL

四、8259(可编程中断控制器)的结构、功能和工作方式

1. 结构

在这里插入图片描述

2. 特点

A 0 , 2 个 端 口 地 址 A_0,2个端口地址 A02
内部寄存器

(1)中断请求寄存器 IRR

保存 I R 0 ∼ I R 7 IR_0\sim IR_7 IR0IR7的中断信号(存放由外部输入的中断请求信号)

(2)中断服务寄存器 ISR

保存正在被8259服务的中断状态

(3)中断屏蔽寄存器 IMR

保存对中断请求信号 I R IR IR的屏蔽状态
功 能 : 功能:
①管理8088/8086的可屏蔽中断
②一片8259A可管理8级中断,可以多片8259级联(8259A引脚 C A S 2 ∼ C A S 0 CAS_2\sim CAS_0 CAS2CAS0的功能),可扩展至64级。
(9片可扩展到64级,9*8-8=64,减的8是8个从片占用的引脚数)
③每一级中断都可单独被屏蔽或允许
④在中断相应周期,可提供相应的中断类型号(向量号)
⑤8259A有多种工作方式,可通过编程选择

3. 工作方式:

(1)优先级方式

  1. 普通全嵌套方式
  • 固定优先级 I R 0 ∼ I R 7 IR_0\sim IR_7 IR0IR7
  • 禁止低级或同级嵌套
  1. 特殊全嵌套方式
  • 允许同级嵌套。
  1. 优先级自动循环方式
  • 刚服务过的中断优先级最低,相邻高序号的中断优先级最高,依次循环。
  1. 优先级特殊循环方式
  • 指定某个中断其优先级最低。

(2)屏蔽方式

① 普通屏蔽方式
只允许级别高的中断
② 特殊屏蔽方式
屏蔽正在处理的本级中断,开放低级中断

(3) 触发方式

8259的中断请求信号可以是边沿触发和高电平触发

(4)数据连接方式

① 缓冲方式
② 非缓冲方式

(5)中断结束的3种模式

自动中断结束模式AEOI(在8259初始化写入ICW4的D1位为1)
在中断响应的最后周期的NNA信号后沿,中断源在ISR对应位自动复位零,中断结束。
非自动中断结束模式EOI(即普通中断结束方式)
(在8259初始化写入ICW4的D1位为0),中断处理完毕,中断服务程序返回之前,CPU向8259发出EOI命令,使中断源在ISR相应位复位零,中断结束。
特殊中断结束模式
写入OCW2的D7~D5位为011,OCW2的D2~D0位指定某中断源的ISR相应位。中断处理完毕,中断服务程序返回之前,CPU向8259发出特殊EOI命令,使中断源在ISR相应位复位零,中断结束。

3.编程

7 个 字 , 2 个 端 口 地 址 7个字,2个端口地址 72
4 个 初 始 化 命 令 字 { I C W 1 : 确 定 8259 A 的 触 发 方 式 和 工 作 方 式 I C W 2 : 确 定 中 断 类 型 码 I C W 3 : 确 定 主 片 上 的 信 号 线 连 接 从 片 的 方 式 I C W 4 : 确 定 8259 A 的 全 嵌 套 方 式 、 缓 冲 方 式 、 结 束 方 式 4个初始化命令字\begin{cases} ICW_1:确定8259A的触发方式和工作方式\\ ICW_2:确定中断类型码\\ ICW_3:确定主片上的信号线连接从片的方式\\ ICW_4:确定8259A的全嵌套方式、缓冲方式、结束方式 \end{cases} 4ICW18259AICW2ICW3线ICW48259A
3 个 操 作 命 令 字 { O C W 1 : 中 断 屏 蔽 控 制 字 O C W 2 : 中 断 结 束 和 优 先 权 循 环 控 制 字 O C W 3 : 设 置 屏 蔽 方 式 , 中 断 查 询 和 读 状 态 控 制 字 3个操作命令字\begin{cases} OCW_1:中断屏蔽控制字\\ OCW_2:中断结束和优先权循环控制字\\ OCW_3:设置屏蔽方式,中断查询和读状态控制字 \end{cases} 3OCW1OCW2OCW3
写 入 奇 地 址 { I C W 2 I C W 3 I C W 4 O C W 1 写入奇地址\begin{cases}ICW_2\\ICW_3\\ICW_4\\OCW_1\end{cases} ICW2ICW3ICW4OCW1
写 入 偶 地 址 { I C W 1 O C W 2 O C W 3 写入偶地址\begin{cases}ICW_1\\OCW_2\\OCW_3\end{cases} ICW1OCW2OCW3

1. 初始化命令字

1. ICW1:设定中断请求触发方式的命令字。
D 7 D_7 D7 D 6 D_6 D6 D 5 D_5 D5 D 4 D_4 D4 D 3 D_3 D3 D 2 D_2 D2 D 1 D_1 D1 D 0 D_0 D0
xxx1LTIMxSNGLIC4

"x"设定为0

  1. D4=1:作为ICW1的标志
  2. D3:D3=0,边沿触发;D3=1,电平触发
  3. D1:
    1. D1=1,系统中只有一片8259;
    2. D1=0,系统中有多片8259
  4. D0=1;指出初始化程序中将设置ICW4
2. ICW2:设置中断向量号
D 7 D_7 D7 D 6 D_6 D6 D 5 D_5 D5 D 4 D_4 D4 D 3 D_3 D3 D 2 D_2 D2 D 1 D_1 D1 D 0 D_0 D0
T 7 T_7 T7 T 6 T_6 T6 T 5 T_5 T5 T 4 T_4 T4 T 3 T_3 T30或10或10或1
  1. T 7 ∼ T 3 T_7\sim T_3 T7T3为中断向量号的高5位
  2. 低3位由8259A自动确定,并在CPU读取中断号之前,由8259A自动填写,并且是在第一个 I N T A ‾ \overline {INTA} INTA到来时,写入低3位的。
  3. I R 0 IR_0 IR0位000、 I R 1 IR_1 IR1为001、… 、IR_7为111(后三位)

例如: I C W 2 = 08 H ICW2=08H ICW2=08H,则 I R 0 ∼ I R 7 IR_0\sim IR_7 IR0IR7请求所对应的中断类型码分别为 08 H 、 09 H ∼ 0 F H 08H、09H\sim 0FH 08H09H0FH
I C W 2 = 70 H , I R 0 ∼ I R 7 ICW_2=70H,IR_0\sim IR7 ICW2=70HIR0IR7请求对应的中断类型码分别为
70 H 、 71 H ∼ 77 H 70H、71H\sim 77H 70H71H77H

3. ICW3:级联命令字
D 7 D_7 D7 D 6 D_6 D6 D 5 D_5 D5 D 4 D_4 D4 D 3 D_3 D3 D 2 D_2 D2 D 1 D_1 D1 D 0 D_0 D0
S 7 S_7 S7 S 6 S_6 S6 S 5 S_5 S5 S 4 S_4 S4 S 3 S_3 S3 S 2 / I D 2 S_2/ID_2 S2/ID2 S 1 / I D 1 S_1/ID_1 S1/ID1 S 0 / I D 0 S_0/ID_0 S0/ID0
  1. 主片8259A: S i S_i Si=1对应 I R i IRi IRi接有从片;否则 I R IR IR没有连接从片。
    例如: I C W 3 = 11110000 B ICW3=11110000B ICW3=11110000B ,则主8259的 I R 7 、 I R 6 、 I R 5 、 I R 4 IR_7、IR_6、IR_5、IR_4 IR7IR6IR5IR4上均连有从8259。
  2. 从片8259A: I D 2 ∼ I D 0 ID_2\sim ID_0 ID2ID0,编码说明从片INT引脚接到主片哪个有 I R IR IR引脚。
    例如∶从片的 I D 2 ∼ I D 0 = 110 ID_2\sim ID_0=110 ID2ID0=110,说明从接主的 I R 6 IR_6 IR6
4. ICW4:中断方式字

在这里插入图片描述

2. 操作命令

1. OCW1:屏蔽命令字

在这里插入图片描述

2. OCW2

在这里插入图片描述

3. OCW3

在这里插入图片描述

本文仅供本人学习总结使用,文中观点,均为本人拙见,如有错误或不妥之处,请及时指正。

  • 6
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
有这本书 就不必自学那么厚一本书了,只要看了 就可以通过哦~~~ 我就是计算机专业的 希望河北的朋友接本成功~~ 《计算机组成原理与汇编语言》复习指南 为了帮助同学们复习,本文首先阐明本课程的教学目标与考核说明,这是总复习的指导思想。在重点与难点的剖析中,则首先突出需熟练掌握的部分,然后再讨论一些需掌握、理解的概念和方法,其间插入一些典型题例。由于汇编语言程序设计有其自身的体系和特点,我们将它作为专门的一节讨论。 一、 教学目标与考核要求 本课程的教学目标是:在学完本课后能建立起整机概念,它可分为两级: (1) CPU级,它包含三个方面:CPU基本组成、指令流程、汇编语言级程序设计方法。 (2) 系统级,它包含两个方面:如何通过系统总线与接口将CPU、主存、I/O设备(含外存)连接成整机,对输入/输出的三种基本控制机制。 《计算机组成原理与汇编语言》课程考核说明 一、考核说明 1.考核对象:计算机应用专业大专生。 2.命题依据:本考核说明的制定以 《计算机组成原理与汇编语言》教学大纲为依据,再以本考核说明为命题依据。 3.教材:《计算机组成原理与汇编语言》。 4.考核要求层次:本考核说明将使用下述术语分别表明几种要求层次。 (1)掌握:指重点要求的内容。 对于理论概念性的内容,应能:正确阐述,作正误判断并更正有关的错误,对相关概念进行综合比较分析,综合应用。例如:试以打印机工作为例说明中断方式的几个过程,试比较中断方式与DMA方式的异同等。 对于设计性内容,应能掌握设计方法,正确完成设计。例如:拟出某条指令的指令流程。主存逻辑设计,编制汇编语言程序段等。 对于某些特别重要的内容,大纲将采用“熟练掌握”的提法。 (2)理解:对于这一要求层次的内容应能:正确阐述有关概念,作正误判断并更正有关的错误,简单应用。例如:说明微程序控制的基本思想,阅读某程序段后给出它的执行结果等。 (3)了解:对于这一要求层次的内容,将不作为考核重点,所占题分很少;或者只是某道考核题中涉及到一点。例如:IOP,虚拟存储,显示器分辨率指标等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值