type
status
date
slug
summary
tags
category
icon
password
能力模型
能力分类
省赛
全球总决赛
学习进度
中国总决赛
1 概述
定时和计数器
区别:对不同信号的计数
- 定时器:对时钟信号进行计数,所计数的脉冲具有周期性
- 计数器:对外部脉冲进行计数,所计数的脉冲周期性、非周期性都可能呈现。
计数和及时本质是相同的,他们都是对一个输入脉冲进行计数,如果输入脉冲的频率一定,那么记录脉冲的个数与所需的时间是一一对应的关系。例如输入脉冲频率为2Mhz,那么计数2x10^6,也就是1秒。
定时的方法
(1)软件定时
- 利用微处理器执行一个延时程序段实现
- 容易实现,但是占用CPU资源,降低了CPU的利用率
(2)不可编程定时
- 采用分频器、单稳电路或简易定时电路控制定时时间
- 电路不复杂,但是使用不灵活
(3)可编程的硬件定时
- 软件硬件相结合、用可编程定时器芯片构成一个方便灵活的定时电路
- 能满足各种不同的定时和计数要求,得到了广泛应用
- 与CPU并行工作,不占用CPU时间,并且提供中断源
几种可编程定时/计数器芯片
- 8253-5,最高计数速率为50MHz
- 8254-2,最高计数速率为10MHz
8254和8253的区别
8254是8253的改进型,它们的引脚定义与排列、硬件组成等基本上是相同的。因此8254的编程方式与8253是兼容的,凡是使用8253的地方均可用8254代替。
(1) 允许最高计数脉冲(CLK)的频率不同。8253的最高频率为2 MHz,而8254允许的最高计数脉冲频率可达10 MHz(8254为8 MHz,8254−2为10 MHz)。
(2) 8254每个计数器内部都有一个状态寄存器和状态锁存器,而8253没有。
(3) 8254有一个读回命令字,用于读出当前减1计数器CE的内容和状态寄存器的内容,而8253没有此读回命令字。
2 可编程定时器/计数器 8253-5
特点
1、可编程(工作方式/计数值)
2、三个独立的计数器通道
3、对初值进行减1计数
4、二进制/BCD计数初值
5、计数对象的最高频率为2MHz
6、每个计数器有6中不同的工作方式,均有软件来设定
7、所有I/O都与TTL兼容
8253-5的结构及功能
3个计数器+1个16位计数器初值寄存器CR+1个计数执行部件CE+1个输出锁存器OL+16位减法器,最高速率为2.6MHz
1.芯片引脚
(1)数据引脚 D7~D0:数据线,双向三态,与系统数据总线连接。
(2)片选信号 /CS:输入信号,低电平时选中此片。由CPU输出的地址经地址译码器产生。
(3)地址线 A0,A1:这两根线接到系统地址总线的A0,A1上,当CS为低电平,且8253被选中时,用它们来选择8253内部的四个寄存器。
(4)读信号 RD:输入信号,低电平有效。由CPU发出,用于控制对选中的8253内部寄存器的读操作。
(5)写信号 WR:输入信号,低电平有效。由CPU发出,用于控制对选中的8253内部寄存器的写操作。
(6)时钟脉冲信号 CLK0~CLK2:计数器0、计数器1和计数器2的时钟输入端。由CLK引脚输入的脉冲可以是系统时钟(或系统时钟的分频脉冲)或其他任何脉冲源所提供的脉冲。该脉冲可以是均匀的、连续的并具有精确周期的,也可以是不均匀的、断续的、周期不确定的脉冲。时钟脉冲信号的作用是在8253进行定时或计数时,每输入一个时钟信号,便使计数值减1.
若CLK是由精确的时钟脉冲提供,则8253作为定时器使用;
若CLK是由外部事件输入的脉冲, 则8253作为计数器使用。
定时的本质是计数
(7)门控脉冲信号 GATE0~GATE2:计数器0、计数器1和计数器2的门控制脉冲输入端,是由外部送入的门控脉冲,该信号的作用是控制启动定时器/计数器工作。
(8)输出信号 OUT0~OUT2:计数器0、计数器1和计数器2的输出端。当计数器计数到0时,该端输出一标志信号,从而产生不同工作方式时的输出波形。
2.连接方式
三态:低电平、高电平、高阻态
3.内部结构框图
(1)数据总线缓冲器
8 位双向三态缓冲器,用于连接系统数据总线和8253 内部总线。以便编程时:
- 处理器对8253写入控制字
- 处理器写入计数初值
- 处理器从计数器读取计数值。
(2)读/写控制逻辑
8253 内部的控制电路,读写逻辑接收来自CPU 的控制信号,经过组合,产生对8253各部分的控制。具体为:
- A1、A0—用来对3个计数器和控制积存器进行寻址。
- /RD—读信号。当/RD为低电平时有效,此时,表示CPU正在对8253的一个计数器进行读操作。
- /WR—写信号。当/WR为低电平时有效,此时,表示CPU正在对8253的几个计数器进行写操作。
- /CS—片选信号。只有在/CS为持续低电平的情况下,/RD和/WR才会受到确认,否则会被忽略。
(3)控制字寄存器
控制字寄存器接收CPU 送来的控制字,决定每个计数器的工作方式、读写格式和计数的数制。当A1A0=11 时,用来接收CPU 输出的控制字。该寄存器是个只能写入寄存器。
(4)3个独立的16位计数器
- 包括一个8位的控制寄存器、一个16位的计数初值寄存器CR、一个16位的减1计数器CE和一个16位的输出锁存寄存器OL。
- 16位的计数初值寄存器CR和16位的输出锁存寄存器OL:都没有计数功能,只起锁存作用。
- 16位的减1计数器CE:执行计数操作,其操作方式受控制寄存器控制,最基本的操作是:接受计数初值寄存器CR的初值,在GATE的控制下对CLK信号进行减1计数,把计数结果送输出锁存寄存器OL中锁存。当计数减到0时,该计数通道的OUT引脚发出OUT信号。
4.工作原理
- 控制寄存器:决定工作模式(定时还是计数)
- 状态寄存器:决定工作状态
- 初值寄存器:计数的初值
- 计数输出寄存器:CPU从中读当前的计数值
- 计数器:执行计数操作,CPU不能访问
- 在定时/计数器的基本原理图中,有四个寄存器和一个计数执行单元CE。
- 四个寄存器都可被访问, 他们分别是:
- 二个输出端口——初值寄存器CR和控制寄存器
- 二个输入端口——计数输出寄存器/锁存器OL和状态寄存器
其中:
CE不与CPU有直接联系
CE总是从初值寄存器CR中获得计数初值
只有把CE的内容传到计数输出寄存器OL中, CPU才能读出某个时候的计数值
- 计数初值=fclk÷fout
定时/计数器初值的计算:
定时时间=时钟脉冲周期 x 预置的计数初值
定时频率=时钟脉冲频率 / 预置的计数初值
8253CLK输入脉冲的最大频率:
- 2MHz
5.控制字
- D7D6位是控制字的计数器编号。控制字中使用最高两位表明将控制字写入哪个计数器的控制寄存器中。
- D5D4位用来设定计数器的数据读/写方式。
- D3D2D1位决定了计数器的工作方式。
- D0位决定计数器的数制:D0=0,选择二进制计数;D0=1,选择十进制计数。
8253-5的工作方式
[1]方式0 计数结束中断:软件启动,不能自动重复。
- 初态为0,计数结束产生由低到高的正跳变
①写入控制字
②写入计数初值
④计数初值送减1计数寄存器
⑤计数过程
⑥计数结束
计数器写完计数值时,开始计数(软件触发),相应的输出信号OUT就开始变成低电平。当计数器减到零时,OUT立即输出高电平。门控信号高电平时,计数器工作;为低电平时,计数器停止工作,计数值保持不变。
例题:向8253的A1A0= 11B的地址写入0011 0000B,则表示计数器0设置成方式0,并且采用16位时常数,假设时常数为1500,则计数器0的初始化程序段如下:
[2]方式1 可编程单稳脉冲
①写入控制字
②写入计数初值
③硬件启动
④计数初值送减1计数寄存器
⑤计数过程
⑥计数结束
写入计数初值后,计数器开始工作。门控信号GATE上升沿有效,才开始工作(硬件触发),使输出OUT变成低电平,直到计数器减到0后,输出才变高电平。在计数器工作期间,当GATE又出现一个上升沿时,计数器重新装入原计数初值并重新开始计数。如果工作期间对计数器写入新的计数初值,则要等到当前的计数值记满回零且门控信号再次出现上升沿后,才按新写入的计数初值开始工作。
例题:向8253的A1A0= 11B的地址写入0101 0010B,则表示计数器1设置成方式1,并且采用低8位时常数,假设时常数为15,则计数器1的初始化程序段如下:
[3]方式2 频率发生器(分频器)
方式2是一种具有自动装入时间常数(计数初值N)的N分频器。特点:一次设置计数初值,计数器可自动重复进行减“1”操作,减“1”计数回“0”,可以输出端输出一负脉冲信号。写入计数初值后,GATE为高开始工作,计数器为0时,OUT输出一个时钟脉宽的负脉冲后自动回复高电平;同时自动重新装入原计数初值,反复计数。如果工作期间对计数器写入新的计数初值,则要等到当前的计数值记满回零后,才按新写入的计数初值开始工作。在计数器工作期间,当GATE为低则停止计数,待GATE恢复后计数器重新装入原计数初值并重新开始计数。
例题:向8253的A1A0= 11B的地址写入1001 0100B,则表示计数器2设置成方式2,并且采用低8位时常数,假设时常数为13,则计数器1的初始化程序段如下:
这样在OUT2端就产生了CLK2的13分频信号,若是通过逻辑电路实现起来比较麻烦
[4]方式3 方波输出(周期性方波输出)
方式3工作方式与方式2基本相同,也具有自动装入时间常数(计数初值)的功能。不同之处在于:工作在3方式,引脚OUT输出的不是一个时钟周期的负脉冲,而是占空比为1:1或近似1:1的方波。当计数值为偶数时,输出在前一半的计数过程中为高电平,在后一半的计数过程中为低电平;为奇数时高电平比低电平宽一个时钟脉冲。
例题:向8253的A1A0= 11B的地址写入0011 0110B,则表示计数器0设置成方式3,并且采用16位时常数,假设时常数为2000,则计数器0的初始化程序段如下:
这样在OUT0端就产生了CLK0的2000分频的方波信号。
[5]方式4 软件触发选通
此方式设定后,输出OUT就开始变为高电平,GATE为高时,当写完计数值后开始计数。当计数器减到零后,OUT输出一个宽度为一个时钟脉冲的负脉冲,然后恢复高电平,并一直保持高电平。门控信号GATE为高电平时,计数器工作,为低电平时,计数器停止工作,恢复为高电平后计数器又从原装入的计数初值开始减1工作。在计数器工作期间,如果重新写入新的计数初值,不影响当前计数状态,仅当当前计数值记完后,计数值才按写入的计数值工作。
例题:向8253的A1A0= 11B的地址写入0101 1000B,则表示计数器1设置成方式4,并且采用低8位时常数,假设时常数为75,则计数器1的初始化程序段如下:
[6]方式5 硬件触发选通
方式5的工作特点是由GATE上升沿触发计数器开始工作。在方式5工作方式下,当写入计数初值后,计数器并不立即开始计数,而要由门控信号的上升沿启动计数。在计数过程中(或者计数结束后),如果门控信号再次出现上升沿,计数器将从原装入的计数初值重新计数。
需要注意的地方:
1、处理器写入8253的计数初值只是写入了预置寄存器,之后到来的第一个CLK输入脉冲(需先由低电平变高,再由高电平变低)才将预置寄存器的初值送到减1计数器。
2、方式0: 一般用作请求中断源.
方式1:一般用作输出固定时长的方波,比如定时器.
方式2差不多,只不过他n计数为零的时候,他只产生一次负脉冲,可作为一次信号,作为分频器使用.
特点总结
六种工作方式的区别
- 完成的功能不同
- 启动计数器的触发方式不同。(软/硬件)
- 输出波形不同。
- 更新初值的有效性
- 有的工作方式具备“初值自动重装”的功能。
- 初值自动重装的功能是:当计数值减到规定的数值后,计数初值将会自动重新装入计数器。
8253-5的初始化
定时/计数器初值的计算:定时时间=时钟脉冲周期 x 预置的计数初值定时频率=时钟脉冲频率 / 预置的计数初值8253CLK输入脉冲的最大频率:
- 2MHz
(1)写入控制字
选择计数通道
设置工作方式
初值的访问方式
确定初值的数制(二进制/BCD)
计数器清零、OUT初始化
(2)写入初值
写操作:是指CPU对8253写入控制字或写入计数初值
8253在开始工作之前,CPU要对其进行初始化编程(写入控制字和计数初值),具体应注意以下两点:
① 对每个计数器,必须先写控制字,后写计数初值。因为后者的格式是由前者决定的。
② 写入的计数初值必须符合控制字(D5D4两位)决定的格式。16位数据应先写低8位,再写高8位。
当给8253中的多个计数器进行初始化编程时,其顺序可以任意,但对每个计数器进行初始化时必须遵循上述原则。
例题1:设三个计数器的CR/OI端口地址为70H、71H、72H,控制寄存器端口地址73H。计数器0,工作模式2,CR/OL仅 使用低8位,=初值为100,计数值使用二进制
分析:
1、根据要求配置控制寄存器:0001 x100,这里x我们认为是0,所以配置字为14H
2、计数值100转为16进制:64H
例题2:例:设三个计数器的CR/OL端口地址为70H、71H、72H,控制寄存器端口地址73H。计数器1,工作模式1, CR/OL使用16位,初值为1234,计数值使用BCD
分析:
1、根据要求配置控制寄存器:0111 0011,所以配置字为73H
2、计数值1234H,为16位,而输出一次只能是8位,所以,分高低位分批次输出
(3)读出命令
读操作:是指读出某计数器的当前计数值到CPU中
① 先使计数器停止计数(在GATE端加低电平或关闭CLK脉冲):根据送入的控制字中的D5D4位的状态,用一条或两条输入指令读CE的内容。
实际上,CPU是通过输出锁存器OL读出当前计数值的。
② 在计数的过程中不影响CE的计数而读取计数值:为达此目的,应先对8253写入一个具有锁存功能的控制字,即D5D4位应为00,这样就可以将当前的CE内容锁存入OL中,然后再用输入指令将OL的内容读到CPU中。当CPU读取了计数值后,或对计数器重新进行初始化编程后,8253会自动解除锁存状态,OL中的值又随减1计数器CE值变化。
步骤:
1、发出锁存命令,使当前计数值锁存在OL中,而CE会继续计数
2、用IN语句读OL,获得当前计数值
例题:设三个计数器的CR/OL端口地址为70H、71H、72H,控制寄存器端口地址73H。读出计数器0的当前计数值,放在BX中
分析:
1、根据要求配置控制寄存器:0000 0000,0H
2、读出的值分为两次传出,先低位后高位
例题:要求计数器0工作于方式3,输出方波的重复频率为2KHz,计数脉冲输出为2.5MHz,采用BCD码计数,试写出初始化程序段。
(4)GATE的作用
8253-5应用举例
📎 参考文章——第十二章
- 微机 —— 可编程定时器/计数器 8253/8254——芯片引脚、控制字
- 微机原理—可编程计数器/定时器8253概念详解——工作原理
- 可编程定时计数器8253/8254——内部结构
- 可编程定时器/计数器(微机接口技术)——应用举例
有关问题,欢迎您在底部评论区留言,一起交流~
- Author:Koreyoshi
- URL:https://Koreyoshi1216.com/article/149c7b13-c6a7-80f0-8357-c04d49d20199
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!
Relate Posts