微机接口技术
2004,5,10
第五章 定时计数控制器
1,8253定时计数器
2,8253的应用概述
实现定时和计数有两种方法:硬件定时和软件定时 。
软件定时是利用 CPU每执行一条指令都需要几个固定的指令周期的原理,运用软件编程的方式进行定时 。
硬件定时,是利用专门的定时电路实现精确定时 。 这种定时方式又可分为简单硬件定时和利用可编程接口芯片实现定时 。
1,可编程计数 /定时器 8253/8254
1.1 8253的组成与功能
1.2 8253与系统的连接应用实例
1.1 8253的组成与功能如图 5.1,图 5.2所示为 8253/8254的内部结构及引脚图 。
图 5.1 8253/8254的内部结构示意图图
5.
2
82
53
引脚图图 5.3 8253/8254计数器内部逻辑图
1,3个独立的 16位计数器
3个计数器分别为计数器 0、计数器 1、计数器 2,
每个计数器的内部逻辑结构如图 5.3所示。
2,控制命令寄存器此寄存器用来保存来自 CPU送入的控制字 。
每个计数器都有一个控制命令寄存器,用于保存该计数器的控制信息 。 控制字将决定计数器的工作方式,计数形式及输出方式,也能决定应如何装入计数器初值 。 8253的 3个控制寄存器只占用一个地址号,而靠控制字中最高二位来指定当前的控制字是发给哪一个计数器的 。 控制寄存器只能写入,不能读取 。
A1A0编码与 8253内部寄存器的对应关系表 5.1 8253寄存器寻址
A1 A2 寄存器选择和操作
0 1 0 0 0 写入 0通道计数寄存器
0 1 0 0 1 写入 1通道计数寄存器
0 1 0 1 0 写入 2通道计数寄存器
0 1 0 1 1 写入 3通道计数寄存器
0 0 1 0 0 读 0通道锁存器
0 0 1 0 1 读 1通道寄存器
0 0 1 1 0 读 2通道寄存器
2,8253的编程控制字
图
5.
4
82
53
控制字格式
D
7
D
6
D
5
D
4
D
3
D
2
D
1
D
0
0= 二进制
1= 二—十进制工作方式选择
000= 方式 0
001= 方式 1
010= 方式 2
011= 方式 3
100= 方式 4
101= 方式 5
通道控制字寻址
00= 通道 0 控制寄存器
01= 通道 1 控制寄存器
10= 通道 2 控制寄存器
11= 不用读写操作
00= 锁定当前计数值
01= 读 / 写计数器低 8 位
10= 读写计数器高 8 位
11= 先读 / 写计数器低 8 位再读 / 写计数器高 8 高位
3.读 /写逻辑读 /写逻辑的任务是接收来自 CPU的控制信号,完成对 8253各计数寄存器的读 /写操作 。 这些控制信号包括读信号 RD,写信号 WR,片选信号 CS和片内寄存器对址信号 A0,A1。
4,数据总线缓冲器这是一个双向,三态 8位缓冲器 。 它用于
8253和系统数据总线连接 。 CPU通过数据总线缓冲器将控制命令字和计数值写入 8253计数器,
或者从 8253计数器读取当前计数值 。
8253的 8位数据线 D0~D7通常与系统数据总线 D0~D7相连。 8253共占用 4个 I/O地址。 8253
各端口的地址分配见表 5.2所示。
表 5.2 8253端口的地址分配
1.2 8253与系统的连接应用实例
图 5.5 为 8253用作方波发生器与 8088
总线的接口方法 。 图中仅用了 A7~A2作为
8253片选地址线,产生片选信号 Y1与 8253
的 CS端相连 。 要求计数器 2用作方波发生器产生 40KHz方波输出 。 已知 CLK2时钟端输入信号频率为 2MHz。
图 5.5 8253与 8088总线的连接本节以下各例均设 8253占用端口地址 40H~43H。
方式 0 减 1计数到 0时发中断请求
3,8253的工作方式及举例
(设计数初值为 3 )
写计数值 写 CW
CL K
GAT E
(允许计数高电平)
WR
OUT 0
0
1 2 3
GAT E ’
2 2 2 3
1
OUT ’ 0
0
图 5.6 方式 0的时序图例:设 8253计数器通道 0工作于方式 0,用 8位二进制计数,其计数值为 50,二 — 十进制,则它的初始化程序段如下:
MOV AL,11H ;设置控制字
OUT 43H,AL ;写入控制字寄存器
MOV AL,50 ;设置计数初值
OUT 40H,AL ;写入计数初值寄存器开始计数
CLK
WR
GA T E
OUT 1
GA T E ’
OUT 1 ’
3 2 1 3 2 1 0
3 2 1 0
重新开始计数 不停计数
CW LSB
图 5.7 方式 1的时序图方式 1 可编程单脉冲输出例:设计数器通道 1工作于方式 1,按二进制计数,计数初值为 40H,它的初始化程序段为:
MOV AL,62H ;工作方式控制字
OUT 43H,AL
MOV AL,40H ;送计数初值
OUT 41H,AL
图 5.8 方式 2的时序图
3 2 1
3
高电平 1
CW L S B
C LK
WR
G A T E 2
O U T 2
G A T E 2 ’
O U T 2 ’
自动重复计数
3 2 1
禁止计数
3 2 1
重新开始计数方式 2 周期性时间间隔计时器(频率发生器)
例:设 8253计数器 0工作于方式 2,按二进制计数,
计数初值为 0304H。
MOV AL,00110100B;设控制字,通道 0,先读
/写高 8位 ;再读写低 8位,方式 2,二进制 。
OUT 43H,AL
MOV AL,04H ;送计数值低字节
OUT 40H,AL MOV AL,03H
OUT 40H,AL ;送计数值高字节图 5.9 方式 3的时序图
C LK
WR
G A T E 3
O U T 3
(N = 奇数 )
O U T 3 ’
(N = 偶数 )
高电平 1
5 4 3
自动重复计数
2 1 5 ( 0 ) 4 3
CW L S B
4 3 2 1 4 3 2 1
方式 3 方波发生器例:设 8253计数器 2工作在方式 3,按二 — 十进制计数,计数初值为 4,则它的初始化程序段如下:
MOV AL,10010111B ;计数器 2,只读
/写低 8位,工作方式 3,二 ~十进制
OUT 43H,AL;控制字送控制字寄存器
MOV AL,4 ;送计数初值
OUT 42H,AL
高电平 1
CW L S B
3 2 1 0 C L K 1
禁止计数
3 2 1 3 2 1 0
重新开始计数
C L K
WR
G AT E 4
O U T 4
G AT E 4 ’
O U T 4 ’
图 5.10 方式 4的时序图方式 4 软件触发选通例:设 8253计数器 1工作于方式 4,按二进制计数,计数初值为 3,则初始化程序段为:
MOV AL,058H ;设置控制字寄存器
OUT 43H,AL ;送控制字
MOV AL,3 ;置计数初值
OUT 41H,AL ;送计数初值
2004,5,10
第五章 定时计数控制器
1,8253定时计数器
2,8253的应用概述
实现定时和计数有两种方法:硬件定时和软件定时 。
软件定时是利用 CPU每执行一条指令都需要几个固定的指令周期的原理,运用软件编程的方式进行定时 。
硬件定时,是利用专门的定时电路实现精确定时 。 这种定时方式又可分为简单硬件定时和利用可编程接口芯片实现定时 。
1,可编程计数 /定时器 8253/8254
1.1 8253的组成与功能
1.2 8253与系统的连接应用实例
1.1 8253的组成与功能如图 5.1,图 5.2所示为 8253/8254的内部结构及引脚图 。
图 5.1 8253/8254的内部结构示意图图
5.
2
82
53
引脚图图 5.3 8253/8254计数器内部逻辑图
1,3个独立的 16位计数器
3个计数器分别为计数器 0、计数器 1、计数器 2,
每个计数器的内部逻辑结构如图 5.3所示。
2,控制命令寄存器此寄存器用来保存来自 CPU送入的控制字 。
每个计数器都有一个控制命令寄存器,用于保存该计数器的控制信息 。 控制字将决定计数器的工作方式,计数形式及输出方式,也能决定应如何装入计数器初值 。 8253的 3个控制寄存器只占用一个地址号,而靠控制字中最高二位来指定当前的控制字是发给哪一个计数器的 。 控制寄存器只能写入,不能读取 。
A1A0编码与 8253内部寄存器的对应关系表 5.1 8253寄存器寻址
A1 A2 寄存器选择和操作
0 1 0 0 0 写入 0通道计数寄存器
0 1 0 0 1 写入 1通道计数寄存器
0 1 0 1 0 写入 2通道计数寄存器
0 1 0 1 1 写入 3通道计数寄存器
0 0 1 0 0 读 0通道锁存器
0 0 1 0 1 读 1通道寄存器
0 0 1 1 0 读 2通道寄存器
2,8253的编程控制字
图
5.
4
82
53
控制字格式
D
7
D
6
D
5
D
4
D
3
D
2
D
1
D
0
0= 二进制
1= 二—十进制工作方式选择
000= 方式 0
001= 方式 1
010= 方式 2
011= 方式 3
100= 方式 4
101= 方式 5
通道控制字寻址
00= 通道 0 控制寄存器
01= 通道 1 控制寄存器
10= 通道 2 控制寄存器
11= 不用读写操作
00= 锁定当前计数值
01= 读 / 写计数器低 8 位
10= 读写计数器高 8 位
11= 先读 / 写计数器低 8 位再读 / 写计数器高 8 高位
3.读 /写逻辑读 /写逻辑的任务是接收来自 CPU的控制信号,完成对 8253各计数寄存器的读 /写操作 。 这些控制信号包括读信号 RD,写信号 WR,片选信号 CS和片内寄存器对址信号 A0,A1。
4,数据总线缓冲器这是一个双向,三态 8位缓冲器 。 它用于
8253和系统数据总线连接 。 CPU通过数据总线缓冲器将控制命令字和计数值写入 8253计数器,
或者从 8253计数器读取当前计数值 。
8253的 8位数据线 D0~D7通常与系统数据总线 D0~D7相连。 8253共占用 4个 I/O地址。 8253
各端口的地址分配见表 5.2所示。
表 5.2 8253端口的地址分配
1.2 8253与系统的连接应用实例
图 5.5 为 8253用作方波发生器与 8088
总线的接口方法 。 图中仅用了 A7~A2作为
8253片选地址线,产生片选信号 Y1与 8253
的 CS端相连 。 要求计数器 2用作方波发生器产生 40KHz方波输出 。 已知 CLK2时钟端输入信号频率为 2MHz。
图 5.5 8253与 8088总线的连接本节以下各例均设 8253占用端口地址 40H~43H。
方式 0 减 1计数到 0时发中断请求
3,8253的工作方式及举例
(设计数初值为 3 )
写计数值 写 CW
CL K
GAT E
(允许计数高电平)
WR
OUT 0
0
1 2 3
GAT E ’
2 2 2 3
1
OUT ’ 0
0
图 5.6 方式 0的时序图例:设 8253计数器通道 0工作于方式 0,用 8位二进制计数,其计数值为 50,二 — 十进制,则它的初始化程序段如下:
MOV AL,11H ;设置控制字
OUT 43H,AL ;写入控制字寄存器
MOV AL,50 ;设置计数初值
OUT 40H,AL ;写入计数初值寄存器开始计数
CLK
WR
GA T E
OUT 1
GA T E ’
OUT 1 ’
3 2 1 3 2 1 0
3 2 1 0
重新开始计数 不停计数
CW LSB
图 5.7 方式 1的时序图方式 1 可编程单脉冲输出例:设计数器通道 1工作于方式 1,按二进制计数,计数初值为 40H,它的初始化程序段为:
MOV AL,62H ;工作方式控制字
OUT 43H,AL
MOV AL,40H ;送计数初值
OUT 41H,AL
图 5.8 方式 2的时序图
3 2 1
3
高电平 1
CW L S B
C LK
WR
G A T E 2
O U T 2
G A T E 2 ’
O U T 2 ’
自动重复计数
3 2 1
禁止计数
3 2 1
重新开始计数方式 2 周期性时间间隔计时器(频率发生器)
例:设 8253计数器 0工作于方式 2,按二进制计数,
计数初值为 0304H。
MOV AL,00110100B;设控制字,通道 0,先读
/写高 8位 ;再读写低 8位,方式 2,二进制 。
OUT 43H,AL
MOV AL,04H ;送计数值低字节
OUT 40H,AL MOV AL,03H
OUT 40H,AL ;送计数值高字节图 5.9 方式 3的时序图
C LK
WR
G A T E 3
O U T 3
(N = 奇数 )
O U T 3 ’
(N = 偶数 )
高电平 1
5 4 3
自动重复计数
2 1 5 ( 0 ) 4 3
CW L S B
4 3 2 1 4 3 2 1
方式 3 方波发生器例:设 8253计数器 2工作在方式 3,按二 — 十进制计数,计数初值为 4,则它的初始化程序段如下:
MOV AL,10010111B ;计数器 2,只读
/写低 8位,工作方式 3,二 ~十进制
OUT 43H,AL;控制字送控制字寄存器
MOV AL,4 ;送计数初值
OUT 42H,AL
高电平 1
CW L S B
3 2 1 0 C L K 1
禁止计数
3 2 1 3 2 1 0
重新开始计数
C L K
WR
G AT E 4
O U T 4
G AT E 4 ’
O U T 4 ’
图 5.10 方式 4的时序图方式 4 软件触发选通例:设 8253计数器 1工作于方式 4,按二进制计数,计数初值为 3,则初始化程序段为:
MOV AL,058H ;设置控制字寄存器
OUT 43H,AL ;送控制字
MOV AL,3 ;置计数初值
OUT 41H,AL ;送计数初值