计数与定时
8253芯片特点
1. 外部引脚
2. 内部结构特点(含3个计数器、1个控制寄存器)
具有三个完全相同的、独立的计数/定时器
? ? ? 三个可独立工作的16位定时/计数器,一个控制寄存器。共占用4个端口地址。 用最低2位地址 区分片内4个端口:
2. 计数启动方式(软件启动、硬件启动的定义)
8253/8254可工作于6种工作方式下,不同的工作方式,具有不同的计数启动方式和输出波形。
3. 6种工作方式
不能自动重复计数的工作方式
方式0:软件启动,不自动重复计数,计数结束输出高电平。
方式1:硬件启动,不自动重复计数,计数开始输出低电平,结束后又变高。
方式4:软件启动,不自动重复计数,计数结束输出一个CLK宽度的低电平。
方式5:硬件启动,不自动重复计数,波形与方式4相同。
能自动重复计数的工作方式(能输出连续波形)
方式2:软、硬件启动,自动重复计数。计数到最后一个脉冲时输出低电平。
① 可输出频率为(1/N)CLK脉冲频率 的连续方波信号。 ② 每1个OUT端脉冲包含(N-1)*CLK的正脉冲 ,1个CLK的负脉冲 。
方式3:软、硬件启动,自动重复计数。输出对称方波。
① 若N为偶数,输出频率为(1/N)CLK频率 的连续对称方波信号。 ② 若N为奇数,输出波形为 (N+1)/2CLK 周期正脉冲 , (N-1)/2CLK 负脉冲 。
工作方式小结
- 需要两个写脉冲——两次写操作
第1个写脉冲写入控制字 第2个写脉冲写入计数初值 - 不同的工作方式,有不同的计数启动方法。
- 可根据对输出波形的要求,选择不同的工作方式。
- 能输出连续波形的只有方式2和方式3。
4. 控制字格式
计数初值可以是8位或16位, 8253/8254数据总线宽度是8位,因此,若计数初值是16位,需要分两次传送。
最大16位BCD数:9999 最大16位二进制数:FFFF 8253为减法计数器 ? 最大计数初值:0 若D0=1,那么0-1=9999 若D0-0,那么0-1=FFFF 即0是最大值(虚值)
5. 8253的应用
1. 应用中的注意点
2.与系统的连接示意
3. 初始化程序流程
一个计数器的初始化程序设计流程: 当有两个以上计数器被应用时的初始化程序设计流程:
注:是写入全部的计数器控制字,在逐个写计算初值
4. 8253应用例子
由其接口地址为0120H~0123H 可知 0120H 是计数器0:CNTO 0121H 是计数器1:CNT1 0122H 是计数器2:CNT2 0123H 是控制寄存器
输入8253的时钟频率为2MH 则8253的CLK : 1/2MH=0.5us
① CNT0每10ms输出一个CLK周期宽的负脉冲
计算计数初值: CNT0:10ms/0.5us=20000 (需20000次CLK 才达到10ms)
确定控制字: CNT0:方式2,16位计数值 ——> 0011 0100
0011 0100 控制字含义: ? 00:计数器0 11:(计数长度选择)先读/写计数器低8位,再读/写计数器高8 010:(工作方式选择)x10-方式2 0:二进制计数
? ? 选择16位计数的原因:因为8位二进制最大是255,而这是2000 ? ? ? 选择方式2的原因:
初始化程序:
② CNT1输出10KHz的连续方波信号
计算计数初值: CNT1:2 MHz/10KHz=200
确定控制字: CNT1:方式3,低8位计数值——> 0101 0110
控制字含义: ? ? ? 选择方式3的原因:
初始化程序:
类似
③ CNT2在定时5ms后产生输出高电平
计算计数初值: CNT2: 5ms/0.5us=10000
确定控制字: CNT2:方式0,16位计数值——> 1011 0000
控制字含义: ? ? ? 选择方式0的原因:
初始化程序:
类似
|