1 8253介绍
1.1 计数器和定时器的区别
- 定时器:系统日时钟、内存刷新、控制扬声器。
- 计数器:对外设提供的脉冲信号计数。
相同点:对脉冲进行计数。
不同点:脉冲的时间间隔是否有规律,定时器有,计数器没有。
1.2 8254 功能
①三个独立的16位计数器
②每个计数器可安二进制或者十进制编程
③每个计数器可编程6种不同的工作模式
④每个计数器计数频率最高为10MHz
⑤<mark>读回功能</mark>(8253没有)
1.3 8253和8254的区别
8253和8254大部分功能一样,8254还具有读回功能
也就是8253有的我8254都有,8253没有的我8254也有
1.4 8254的内部结构和引脚图
数据总线缓冲器 | 读写控制逻辑 | 计数通道 |
---|---|---|
8位,双向,三态,通过8条数据线D7-D0接收CPU向控制器写入的控制字,向计数器写入的计数初值 | 从系统总线接收地址和控制信号,并对8253控制 | 8253有0,1,2三个计数器,每个计数器包含一个8位的控制寄存器,存放计数器的工作模式控制字,一个16位的初值寄存器CR,8253工作之前对他设置初值。等等 |
1.5 8253外部引脚
1.5.1 8254与CPU相连的引脚
D7-D0:数据线,双向,三态。用于将8253与CPU接口数据总线相连,CPU向8253读写数据,命令和状态信息。
/RD:读信号,输入,低电平有效,由CPU产生,
/WR:写信号,输入,低电平有效,由CPU产生
/CS:片选信号,输入,低电平有效
A0,A1:地址线,输出。这两根线连接到地址总线的A1,A0上,以选中8253内部寄存器并对其控制
1.5.2 8254与外设相连的引脚
CLK:计数时钟,输入,用于输入定时脉冲或计数脉冲信号。在计数过程中,此引脚没输入一个信号,计数器的计数值减1,CLK受到GATE门控信号的控制
GATE:门控信号,输入。由外部信号通过GATE端控制计数器启动计数和停止计数的操作。
OUT:计数结束信号,输出。当计数器到0时,OUT引脚必有输出。
2 8254可编程寄存器
2.1 方式字
D0:BCD位。用来设置初值寄存器的格式。
D3D2D1:M3M2M1。用来选择计数器工作方式
D5D4:指明对计数初值寄存器CR的写入和对输出锁存器OL的读出
D7D6:SC1SC0:指明使用哪个计数器(<mark>11代表读回,8253没有此功能</mark>)
2.1.1 方式0:计数结束产生中断
官方解释
我的理解
/WR为低电平有效,当/WR第一次为低电平时,设定工作方式为方式0,/WR第二次为低电平时,设定计数初值,设定初值后,在CLK第一个下降沿时,将初值送入计数器(假设初值为4),之后,CLK的每个下降沿计数器减1,计数器内容由4->3,3->2,2->1,当1->0时,也就是最后一个CLK下降沿,OUT输出信号由低电平为高电平,计数结束,不循环。
2.1.2 方式1:可编程单稳脉冲
官方解释
我的理解
在把方式控制字写入控制寄存器后,输出端OUT由低电平变为高电平,
在将计数初值送入初值寄存器后,在下一个时钟下降沿,初值送入计数执行单元,此时计数执行单元并不计数,直到触发门控信号,也就是(GATE输入一个高电平),计数器在下一个CLK下降沿开始计数,并且此时OUT由高电平变为低电平,计数器内容:4->3,3->2,2->1当1->0时,OUT由低电平变为高电平,并一直维持低电平直到下一次GATE高电平输入
2.1.3 方式2:频率发生器(分频器)
官方解释
我的理解
在送入工作方式字后,OUT由低电平变为高电平,在送入计数初值后,在CLK的第一个下降沿开始计数,(假如计数初值是4)之后再遇到CLK下降沿,4->3,3->2,2->1,当计数值为1时,OUT由高电平变为低电平,当再次遇到CLK下降沿时,计数值由1->0,OUT由低电平变为高电平,并恢复初值(假设是4),继续开始计数(实际上上面的0应该改成4)
2.1.4 方式3:方波发生器
官方解释
我的理解
在送入工作方式字后,OUT由低电平变为高电平,在送入计数初值后,在CLK的第一个下降沿开始计数,(假如计数初值是4)之后再遇到CLK下降沿,开始有4->3,3->2,2->1,1-0,当计数初值N是偶数时,OUT会在前N/2输出高电平,在后N/2输出低电平,当计数初值是奇数时,OUT在前(N+1)/2输出高电平,在后(N-1)/2输出低电平,然后初值恢复为4,继续循环计数(实际上上面的0可以改为4)
2.1.5 方式4:软件触发选通信号
官方解释
2.1.6 方式5:硬件触发选通信号
官方解释
这些内容相当于对老师上课内容的总结,并非真正意义上的“原创”,希望对大家复习触发器内容有一定帮助,see you!