第九章《定时计数器8253》

Download Report

Transcript 第九章《定时计数器8253》

LOGO
[email protected]
第九章 定时/计数器8253
Contents
1
8253引脚功能及特点
2
8253内部结构及工作原理
3
8253的控制字及工作方式
4
5
8253与系统总线的接口连接方法
8253的应用和设计
[email protected]
8253简介
定时
分频
方波
[email protected]
§9.1 8253引脚功能及特点
Intel8253是8086/8088微机系统常用的定时/计数器芯片,它具
有定时,计数与分频三大功 能,同类型的定时/计数器芯片
还有Intel8254等,8253是24脚双列直插芯片,用+5V电源供
电。
1、8253的一般性能概述
(1)每个8253芯片有3个独立的16位计数器通道。
(2)每个计数器通道都可以按照二进制或二--十进制计数。
(3)每个通道有6种工作方式,可以由程序设定和改变。
[email protected]
§9.1
8253引脚功能及特点
表1
Intel 公
司生产的
可编程定
时/计数
器 8253
采 用 24 脚
的 DIP 封
装,用作
为 分 频 器、
定时信号
产生器等 。
引脚名
8253引脚定义
功 能
连接去向
数据总线(双向)
CPU
CS
片选信号
译码电路
RD
读信号
CPU
WR
写信号
CPU
端口地址
CPU
C LK 0 ~ C LK 2
3个计数通道的输入时钟
(计数脉冲)
外部
GATE 0 ~GATE 2
3个计数通道的控制信号
外部
3个计数通道的输出信号
外部
Vcc
电源(+5V)
/
GND
地
/
D 0 ~D 7
A 0 ,A 1
O U T0 ~ O U T7
[email protected]
§9.2
8253的原理结构及工作原理
可编程定时/计数器8253的原理结构图
Intel 8253
D7
定时/计数器8253
一共有三个独立
的计数通道
(也称计数器):
计数器0、
计数器1、
计数器2。
~ D0
计数器
RD
WR
地址线
地址
译码
CS
A1
A0
计数器
计数器
GATE0
CLK0
0
OUT0
1
GATE1
CLK1
OUT1
2
GATE2
CLK2
OUT2
lll
[email protected]
§9.2 8253的原理结构及工作原理
CPU
可访问
[email protected]
§9.2 8253的原理结构及工作原理
定时/计数器8253占用4个端口地址,:
寻 址
A 1A 0
COUNTA
0 0
计数通道0
COUNTB
0 1
计数通道1
COUNTC
1 0
计数通道2
COUNTD
1 1
控制字寄存器
其中控制字寄存器用一个端口地址,由控制字中的 D D 位来指
定寻址哪个计数通道,其它3个计数通道各占用一个端口地址。
为本章说明方便,将这四个地址分别用COUNTA、COUNTB、
COUNTC和COUNTD表示。
7
6
通过计数通道的端口地址可以访问通道中的CR、OL,当对通
道进行写操作时,实际上表示将计数初值(即时常数)写入CR;
当对通道进行读操作时,表示将从OL中读取计数值。
[email protected]
§9.3 8253的控制字及工作方式
8253共有 6
种工作方式
工作于哪种方式,由控制寄存器的内容来设定
D7
D6
D5
D4
D3
D2
D1
D0
SC1
SC0
RL1
RL0
M2
M1
M0
BCD
选择计数通道 读写规则
图
工作方式
数据类型
8253的方式控制寄存器
[email protected]
§9.3 8253的控制字及工作方式
三个计数通道的控制寄存器共用一个端口地址,由控制字中
的位 D 7 D 6 (即SC 1SC 0 )来确定计数通道:
含 义
SC 1SC 0
0 0
计数通道0
0 1
计数通道1
1 0
计数通道2
1 1
保留
D7
D6
D5
D4
D3
D2
D1
D0
SC1
SC0
RL1
RL0
M2
M1
M0
BCD
选择计数通道 读写规则
[email protected]
工作方式
数据类型
§9.3 8253的控制字及工作方式
EG: 8253的控制寄存器端口地址为COUNTD
要对计数器0,1,2的三个控制寄存器进行设置,需
要对COUNTD这个地址进行三次访问,执行3次
OUT指令才行。
MOV DX COUNTD
(指向控制寄存器)
MOV AL 00XXXXXX (对计数器0设置)
OUT DX AL
MOV AL 01XXXXXX (对计数器1设置)
OUT DX AL
MOV AL 10XXXXXX (对计数器2设置)
OUT DX AL
[email protected]
§9.3 8253的控制字及工作方式
方式控制字的位D 5 D 4(即 R L 1 R L 0 )用于设定计数通道的读写规则:
含 义
计数通道的锁存命令,即将当前CE的内容锁存到OL
只读写CR或OL的低8位
只读写CR或OL的高8位
如果是16
先读写CR或OL的低8位,再读写高8位
R L 1R L 0
0
0
1
1
0
1
0
1
D7
D6
D5
D4
D3
D2
D1
D0
SC1
SC0
RL1
RL0
M2
M1
M0
BCD
选择计数通道 读写规则
[email protected]
工作方式
数据类型
位时常数
必须分两
次写
为什么不
能 一次送
一个字?
§9.3 8253的控制字及工作方式
方式控制字的 D 3 D 2 D 1 位( M 2 M 1 M )用于设定计数通道的工作方式:
0
含 义
方式0
方式1
方式2
方式3
方式4
方式5
M 2 M 1M 0
0 0
0 0
×1
×1
1 0
1 0
0
1
0
1
0
1
D7
D6
D5
D4
D3
D2
D1
D0
SC1
SC0
RL1
RL0
M2
M1
M0
BCD
选择计数通道 读写规则
[email protected]
工作方式
数据类型
§9.3 8253的控制字及工作方式
方式控制字的最低位 D (即BCD位)用于指定读
0
写数据的格式,当BCD=0时,表示读写数据为二
进制数,当BCD=1时,表示读写数据为两位十进
制数。
D7
D6
D5
D4
D3
D2
D1
D0
SC1
SC0
RL1
RL0
M2
M1
M0
BCD
选择计数通道 读写规则
[email protected]
工作方式
数据类型
§9.3 8253的控制字及工作方式
8253的初始化编程
 EG. 8088系统上,8253
