96
第 8 第 第第第第第 DMA 第第第 第第第 / 第第第 8-1中中中中中 8259 A 8-2 中中中/中中中 8253 8-2 DMA 中中中 8273 A 中8中中中 中8中中中中

第 8 章 中断控制器 DMA 控制器 计数器 / 定时器

  • Upload
    bryga

  • View
    212

  • Download
    0

Embed Size (px)

DESCRIPTION

8-1 中断控制器 8259A 8-2 计数器 / 定时器 8253 8-2DMA 控制器 8273A 第 8 章小节 第 8 章思考题. 第 8 章 中断控制器 DMA 控制器 计数器 / 定时器. 通过对本章的学习, 您应该能够达到下列要求: 了解 8259A 、 8237A 、 8253 芯片的内部结构 描述各芯片的工作原理 熟悉 8259A 、 8253 芯片的工作方式 掌握各芯片的编程方法 学会 8253 的应用 重点: 8259A 、 8237A 、 8253A 工作原理与应用. 学习目的:. 主要内容: - PowerPoint PPT Presentation

Citation preview

Page 1: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

第 8 章 中断控制器DMA 控制器

计数器 /定时器8-1中断控制器 8259A8-2计数器/定时器 82538-2DMA控制器 8273A第8章小节第8章思考题

Page 2: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

学习目的: 通过对本章的学习,您应该能够达到下列要求: 了解 8259A 、 8237A 、 8253 芯片的内部结构 描述各芯片的工作原理 熟悉 8259A 、 8253 芯片的工作方式 掌握各芯片的编程方法 学会 8253 的应用重点: 8259A 、 8237A 、 8253A 工作原理与应用

Page 3: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

第一节 中断控制器 8259A

主要内容:8529A 的内部结构8259A 的工作方式8259A 的初始化命令字和操作命令字8259A 级联方式8259A 使用举例多片 8259A 组成的主从式中断系统

Page 4: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

中断的概念中断的概念中断:外设向 CPU 发中断请求, CPU 接收到中断请 求并在一定条件下,暂时停止执行原来的程 序而转去处理中断,处理好中断服务再返回 继续执行原来的程序,就称为一个中断过程。中断是 CPU 被动的响应外设要求服务。1 、中断源:( 1)数据输入 /输出设备请求中断 ( 2)定时时间到申请中断 ( 3)满足规定条件申请中断 ( 4)电源掉电 ( 5)故障报警申请中断 ( 6)程序调试设置中断

Page 5: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

2 、 CPU 响应中断的条件 ( 1)、无总线请求

( 2)、 CPU 允许中断: IF=1

( 3)、 CPU 执行完当前指令

3 、 CPU 响应中断要自动完成的任务: ( 1)关中断

( 2)保护断点 (IP,CS,FLAG 入栈 )

( 3)给中断服务程序的入口地址

Page 6: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

4 、中断处理过程 保护现场:保护主程序中的一些寄存器值 开中断 :开放优先级更高的中断 执行中断服务程序 关中断 恢复现场 中断返回 5 、中断源的识别: 查询(软件识别) 硬件识别:外设提供中断申请信号和中断矢量

Page 7: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

中断控制器中断控制器 8259A8259A

8259A 的功能:中断优先权管理中断屏蔽自动中断矢量转移 8259A 特点 :单片 8259 可处理 8级中断级联时 :最多可用 9片处理 64级中断8259A 的片内寻址A0=1 、 0

Page 8: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

一、 8529A 的芯片内部结构1. 数据总线缓冲2.读写控制逻辑3.级联缓冲比较4.中断请求寄存器5.中断服务寄存器6.中断屏蔽寄存器 7. 优先权判别单路8.控制电路 在8086系统中, CPU和 8259A的所有数据传送都在数据总线的低8位上进行。地址总线的A1与8259A的 A0相连,以保证数传都在总线的低8位中进行。

Page 9: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器
Page 10: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

8259A 的工作原理如下 :中断请求寄存器IRR分别和 IR7~IR0相对应,IRR接收外部的中断请求。接到某一引脚的中断请求后,IRR中的对应位便置1。

中断屏蔽寄存器IMR中的对应位为1表示此中断以加屏蔽,为0表示此中断未加屏蔽可通过而进入中断优先级裁决器PR作裁决。

PR对新进入的中断请求和ISR中当前正在处理的中断比较,从而决定哪一个优先级更高,是否使8259A的输出端INT为 1。

Page 11: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

如 CPU 的 IF 为 1, CPU 执行完当前指令后,就可以响应中断。 CPU 从 INTA 线上往 8259A 回送两个负脉冲。第一个负脉冲到达时, 8259A完成以下动作:

1. 使 IRR 的锁存功能失效2. 使当前中断服务寄存器 ISR中的相应位置 13. 使 IRR 寄存器中的相应位〈即刚才设置的位〉清 0 。

第二个负脉冲到达时, 8259A完成下 列动作 : 1. 将中断类型寄存器的内容 ICW2送到数据总线的 D7~D0 ,

