微机接口 可编程定时/计数器8253

可编程定时/计数器8253

一、组成

  • 3个独立的16位计数器(CLK 0,CLK 1,CLK 2)
  • 共有六种工作方式供选择
  • 数据总线缓冲器和读写控制逻辑
  • 外形、引脚、功能兼容,最高频率不同
数据总线D0-D7;

RD#和WD#分别是读写控制引脚;

CS#是片选信号;

A1,A0是片内地址选择引脚。

8253的三个计数通道在结构上和功能上完全一样,每个通道均有两个输入引脚CLK和GATE,一个输出信号引脚OUT


二、计数初值和编程命令

• 计数初值

– 计数初值寄存器用来寄存计数初值

– 计数工作单元为16位减1计数器,它的初值是计数初值寄存器内容

– 计数单元对CLK脉冲计数,每出现一个CLK脉冲,计数器减1,当减为零时,通过OUT输出指示信号表明计数单元已为零


– 作为定时器工作当计数单元为零时,计数寄存器内容会自动重新装入计数单元,因为CLK输入是均匀的脉冲序列,所以OUT输出是频率降低了的脉冲序列(相对于CLK信号频率)

ps:方式2、3;(因为可以重装,2、3都是初值自动重装,但是2是周期负脉冲,3是方波)

– 作为计数器工作只关注在CLK端出现(代表事件)的脉冲个数,当CLK端出现了规定个数的脉冲时,OUT输出一个脉冲信号

ps:方式0、1、4、5都不会自动置初值,其中0,4是软件启动区别在于0输出电平,4输出负脉冲;1,5是硬件启动区别是1输出电平,5输出负脉冲。


• 计数器工作过程

1. 将控制字写入控制寄存器,指示8253的工作方式;

2. 将计数初值写入计数寄存器;

3. 计数单元开始工作,对CLK脉冲计数,每出现一个CLK脉冲,计数器减1;

4. 当计数单元减为零时,通过OUT输出指示信号表明计数单元已为零


• 读写操作及编程命令2种情况:

写命令字操作(OUT命令)

读当前计数值操作(IN命令)


• 写操作(芯片初始化)

芯片加电后,其工作方式是不确定的,为了正常工作,要对芯片初始化。

初始化的工作有两点:

1. 向控制寄存器写入方式控制字

– 选择计数器(三个中之一个)

– 确定工作方式(六种方式之一)

– 指定计数器计数初值的长度、装入顺序、计数值的码制(BCD码或二进制码)

2. 向已选定的计数器按方式控制字的要求写入计数初值

工作方式命令字的格式计算公式为

:Ci=CLK/OUT

Ci计数初值,CLK输入时钟频率,OUT输出时钟频率


• 读当前计数值(锁存后读操作)

在事件计数器的应用中,需要读出计数过程中的计数值,以便根据这个值做计数判断。

为此,8253内部逻辑提供了将当前计数值锁存后读操作功能。

具体作法是:

1. 先发一条锁存命令(即方式控制字中的RL1RL0=00),将当前计数值锁存到输出计数器;

2. 执行读操作,得到锁存器的内容。


三、工作方式和特点

8253作为一个可编程计数器/定时器,可以用6种工作模式,不论工作在那种模式,都遵守下面几条基本规则:

1. 控制字写入寄存器时,所有控制逻辑电路立即复位,输出端OUT进入初始状态;

2. 初值写入后,要经过一个时钟上升沿和一个下降沿,计数执行部件才开始进行计数;

3. 通常在时钟脉冲CLK的上升沿,门控信号GATE被采样– 模式0,4中,门控信号为电平触发– 模式1,5中,门控信号为上升沿触发– 模式2,3中,门控信号为电平或上升沿触发(二种)

4. 在时钟脉冲CLK的下降沿,计数器作减1计数– 0是计数器所能容纳的最大初始值二进制时,0相当于2^16;BCD码时,0相当于104








原文地址:https://www.cnblogs.com/bryce1010/p/9387201.html