欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

计数器/定时器8253/8254

程序员文章站 2022-03-15 14:03:55
...

计数器/定时器8253/8254

计数器/定时器的原理图

计数器/定时器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的控制字和状态字

模式设置控制字

计数器/定时器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:计数结束产生中断

计数器/定时器8253/8254

①控制字写入之后,OUT变低;初值装入后,要经过1个CLK的周期(1个上升沿和1个下降沿)后,计数器才开始计数,所以,输出OUT要经过N+1个时钟周期后才有输出;
②输出OUT的有效电平为高电平,并可同时触发中断请求;
③门控GATE的作用:高电平时计数,低电平或下降沿时停止计数;
④CW为写入控制字,N=4表示写入初值,计数值一次有效。

模式1:可编程的单稳态触发器

计数器/定时器8253/8254

①控制字和初值装入后,OUT变高,在门控GATE的上升沿触发下,经过1个CLK的上升沿和1个下降沿后,计数器开始从初值减1计数,同时使OUT=0;当计数结束(归0)时,OUT=1,使输出产生1个宽度为TW=N×TCLK的负脉冲——单稳态触发器。
②在GATE的上升沿触发下,输出可再次产生1个宽度为TW负脉冲——可重复触发。

模式2:分频器

计数器/定时器8253/8254

①控制字装入后,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:方波发生器

计数器/定时器8253/8254

特点与方式2类似,主要区别:输出方波,其占空比q为
①当N为偶数时,q=0.5;
②当N为奇数时,q=(N+1)/2N。

模式4:软件触发的选通信号发生器

计数器/定时器8253/8254

①初值装入后,经过1个CLK的周期,计数器开始从初值减1计数,计数结束(归0)时,使输出OUT产生一个宽度为1个CLK周期的负脉冲——选通信号。
②(用指令)重新装入初值后,经过N+1个CLK周期,又可使OUT产生一个选通信号——(用软件)可重复触发。
③门控GATE的作用:高电平时计数,低电平时停止计数。

模式5:硬件触发的选通信号发生器

计数器/定时器8253/8254

①初值装入后,在GATE的上升沿的触发下,经过1个CLK的周期,计数器开始从初值减1计数,计数结束(归0)时,使输出OUT产生一个宽度为1个CLK周期的负脉冲——选通信号。
②用GATE的上升沿可重新触发,使OUT产生一个选通信号——(用硬件)可重复触发。

8253/8254工作模式小结

  1. 模式2、4、5的输出波形是相同的,都是宽度为一个CLK周期的负脉冲。
    但模式2是连续工作,模式4由软件(设置计数值)触发启动,模式5由门控脉冲触发启动
  2. 写入计数值后才能开始计数
    模式0、2、3、4在写入计数值后,计数过程就开始了
    模式1、5需要外部触发启动,才开始计数
  3. 6种方式中只有方式2、3是连续计数,其他4种方式都是一次计数,要继续工作需要重新启动,方式0、4由写入计数值(软件)启动,方式1、5要由外部信号(硬件)启动。
相关标签: 接口