CPU将此作为中断类型码。

2. 如果 ICW4 中的中断自动结束位为 1,那么,在第 INTA 脉冲结束时, 8259A 会将第 一 INTA 脉冲到来时设置的 当前中断服务寄存器 ISR的相应位清 0 。

Page 12: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

二、二、 8259A8259A 的工作方式的工作方式 1. 中断触发方式 (1)边沿触发方式 此方式由 ICW1来设置。(2) 电平触发方式 当中断输入端出现 1个中断请求并得到响应后,输入端必须及时撤除高电平。

中断类型码 : D7D6D5D4D3 D2D1D0

0 0 0 0 0 1 … 1 1 1

Page 13: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

2. 优先级的管理方式 (1) 完全嵌套方式 在对 8259 进行初始化后 ,没有设置其它优先级方式 ,则自动按此方式工作 .

特点 :在全嵌套方式中,中断请求按优先级 IR0~IR7 级进行处理, IR0 级中断的优先级最高。 当一个中断被响应时,中断类型码被放到数据总线上, ISR 中的对应位 ISn被置 1,然后进入中断服务程序。一般情况下(除了中断自动结束方式外),在 CPU发出中断结束命令( EOI )前,此对应位一直保持“ 1”。

Page 14: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器
Page 15: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

(2) 优先级自动循环方式 用在 : 多个中断源优先级相多个中断源优先级相等的场合。

特点 :优先级是在变化的,一个设备中断处理完 后 ,它的优先级自动降为最低。

由 8259A 的操作命令字 OCW2决定。(3) 特殊全嵌套方式 用于 : 多片级联方式 , 特殊全嵌套方式仅设置在主片中 .

特点 : 和全嵌套方式基本相同 ,不同的是 :在处理某以及中断时 ,可响应同级中断 ,从而实现对同

级中断请求的特殊嵌套 .

Page 16: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

3. 中断屏蔽方式( 1)普通屏蔽方式 用 OCW1 命令将中断屏蔽寄存器 IMR 的相应位置“ 1”。

( 2)特殊屏蔽方式 用于中断处理程序中。当要允许优先级低的中断进入 ,可采用特殊屏蔽方式 .

可用 OCW3 的 D6D5=11 设置,此时除 IMR 中置1位对应的中断被屏蔽外 ,其它置 0位对应的中断无论优先级高低都可得到相应。

Page 17: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

( 1)中断自动结束方式: 用于系统中只有一片 8259A ,多个中断不会嵌套的情形。系统一进入中断处理,就将当前中断服务寄存器 ISR 的对应位清除。对 8259A来说,好像已经结束了当前中断。

在命令字 ICW4 中将 AEOI ( D1 )位置“ 1”。( 2)一般的中断结束方式:

用在全嵌套的情形。 CPU 用 OUT 指令往 8259A偶地址发一个 EOI 命令,8259A将使 ISR 最高非零 IS 位清 0 。结束当前正在处理的中断。

4. 结束中断处理的方式( EOI )

Page 18: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

( 3)特殊的中断结束方式 发一条特殊中断结束命令,命令中指出了要清除当前 ISR 的哪个 IS 位。

往偶地址端口输出 OCW2 命令。 OCW2 中: EOI=1 、 SL=1 、 R=0 是特殊中断结束命令。

OCW2 中: L2 、 L1 、 L0 指出了要对哪个 IS位复位。

Page 19: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

EOI 命令的使用

Page 20: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

三 .8259A 的级联使用主片: SP/EN 接 +5V从片: SP/EN 接地。

Page 21: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器
Page 22: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

级联方式 : 一片主 8259,2 片从 8259

主 接 5V, 从 8259 接地 .1 号从 8259 的 INT 接主 8259 的 IR6 2 号从 8259 的 INT 接主 8259 的 IR4可管理 22 级中断

ENSP / ENSP /

Page 23: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

特殊嵌套方式的使用

设 1 号从 8259 : IR7 有申请,并响应1 号从 8259 向主 8259 的 IR6 发申请,并

得到响应现在, 1 号从 8259 : IR0 有申请,而 IR0

的优先级别高于 IR7 ,应该响应 IR0 ,应该允许 IR0 进入。

解决办法:使用特殊全嵌套方式

Page 24: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

四、四、 8259A 8259A 的控制字和工作方式的控制字和工作方式命令字 :ICWi (i=1~4)

操作命令字 :OCWi(i=1~4)

8259A 的地址 : 偶地址端口( A0=0 ) 奇地址端口( A0=1 )1. 8259A 的初始化命令字

ICW1 :芯片控制初始化命令字 ICW2 :设置中断类型码的 ICW3 :主片 / 从片的初始化命令字 ICW4 :方式控制初始化命令字

Page 25: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

(( 11 ) ) ICW1ICW1 的格式的格式(( AA00=0=0 )) ICW1 :芯片控制初始化命令字。必须写入偶地址端口中。

A0 D7 D6 D5 D4 D3 D2 D1 D0

