1 / 55

第 9 章 可编程定时 / 计数器 8253 及其应用

第 9 章 可编程定时 / 计数器 8253 及其应用. 9.1 定时 / 计数的基本概念 9.2 8253 的工作原理 9.3 8253 的应用举例. 9.1 定时 / 计数的基本概念. 所谓定时(计数)就是通过硬件或软件的方法产生一个时间基准,以此来实现对系统的定时或延时控制。 实现定时或延时有三种主要方法: 软件定时 纯硬件定时 可编程的硬件定时器 / 计数器. 1. 软件定时 方法: 由于执行每条指令都需要时间,故可循环执行某一段指令产生延迟时间。 特点:

Download Presentation

第 9 章 可编程定时 / 计数器 8253 及其应用

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. 第9章 可编程定时/计数器8253及其应用 9.1 定时/计数的基本概念 9.2 8253的工作原理 9.3 8253的应用举例

  2. 9.1 定时/计数的基本概念 所谓定时(计数)就是通过硬件或软件的方法产生一个时间基准,以此来实现对系统的定时或延时控制。 实现定时或延时有三种主要方法: 软件定时 纯硬件定时 可编程的硬件定时器/计数器

  3. 1. 软件定时 方法: 由于执行每条指令都需要时间,故可循环执行某一段指令产生延迟时间。 特点: 这种方法由于要完全占用CPU的时间,因而降低了CPU的利用率,但硬件开销少,使用灵活。

  4. 例:某一LED灯控系统,要求控制LED灯亮0.5s后熄灭。例:某一LED灯控系统,要求控制LED灯亮0.5s后熄灭。 选择软件定时法,控制程序段如下: SUB CX,CX MOV AL,01H ; 灯亮控制码 OUT PORT,AL ;PORT为端口地址 L: LOOP L ;循环216次,约0.5秒 MOV AL,00H ;灯灭控制码 OUT PORT,AL LOOP指令执行占17个时钟周期,设时钟=2MHz,时钟周期=0.5us, 0.5us*17* 216= 0.5s。

  5. 2. 纯硬件定时 方法: 采用固定的电路,如可以采用小规模集成电路555,外接电阻和电容构成单稳延时电路。 特点: 定时电路简单,而且通过改变电阻和电容,可以使定时在一定的范围内调整。 但使用不灵活。

  6. 3. 可编程硬件定时器/计数器 是目前在控制系统中广泛使用的方法,它通过编程来控制电路的定时值及定时范围。 在计算机系统中,象定时中断、定时检测、定时扫描等等都是用可编程定时器来完成定时控制的。 特点: 功能强,使用灵活,定时时间精确(由软件设置),提高CPU的利用率。

  7. Intel 系列的8253、8254就是常用的可编程定时/计数器。 8253的主要性能: * 具有3个独立的16位计数器通道; * 每个计数器均可按二进制或二—十进制计数; * 每个计数器的计数速率高达2MHz (8254为10MHZ) ; * 每个通道有6种工作方式,可由程序设置和改变; * 所有的输入输出都与TTL兼容。 可用在多种场合,如方波发生器、分频器、实时时钟、事件计数等方面。

  8. 9.2 Intel8253的工作原理 一、 8253的内部结构和引脚信号 内部结构 ⑴数据总线缓冲器 它与CPU的数据总线相连,是8位双向三态缓冲器。CPU通过这个缓冲器对8253进行读/写操作。 ⑵读/写控制逻辑 有CS、RD、WR、A0、A1信号。 ⑶控制字寄存器 只能写入,初始化时由CPU写入控制字来设置计数器的工作方式。 ⑷计数器 3个独立的结构相同的16位减法器,可作定时/计数器使用;计数器可按二进制/BCD方式减法计数,从预置值减到零时,OUT端输出一信号。

  9. 图9.1 Intel 8253的内部结构

  10. 外部引脚 D 1 24 V 7 CC D 2 23 WR 6 D 3 22 RD 5 D 4 21 CS 4 D 5 20 A 3 1 D 6 19 A 8253 2 0 D 7 18 CLK 1 2 D 8 17 OUT 0 2 CLK 9 16 GATE 0 2 OUT 10 15 CLK 0 1 GATE 11 14 GATE 0 1 GND 12 13 OUT 1 图9.2 Intel 8253的外部引脚图

  11. GATE:门控信号,当GATE为低电平时,禁止计数器工作; GATE为高电平时,才允许计数器工作。 CLK:计数脉冲输入。 OUT:脉冲输出。当计数到“0”时,从OUT端输出信号,输出信号的波形取决于工作方式。 CS、RD、WR、A0、A1共同结合,用于对8253进行端口操作,如表9-1所示。

  12. A1 A0 寄存器选择和操作 0 1 0 0 0 写计数器0 0 1 0 0 1 写计数器1 0 1 0 1 0 写计数器2 0 1 0 1 1 写控制字寄存器 0 0 1 0 0 读计数器0 0 0 1 0 1 读计数器1 0 0 1 1 0 读计数器2 0 0 1 1 1 无操作(三态) 1 × × × × 禁止(三态) 0 1 1 × × 无操作(三态) 表9-1 8253的端口选择

  13. 二、8253的控制字 D D D D D D D D 7 6 5 4 3 2 1 0 SC SC RL RL M M M BCD 1 0 1 0 2 1 0 (数制选择) (计数器选择) 0:二进制(0000~FFFFH) 00:选择计数器0 1:BCD (0000~9999H) 01:选择计数器1 10:选择计数器2 11:非法选择 (工作方式选择) 000: 方式0 001: 方式0 (读/写格式) X10:方式2 00:计数器锁存命令 X11:方式3 01:读/写高8位 100 :方式4 10:读/写低8位 101: 方式5 11:先读/写低8位,再读/写高8位 图9.3 8253的控制字

  14. SC1、SC0:这两位决定这个控制字是哪一个计数器的控制字。SC1、SC0:这两位决定这个控制字是哪一个计数器的控制字。 RL1、RL0:设置数据读/写格式。在读取计数值时,可令RL1、RL0=00,先将写控制字时的计数值锁存,然后再读取。 M2、M1、M0:设置每个计数器的工作方式。 BCD:用于选择每个计数器的计数制。在二进制计数时,计数初值的范围是0000H~FFFFH,其中0000H是最大值,代表65536。在BCD码计数时,计数初值的范围中0000 ~ 9999H,其中,0000是最大值,代表10000。

  15. 三、8253的工作方式 Intel 8253的每个计数器都有6种工作方式。 6种方式的主要区别是:输出的波形不同,计数过程中GATE信号对计数操作的影响不同,启动计数器的触发方式不同等。 1. 方式0—计数结束中断方式 该方式的波形如图9.4所示,这种方式的特点是:

  16. *CW写入,OUT=0; * 写入时常,通道开始计数; * 计数到零,OUT=1; * 计数器只计数一遍; * OUT是N+1个CLK后变高; * 计数过程中,GATE=0, 计数暂停; * 计数过程中可改变计数值; * 可用OUT信号作为中断请求。 图9.4 方式0波形图

  17. CW=10 H N=3 N=2 WR CLK GATE OUT 3 2 1 2 1 0 方式0计数过程中改变计数初值

  18. 方式0特点: ①写入控制字后,OUT输出端变为低电平。当写入计数初值后,计数器开始减1计数(相当于软件触发启动) 。直到计数到0时,OUT输出变为高电平。期间共记录n+1个脉冲,即: Tout > n • TCLK (该方式作定时用时不够准确) 但此信号可用于向CPU发出中断请求。 ②计数器只计数一遍。当计数到0时,不恢复计数初值,不开始重新计数,且输出一直保持为高电平。只有在写入新的计数值时,OUT才变低,并开始新的计数。

  19. ③GATE是门控信号,GATE=1时允许计数,GATE=0时,禁止计数。在计数过程中,如果GATE=0则计数暂停,当GATE=1后接着计数。③GATE是门控信号,GATE=1时允许计数,GATE=0时,禁止计数。在计数过程中,如果GATE=0则计数暂停,当GATE=1后接着计数。 ④在计数过程中可改变计数值。

  20. 2. 方式1—可编程单稳态输出方式 * 写入控制字OUT=1,写入常数不计数; * GATE上升沿启动计数,OUT=0,硬件触发; * 计数到,OUT=1。 *单拍脉冲宽度为N; *由GATE重新启动; *计数中,可重新启动; *计数中,可改变计数值,再次启动时有效。 图9.5 方式1的波形图

  21. 方式1特点: ①写入控制字后,输出OUT将保持为高电平,计数由GATE上升沿触发启动(相当于硬件触发启动)。GATE启动之后,OUT变为低电平,当计数到0时,OUT输出高电平,从而在OUT端输出一个负脉冲,负脉冲的宽度为n个(计数初值)CLK的脉冲宽度。 Tout = n • TCLK(定时准确) ②当计数到0后,不用送计数值,可再次由GATE脉冲启动,输出同样宽度的负的单脉冲。

  22. ③在计数过程中,可改变计数初值,此时计数过程不受影响。如果再次触发启动,则计数器将按新输入的计数值计数。③在计数过程中,可改变计数初值,此时计数过程不受影响。如果再次触发启动,则计数器将按新输入的计数值计数。 ④在计数未到0时,如果GATE再次启动,则计数初值将重新装入计数器,并重新开始计数。

  23. 3. 方式2——比率发生器(分频器) * 写入控制字OUT=1; * 写入常数立即对CLK计数; * 计数到1,OUT=0; * 一个CLK周期后,OUT=1,重新计数。 * 通道连续工作不需重置时间常数; * 计数过程中,GATE=0,计数暂停,GATE变高后重新计数; * 计数过程中可改变计数值;新的计数值在下一次有效。 图9.6 方式2波形图

  24. 方式2的特点是: ①写入控制字后,输出将变为高电平。写入计数值后,计数立即开始。在计数过程中输出始终为高电平,直至计数器减到1时,输出将变为低电平。经过一个CLK周期,输出恢复为高,且计数器开始重新计数。因此,它能够连续工作,输出固定频率的脉冲。 ②如果计数值为N,则每输入N个CLK脉冲,输出一个脉冲。因此,相当于对输入脉冲的N分频。通过对N赋不同的初值,即可在输出端得到所需的频率,起到频率发生器的作用。

  25. ③计数过程可由门控脉冲控制。 GATE=1允许计数,当GATE=0时,暂停计数;当GATE变高自动恢复计数初值,重新开始计数。 ④在计数过程中可以改变计数值,这对正在进行的计数过程没有影响。但在计数到1时输出变低,经过一个CLK周期后输出又变高,计数器将按新的计数值计数。

  26. 4. 方式3 —方波发生器 方式3的波形如图9.7所示。它的特点是: ①输出为周期性的方波。若计数值为N,则输出方波的周期是N个CLK脉冲的宽度。 图9.7 方式3波形

  27. ②与方式2的区别在于:输出为周期是N个CLK脉冲的方波。②与方式2的区别在于:输出为周期是N个CLK脉冲的方波。 ③若计数值为偶数,则输出对称方波。每个CLK使计数值减2,计到0,OUT改变状态,重装计数值开始新的计数。如果计数值为奇数,则前(N+1)/2个CLK脉冲期间输出为高电平,后(N-1)/2个CLK脉冲期间输出为低电平。 ④GATE信号能使计数过程重新开始。GATE=1允许计数,GATE=0禁止计数。停止后OUT将立即变高开,当GATE再次变高以后,计数器将重新装入计数初值,重新开始计数。

  28. 5. 方式4——软件触发选通 方式4的波形如图9.8所示,这种方式的特点是: ①写入控制字后,输出为高电平。写入计数值后立即开始计数(相当于软件触发启动),当计数到0后,输出一个时钟周期的负脉冲,计数器停止计数。只有在输入新的计数值后,才能开始新的计数。 ②当GATE=1时,允许计数,而GATE=0,禁止计数。GATE信号不影响输出。 ③在计数过程中,如果改变计数值,则按新计数值重新开始计数。如果计数值是16位,则在设置第一字节时停止计数,在设置第二字节后,按新计数值中开始计数。

  29. 图9.8 方式4波形

  30. 6.方式5——硬件触发选通 方式5的波形如图9.9所示,这种方式的特点是: ①写入控制字后,输出为高电平。在设置了计数值后,计数器并不立即开始计数,而是由门控脉冲的上升沿触发启动。当计数到0时,输出一个CLK周期的负脉冲,并停止计数。当门控脉冲再次触发时才能再计数。 ②在计数过程中如果再次用门控脉冲触发,则使计数器重新开始计数,此时输出还保持为高电平,直到计数为0,才输出负脉冲。 ③如果在计数过程中改变计数值,只要没有门控信号的触发,不影响计数过程。当有新的门控脉冲的触发时,不管是否计数到0,都按新的计数值计数。

  31. 图9.9 方式5波形

  32. 四、 8253工作方式小结 6种方式各有特点,适用于不同的应用场合。方式0,1相似,方式2,3相似,方式4,5相似。 1. 输出端OUT的初始状态 只有方式0是在写入控制字后输出为低,其它均为高; 2. 计数值的设置 任一种方式,只有在写入计数值后才能开始计数,方式0、2、3、4在写入计数值后,计数自动开始,方式1、5需外部触发,才开始计数。 方式0、1、4初始化后仅有效一次。方式2、3、5会在计数器减为0时,自动将初值再装入。

  33. 计数值N与输出波形的关系

  34. 3. 门控信号的作用:GATE输入总是在CLK输入时钟的上升沿被采样。在方式0,2,3,4中,GATE输入是电平起作用。在方式1,2,3,5中 GATE输入是上升沿起作用的。

  35. 9.3 8253的应用举例 8253的初始化编程步骤 接通电源时8253处于未定义状态,必须首先对其进行初始化,初始化步骤(分别对每个计数器进行): ①写控制字。 ②写计数初值,如果计数值是16位的,则先写低8位再写高8位。 * 对3个通道的编程没有先后顺序的规定,只要符合先写入控制字,后写入计数初值的规定即可。

  36. 例:设一个8253在某系统中的端口地址40H—43H,如果要将计数器0设置为工作方式3,计数初值为3060H,采用二进制计数法,则初始化方法如下:例:设一个8253在某系统中的端口地址40H—43H,如果要将计数器0设置为工作方式3,计数初值为3060H,采用二进制计数法,则初始化方法如下: • MOV AL,36H ;设置控制字00110110(计数器0,方式3,写两个字节,二进制计数) • OUT 43H,AL ;写入控制寄存器 • MOV AX,3060H ;设置计数值 • OUT 40H,AL ;写低8位至计数器0 • MOV AL,AH • OUT 40H,AL ;写高8位至计数器0

  37. 0 0 1 1 0 0 1 1 8253的应用举例 例1:某8253端口地址为F8H~FBH,欲用通道0以方式1,按BCD计数,计数值为5080。 1.确定通道控制字; 2.计数值的低8位为80; 3.计数值的高8位为50。 在计数过程中,8253读计数器现行值的方法:(将计数值存入内部锁存器) 初始化程序为: MOV AL,33H OUT 0FBH,AL MOV AL,80H OUT 0F8H,AL MOV AL,50H OUT 0F8H,AL MOV AL,03H ;计数器0的锁存命令 OUT 0FBH,AL;写入控制寄存器 IN AL,0F8H ;读低8位 MOV CL,AL ;存入CL中 IN AL,0F8H ;读高8位 MOV CH,AL ;存入CH中

  38. 例2:用8253产生各种定时波形。 74LS138 A9 A8 1MHz方波 G1 CLK0 CLK1 CLK2 A7 A6 5V A4 A3 A0 C BA GATE0 OUT0 2KHz方波 8086 CPU GATE1 OUT1 A5 M/IO 1ms的负脉冲 GATE2 OUT2 D7—D0 单脉冲 A1 A0 RD WR A2 A1 RD WR Y4 G2B G2A D7—D0 CS

  39. 例2:用8253产生各种定时波形。 要求:(1)通道0输出频率为2KHz的方波; (2)通道1产生宽度为1ms的负脉冲; (3)通道2以硬件方式触发,输出单脉冲时间常数为26。 已知:8253基地址为310H,3通道所用时钟脉冲频率为1MHz。 分析:通道0工作于方式3,控制端GATE0接+5V,时间常数N0=1MHz/2KHz=500; 通道1工作于方式1,由控制端GATE1的正跳变触发,OUT1的宽度为时常,单次触发,时间常数N1=1ms/0.001ms=1000; 通道2工作于方式5,由控制端GATE2的正跳变触发,可连续触发,时间常数N2=26。

  40. ;通道0初始化程序 MOV DX,316H MOV AL, 00110111B OUT DX,AL MOV DX,310H MOV AL,00H OUT DX,AL MOV AL,05H OUT DX,AL ;通道2初始化程序 MOV DX,316H MOV AL, 10011011B OUT DX,AL MOV DX,314H MOV AL,26H OUT DX,AL ;通道1初始化程序 MOV DX,316H MOV AL, 01110011B OUT DX,AL MOV DX,312H MOV AL,00H OUT DX,AL MOV AL,10H OUT DX,AL

  41. 例3:8253控制LED。要求:LED点亮10秒,熄灭10秒。例3:8253控制LED。要求:LED点亮10秒,熄灭10秒。 +5V GATE0 GATE1 D7-D0 WR RD A1 A0 CS WR RD A2 A1 D8-D15 2MHz CLK0 OUT0 CLK1 OUT1 M/ IO 译码 A0-A7 分析:8253的地址线与CPU高8位数据线D8——D15相连,8253的各端口的地址为81H、83H、85H、87H。OUT1输出占空比为1:1的方波,周期20秒。 8253端口1工作在方式3。 时钟频率为2MHz时,16位计数通道的最大定时时间为: 0 .5s65536=32.768ms 分频系数:2MHz/0.05Hz =40,000,000 级连:通道0输出400Hz脉冲(时常5000),通道1输出0.05Hz方波(时常8000)。

  42. 因单通道最大分频系数为65536,所以需用几个通道级连的方法来解决这个问题。因单通道最大分频系数为65536,所以需用几个通道级连的方法来解决这个问题。 通道0:CLK0:接2MHz时钟信号,方式2,N0=5000; 通道1:CLK1:接OUT0,方式3,N1=8000; ;通道0初始化程序 MOV AL, 00110101B OUT 87H,AL MOV AL,00H OUT 81H,AL MOV AL,50H OUT 81H,AL ;通道1初始化程序 MOV AL, 01110111B OUT 87H,AL MOV AL,00H OUT 83H,AL MOV AL,80H OUT 83H,AL

  43. +5V +5V D7-D0 OUT1 WR RD A1 A0 CS +5V 8259IR0 WR RD A2 A1 GATE1 CLK1 M/IO 译码 AB 例4:用8253设计一个自动计数系统(计数500向CPU提出中断申请)。 8253端口地址: F0H, F2H, F4H, F6H, 8253工作方式:计数器1工作于方式0,按BCD计数,先读写低字节,后读写高字节。

  44. ;通道1初始化程序 MOV AL, 01110001B OUT 0F6H, AL MOV AL, 99H OUT 0F2H, AL MOV AL, 04H OUT 0F2H, AL ;方法2读通道1计数值程序 MOV AL, 01000000B OUT 0F6H, AL IN AL, 0F2H MOV AH, AL IN AL, 0F2H XCHG AH, AL 当前计数值的读取 (1)利用GATE控制信号,使计数器停止计数。故干扰了计数过程,需要硬件电路配合。 (2)利用计数器锁存命令锁存现行计数值,就可从相应的计数器通道中读取计数值。

  45. 8253在IBM PC/XT机的应用 在IBM PC/XT机中,8253主要提供系统时钟中断、动态RAM的刷新定时及喇叭发声控制等功能。8253的初始化是在计算机启动时由BIOS完成的。 从8284时钟发生器来的频率2.386364MHZ经二分频后作为8253三个计数器的时钟输入,8253在IBM-PC/XT中的端口地址为40H—43H,这三个计数器在系统中的初始化程序如下:

  46. 8253在IBM-PC/XT机的应用的示意图

  47. ⑴计数器0用于定时中断(约55ms) OUT0(f=1.19318MHz/65536=18.2Hz的方波)经系统板上的IRQ0送到8259的IR0,使计算机每秒钟产生18.2次的中断(即每隔55ms申请一次),CPU可以此作为时间基准。如计65536次中断就为1小时。 MOV AL,36H ;计数器0,方式3,写两个字节,二进制计数 OUT 43H,AL ;控制字送控制字寄存器 MOV AL,0 ;计数值为最大值 OUT 40H,AL ;写低8位 OUT 40H,AL ;写高8位

  48. ⑵计数器1用于定时(15μs)DMA请求 8253通道1和8237通道0构成刷新电路, 8253通道1每隔15us请求一次DMA读操作。 f=1/15us=66666.67Hz, 故分频系数= 1193180Hz/66666.67Hz=18(即初值) MOV AL,54H ;计数器1,方式2,只写低8位,二进制计数 OUT 43,AL MOV AL,12H ;初值为18 OUT 41H,AL

  49. ⑶计数器2用于产生约900HZ的方波送至扬声器 MOV AL,B6H ;计数器2,方式3,写两字节,二进制计数 OUT 43,AL MOV AX,0533H ;计数初值为533H OUT 42H,AL ;写低8位 MOV AL,AH OUT 42H,AL ;写高8位

  50. 9.4 Intel 8254简介 Intel8254是Intel 8253的改进型,它们在操作方式及引脚排列上完全相同。 相比8253,8254主要改进的内容是: 1.计数频率高 8254的计数频率可由直流至6MHz,8254-2可高达10MHz。而8253最高只能达到2.6MHz。

More Related