8253的功能和结构

端口
是接口电路或扩展部件中能被微处理器CPU直接访问(读/写)的寄存器,每个端口都有一个端口地址。

8253的功能与结构

8253的主要功能

有3个独立的16位计数器通道

  • 每个计数器都可以按照二进制或十进制计数;

  • 每个计数器的计数速率可高达2MHz;

  • 每个通道有6种工作方式,可由程序设置改变;

  • 所有的输入输出都与TTL兼容。

8253的内部结构

数据总线缓冲器:与CPU数据总线连接的8位双向三态缓冲器。CPU向8253发布的命令及输入输出的数据都是通过这8条数据总线传输的。
读写控制逻辑
CS‾\overline{CS}CS 片选,低电平有效
RD‾\overline{RD}RD WR‾\overline{WR}WR读和写,控制数据的传送方向。
A0 A1 不同组合决定CPU访问的芯片内部不同端口。

控制字寄存器:在初始化编程时,可分别设置3个计数器的工作方式等。
计数器0~计数器2:3个独立的计数通道,可分别按不同的工作方式工作。
每个计数器通过3个引脚与外界联系:
CLK:时钟输入
GATE:门控输入
OUT: 输出
8位控制寄存器:控制计数器的工作方式;
16位计数初值寄存器:装计数初值;
计数执行部件:执行减1操作;
输出锁存器:需要读取当前计数值时,将当前执行计数器中的值锁存进该存储器后读取。
16位计数寄存器CR:接受初始计数值,开始计数之前,由CPU用输出指令预置入CR中。
16位计数单元CE:对CLK的输入脉冲信号,从预置的初始值按二进制或十进制减1计数,当初始值减为0时,由OUT输出电平或脉冲,可以由软件或硬件(GATE)来开启或停止计数。
输出锁存器OL:锁存CE的内容,在计数的过程中, CPU可随时读取OL中CE的当前值,不影响计数器脉冲输入和计数器的继续计数。

8253的引脚


与CPU的连接的引脚
D0-D7 双向三态数据总线
A1,A0 :地址线,片内寻址
CS‾\overline{CS}CS 片选信号,低电平有效
RD‾\overline{RD}RD 读信号
WR‾\overline{WR}WR 写信号
与外部设备连接的引脚
CLK: 可输入周期或随机的脉冲信号
GATE: 启动或禁止计数
OUT: 减1计数到零信号输出端,输出信号可以是方波,脉冲,电平等.

8253的初始化编程




定时器计数初值的计算
要求产生定时时间间隔的初值:

其中,t为要求的定时时间,CLK为时钟脉冲频率。
例:CLK=1.19318MHz, t=5ms
Tc=5×10-3×1193180=5965
要求产生频率为f的信号波形的初值

8253的工作方式

基本规则

  • 控制字写入计数器时,所有的控制逻辑电路立即复位,输出端OUT进入初始状态(高电平或低电平);
  • 初始值写入后,要经过一个时钟上升沿和下降沿,计数执行部件才开始计数;
  • 通常,在时钟CLK的上升沿,门控GATE被采样,门控的触发方式为边沿或电平,边沿触发脉宽可以很窄,且高低电平均可(计数器内部有个边沿触发器,随时检测),电平触发则必须在下一个时钟上升沿前保持高电平;
  • 在时钟脉冲的下降沿计数器作减1计数。

1) 方式0:计数结束产生中断

  • 计数过程由软件启动,每设置一次初值,只启动一次计数过程;
  • 写入控制字后,OUT初态为低,在计数过程中一直保持为低电平,当计数器减到0时,OUT立即变成高电平。
  • 门控GATE为1,正常计数,门控为0,计数暂停,其计数值保持不变,再为1,接着前次继续计数;
  • 计数过程中,改变初值立即有效,即重新写入初值时停止计数,当写完初值后,在CLK的下降沿处,开始以新的计数初值计数。

