第九章 可编程计数器 /定时器
8253及其应用
本章内容
? 定时处理方法
? 8253工作原理
? 8253应用
定时处理方法
? 定时
? 软件定时方式
? CPU干预
? 指令执行时间作间隔
? 不可编程的硬件定时方式
? 方式固定
? 硬件设定参数
? 可编程的硬件定时方式
? 程序设定、程序控制
? 中断
定时处理方法
? 定时和计数器
? 对不同信号的计数
? 定时器
? 对时钟信号进行计数
? 周期性
? 计数器
? 对外部脉冲进行计数
? 周期性、非周期性
8253计数 /定时器
? 可编程(工作方式 /计数值)
? 三个独立的计数器通道
? 对初值进行减一计数
? 二进制 /BCD计数初值
? 计数对象的最高频率为 2MHz
8253计数 /定时器 —— 原理
8253计数 /定时器 —— 原理
? 8088/8086的连接方式
8253计数 /定时器 —— 原理
? 计数器的结构
? 16( 8× 2)位初值寄存器
? 16 ( 8× 2)位计数器执行部件
? 减一计数
? 16 ( 8× 2)位输出锁存器
? 计数器的控制
? GATE
? CLK
? OUT
8253计数 /定时器 —— 原理
? 定时 /计数器初值的计算
定时时间 = 时钟脉冲周期 × 预置的计数初值
定时频率 = 时钟脉冲频率 ÷ 预置的计数初值
? 8253CLK输入脉冲的最大频率
? 2MHz
8253计数 /定时器 —— 编程
? 控制字寄存器
8253计数 /定时器 —— 编程
? 初始化操作(三个通道单独初始化)
? 写入控制字
? 选择计数通道
? 设置工作方式
? 初值的访问方式
? 确定初值的数制(二进制 /BCD)
? 计数器清零,OUT初始化
? 写入初值
? 根据控制字的规定顺序
? 边界
8253计数 /定时器 —— 编程
? 初始化操作 —— 例
? 8253基址,3F0H、通道 0、方式 3,BCD初
值 1234H
? 编程
? 方式字,00110111→3F6H
? 初值,34H→3F0H, 12H→3F0H
8253计数 /定时器 —— 编程
? GATE的控制作用
8253计数 /定时器 —— 工作方式
? 方式 0—— 计数结束中断方式
8253计数 /定时器 —— 工作方式
? 方式 0—— 计数结束中断方式
? 写入 0方式工作字
? OUT变 低
? 写入初值后,CLK经历上升、下降后,才将
初值送入计数器执行部件
? GATE必须为高
? GATE中途为低,暂时停止计数(维持)
? 一次性,不重载
? 装入初值,即启动计数
8253计数 /定时器 —— 工作方式
? 方式 1—— 可编程单稳态输出方式
8253计数 /定时器 —— 工作方式
? 方式 1—— 可编程单稳态输出方式
? 写入工作方式字
? OUT变 高
? GATE的上升沿才触使初值装入并启动计数,
并使 OUT变低
? 若计数未满,再出现 GATE的上升沿,重载
初值,延长计数时间
? 单稳 —— 在规定的时长内(初值),多个
GATE信号,只被识别一次 —— 多个 GATE
信号 → 一个 OUT输出周期
? 一次性,不重载
8253计数 /定时器 —— 工作方式
? 方式 2—— 比率发生器
8253计数 /定时器 —— 工作方式
? 方式 2—— 比率发生器
? 写入工作方式字
? OUT变高
? GATE必须为高
? OUT在最后一个 CLK周期出现与 CLK等宽
的负脉冲
? 计数到零,重载初值
? GATE的上升沿,导致初值重载
8253计数 /定时器 —— 工作方式
? 方式 3—— 方波发生器
8253计数 /定时器 —— 工作方式
? 方式 3—— 方波发生器
? 写入工作方式字
? OUT变高
? GATE必须为高,GATE上升沿,重载初值
? 初值( n)
? 偶数 —— n/2为高,n/2为低
? 奇数 —— (n+1)/2为高,(n-1)/2为低
? 计数到零,重载初值
8253计数 /定时器 —— 工作方式
? 方式 4—— 软件触发单脉冲
8253计数 /定时器 —— 工作方式
? 方式 4—— 软件触发单脉冲
? 写入工作方式字
? OUT变高
? GATE必须为高,GATE上升沿重载初值
? 计数满,OUT输出一个 CLK周期的负脉冲
? 一次性,不重载
8253计数 /定时器 —— 工作方式
? 方式 5—— 硬件触发单脉冲
8253计数 /定时器 —— 工作方式
? 方式 5—— 硬件触发单脉冲
? 写入工作方式字
? OUT变高
? 初值写入后,并不置入计数执行部件
? 载 GATE上升沿后,才启动计数;到零后,
输出与 CLK等宽的负脉冲,重载初值,等待
GATE
8253的应用举例
? 8253应用
? 定时 —— 针对时钟脉冲
? 计数 —— 针对外部脉冲、外部事件
? 波形发生
8253的应用举例 —— 定时波形
8253的应用举例 —— 定时波形
? 时间常数(初值)
定时时间 = 时钟脉冲周期 × 预置的计数初值
定时频率 = 时钟脉冲频率 ÷ 预置的计数初值
8253的应用举例 —— 定时脉冲
8253的应用举例 —— 脉冲计数