zoukankan      html  css  js  c++  java
  • 微机接口 可编程定时/计数器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








  • 相关阅读:
    Data Structure Binary Tree: Populate Inorder Successor for all nodes
    Data Structure Binary Tree: Connect nodes at same level using constant extra space
    Data Structure Binary Tree: Check if a given Binary Tree is SumTree
    Data Structure Binary Tree: Construct Tree from given Inorder and Preorder traversals
    Data Structure Binary Tree: Inorder Tree Traversal without recursion and without stack!
    Data Structure Binary Tree: Inorder Tree Traversal without Recursion
    Data Structure Binary Tree: How to determine if a binary tree is height-balanced?
    Data Structure Binary Tree: Diameter of a Binary Tree
    Data Structure Binary Tree: Convert an arbitrary Binary Tree to a tree that holds Children Sum Property
    【阿里云产品公测】OpenSearch初体验
  • 原文地址:https://www.cnblogs.com/bryce1010/p/9387201.html
Copyright © 2011-2022 走看看