D7~D5 :这几位在此系统中不用,为 1 为 0 都可以。 D4 :设置为 1 ,指示 ICW1 的标志。 D3 ( LTIM ):设定中断请求信号的形式。

为 1 ,表示中断请求为电平触发方式, 为 0 ,表示中断请求为边沿触发方式。

D2 ( ADI ):在 8086/8088 中不起作用。 D1 ( SNGL ):指出 8259A 有否级联。

为 1 ,表示系统中有一片 8259A , 为 1 ,表示系统中有多片 8259A 。 D0 ( IC4 ):指出后面是否设置 ICW4 。使用 ICW4 时 IC4 必须为 1 。

/ / / 1 LTIM ADI SNGL IC40

Page 26: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

( 2 ) ICW2 的格式 (A0=1) ICW2 是设置中断类型码的高 5 位初始化命令字,写入 8295A 的奇地址端口。

( 3 ) ICW3 的格式 (A0=1) ICW3 是标志主片 / 从片的初始化命令字,指出主 8259 那个引脚连有从 8259 ,对应位置一。

为主片 : A0 D7 D6 D5 D4 D3 D2 D1 D0

T7 T6 T5 T4 T3

IR7 IR6 IR5 IR4 IR3 IR2 IR1 IR01

Page 27: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器
Page 28: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

本片 8259A 为从片, ICW3 的格式,指出从 8259连在主 8259 那个引脚,由 D2D1D0 指出。

( 4 ) ICW4 的格式( A0=1 ) ICW4 为方式控制初始化命令字,写入奇地址 端口。

A0 D7 D6 D5 D4 D3 D2 D1 D0

1 0 0 0 0 0 ID2 ID1 ID0

A0 D7 D6 D5 D4 D3 D2 D1 D0

1 0 0 0 SFNM BUF M/S AEOI uPM

Page 29: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器
Page 30: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

用 ICW1 设置,是否级连,请求

信号格式,后面是否用 ICW4

用 ICW2 设置中断类型码

是否为级连方式?

本片为主片吗?

设 ICW3 的高五位为佳,低三位为标识码设 ICW3 的各位对应

IR0~IR7 的连接情况需要用 ICW4

吗?

用 ICW4 设置,是否为特殊全嵌套方式;缓冲

方式;自动结束中断方式; 8086/8088 系统

结束

图 6-4 8259A 的初始化流程

2. 8259A 的初始化流程

Page 31: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

3. 8259A 的操作命令字 :OCW1~OCW3

( 1 ) OCW1 的格式( A0=1 )

OCW1 称为屏蔽命令字,写入 8259A 的奇地址端口。

当 OCW1 某位 =1 ,表示对应的中断请求被屏蔽。

A0 D7 D6 D5 D4 D3 D2 D1 D0

1 M7 M6 M5 M4 M3 M2 M1 M0

Page 32: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

用于设置优先级循环方式和中断结束方式,写入偶地址单元。

R=1 ,优先级循环方式; R=0 ,非循环方式。 EOI=1 ,使当前 ISR 的对应位 ISn 复位。 SL=1 , L2 、 L1 、 L0 有效。 在 ICW4 中,若 AEIO=1 ,自动清除当前 ISn 。 AEIO=0 , Isn 要用 EOI 清除。

( 2 ) OCW2 的格式( A0=0 )

D7 D6 D5 D4 D3 D2 D1 D0

R SL EOI 0 0 L2 L1 L0

Page 33: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

( 3 ) OCW3 的格式( A0=0 )

P=1 时,表示查询。RR=1 , RIS=0 ,对 IRR 寄存器的读出;RR=1 , RIS=1 ,对 ISR 寄存器的读出。若要读 IMR ,不须设 OCW3 的查询命令。 IR4 和 IR1 引脚上有中断请求, CPU 执行一条输入指令,

从奇地址端口读得以下查询字:

D7 D6 D5 D4 D3 D2 D1 D0

0 ESMM SMM 0 1 P RR RIS

D7 D6 D5 D4 D3 D2 D1 D0

I --- --- --- --- W2 W1 W0

1 --- --- --- --- 1 0 0

Page 34: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

ESMM=SMM=1, 置特殊屏蔽方式 ,8259A 脱离当前优先级方式 .

ESMM=1,SMM=0, 撤销特殊屏蔽方式

Page 35: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

4.8259A 那些寄存器内容可读出? 设 8259A 地址 80H , 82H

1 )读中断屏蔽寄存器 IMR 内容:中断屏蔽字 IN AL , 82H ; A0=12 )要读出 ISR或 IRR 的内容,必须设置 OCW3 中的 P( D2) =1: ( 1)读 IRR :设置 OCW3 : D1D0=10 ( 2)读 ISR :设置 OCW3 : D1D0=11执行输入指令 IN AL , 82H

Page 36: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

四 .8259A 使用举例例 1:IBM PC/XT 8259A (P470)

Page 37: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

8259A 初始化要求:端口地址: 20H~21H8 个中断请求信号: IR0~IR7采用完全嵌套方式、 0 级最高, 7 级最低。设定 0 级请求对应中断号为 8 , 1 级为 9 ,

