1 / 59

第七章 计数/定时技术

第七章 计数/定时技术. 第一节 概 述. 1、定时与计数 控制系统与计算机中,常常需要有定时信号,以实现定时或延时控制。如定时中断,动态存储器的定时刷新等。此外,还需要有计数功能,以实现对外部事件的计数,当外部事件发生的次数达到规定值后,向计算机发出中断请求,进而实现相应的控制或处理。 定时的本质就是计数,当计数信号是周期信号时,计数就可以用于定时。例如以秒为单位计数,则计数60次就是1分,计满60分就是1小时,计满24小时就是1天。. 2、实现定时和计数的三种方法

duyen
Télécharger la présentation

第七章 计数/定时技术

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. 第七章 计数/定时技术

  2. 第一节 概 述 • 1、定时与计数 • 控制系统与计算机中,常常需要有定时信号,以实现定时或延时控制。如定时中断,动态存储器的定时刷新等。此外,还需要有计数功能,以实现对外部事件的计数,当外部事件发生的次数达到规定值后,向计算机发出中断请求,进而实现相应的控制或处理。 • 定时的本质就是计数,当计数信号是周期信号时,计数就可以用于定时。例如以秒为单位计数,则计数60次就是1分,计满60分就是1小时,计满24小时就是1天。

  3. 2、实现定时和计数的三种方法 • 软件方法:采用软件定时,让计算机执行一个专门的指令序列,由执行指令序列中每条指令所花费的时间构成一个固定的时间间隔,从而达到定时或延时的目的。 • 不可编程的硬件定时:采用电子器件构成定时或延时电路,通过调整电路中定时元件的数值,可实现调整定时或延时的数值和范围。 • 可编程的硬件定时:在微机系统中采用软硬件结合的方法,即采用可编程定时的电路器件实现定时。如:Intel 8253/8254,Zilog CTC,MC6840等。8253-5(5MHz)和8254-2(10MHz)的引脚和功能都是兼容的。

  4. 第二节 可编程计数器/定时器8253-5 一、8253-5的主要功能 Intel 8253-5是具有3个16位计数器通道的可编程 计数器/定时器芯片,主要功能如下: (1) 具有3个独立的16位计数通道; (2) 每个计数通道都可按2进制或2—10进制计数; (3) 8253-5每个计数通道的计数速率最高可达5MHz, 8253(2MHz), 8254-2(10MHz); (4) 每个计数器通道由6种工作方式,可由程序设置改变; (5) 全部输入输出都与TTL电平兼容。

  5. 二、8253的结构框图 如图7.1所 示 8253由 与CPU接口、 内部控制电 路以及三个 计数器通道 组成。

  6. 1、数据总线缓冲器:CPU用输入输出指令对8253进行读写操作时的所有信息都通过该缓冲器传送。1、数据总线缓冲器:CPU用输入输出指令对8253进行读写操作时的所有信息都通过该缓冲器传送。 • 2、读/写逻辑:这是8253内部操作的控制电路,它 从系统控制总线上接收输入信号,然后转换成8253内 部操作的各种控制信号。 • 3、控制字寄存器:通过该寄存器CPU可以设置三个 计数器通道的工作方式。 • 4、计数器0,1,2:这是3个独立的计数/定时通道, 是16位的可设置计数初值的减法计数器。 如图7.2所示, 是每个计数通道的结构。内有计数初值寄存器CR,计 数执行部件CE和输出锁存器OL及控制字寄存器。其中 CE作减法计数。

  7. 计数器0 计数器1 计数器2

  8. 三、8253的引脚 8253与CPU接口 的引脚,除了没有 复位信号RESET引 脚外,其他与8255 相同。如图7.3所 示,(a)是引脚图, (b)是8253的功能 结构。

  9. 1、CLK CLK为时钟输入引脚,用以输入计数执行部件CE(减法计数器)的计数脉冲信号。 • 2、OUT 它是通道输出信号引脚,从功能上来说也可称为“计数到零/定时时间到”输出引脚。8253的基本功能就是对外部输入到CLK引脚的脉冲进行减法计数。 • 3、GATE 它是门控输入信号引脚,当GATE为低电平时禁止计数器工作, 只有GATE为高电平时计数器才能工作。

  10. 四、8253的工作方式 • 8253的每个通道均可以通过编程选择6种工作方式之一,这6种工作方式是: (1) 方式0: 计数到零产生中断请求 (2) 方式1: 硬件可重复触发的单稳态触发器 (3) 方式2: 分频器 (4) 方式3: 方波发生器(用得最多的方式) (5) 方式4: 软件触发选通 (6) 方式5: 硬件触发选通

  11. 1、方式0计数到零产生中断请求 ⑴ 方式0的时序图 ①如图7.4所示,CPU写入控制字CW,在WR的上升沿, OUT输出变低或保持低。 初值由CR到CE

  12. ② CPU将计数初值N写入计数初值寄存器CR (图中初值为4),在WR上升沿之后的第一个 CLK脉冲的下降沿将CR的内容送入计数执行部件 CE。 ③ 当GATE=1时,在CR内容送入CE后的每一个 CLK脉冲下降沿使CE减1计数,在计数过程中 OUT一直保持低直到计数为零。 ④ 计数器减到0时,OUT由低跳到高电平,此输 出信号可作为中断请求。

  13. ⑵ 方式0的特点 ① 计数器只计一遍,而不能重复工作。当减法计数器 计到0时,并不自动恢复计数器初值而重新开始计数,且 OUT输出保持为高电平。只有CPU再次写入一个新的初值 ,OUT才变为低电平,计数器按新的初值重新开始计数。 或者CPU重新对8253设置方式0控制字,它的OUT输 出也可以立即变为低电平,并等再次写入计数初值后重 新开始计数。 ② CPU向CR写入计数初值后的第一个CLK脉冲将CR的内 容送入CE,从此之后,计数器才开始减1计数。因此这第 一个CLK脉冲不包括在减1计数过程中,所以如果计数初 值设置为N,则输出OUT是在N+1个CLK脉冲之后才变为 高电平,见图7.4。

  14. 在计数过程中,可由GATE信号控制暂停。当GATE变 为低时,计数暂停;当GATE信号变高后又接着计数,参 见图7. 5。 ④ 在计数过程中也可改变计数初值。在写入新的计数初 值后,计数器将立即按新的计数值重新开始计数,即改 变计数初值是立即有效的,参见图7.6。

  15. 2、方式1 硬件可重复触发的单稳态触发器 ⑴ 方式1的原理 如图7.7所示,当CPU输出控制字后,OUT输出变为高 电平。在CPU写入计数初值后,计数器并不开始计数,直 至门控信号GATE的上升沿出现,并在下一个CLK的下降 沿将CR的内容送到CE,同时OUT输出变低,然后开始对 后面的CLK脉冲进行减1计数。在计数过程中,OUT一直 保持低,直至减1计数器计到0时,OUT输出变高。 由于GATE上升沿的触发,使OUT输出产生一个宽度为 N个CLK周期的负脉冲。以后GATE上升沿再次出发,则再 输出一个同样宽度的负脉冲。 因为门控信号GATE通常有硬件产生,所以该方式称为 硬件可重复触发的单稳态触发器。

  16. ⑵ 方式1的特点 ① 若设置初值为N,则输出为N个CLK周期宽度的负脉冲。 ② 计数到零时,可再次由GATE上升沿触发,输出同样宽 度的负脉冲,而不必重新写入初值,即可重复触发。

  17. 在计数过程中(输出负脉冲期间),可由GATE上升沿 再触发,如图7.8所示。 ④ 在计数过程中,CPU可改变初值,这时计数过程不受影响 ,计数到0后输出变高。当再次触发时,计数器才开始按新的计数初值计数。即改变计数初值是下次有效的。

  18. 3、方式2 分频器⑴ 方式2的原理

  19. ⑵方式2的特点 ① 不用重新设置计数初值,通道能连续工作。如果初值为 N,则每输入N个CLK脉冲,输出一个负脉冲,负脉冲的宽度

  20. 为1个CLK周期,重复周期为N倍的CLK周期。 ② 计数过程中可由GATE信号控制,当GATE信号变低时, 立即暂停现行计数;当GATE信号变高后,从计数初值开 始重新计数。 ③ 如果在计数过程中,CPU重新写入计数初值,则对于 正在进行的计数无影响,而是从下一个计数操作周期开 始按新的计数值改变输出脉冲的频率。 下面是初值N=4的输出波形:若CLK=1微秒,则输出 1微秒 4微秒 脉冲周期T=4微秒,脉冲宽度=1微秒

  21. 4、方式3 方波发生器⑴ 方式3的原理

  22. 在方式3,当CPU写入控制字后,输出变高。在写完计数在方式3,当CPU写入控制字后,输出变高。在写完计数 初值N 后,计数器自动开始计数,输出保持高,当计数到N/2 (或N+1/2)时输出变低,直至计数器减到0输出变高。同 时又重新装入初值开始新的计数,如此周而复始进行。 ⑵ 方式3的特点 ① 注意初值N为偶数或奇数时,输出信号的差别。N为偶数 时,输出对称方波,周期为N个CLK宽度;N为奇数时,输出 有N+1/2个CLK周期的高电平和N-1/2个CLK周期的低电平。 ② 在计数过程中,GATE信号变低则暂停现行计数过程,直 到GATE变高,将从计数初值开始重新计数。 ③ 如果要求改变输出方波的频率,则CPU可在任何时候重 新写入初值,并从下一个计数操作周期开始改变输出方波的 频率。

  23. 5、方式4 软件触发选通⑴ 方式4的工作原理

  24. ⑵ 方式4的特点 ① 若初值为N ,则写入初值后的N+1个CLK脉冲才输出 一个负脉冲,负脉冲的宽度为一个CLK周期。 ② 当GATE=1时,允许计数;GATE=0时,禁止计数。 ③ 在计数过程中改变初值,则按新的初值重新计数, 即改变初值是立即有效的。

  25. 6、方式5 硬件触发选通 ⑴ 方式5的工作原理

  26. ⑵ 方式5的特点 ① 初值为N,则在门控GATE上升沿触发后。经过N+1 个CLK脉冲,才输出一个CLK周期的负脉冲。 ② 若在计数过程中再次出现门控GATE触发信号。则将 从初值开始重新计数,但OUT输出的高电平不受影响。 ③ 若在计数过程中改变初值,只要在计数到0之前不出 现新的门控触发信号,则原计数过程不受影响;等计数 到0并出现新的门控触发信号后,再按新的计数初值计数 。若在写入了新的计数初值后,在未计数到0之前有门控 触发信号出现,则立即按新的计数初值重新开始计数。 7、8253工作方式小结 如下表所示,总结了6种工作方式的特点:

  27. 方式0 方式1 方式2 方式3 方式4 方式5 功能 计最后一个数中断 硬件触发单稳触发器 分频器 方波发生器 软件触发选通 硬件触发选通 启动条件 写入计数值 外部触发 写入计数值 写入计数值 写入计数值 外部触发 重复条件 写计数值 外部触发 自动重复 自动重复 写计数值 外部触发 N与CLK和OUT关系 写入N后过N+1个CLK后输出变高 单个输出脉冲宽度为N个CLK 每N个CLK输出一个CLK宽度脉冲 写入N后(偶)输出N/2个CLK高N/2个CLK低 写N后过N+1个CLK后输出一个CLK宽度的脉冲 门控触发后过N+1个脉冲输出一个CL宽度的脉冲 改变计数值 立即有效 外部触发后有效 下一计数操作周期有效 下一计数操作周期有效 立即有效 外部触发后有效 写入控制字后的OUT 立即为低 高 高 高 高 高 GATE 低或变低 禁止计数 禁止计数输出变高 禁止计数输出变高 禁止计数 上升沿 从初值开始重新计数 从初值开始重新计数 从初值开始重新计数 硬件触发信号启动计数 高 允许计数 允许计数 允许计数 允许计数 计数器最小值 1 1 2 2 1 1 计数器最大值 0 0 0 0 0 0 计数到0后状态 继续减1计数 继续减1计数 自动装初值后计数 自动装初值后计数 继续减1计数 继续减1计数

  28. 方式2(分频器)、方式4(软件触发选通)和 方式5( 硬件触发选通),它们的输出波形相同, 都是宽度为 1个CLK周期的负脉冲。区别是:方式2 是自动重复工作的,而方式4需要由软件(设置计数 初值)触发启动,方式5需要由硬件(门控GATE信 号)触发启动。 ⑵ 方式5(硬件触发选通)与方式1(硬件触发单 稳),触发信号相同,但输出波形不同:方式1输出 为宽度是N个CLK周期的负脉冲(计数过程中输出为 低) ,而方式5输出为宽度是1个CLK周期的负脉冲 (计数过程中输出为高) 。

  29. 在6种工作方式中,只有方式0,在写入控制字后输 出为低;其余5种方式,都是在写入控制字后输出为高。 ⑷ 6种工作方式中的任何一种方式,只有在写入计数 初值后才能开始计数。方式0、2、3、4都是写入计数 初值后,计数过程就开始了。而方式1和方式5在写入计 数初值后,需由外部GATE信号的触发启动,才能开始 计数过程。 ⑸ 6种工作方式中,只有方式2(分频器)和方式3 (方波发生器)为自动重复工作方式,其他4种方式都 是一次 性计数,要继续工作需要重新启动。 图7.20是8253六种工作方式下的输出波形图。

  30. 五、8253的初始化编程 1、内部寄存器寻址 一片8253占用四个连续的端口地址,分别对应于三个计数初值寄存器端口和一个控制寄存器端口。由于3个通道共用一个控制寄存器,因此需要使用控制字来表示作用于哪个通道,使用D7和D6来表示。 8253内部寄存器的寻址如下表所示:

  31. 表7-1:8253内部寄存器的寻址

  32. 2、8253的控制字:如图7.16所示 D7 D6 D5 D4 D3 D2 D1 D0

  33. 3、初始化编程顺序 对于每个计数通道进行初始化时,必须先写入控制字, 然后写入计数初值。这是因为计数初值的写入格式是由 控制字的D5和D4两位编码决定的。写入计数初值时,必 须按控制字规定的格式写入。 例1:若用8253的计数通道1,工作在方式0,按8位二进 制计数,初值为128,试编写初始化程序,设口地址为 48H- 4BH。 解:控制字为01010000=50H, 8位计数初值为80H mov al,50H ;设置通道1控制字 out 4BH, al mov al, 80H ;写通道1计数初值,只写低 out 49H, al ;8位

  34. 例2:若用8253通道1,工作在方式1,按二-十进制计数,例2:若用8253通道1,工作在方式1,按二-十进制计数, 计数初值为2010,口地址同上,试编写初始化程序。 解:通道控制字为01110011=73H 计数初值高8位为20,低8位为10(注意:实际编程 时要写20 H和10H) mov al, 73H ;写通道1控制字 out 4BH, al mov al, 10H ;写通道1计数初值低8位 out 49H, al mov al, 20H ;写通道1计数初值高8位 out 49H, al 当执行完上述程序后,8253通道1工作于方式1。经GATE上 升沿触发后,输出产生一宽度为2010个CLK周期的负脉冲。

  35. 六、8253的读操作 由CPU访问每个通道的输出锁存器OL,即可实现读出每 个通道的计数值。如果是8位计数只需读一次;如果是16位 计数,则要读两次,先读低8位,后读高8位。 由于通道计数器在不停的计数过程中,而锁存器的值是 跟随计数器的值变化的,为使读得的数正确,有下面两种 方法: 1、读之前先暂停计数 此法是利用GATE信号使计数器暂停计数,或由外部逻辑 暂时封锁CLK的输入,然后进行读出。这要求硬件和软件配 合。设8253口地址为48H-4BH,要读通道0的计数值,可编 程如下:

  36. mov al, 30H ;写控制字00110000 out 4BH,al in al, 48H ;读计数通道0的低8位 mov bl, al ;存于寄存器BL in al, 48H ;读计数通道0的高8位 mov bh, al ;存于寄存器BH 注意在读之前,应先写控制字,其中控制字的D5D4=11 2、读之前先送计数值锁存命令 锁存命令由控制字的D5D4位决定, D5D4=00是锁存 命令,锁存哪一个寄存器由控制字的D7D6位决定。此时 控制字的低4位可设定为全0。 设8253的口地址为E8H-EBH,现要求读计数通道1的 16位计数值,并假设在读之前已设置控制字为先读/写低 8位,再读/写高8位,则可编程如下:

  37. mov al, 40H ;锁存命令为40H out 0EBH, al ;写入通道1控制字寄 存器 in al, 0E9H ;读低8位 mov bl, al ;存于BL in al, 0E9H ;读高8位 mov bh, al ;存于BH 这种方法,必须先执行一次锁存操作,但 省去了需要硬件的配合。

  38. 第三节 8253的应用 例1:8253用作脉冲发生器 如图7.17所示,产生重复周期为5µs,脉冲宽度为1µs 的输出脉冲。设时钟CLK的频率为2MHz

  39. CLK ……… OUT1 0.5 µs 1 µs OUT0 5 µs 例1的波形图

  40. 解:设想用计数器1作分频器(工作于方式2),以决定脉冲信解:设想用计数器1作分频器(工作于方式2),以决定脉冲信 号的周期。计数器0作单稳(工作于方式1),用于决定脉冲的 宽度。计数器1的输出接至计数器0 的GATE0,用作单稳的触发 信号。由于CLK的周期T=0.5µs,所以计数器1的初值设为10, 即10分频,输出OUT1是周期为5 µs的,脉冲宽度为0.5µs信号。 计数器0的计数初值设定为2,使其输出信号负脉冲的宽度为 1 µs,再经反相后即为所要求的脉冲信号。设8253的端口地址 为80H-86H(偶地址),具体编程如下。 mov al, 00010011B;设置控制字,计数器0为方式1, out 86H, al ;只写低8位,BCD计数 mov al, 2 ;设置计数器0的计数初值为2 out 80H, al mov al, 01010101B;计数器1为方式2,只写低8位, out 86H, al ;BCD计数 mov al, 10H ;设置计数器1的计数初值为10H out 82H, al

  41. 例2:图7.18是8253-5在PC/XT机中的应用,PCLK=2.38MHz,例2:图7.18是8253-5在PC/XT机中的应用,PCLK=2.38MHz, 经分频后得1.19MHz给CLK0、CLK1和CLK2。设口地址为40H- 43H。三个计数器的用途如下:

  42. 计数器0作定时中断,选用方式3,控制字为36H,初值为0 (即65536),GATE0接+5V。因此输出时钟频率为 1.19MHz/65536=18.21Hz。它接到8259的IRQ0,即0级中断, 每秒出现18.2次。因此每秒间隔55ms产生一次0级中断请求。 ⑵ 计数器1向DMA控制器定时发出动态存储器刷新请求,它选 用方式2,控制字为54H,计数初值为18,GATE1接+5V。因此 OUT1输出分频脉冲,频率为1.19MHz/18=66.1KHz,相当于周 期为15.1 µs。这样允许计数器1每隔15.1 µs经U21产生一个动 态存储器刷新请求信号DRQ0。 ⑶ 计数器2控制喇叭发声,选用方式3,控制字为B6H,计数初 值为533H(即1331),OUT1输出方波的频率为 1.19MHz/1331=894Hz。该计数器的工作由主板上的8255的 PB0端控制。当PB0输出的TIME2 GATESPK为高电平时,

  43. 计数器方能工作。OUT2的输出与8255A的PB1产生 喇叭音响信号SPKRDATA在U87相与后送到功放驱 动芯片75477的输入端A,其输出推动喇叭发出声 音。 8253-5的初始化程序如下: PRO:mov al, 36H ;选择计数器0,方 式3,二进制计数 out 43H, al ;写控制字 mov al,, 0 ;预置计数初值0 out 40H, al ;先送低字节 out 40H, al ;后送高字节

  44. PR1:mov al, 54H ;选择计数器1,方式2, 二进制计数 out 43H, al ;写控制字 mov al, 12H ;预置计数初值18 out 41H, al PR2:mov al, 0B6H;选择计数器,方式3, 二进制计数 out 43H, al ;写控制字 mov ax, 533H ;送分频数 out 42H, al ;先送低字节 mov al, ah out 42H, al ;后送高字节

  45. 例3:用8253实现日时钟 8253工作在方式3下,其输出是一个周期准确的方波,可 以作为定时单位。如CLK0=1. 1931816MHz,初值为最大值 65536,则计数器0输出的方波频率为 f0=1. 1931816MHz/65536=18.2Hz,周期为T0=54.945ms 1天=24×60 ×60 ×1000ms/54. 945ms=1572482(计时 单位)=0017FE82H;即计满1572482个计时单位,就是1天。 同理计满65520是1个小时,计满1092就是1分钟,计满18.2 就是1秒钟。 具体做法是8253的OUT0输出连到8259的IR0上。8253输出 的方波每隔54.945ms申请一次中断,在中断服务程序中做双 字变量的加1操作。当低字计到65536时,向高字进位,直至 高字计到0017H,低字计到FE82H,就计到24小时。然后清零

  46. 开始第二天的计时。其硬件连接如图7.19所示。图中在内存开始第二天的计时。其硬件连接如图7.19所示。图中在内存 开辟了两个字单元,低字TIMER-LO(40H:6CH)和高字 TIMER-HI(40H:6EH)。

More Related