8253
引脚与内部结构
引脚信号
- 8位数据线D0~D7
- 寻址控制线A0、A1、
- 读写控制线
- 各种通道与外设的接口
- 时钟输入:CLK
- 门控输入:GATE
- 波形输出:OUT
内部结构
数据总线缓冲器
- 8253与数据总线连接时的接口电路,8位双向三态缓冲器组成
与CPU进行读写的信息都经D7~D0传送
- 初始化编程8253时CPU写入的控制字
- CPU向某一计数器写入的计数初值
- CPU从计数器读出的计数值
读/写控制逻辑
接收
I/O端口译码电路产生
- 为0时工作
- 为0时向3个计数器和控制口写入数据
- 为0时从3个计数器读出数据,但不能读控制口
A1A0,端口选择信号
- 00,通道0
- 01,通道1
- 10,通道2
- 11,控制字寄存器
计数器或计数通道0~3
3个相同而独立的计数器/定时器通道,每通道含有1个8位控制字寄存器、1个16位计数初值寄存器、1个计数执行部件、1个输出锁存器。
CR
- 16位初值寄存器
CE
减一计数器
- 执行部件
OL
输出锁存器
- 随时记录计数器的值,必要时可从中读出瞬时值。
- 写入计数初值后,在门控信号控制下,对CLK脚上的脉冲进行-1计数。计数结束时,从OUT引脚输出脉冲信号。
- 定时时间=时钟脉冲周期tc×预置的计数初值n
- 计数初值=输入频率/输出频率
控制字寄存器
控制字写入控制字寄存器。用来选定计数通道,各通道工作方式、读写格式和计数数制。
- 2通2读写锁3方式1二/BCD
初始化编程和门控信号功能
初始化编程步骤
先写入控制字
- 控制字用来选定计数通道,规定工作方式和计数格式。
后写入计数初值n
- 写入8/16位计数初值。16位要执行2条OUT指令,先送低8位,后送高8位。
- 二进制计数时,n=0000-FFFFH,0表示65536,BCD计数时,n=0000-9999,0表示10000。
读出计时器当前的计数值
- 给控制字寄存器写入锁存命令
MOV AL,10000000B - 读低8位
- 读高8位
8253的工作方式
方式种类
方式0:计数结束中断,输出一个正跳变
- 向计数通道写入计数初值n,OUT置为0。
- 只有GATE=1才能进行计数
- n写入1个CLK后才开始-1计数,在(n+1)个CLK后计数值减为0,从OUT输出1个正跳变可作中断请求信号。
- 计数过程中可重写或改变计数值。
方式1:可编程单稳输出,输出一个宽度可调的负脉冲
- 写入控制字置为方式1,OUT变低。
- 装入计数初值,GATE产生正跳变时,才启动计数
- 计数器减为0时, OUT由低变高,产生1个负脉冲。
- 允许当前计数未完时,由GATE多次触发计数,OUT输出会保持N个CLK脉宽的低电平
- 下个GATE正跳变到来时将初值n重装入,从n开始计数
方式2:比率发生器,输出序列负脉冲
- GATE=1,写入计数初值n后减1计数,减到1时OUT输出1个与CLK脉冲等宽的负脉冲,然后自动装入n,重开始计数。
- 这样,每隔n个时钟脉冲就会输出1个负脉冲,对时钟脉冲进行n分频。
- 计数过程中装入新初值n’后,下次计数时按n’计数。
- GATE变低停止计数,由低变高后重装入初值计数。
方式3:方波发生器。方式2,3均可n分频
- 类似于方式2,对时钟脉冲进行n分频,但输出方波
- 若初值为偶数,每次-2,减到0时OUT=0;又从初值起-2,减到0时OUT=1,不断循环进行,输出一系列对称方波
- 若初值为奇数,先-1,后每次-2,减到0时OUT=0 ;又从初值起先-3,后每次-2,减到0时OUT=1,循环进行,输出不完全对称方波
- 计数过程中GATE变低,停止计数。变高后,重新从n开始计数。
方式4:软件触发选通,写入n开始计数
- GATE=1,写入计数初值n后,触发减1计数,减到0时输出1个脉宽的单个负脉冲,n一次有效。
- 如要继续计数,必须重新装入n
- 计数过程中GATE变低,停止计数,由低变高后,重新装入初值开始计数,减到0后输出一个负脉冲
方式5:硬件(GATE上升沿)触发选通
- 写入计数初值后,等GATE产生正跳变,由硬件触发计数。
- 计数值减到0,输出1个脉宽的负脉冲,并自动装入计数初值,但不计数,仍要等硬件触发计数
- 计数过程中,允许当前计数未完时的多次重触发,从计数初值开始计数
- 也允许写入新计数值,硬件触发按新初值计数
工作流程
开始计数
- 硬件触发还是软件触发
写入方式字OUT引脚电平
- 硬件触发还是软件触发
计数中
- 计数中OUT输出波形
- 计数过程中门控信号GATE对计数操作的影响
计数结束
- 是否重复计数
门控信号控制功能
- 写入计数初值后,方式0,2,3,4,在GATE为高时允许计数。
- 方式1,5,由GATE的上升沿触发计数。
小结
初始化后OUT输出:
- 只有方式0,在写入控制字后输出为低:其余5种方式,都是在写入控制字后输出为高。
计数开始的触发方式:
- 方式0,2,3,4都是写入计数初值后,计数过程开始了,为软件触发,方式1和方式5在写入计数初值后,需要由外部GATE信号的上升沿触发启动,为硬件触发计数。
自动重复计数:
- 方式2和方式3为自动重复工作方式,其他4种方式都是一次性计数,要继续工作需要重新启动。