2) 方式1:硬件可重触发单稳态方式

  • 计数器只能由门控脉冲GATE的上升沿启动,即计数器只能由硬件启动,不能用软件启动;
  • 写入控制字后,OUT 初态为高电平,GATE启动后,获得N个CLK宽度的低电平,计数到零后,可再次由外部触发启动,不用再次送入一个计数初值;
  • 在OUT输出为低期间,若GATE出现上升沿,计数器从CLK的下降沿开始重新计数,OUT低电平的宽度变长;
  • 计数输出期间,改变计数初值不影响本次计数,只有在GATE信号后才重新开始以新的计数初值计数,即计数初值是下次有效的。

3) 方式2:周期性负脉冲输出

  • 计数器既可用软件启动,又可用硬件启动;
  • 写入控制字后,OUT初态为高电平,装入初值后开始计数(软件启动),计数到1后,输出一个CLK的低电平,接着又从N开始重复计数,输出N-1个高电平,1个低电平的周期信号;
  • 在OUT为高期间,若GATE为0,停止计数,直到GATE出现上升沿,计数器重新开始计数输出(硬件启动);
  • 在OUT为高期间,改变计数初值,对正在进行的计数过程没有影响,当输出一个周期的CLK脉冲后则按新的计数初值开始计数。改变计数初值是下次有效的。

4) 方式3:周期性方波输出

  • 与方式2类似,输出信号为方波,周期为N个CLK.若初值N为偶数,输出N/2个CLK周期高电平,N/2个CLK周期低电平; 若N为奇数, (N+1)/2个高电平,(N-1)/2个低电平。
  • GATE为0停止计数,GATE上升沿重新启动计数周期;
  • 重新写入初值,本次OUT不受影响,下一周期按新的初值输出。计数初值下次有效。

5)方式4:单次负脉冲输出(软件触发)

  • 计数过程由软件启动,每设置一次初值,只启动一次计数过程;
  • 写入控制字后,OUT初态为高,在计数过程中一直保持为高电平,当计数器减到0时,输出为一个周期的CLK低电平,输出接着变成高电平并一直维持。
  • 门控GATE为1,正常计数,门控为0,计数停止,再为1,重新从计数初值开始计数;
  • 计数过程中,=改变初值立即有效=,即重新写入初值时停止计数,当写完初值后,在CLK的下降沿处,开始以新的计数初值计数。

6)方式5:单次负脉冲输出(硬件触发)

  • 计数器只能由门控脉冲GATE的上升沿启动;
  • 写入控制字后,OUT初态为高电平,计数到零后,OUT出现一个CLK周期的负脉冲,又变为高电平,可以再次由外部触发启动,不用再次送入一个计数初值;
  • 在计数中,若GATE出现上升沿,则计数器重新触发,即在下一个时钟周期开始计数;
  • 计数输出期间,改变计数初值不影响本次计数,只有在GATE信号后才重新开始以新的计数初值计数,即计数初值是下次有效的。

工作方式小结

  • 在6种方式中,只有方式0,在写入控制字后OUT为低,其余都是OUT为高做初态;
  • 方式1与方式5,在写入计数值后,需GATE的上升沿才开始计数;其他方式都是在写入计数初值后立即启动。即写入计数初值作为软件启动的启动信号。
  • 方式2与方式3是定时方式(周期信号),其他为计数方式(一次计数结束);
  • 重新写入计数初值时,方式0和方式4是立即生效,其它方式是下次有效。


8253的应用