的地址为40H~43H,计
数器0计数初值为23,工
作在工作方式2,十进制
计数;计数器1的计数初
值为100,工作在工作方
式0;计数器2计数初值
为1000,工作在工作方
式5。试写出该8253的
控制字初始化程序段。
[email protected]







MOV DX, 43H
MOV AL, 00110101B
OUT DX, AL
MOV AL, 01010000B
OUT DX, AL
MOV AL, 10111010B
OUT DX, AL
§9.3 8253的工作方式
名词介绍:
(1) CLK脉冲:是指CLK上从上升沿到下降沿的
时间
(2)计数器: 与计数通道的含义一致
(3) 时常数: 是指通过指令写入到计数器的
值,可以理解成计数器的初值。
[email protected]
§9.3 8253的控制字及工作方式
1.方式0 —— 计数达到终值时中断
功能:给定时间t0,当到达时间t0时,需要进行某种操作。
1.当写入方式控制字后,OUT=0
2.写入时常数后,开始计数,计数器达到0时变高电平
3.再次写入时常数,开始新一轮计数
控制信号GATE可以暂停计数操作,来加长定时的时间(在时常
数不变的情况下)
当GATE=0时,表示相应的计数器暂停计数;
当GATE=1时,表示相应的计数器正常计数。
[email protected]
§9.3 8253的控制字及工作方式
写方式
控制字
写
时常数
写时常
数(4)
…
WR
CLK
…
N+1个时钟周期
OUT
CE的内容(N表示不
确定值)
CE的高位字节
CE的低位字节
N
00
04
00
03
GATE=1情况下方式0计数过程
减1计数到00之
前变成高电平
[email protected]
00
02
00
01
00
00
FF
FF
计数到达终值后,
输出高电平,但
CE继续减1计数
§9.3 8253的控制字及工作方式
写时常
数(4)
WR
CLK
GATE
OUT
CE
N
00
04
00
03
00
03
00
03
00
03
00
03
00
02
00
01
00
00
利用GATE信号加长OUT端的低电平宽度
[email protected]
FF
FF
§9.3 8253的控制字及工作方式
写时常
数(4)
写时常
数(4)
WR
CLK
OUT
CE
N
00
04
00
03
00
02
00
01
00
04
00
03
00
02
00
01
00
00
FF
FF
利用写入新的时常数加长OUT端的低电平宽度
[email protected]
§9.3 8253的控制字及工作方式
方式0具有下列一些特点:
 在向8253置方式字或置时常数时,OUT输出变成低电平;




置入时常数后,下一个CLK脉冲,使CR内容(初值)置入计数单元;
在后续CLK脉冲,进行“减1”计数;
当计数至0时,OUT由低变高,并继续计数,从0到0FFFFH;
上述计数过程要受GATE控制,当GATE=1时允许计数,当GATE=0时则暂停
计数;
 正常情况下,即GATE=1,对计数器置入时常数N时,要经过N+1个时钟周
期才能使OUT输出高电平;
 OUT端由低变高信号可用作为中断请求信号,表示已达到了预定的时间;
 在计数过程中,如GATE变为低电平,这时只是暂停计数,等待GATE信号
变为高电平后,计数器继续“减1”计数。
 在计数过程中,如果重新写入计数初值,就重新开始重新计数,延长OUT
端的低电平。
[email protected]
§9.3 8253的控制字及工作方式
例题,对8253(地址:40H~43H)写控制字,将计数器0
设置成工作方式0,假设时常数为1500,写出初始化程序:
计数器的初始化分为两部分
写控制字 和 写时常数
分析:
1.设置工作方式,通过写控制字实现
2.控制字分析:时常数=1500要用16位寄存器
00 11 000 0 B
3.控制字端口地址:43H
4. 计数器0的地址:40H
5.向计数器零写时常数1500
[email protected]
MOV
MOV
OUT
DX,
AL,
DX,
43H
0011 0000B
AL
MOV
MOV
OUT
XCHG
OUT
DX,
AX,
DX,
AL,
DX,
40H
1500
AL
AH
AL
反过来,给出控制自己,要能分
析出8253的工作方式
§9.3 8253的控制字及工作方式
2.方式1 —— 硬件触发的单脉冲形成
功能:用硬件触发形成单脉冲。
1.当写入方式控制字后,OUT=1
2.写入时常数,OUT端无变化
3.GATE上升沿触发计数开始,下一个时钟,OUT=0
4.减1计数,计数器达到0时 OUT=1
写方式
控制字
写时常
数(4)
WR
CLK
GATE
OUT
CE
N
N
N
00
04
00
03
00
02
[email protected]
(a)
00
01
00
00
FF
FF
00
04
00
03
§9.3 8253的控制字及工作方式
在第一次硬件触发产生单脉冲完成之前,又
来了一个触发信号,从而使单脉冲宽度变宽
[email protected]
§9.3 8253的控制字及工作方式
写方式
控制字
写时常
数(4)
写时常
数(6)
WR
CLK
GATE
OUT
CE
N
N
N
00
04
00
03
00
02
00
01
00
00
FF
FF
00
06
00
05
(c)
在某次单脉冲完成之前,又写入了新的时常数,
下次单脉冲才采用新时常数
[email protected]
§9.3 8253的控制字及工作方式
方式1具有下列一些特点:
在置方式1的控制字或置入时常数后,不影响输出,OUT端仍输出高电平;
在GATE端输入有效的触发信号(上升沿),并经过一个CLK脉冲,OUT变为
低电平,作为单脉冲的开始,同时将CR读入CE,并开始“减1”计数;
当CE计数到0之前,OUT端变为高电平,表示本次单脉冲形成结束;
正常情况下,当计数通道的时常数为N时,硬件触发所产生的单脉冲(低
电平)的宽度为N个计数时钟周期;
每个触发信号都可以形成一个单脉冲,但如果在单脉冲低电平期间再加入
触发信号,则可以使单脉冲宽度加宽;
在单脉冲形成期间,向CR置入新的时常数,但未加触发信号,则本次单脉
冲的形成不受影响,之后的触发信号才使用新的时常数。
[email protected]
§9.3 8253的控制字及工作方式
方式0和方式1的异同
相同点
输入方式一样:都是给定初值,进行减1计数
输出形式一样:都是输出低电平信号,在计数器减到0以后转为高电平
功能一样:
都是定时器
不同点
触发形式不一样:
方式0: 软件触发,通过写时常数进行新一次计数的开始
方式1: 硬件触发,通过GATE0的一次上升沿触发新一次计数的开始
持续时间不同:
方式0: N+1个时钟周期的低电平
方式1: N
个时钟周期的低电平
[email protected]
§9.3 8253的控制字及工作方式
例题,控制8253,将计数器2设置为工作方式1,时常数为15,
采用低8位寄存器计数,写初始化程序:
分析:
1.设置工作方式,通过写控制字实现
2.控制字分析:时常数=15,要低8位寄存器
01 10
001 0 B
3.控制字端口地址:COUNTD
4.计数器2端口地址: COUNTC
4.向计数器零写时常数15
[email protected]
MOV
MOV
OUT
DX,
AL,
DX,
COUNTD;
1001 0010B
AL
MOV
MOV
OUT
DX,
AL,
DX,
COUNTC;
15
AL
§9.3 8253的控制字及工作方式
 EG. 8088最大系统下,8253的地址范围为370H~373H,输入时
