您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 第9章计数器和定时器电路.
第9章计数器和定时器电路Intel8253/8254-PIT本章讲述:9.1概述9.28253-PIT的控制字9.38253-PIT的工作方式9.48353-PIT的编程9.5Intel8254-PIT在控制系统中,常常要求有一些实时时钟以实现定时或延时控制,如定时中断、定时检测、定时扫描等,也往往要求有计数器能对外部事件计数。要实现定时或延时控制,有三种主要方法:软件定时、不可编程的硬件定时、可编程的硬件定时器。软件定时——即让计算机执行一个程序段,这个程序段本身没有具体的执行目的,但由于执行每条指令都需要时间,则执行一个程序段就需要一个固定的时间。通过正确地挑选指令和安排循环次数很容易实现软件定时,但软件定时占用了CPU的时间,降低了CPU的利用率。不可编程的硬件定时可以采用小规模集成电路器件如555,外接定时部件——电阻和电容构成。这样的定时电路简单,而且利用改变电阻和电容,可以使定时在一定的范围内改变。但是,这种定时电路在硬件连接好以后,定时值及定时范围不能由程序(软件)来控制和改变,由此就生产了可编程的定时器电路。可编程定时器电路的定时值及其范围,可以很容易地由软件来确定和改变。所以,功能较强,使用灵活。本章就介绍这种定时器电路。9.1概述Intel系列的计数器/定时器电路为可编程序间隔定时器PIT(ProgrammableIntervalTimer),型号为8253,改进型为8254。Intel8253具有3个独立的16位计数器通道,使用单一5V电源,它是24个引脚的双列直插式器件。9.1.18253-PIT的主要功能Intel8253-PIT具有以下主要功能:(1)一个芯片上有三个独立的16位计数器通道;(2)每个计数器都可以按照二进制或二—十进制计数;(3)每个计数器的计数速率可高达2MHz。(82C54-2计数频率可达到10MHz);(4)每个通道有6种工作方式,可由程序设置和改变;(5)所有的输入输出都与TTL兼容。9.1.28253-PIT的内部结构8253的内部结构如图9-1所示。1.数据总线缓冲器这是8253与CPU数据总线连接的8位双向三态缓冲器。CPU用输入输出指令对8253进行读写的所有信息,都是通过这8条总线传送的。包括:(1)CPU在初始化编程时,写入8253的控制字;(2)CPU向某一通道写入的计数值;(3)CPU从某一个通道读取的计数值。2.读/写逻辑这是8253内部操作的控制部分。首先有选片信号CS的控制部分,当CS为高电平(无效)时,数据总线缓冲器处在三态,与系统的数据总线脱开,故不能进行编程,也不能进行读写操作。其次,由这部分选择读写操作的端口(三个计数器及控制字寄存器),也由这部分控制数据传送的方向,读——数据由8253传向CPU,写——数据由CPU传向8253。3.控制字寄存器在8253的初始化编程时,由CPU写入控制字以决定通道的工作方式。此寄存器只能写入而不能读出。4.计数器0,计数器1,计数器2这是三个计数器/定时器通道,每一个都是由一个16位的可预置值的减法计数器构成。这三个通道的操作是完全独立的。每个通道都是对输入脉冲CLK按二进制或二—十进制,从预置值开始减1计数。当预置值减到零时,从OUT输出端输出一信号。计数器/定时器电路的本质是一个计数器。若计数器对频率精确的时钟脉冲计数,则计数器就可作为定时器。计数频率取决于输入脉冲的频率。在计数过程中,计数器受到门控信号GATE的控制。计数器的输入与输出以及与门控信号之间的关系,取决于工作方式。计数器的初值必须在开始计数之前,由CPU用输出指令预置。在计数过程中,CPU随时可用输入指令读取任一计数器的当前计数值,这一操作对计数没有影响。9.1.38253-PIT的引线Intel8253-PIT的引线如图9-2所示。8253-PIT与CPU接口的引线,除了没有复位信号RESET引脚外,其他与8255并行输入输出接口芯片相同(请参阅本书第10章)。每一个通道有三条引线:CLK:输入脉冲线。计数器就是对这个脉冲计数。8253规定,加在CLK引脚的输入时钟周期不能小于380ns。GATE:门控信号输入引脚。这是控制计数器工作的一个外部信号。当GATE引脚为低电平(无效)时,通常都是禁止计数器工作;只有当GATE为高电平时,才允许计数器工作。OUT:输出引脚。当计数到“0”时,OUT引线上必然有输出,输出信号的波形取决于工作方式。8253内部端口的选择是由引线A1和A0决定的,它们通常接至地址总线的A1和A0。各个通道的读/写操作的选择,如表9-1所示。9.28253-PIT的控制字在8253的初始化编程中,由CPU向8253的控制字寄存器写入一个控制字,它规定了8253的工作方式。其格式如图9-3所示。1.计数器选择(D7D6)控制字的最高两位决定这个控制字是哪一个通道的控制字。由于三个通道的工作是完全独立的,所以需要有三个控制字寄存器分别规定相应通道的工作方式。但它们的地址是同一个,即A1A0=11——控制字寄存器的地址。所以,需要由这两位来决定是哪一个通道的控制字。因此,对三个通道的编程需要向同一个地址(控制字寄存器地址)写入三个控制字,它们的D7D6位分别指定不同的通道。在控制字中的通道选择与通道计数器的地址是两回事,不能混淆。计数通道的地址是用作CPU向计数器写初值,或者从计数器读取当前的计数值。2.数据读/写格式(D5D4)CPU向计数通道写入初值和读取它们的当前状态时,有几种不同的格式。例如,写数据时,是写入8位数据还是16位数据,若是8位计数,可以令D5D4=01只写低8位,则高8位自动置0;若是16位计数,而低8位为0,则可令D5D4=10,只写入高8位,而低8位就自动为0;在令D5D4=11时,16位计数就先写入低8位,后输入高8位。在读取计数值时,可令D5D4=00,则把写控制字时的计数值锁存,以后再读取。3.工作方式(D3D2D1)8253的每个通道可以有6种不同的工作方式,由这三位决定。每一种方式的特点,随后介绍。4.数制选择(D0)8253的每个通道有两种计数制:二进制和二—十进制,由这位决定。在二进制计数时,写入的初值的范围为0000H~FFFFH,其中0000H是最大值,代表65536;在二—十进制时,写入的初值的范围为0000~9999,其中0000是最大值,代表10000。9.38253-PIT的工作方式9.3.1方式0——计完最后一个数时中断在这种方式,当控制字CW(ControlWord)写入控制字寄存器,则使OUT输出端变低,即使计数器没有赋予初值,也没开始计数。要开始计数,GATE信号必须为高电平。则在写入计数初值以后,通道开始计数,在计数过程中,OUT信号线一直维持为低电平,直到计数到“0”时,OUT输出信号线才变为高电平。方式0过程如图9-4所示。其中,LSB=4表示只写低8位计数值为4,最底下一行是计数器中的数值。方式0的主要特点是:(1)计数器只计数一遍。当计数到0时,并不恢复计数初值,不开始重新计数,且输出保持为高。只有在写入另一个计数值时,OUT变低,开始新的计数。(2)8253内部是在CPU写计数值的WR#信号上升沿,将此值写入通道的时常数寄存器,在WR#信号上升沿后的下一个CLK脉冲,才将计数值由时常数寄存器送至计数器作为初值,开始计数。所以,8253PIT是在写计数值命令后经过一个输入脉冲,才将计数值装入计数器,下一个脉冲才开始计数。因此,如果设置计数初值为N,则输出信号OUT是在N+1个CLK脉冲之后才变高的。这个特点在方式1、方式2、方式4和方式5时也是同样的。(3)在计数过程中,可由门控制信号GATE控制暂停。当GATE=0时,计数暂停;当GATE变高后,就接着计数,其波形如图9-5所示。(4)在计数过程中可以改变计数值。若是8位计数,则在写入新的计数值后,计数器将按新的计数值重新开始计数,如图9-6所示。如果是16位计数,在写入第一个字节后,计数器停止计数,在写入第二个字节后,计数器便按照新的数值开始计数,即改变计数值是立即有效的。(5)8253内部没有中断控制电路,也没有专用的中断请求引线,所以若要用于中断,则可以用OUT信号作为中断请求信号,但是,需要有外接的中断优先权排队电路与中断向量产生电路。若8253的地址为04H~07H,要使计数器1工作在方式0,仅用8位二进制计数,计数值为128,初始化程序为:MOVAL,50H;设控制字OUT07H,AL;输出至控制字寄存器MOVAL,80H;设置计数值OUT05H,AL;输出至计数通道19.3.28253-PIT工作方式小结8253有六种不同的工作方式,它们的特点不同,因而应用的场合也就不同。方式2、4、5的输出波形是相同的,都是宽度为一个CLK周期的负脉冲。但方式2是连续工作,方式4由软件(设置计数值)触发启动,而方式5由门控脉冲触发启动。方式5(硬件触发选通)与方式1(硬件再触发单拍脉冲),工作方式基本相同,但输出波形不同,方式1输出的是宽度为N个CLK脉冲的低有效脉冲(计数过程中输出为低),而方式5输出的是宽度为1个CLK脉冲的负脉冲(计数过程中输出为高)。1.输出OUT的初始状态在6种方式中,只有方式0,在写入控制字后输出为低。其它5种方式,都是在写入控制字后输出为高。2.计数值的设置任一种方式,只有在写入计数值后才能开始计数,方式0、2、3和4都是在写入计数值后,计数过程就开始了,而方式1和5需要外部触发启动,才开始计数。在不同工作方式下,计数值N对输出波形的影响是不同的,如表9-2所示。6种方式中,只有方式2和3是连续计数,其他4种方式都是一次计数,要继续工作需要重新启动,方式0、4由写入计数值(软件)启动,方式1、5要由外部信号(硬件)启动。3.门控信号的作用8253在不同方式下门控输入信号的作用,如表9-3所示。GATE输入总是在CLK输入时钟的上升沿被采样。在方式0、2、3、4中,GATE输入是电平起作用,逻辑电平在CLK的上升沿采样。在方式1、2、3、5中,GATE输入是上升沿起作用的,在这种情况下,GATE信号的上升沿使计数器内部的一个边沿敏感的触发器置位,它由下一个CLK脉冲的上升沿采样,采样之后,这个触发器被复位。这样不管GATE的上升沿何时出现总能被检测到,且对GATE高电平的持续时间没有要求。在方式2和3中,GATE信号的上升沿和电平都可以起作用。4.在计数过程中改变计数值8253在不同方式时都可以在计数过程中写入计数值,但它的作用在不同方式时有所不同,如表9-4所示。表中的立即有效都是指写入计数值后的下一个CLK脉冲以后,新的计数值开始起作用。5.计数到0后计数器的状态计数器减到0后并不停止不动。在方式0、1、4、5,计数器计到0后,都从这个最大计数值(十六进制的FFFFH和BCD的9999)继续倒计数。方式2与3是连续计数,计数器自动装入计数值继续计数。9.48253--PIT的编程要使用8253-PIT必须首先进行初始化编程,初始化编程的内容为:必须先写入每一个通道的控制字,然后写入通道的计数值。如前所述,在有些方式下,写入计数值后此计数通道就开始工作了,而有的方式需要外界门控信号的触发启动。在初始化编程时,某一通道的控制字和计数值,是通过两个不同的端口地址写入的。任一通道的控制字都是写入至控制字寄存器(地址总线低两位A1A0=11),由控制字中的D7D6来确定是哪一个通道的控制字;而计数值是由各个通道的端口地址写入的。初始化编程的步骤为:(1)写入通道控制字,规定通道的工作方式。(2)写入计数值。①若规定只写低8位,则写入的为计数值的低8位,高8位自动置0;②若规定只写高8位,则写入的为计数值的高8位,低8位自动置0;③若是16位计数值,则分两次写入,先写入低8位,再写入高8位。例如:若要用通道0,工作在方式1,按二—十进制计数,计数值为5080H。则初始化编程的步骤为:(1)确定通道控制字:(2)计数值的低8位为80H。(3)计数值的高8位为50H。若端口
本文标题:第9章计数器和定时器电路.
链接地址:https://www.777doc.com/doc-2113640 .html