跳到内容
文章目录
- 〇、思维导图
- 一、定时/计数 概述
- 二、8253/8254 内部结构及引脚信号
- 三、8253/8254的工作方式
- 1. 方式0:中断信号发生器
- 2. 方式1:单稳负脉冲信号发生器
- 3. 方式2:速率信号发生器
- 4. 方式3: 方波信号发生器
- 5. 方式4:软件触发的选通信号发生器
- 6. 方式5:硬件触发的选通信号发生器
- 四、8253/8254编程方法
- 五、8253应用(典型PC机应用实例)
〇、思维导图
一、定时/计数 概述
- 实际应用中,经常用到定时或计数控制,如定时中断、定时检测、定时扫描、各种计数等。
- 实现定时控制的三种基本方法
- intel的8253/8254是微机系统中应用较多的定时计数器,8253工作频率最高2.6MHz;8254工作频率为10~12MHz,二者除了频率和少数几处不同外几乎没有差别。
二、8253/8254 内部结构及引脚信号
- 8254具有3个功能相同又相互独立的16位减法计数器,每一个计数器可以进行二进制计数和BCD码计数,每个计数通道具有6钟功能各异的工作方式。
1. 主要功能
2. 内部结构和外部引脚
(1)结构图
(2)组成
- 数据总线缓冲器:
- 通用可编程接口芯片的共有部分,用来和系统数据总线相连的8位双向三态驱动器,8253/8254可以通过他读写总线数据
- 读写逻辑
- 通用可编程接口芯片的共有部分,接受cpu发来的控制信号、片选信号或命令选择信号等,再通过它产生对内部各部件的读写
- 相关引脚
- 控制寄存器
- 用于存放CPU发来的控制字,以确定计数器的工作方式
- 3个计数器
- 计数器0/1/2是相互独立的16位减法计数器。既可进行二进制计数,又能进行十进制(BCD)计数,这由控制字决定。
- 计数器引脚
三、8253/8254的工作方式
1. 方式0:中断信号发生器
- 写完初值N,经过N+1个CLK脉冲后,OUT变化
- 计数器不会自动重装初值,也不会重新计数
2. 方式1:单稳负脉冲信号发生器
- 初始值设为N,产生N个clk宽度的负脉冲
- 计数器不会自动重装初值,也不会重新计数
3. 方式2:速率信号发生器
- 初始值设为N,产生N个clk宽度的连续波信号
- 自动重装并重新计数
4. 方式3: 方波信号发生器
- 初始值设为N,产生周期为N倍时钟周期的方波信号(占空比等于或约等于1:1)
- 自动重装并重新计数
5. 方式4:软件触发的选通信号发生器
- 在N个clk的延时后生成一个clk宽度的负脉冲(选通信号)
- 不自动重装,不计数
6. 方式5:硬件触发的选通信号发生器
- 在N个clk的延时后生成一个clk宽度的负脉冲(选通信号)
- 不自动重装,不计数(和方式4的区别仅在于触发方式不同)
四、8253/8254编程方法
1. 控制字
2. 初始化
3. 示例
- 题目:
- 分析:
- 计数初值分析
- 控制字
(1)OUT0(计数器0)输出方波(方式3),计数值80(低8位写80,二进制计数):0001 0110B
(2)OUT1(计数器1)输出连续脉冲(方式2),计数值4000(16位写4000,二进制计数):0111 0100B
(3)OUT2(计数器2)输出单个脉冲(方式1),计数值0(16位写0,二进制计数):1011 0010B
- 代码:
五、8253应用(典型PC机应用实例)
(1)示例1:
- 8088微机中使用了一片8253,用OUT0产生时钟信号,OUT1产生DMA通道0用于DRAM刷新控制信号,OUT2产生方波信号,通过驱动和滤波器后推动扬声器,相关原理图如下,编写8253初始化程序
- 分析:
- OUT0产生时钟信号,就是方波,工作方式为3。GATE恒高电平满足。要求55ms产生一次中断,即每秒约18.206次,又fclk输入为1.19318MHz,所以计数值为
1.19318*10^6/18.206 = 65536
,所有计数初值写0,用16位长二进制计数 - OUT1产生连续脉冲,工作方式为2。GATE恒高电平满足。要求每15.08us启动刷新DRAM,计数初值为
1.19318*15.08 = 18
,低8位二进制计数即可 - OUT2产生1KHz方波,工作方式为3。GATE恒高电平,即8255PB0输出高电平发声,输出低电平静音。计数初值
1.19318M/1K = 1193
,16位二进制计数
- 示例代码:
(2)示例2: