1 / 31

第 11 章 定时器和计数器

第 11 章 定时器和计数器. 11.1 定时计数器 8253 概述 11.2 定时计数器 8253 的控制字 11.3 定时计数器 8253 的工作方式 11.4 定时计数器 8253 的初始化 11.5 定时计数器 8253 的应用. 11.1 定时计数器 8253 概述. 微机系统中,常常需要定时中断、定时检测、定时扫描,实际应用中,常常要求对外部事件计数, IBM PC 微机系列时钟计时、 DRAM 刷新的定时、扬声器音调控制等都需要定时控制技术。

devin-parks
Télécharger la présentation

第 11 章 定时器和计数器

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第11章 定时器和计数器 11.1 定时计数器8253概述 11.2 定时计数器8253的控制字 11.3 定时计数器8253的工作方式 11.4 定时计数器8253的初始化 11.5 定时计数器8253的应用

  2. 11.1 定时计数器 8253 概述 微机系统中,常常需要定时中断、定时检测、定时扫描,实际应用中,常常要求对外部事件计数,IBM PC 微机系列时钟计时、DRAM 刷新的定时、扬声器音调控制等都需要定时控制技术。 定时控制有 3 种方法:软件定时、硬件定时和可编程的定时器。 (1)软件定时:利用微处理器执行一段延时程序来实现,因为执行程序的每条指令本身就需要时间,那么一段程序的执行时间是可计算的固定值,通过正确地挑选指令、安排循环次数就能实现,这样显然降低了CPU 的利用率。 (2)硬件定时:采用集成电路的数字电路分频器,将系统时钟分频来产生所需的定时信号,也可用简易的定时电路,通过改变电阻、电容来控制时间。 (3)可编程的定时器:采用硬件软件相结合的办法,用可编程的定时芯片构成灵活、方便的定时电路。

  3. Intel 8253 定时器,通过记录高精度晶体振荡信号个数, 输出准确的时钟间隔,定时器内部的计数电路,如果记录外设 提供的随机性的脉冲信号,就能反映脉冲的个数,因此又称为 计数器。 11.1.1 定时计数器 8253 的内部结构 定时计数器 8253 有 3 个独立的 16 位计数器通道,由 24 根引脚组成芯片,内部结构见图11.1。 1.数据总线缓冲器 8 位双向三态缓冲器,连接 8253 与 CPU 数据总线,CPU 过它向 8253 进行读写操作,初始化编程时,CPU 写入控制字, 向某通道写入计数值,从某通道读出计数值。 2.读写控制电路 接收 CPU 输入的控制信号,对整个芯片的工作进行控制。

  4. 图11.1 3.控制寄存器 接收 CPU 写入的方式控制字,对 3 个计数器的工作方式进行定义,它只能接收 CPU 的写入信息,不能读出。 4.计数器 8253 的 3 个独立的计数器通道,计数器0、计数器1、计数器2,结构完全相同,每个计数器内有一个 16 位的预制寄存器,存放初值;一个 16 位的输出锁存器,在写入了锁存命令时,锁定计数器的当前值;一个 16 位的能进行预制值的减法计数器,其值不断递减,计到0 时,从 OUT 端输出一个脉冲信号。

  5. 11.1.2 定时计数器 8253 芯片的引脚 8253 由 24 根引脚组成的双列直插式芯片,图11.2。 (1)数据线 D7-D0 :双向三态,连接 CPU 的数据总线。 (2)读信号:输入线,低电平有效,输入有效的低电平时,CPU 从 8253 中读取数据。 (3)写信号 :输入线,低电平有效,输入有效的低电平时,CPU 可向 8253 写入数据、或写入命令字。 (4)片内寄存器选择信号A1、A0 :输入线,对 8253 内部的 3 个 计数器、1 个控制寄存器进行选择,见表 11.1 。 (5)片选信号 :输入线,低电平有效,输入有效的低电平时选中 8253。 (6)电源线 VCC:接 +5 V 的电源。地线 GND 。

  6. 图11.2 (7)输入脉冲信号 CLK:计数器对这个引脚的脉冲数目进行计数,通道每收到 1 个脉冲,通道的计数器值减 1。 (8)门控制信号 GATE :输入有效的高电平时,允许计数器计数;输入无效的低电平时,计数器停止计数工作。 (9)输出信号 OUT:当通道的计数器计到 0 时,通道对应此引脚向外输出一个脉冲,用于实现控制,波形取决于定义的工作方式。 返回本章目录

  7. 11.2 定时计数器 8253 的控制字 8253 在初始化时,CPU 向其内部的控制字寄存器,写入一 个控制字,规定 8253 的工作方式,格式见11.3。 (1)D0 数制选择位:D0= 0时,采用二进制;D0= 1时,采 用十进制。 (2)D3D2D1 工作方式位:每个通道有 6 种工作方式; D3D2D1= 000时,方式0;D3D2D1= 001时,方式1;D3D2D1 = × 10 时,方式2;D3D2D1=×11时,方式3;D3D2D1= 100时,方式 4;D3D2D1 = 101时,方式5。 (3)D5D4 数据读/写格式:D5D4= 00时,计数器锁存输入的 命令;D5D4= 01时,8 位计数只读写低字节;D5D4= 10时,只读 写高字节;D5D4= 11时,16 位计数先读写高字节,后读写低 节。

  8. 见11.3 (4)D7D6 计数器选择位:3 个通道共用一个控制寄存器,地址为 A1A0 = 11,用此决定写入的控制字是哪个通道的控制字;D7D6 = 00 时,为 通道0,选择 计数器0;D7D6 = 01时,为 通道1,选择 计数器1;D7D6 = 10 时,为 通道2,选择 计数器2。 返回本章目录

  9. 11.3 定时计数器 8253 的工作方式 8253 有 6 种工作方式,由方式控制字来决定,过程为: (1)向 8253 写入方式控制字: 设定工作方式。 (2)向 8253 的预制寄存器: 设定计数初值。 (3)对于方式1、方式5 :需要硬件启动,通道的 GATE 引脚 送一个上升沿,其它方式,不需要启动,直接进入下一步。 (4)CLK 引脚输入一个下降沿:将预制寄存器的初值存入到 减1计数器中。 (5)计数器开始计数: 每当 CLK 出现一个下降沿,同时 GATE出现一个高电平,减 1 计数器就减 1。

  10. (6)通道的 计数器减到 0 时 :一次计数过程结束,OUT 端口输出一个脉冲。对于 方式0、方式1、方式4、方式5,一般情况下计数器停止工作,当提供硬件启动信号、或重新设定初值计数器才重新开始工作;对于 方式2、方式3 计数器计数到 0 后,预制寄存器自动将初值送到 减1计数器,进入下次计数过程,通过写入控制字来停止计数器的工作。

  11. 1.方式0:计数结束中断,图 11.4 当一个计数器通道设置为 方式0 后( 上升沿),通道对应的 OUT 输出低电平,写入 计数初值后,计数器开始计数,OUT 仍输出低电平,以后 CLK 引脚每输入一个时钟下降沿,计数器减 1,直到 计数器 计数0 时,OUT 输出高电平,作为中断请求信号,OUT 的高电平保持到下一次计数开始。 GATE 输入信号可用来控制计数过程,高电平时,才允许计数,低电平时,暂停计数,GATE 升为高电平时,接着重新计数。计数期间,给计数器装入新的计数初值,则按新值重新开始计数过程。

  12. 2.方式1:可编程序的单拍脉冲,见图 11.5。 当 CPU 写入控制字( 上升沿),OUT 输出高电平,CPU 继续写入初值,等待 GATE 控制启动脉冲信号,若高电平启动后,GATE 立即变为低电平,OUT 输出低电平,计数器开始计数,直到 计数为 0,OUT 输出一个脉冲信号,发出一次中断信号,这次计数过程完毕。 3.方式2:频率发生器,见图 11.6 当 CPU 输入 方式2 控制字后,OUT 为高电平,写入初始值,计数器开始对时钟个数计数,OUT 保持高电平,计数到 1 时,OUT 变为低电平,经过 1 个 CLK 脉冲,又变为高电平,且重新开始计数,如此反复连续工作,OUT 的输出,将时钟脉冲分频。

  13. 4.方式3:方波发生器,图 11.7 方式3 与 方式2 类似,方式3 一半高电平,一半低电平,因此,方式3 的 OUT 输出一个方波。CPU 设置控制字,写入初值,计数器开始计数,到一半时,OUT 输出由高电平变为低电平,继续 计到 0,由低电平变为高电平,重新开始计数,反复进行。 5.方式4:软件触发选通信号,图 11.8 写入 方式4 后,OUT 输出高电平,写入计数值开始计数(即软件启动);计数器 计到0 时,OUT 输出低电平,经过一个 CLK 时钟后,OUT又变为高电平,计数器停止工作;本次计数完成。重新输入计数值后,才开始下一次的计数。

  14. 6.方式5:硬件触发选通信号,见图 11.9 写入 方式5 后,OUT 输出高电平,写入计数值,GATE 上升沿启动计数过程(硬件启动),计数到 0 后,OUT 输出低电平,经过一个 CLK 脉冲,OUT 恢复高电平,停止计数。 返回本章目录

  15. 11.4 定时计数器 8235 的初始化 1.初始化的步骤 (1)写入通道控制字,规定通道的工作方式。 (2)写入计数值。若规定只写入计数值的低 8 位,高 8 位 自动置 0。若规定只写入计数值的高 8位,低 8位自动置 0。若 是 16 位的计数值,先写入低 8 位,后写入高 8 位。 例如:定时计数器 8235 的通道1,工作方式为1,按二十 进计数,计数值为 5060H,端口地址为 F8-FBH,进行初始化。 程序段为: MOV AL,73H ;73=01110011,通道0方式1BCD码 OUT 0FBH,AL ; 写入方式控制字,对照图11.3 MOV AL,60H ;先写入低8位计数值 OUT 0FBH,AL MOV AL,50H ;后写入高8位计数值 OUT 0FBH,AL

  16. 2.锁存的方法 8253 在计数过程中,CPU 可用输入指令,读取 8253 的任一通道的当前计数 16位值,分两次来读取进行锁存,瞬间计数值会发生变化 (1)利用GATE 信号使计数过程暂停,然后再读取。 (2)向 8253 控制字地址送一个计数锁存命令,然后再读取 例如:读取 通道2 的计数值 程序段为: MOV AL,80H ;计数器1的锁存命令,对照图11.3 OUT 0FBH,AL ;写入控制字寄存器中 IN AL,0F9H ;读取低8位 MOV CL,AL ;读出的值存入CL中 IN AL,0F9H ;读取高8位 MOV CH,AL ;读出的值存入CH中 需要说明,计数值锁存命令是控制字的一种特殊形式,D7D6 决定通道号,D5D4= 00,锁存标志低 4 位全 0,因此,通道0 的锁存命令为 00H,通道1 的锁存命令为 40H,通道2 的锁存命令为 80H。 返回本章目录

  17. 11 . 5 定时计数器 8253 的应用 PC 微机用一片 8253,图 11.10 通道0 用于日时钟计时,通道1 进行DRAM 动态刷新,通道 2 控制扬声器发声。计数器0、计数器1、计数器2 的地址分别是 40H、41H、42H,控制字的端口地址43H,每个通道的 CLK 输入为 1.19318MHZ,GATE门控制总为高电平启动状态, OUT0 的输出脉冲用于时钟计时,OUT1 的输出脉冲用于DRAM 的动态刷新,OUT2 的输出脉冲用于控制扬声器发声,。 1.计数器0 实现定时中断 MOV AL,36H ;00110110B,计数器 0 ,工作方式 3, 二进制 OUT 43H,AL ;写入方式控制字 MOV AL,0 ;计数 65536 OUT 40H,AL ;先写入低 8位 OUT 40H,AL ;后写入高 8位

  18. OUT0 的输出频率为 1.19318MHZ / 65536 = 18.206HZ 的方波,GATE0 接 +5,OUT0 输出方波不断产生,连接到 IRQ0 用于中断请求,即每秒产生 18.206 次中断,实现日时钟计时功能,18 次中断计时 1 秒。 2.计数器1 实现 DRAM 动态刷新,图 11.10 PC 机要求 2ms 内对 DRAM 芯片的 128 行,进行全部刷新,因此,2ms/128 = 15.6μS 发一次刷新信号,将 计数器2 设置成 方式2,计数初值 18,每隔 18×0.838μS =15.084μS 产生一次刷新脉冲(1个 CLK脉冲 =1/1.19318MHZ = 0.838μS),就能满足要求。 初始化程序段为: MOV AL,54H ; 01010100B,计数器1,工作方式2 ,二进制 OUT 43H,AL ;写入方式控制字 MOV AL,18H ;计数值 OUT 41H,AL ;写入计数值

  19. 3.计数器2实现扬声器发声,图 11.10 计数器2 的 OUT2 输出连接扬声器,只要输出一定频率的方波,滤波后产生正弦波,能推动扬声器发声,并行接口 PB1 位控制发声,此时,计数器2 不工作,OUT2 输出高电平,PB0 位通过 GATE2 控制 计数器2 的计数过程,输出 OUT2 信号产生扬声器发声的声调,子程序为: BEEP PROC MOV AL,10110110B ;计数器2,工作方式3,二进制 OUT 43H,AL ;先低后高写入16位计数值 MOV AX,0533H ; 1.19318MHZ/1331D= 896HZ OUT 42H,AL MOV AL,AH

  20. OUT 42H,AL ;高8位 IN AL,61H ;读并行接口8255B MOV AH,AL OR AL,03H ;8255的PB0、PB1置1 OUT 61H,AL ;PB1的端口地址61H SUB CX,CX DELAY:LOOP DELAY ;延时 DEC BL ;发声长短 JNZ DELAY MOV AL,AH ;恢复8255B口 OUT 61H,AL RET BEEP ENDP 本章结束 返回目录

  21. 表11.1 8253 端口选择 返回5

  22. 图11.1 定时计数器8253内部结构 返回3 返回4

  23. 图11.2 定时计数器8253的引脚图 返回5 返回6

  24. 图 11.3 定时计数器8253的控制字格式 返回7 返回8 返回15 返回16

  25. 图11.4 工作方式0波形图 返回11

  26. 图11.5工作方式1波形图 返回12

  27. 图11.6工作方式2频率发生器波形图 返回12

  28. 图11.7工作方式方波发生器波形图 返回13

  29. 图11.8工作方式4软件触发选通图 返回13

  30. 图11.9工作方式5硬件触发选通图 返回14

  31. 图11.10 8253在PC微机应用 返回17 返回18 返回19

More Related