… . 7 级为 0FH 。 IRQ0: 0000 1 000=08H IRQ1: 0000 1 001=09H IRQ2: 0000 1 010=08H …... IRQ7: 0000 1 111=0FH

Page 38: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

8259A 初始化编程:

INTA00 EQU 020H ;8259A 端口 0

INTA01 EQU 021H ; 8259A 端口 1

…….

MOV AL, 13H ;ICW1: 边沿触发 . 单片 . 要 ICW4

OUT 20H,AL

MOV AL , 8 ;ICW2:IRQ0 中断类型为 08H

OUT 21H,AL

MOV AL, 9 ;ICW4 全嵌套 .8088 系统OUT 21H,AL ; 普通 EOI 方式

Page 39: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

(1) 预制命令字 : ICW1, ICW2. ICW3. ICW4 ICW1: 边沿触发 . 单片 . 要 ICW4

0 0 0 1 0 0 1 1 =13H D4 :设置为 1 ,指示 ICW1 的标志。

D3 ( LTIM ):设定中断请求信号的形式。为 0 , 表示中断请求为边沿触发方式。D2 ( ADI ): 在 8086/8088 中不起作用。D1 ( SNGL ):指出 8259A 有否级联。

为 1 ,表示系统中有一片 8259A , D0:(IC4) : 为 1 ,表示系统为 8086/8088, 要用 ICW4.

/ / / 1 LTIM A D I SNGL IC4

Page 40: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

ICW2 的格式 :

D2D1D0

0 1 0 0 0 0 0 0 = 80H01000 0 0 0=80H : IRQ0

01000 0 0 1=81H : IRQ1

01000 0 1 0=82H : IRQ2

….01000 1 1 1=87H : IRQ7

Page 41: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

ICW4 的格式 : 必须写到 8259A 的奇地址端口中 .

0 0 0 0 1 0 0 1 = 09H ICW4 全嵌套 .8088 系统非自动结束

A0 D7 D6 D5 D4 D3 D2 D1 D0

1 0 0 0 SFNM BUF M/S AEOI uPM

Page 42: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

例 2: 教材 P239 例 1: 一片从 8259 的 INT 端连在主 8259 的 IR3 上 , 主 8259 的 IR0 和 IR5 端分别引入两个中断 , 从 8259 的 IR2 和 IR3 引入两个中断 .

主 8259 中断类型码为 :40H,45H; 中断服务程序的段基址为 1000H, 偏移地址为 10

50H 和 2060H. 主 8259 端口地址为 :FFE8H,FFE9H从 8259 中断类型码为 :32H,33H; 中断服务程序的段基址为 2000H, 偏移地址为 54

40H 和 3620H. 从 8259 端口地址为 :FFFAH,FFF9H

Page 43: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

主 8259A 的初始化程序段 :MOV AL,11H ; 定义 ICW1, 边缘触发 , 级联 , 单级 , 需 ICW4

MOV DX,0FFE8H OUT DX,AL ;ICW1 送偶地址端口MOV AL,40H ; 定义 ICW2, 使 IRQ0 的中断类型码为 40H

MOV DX,0FFE9H ; 送奇地址端口OUT AL,DXMOV AL,08H ; 定义主片 ICW3,IR5 上接从片 OUT DX,AL ;ICW3 送奇地址端口MOV AL,11H ; 定义 ICW4,8086, 特殊完全嵌套方式OUT DX,ALMOV AL,0D6H ; 定义 OCW1, 屏蔽 IR0,IR3,IR5 以外的中断申请OUT DX,AL MOV AL,20H ; 定义 OCW2, 普通 EOI 方式OUT DX,AL

Page 44: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

(1) 中断类型为 40H 的中断向量设置 : 服务程序的入口地址 :1000H:1050H 40H*4=00C8H 00C8H+2=00CAH PUSH DS XOR AX,AX ; 清 AX MOV DS,AX MOV AX,1050H MOV [00C8H],AX ; 设中断服务程序的入口地址 , 送 IP

MOV AX,1000H MOV [00CAH],AX ; 送 CS

POP DS

Page 45: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

例 3:1 片 8259A 工作于全嵌套方式 若要求在 IR3 的中断服务中 , 允许 IR5 进入 , 该如何作 ? 1) 在 IR3 中断服务程序开始 关中断 (CLI)用 OCW3 设置特殊屏蔽方式取原屏蔽字保存 ,将 IMR3,IMR4,IMR6,IMR7 置 1, 允许 IR5 进入开中断 (STI)2) 在 IR3 中断服务程序适当处恢复原屏蔽字用 OCW3 撤销特殊屏蔽方式

Page 46: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

思考题1. 8088/8086 中断向量表的作用是什么?2. 8259A 中 IRR 、 IMR 和 ISR 三个寄存器的作用

是 什么?3. 某时刻 8259A 的 IRR 内容是 08H(00001000B) ,