钟为1MHz方波,先将计数器0和计数器1分别设置在工作方式0和工
作方式1,时常数均为7,写初始化程序,GATE有效,画输出波形。
?
?
[email protected]
MOV
MOV
OUT
MOV
OUT
DX, 373H
AL, 00010000B
DX, AL
AL, 01010010B
DX, AL
MOV
MOV
OUT
MOV
OUT
DX,
AL,
DX,
DX,
DX,
370H
7
AL
371H
AL
§9.3 8253的控制字及工作方式
 EG. 8253的计数器0和计数器1分别输出波形如下,写初始化程序。
[email protected]
MOV
MOV
OUT
MOV
OUT
DX, COUNTD
AL, 00010000B
DX, AL
AL, 01010010B
DX, AL
MOV
MOV
OUT
MOV
OUT
DX,
AL,
DX,
DX,
DX,
COUNTA
7
AL
COUNTB
AL
§9.3 8253的控制字及工作方式
思考:计数器工作在工作方式1的时候,
能否产生具有一定频率的周期信号?
[email protected]
§9.3 8253的控制字及工作方式
3.方式2 —— 分频脉冲形成
功能:方式2类似于N分频器,利用这种方式可以产生周期信号。




在正常情况下(GATE=1),
将计数器设置成方式2后(写完控制字),OUT端输出高电平;
向CR置入时常数N后,下一个CLK脉冲开始“减1”计数;
当计数到0001H时,OUT端变为低电平,经过一个CLK脉冲,OUT
端再次变为高电平,产生一个时钟周期的负脉冲,
与此同时,重新将时常数从CR读入CE,并继续计数。
这样,就可以产生周期为N的分频信号。
[email protected]
§9.3 8253的控制字及工作方式
重
点
正常情况下(即GATE=1)的分频脉冲形成,当时常数为
N时,则OUT产生的信号为计数时钟的N分频,高电平为
(N-1)个计数时钟周期,低电平为1个计数时钟周期。
[email protected]
§9.3 8253的控制字及工作方式
硬件触发
GATE信号的作用效果,当GATE为低电平时,计
数器暂停计数,GATE端的上升沿使计数器重新
读入时常数。
[email protected]
§9.3 8253的控制字及工作方式
软件触发
写入新的时常数的情况,只能在下一次分频
脉冲后起作用。
[email protected]
§9.3 8253的控制字及工作方式
方式2具有下列一些特点:
在置方式2的控制字后,OUT端变为高电平;
在置入时常数后,下一个CLK脉冲期间,将时常数从CR读入
CE,并开始“减1”计数;
当CE计数到01时,在OUT端输出一个负脉冲,并重新读入时
常数进行计数;
正常情况下,当计数通道的时常数为N时,OUT产生的信号
为计数时钟的N分频;
OUT产生的分频信号,有两种同步方式:向CR写入新的时常
数(称为软件同步)和在GATE端产生上升沿(称为硬件同
步);
当GATE=0时,计数器暂停计数。
[email protected]
§9.3 8253的控制字及工作方式
EG,用8253的计数器1生成5分频信号,采用低8位时常数
计数。写初始化程序,画输出信号波形。
分析:
(1)5分频
计数器时常数 N=5
(2)控制字分析: 01010100B
[email protected]
MOV
MOV
OUT
DX,
AL,
DX,
COUNTD
1001 0100B
AL
MOV
MOV
OUT
DX,
AL,
DX,
COUNTB
5
AL
§9.3 8253的控制字及工作方式
时常数计算
EG1. 输入信号CLK频率为2MHz,输出信号频
率为1KHz, 时常数 = ?2000
EG2. 输入信号CLK周期为1us,输出信号周期
为1.3ms, 时常数 = ? 1300
EG3. 输入信号CLK频率为1MHz,输出为如下
的周期信号, 时常数 = ?4500
1.5ms
4ms
3
[email protected]
§9.3 8253的控制字及工作方式
4.方式3 —— 方波信号形成(分频)
功能:方式3类似于方式2,只是在OUT上产生对称的或近似对称的方波。
 输出信号的周期取决于输入时常数N
 当N为偶数时,输出对称方波
当N为奇数时,输出近似对称方波
(高电平比低电平多一个时钟周期)
N=4
N=5
[email protected]
§9.3 8253的控制字及工作方式
在正常情况下(GATE=1),将计数器设置成方式3后,OUT端输
出高电平;
向CR置入时常数N(设N为偶数)后,下一个CLK脉冲将时常数从
CR读入CE,并开始“减2”计数。
当计数到0时,OUT端变为低电平;重新将时常数从CR读入CE,
并进行“减2”计数。
当计数到0时,OUT端再次变为高电平,产生一个时钟周期的方
波信号。重复这一过程,可以产生周期为N的对称方波信号。
[email protected]
§9.3 8253的控制字及工作方式
 当设定的时常数N为奇数时,
 在将时常数从CR读入CE时会自动减1,使CE中的初值变成N-1
