计数器/定时器8253/8254
计数器/定时器8253/8254
计数器/定时器的原理图
8253/8254的编程结构
CLK时钟输入信号:在计数过程中,此引脚上每输入一个时钟信号(下降沿),计数器的计数值减1
GATE门控输入信号:控制计数器工作,可分成电平控制和上升沿控制两种类型
OUT计数器输出信号:当一次计数过程结束(计数值减为0),OUT引脚上将产生一个输出信号
8253/8254的外部信号
C
L
K
0
CLK_0
CLK0 ~
C
L
K
2
CLK_2
CLK2:时钟 计数器0 ~ 计数器2 的时钟信号
G
A
T
E
0
GATE_0
GATE0 ~
G
A
T
E
2
GATE_2
GATE2:门控 计数器0 ~ 计数器2 的门控信号
O
U
T
0
OUT_0
OUT0 ~
O
U
T
2
OUT_2
OUT2:输出 计数器0 ~ 计数器2 的输出信号
A
1
A
0
A_1A_0
A1A0:地址线用来对三个计数器和控制寄存器进行寻址
A 1 A 0 A_1A_0 A1A0 | 端口 |
---|---|
00 | 计数器0 |
01 | 计数器1 |
10 | 计数器2 |
11 | 控制字/状态寄存器 |
RD
‾
\overline{\text{RD}}
RD:读信号 CPU对输出寄存器或状态寄存器进行读操作
WR
‾
\overline{\text{WR}}
WR:写信号 CPU对某个计数器写入计数初值或控制寄存器写入控制字
CS
‾
\overline{\text{CS}}
CS:片选信号
8253/8254的控制字和状态字
模式设置控制字
(1)BCD位(计数初值的格式):1:BCD码格式;0:二进制格式
(2)
M
2
M
1
M
0
M_2M_1M_0
M2M1M0(模式选择):
M 2 M_2 M2 | M 1 M_1 M1 | M 0 M_0 M0 | 模式选择 |
---|---|---|---|
0 | 0 | 0 | 模式0 |
0 | 0 | 1 | 模式1 |
× | 1 | 0 | 模式2 |
× | 1 | 1 | 模式3 |
1 | 0 | 0 | 模式4 |
1 | 0 | 1 | 模式5 |
(3) R W 1 R W 0 RW_1RW_0 RW1RW0(读/写指示位):
R W 1 RW_1 RW1 | R W 0 RW_0 RW0 | 读/写指示位 |
---|---|---|
0 | 0 | 对计数器进行锁存操作 |
0 | 1 | 只读/写低8位 |
1 | 0 | 只读/写高8位 |
1 | 1 | 先读/写低8位,后读/写高8位 |
(4) S C 1 S C 0 SC_1SC_0 SC1SC0(选择计数器):
S C 1 SC_1 SC1 | S C 0 SC_0 SC0 | 选择计数器 |
---|---|---|
0 | 0 | 选择计数器0 |
0 | 1 | 选择计数器1 |
1 | 0 | 选择计数器2 |
1 | 1 | 读出控制字的标识码 |
关于的控制字说明
1、8253/8254只有一个工作方式控制字,但是对每个计数器而言,它们的工作方式控制字内容一定各不相同(前两位不同),所用各计数器的控制字需要分别设置,先后不计。
2、在工作方式控制字被设置之后,随后必须紧接着给计数器预设置计数初值,计数器方可开始工作。
8253/8254初始化的工作有两个内容:
(1)首先向控制寄存器写入控制字,以选择计数器(3个计数器之一),确定工作方式(6种方式之一),指定计数器计数初值的长度和装入顺序以及计数值的码制(BCD或二进制码)。
(2)然后向已选定的计数器按控制字要求写入计数初值。
【例】:8086系统中,8254地址范围为300H~306H。选择2号计数器,工作在方式3 ,计数初值为533H(2个字节),采用二进制计数。其初始化程序段为:
MOV DX,306H ;控制寄存器
MOV AL,10110110B ;2号计数器的初始化控制字
OUT DX,AL ;写入控制寄存器
MOV DX,304H ;2号计数器数据端口
MOV AL,33H ;计数初值的低8位
OUT DX,AL ;选送低字节到2号计数器
MOV AL,05H ;计数初值的高8位
OUT DX,AL ;后送高字节到2号计数器
读出控制字
略
8254的状态寄存器和状态字
略
8253/8254的工作模式
基本规则
(1)控制字写入计数器时,所有的控制逻辑电路立即复位,输出端OUT为初始状态(高电平或低电平);
(2)初值写入后,要经过1个时钟CLK的上升沿和1个下降沿后,计数执行部件才开始计数;
(3)在CLK的上升沿时,计数器对门控信号GATE进行采样,来决定工作状态(计数、触发、停止、重新置初值);
(4)在CLK的下降沿时,计数器执行部件从初值开始作减1计数;其中0是最大初值,1是最小初值;
模式0:计数结束产生中断
①控制字写入之后,OUT变低;初值装入后,要经过1个CLK的周期(1个上升沿和1个下降沿)后,计数器才开始计数,所以,输出OUT要经过N+1个时钟周期后才有输出;
②输出OUT的有效电平为高电平,并可同时触发中断请求;
③门控GATE的作用:高电平时计数,低电平或下降沿时停止计数;
④CW为写入控制字,N=4表示写入初值,计数值一次有效。
模式1:可编程的单稳态触发器
①控制字和初值装入后,OUT变高,在门控GATE的上升沿触发下,经过1个CLK的上升沿和1个下降沿后,计数器开始从初值减1计数,同时使OUT=0;当计数结束(归0)时,OUT=1,使输出产生1个宽度为TW=N×TCLK的负脉冲——单稳态触发器。
②在GATE的上升沿触发下,输出可再次产生1个宽度为TW负脉冲——可重复触发。
模式2:分频器
①控制字装入后,OUT=1为初始状态。
②初值装入后,经过1个CLK的周期,计数器开始从初值减1计数,计到1(不是0)时,使输出OUT=0并保持1个CLK周期,然后OUT=1,开始下一个新的计数周期,使输出为CLK的时钟1/N分频信号,占空比q=(N-1)/N。
③门控GATE的作用:高电平时计数,低电平停止计数;GATE再次变高后从初始值重新计数;而在GATE=1时,计数完成之后自动重新装入初值,循环计数。
④如果计数过程中写入新值.不影响当前计数.完成后重新装入新值
模式3:方波发生器
特点与方式2类似,主要区别:输出方波,其占空比q为
①当N为偶数时,q=0.5;
②当N为奇数时,q=(N+1)/2N。
模式4:软件触发的选通信号发生器
①初值装入后,经过1个CLK的周期,计数器开始从初值减1计数,计数结束(归0)时,使输出OUT产生一个宽度为1个CLK周期的负脉冲——选通信号。
②(用指令)重新装入初值后,经过N+1个CLK周期,又可使OUT产生一个选通信号——(用软件)可重复触发。
③门控GATE的作用:高电平时计数,低电平时停止计数。
模式5:硬件触发的选通信号发生器
①初值装入后,在GATE的上升沿的触发下,经过1个CLK的周期,计数器开始从初值减1计数,计数结束(归0)时,使输出OUT产生一个宽度为1个CLK周期的负脉冲——选通信号。
②用GATE的上升沿可重新触发,使OUT产生一个选通信号——(用硬件)可重复触发。
8253/8254工作模式小结
- 模式2、4、5的输出波形是相同的,都是宽度为一个CLK周期的负脉冲。
但模式2是连续工作,模式4由软件(设置计数值)触发启动,模式5由门控脉冲触发启动 - 写入计数值后才能开始计数
模式0、2、3、4在写入计数值后,计数过程就开始了
模式1、5需要外部触发启动,才开始计数 - 6种方式中只有方式2、3是连续计数,其他4种方式都是一次计数,要继续工作需要重新启动,方式0、4由写入计数值(软件)启动,方式1、5要由外部信号(硬件)启动。
下一篇: CSP-J/S 2020考前注意事项