说明 _____ 。某时刻 8259A 的 ISR 内容是 08H ,说明 _______ 。在两片 8259A 级连的中断电路中,主片的第 5 级 IR5 作为从片的中断请求输入,则初始化主、从片时, ICW3 的控制字分别是 00100000 和 00000101 .

Page 47: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

第 2节 计数器 / 定时器 8253计数器 / 定时器 8253 特点 三个通道,可单独使用片内寻址 A1 A0= 00 、 01 、 10 、 11 对应:通道 0 、 1 、 2 和控制口地址工作方式: 6种

Page 48: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

一、微机定时方法 1. 软件定时——延迟子程序 2. 硬件定时——用计数器 / 定时器 8253 二、可编程计数器 / 定时器的工作原理 功能:一是为计数;一是为定时。 8253 的用处:1 )在多任务的分时系统中用来作为中断信号实

现程序的切换;2 )可以往 I/O 设备输出精确的定时信号;3 )作为一个可编程的波特率发生器;4 )实现时间延时。

Page 49: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

计数器 / 定时器的工作特点

1 )门脉冲控制时钟输入; 2 )用门脉冲来重新启动计数; 3 )用门脉冲停止计数; 4 )单一计数; 5 )循环计数 .

计数初始值 = 时钟频率 *T

Page 50: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

8_2_1 8253 芯片内部结构1.数据总线缓冲器 往计数器设置计数初值;  从计数器读取计数值;  往控制寄存器设置控制字。

2. 读 / 写逻辑电路 A1 A0 :端口选择 0 0 :通道 0 ( 0 号计数器) 0 1 :通道 1 ( 1 号计数器) 1 0 :通道 2 ( 2 号计数器) 1 1 :控制字寄存器

Page 51: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

3. 通道 0 、通道 1 、通道 2 计数器 0 : CLK0——计数器 0 的时钟输入。

GATE0——计数器 0 的门脉冲控制输入。 OUT0——计数器 0 的输出。

计数器 1 计数器 2 定时系数(计数初值) n = 定时时间 t 时钟频率 fc = 定时时间 t/ 时钟脉冲周期 Tc

Page 52: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

编程结构

Page 53: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

( 2 ) 8253 的工作原理

Page 54: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

4. 控制寄存器  8253 控制寄存器的格式

SC1 SC0 RW1 RW0 M2 M1 M0 BCD

1-- 计数值为 BCD 码格式

0-- 计数值为二进制格式M2 M1 M0 模式选择

0 0 0 模式 0

0 0 1 模式 1

/ 1 0 模式 2

/ 1 1 模式 3

1 0 0 模式 4

1 0 1 模式 5

0 0---- 对计数器进行锁存

0 1---- 只读 / 写低 8 位字节

1 0---- 只读 / 写高 8 位字节

1 1---- 只读 / 写低 8 位字节 ,

再读 / 写高 8 位字节 .

0 0---- 选计数器 0

0 1---- 选计数器 1

1 0---- 选计数器 2

1 1---- 无意义

Page 55: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

8-2-2. 8253 的工作模式 ( 1 )方式 0——计数结束产生中断 一次定时或计数 ,重写初值 ,启动新一轮的计数

( 2 )方式 1——可编程的单脉冲 ( 单稳 ) 触发器 GATE 边沿触发 ,启动新一轮计数

( 3 )方式 2——分频器 (速度波发生器 ) 具有计数初值重装能力

( 4 )方式 3——方波发生器 具有计数初值重装能力 ( 5 )方式 4——软件触发的选通信号发生器 一次定时 ,重写初值 ,启动新一轮的计数

( 6 )方式 5——硬件触发的选通信号发生器 GATE 边沿触发新一轮计数

Page 56: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

图 8-22 方式 0——计数结束产生中断

Page 57: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

图 8-22 单脉冲触发器

Page 58: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

图 8-23 分频器

Page 59: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

图 8-23 方波发生器

Page 60: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

图 8-23 软件触发的选通信号发生器

Page 61: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

图 8-23 硬件触发的选通信号发生器

Page 62: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

8253 初始化方法 :控制字计数初值 : 已知 :CLK 的频率 fc与定时的时间 t.

计数初值 : n= fc t

例 1 : fc=1MHZ ,最大计数初值: 65536

一个定时器最大定时时间: N/fc=65536/ 106 =0.065536s

8-2-3 8253 应用举例

Page 63: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

例 2 :设定时器 0 、定时器 1 工作于方式 2 ,外部提供一个时钟 ,频率 f=2MHZ 。要求定时器 1每5ms产生一个脉冲,定时器 0每 5s产生一个脉冲。

1). 一个定时器的最大定时时间: 65536/ ( 2*106 ) =0.032768 s=32.768ms2). 将定时器 1 的 CLK1 接 2MHZ 时钟,计数初值:

3).将定时器 1 的 OUT1 端接到定时器 0 的 CLK0 端 ,定时器 0 的计数初值 :

100052005

200105

1

00

30

sfn

HZms

f

100001025 6111 msftn

Page 64: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器
Page 65: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

