问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

微机原理-可编程计数器/定时器 8253/8254及其应用

创作时间:
作者:
@小白创作中心

微机原理-可编程计数器/定时器 8253/8254及其应用

引用
CSDN
1.
https://blog.csdn.net/qq_46276154/article/details/117912574

在微型计算机系统中,常需要用到定时功能。在IBM PC机中,需要有一个实时时钟以实现计时功能。对动态RAM进行刷新。在计算机实时控制和处理系统中,要按一定的采样周期对处理对象进行采样。外部事件进行计数。Intel 8253就是一种能完成上述功能的计数器/定时器芯片,被称为可编程间隔定时器(Programmable Interval Timer,PIT)。8253内部具有3个独立的16位计数器通道,通过对它进行编程,每个计数器通道均可按6种不同的方式工作,并且都可以按二进制或10进制格式进行计数,最高计数频率能达到2MHz。

一、8253的内部结构和引脚信号

(1)数据总线缓冲器

数据总线缓冲器是8253与系统数据总线相连接时用的接口电路,它由8位双向三态缓冲器构成,CPU用输入、输出指令对8253进行读/写操作的信息,都经8位数据总线D~D传送。

传送信息包括:

①CPU在对8253进行初始化编程时,向它写入的控制字。

②CPU向某一计数器写入的计数初值。

③从计数器读出的计数值。

(2)读/写控制逻辑

可接收的信号有:

①CS片选信号,低电平有效,由地址总线经I/О端口译码电路产生。

②RD读信号,低电平有效。

③WR写信号,低电平有效。

④A1A0端口选择信号。在8253内部有3个计数器通道(0~2)和一个控制字寄存器端口。当A1A0 =00时,选中通道0;A1A0= 01时,选中通道1;A1A0 =10时,选中通道2;A1A0 =11时,选中控制字寄存器端口。

CS
RD
WR
A1A0
功能
0
1
0
00
写入计数器0
0
1
0
01
写入计数器1
0
1
0
10
写入计数器2
0
1
0
11
写入控制字寄存器
0
0
1
00
读计数器0
0
0
1
01
读计数器1
0
0
1
10
读计数器2
0
0
1
11
无操作
1
×
×
××
禁止使用
0
1
1
××
无操作

(3)计数器0~2

8253内部包含3个完全相同的计数器/定时器通道,对3个通道的操作完全是独立的。每个通道都包含一个8位的控制字寄存器、一个16位的计数初值寄存器、一个计数器执行部件(实际的计数器)和一个输出锁存器。执行部件实际上是一个16位的减法计数器。

每个通道工作时,都是对输入到CLK引脚上的脉冲按二进制或10进制(BCD码)格式进行计数。

定时时间 = 时钟脉冲周期tc × 预置的计数初值n

(4)控制字寄存器

规定各计数器通道的工作方式、读写格式和数制。

SC1SC0通道选择位

SC1SC0 = 00,01,10 分别表示向8253的计数器通道0~2写入控制字。SC1SC0 = 11时无效。

RL1RL0

RL1RL0 =01,表示只读/写低8位字节数据,只写入低8位时,高8位自动置为0。

RL1RL0 =10,表示只读/写高8位字节数据,只写入高8位时,低8位自动置为0。

RL1RL0 =11,允许读/写16位数据。由于8253的数据线只有8位(D7∼D0),一次只能传送8位数据,所以读/写16位数据时必须分两次进行,先读/写计数器的低8位字节,后读/写高8位字节。

RL1RL0 =00,把通道中当前数据寄存器的值送到16位锁存器中,供CPU读取该值。

二、初始化编程步骤和门控信号的功能

2-1 8253的初始化编程步骤

(1)写入控制字

用输出指令向控制字寄存器写人一个控制字,以选定计数器通道,规定该计数器的工作方式和计数格式。写入控制字还起到复位作用,使输出端OUT变为规定的初始状态,并使计数器清0。

(2)写入计数初值

用输出指令向选中的计数器端口地址中写人一个计数初值

初值若是8位数,则只要用一条输出指令就可完成初值的设置。如果是16位数,则必须用两条输出指令来完成,而且规定先送低8位数据,后送高8位数据。注意,计数初值为0时,也要分成两次写入,因为在二进制计数时,它表示65536,BCD计数时,它表示10000。

2-2 门控信号控制功能

三、8253的工作方式

3-1 方式0-计数结束中断方式

当对8253的任一个通道写入控制字,并选定工作于方式0时,该通道的输出端OUT立即变为低电平。

要使8253能够进行计数,门控信号GATE必须为高电平。

向计数通道写入初值n(=4)时,则WR0变成低电平。

在WRn上升沿后的下一个时钟脉冲的下降沿时,才把n装入通道内的实际计数器中,开始进行减1计数。

这个由低到高的正跳变信号,可以接到8259A 的中断请求输入端,利用它向CPU发中断请求信号。

3-2 方式1-可编程单稳态输出方式

当CPU用控制字设定某计数器工作于方式1时,该计数器的输出OUT立即变为高电平。

必须等到GATE由低电平向高电平跳变,形成一个上升沿后,才能在下一个时钟脉冲的下降沿。

当计数器的值减为零时,输出端OUT产牛由低到高的正跳变。这样,就可在OUT引脚上得到一个负的单脉冲,单脉冲的宽度可由利序来控制,它等于时钟脉冲的宽度乘以计数值n。

3-3 方式2-比率发生器

如果 GATE为高电平,则在写人计数值后的下一个时钟脉冲时,将计数值装入执行部件。

每隔n个时钟脉冲就产生一个负脉冲,其宽度与时钟脉冲的周期相同,频率为输入时钟脉冲频率的n分之一。这实际上是一种分频工作方式。

写入新初值n′,下次计数按n′计数。

当GATE变为低电平时,将迫使OUT变为高电平,并禁止计数。

3-4 方式3-方波发生器

从输出端得到的不是序列负脉冲,而是对称的方波或基本对称的矩形波

写入计数器的初值为偶数,则当8253进行计数时,每输入一个时钟脉冲,均使计数值减2。

如果写入计数器的初值为奇数,则当输出端ОUT为高电平时,第一个时钟脉冲使计数器减1,以后每来一个时钟脉冲,都使计数器减⒉,当计数值减为0时,输出端OUT由高电平变为低电平,同时自动重新装入计数初值继续进行计数。这时第一个时钟脉冲使计数器减3,以后每个时钟脉冲都使计数器减⒉,计数值减为0时,OUT端又回到高电平,并重新装入计数初值后,开始下一轮循环计数。

当写入的计数初值为偶数时,输出完全对称的方波,写人初值为奇数时,其输出波形的高电平宽度比低电平多一个时钟周期。

3-5 方式4-软件触发选通

如果GATE为高电平,那么写入计数初值后,在下一个时钟脉冲后沿将自动把计数初值装入执行部件,并开始计数。

计数过程是由软件把计数初值装入计数寄存器来触发的。

3-6 方式5-硬件触发选通

当装入计数值n后,不管GATE是高电平还是低电平,减1计数器都不会工作。

方式1用来产生单脉冲。

方式2用来产生序列负脉冲,每个负脉冲的宽度与CLK脉冲的周期相同。

方式3用于产生连续的方波。方式2和方式3都实现对时钟脉冲进行n分频。

方式4和方式5的波形相同,都在计数器回О后,从OUT端输出一个负脉冲,其宽度等于一个时钟周期。但方式4由软件(设置计数值)触发计数,而方式5由硬件(门控信号GATF)触发计数。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号