(偶数)
 OUT端输出高电平,并开始“减2”计数
 当计数到0时,再经过1个CLK后使OUT端变成低电平
 重新将时常数从CR读入CE,并进行“减2”计数,当计数到0时,
OUT端再次变为高电平,重复这一过程,可以产生周期为N的近似
对称方波。
[email protected]
§9.3 8253的控制字及工作方式
重
点
应用:生成低频的时钟信号
正常情况下(即GATE=1)的对称方波信号形
成,时常数N为偶数
[email protected]
§9.3 8253的控制字及工作方式
为正常情况下的近似对称方波信号形成,
时常数N为奇数
[email protected]
§9.3 8253的控制字及工作方式
表示GATE信号的作用效果(时常数N为奇数),当
GATE为低电平时,计数器暂停计数,GATE端的上
升沿使计数器重新读入时常数。
[email protected]
§9.3 8253的控制字及工作方式
方式3具有下列一些特点:
在置方式3的控制字后,OUT端变为高电平;
在置入偶数的时常数后,OUT端变为高电平,下一个CLK脉冲期间,将
时常数从CR读入CE,并开始“减2”计数;当CE计数到0时,OUT端输出
变为低电平,并重新读入时常数进行计数;当再次计数到0时,OUT端
输出变为高电平,产生一个周期的对称方波信号;
在置入奇数的时常数后,OUT端变为高电平,下一个CLK脉冲期间,将
时常数从CR读入CE时自动减1,并开始“减2”计数;当CE计数到0时,
再经过1个CLK后使OUT端变成低电平;并重新读入时常数进行计数;当
再次计数到0时,OUT端输出变为高电平,产生一个周期的近似对称方
波信号;
正常情况下,当计数通道的时常数为N时,OUT产生的信号为计数时钟
的N分频方波信号;
OUT产生的方波信号,有两种同步方式:向CR写入新的时常数(称为
软件同步)和在GATE端产生上升沿(称为硬件同步);
当GATE=0时,计数器暂停计数。
[email protected]
§9.3 8253的控制字及工作方式
EG,8254计数器0接在8086CPU的CLK时钟上,要求计数器
0的输出为0.5MHZ的新时钟方波,写初始化程序。
分析:8086CPU的CLK主频:5MHZ
现要求0.5MHZ
周期是CLK的10倍
时常数N=10
[email protected]
MOV
MOV
OUT
DX,
AL,
DX,
COUNTD
0001 0110B
AL
MOV
MOV
OUT
DX,
AL,
DX,
COUNTA
10
AL
§9.3 8253的控制字及工作方式
EG,8254计数器0接在8086CPU的CLK时钟上,要求计数器0的
输出为1MHZ的新时钟方波,计数器2产生1Hz的单脉冲周期信
号。写初始化程序,画出8253引脚连接图和OUT0的输出波形。
级联的准则:
分析: 8086时钟:5MHz
计数器0输出:1MHz
分析: 8086时钟:5MHz
计数器2输出:1Hz
两个时常数均在计数范围之内
5000000分频>65535
两个计数范围之积等于总分频数
5分频
时常数N0=5
[email protected]
级联
5000*1000
§9.3 8253的控制字及工作方式
5MHz
1MHz
N=5
5MHz
1KHz
N=5000
N=1000
1Hz
[email protected]
MOV DX, COUNTD
MOV AL, 00010110B
OUT DX, AL
MOV AL, 01110110B
OUT DX, AL
MOV AL, 10110100B
OUT DX, AL
MOV DX, COUNTA
MOV AL, 5
OUT DX, AL
MOV DX, COUNTB
MOV AX, 5000
OUT DX, AL
XCHG AL, AH
OUT DX, AL
MOV DX, COUNTC
MOV AX, 1000
OUT DX, AL
XCHG AL, AH
OUT
DX, AL
§9.3 8253的控制字及工作方式
5MHz
N=5
1MHz
N=1000
1KHz
N=1000
1Hz
级联的方式自选,但随着级联方
式不同,时常数设定随之改变
[email protected]
MOV DX, COUNTD
MOV AL, 00010110B
OUT DX, AL
MOV AL, 01110110B
OUT DX, AL
MOV AL, 10110100B
OUT DX, AL
MOV DX, COUNTA
MOV AL, 5
OUT DX, AL
MOV DX, COUNTB
MOV AX, 1000
OUT DX, AL
XCHG AL, AH
OUT DX, AL
MOV DX, COUNTC
MOV AL, 1000
OUT DX, AL
XCHG AL, AH
OUT
DX, AL
§9.3 8253的控制字及工作方式
5.方式4 —— 软件触发产生选通信号
 将计数器设置成方式4后,OUT端输出高电平;
 向CR置入时常数N后,下一个CLK脉冲将时常数从CR读入
CE,并开始“减1”计数;
 当计数到0时,OUT端变为低电平,经过一个CLK脉冲,
OUT端再次变为高电平,完成一次选通信号的产生。
 当再次写入时常数N时,OUT端将经过(N+1)计数时钟