例 3 :计数器 2 输出 600HZ 方波,送扬声器。工作于模式 3.

Page 66: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

发声子程序:

SSP PROC NEAR ;8253 初始化 : MOV AL , 10110110B ;计数器 2,模式 3, 初值 16 位 , 二进制 OUT 43H, AL MOV AX, 1983 ; 计数初值 =1.19MHZ600HZ=1983 OUT 42H,AL ; 送计数初值低位字节 MOV AL,AH OUT 42H,AL次 ; 送计数初值高位字节

Page 67: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

8255 控制程序 : IN AL,61H ; 读 8255 的 PB口原输出值 MOV AH,AL ;保留到 AH OR AL,03H ; 使 PB0\PB1均为 1 OUT 61H,AL ;打开 GATE2门 , 输出方波到扬声器

SUB CX, CX ;CX为循环次数 , 最大为 216

L: LOOP L ;延时 DEC BL ;BL 为子程序入口条件 JNZ L ;BL=6, 发长声 (3S),BL=1 发短声 (0.5S) MOV AL,AH ;取回 8255 的 PB口原输出值 OUT 61H, AL ; 恢复 8255PB口 ,停止发声 RETSSP ENDP

Page 68: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

例 4: 定时 /计数器 8253与 8086/8088CPU 相连构成完整的定时、计数或脉冲发生器系统。要求能完成的功能是: 1 )利用通道 0 完成对外部事件计数功能,计满 100次向 CPU发中断请求。 2 )利用通道 1产生频率为 1KHz的方波。 3 )利用通道 2 作标准时钟 , 定时 1秒 , 输出接 IR2 。

Page 69: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器
Page 70: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

(1)8253 的数据线( D7~D0 )与 CPU 的高 8 位数据线( D15-D8 )相连,所以 8253 的端口地址必须是奇地址( A0=1 )。

(2) 通道 0 定义为工作方式 0 ,完成计数 . 通道 0 的计数初值应为 : n0= 100

控制字 : 00 01 0000=10H (3)将通道 1 定义为工作方式 3 , 控制字 =0111 0110=76H, 从 CLK1 输入 2.5MHz 的时钟脉冲, OUT1 输出频率

为 1KHz 的方波,而输出方波的周期 1ms 。 通道 1 的计数初值 : n1= f1*t1= 2.5106 1 10-3

=2500=09C4H 。

Page 71: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

(4) 通道 2 应定义为方式 0 , 控制字 =1011 0001=0B1H,每秒钟利用 OUT2 向CPU 发出一次中断请求,由于输入时钟频率为 1KHz ,计数初值应为 :

n2=f2*t2=1000*1=1000 。 8253 的控制端口地址: 66H

通道 0 的端口地址: 60H通道 1 的端口地址: 62H通道 2 的端口地址: 64H

8253-0 EQU 60H 8253-1 EQU 62H 8253-2 EQU 64H 8253-C EQU 66H

Page 72: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

STT : MOV DX , 8253-C ;8253 控制口地址

MOV AL , 10HOUT DX , AL ; 通道 0 工作在方式 0MOV DX , 8253-0 ;8253 通道 0 地址MOV AL , 64HOUT DX , AL ; 给通道 0 送计数值MOV DX , 8253-CMOV AL , 76HOUT DX , AL ; 通道 1 工作在方式 3MOV DX , 8253-1 ;8253 通道 1 地址MOV AX , 09C4H OUT DX , AL ; 给通道 1 送计数初值低 8 位MOV AL , AHOUT DX , A ; 给通道 1 送计数值高位MOV DX , 8253-CMOV AL , 0B1HOUT DX , AL ; 通道 2 工作在方式 0

Page 73: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

MOV DX , 8253-2 ; 通道 2 地址MOV AX , 1000H ;1000 的 BCD 数 1000HOUT DX , AL ; 给通道 2 送计数初值的低 8 位MOV AL , AHOUT DX , AL ; 给通道 2 送计数值的高 8 位MOV DX , 8259A 偶MOV AL , 13HOUT DX , AL ; 设 ICW1, 边缘触发 , 需 ICW4MOV DX , 8259A 奇 MOV AL , 50H ; 设 ICW2, 0 通道中断类型码为 50HOUT DX , AL ; 通道 2 的中断类型码为 52HMOV AL , 03 OUT DX , AL ; 设 ICW4, 非自动 EOI 方式MOV AL , 0FAH ;OCW1, 屏蔽 IR0,IR1 以外的输入OUT DX , ALSTIFF : HLT

JMP FF

Page 74: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

IR2 时钟程序 :S1 DB ? ;秒S2 DB ? ; 分S3 DB ? ; 时….. IR2_TIMER: INC S1 CMP S1,60 JNC EXIT ; 不满 60秒 ,退出 MOV S1,00H INC S2 ; 分单元加一 CMP S2,60 ; 不满 60 分 ,退出 JNC EXIT MOV S2,00H ; 时单元加一 INC S3

Page 75: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

