Download
slide1 n.
Skip this Video
Loading SlideShow in 5 Seconds..
定 时 计 数 技 术 PowerPoint Presentation
Download Presentation
定 时 计 数 技 术

定 时 计 数 技 术

247 Views Download Presentation
Download Presentation

定 时 计 数 技 术

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

  1. 定 时 计 数 技 术

  2. 定时计数技术概述 • 8253定时/计数器 • 8253应用举例

  3. §1.8 定时计数技术概述 定时计数技术在计算机中具有极为重要的作用。微机控制系统中,常应用定时器实现定时控制,例如定时中断、定时检测、定时扫描等;也往往应用计数器对外部事件计数。

  4. 定时器和计数器都由数字电路中的计数电路构成。它们的工作原理一样,都是记录输入的脉冲个数。前者记录高精度晶振脉冲信号,因此可以输出准确的时间间隔,称为定时器。而当记录外设提供的具有一定随机性的脉冲信号时,它主要反映脉冲的个数(进而获知外设的某种状态),称为计数器。定时器和计数器都由数字电路中的计数电路构成。它们的工作原理一样,都是记录输入的脉冲个数。前者记录高精度晶振脉冲信号,因此可以输出准确的时间间隔,称为定时器。而当记录外设提供的具有一定随机性的脉冲信号时,它主要反映脉冲的个数(进而获知外设的某种状态),称为计数器。

  5. 定时的方法归纳起来有三种: 1. 软件定时 (CPU 循环执行一段程序) 2. 硬件定时 (单稳态延时电路) 3. 可编程的定时器/计数器 (8253定时/计数芯片)

  6. §1.9 8253 定时/计数器 一、主要性能 1. 有3个独立的16位计数器 2. 可以按二进制或BCD 码方式计数 3. 最高计数频率达2MHz 4. 可编程6种工作方式

  7. 计数器 0# CLK0 D0~D7 数据 总线 缓冲器 GATE0 OUT0 内 部 总 线 读 / 写 逻辑 计数器 1# CLK1 WR RD GATE1 A0 OUT1 A1 CS 计数器 2# CLK2 GND GATE2 VCC OUT2 二、内部结构及引脚信号 控 制 字 寄 存 器 图8.1 8253内部框图

  8. 各部分的功能如下: 1. 数据总线缓冲器:负责与CPU 的接口,CPU 通过数据总线缓冲器向8253写入控制字、计数初值,读取某一通道的计数值。 D0~D7与CPU 的数据总线D0~D7相连。

  9. 2. 读/写逻辑:接收CPU 发出的读、写信号和地址信号,负责对8253内部有关寄存器的读/写操作。

  10. 表 1-18253 读 / 写操作逻辑 A1 A0 操 作 功 能 RD WR CB 计数初值装入计数器0 计数初值装入计数器1 计数初值装入计数器2   写控制器寄存器 读计数0 读计数1 读计数2

  11. 3. 控制字寄存器:接收CPU 写入的控制字,只能写入,不能读出。

  12. 4. 三个计数器 (0#,1#,2#) 三个独立的16位减法计数器,内部结构如图8.2。 图8.2 计数通道内部逻辑框图

  13. 图1.3 8253的引脚图

  14. 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的控制字 控制字的格式如下:

  15. 有四个功能: 1. 计数器选择 (D7D6) 2. 数据读/写格式 (D5D4) 3. 工作方式选择 (D3D2D1) 4. 数制选择 (D0) 若D0=0,则按二进制计数,计数范围0000H~0FFFFH,即1~65536。 若D1=1,则按BCD码计数,计数范围4位10进制数,即1~10000。

  16. 四、8253的初始化编程 初始化编程的步骤为: 1. 向控制字寄存器写入控制字。 2. 向对应通道写入计数值:  若规定只写入低8位,则高8位自动置0。  若规定只写高8位,则低8位自动置0。  若是16位,则先写入低8位,再写入高8位。

  17. 例: 若通道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位

  18. 五、8253的工作方式 8253的每个计数通道有六种工作方式可供选择,完成定时,计数或脉冲发生器等多种功能。

  19. 结合每种方式的工作时序波形图,注意以下几点:结合每种方式的工作时序波形图,注意以下几点: 1. 写入方式字后,OUT 引脚信号的变化。 2. 启动计数器开始计数的触发方式。 3. 计数过程中,OUT 引脚的输出波形。 4. 计数过程中GATE 信号的影响。 5. 是否实现循环计数。 6. 计数过程中,写入新的计数初值何时有效。

  20. 1. 方式0 (计数结束中断方式) 图8.4 方式0 正常计数

  21. 图1.5 方式0时GATE 信号的作用

  22. 图1.6 方式0时计数过程中改变计数值

  23. 2. 方式1 (可编程单稳) 图8.7 方式1 正常计数

  24. 图1.8 方式1时GATE 信号的作用

  25. 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时计数过程中改变计数值

  26. 3. 方式2 (频率发生器) 图8.10 方式2 正常计数

  27. 图8.11 方式2时GATE信号的作用

  28. 图8.12 方式2时计数过程中改变计数值

  29. 4. 方式3 (方波发生器) 图8.13 方式3 计数值为偶数时的波形

  30. 图8.14 方式3 计数值为奇数时的波形

  31. 图8.15 方式3 GATE信号的作用

  32. 图8.16 方式3 计数过程中改变计数值

  33. 5. 方式4 (软件触发的选通方式) 图8.17 方式4 正常计数

  34. 图8.18 方式4 GATE 信号的作用

  35. 图8.19 方式4 计数过程中改变计数值

  36. CW = 1A LSB = 3 WR CLK GATE OUT 3 2 1 0 FF 3 6. 方式5 (硬件触发选通方式) 图8.20 方式5 正常计数

  37. 图8.21 方式5时GATE 信号的作用

  38. 图8.22 方式5时计数过程中改变计数值

  39. 六、8253计数过程中,读取当前计数值的方法 1. 利用GATE信号使计数过程暂停。 2. 写入控制字,令8253通道中的锁存器锁存当前计数值,再读取。

  40. 例如要读取通道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中

  41. §1.9 应用举例 可编程定时器/计数器8253可与各种微型计算机系统相连并构成完整的定时、计数或脉冲发生器。使用8253时,要先根据实际应用要求,设计一个包含8253的硬件逻辑电路或接口,再对8253进行初始化编程,只有初始化后8253才可以按要求正常工作。

  42. 1. 8253定时功能的应用 例1:设某应用系统中,系统提供一个频率为 10KHZ 的时钟信号,要求每隔10ms完成一次扫描键盘的工作。为了提高CPU的工作效率,采用定时中断的方式进行键盘的扫描。 在系统中,采用8253定时器的通道0来实现这一要求。将8253芯片的CLK0接到系统的10KHZ时钟上,OUT0输出接到CPU的中断请求线上,8253口地址为10H~13H,如图8-23所示。

  43. 图8-23 8253用于定时中断

  44. (1)选择工作方式 由于系统每隔10ms完成一次动作,则扫描键盘的动作频率为100HZ,可选用方式2来实现。当8253定时器工作在方式2时,在写入控制字与计数初值后,定时器就启动工作,每到10ms时间到,即计数器减到1时,输出端OUT0输出一个CLK周期的低电平,向CPU申请中断,完成键盘扫描,同时按原设定值重新开始计数,实现了计数值的自动重装。

  45. (2)确定计数初值 已知fCLK0=10KHZ, 则TCLK0=0.1ms。 所以计数初值 N=TOUT 0 / TCLK 0=10ms / 0.1ms=100, 即64H。

  46. (3)初始化编程 根据以上要求,可确定8253通道0的方式控制字为00010100B,即14H。 初始化程序段如下: MOVAL,14H ;通道0,写入初值低8位,高8位置0, ;方式2,二进制计数。 OUT13H, AL ;写入方式到控制字寄存器 MOVAL,64H OUT10H,AL ;写入计数初值低8位到通道0

  47. 2. 8253计数功能的应用 例2:通过PC机系统总线在外部扩展一片8253,利用其通道0记录外部事件的发生次数,每输入一个高脉冲表示事件发生一次。当事件发生100次后就向CPU提出中断请求(边沿触发),假设8253片选信号的I/O地址范围为200H~203H,如图8-24。

  48. 图8.24 8253用于外部事件的计数

  49. 根据要求,可以选择方式0来实现,计数初值N=100。8253初始化程序段如下:根据要求,可以选择方式0来实现,计数初值N=100。8253初始化程序段如下: 8253初始化程序段如下: MOVDX,203H ;设置方式控制字 MOV AL,10H ;设定为工作方式0,二进制,只写 ;低字节计数值 OUTDX, AL MOVDX,200H ;设置计数初值 MOVAL, 64H  ;计数初值为100 OUTDX, AL

  50. 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=N1N2。