周期后产生负的选通信号。
[email protected]
§9.3 8253的控制字及工作方式
[email protected]
§9.3 8253的控制字及工作方式
表示GATE低电平信号的作用效果,
它使计数器暂停计数;
[email protected]
§9.3 8253的控制字及工作方式
在某次选通信号形成之前,又写入了新的时常
数,这时本次选通信号不再形成。
[email protected]
§9.3 8253的控制字及工作方式
方式4具有下列一些特点:
在置方式4的控制字或置入时常数后,OUT端输出高电平;
在正常情况下(GATE=1),从软件触发(写入时常数后),
经过(N+1)计数时钟周期,产生一个宽度为一个计数时钟周
期的低电平。
每次写入时常数都可以形成一个选通信号,但如果在未完成选
通信号形成之前,又写入时常数,则本次选通信号不再产生;
当GATE=0时,可以使计数器暂停计数,但CE中的内容不变,
一旦GATE变为高电平,CE会继续计数,以完成本次选通信号的
形成。
[email protected]
§9.3 8253的控制字及工作方式
EG,计数器1设置成方式4,并且采用低8位时常数,假
设时常数为7,写初始化程序,画输出波形:
MOV
MOV
OUT
MOV
MOV
OUT
DX,
AL,
DX,
DX,
AL,
DX,
COUNTD
0101 1000B
AL
COUNTB
7
AL
[email protected]
;写入8253的方式控制字
;计数器1置入时常数
§9.3 8253的控制字及工作方式
6.方式5 —— 硬件触发产生选通信号
功能:方式5与方式4类似,只是每次选通信号的产生是
由硬件触发的。
在方式5下,OUT端初始值为高电平。
在正常情况下(GATE=1),将计数器设置成方式4或
写入时常数时,都使OUT端输出高电平;
当GATE端输入上升沿时,其下一个CLK脉冲可以将时常
数从CR读入CE,并开始“减1”计数;
当计数到0时,OUT端变为低电平,经过一个CLK脉冲,
OUT端再次变为高电平,完成一次选通信号的产生。
[email protected]
写方式
控制字
方式5的计数过程如右
图所示。
写时常
数(3)
WR
CLK
GATE
图(a)表示正常情况;
OUT
CE
图(b)表示在第一次
硬件触发产生选通信
号完成之前,又来了
一个硬件触发信号,
从而使选通信号的产
生时间延迟;
N
写方式
控制字
N
N
00
03
00
02
00
01
00
00
FF
FF
写时常
数(5)
FF
FE
00
03
00
02
00
01
00
00
00
02
00
01
00
00
FF
FF
00
03
00
02
00
01
00
00
FF
FF
(a)
WR
CLK
GATE
OUT
CE
图(c)表示在某次单
脉冲完成之前,又写
入了新的时常数,这
时不影响本次选通信
号的形成,下次选通
信号才采用新的时常
数。
N
N
N
写方式
控制字
N
N
00
05
写时常
数(4)
00
04
00
03
00
05
00
04
00
03
(b)
写时常
数(3)
WR
CLK
OUT
CE
N
N
[email protected]
N
N
00
04
00
03
00
02
00
01
00
00
FF
FF
(c)
FF
FF
§9.3 8253的控制字及工作方式
方式5具有下列一些特点:
在置方式5的控制字或置入时常数后,OUT端仍输出高电
平;
在正常情况下,GATE端的每个上升沿都将会在OUT端产
生的选通信号,从硬件触发到产生有效的低电平之间的时
间间隔为(N+1)计数时钟周期,低电平宽度为一个计数
时钟周期;
如果在未完成选通信号形成之前,GATE端又输入了上升
沿,则本次选通信号不再产生;
[email protected]
§9.3 8253的控制字及工作方式
Intel 8253有6种工作方式,它们之间具有一些共同特点,先总
结如下:
(1)置方式字时,起到逻辑复位的功能;
(2) GATE信号的有效形式:
方式0、方式4: 电平控制 (软件触发)
方式1、方式5: 上升沿触发(硬件触发)
方式2、方式3: 硬件和软件都能触发
(3) CR内容装入计数单元CE的时刻:
方式0、方式4: 写时常数
方式1、方式5: 硬件触发
方式2、方式3: 写时常数、硬件触发和自动重装
16
计数最大值为0(即 2 ),在方式0、1、4、5下,CE计数到0后
,并未停止计数,而是从0->0FFFFH->0FFFEH继续“减1”计数;在
方式2、3下,CE计数到0后,自动装入初值计数。
[email protected]
§9.3 8253的控制字及工作方式
总结6种工作方式
方式0
计数 持续低电平到计数达终值恢复高电平
方式1
方式2
方式3
方式4
方式5
分频
周期为CLK的N倍的周期信号
计数
持续高电平,到计数达到终值时输出
一个时钟的负脉冲信号
[email protected]
§9.3 8253的控制字及工作方式
分析执行下列语句,执行的功能,画输出结果
(假设所有计数器的GATE都有效)
MOV DX, COUNTD
MOV
MOV
OUT
MOV
OUT
AL, 00010000B
DX, AL
AL, 4
COUNTA, AL
MOV
OUT
MOV
OUT
AL, 01010010B
DX, AL
AL, 4
COUNTB, AL
MOV AL, 00010110B
OUT DX, AL
MOV AL, 01011000B
OUT DX, AL
MOV AL, 10011010B
OUT DX, AL
MOV
OUT
MOV
OUT
AL, 10010100B
DX, AL
AL, 4
COUNTC, AL
[email protected]
DX, COUNTD
MOV AL, 4
OUT COUNTA, AL
OUT COUNTB, AL
OUT COUNTC, AL
反过来,给出时序图,
能否分析出控制字?
写出初始化和设置初值的程序?
[email protected]
EG. 8253的输出波形如下,写出初始化函数和
赋值语句
GATE
OUT1
[email protected]
§9.4 8253的计数与取值
在任何时刻都可以读取某个计数器的当前计数值,这应该分两步实现:
 输出计数器锁存命令,将方式控制字中 R L 1 R L=00B,这样可以将相应计数通道
0
中的当前计数值锁存到OL锁存器,而CE会继续计数;
 用IN指令读取OL内容。
