文档介绍:第 1 0章
可编程定时/计数器
第10章可编程定时/计数器
本章重点:
掌握可编程定时/计数器8253芯片的结构、功能、编程和使用方法。
本章难点:
在实际应用中正确地连接可编程定时/计数器8253芯片,并编写正确的应用程序。
在计算机系统中经常要用到定时信号,如动态存储器的刷新定时、系统日历时钟的计时,系统定时中断以及喇叭的声源等都是用定时信号来产生的。
定时信号可以通过二种方法获得,即软件定时和硬件定时。硬件定时又可分为不可编程的硬件定时和可编程的硬件定时两种。
概述
软件定时是根据所需要的时间常数来设计一个延迟子程序,CPU执行延时程序将占用CPU的工作时间,降低了CPU的利用率。
硬件定时主要指用单稳延时电路或计数电路来实现延时和定时。可编程定时/计数方法的优点是定时或计数时,不占用CPU空间。
概述
可编程定时/计数器具有两种功能:计数器和定时器 8253可编程定时/计数器芯片采用24引脚,双列直插式封装,其主要特性:
(1)采用NMOS工艺,用单一的+5V电源供电
(2)片内有3个独立的16位减法计数器
(3)计数频率为0~5MHz
(4)两种计数方式,即二进制和BCD方式计数
(5)六种工作方式,既可对系统时钟脉冲计数实现定时,又可对外部事件进行计数。
可编程定时/计数器8253
8253的主要性能
8253由数据总线缓冲器、读/写逻辑、控制字寄存器、3个独立的功能相同的计数器0、1、2和内部总线等组。8253的外部引脚定义如图所示,引脚的意义如下:
1. D7~D0数据总线
2. 读信号
3. 写信号
4. 片选信号
5. A1、A0地址码
6. CLK0—CLK2时钟信号
7. GATE0、GATE1、GATE2门控信号
8. OUT0、OUT1、OUT2计数器输出信号
8253的结构
8253的三个计数器在工作前必须分别进行初始化编程。每个计数器的编程步骤均由写入控制字开始,选定一种工作方式,然后写入计数初值。8253的编程主要包括设置控制字、赋初值、发锁存命令和读计数值。
1. 设置控制字
控制字的格式及各位的含义如下:
D7 D6 D5 D4 D3 D2 D1 D0
SC1
SC0
RW1
RW0
M2
M1
M0
BCD
8253 的编程
SCl、SC0用于指明送给哪一个计数器的控制字。 00:选择计数器0;01:选择计数器1;10:选择计数器2;11:无意义。
BWl、BW0计数器读/写格式选择。 00:使锁存器的输出锁定为计数器的当前计数值;01:只选计数器的低八位字节(LSB)进行读/写;10:只选计数器的高八位字节(MLB)进行读/写; 11:先读/写低8位字节,再读/写高8位字节。
M2、M1、MO设定计数器的工作方式,8253的每个计数器都有6种工作方式可供选择。
000:方式0; 001:方式1;
010:方式2; 011:方式3;
100:方式4; 101:方式5。
BCD计数方式选择,可采用二进制计数或二—十进制(BCD码)计数,即“0”表示二进制计数;“1”表示二—十进制计数。
2. 赋初值
设置控制字后,按有关规定给计数器赋初值。
在读计数值时,应先用锁存命令将计数器当前的计数值在锁存器中锁定,然后再加以读取。目的是为了获取正确的当前计数值。锁存器的输出会随计数执行部件的内容而变化,当计数器收到一个锁存命令时,锁存器的输出将保持当前的计数值不再发生变化,而当CPU读取计数值后,锁存器的输出将再次随计数执行部件而变。