【沧海拾昧】微机原理:可编程计数器/定时器8253芯片

 #C0303


沧海茫茫千钟粟,且拾吾昧一微尘

——《沧海拾昧集》@CuPhoenix


【阅前敬告】

沧海拾昧集仅做个人学习笔记之用,所述内容不专业不严谨不成体系

如有问题定为本集记录有谬,切勿深究


目录

引子:定时、计数与端口

1、微机中的定时类型

2、外部定时

3、两种定时方式

4、端口

一、Inter 8253 功能与结构

1、8253的主要功能

2、8253的内部结构

3、8253的引脚

4、端口内部寻址

二、Inter 8253 初始化编程

1、8253的控制字

2、计数初值的计算

3、计数初值的范围

4、初始化编程

三、8253的六种工作方式

1、基本规则

2、方式0:计数结束产生中断

3、方式1:硬件可重触发单稳态方式

4、方式2:周期性负脉冲输出

5、方式3:周期性方波输出

6、方式4:单次负脉冲输出(软件启动)

7、方式5:单次负脉冲输出(硬件启动)


引子:定时、计数与端口

1、微机中的定时类型

  • 内部定时:产生运算器、控制器等CPU内部的控制时序,比如取值周期、读/写周期、中断周期等。主要用于CPU内部指令的执行过程。计算机的每个操作都要按严格的事件节拍(周期)执行。内部定时的计时单位比外部定时的计时单位要小得多,一般是ns级。
  • 外部定时:外部设备实现某种功能时,所需要的一种时序关系,外部定时的计数单位一般为ms级和s级。

2、外部定时

  • 软件定时:写延时子程序,利用循环,通过循环次数及循环体内的指令周期数来计算定时时间。节省硬件,实施方便。但占用CPU时间,降低CPU效率,与CPU的工作频率有关,通用性差
  • 硬件定时:采用外部定时器进行定时,由于定时器是独立于CPU而自成系统的定时设备,因此,不占用CPU的时间,定时时间可长可短,使用灵活。尤其是定时时间固定,不受CPU的工作频率影响,定时程序具有通用性。

3、两种定时方式

  • 加法定时:正计时,每次将当前的时间加1,直到与设定的时间相等时,提示设定的时间已到。
  • 减法定时:倒计时,每次将设定的时间减1,直到为0,提示设定的时间已到。减法定时比加法定时的优势在于设置计数初值便利。

        示例:设定时器的计数器是一个8位的寄存器,计100个脉冲,考察计数初值

                ① 加法计数:256 - 100 = 156,即 1001 1100 B,9CH;

                ②减法计数:100,即 0110 0100 B,64H;

定时/计数器的核心是一个自动加1或减1的计数器

4、端口

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

端口结构示意图

一、Inter 8253 功能与结构

1、8253的主要功能

        8253有3个独立的16位计数器通道,其中每个通道都:

  • 可以按照二进制或十进制计数;
  • 计数速率可高达2MHz;
  • 有6种工作方式,可由程序设置改变;
  • 所有的输入输出都与TTL兼容。

2、8253的内部结构

Inter 8253 内部结构示意图

组成部分包含内容作用
数据总线缓冲器       与CPU数据总线连接的8位双向三态缓冲器

CPU向8253写入的控制字;

CPU向对应的计数器写入的初值;

CPU读取对应计数器的当前计数值

读写控制逻辑       片选信号(CS*)、读写信号(RD*、WR*)、端口(A0、A1)-
控制字寄存器-       在初始化编程时,可分别设置3个计数器的工作方式等
计数器       时钟输入(CLK)、门控输入( GATE)、输出(OUT)       3个独立的计数通道,可分别按不同的工作方式工作

        计数器内部有:8位控制寄存器(控制计数器的工作方式)、16位计数初值寄存器(装计数初值)、计数执行部件(执行减1操作)、输出锁存器(需要读取当前计数值时,将当前执行计数器中的值锁存进该存储器后读取)。

3、8253的引脚

  • D0 ~ D7:双向三态数据总线;
  • A1,A0:地址线,用于片内寻址;
  • CS*:片选信号,低电平有效;
  • RD* / WR*:读信号/写信号;
  • CLK:可输入周期或随机的脉冲信号;
  • GATE:启动或禁止计数;
  • OUT:减1计数到零信号输出端,输出信号可以是方波,脉冲,电平等。
8253引脚图

4、端口内部寻址

A1A0内部寻址
00计数器0
01计数器1
10计数器2
11控制寄存器

二、Inter 8253 初始化编程

        流程:向控制端口写入通道控制字 → 向选中的通道端口写入计数初值

1、8253的控制字

8253的控制字

2、计数初值的计算

        做计数器:要求计数的次数即计数初值;

        做定时器:计数初值 = 定时时间 × 脉冲频率

                 示例:CLK = 1.19318MHz,  t = 5ms

                        计数初值为:T_{c}=5\times 10^{-3}\times1193180=5965

        做分频器:要求产生频率为f的信号波形的初值;        

                  示例:CLK = 1.19318MHz,  f = 800Hz

                        计数初值为:T_{c}=1193180/800=1491(将这个初值称为时间常数N)

3、计数初值的范围

        对二进制计数:0000H ~ FFFFH;

        对BCD计数:0000 ~ 9999;

        注:0000是最大值,代表1 0000 0000 0000 0000 B 或 10000 D