例如,要读取计数器1中的计数值,其程序如下:
MOV
DX, COUNTD
;输出计数器锁存命令
MOV
AL, 0100 0000B
OUT
DX, AL
MOV
DX, COUNTB
IN
AL, DX
;从OL读取低位字节
XCHG
AH, AL
IN
AL, DX
;从OL读取高位字节
XCHG
AH, AL
这时,AX的内容就是计数器1的当前计数值
[email protected]
§9.4 8254与8253的区别
Intel 8254是8253的改进型,它与8253的主要区别有:
允许的计数脉冲(CLK)的频率范围不同:
8253:
8254:
8254-2:
最大时钟频率为2MHz
最大时钟频率为8MHz
最大时钟频率为10MHz
在8254中,每个通道中还有一个状态寄存器,CPU通过它可
以读取其状态。
后者需要两个步骤:(1)可通过“读回”命令读取8254的计数值和状态信息,
其格式如下图所示,端口地址为 A 1 A 0=11B。CNT2~CNT0用于选择计数通道,“1”表
示选中; C O U N T =0表示锁存选中计数器的计数值;
S T A T U S =0表示锁存选中计数器的状态值。
D7
D6
D5
D4
1
1
COUNT
STATUS
图
D3
D1
CNT2 CNT1 CNT0
“读回”命令格式
[email protected]
D2
D0
0
§9.4 8254与8253的区别
(2)读取计数值或状态。当 ( C O U N T )=0时,后续对相应计数器的
读操作 (一次或二次),可以获得计数值,并对锁存器进行“解锁”
,即下次“读回”命令可锁存新的计数值;如果“读回”命令后,并没
有取走计数值,则下次“读回”命令不起作用。当 ( S T A T U S )=0时,
则后续对相应计数器的读操作,可读取计数器的状态字节,其格式如下
图所示,其中OUTPUT给出了相应计数通道的OUT端的信号电平;NULL
COUNT=0表示可以读取计数值,NULL COUNT=1则表示时常数还没有从
CE装入到CE,这时读取的计数值没有意义;其它6位的值与方式控制字
相同。
D7
D6
D5
D4
D3
D2
D1
D0
OUTPUT
NULL
COUNT
RL1
RL0
M2
M1
M0
BCD
图 计数器状态
[email protected]
作业:
9.2 9.3 9.6 9.10
[email protected]
LOGO
[email protected]
LOGO
[email protected]
第九章 定时/计数器8253
(二)
Contents
1
8253引脚功能及特点
2
8253原理结构及工作原理
3
8253的控制字及工作方式
4
8253与系统总线的接口方法
5
8253的应用和设计
[email protected]
§9.4 8253的总线接口方法
在采用8253进行定时/计数器设计时,首先应该
将它与CPU正确连接,在已经设计好8086系统总
线情况下,可以直接利用系统总线中的信号与
8253连接。
这里给出三种系统总线情况下8253的连接方法:
 8086的最小方式
 8086的最大方式
 IBM PC系统机。
[email protected]
§9.4 8253的总线接口方法
1.8086最小工作方式下的8253连接
CPU接口
在8086系
统中,
8253的地
址范围要么
全为奇数,
要么全为偶
数
8086
CPU
最小
方式
外设接口
D7
D7 D 0
~
D8 D15
~
RD
WR
RD
A1
A2
A1
M/IO
A15
A0
=0
…
…
A3
A0
CLK0
GATE0
OUT0
WR
系统
总线
~ D0
译码
电路
CS
Intel
8253
CLK1
GATE1
OUT1
CLK2
GATE2
OUT2
=0
图 8086最小方式系统总线与8253的连接框图
[email protected]
§9.4 8253的总线接口方法
2.8086最大工作方式下的8253连接
外设接口
CPU接口
D7
~ D0
D7
IOR
IOW
RD
~ D0
8086
CPU
最大
方式
CLK0
GATE0
OUT0
WR
A2
A1
A1
A0
Intel
8253
CLK1
GATE1
OUT1
系统
总线
A15
…
…
A3
A0
译码
电路
=0
[email protected]
CS
CLK2
GATE2
OUT2
§9.4 8253的总线接口方法
3. 与IBM PC机的连接
外设接口
CPU接口
D7
IBM
PC机
系统
总线
~ D0
D7
IOR
IOW
RD
A1
A0
Intel
8253
CLK1
GATE1
OUT1
=0
…
…
A3
A0
CLK0
GATE0
OUT0
WR
A2
A1
AEN
A15
~ D0
译码
电路
CS
=0
[email protected]
CLK2
GATE2
OUT2
§9.2 8253的原理结构及工作原理
CPU
可访问
[email protected]
§9.3 8253的控制字及工作方式
8253共有 6
种工作方式
工作于哪种方式,由控制寄存器的内容来设定
D7
D6
D5
D4
D3
D2
D1
D0
SC1
SC0
RL1
RL0
M2
M1
M0
BCD
选择计数通道 读写规则
图
工作方式
数据类型
8253的方式控制寄存器
[email protected]
§9.3 8253的控制字及工作方式
总结6种工作方式
方式0
计数 持续低电平到计数达终值恢复高电平
方式1
方式2
方式3
方式4
方式5
分频
周期为CLK的N倍的周期信号
计数
持续高电平,到计数达到终值时输出
一个时钟的负脉冲信号
[email protected]
§9.3 8253的控制字及工作方式
Intel 8253有6种工作方式,它们之间具有一些共同特点,先总
结如下:
(1)置方式字时,起到逻辑复位的功能;
(2) GATE信号的有效形式:
方式0、方式4: 电平控制 (软件触发)
方式1、方式5: 上升沿触发(硬件触发)
方式2、方式3: 硬件和软件都能触发
(3) CR内容装入计数单元CE的时刻:
方式0、方式4: 写时常数
方式1、方式5: 硬件触发
方式2、方式3: 写时常数、硬件触发和自动重装
16
计数最大值为0(即 2 ),在方式0、1、4、5下,CE计数到0后
,并未停止计数,而是从0->0FFFFH->0FFFEH继续“减1”计数;在
方式2、3下,CE计数到0后,自动装入初值计数。
[email protected]
8253
应用
举例
根据题目要求分析写初始化程序
根据题目要求画输出波形
针对某种方式的波形分析初始化程序
N分频的级联
根据题目要求实现一定的复杂波形
根据复杂波形进行电路分析设计
[email protected]
§9.4 8253的总线接口方法
 EG1. 8088最大系统下,8253的地址范围为340H~343H。输
