第 5 章 控制器接口教 案作者:李芷
2003.5.10
《微机原理与接口技术》
第 5章 控制器接口
5.1 中断控制器 8259A
5.2 DMA控制器 8237A
5.3 定时 /计数器 8253
5.1 中断控制器 8259A
5.1.1 8259A的功能
5.1.2 8259A的内部结构和管脚
5.1.3 8259A的中断管理方式
5.1.4 8259A的编程设置
5.1.1 8259A的功能
Intel 8259A中断控制器是把中断源识别,中断优先权排队,
中断屏蔽,中断向量提供等功能集于一身的,专用于微机系统中断管理的大规模集成电路芯片 。
◆ 管理 8个具有优先权的中断,通过级连可以扩展至 64个 。
◆ 每个中断都可以设定屏蔽或开放 。
◆ 有多种中断优先权排队模式 。
◆ 当中断响应时,可提供相应的中断类型号,中断类型号可以由用户设定 。
◆ 可以通过编程设定或变更 8259A的各种工作方式 。
5.1.2 8259A的内部结构和管脚
1,8259A的内部结构数据总线缓冲器
D7~D0
读 /写控制逻辑
RD
WR
CS
A0
级连缓冲
/比较器
CAS0
CAS1
CAS2
SP/EN
中断服务寄存器
( ISR)
优先级分析器
( PR)
中 断 屏 蔽 寄 存 器 ( IMR)
IR0~IR7
中断请求寄存器
( IRR)
INTA INT
控 制 逻 辑初始化命令寄存器组操作命令寄存器组
8259A的工作过程
◆ 中断源在中断请求输入端 IR0~IR7上产生中断请求 。
◆ 中断请求被锁存在 IRR中,并经 IMR屏蔽 /允许,其结果送给优先权电路判优 。
◆ 优先权电路检出当前优先权最高的中断请求位,设置 ISR中的对应位 。
◆ 控制逻辑接受 ISR的中断请求,向 CPU发出中断请求 INT信号 。
◆ 当 CPU从 INTR管脚接受 8259A的 INT信号,进入两个连续中断响应周期 。 第一个响应周期通知 8259A作响应准备,第二个响应周期 8259A将响应的中断类型号输出到数据总线上 。
◆ CPU读取该中断类型号,转移到相应的中断处理程序 。
5.1.2 8259A的内部结构和管脚
2,8259A的管脚及其功能
◆ D7~D0,双向三态数据线,直接和系统数据总线的 8位相连 。
◆ IR0~IR7,中断请求输入线,通常 IR0为最高优先权,IR7为最低优先权 。
◆ INT,中断请求输出线,与 CPU的 INTR中断请求端连接 。
◆ INTA,中断允许线,接受来自 CPU的中断响应信号 。
◆ CS,RD,WR,分别是片选,读命令,写命令信号线,它们相互配合实现对 8259A中不同寄存器的读或写操作 。
◆ A0,端口地址线 。 A0=0,为 8259A偶地址端口,A0=1为 8259A奇地址端口 。
◆ CAS2~CAS0,级连信号线,对于主片 8259A,它是输出线;而对于从片 8259A,它是输入线 。 它们用于多片 8259A的级连控制 。
◆ SP/EN,主从 /允许缓冲线,具有双向功能 。 /作为输入还是输出,取决于 8259A是否采用缓冲方式 。
5.1.3 8259A的中断管理方式
1,优先级设置方式
2,中断屏蔽方式
3,中断结束方式
4,与系统总线的连接方式
5,中断请求的引入方式
8259A中断优先级设置方式
◆ 全嵌套方式全嵌套方式是 8259A最常用的一种工作方式 。 如果 8259A
初始化后没有设置其他优先级方式,那么就按全嵌套方式工作 。 全嵌套方式可以把与它同级或优先权更低的中断请求屏蔽,只有优先权比它高的中断请求才被开放,
实现中断嵌套 。 此时中断优先权的级别是固定的,按
IR0~IR7逐级次之 。
◆ 特殊全嵌套方式特殊全嵌套方式可以响应同级的中断请求,从而实现一种对同级中断请求的特殊嵌套 。 特殊全嵌套方式一般用于 8259A的级连情况 。 主片则必须采用特殊全嵌套方式,
而从片可采用全嵌套方式 。
8259A中断优先级设置方式
◆ 优先权自动循环方式优先权自动循环方式一般用于有多个相同优先权中断的场合 。 当某个中断受到中断服务后,它的优先权就自动降为最低,而与之相邻的优先级就升为最高 。 8259A在设置优先权自动循环方式时,总是先自动规定 IR0优先权最高,IR7最低 。
◆ 优先权特殊循环方式优先权特殊循环方式与优先权自动循环方式相比仅有一点不同,就是在优先权特殊循环方式下,一开始的最低优先权是由编程确定的,而不是自动规定,
从而也就确定了最高优先权 。
8259A中断屏蔽方式
◆ 普通屏蔽方式普通屏蔽方式通过编程将屏蔽字写入 IMR而实现 。 若屏蔽位为,1”,中断请求被屏蔽,为,0”,中断请求被开放 。
◆ 特殊屏蔽方式特殊屏蔽方式是在执行较高级的中断服务时,希望开放较低级的中断请求场合下使用的 。 采用特殊屏蔽方式,先设置特殊屏蔽方式,然后用屏蔽字对 IMR中某一位置,1”
时会同时使 ISR中对应位清,0”,这样不但屏蔽了当前被服务的中断级,同时真正开放了其他优先权较低的中断级 。
这样就可以开放所有未被屏蔽的中断请求,包括优先权较低的中断请求 。
8259A中断结束方式
◆ 自动中断结束方式 ( AEOI)
AEOI方式只用在单个 8259A,且多个中断不会嵌套的情况 。 这种方式在 8259A进入中断响应的后一个中断响应周期信号的后沿,自动将 ISR中被响应中断级的对应位清,0” 。 这是一种最简单的中断结束处理方式 。
◆ 非自动中断结束方式 ( EOI)
EOI方式是一般的中断结束方式 。 这种方式从中断程序返回前,用输出中断结束 ( EOI) 命令把 ISR当前优先权最高的对应位清,0”,结束中断 。
◆ 若 8259A在特殊全嵌套方式下,就用 特殊的中断结束 EOI
命令 。 因为此时 8259A不能确定刚才服务的中断源等级,
只有通过设定特殊中断结束命令,在命令中指出到底要对哪一个中断级清,0” 。
8259A与系统总线连接方式
◆ 缓冲方式在多片 8259A级联系统,8259A通过总线驱动器和数据总线相连,这就是缓冲方式 。 缓冲方式下,8259A的 SP/EN
作为输出端 (低电平 ),和总线驱动器的允许端相连,可作为总线驱动器的启动信号 。
◆ 非缓冲方式在单片 8259A (或只有极少数几片级联 )系统,将 8259A直接连接到数据总线上 。 此时,8259A的 SP/EN作为输入端,
接高电平或低电平 。 单片系统 SP/EN端接高电平,级联系统主片 SP/EN 端接高电平,从片 SP/EN 端接低电平 。
8259A中断请求引入方式
◆ 电平触发方式
8259A将中断请求输入端 IRi出现的高电平作为中断请求信号,因此在 IRi的高电平持续期间,请求信号总是有效的 。 但是,IRi的中断请求被响应后,必须及时将它清除 。
否则,该输入端仍然为高电平,可能引起同一个中断请求被响应多次,这是应该避免的 。
◆ 边沿触发方式边沿触发方式下,8259A将中断请求输入端 IRi上出现的上升沿作为中断请求信号 。 该中断请求得到触发后可以一直保持高电平 。
8259A中断请求引入方式
◆ 查询方式
8259A可以不向 CPU发 INT信号,而是靠程序查询方式,
读取查询字,判断有无中断请求 。 若有,便根据查询字提供的请求服务的编码,转移到对应的服务程序去 。
设置查询方式的过程是:系统先关中断,然后把查询方式命令字 ( OCW3的 D2D1D0 为 0000) 写到 8259A,再对
8259A执行一条读指令,8259A便将一个 8位的查询字送到数据总线上 。 查询字数据位 ( D6~D3未用 ) 的含义为:
D7,表示是否有中断请求标识位 。 D7为 1有中断请求,D7
为 0无中断请求 。
D2 D1 D0,表示 8259A请求服务的最高优先级编码 。
5.1.4 8259A的 编程设置
1,8259A的初始化命令字 ICW
初始化命令字 ICW1—— 芯片控制字
ICW1对 8259A复位,给出是单片还是多片级连等设定。
初始化命令字 ICW2—— 中断类型号命令字
ICW2设定 8259A管理的 8个中断类型号的高 5位。
初始化命令字 ICW3—— 主 /从片初始化字
ICW3定义 8259A级连系统中主 /从片的级连信息。
初始化命令字 ICW4—— 方式控制字
ICW4给出 8259A的工作系统,中断程序是否需要输出 EOI
命令等设定。
5.1.4 8259A的 编程设置
2,8259A初始化设置流程
8259A的编程设置可以分为成两部分 。 首先是 初始化编程,在
8259A工作之前,必须送 2~4个字节的初始化命令字 ICW,使 8259A处于初始化工作方式的就绪状态 。 以后可以根据需要进行工作编程,向
8259A送相关操作命令字 OCW,实现 8259A的操作 。
设置 ICW要特别注意,ICW1应写入 8259A的偶地址端口 ( A0=0),
ICW2,ICW3,ICW4应写入 8259A
的奇地址端口 ( A0=1) 。
No
写 ICW1( A0=0)
写 ICW2( A0=1)
级连?
写 ICW3( A0=1)
要 ICW4?
写 ICW4( A0=1)
初始化结束
No
Yes
Yes
5.1.4 8259A的 编程设置
3,8259A的操作命令字 OCW
操作命令字 OCW1—— 屏蔽操作命令字
OCW1用来设置或清除对中断源的屏蔽 。 若 OCW1的 Di
为 1,则对应的中断被屏蔽;若 Di为 0,则对应的中断被开放 。
操作命令字 OCW2—— 中断方式命令字
OCW2用来设置优先级是否进行循环,循环的方式,以及中断结束的方式 。
操作命令字 OCW3—— 状态操作命令字
OCW3用来设置查询方式,特殊屏蔽方式,以及用来读
8259A的中断请求寄存器 IRR,中断服务寄存器 ISR的当前状态等 。
8259A的 ICW和 OCW操作功能表类型 CS WR RD A0 功能 特征标志或流程写命令
0 0 1 0 数据总线 → ICW1 ICW1的 D4为 1
0 0 1 0 数据总线 → OCW2 OCW2的 D4 D3为 00
0 0 1 0 数据总线 → OCW3 OCW3的 D4 D3为 01
0 0 1 1 数据总线 → OCW1 (IMR) 无
0 0 1 1 数据总线 → ICW2~ICW4 ICW设置流程读状态
0 1 0 0 IRR→ 数据总线 OCW3的 D2 D1 D0为 010
0 1 0 0 ISR→ 数据总线 OCW3的 D2 D1 D0为 011
0 1 0 0 中断标识码 → 数据总线 OCW3的 D2 D1 D0为 100
0 1 0 1 IMR→ 数据总线 无
5.2 DMA控制器 8237A
5.2.1 8237A的基本特点
5.2.2 8237A的内部结构和管脚
5.2.3 8237A的工作方式
5.2.4 8237A的寄存器及其编程应用
5.2.1 8237A的基本特点
◆ Intel 8237A有四个独立的 DMA通道,是高性能的可编程 DMA控制器 。
◆ 8237A是一个接口电路,可以和其他接口一样接受 CPU对它进行 DMA
传输的初始化设置 。 此时,8237A成为系统总线的从控模块 。
◆ 8237A在得到系统总线控制权后,控制整个系统总线完成 DMA传输 。
此时,8237A成为系统总线的主控模块 。
◆ 8237A必须与一片 8位锁存器一起使用,才能完成 DMA传输 。
◆ 8237A的 DMA传输速度高达 1.6MB/秒,一次传输多达 64KB的数据块 。
CPU
存储器总线请求 (HLOD)
总线允许 (HLDA)
DMA
控制器
8237A DMA请求 (DACK)
DMA允许 (DREQ)
I/O
接口
I/O
设备系统总线
5.2.2 8237A的内部结构与管脚
1,8237A的内部结构命令控制逻辑模式寄存器当前地址寄存器 基地址寄存器当前字节计数器 基本字节计数器请求触发器 屏蔽触发器通道 0
通道 1
通道 2
通道 3
控制寄存器 状态寄存器 暂存器时序与读 /写控制逻辑
CLK
RESET
READY
EOP
MEMR
MEMW
IOR
IOW
AEN
ADSTB
CS
HRQ
HLDA
DREQ0~ DREQ3
DACK0~ DACK3
数据
/地址缓冲器
DB7~DB
( A15~A8)
A7~A4
A3~A0
地址缓冲器优先级控制逻辑
5.2.2 8237A的内部结构与管脚
2,8237A的管脚特性
◆ CLK,8237A的工作时钟,频率为 3MHz~5MHz。
◆ RESET,复位信号,高电平有效 。
◆ READY,存储器或外设准备就绪信号 。
◆ CS,片选信号,低电平有效 。
◆ MEMR,MEMW,存储器读信号,写信号,均低电平有效 。
◆ IOR,IOW,输入 /输出设备读信号,写信号,是双向的 。
◆ EOP,DMA传输结束信号,使 8237A内部寄存器复位 。 该信号是双向的,当由外部输入时,DMA传输被强迫性结束;当 8237A
任一通道计数结束时,输出该信号,表示 DMA传输结束 。
◆ DREQ0~DREQ3,分别是 4个通道的 DMA请求信号 。
◆ DACK0~ DACK3,分别是 4个通道的 DMA响应信号 。
◆ HRQ,HLDA,总线请求信号,总线响应信号 。 分别接系统总线的 HOLD,HLDA 。
5.2.2 8237A的内部结构与管脚
2,8237A的管脚特性
◆ A3~A0,低 4位地址线,双向地址信号 。 8237A作为从模块时,
A3~A0输入,对 8237A的内部寄存器寻址 ; 8237A作为主模块时,
A3~A0输出,提供当前地址寄存器中最低 4位地址 。
◆ A7~A4,高 4位地址线,输出或者浮空状态 。 8237A作为主模块时,
提供当前地址寄存器中 A7~A4地址 。
◆ DB7~DB0,8位双向数据线 。 8237A作为从模块时,CPU通过
DB7~DB0,对 8237A读 /写操作,进行编程设置; 8237A作为主模块时,DB7~DB0输出当前地址寄存器中的高 8位地址 A15 ~ A8。
◆ ADSTB,地址选通输出信号,高电平有效 。 把当前地址寄存器的高 8位地址 A15~A8锁存到 DMA外部锁存器 。
◆ AEN,地址允许输出信号,高电平有效 。 把外部锁存器的高 8位地址和 8237A直接输出的低 8位地址送到地址总线 A15~A0,共同组成内存单元的 16位偏移地址 。
5.2.3 8237A的工作方式
8237A 控制 DMA传输的过程
◆ 当某个 DMA通道要求进行 DMA操作时,会向 8237A发出 DMA请求信号 DREQ。 8237A内部有优先权控制逻辑电路,能接收最高优先级通道上的外设请求信号,并向 CPU发出总线请求信号 HRQ。
◆ CPU接到 8237A的 HRQ信号后,如果允许发出 DMA响应信号 HLDA,
让出对总线的控制,即 8237A控制了总线 。 同时,8237A对最高优先级的 DMA通道发出响应信号 DACK,进入 DMA传输周期 。
◆ 在 DMA传输期间,8237A往地址总线发送访问内存单元的 16位地址信号,以及相应的存储器和 I/O设备的读 /写控制信号,控制外设与所寻址的内存单元传输数据 。
◆ 8237A通道的地址寄存器和字节计数器,在初始化时已设置了内存首地址和传输字节数 。 DMA每传输 1个字节,自动对地址寄存器和字节计数器的值进行修改 。 当字节计数器的值减为 0时,发计数结束信号,
EOP,表示 DMA过程结束 。
◆ DMA结束时,8237A向 CPU发出 DMA请求无效信号,
将总线控制权还给 CPU。
5.2.3 8237A的工作方式
1,8237A的工作组态
◆ 从控模块
8237A和其他接口一样,要接受 CPU对它进行 DMA传输的设置 。 所以,8237A也是一个接口电路,有 I/O端口地址,CPU可以通过端口地址对 8237A进行预置读 /写操作,
对它进行初始化或读取状态,包括写入内存传输区的首地址,传输字节数和控制字等,此时,8237A是系统总线的从控模块 。
◆ 主控模块
8237A在得到总线控制权以后,进入 DMA周期,控制整个系统总线完成 DMA传输 。 所以,8237A可以提供一系列 DMA传输的控制信息,像 CPU一样操纵外设和存储器之间的数据传输,此时,8237A又不同于一般的接口电路,作为系统总线的主控模块 。
5.2.3 8237A的工作方式
2,DMA传输方式
⑴ 单字节传输方式单字节传输方式是每进行 1个字节 DMA传输就释放总线,并立即对
DREQ测试 。 若 DREQ为有效电平,8237A又会向 CPU发出总线请求 。
⑵ 块传输方式块传输方式一次连续进行多个字节的传输 。 当字节计数器减为 0时,
8237A发出一个 EOP负脉冲信号,或者从外部接收到一个 EOP低电平信号时,释放总线,结束 DMA传输 。
⑶ 请求传输方式请求传输方式在块传输过程中,每进行 1个字节的传输都测试 DREQ
是否有效,决定是否继续进行 DMA传输 。
⑷ 级联传输方式级联传输方式是用 2片以上的 8237A构成主从式 DMA控制系统 。 主从式的 8237A最多可扩展为 16个 DMA通道 。
5.2.3 8237A的工作方式
3,DMA传输类型在单片或多片级联的 DMA系统,每个通道除了可选择上述四种不同的基本传输方式外,还可以选择以下三种传输类型之一 。
◆ DMA读输出和有效信号,I/O设备读取存储器的数据 。
◆ DMA写输出和有效信号,I/O设备的数据写到存储器 。
◆ DMA校验这是一种伪 DMA传送,目的是对内部读 /写功能进行校验 。 DMA校验同上述两种传输类型一样产生地址信号,
字节计数值,以及对的响应,但禁止了存储器和 I/O接口的读 /写控制信号,即不传送数据 。
5.2.4 8237A的寄存器及其编程应用
1,4个独立通道的寄存器及其设置
◆ 模式寄存器 ( 8位)
模式寄存器用来设置工作方式、决定地址增减、选择是否使用自动预置功能、选择传输类型及选择通道号等。
◆ 基地址寄存器和当前地址寄存器 (均为 16位)
基地址寄存器用来存放本通道 DMA传输的地址初值,在
8237A初始化时写入,同时,初值也写入当前地址寄存器 。
当前地址寄存器的值在每次 DMA传输时自动加 1或减 l
( 取决于模式字 D5位 ) 。 CPU可以随时用输入指令分两次 ( 每次 8位 ) 读出当前地址寄存器的值,而基地址寄存器中的值不能被读出 。 若通道选择为自动预置 ( 取决于模式字的 D4位 ),则在结束成批数据传输产生时,当前地址寄存器恢复到与基地址寄存器同值,即预置的初始值 。
5.2.4 8237A的寄存器及其编程应用
1,4个独立通道的寄存器及其设置
◆基本字节计数器和当前字节计数器 (均为 16位)
基本字节计数器存放 DMA传输字节数的初值 ( 比实际传输的字节数少 l),在 8237A初始化时写入,同时,初值也写入当前字节计数器 。 在 DMA传输时,每传输 1个字节,当前字节计数器的值自动减 l,当由 0减到 FFFFH时,产生计数结束信号 。 当前字节计数器的值也可以分两次读出 。 若通道选择为自动预置,则在有效的同时,当前字节计数器恢复到与基字节计数器同值,即预置的初始值 。
◆请求触发器和屏蔽触发器每个通道都配备 1位的 DMA请求触发器和 1位的 DMA屏蔽触发器 。 它们分别用来设置本通道的 DMA请求标志和屏蔽标志位 。 在物理上,4个请求触发器对应 1个 4位的 DMA请求寄存器,4个屏蔽触发器对应 1个 4位的屏蔽寄存器 。
5.2.4 8237A的寄存器及其编程应用
2,公用的寄存器和命令字
◆ 控制寄存器 ( 8位)
控制寄存器决定 DACK及 DREQ的有效电平、是否扩展写信号、通道的优先级方式、时序类型、启动 /停止 8237A工作、数据传输目标等。
◆ 状态寄存器 ( 8位)
状态寄存器表示各通道是否有 DMA请求和计数结束状态。
◆ 暂存寄存器 ( 8位)
◆ DMA请求寄存器 ( 8位)
在 DMA请求寄存器中写入请求字节,实现对某个通道 DMA请求标志的设置。
◆ DMA屏蔽寄存器 ( 8位)
在 DMA屏蔽寄存器中写入屏蔽字节,实现对某个通道 DMA屏蔽标志的设置。也可以使用综合屏蔽命令一次完成对 4个通道的屏蔽设置。
◆ 清除先 /后触发器命令
◆ 复位命令 (综合清除命令)
使屏蔽寄存器置位,其他所有寄存器和触发器都清 0。
5.2.4 8237A的寄存器及其编程应用
3,各寄存器 /命令字对应的端口地址
A3A2A1A0(16#) 通 道 写操作( IOW=0) 读操作( IOR=0)
0H,2H,4H,6H 0,1,2,3 基地址与当前地址寄存器 当前地址寄存器
1H,3H,5H,7H 0,1,2,3 基本字节与当前字节计数器 当前字节计数器
8H
公共控制寄存器 状态寄存器
9H 请求寄存器
AH 屏蔽寄存器 (单屏蔽位命令 )
BH 模式寄存器
CH 清除先 /后触发器命令
DH 复位命令 暂存器
EH 清屏蔽寄存器命令
FH 全屏蔽位命令
5.2.4 8237A的寄存器及其编程应用
4,8237A的编程示例(例 5.4)
【 例 5.4】 以 IBM PC/XT系统中 8237A的应用说明编程寄存器和命令的使用 。
IBM PC/XT系统的 8237A端口地址为 00H~0FH 。
8237A的通道 0用于动态 RAM刷新,通道 1提供网络通信传输功能,通道 2和通道 3分别用来进行软盘驱动器和硬盘驱动器与内存之间的数据传输。采用固定优先级。
4个 DMA请求信号和应答信号中,只有 DREQ0,DACK0直接和系统主板相连的,DREQ1~DREQ3和 DACK1~DACK3
接总线扩展槽,分别与对应的网络接口板、软盘接口板、
硬盘接口板相关信号连接。
5.3 定时 /计数器 8253
5.3.1 定时 /计数器工作原理
5.3.2 8253的内部结构和管脚
5.3.3 8253的工作方式
5.3.4 8253的应用示例
5.3.1 定时 /计数器工作原理
◆ 定时 /计数器 是一个具有可编程的计数和定时功能的专用芯片 。
◆ 计数和定时功能实现的过程:
在设置好计数初值后,便开始对外部触发脉冲做减,1” 计数,
减为,0” 时,输出一个,计数到,的信号 。
◆ 计数器和定时器两者的差别:
计数器的外部触发脉冲可以是周期恒定的,也可以是随机的,在减到,0” 时,输出一个信号计数结束;而定时器的外部触发脉冲必须是周期恒定的时钟信号,在减到,0” 时,把定时常数自动重新装入,再连续重复减,1” 计数的功能,从而获得一个恒定的周期输出 。
◆ 定时 /计数器常应用在:
多任务的分时系统中产生定时中断信号,实现程序的切换;
产生精确的定时 /计数信号,实现定时数据采集或实时控制;
作为一个可编程的波特率发生器 。
5.3.2 8253的内部结构与管脚
Intel 8253 定时 /计数器 具有以下功能,
◆ 3个独立的 16位计数器通道,既可做 16位计数器,也可做 8位计数器使用 。
◆ 每个计数器可以选择按二进制数,或者十进制数
( BCD码数 ) 进行计数 。
◆ 每个计数器最高计数速率可达 2.6MHz。
◆ 每个计数器都可以编程设定 6种工作方式之一 。
◆ 所有输入 /输出均与 TTL电平兼容 。
5.3.2 8253的内部结构与管脚
1,8253的内部结构数据总线缓冲器D7~D0 计数器 0
控制寄存器计数器 1
计数器 2
初值寄存器输出锁存器减 1计数器
CLK0
GATE0
OUT0
CLK1
GATE1
OUT1
CLK2
GATE2
OUT2
读 /写控制逻辑
RD
WR
CS
A1
A0
5.3.2 8253的内部结构与管脚
2,8253的管脚及其功能
◆ D7~D0,8位、双向、三态数据线,直接和系统数据总线相连。读 /
写 16位数据则分两次进行。
◆ CS,片选信号,低电平有效。
◆ RD,WR,读信号,写信号,低电平时有效。
◆ A1,A0,8253端口选择线。 00~10分别选择计数器 0~2,11选择控制端口。
◆ CLK0~CLK2,分别是计数器 0~2计数脉冲输入端,决定计数的速率。
◆ GATE0~GATE2,分别是计数器 0~2门控输入端,作为对计数允许 /
禁止的控制 。
◆ OUT0~OUT2,分别是计数器 0~2的输出端,反映计数器的计数状态 。
5.3.3 8253的工作方式
1,8253控制字格式
8253控制字( 8位),可以选择计数器、工作方式、计数的数制(二进制或者十进制 —— BCD码)以及 CPU访问计数器的读 /写方法等。
D7 D6 D5 D4 D3 D2 D1 D0
SC1 SC0 RW1 RW0 M2 M1 M0 BCD
计数器选择
0 0,计数器 0
0 1,计数器 1
1 0,计数器 2
1 1,无意义读 /写方法
0 0,锁存计数值
0 1,只读 /写低 8位
1 0;只读 /写高 8位
1 1,先低 8位,后高 8位读 /写 16位工作方式选择
0 0 0:方式 0
0 0 1:方式 1
× 1 0:方式 2
× 1 1:方式 3
1 0 0:方式 4
1 0 1:方式 5
数制选择
0:二进制
1,BCD码
5.3.3 8253的工作方式
8253的 编程 设置
◆ 计数器工作必须先设置控制字,然后写入计数初始值,在门控
( GATE) 有效时启动减 1计数 。
◆ 设置计数初值要符合控制字的计数器位数规定 。 若用低位字节或用高位字节,8位计数初值一次写;若高,低位字节都用,16位计数初值分两次写,先写低字节,后写高字节 。 0是计数器所能容纳的最大计数初值 。
◆ 读取计数器当前的值,可以了解计数动态情况 。 在读计数值之前,
必须用锁存命令 ( 控制字的 D5D4为 00) 把计数值锁存到计数输出寄存器,然后再读 。 否则读数时,计数输出寄存器随减 1计数寄存器动态变化,得不到稳定值 。 当 CPU将锁定计数值读走之后,锁存功能自动失锁,计数输出寄存器又随减 1计数寄存器动态变化 。
◆ 方式 0──计数结束产生中断
◆ 方式 1──可重复触发的单稳态(脉冲)触发器
◆ 方式 2──频率发生器 ( 分频器 )
◆ 方式 3──方波频率发生器
◆ 方式 4──软件触发选通信号发生器
◆ 方式 5──硬件 ( GATE) 触发的选通信号发生器
8253正常计数状态下的 方式 0~方式 5 输出波形 示例
5.3.3 8253的工作方式
2,8253的六种工作方式
8253方式 0~方式 5 的输出波形减 1计数器的值
CLK
写控制字 写 N=4
WR
4 3 2 1 ┅ ┅ ┅
方式 0
OUT
方式 1
OUT
方式 2
OUT
方式 3
OUT
方式 4/5
OUT
8253六种工作方式的共同点,
◆ 每一种工作方式不仅与计数初值有关,而且受 CLK信号和 GATE信号控制 。 CLK信号确定计数器减 1的速率,GATE信号允许 /禁止计数器工作或计数器启动 。
◆ 写入计数初值之后,并不马上开始计数,只有检测到 GATE信号有效,经过一个 CLK周期,把计数初值送到减 1计数寄存器,才开始作减 1操作 。
◆ OUT端随着工作方式的不同和当前计数状态的不同,一定有电平输出变化,而且输出变化均发生在 CLK的下降沿 。 OUT的输出波形在写控制字之前为未定态,在写了控制字之后到计数之前为计数初态,再之后有计数态,暂停态,结束态等 。
◆ 对于给定的工作方式,门控信号 GATE的触发条件是有具体规定的,
或电平触发,或边沿触发,或两者均可 。 GATE的性能表
5.3.3 8253的工作方式
3,8253的六种工作方式比较
8253门控信号 GATE的性能方式 低电平或下降沿 上升沿 高电平
0 禁止计数 — 允许计数
1 — 开始计数,—
2 禁止计数,输出变为低电平 允许计数
3 输出变为高电平 重新设置初值,允许计数
4 禁止计数,开始计数 允许计数
5 输出变为高电平 开始计数 —
5.3.3 8253的工作方式
3,8253的六种工作方式比较
8253六种工作方式的不同点,
◆ 方式 0和方式 4都是由软件触发 (写入计数初值 )启动计数,无自动重装入计数初值能力,除非再写初值。门控信号 GATE高电平时,减
1计数器减 1;低电平时,减 1计数器停止计数。它们的区别是:方式 0在计数过程中 OUT输出为低电平,计数结束时变为高电平,并一直保持;方式 4在计数过程中 OUT输出为高电平,计数结束时输出一个宽度为一个 TCLK的负脉冲,以后又保持高电平。
◆ 方式 1和方式 5均是硬件触发 (GATE上升沿 )启动计数。写入初值之后,在门控信号 GATE的上升沿触发下,初值写入减 1计数寄存器,
开始计数,并且 GATE只在上升沿起作用。它们的区别是:方式 1
在计数过程中 OUT输出一个宽度为计数初值乘以 TCLK的单相负脉冲;方式 5是在计数结束后 OUT输出一个宽度为一个 TCLK的负脉冲。
◆ 方式 2和方式 3的共同点是具有自动重装入计数初值的能力,都是频率发生器 (分频器 )。它们的区别是:方式 2输出占空比为 (n-1):1的矩形波信号,而方式 3输出方波(或近似方波)信号。
5.3.4 8253的应用示例
【例 5.5】 某 8253端口地址为 230H~ 233H,要求从计数器
0的 OUT端得到 400Hz方波信号,计数器 1利用这 400Hz方波,从 OUT端得到 20Hz的连续单拍负脉冲信号,系统提供的计数脉冲源为 200kHz。
该 8253计数器 0的输出为连续方波,应工作在方式 3,而计数器 1的输出为连续单拍负脉冲,则应工作在方式 2。
8253的硬件连接为,GATE0和 GATE1接 +5V,CLK0接系统提供的时钟源 200kHz,OUT0 输出接到 CLK1输入,
OUT1输出就是所要求的 20Hz的连续单拍负脉冲信号 。
计数器 0的计数初值为,200000 /400=500=01F4H,而计数器 1的计数器初值为,400 /20=20=14H。
5.3.4 8253的应用示例
【例 5.6】 IBM PC/XT系统板上 8253的 3个计数器的使用。
IBM PC/XT系统板上 8253的接口电路如 例图 所示。 PCLK来自时钟发生器 8284A的输出时钟,频率为 2.38MHz,经二分频后作为 8253
的 3个计数器的时钟输入,频率为 1.19318MHz。
◆ 计数器 0为方式 3,GATE0固定为高电平,OUT0输出作为中断请求接到中断控制器 8259A的 IR0,用于系统报时时钟和磁盘驱动器的马达定时中断 ( 约 55ms) 。
◆ 计数器 1为方式 2,GATE1固定为高电平,OUT1输出作为对 DMA控制器 8237A通道 0的 DMA请求 DREQ0,用于定时 ( 约 15μs) 启动刷新动态存储器 DRAM。
◆ 计数器 2为方式 3,1KHz的方波输出 。 GATE2由 8255A的 PB0控制,
OUT2输出经过与门,并滤掉高频分量后送到扬声器发声 。 与门控制信号为 8255A的 PB1。 可用 PB1,PB0同时为,高,的时间来控制发声时间 。 长声时间为 3s,短声时间为 0.5s。
◆ 8253的端口地址为 40H~43H,8255A的端口地址为 60H~63H。
8253应用例图(例 5.6)
D7~D0 CLK0
RD CLK1
WR CLK2
8253
CS OUT0
A1 OUT1
A0
GATE2
GATE1 OUT2
GATE0
IR0 (8259)
> Q
D+5V
DREQ0 (8237)
与PB1
(8255)
放大器扬声器
(8284)
PCLK
Q D
Q <
(DB)
IOR
IOW
(8255) PB0
+5V
地址译码
(AB)