4、初始化编程

  1. 根据要求或硬件电路确定各通道和控制字寄存器的地址;
  2. 根据对各通道计数或定时的要求确定8253的控制字;
  3. 根据要求计算各通道的计数初值。

        示例:用通道0,工作在方式1,BCD计数,计数值为5080,8253端口地址为F8H~FBH

MOV AL,33H    ;控制字 0011 0011 B
OUT 0FBH,AL   ;控制字寄存器
MOV AX,5080H  ;计数初值
OUT 0F8H,AL   ;通道0地址输出低8位
MOV AL,AH    
OUT 0F8H,AL   ;通道0地址输出高8位

         示例:读取通道1的16位计数值,8253端口地址为F8H~FBH

MOV AL,40H    ;锁存控制字 0100 xxxx B
OUT 0FBH,AL   ;控制口
IN  AL,0F9H   ;读通道1低8位
MOV CL,AL     ;存于CL中 
IN  AL,0F9H   ;读通道1高8位
MOV CH,AL     ;存于CH中

三、8253的六种工作方式

1、基本规则

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

2、方式0:计数结束产生中断

基本功能计数结束输出正跳变信号
启动方式软件启动,每设置一次初值只启动一次计数过程
OUT状态

写入控制字后,OUT初态为低

在计数过程中一直保持为低电平,当计数器减到0时,OUT立即变成高电平

门控作用

GATE = 1:允许计数

GATE = 0:计数暂停

初值重装不重装,再次启动需再送入计数初值
初值改变

       立即有效,即重新写入初值时停止计数,当写完初值后,在CLK的下降沿处,开始以新的计数初值计数

输出波形

3、方式1:硬件可重触发单稳态方式

基本功能单稳延时器(宽度为 N 的负脉冲
启动方式只能由门控脉冲GATE的上升沿启动(硬件启动)
OUT状态

写入控制字后,OUT初态为高

GATE启动后,获得N个CLK宽度的低电平

门控作用

GATE 上升沿

启动计数

初值重装

计数中途,若GATE出现上升沿,计数器从CLK的下降沿开始重新计数

计数到零后,可再次由外部触发启动,不用再次送入一个计数初值

初值改变

       不影响本次计数,在下次GATE上升沿时有效。计数初值是下次有效

输出波形

4、方式2:周期性负脉冲输出

基本功能分频器周期性负脉冲,在完成 N-1 个计数后,在个CLK时输出一个负脉冲)
启动方式

        装入初值后开始计数(软件启动);计数或闲置期间,若GATE为0,停止计数,直到GATE出现上升沿,计数器重新开始计数输出(硬件启动

OUT状态

写入控制字后,OUT初态为高

计数到1后,输出一个CLK的低电平,接着又从N开始重复计数

门控作用

GATE = 1:允许计数

GATE = 0:计数暂停

上升沿:启动计数

初值重装计数到1后,输出一个CLK的低电平,然后自动从 N 开始重复计数
初值改变

       不影响本次计数,输出本次OUT脉冲后按新的计数初值开始计数。计数初值是下次有效

输出波形

5、方式3:周期性方波输出

基本功能方波发生器(占空比为1:1或近似1:1的连续方波
启动方式

        装入初值后开始计数(软件启动);计数或闲置期间,若GATE为0,停止计数,直到GATE出现上升沿,计数器重新开始计数输出(硬件启动

OUT状态

写入控制字后,OUT初态为高

若初值N为偶数,输出N/2个CLK周期高电平,N/2个CLK周期低电平;

若N为奇数, (N+1)/2个高电平,(N-1)/2个低电平

门控作用

GATE = 1:允许计数

GATE = 0:计数暂停

上升沿:启动计数

初值重装

计数中途出现GATE上升沿重新启动计数周期

计数到1后,输出一个CLK的低电平,然后自动从 N 开始重复计数

初值改变

       不影响本次计数,下一周期按新的计数初值开始计数。计数初值是下次有效

输出波形

6、方式4:单次负脉冲输出(软件启动)

基本功能单脉冲发生器(在完成 N 个计数后,在 N+1 个CLK时输出一个负脉冲)
启动方式

软件启动,每设置一次初值只启动一次计数过程

OUT状态

写入控制字后,OUT初态为高

当计数器减到0时,输出一个周期的低电平,其他时刻维持高电平

门控作用

GATE = 1:允许计数

GATE = 0:计数暂停

初值重装

计数中途出现GATE上升沿重新启动计数周期

结束后初值不重装,再次启动需再送入计数初值

初值改变

       立即有效,即重新写入初值时停止计数,当写完初值后,在CLK的下降沿处,开始以新的计数初值计数

输出波形

  

7、方式5:单次负脉冲输出(硬件启动)

基本功能单脉冲发生器(在完成 N 个计数后,在 N+1 个CLK时输出一个负脉冲)
启动方式

硬件启动,只能由门控脉冲GATE上升沿启动

OUT状态

写入控制字后,OUT初态为高

当计数器减到0时,输出一个周期的低电平,其他时刻维持高电平

门控作用

GATE 上升沿

启动计数

初值重装

计数中途出现GATE上升沿重新启动计数周期

计数到零后,可再次由外部触发启动,不用再次送入一个计数初值

初值改变

     改变计数初值不影响本次计数,只有在GATE信号后才重新开始以新的计数初值计数,即计数初值是下次有效

输出波形

  

敬谢诸君。


于金陵钟山之阳。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值