入时钟频率为2M赫兹,实现输出频率为1Hz的方波。画连接图,写
初始化程序和时常数赋值程序。
MOV
MOV
+5V OUT
MOV
OUT
+5V
DX, 343H
MOV超过了最大计数范围
DX, 340H
2MHz
65536
AL, 00110110B MOV AX,
2000
DX, AL
OUT DX, AL
1KHz 分析:
AL, 01110110B XCHG AL, AH
DX, AL
OUT DX, AL
输入2MHz
2000000分频
输出1Hz
MOV DX, 341H
1HzMOV AX, 1000
级联分频
OUT DX,
AL
XCHG AH, AL
OUT
DX, AL
计数器0的时常数:2000
计数器1的时常数:1000
[email protected]
时常数可以做
合理的调整
§9.4 8253的总线接口方法
 EG2.8086最小系统下,扩充设计1片8254,端口地址为
8000H~8007H中的连续偶地址。输入时钟信号为4MHz,要求通过三
个定时器级联,实现从OUT0输出频率为1000Hz的方波,从OUT1输出
频率为100Hz的单时钟脉冲波,从OUT2输出频率为1Hz的方波。
 画级联图,并写出初始化程序和时常数赋值程序
CLK0=4MHz
OUT0=1KHz
4000
分频
OUT0=1KHz
计数器0:工作方式3,时常数4000
CLK1=1KHz
10
10 计数器0:工作方式3,时常数4000
计数器1:工作方式2,时常数10
分频 计数器1:工作方式2,时常数10分频
OUT1=100Hz
计数器2,:工作方式3,时常数100
计数器2,:工作方式3,时常数1000
1000
CLK2=100Hz 100
分频
分频
OUT2=1Hz
[email protected]
§9.5 8253的总线接口方法
EG3. 在以8086构成的最大方式系统中,有一片8254的端
口地址分别为301H、303H、305H和307H,给定的外部时钟
为512kHz。要求:
(1) 利用计数器0产生周期为1ms的周期信号,请编写初始化程序;
(2) 利用这一计数器能产生的最低信号频率为
,这时的时常数
CR0=
。
(3)利用计数器1和2产生如下图所示的周期信号,并编写初始化程序。
(4)画出8253的端口译码电路(地址线只使用 A0~A9)及其连接图。
1.5ms
3s
图
8253所要产生的周期信号
[email protected]
EG.8086最大方式系统中,有8254的端口地址分别为
301H、303H、305H和307H,给定的外部时钟为512kHz
 (1) 利用计数器0产生周期为1ms的周期信号,请编写初始化程序;
Step1:分析工作方式: 周期信号
方式2
或
方式3
00110100B 或 00110110B
Step2:工作方式控制字:
Step3:分析时常数:
输出信号周期: Tout =
1 ms
输入信号周期: Tin = 1/512 ms
时常数= Tout / Tin=512
Step4:写初始化程序: MOV DX, 307H
MOV AL, 00110100B;
OUT DX, AL
MOV
MOV
OUT
XCHG
OUT
[email protected]
DX,
AX,
DX,
AL,
DX,
301H
512
AL
AH
AL
或 00110110B
EG.8086最大方式系统中,有8254的端口地址分别为
301H、303H、305H和307H,给定的外部时钟为512kHz
(2) 利用这一计数器能产生的最低信号频率
0
为 7.8125 Hz ,这时的时常数CR0=
。
频率最低
周期最长
计数范围: 0000H ~ 0FFFFH
整个计数范围内只
形成一个输出周期
65536个计数单元
计数初值 = 0
最低频率 = 512KHz/65536 = 7.8125 Hz
[email protected]
EG.8086最大方式系统中,有8254的端口地址分别为
301H、303H、305H和307H,给定的外部时钟为512kHz
 (3)利用计数器1和2产生如下图所示的周期信号,并编写初始化程序。