JMP S3,24 JNC EXIT MOV S3,00H CALL DISPLAY ;显示时间 …... STI EXIT: IRET

Page 76: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

思考题:l. 微机中实现定时控制的主要方法是什么? 2. 8253 每个计数通道与外设接口有哪些信号线,每个信号的用途是什么? 3. 8253 每个通道有 ___ 种工作方式可供选择。若设定某通道为方式 0 后,其输出引脚为电平;当 ____ 后通道开始计数,信号端每来一个脉冲就减 1 ;当 __ 则输出引脚输出_电平,表示计数结束。 8253 的 CLKO 接 1 . 5MHZ 的时钟,欲使 OUT 。产生频率为 300kHZ 的方波信号,则 8253 的计数值应为 ____ ,应选用的工作方式是_____. 4. 试按如下要求分别编写 8253 的初始化程序,已知 8253 的计数器 0~ 2 和控制字IO 地址依次为 04H ~ 07H 。 ( l )使计数器 11 作在方式 0 ,仅用 8 位二进制计数,计数初值为 128 。 ( 2 )使计数器 O 工作在方式 1 ,按 BCD 码计数,计数值为 3000 。 ( 3 )使计数器 2 工 在方式 2 ,计数值为 02F0H 。 5. 设 8253 计数器 0—2 和控制字的 I/O 地址依次为 F8H ~ FBH ,说明如下程序的作用。 mov al ; 33h out ofbh , al mov al , 80h out ofsh , al mov al , 50h out of8h , al

Page 77: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

习题 1 分析: 用通道 0 作定时器,初始编程使通道 0按方式 3 工作,每秒产生 18.2次输出信号,该信号送到 8259A 中断控制器的 IRQ0 输入端。每 55ms产生一次中断请求, 8086 对其计数,用来计算时间。通道 1 用作动态 RAM刷新定时,每隔 5.12us 产生一次输出信号,请求动态刷新。 OUT1 输出产生 DMA 请求信号送 8237 ,由 8237对动态 RAM刷新。( 8253 地址为 40H~43H )通道 0 :地址为 40H ,控制字为 36H ,工作方式 3 ,计数初值为0通道 1 :地址为 41H ,控制字为 54H ,工作方式 2 ,计数初值为 12H

TIMEMODECTRL EQU 43HTIMEADD EQU 40HCTRL1 DB 36HCTRL2 DB 54HTIME1 DW 0TIME2 DW 12H

Page 78: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

MOV BP , TIMEMODECTRLMOV AL , CTRL1 ;送通道 0 控制字MOV BYTE PTR [BP], ALMOV AL , CTRL2 ;送通道 1 控制字MOV BYTE PTR [BP], ALMOV BP , TIMEADD ;通道 0 端口地址送 BPMOV AX , TIME1MOV BYTE PTR [BP], ALMOV BYTE PTR [BP], AH ;送通道 0 时常数INC BP ;通道 1 端口地址送 B

PMOV AX , TIME2MOV BYTE PTR [BP], ALMOV BYTE PTR [BP], AH ;送通道 1 时常数

INC BP

Page 79: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

第 3 节 DMA 控制器 8237A

主要内容:DMA 控制器的一般结构和概要DMA 控制器 8237A 的原理8237A 的编程和使用

Page 80: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

基本问题:

说明在 DMA 方式时内存往外设传输数据的过程。DMA 控制器初始化工作包括哪些内容?DMA 控制器在什么时候作为主模块? 什么时候作为从模块?为什么 CPU 对 DMA 控制器提出的总线响应要比

中断请求响应快?

Page 81: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

DMA 控制器 DMA 控制器可以象 CPU那样得到总线控制权,用 DMA 方式实现外部设备和存储器之间的数据高速传输。

一个 DMA 控制器通常可以连接一个或几个输入 /输出接口,每个接口通过一组连线和 DMA 控制器相连。

将 DMA 控制器中和某个接口有联系的部分为一个通道。而一个 DMA 控制器一般由几个通道组成。

Page 82: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

DMADMA 方式,外设向內存传输数据的过程:方式,外设向內存传输数据的过程:

当一个接口中有数据要输入时,就往 DMA 控制器发个 DMA 请求; DMA 控制器接到请求后,便往控制总线上发一个总线请求;

如果 CPU允许让出总线,则发一个总线允许信号; DMA控制器接到此信号后,就将地址寄存器的内容送到地址总线上,同时往接口发一个 DMA回答信号,并发一个 1/O读信号和一个内存写信号;

接口接到 DMA回答信号以后,将数据送到数据总线上,并撤除 DMA 请求信号;内存在接收到数据以后,一般往DMA 控制器回送一个准备好信号,于是, DMA 控制器的地址寄存器内容加 1或减 1 ,计数器的值减 1 ,而且撤除总线请求信号,这样,就完成了对一个数据的 DMA 输入传输。

Page 83: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

DMA传输结束时,往接口发一个结束信号,

向 CPU交回总线控制权。其状态寄存器的传输结束标志置“ 1”。

