资源描述
Click to edit Master title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,11/7/2009,#,*,计数,/,定时控制器,*,第一页,共49页。,一、概述(i sh),实现定时的三种方法:,1.软件定时:由CPU执行指令序列所花费的时间来构成一定的时间间隔(jin g),从而达到定时的目的。,例如:MOV CX,H,HERE:LOOP HERE,优点:不需要专门的硬件设备。,缺点:浪费了宝贵的CPU资源。,第二页,共49页。,2.不可编程的硬件(yn jin)定时,单稳态电路,时序(sh x)波形,t,d,触发(chf)信号,稳态,暂稳态,第三页,共49页。,3.,可编程计数器,/,定时器,可用软件的方法(通过(tnggu)初始化编程)设定或调整定时范围。,典型产品:Zilog Z80-CTC,Intel 8253(8254),第四页,共49页。,二、可编程计数器,/,定时器,8253,2.1 8253 的主要功能,(1)具有三个独立的16位计数通道(tngdo);,(2)每个计数通道(tngdo)可按二进制或二十进制 计数;,(3)每个计数通道(tngdo)的计数速率可达2MHz;,(4)每个计数通道(tngdo)有六种工作方式;,第五页,共49页。,2.2 8253的结构(jigu),8253的内部结构框图如图1所示。,由图可见,它由与CPU的接口、内部控制电路以及三,个计数器通道(tngdo)所组成。,第六页,共49页。,数据,总线,缓冲器,读,/,写,逻辑,控制(kngzh)字,寄存器,D,7,D,0,计数器,0,计数器,1,计数器,2,RD,WR,A,0,A,1,CS,内部(nib)总线,CLK,0,GATE,0,OUT,0,CLK,1,GATE,1,OUT,1,CLK,2,GATE,2,OUT,2,图1 8253内部结构框图(kungt),第七页,共49页。,第三十三页,共49页。,例3 设8253的三个计数器端口分别为304H307H。,等计数到0并出现新的门控发信号后,再按新的计数值计数。,(4)在计数过程(guchng)中也可改变计数值。,第二十一页,共49页。,如何(rh)产生1Hz的时钟信号?,(4)在计数过程中,CPU可改变计数初值,这时计数过程不受影响,计数到零后输出变高。,4 8253 的工作(gngzu)方式,8253有三个独立的计数器通道,每个通道可以(ky)被CPU访问的部件有:8位的控制寄存器,它只能写入,不能读出;,每个通道都有两个输入引脚CLK和GATE以及一个输出引脚OUT。,第三十三页,共49页。,(4)每个计数通道(tngdo)有六种工作方式;,方式5的时序图如图10所示。,计数(j sh)执行部件,当GATE信号变低时,立即暂停现行计数;,1.数据总线缓冲器,这是8253与CPU的数据总线(DD)连接的8位双向三态缓冲器。CPU用输入输出指令对8253进行(jnxng)读写操作时的所有信息都通过这个缓冲器传送。,2.读/写逻辑,这是8253内部操作的控制电路,它从系统控制总线上接收输入(shr)信号,然后转换成8253内部操作的各种控制信号。,第八页,共49页。,3.控制字寄存器,当地址信号(xnho)A1和A0都为1时,访问控制字寄存器。控制字寄存器从数据总线上接收CPU送来的控制字,并由控制字的D7、D6两位的编码决定控制字写入哪个通道的控制寄存器中去,由寄存在每个通道内的控制寄存器的内容决定该通道的工作方式,选择计数器是按二进制还是BCD数计数,并确定每个计数器初值的写入顺序。,第九页,共49页。,4.计数器0、计数器1、计数器2,这是三个计数器/定时器通道,每一个都由16位的可设置计数初值的减法(jinf)计数器构成。,三个通道的操作是完全独立的。每个通道都有两个输入引脚CLK和GATE以及一个输出引脚OUT。,从编程的角度看,8253的结构框图如图2所示。,第十页,共49页。,数据总线,地址译码,RD,WR,IO/M,V,CC,GND,CLK,0,GATE,0,OUT,0,CLK,1,GATE,1,OUT,1,CLK,2,GATE,2,OUT,2,D,7,D,0,RD,WR,CS,A,1,A,0,控制(kngzh)寄存器(8位),高,8,位,低,8,位,高,8,位,低,8,位,计数器,0,高,8,位,低,8,位,计数(j sh)初值寄存器,(CR),计数(j sh)执行部件,(CE),输出锁存器(,OL,),计数器,1,计数器,2,图,2 8253,计数通道结构,第十一页,共49页。,2.3 8253,的引脚,8253,D,7,D,6,D,5,D,4,D,3,D,2,D,1,D,0,CLK,0,OUT,0,GATE,0,GND,1,2,3,4,5,6,7,8,9,10,11,12,24,23,22,21,20,19,18,17,16,15,14,13,V,cc,WR,RD,CS,A,1,A,0,CLK,2,GATE,2,OUT,2,CLK,1,GATE,1,OUT,1,图,3,8253,的引脚图,第十二页,共49页。,2.4 8253 的工作(gngzu)方式,8253的每个通道均可以通过(tnggu)编程选择6种工作方式之一:,1.方式0计数到零产生中断请求,方式0的操作时序图如图4所示。,第十三页,共49页。,图4 方式(fngsh)0的时序图,第十四页,共49页。,方式0的主要(zhyo)特点是:,(1)计数器只计一遍而不能自动重复工作。只有CPU再次写入一个新的计数值(即使计数值相同也需再次写入),OUT才变为低电平,计数器按新写入的计数值重新开始计数。,或者CPU重新对8253设置方式0控制字,它的OUT输出也可以(ky)立即变为低电平,并等再次写入计数初值后重新开始计数。,第十五页,共49页。,(2)CPU向CR寄存器写入计数初值后的第一个CLK脉冲(即图中用斜线标出的那个脉冲),将CR的内容送入CE,从此之后计数器才开始减1计数。因此这第一个CLK脉冲不包括在减1计数过程中。,如果设置计数初值为N,则输出(shch)OUT是在N+1个CLK脉冲之后才变为高电平。,(3)在计数过程中,可由GATE信号控制暂停计数。当GATE变低时,计数暂停;当GATE变高后又接着计数。,第十六页,共49页。,(4)在计数过程(guchng)中也可改变计数值。在写入新的计数值后,计数器将立即按新的计数值重新开始计数。当按新的计数值减1计数到0时,输出OUT变为高电平。其工作波形如图所示。,第十七页,共49页。,CLK,GATE,(高),1,2,1,2,3,CW,N,3,WR,OUT,图5 方式0计数过程中改变(gibin)计数值,0,N,2,第十八页,共49页。,2.方式1硬件(yn jin)可重复触发的单稳态触发器,方式(fngsh)1的时序图如图6所示。,图6 方式(fngsh)1的时序图,第十九页,共49页。,在方式1,当CPU输出控制字后(WR的上升沿),OUT输出变为高电平(若原为高电平,则保持为高电平);,在CPU写入计数初值后,计数器并不开始计数,直至门控信号(xnho)GATE上升沿(即门控触发信号(xnho)出现。,在计数过程中,OUT一直维持为低电平,直至减1计数到0时,OUT输出变为高电平。即由于GATE上升沿的触发,使OUT输出端产生一个宽度为N个CLK周期的负脉冲。,第二十页,共49页。,(1)若设置计数初值为N,则输出负脉冲的宽度为N个CLK脉冲周期。,(2)当计数到零时,可再次由GATE上升沿触发,输出同样宽度的负脉冲,而不必重新(chngxn)写入计数初值。,(3)在计数过程中(输出负脉冲期间),可由GATE上升沿再触发。并使计数器从计数初值开始重新(chngxn)作减1计数,减至0时,OUT输出变为高电平。其效果是使输出负脉冲的宽度比原来加宽了。,(4)在计数过程中,CPU可改变计数初值,这时计数过程不受影响,计数到零后输出变高。,当再次触发时,计数器才按新输入的计数值计数,即改变计数值是下次有效的。,第二十一页,共49页。,3.方式(fngsh)2分频器,在方式2,当CPU输出控制字后,OUT输出为高。在写入计数(j sh)初值后,计数(j sh)器将自动对输入时钟CLK计数(j sh)。,在计数(j sh)过程中OUT输出为高,直至计数(j sh)器减到1(注意,不是减到0)时,OUT输出变低,经过一个CLK周期,输出恢复为高,且计数(j sh)器将自动重新开始计数(j sh)。,这种方式可作脉冲速率发生器或用来产生实时时钟中断信号。,方式2的时序图如图7所示。,第二十二页,共49页。,图7 方式(fngsh)2时序图,重复(chngf)周期,第二十三页,共49页。,方式(fngsh)2的主要特点是:,(1)不用重新设置计数值,通道能连续工作,输出固定频率的脉冲。如果计数初值为N,则每输入N个CLK脉冲,输出一个负脉冲。负脉冲宽度为1个CLK周期,重复周期为N倍的CLK周期。,(2)计数过程可由GATE信号控制。当GATE信号变低时,立即暂停现行计数;当GATE信号又变高后,从计数初值开始重新计数。,(3)如果在计数过程中,CPU重新写入计数值,则对于正在进行的计数无影响,而是从下一个计数操作(cozu)周期开始按新的计数值改变输出脉冲的频率。,第二十四页,共49页。,4.方式(fngsh)3方波发生器,方式3和方式2的工作情况类似(li s),两者的主要区别是输出波形的形式。,对于方式3,OUT输出是对称方波或基本对称的矩形波。即在一个计数周期内,若计数初值N为偶数,则OUT输出将有N/2个CLK周期为高电平,N/2个CLK周期为低电平,输出为对称方波,其周期为N个CLK周期;,若N为奇数,则OUT输出将有(N+1)/2个CLK周期为高电平,(N-1)/2个CLK周期为低电平,输出为基本对称的矩形波,其周期也为N个CLK周期。,第二十五页,共49页。,图8 方式(fngsh)3时序图,第二十六页,共49页。,方式3的主要(zhyo)特点是:,(1)若计数初值N为偶数,则输出波形是周期为N个CLK周期的对称方波;若计数初值N为奇数,则输出波形是周期为N个CLK周期的基本对称矩形波,其高电平持续时间比低电平持续时间多一个CLK周期。,(2)如果在计数过程(guchng)中,GATE信号变低,则暂停现行计数过程(guchng),直到GATE再次有效,将从计数初值开始重新计数。,(3)如果要求改变输出方波的频率,则CPU可在任何时候重新写入新的计数初值,并从下一个计数操作周期开始改变输出方波的频率。,第二十七页,共49页。,5.方式4软件(run jin)触发选通,在方式4,当写入控制(kngzh)字后,OUT输出为高。当写入计数初值后计数器即开始计数(相当于软件触发启动),当计数到0后,输出变低,经过1个CLK周期,输出又变高。方式4不能自动重复计数,即这种方式计数是一次性的。每次启动计数都要靠重新写入计数值,所以称为“软件触发选通”。,当8253工作于方式4时,可用作软件触发的选通信号发生器。,方式4的时序图如图9所示。,第二十八页,共49页。,图9 方式(fngsh)4时序图,第二十九页,共49页。,方式(fngsh)4的主要特点是:,(1)若设置计数初值为N,则在写入计数初值后的N+1个CLK脉冲,才输出一个负脉冲。负脉冲的宽度为1个CLK周期。,(2)GATE为高时,允许(ynx)计数;GATE为低时,禁止计数。所以,要实现软件启动,GATE应为高。,(3)若在计数过程中改变计数值,则按新的计数值重新开始计数,即改变计数值是立即有效的。,第三十页,共49页。,方式4可应用于这样一种(y zhn)情况:CPU经输出端口发送并行数据给接收系统,经过一段时间延迟后,再发送一个选通信号,利用该选通信号将并行数据打入到接收系统的缓冲寄存器中。,通过改变计数初值N,可以方便地调整发出选通信号的延迟时间。,第三十一页,共49页。,6.方式(fngsh)5硬件触发选通,在方式5,设置了控制字后,输出为高。在设置了计数初值后,计数器并不立即开始计数,而是由门控信号(xnho)GATE的上升沿触发启动。当计数到0时,输出变低,经过一个CLK周期,输出恢复为高,并停止计数。要等到下次门控GATE信号(xnho)的触发才能再计数,即方式5的计数是一次性的。,方式5的时序图如图10所示。,第三十二页,共49页。,CLK,GATE,0,1,2,3,CW,N,3,WR,OUT,图10 方式(fngsh)5时序图,第三十三页,共49页。,方式5的主要(zhyo)特点是:,(1)若设置计数初值为N,则在门控GATE上升沿触发(chf)后,经过N+1个CLK脉冲,才输出一个负脉冲。,(2)若在计数过程中再次出现门控GATE触发(chf)信号,则将使计数器从计数初值开始重新计数,但OUT输出的高电平不受影响。,(3)若在计数过程中改变计数值,只要在计数到0之前不出现新的门控触发(chf)信号,则原计数过程不受影响;等计数到0并出现新的门控发信号后,再按新的计数值计数。,若在写入了新的计数值后,在未计数到0之前有门控触发(chf)信号出现,则立即按新的计数值重新开始计数.。,第三十四页,共49页。,7.8253工作(gngzu)方式小结,(1)方式2(分频器)、方式4(软件触发选通)和方式5(硬件触发选通),它们的输出波形相同,都是宽度为1个CLK周期的负脉冲。区别是,方式2是自动重复工作的,而方式4需由软件(设置计数(j sh)值)触发启动,方式5需由门控GATE信号触发启动。,(2)方式5(硬件触发选通)与方式1(硬件触发单稳),触发信号相同,但输出波形不同方式1输出为宽度是N个CLK周期的负脉冲(计数(j sh)过程中输出为低),而方式5输出为宽度是1个CLK周期的负脉冲(计数(j sh)过程中输出为高)。,第三十五页,共49页。,(3)在6种工作方式中,只有方式0,在写入控制字后输出为低;其余5种方式,都是在写入控制字后输出为高。,(4)6种工作方式中的任一种方式,只有在写入计数初值后才能开始计数。方式0、2、3、4都是写入计数初值后,计数过程就开始了。而方式1和方式5在写入计数初值后,需由外部GATE信号的触发(chf)启动,才能开始计数过程。,(5)6种工作方式中,只有方式2(分频器)和方式3(方波发生器)为自动重复工作方式,其他4种方式都是一次性计数,要继续工作需要重新启动。,第三十六页,共49页。,2.5 8253,的初始化编程,1.内部寄存器的寻址,8253有三个独立的计数器通道,每个通道可以(ky)被CPU访问的部件有:8位的控制寄存器,它只能写入,不能读出;16位的计数初值寄存器CR,它只能写入,不能读出;16位的输出锁存器OL,它只能读出,不能写入。,第三十七页,共49页。,由输入信号A1和A0的四种编码(bin m)来选择四个端口之一。,8253内部寄存器的寻址如(P246,表95)所示。,第三十八页,共49页。,2.初始化编程顺序,注意:必须(bx)按控制字D5,D4位规定的格式进行写入。,设置控制字,写入计数初值,第三十九页,共49页。,3.8253的控制(kngzh)字,SC,1,SC,0,RL,1,RL,0,M,2,M,1,M,0,BCD,00 通道(tngdo)0,01 通道(tngdo)1,02,通道,2,11,无效,通道选择,:,00,计数器锁存命令,01,只读,/,写计数器低,8,位,10,只读,/,写计数器高,8,位,11,先读,/,写计数器低,8,位,后读,/,写计数器高,8,位,读,/,写格式:,计数器,:,工作方式:,000,方式,0,001,方式,1,x10,方式,2,x11,方式,3,100,方式,4,101,方式,5,图,12 8253,控制字格式,0,二进制计数,1,十进制计数,第四十页,共49页。,需要说明的是,当采用二进制计数时,如果是8位二进制计数(计数值256),则在8253初始化编程的传送指令“MOV AL,n”中,n可以写成任何进制数(二进制、十进制或十六进制(sh li jn zh))的形式;,如果是16位二进制计数(计数值65536),一种方法是先把计算得到的十进制计数初值n转换成4位十六进制(sh li jn zh)数(即16位二进制),然后分两次写入8253的指定端口;,第四十一页,共49页。,另一种方法是先把该十进制计数(j sh)初值n直接传送给AX,然后分两次写入8253指定端口,即:,MOV AX,n;,OUT PORT,AL ;先写低8位(PORT为端口号),MOV AL,AH ;,OUT PORT,AL ;后写高8位,第四十二页,共49页。,当采用十进制(BCD码)计数时,必须在8253初始化编程中把计算得到的十进制计数初值n加上后缀H,以便在相应的传送(chun sn)指令执行后能够在AL(或AX)中得到十进制数n的BCD码表示形式,例如n=50,则应按如下方式写入:,MOV AL,50H ;,OUT PORT,AL ;,第四十三页,共49页。,并使计数器从计数初值开始重新(chngxn)作减1计数,减至0时,OUT输出变为高电平。,(1)不用重新设置计数值,通道能连续工作,输出固定频率的脉冲。,5 8253的初始化编程,图8 方式(fngsh)3时序图,OUT 48H,AL ;,(3)如果要求改变输出方波的频率,则CPU可在任何时候重新写入新的计数初值,并从下一个计数操作周期开始改变输出方波的频率。,等计数到0并出现新的门控发信号后,再按新的计数值计数。,(1)不用重新设置计数值,通道能连续工作,输出固定频率的脉冲。,HERE:LOOP HERE,GATE为低时,禁止计数。,这是8253与CPU的数据总线(DD)连接的8位双向三态缓冲器。,方式(fngsh)2分频器,OUT PORT,AL ;,在方式4,当写入控制(kngzh)字后,OUT输出为高。,图10 方式(fngsh)5时序图,(1)若计数初值N为偶数,则输出波形是周期为N个CLK周期的对称方波;,(2)CPU向CR寄存器写入计数初值后的第一个CLK脉冲(即图中用斜线标出的那个脉冲),将CR的内容送入CE,从此之后计数器才开始减1计数。,如果(rgu)n=1250,则需分两次写入,即:,MOV AL,50H ;,OUT PORT,AL ;先写低8位,MOV AL,12H ;,OUT PORT,AL ;后写高8位,也可按如下方法两次写入:,MOV AX,1250H ;,OUT PORT,AL ;先写低8位,MOV AL,AH ;,OUT PORT,AL ;后写高8位,第四十四页,共49页。,4.初始化编程举例(j l),例1 若用8253的计数(j sh)通道1,工作在方式0,按8位二进制计数(j sh),计数(j sh)初值为128,则初始化编程如下:,(1)确定通道控制字-50H,(2)8位计数(j sh)初值为80H。,设8253的端口地址为48H4BH,则初始化程序段为:,MOV AL,50H;,OUT 4BH,AL;设置通道1控制字,MOV AL,80H;,OUT 49H,AL;写通道1计数(j sh)初值,只写低8位,第四十五页,共49页。,例2 若用通道0,工作(gngzu)在方式1,按十进制(BCD码)计数,计数初值为2021,则初始化编程如下:,(1)确定通道控制字-33H,(2)计数初值低8位为10,高8位为20。,若8253的端口地址同例1,则初始化程序段为:,MOV AL,33H;,OUT 4BH,AL ;设置通道0控制字,MOV AL,10H ;,OUT 48H,AL ;写通道0计数初值低8位,MOV AL,20H ;,OUT 48H,AL ;写通道0计数初值高8位,第四十六页,共49页。,2.6 8253的读出操作(cozu),1.读之前先暂停(zn tn)计数,2.读之前先发锁存命令,第四十七页,共49页。,例3 设8253的三个计数器端口分别为304H307H。要求2号计数器作为方波发生器,要求产生40kHz方波输出,并知CLK2时钟输入信号(xnho)频率为2MHz。试编写初始化程序。,第四十八页,共49页。,MOV DX,0307H ;向2号计数器送控制(kngzh)字,MOV AL,10110110B,OUT DX,AL,MOV AL,32H ;送初值低8位,MOV DX,0306H,OUT DX,AL,MOV AL,00H ;送初值高8位,OUT DX,AL,如何(rh)产生1Hz的时钟信号?,第四十九页,共49页。,
展开阅读全文