1.5ms
Step1:分析工作方式:
Step2:工作方式控制字:
3s
Step3:分析时常数:
计数器1:
控制字:
01110110B
时常数= Tout / Tin
=1.5/(1/512)=768
计数器2:
控制字:
10110100B
MOV DX, 307H
MOV AL, 01110110B
OUT DX, AL
MOV AL, 10110100B
OUT DX, AL
时常数= Tout / Tin
= (3s+1.5ms)/1.5ms
= 2001
[email protected]
MOV
DX, 303H
MOV AX, 768
OUT
DX, AL
XCHG AH, AL
OUT
DX,512KHz
AL
+5V
MOV
DX, 305H周期为1.5ms
MOV AX, 2001 的新时钟
OUT
DX, AL
+5V
XCHG AH,
1.5ms AL
OUT
DX, AL
3s
EG.8086最大方式系统中,有8254的端口地址分别为
301H、303H、305H和307H,给定的外部时钟为512kHz
(4)画出8253的端口译码电路(地址线只使用 A0~A9)及其连接图。
D15 D 8
~
D7
~ D0
8086
CPU
最大
方式
系统
总线
RD
WR
A1
A0
IOR
IOW
A2
A1
A7
A6
A5
A4
A3
A9
A8
BHE
o
o
o
[email protected]
CS
Intel
8253
CLK1
GATE1
OUT1
CLK2
GATE2
OUT2
512kHz
+5V
+5V
产生信号
§9.4 8253的总线接口方法
EG4. 设8253的端口地址为260H~263H,外部时钟信号为1MHz,要
求产生如下图所示的周期波形,画出8253的连接图,并编写初始化程
序段。
1s
12ms
图 8253所要产生的周期信号
在不使用输出取反的情况下,有没有一种工作方式能生成这样的信号?
周期信号:
工作方式2
或
工作方式3
能生成高低电平时间长短可人为设定的工作方式:
[email protected]
工作方式0 或 工作方式1
§9.4 8253的总线接口方法
超出计数范围
1s
12ms
D7 D 0
~
RD
CLK0
GATE0
OUT0
1MHz
+5V
WR
A1
A0
Intel
8253
CLK1
GATE1
OUT1
+5V
输入时钟:1MHz:Tin=1us
输出时钟:Tout=1.012s
1012000分频
1000*1012
时常数=1000,工作方式3
输出信号周期:1ms
计数器0: 工作方式3,时常数1000
计数器1: 工作方式2,时常数1012
计数器2: 工作方式1,时常数1000
时常数=1012,工作方式2
输出信号周期:1.102s
CLK2
GATE2
CS
OUT2
产生信号
时常数=1000,工作方式1
减1计数,在1000第个周期电平变高,在第1012个周期,
由GATE上升沿触发,电平变低,开始下一轮计数
[email protected]
§9.4 8253的总线接口方法
EG5. 有一个未知频率的对称周期信号s(t)(频率范围在
100Hz~2kHz之间),现在8086最小系统中已经设计了一片
8253,其端口地址为380H、382H、384H和386H,外部可以
使用的标准信号源为1MHz,设计测量输入s(t)信号的频率,
并将结果保存在SFR字单元中。
计数法:待测信号频率大于时钟频率
频率
测量
问题
测周期法:待测信号频率小于时钟频率
[email protected]
EG5. 有一个未知频率的对称周期信号s(t)(频率范围在
100Hz~2kHz之间),现在8086最小系统中一片8253,外部可
以使用的标准信号源为1MHz,试测量输入s(t)信号的频率
基准信号CLK频率:1MHz
待测信号: 100Hz~2kHz之间的对称周期信号
测试半个信号周期的长度Thalf即可
250μs≤Thalf≤5000μs
需要实现的功能:
用计数器数出待测信号在前半个
周期时间里经过了多少时钟周期
用待测信号 S(t) 做GATE,利用其信号的 能被GATE这样控制
上升沿触发计数的开始,利用其低电平使 的工作方式:?
计数暂停,以便被CPU访问读出
[email protected]
EG5. 有一个未知频率的对称周期信号s(t)(频率范围在
100Hz~2kHz之间),现在8086最小系统中一片8253,外部可
以使用的标准信号源为1MHz,试测量输入s(t)信号的频率
用待测信号 S(t) 做GATE,利用其
信号的上升沿触发计数的开始,
利用其低电平使计数暂停,以便
被CPU访问读出
方式0
方式4
GATE 只能用低电平暂停计数,其上升沿不能触发计数的开始
方式1
方式5
GATE 只能用上升沿触发计数的开始,不能用低电平暂停计数
方式2
方式3
GATE 的低电平暂停计数,上升沿触发新计数的开始
减2计数
[email protected]
EG5. 有一个未知频率的对称周期信号s(t)(频率范围在
100Hz~2kHz之间),现在8086最小系统中一片8253,外部可
以使用的标准信号源为1MHz,试测量输入s(t)信号的频率
D7
~
D0
RD
8259
A0
Intel
8253
GATE0
1MHz
S(t)
OUT0
CLK0
1MHz
…
…
向CPU发出
中断请求
S(t)
CE
o
IR0
WR
A1
CLK0
FF FF
N 00
00 FF FE
… XH XH XH
XL XL XL
Th
CS
计数器采用方式2,时常数取最大值,
当GATE0端有上升沿查询时,可以启动计数器进行“减1”计数,
当GATE0出现低电平时,暂停计数,并同时在8259产生中断请求
CPU产生中断,在中断服务子程序中可以读取计数值,与初值相减
后再加1就可以得到s(t)半周期内所包含的基准周期数NUM。
F(S(t))=1MHz/NUM
[email protected]
8253的初始化程序段如下:
MOV
MOV
OUT
MOV
MOV
OUT
OUT
STI
DX,386H ;写计数器0方式控制字
AL,0011 0100B
DX,AL
DX,380H
;写计数器0时常数
AL,0
DX,AL
DX,AL
;开中断
中断服务子程序的主要内容为:
PUSH
PUSH
PUSH
MOV
MOV
OUT
MOV
IN
XCHG
IN
XCHG
AX
BX
DX
DX,386H
;发计数器0的锁存命令
AL,0000 0000B
DX,AL
DX,380H
;读计数值
AL,DX
AL,AH
AL,DX
AL,AH
[email protected]
NEG
INC
MOV
MOV
MOV
DIV
MOV
POP
POP
POP
IRET
AX
;初值减结果加1
AX
;
BX,AX
;计算信号频率
DX, 0007H
AX, 0A120H;被除数500000
BX
SFR,AX ;保存信号频率
DX
BX
AX
往年考研题目
 EG. (1)写出8253的端口地址,8088未用的地址线均设为0.
 (2)设8253的计数器0做二进制计数,输入时钟频率为100KHz,
输出为1KHz方波,试写出设置8253工作方式及计数初值的有关指令。
地址范围:210H~213H
控制字: 00110110B
时常数:100
MOV DX, 213H
MOV AL, 00110110B
OUT DX, AL
MOV
DX, 210H
MOV
AX, 100
OUT
DX, AL
XCHG AL, AH
OUT
DX, AL
[email protected]
往年考研题
 有如图所示的接口简化图,要使发光二极管亮2秒,熄灭
2秒,但该过程共进行20秒即终止,设OUT0输入频率
为1KHZ。8253端口地址为40H~47H编写出程序。
+5V
数据总线
DB7~DB0
CLK0
D7~D0
A1
A0
A2
A1
GATE0
OUT0
CLK1
8253
CS
1KHz
500KHZ
1s
GATE1
OUT1
CLK2
GATE2
OUT2
能不能是工作方式 1 ?
[email protected]
CLK0 输入 1KHz
OUT0 输出新时钟给
CLK1,CLK2
(工作方式2,3,时常数1000)
OUT1 控制发光二极管
所以输出为周期为4s的方波
(工作方式3,时常数4)
因为要20秒结束,所以OUT2作
为
GATE1 的控制,输出一个长度
持续20 m的低电平信号
(工作方式0)时常数19
往年考研题
计数器0工作在工作方式2,时常数为
计数器1工作在工作方式3,时常数为
计数器2工作在工作方式0,时常数为
MOV
MOV
OUT
MOV
OUT
MOV
OUT
1000
4
19
DX, 43H
AL, 00110100B
DX, AL
AL, 01010110B
DX, AL
AL, 10010000B
DX, AL
[email protected]
MOV DX, 40H
MOV AX, 1000
OUT DX, AL
XCHG AL, AH
OUT DX, AL
MOV DX, 41H
MOV AL, 4
OUT DX, AL
MOV DX, 42H
MOV AL, 19
OUT DX, AL
§9.4 8253的总线接口方法
作业
9.11
9.12
[email protected]
LOGO
[email protected]