微机笔记5——定时与计数相关推荐

  1. 51单片机汇编学习笔记9——定时计数器

    这一小节介绍一下51单片机的一个重要外设定时计数器. 顾名思义定时计数器主要是两种功能:定时.计数. 定时:就是当你开启定时器后到了设定的时间他会触发中断,然后去执行中断服务函数里面的程序. 计数:主 ...

  2. nodejs菜鸟笔记[不定时更]

    node.js笔记[不定时更] 创建第一个应用 npm介绍 本地安装与全局安装 本地安装 全局安装 卸载.更新模块 npm常用命令 使用淘宝NPM镜像 Node.js REPL(交互式解释器) 使用变 ...

  3. 定时/计数器(定时和计数的功能)、定时器中断

    定时/计数器实现功能: (1)定时功能: 定时/计数器说明(最高单次计时时间是71毫秒=65535*1.085us,1.085us是机器周期): 使用51定时/计数器步骤: 定时/计算器控制寄存器: ...

  4. stm32寄存器版学习笔记04 定时计数器中断

    STM32共有8个定时计数器,其中TIME1和TIME8是高级定时器,TIME2~TIME5是通用定时器,TIME6和TIME7是基本定时器.以TIME3为例总结定时计数器的基本用法. 1.TIM3的 ...

  5. 树莓派学习笔记——crontab定时运行脚本

    crontab定时运行脚本 如果在玩树莓派的过程中,我们需要定时或者定期的运行一些程序或脚本,这里有个好方法,就是Linux下的 crontab. 通常会用到的就是两个命令: 查看已有的定时任务 pi ...

  6. 4、SONIX单片机TC0、TC1基本定时与计数功能

    TC0与TC1的功能和使用方法是一样的,所以这里只介绍TC0 与定时器TC0相关的寄存器共有5个;TC0M,TC0C,INTRQ,INTEN,TC0R 一.TC0M模式寄存器 Bit7 Bit6 Bi ...

  7. 【学习笔记】树的计数,prufer(Prüfer)编码,Cayley公式及相应例题

    目录 1.pruferpruferprufer编码 1)无根树转化为prufer序列 2)prufer序列转化为无根树. 2.Cayley公式 1)由Cayley公式得到四个推论 例题1.P4981 ...

  8. 高等组合学笔记(一)集合的计数,映射与集合的排列组合

    文章目录 第一章 组合分析概述 集合的计数 加法原理 乘法原理 映射 集合的排列与组合 集合的排列 集合的组合 其他计数方式--格路 第一章 组合分析概述 集合的计数 有限集合N{∣N∣:集合中元素的 ...

  9. 微机笔记6——输入输出控制

    微机接口技术 接口的功能 1)寻址功能(必需) 识别是否是I/O口的操作信号,识别是否为端口的片选信号,识别是芯片的哪个寄存器被访问. 2)输入/输出功能(必需) 根据CPU通过控制总线送来的读写信号 ...

最新文章

  1. vsftpd企业应用快速部署文档
  2. oracle 批量导出sequence,Oracle中批量導出Sequence
  3. 业务行为的分析和设计
  4. loss function
  5. 关于微信“被返回页”在被返回时自动刷新
  6. flask中文文档_「Flask系列」 初识Flask
  7. japid-conf目录文件配置
  8. 区块链 Fisco bcos 智能合约(13)-Solidity的设计模式
  9. 计算机课程设计Servlet网上订餐系统【jsp+servlet+mysql】代码讲解安装调试
  10. linux—vi编辑器常用命令
  11. 将计算机桌面分,win7电脑屏幕一分为4怎么设置_win7电脑屏幕分成四个区域操作方法...
  12. 项目管理基础:9.项目人力资源管理
  13. 百度editor编辑器添加新字体
  14. Android Handler机制 - MessageQueue如何处理消息
  15. oracle unable to open file,ORA-27041:unable to open file
  16. 华为p4支持鸿蒙功能吗_只要华为鸿蒙系统能支持三个APP,我就愿意支持!
  17. 瑞萨电子RZ/G2L开发板上手评测
  18. WM_CHAR,WM_UNICHAR,WM_IME_CHAR
  19. sublimelinter php 语法不起作用,sublime安装插件sublimeLinter不起作用解决办法
  20. unity 扎金花比大小

热门文章

  1. JavaScript异常处理
  2. css基础内容之background
  3. spring resttemplate中的转码
  4. zepto为什么不支持animate,报animate is not a function
  5. C++ 返回当前类名
  6. python中的关键字---2(函数基础类)
  7. codeforce 780C Andryusha and Colored Balloons
  8. 使用BBED恢复数据文件头
  9. 绝不要在构造函数和析构过程中调用virtual函数
  10. Linux启动报:UNEXPECTED INCONSISTENCY: RUN fsck MANUALLY问题解决