您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 第8章.计数器和定时器
第8章计数器和定时器Intel8253/82548.1概述8.28253的控制字8.38253的工作方式8.48253的初始化8.58253的读操作8.6Intel82548.78253在PC机中的应用8.8定时计数器的应用实例8.1概述8.1.18253的主要功能Intel8253具有以下主要功能:(1)一个芯片上有3个独立的16位计数器通道。(2)每个计数器都可以按照二进制或二-十进制计数。(3)每个计数器的计数速率可高达2MHz。(82C54-2计数频率可达到10MHz)。(4)每个通道有6种工作方式,可由程序设置和改变。(5)所有的输入输出都与TTL电平兼容。8.1.28253的内部结构8253的内部结构如图8-1所示。1.数据总线缓冲器8位双向三态缓冲器。CPU用I/O指令对8253进行读写的所有信息,都是通过这8条总线传送的。包括:(1)CPU在初始化编程时,写入8253的控制字。(2)CPU向某一通道写入的计数值。(3)CPU从某一个通道读取的计数值。2.读/写控制逻辑接受来自系统总线的输入信号,然后产生整个器件的工作控制信号。3.控制字寄存器它接受来自CPU的方式控制字,可以分别控制三个计数器的工作方式。它只能写入,不能读出。4.计数器0,计数器1,计数器2这是3个独立的计数器/定时器通道,每个通道的结构完全相同,如图8-2所示。每一个通道由一个16位的可预置值的减法计数器,一个16位预置寄存器,一个16位的输出锁存器构成。这3个通道的操作是完全独立的。在计数过程中,减法计数器的值不断递减,而预置寄存器的预置数不变。输出锁存器则用于写入锁存命令时锁定当前计数值。每个通道的减法计数器从预置值开始减1计数。当减法计数器的值减到零时,从OUT输出端输出一个信号。8.1.38253的引脚Intel8253的引脚如图8-3所示。D7~D0——数据线、双向、三态,用于连接CPU的数据总线。——片选信号、输入、低电平有效。只有当为0,选中8253。通常,接地址译码信号。A1、A0——片内寄存器选择信号(端口选择),输入。用于读写8253三个通道的计数器和1个控制寄存器——读信号、输入、低电平有效。当有效时,CPU可以从8253中读取数据。___写信号、输入、低电平有效。当有效时,CPU可以向8253写入数据或命令字。CSRDWR每一个通道有3个引脚。CLK:输入脉冲引脚。计数器就是对这个引脚上的脉冲进行计数。8253规定,加在CLK引脚的输入时钟周期不能小于380ns。GATE:门控信号输入引脚。这是控制计数器工作的一个外部信号。当GATE引脚为低电平(无效)时,通常都是禁止计数器工作;只有当GATE为高电平时,才允许计数器工作。OUT:输出引脚。当计数到0时,OUT引脚上必然有输出,输出信号的波形取决于工作方式。8253内部端口的选择是由引线A1和A0决定的,它们通常接至地址总线的A1和A0。各个通道的读/写操作的选择,如表8-1所示。8.28253的控制字1.计数器选择(D7D6)控制字的最高两位决定这个控制字是哪一个通道的控制字。由于三个通道的工作是完全独立的,所以需要有3个控制字寄存器分别规定相应通道的工作方式。但它们的地址是同一个,即A1A0=11。因此,对三个通道的编程需要向这个地址写入3个控制字,它们的D7D6位分别指定不同的通道。2.数据读/写格式(D5D4)CPU向计数通道写入初值和读取它们的当前状态时,有几种不同的格式。例如,写数据时,是写入8位数据还是16位数据,若是8位计数,可以令D5D4=01,只写入低8位,则高8位自动置0;若是16位计数,而低8位为0,则可令D5D4=10,只写入高8位,而低8位就自动为0;若是16位计数,高8位与低8位都不是0,就先写入低8位,后写入高8位。则可令D5D4=11。在读取计数值时,可令D5D4=00,则把写控制字时的计数值锁存,以后再读取。3.工作方式(D3D2D1)8253的每个通道可以有6种不同的工作方式,由这3位决定。每一种方式的特点,随后介绍。4.数制选择(D0)8253的每个通道有两种计数制:二进制和二-十进制,由这位决定。在二进制计数时,写入的初值的范围为0000H~FFFFH,其中0000H是最大值,代表65536;在二-十进制时,写入的初值的范围为0000~9999,其中0000是最大值,代表10000。8.38253的工作方式8.3.1方式0——计数完成时中断在这种方式,当控制字CW写入控制字寄存器,则使OUT输出端变低,计数器还没有赋予初值,也不开始计数。要开始计数,GATE信号必须为高电平。则在写入计数初值以后,通道开始计数,在计数过程中,OUT信号线一直维持为低电平,直到计数到0时,OUT输出信号线才变为高电平。方式0过程如图8-5所示。其中,LSB=4表示计数值为4,只写低8位,最底下一行是计数器中的数值。方式0的主要特点是:(1)计数器只计数一遍。当计数到0时,并不恢复计数初值,不开始重新计数,且输出保持为高。只有在写入另一个计数值时,OUT变低,开始新的计数。(2)8253内部是在CPU写计数值的WR信号上升沿,将此值写入通道的预置寄存器,在WR信号上升沿后的下一个CLK脉冲,才将计数值由预置寄存器送至减1计数器作为初值,开始计数。所以,8253是在写计数值命令后经过一个输入脉冲,才将计数值装入减1计数器,下一个脉冲才开始计数。因此,如果设置计数初值为N,则输出信号OUT是在N+1个CLK脉冲之后才变高的。这个特点在方式1、方式2、方式4和方式5时也是同样的。(3)在计数过程中,可由门控制信号GATE控制暂停。当GATE=0时,计数暂停;当GATE变高后,就接着计数,其波形如图8-6所示。(4)在计数过程中可以改变计数值。若是8位计数,则在写入新的计数值后,计数器将按新的计数值重新开始计数,如图8-7所示。如果是16位计数,在写入第一个字节后,计数器停止计数,在写入第二个字节后,计数器便按照新的数值开始计数,即改变计数值是立即有效的。(5)8253内部没有中断控制电路,也没有专用的中断请求引线,所以若要用于中断,则可以用OUT信号作为中断请求信号,但是,需要有外接的中断优先权排队电路与中断向量产生电路。若8253的地址为04H~07H,要使计数器1工作在方式0,仅用8位二进制计数,计值为128,初始化程序为:MOVA1,50H;设控制字OUT07H,AL;输出至控制字寄存器MOVAL,80H;设置计数值OUT05H,AL;输出至计数通道18.3.2方式1——可编程序的单拍脉冲在这种方式下,当CPU写控制字后(的上升沿),输出OUT信号将保持为高电平(若原为低,则由低变高)。当CPU写完计数值后,计数器并不开始计数,直到外部门控制脉冲GATE启动之后的下一个输入CLK脉冲的下降沿开始计数,输出OUT变为低电平。在整个计数过程中,OUT都维持为低电平,直到计数到0,输出变为高电平,因此输出为一个单拍脉冲。若外部GATE再次触发启动,则可以再产生一个单拍脉冲,如图8-8所示。方式1的主要特点是:(1)若设置的计数值为N,则输出的单拍脉冲的宽度即为N个输入脉冲间隔。(2)当计数到0后,可再次由外部GATE触发启动,于是可再输出一个同样宽度的单拍脉冲,而不用再次送入一个计数值。(3)在计数过程中,外部可发出门控脉冲进行再触发。在再触发脉冲上升沿之后的一个CLK脉冲的下降沿,计数器将重新开始计数。如图8-9所示。(4)在计数过程中,CPU可改变计数值,这时计数过程不受影响,计数到0后输出为高。若再次触发启动,则计数器将重按新输入的计数值计数,即计数值是下次有效。如图8-10所示。若要使计数器0工作在方式1,按BCD计数,计数值为3000H。则初始化程序为:MOVAL,23H;设方式控制字OUT07H,AL;输出至控制字寄存器MOVAI,30H;设计数值OUT04H,AL;输出至计数器0的高8位注意:虽然计数值是16位的,但在控制字中规定为只写高8位,故低8位自动设置为0。8.3.3方式2——频率发生器在这种方式下,当CPU输出控制字后,输出OUT信号将变为高电平。在写入计数值后,计数器将立即自动对输入时钟CLK计数。在计数过程中输出始终保持为高电平,直至计数器减到l时,输出才变为低电平,经过一个CLK周期,输出又恢复为高电平,且计数器开始重新计数,如图8-11所示。方式2的一个突出特点是能够连续工作。如果计数值为N,则每输入N个CLK脉冲,输出一个脉冲。因此,这种方式可以作为一个脉冲速率发生器或用于产生实时时钟中断。方式2的主要特点是:(1)不用重新设置计数值,通道能够连续工作,输出固定频率的脉冲。(2)计数过程可由GATE控制脉冲。当GATE变低时,就暂停计数;在GATE变高后的下一个CLK脉冲使计数器恢复初值,重新开始计数,如图8-12所示。图8-13方式2在计数过程中改变计数值(3)在计数过程中可以改变计数值,这对正在进行的计数过程没有影响,但在计数到l时输出变低,过一个CLK周期输出又变高,计数器将按新的计数值计数,所以改变计数值是下次有效的,如图8-13所示。若要使计数器2工作在方式2,按二进制计数,计数值为02F0H。则初始化程序为:MOVAL,84H;写入控制字OUT07H,ALMOVAI,0FOHOUT06H,AL;写计数值的低8位MOVAL,02HOUT06H,AL;写计数值的高8位8.3.4方式3—方波发生器方式3和方式2的输出都是周期性的,它们的主要区别是:方式3在计数过程中输出有一半时间为高,另一半时间为低。所以,若计数值为N,则方式3的输出为方波,周期是N个CLK脉冲。在这种方式,当CPU设置控制字后,输出将为高,在写完计数值后就自动开始计数,输出保持为高;当计数到一半计数值时,输出变为低,直至计数到0,输出又变高,重新开始计数。如图8-14所示。方式3的主要特点是:(1)若计数值为偶数,在装入计数值后,每一个CLK脉冲都使计数值减2,当计数值减到0时,一方面使输出改变状态,另一方面又重新装入计数值开始新的计数,该过程就这样周而复始地进行若计数值为奇数,则在装入计数值后的第一个CLK脉冲使计数器减1,其后每一个CLK脉冲使计数器减2。当计数到0时,改变输出状态,同时重新装入计数值。这以后的第一个CLK脉冲使计数器减3,以后每一个CLK脉冲,计数器仍减2,直到计数器再次到0时,输出恢复为高,重复上述的过程,如图8-15所示。所以,如果计数值N是奇数,则输出有(N+1)/2个CLK脉冲周期为高,而在(N-1)/2脉冲周期为低。即OUT为高将比其为低多一个CLK周期时间。图8-15方式3在计数值为奇数时的波形(2)GATE信号能使计数过程重新开始。GATE=1允许计数,GATE=0禁止计数。如果在输出OUT为低期间,GATE=0,OUT将立即变高,停止计数。当GATE变高以后,计数器将重新装入初始值,重新开始计数。如图8-16所示。(3)若在计数期间写入一个新的计数值,并不影响现行的计数过程。但是若在方波半周期结束之前和新计数值写入之后收到GATE脉冲,计数器将在下一个CLK脉冲时装人新的计数值并以这个计数值开始计数。否则,新计数值将在现行半周结束时装入计数器。8.3.5方式4——软件触发选通在这种方式,当写入控制字后,输出OUT信号为高电平(原为高则保持为高,原为低则变为高)。当写入计数值后立即开始计数(相当于软件启动),当计数到0后,输出变低,经过一个输入时钟周期,输出又变高。计数器停止计数。故这种方式计数也是一次性的,只有在输入新的计数值后,才能开始新的计数,如图8-17所示。方式4有如下特点:(1)CPU写入计数值后的下一个CLK脉冲,把计数值写入计数器,再下一个CLK脉冲开始减数。因此,若设置的计数值为N,则是在写了计数值后的N+1个脉冲,才输出一个负脉冲。(2)当GATE=1时允许计数,而GATE=0时禁止计数。所以,要做到软件启动,则GATE应保
本文标题:第8章.计数器和定时器
链接地址:https://www.777doc.com/doc-4821911 .html