查询时, CPU 在主程序中通过查询状态寄存器的传输结束标志,决定是否进行后续处理。

中断方式时,结束信号可作为送到外设的中断请求信号(也可以送到总线控制逻辑)。

后续程序必须检查出错标志,确定是否重新传输、打印出错信息。

注意: DMA 控制器不能提供中断类型号。

Page 84: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

图 6-8 DMA 控制器内部编程结构和外部连接

8.3.1 8257 芯片内部结构

数据总线缓冲器读写逻辑电路工作方式寄存器状态寄存器优先选择逻辑4 个 DMA 通道

Page 85: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器
Page 86: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

5.8257 工作方式寄存器和状态寄存器

Page 87: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器
Page 88: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

DMA 控制器内部包含一个控制器寄存器和一个状态寄存器,一个地址寄存器和计数器。多通道时,控制寄存器和状态寄存器为本多个通道所公用,而地址寄存器和计数器为本每个通道所独有。

DMA 的初始化: ( 1 )将数据传输缓冲区的起始(结束)地址送到地址寄存器中。 ( 2 )将传输的字节数(字数)送到计数器中。

Page 89: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

三、 8257A 的编程和使用

Page 90: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

第 8章小节

一 . 中断控制器1. 中断的概念 中断 : 外部中断 (硬件中断 ):NMI.INTR 内部中断 (软件中断 ):INTn.INTO.单步 中断过程 : 中断请求 . 中断响应 . 中断处理 .

中断返回

Page 91: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

2.8086 中断系统 1) 中断类型 : 硬件中断 ( 外部中断 ) 内部中断 :与硬件无关 , 不执行中断响应周期 , 除单步中

断外 , 内部中断不可屏蔽 , 优先级高于外部中断2) 中断向量表 :00000~003FFH3. 中断响应过程1). 可屏蔽中断响应过程 响应条件 :TF=1.无总线请求 . 当前指令结束 ①CPU发中断请求信号后 ,CPU回答信号 INTA ②8059给出中断类型码 ,CPU由中断类型码找到中断向

量的地址指针

Page 92: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

③CPU保护断点 :将 CS.IP. 标志寄存器内容入栈④清 IF.TF⑤查中断向量表 ,取中断服务程序首地址⑥执行中断处理程序⑦中断返回2) 非屏蔽中断响应过程 由 NMI 引入 ,CPU优先响应 , 类型码为 2.3). 内部中断响应 由指令或硬件给出 ,无外部逻辑输入 无中断响应周期 与 IF无关 除单步中断外 , 内部中断优先级高于外部中断

Page 93: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

4.8259 中断控制器 可编程中断控制器 : 单片管理 8 级 级联时 :9 片管理 64 级中断 初始化命令字 :ICW1~ICW4 操作命令字 :OCW1~OCW31) 设置优先级方式 全嵌套方式 . 特殊全嵌套方式 . 优先级自动循环

方式2) 屏蔽中断源方式普通屏蔽方式 , 用 OCW1 屏蔽 ,特殊屏蔽方式3). 结束中断方式 自动结束方式 . 非自动结束方式 O

Page 94: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

二 .计数器 / 定时器 82531. 基本结构 3 个通道 :0 、 1 、 2 内部逻辑 :A组 .B组2. 端口的选通 2根地址线 A1A0与读写信号3. 工作方式 方式 0 、 1 、 2 、 4 、 54 、控制字5 、计数初值的确定

Page 95: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

第 8章思考题 :1、说明在 DMA 方式时内存往外设传输数据的过程。2、 DMA 控制器初始化工作包括哪些内容?数值内容:写入要访问的内存地址起始值 写入传输的字节数功能编程:命令寄存器、模式寄存器、请求寄存器 屏蔽寄存器、状态寄存器 3、 DMA 控制器在什么时候作为主模块? 什么时候作为从模块?4、 CPU 对 DMA 控制器提出的总线响应要比中断请求

响应快?因为:

Page 96: 第  8  章 中断控制器 DMA 控制器 计数器 / 定时器

5. 微机中实现定时控制的主要方法是什么?6. 8253每个通道有 ___ 种工作方式可供选择。若设定某通道为方式 0 后,其输出引脚为电平;当 ____ 后通道开始计数,信号端每来一个脉冲就减 1 ;当 __ 则输出

引脚输出_电平,表示计数结束。 8253 的 CLKO 接 1. 5MHZ 的时钟,欲使 OUT 。产生频率为 300kHZ 的方波信号,则 8253 的计数值应为 ____ ,应选用的工作方式是_____.

7. 8088/8086 中断向量表的作用是什么?8. 8259A 中 IRR 、 IMR 和 ISR 三个寄存器的作用是 什么?9. 某时刻 8259A 的 IRR 内容是 08H(00001000B) ,说明 ___

__ 。某时刻 8259A 的 ISR 内容是 08H ,说明 _______ 。在两片 8259A 级连的中断电路中,主片的第 5 级 IR5 作为从片的中断请求输入,则初始化主、从片时, ICW3 的控制字分别是 00100000 和 00000101 .