570 likes | 850 Views
定 时 计 数 技 术. 定时计数技术概述. 8253 定时 / 计数器. 8253 应用举例. §1.8 定时计数技术概述. 定时计数技术在计算机中具有极为重要的作用。微机控制系统中,常应用定时器实现定时控制,例如定时中断、定时检测、定时扫描等;也往往应用计数器对外部事件计数。. 定时器和计数器都由数字电路中的计数电路构成。它们的工作原理一样,都是记录输入的脉冲个数。前者记录高精度晶振脉冲信号,因此可以输出准确的时间间隔,称为定时器。而当记录外设提供的具有一定随机性的脉冲信号时,它主要反映脉冲的个数(进而获知外设的某种状态),称为计数器。.
E N D
定时计数技术概述 • 8253定时/计数器 • 8253应用举例
§1.8 定时计数技术概述 定时计数技术在计算机中具有极为重要的作用。微机控制系统中,常应用定时器实现定时控制,例如定时中断、定时检测、定时扫描等;也往往应用计数器对外部事件计数。
定时器和计数器都由数字电路中的计数电路构成。它们的工作原理一样,都是记录输入的脉冲个数。前者记录高精度晶振脉冲信号,因此可以输出准确的时间间隔,称为定时器。而当记录外设提供的具有一定随机性的脉冲信号时,它主要反映脉冲的个数(进而获知外设的某种状态),称为计数器。定时器和计数器都由数字电路中的计数电路构成。它们的工作原理一样,都是记录输入的脉冲个数。前者记录高精度晶振脉冲信号,因此可以输出准确的时间间隔,称为定时器。而当记录外设提供的具有一定随机性的脉冲信号时,它主要反映脉冲的个数(进而获知外设的某种状态),称为计数器。
定时的方法归纳起来有三种: 1. 软件定时 (CPU 循环执行一段程序) 2. 硬件定时 (单稳态延时电路) 3. 可编程的定时器/计数器 (8253定时/计数芯片)
§1.9 8253 定时/计数器 一、主要性能 1. 有3个独立的16位计数器 2. 可以按二进制或BCD 码方式计数 3. 最高计数频率达2MHz 4. 可编程6种工作方式
计数器 0# CLK0 D0~D7 数据 总线 缓冲器 GATE0 OUT0 内 部 总 线 读 / 写 逻辑 计数器 1# CLK1 WR RD GATE1 A0 OUT1 A1 CS 计数器 2# CLK2 GND GATE2 VCC OUT2 二、内部结构及引脚信号 控 制 字 寄 存 器 图8.1 8253内部框图
各部分的功能如下: 1. 数据总线缓冲器:负责与CPU 的接口,CPU 通过数据总线缓冲器向8253写入控制字、计数初值,读取某一通道的计数值。 D0~D7与CPU 的数据总线D0~D7相连。
2. 读/写逻辑:接收CPU 发出的读、写信号和地址信号,负责对8253内部有关寄存器的读/写操作。
表 1-18253 读 / 写操作逻辑 A1 A0 操 作 功 能 RD WR CB 计数初值装入计数器0 计数初值装入计数器1 计数初值装入计数器2 写控制器寄存器 读计数0 读计数1 读计数2
3. 控制字寄存器:接收CPU 写入的控制字,只能写入,不能读出。
4. 三个计数器 (0#,1#,2#) 三个独立的16位减法计数器,内部结构如图8.2。 图8.2 计数通道内部逻辑框图
D7 D6 D5 D4 D3 D2 D1 D0 计数器 读/写格式 工作方式 数制 0 —二进制 1 —二― 十进制(BCD) 000 方式0 001 方式1 10 方式2 11 方式3 100 方式4 101 方式5 00 计数器锁存命令 10 只读/写高8位 01 只读/写低8位 11 首先写低8位 然后写高8位 00 选择计数器0 01 选择计数器1 10 选择计数器2 11 非法选择 三、8253的控制字 控制字的格式如下:
有四个功能: 1. 计数器选择 (D7D6) 2. 数据读/写格式 (D5D4) 3. 工作方式选择 (D3D2D1) 4. 数制选择 (D0) 若D0=0,则按二进制计数,计数范围0000H~0FFFFH,即1~65536。 若D1=1,则按BCD码计数,计数范围4位10进制数,即1~10000。
四、8253的初始化编程 初始化编程的步骤为: 1. 向控制字寄存器写入控制字。 2. 向对应通道写入计数值: 若规定只写入低8位,则高8位自动置0。 若规定只写高8位,则低8位自动置0。 若是16位,则先写入低8位,再写入高8位。
例: 若通道0工作于方式1,按BCD 码计数,初值为5080,端口地址为40H~43H。 则初始化程序为: MOV AL, 33H; ; 0 01 10 0 11 B 通道0 方式1 先写低8位后写高8位 BCD码计数 OUT 43H, ALMOV AL, 80HOUT 40H, AL ; 写入低8位MOV AL, 50HOUT 40H, AL ; 写入高8位
五、8253的工作方式 8253的每个计数通道有六种工作方式可供选择,完成定时,计数或脉冲发生器等多种功能。
结合每种方式的工作时序波形图,注意以下几点:结合每种方式的工作时序波形图,注意以下几点: 1. 写入方式字后,OUT 引脚信号的变化。 2. 启动计数器开始计数的触发方式。 3. 计数过程中,OUT 引脚的输出波形。 4. 计数过程中GATE 信号的影响。 5. 是否实现循环计数。 6. 计数过程中,写入新的计数初值何时有效。
1. 方式0 (计数结束中断方式) 图8.4 方式0 正常计数
2. 方式1 (可编程单稳) 图8.7 方式1 正常计数
LSB=4 LSB=4 LSB = 2 LSB = 2 CW = 12 CW = 12 WR WR CLK CLK GATE GATE OUT OUT 2 2 1 1 0 0 FF FF FE FE 4 4 3 3 图1.9 方式1时计数过程中改变计数值
3. 方式2 (频率发生器) 图8.10 方式2 正常计数
4. 方式3 (方波发生器) 图8.13 方式3 计数值为偶数时的波形
5. 方式4 (软件触发的选通方式) 图8.17 方式4 正常计数
CW = 1A LSB = 3 WR CLK GATE OUT 3 2 1 0 FF 3 6. 方式5 (硬件触发选通方式) 图8.20 方式5 正常计数
六、8253计数过程中,读取当前计数值的方法 1. 利用GATE信号使计数过程暂停。 2. 写入控制字,令8253通道中的锁存器锁存当前计数值,再读取。
例如要读取通道0中当前的计数值,其程序为:例如要读取通道0中当前的计数值,其程序为: MOV AL, 03H ; 03H=0000,0011BOUT 43H, AL ; 写入至控制字寄存器中IN AL, 40H ; 读入低8位MOV CL, AL ; 存入CL中IN AL, 40H ; 读入高8位MOV CH, AL ; 存入CH中
§1.9 应用举例 可编程定时器/计数器8253可与各种微型计算机系统相连并构成完整的定时、计数或脉冲发生器。使用8253时,要先根据实际应用要求,设计一个包含8253的硬件逻辑电路或接口,再对8253进行初始化编程,只有初始化后8253才可以按要求正常工作。
1. 8253定时功能的应用 例1:设某应用系统中,系统提供一个频率为 10KHZ 的时钟信号,要求每隔10ms完成一次扫描键盘的工作。为了提高CPU的工作效率,采用定时中断的方式进行键盘的扫描。 在系统中,采用8253定时器的通道0来实现这一要求。将8253芯片的CLK0接到系统的10KHZ时钟上,OUT0输出接到CPU的中断请求线上,8253口地址为10H~13H,如图8-23所示。
(1)选择工作方式 由于系统每隔10ms完成一次动作,则扫描键盘的动作频率为100HZ,可选用方式2来实现。当8253定时器工作在方式2时,在写入控制字与计数初值后,定时器就启动工作,每到10ms时间到,即计数器减到1时,输出端OUT0输出一个CLK周期的低电平,向CPU申请中断,完成键盘扫描,同时按原设定值重新开始计数,实现了计数值的自动重装。
(2)确定计数初值 已知fCLK0=10KHZ, 则TCLK0=0.1ms。 所以计数初值 N=TOUT 0 / TCLK 0=10ms / 0.1ms=100, 即64H。
(3)初始化编程 根据以上要求,可确定8253通道0的方式控制字为00010100B,即14H。 初始化程序段如下: MOVAL,14H ;通道0,写入初值低8位,高8位置0, ;方式2,二进制计数。 OUT13H, AL ;写入方式到控制字寄存器 MOVAL,64H OUT10H,AL ;写入计数初值低8位到通道0
2. 8253计数功能的应用 例2:通过PC机系统总线在外部扩展一片8253,利用其通道0记录外部事件的发生次数,每输入一个高脉冲表示事件发生一次。当事件发生100次后就向CPU提出中断请求(边沿触发),假设8253片选信号的I/O地址范围为200H~203H,如图8-24。
根据要求,可以选择方式0来实现,计数初值N=100。8253初始化程序段如下:根据要求,可以选择方式0来实现,计数初值N=100。8253初始化程序段如下: 8253初始化程序段如下: MOVDX,203H ;设置方式控制字 MOV AL,10H ;设定为工作方式0,二进制,只写 ;低字节计数值 OUTDX, AL MOVDX,200H ;设置计数初值 MOVAL, 64H ;计数初值为100 OUTDX, AL
3. 8253计数通道的级联使用 例3:已知8253的CLK1=1MHZ、CS=320H~323H,要求用8253连续产生10秒的定时信号。 8253一个通道的最大计数范围为65536,而初值N=10/10-6=107,超过了8253一个通道最大计数值,因此可以使用两个8253通道级连。级连线路如图8-25所示,若级连后两个通道的初值为N1和N2,则N=N1N2。