<meta name="keywords" content="必胜时时彩开户,keywords" /> 17课:单片机准时器/计数器的要领控制字 联系我们

17课:单片机准时器/计数器的要领控制字

    从上一节我们曾经得知,单片机中的准时/计数器都能有多种用处,那么我怎样才干让它们使命于我所须要的用处呢?这就要经由历程准时/计数器的要领控制字来设置。

在单片机中有两个特殊功效存放器与准时/计数有关,这就是TMOD和TCON。顺便说一下,TMOD和TCON是称谓,我们在写法式模范模范时便可以直接用这个称谓来指定它们,虽然也能直接用它们的地址89H和88H来指定它们(着适用称谓也就是直接用地址,汇编软件帮你翻译一下而已)。


<TMOD结构>

从图1中我们能看出,TMOD被分红两部门,每部门4位。划分用于控制T1和T0,至于这外面是甚么意思,我们下面简介。


<TCON结构>

从图2中我们能看出,TCON也被分红两部门,高4位用于准时/计数器,低4位则用于中止(我们暂岂论)。而TF1(0)我们上节课已提到了,当计数溢出后TF1(0)就由0酿成1。原来TF1(0)在这儿!那么TR0、TR1又是甚么呢?看上节课的图。

计数脉冲要进入计数器还真不不难,有层层关要经由历程,最最少,就是TR0(1)要为1,开关才干合上,脉冲才干已往。是以,TR0(1)称之为运转控制位,可用指令SETB来置位以启动计数器/准时器运转,用指令CLR来关闭准时/计数器的使命,一切尽在自已的控制中。


<单片机准时器/计数器结构>

准时/计数器的四种使命要领

使命要领0

准时器/计数器的使命要领0称之为13位准时/计数要领。它由TL(1/0)的低5位和TH(0/1)的8位组成13位的计数器,此时TL(1/0)的高3位未用。

我们用这个图来议论辩说几个效果:

M1M0:准时/计数器一共有四种使命要领,就是用M1M0来控制的,2位正好是四种组合。

C/T:前面我们说过,准时/计数器便可作准时用也可用计数用,现实作甚么用,由我们凭证须要自行决议,也说是决议权在我们&#0;&#0;编程者。假定C/T为0就是用作准时器(开关往上打),假定C/T为1就是用作计数器(开关往下打)。顺便提一下:一个准时/计数器统一时间要么作准时用,要么作计数用,不克不及同时用的,这是个极浅易的知识,简直没有课本会提这一点,但许多泉源学习者却会有此嫌疑。

GATE:看图,当我们选择了准时或计数使命要领后,准时/计数脉冲却不用定能到达计数器端,中央尚有一个开关,显着这个开关不合上,计数脉冲就没法之前,那么开关甚么时间之前呢?有两种情形

GATE=0,剖析一下逻辑,GATE非后是1,进入或门,或门总是输入1,和或门的此外一个输入端INT1有关,在这类情形下,开关的掀开、合上只取决于TR1,只需TR1是1,开关就合上,计数脉冲得以通行无阻,而假定TR1即是0则开关掀开,计数脉冲没法经由历程,是以准时/计数能否使命,只取决于TR1。

GATE=1,在此种情形下,计数脉冲通路上的开关不只需由TR1来控制,而且还要遭到INT1管脚的控制,只需TR1为1,且INT1管脚也是高电平,开关才合上,计数脉冲才得以经由历程。这个特点能用来丈量一个旌旗暗记的高电平的宽度,想想看,怎样测?

为什 么在这类形式下只用13位呢?干吗不用16位,这是为了和51机的先进48系列兼容而设的一种使命式,假定你以为用得不伏手,那就爽性用第二种使命要领。

使命要领1

使命要领1是16位的准时/计数要领,将M1M0设为01便可,其它特点与使命要领0类似。

使命要领2

在简介这类式要领之前先让我们思虑一个效果:上一次课我们提到过随便任性计数及随便任性准时的效果,好比我要计1000个数,可是16位的计数器要计到65536才满,怎样办呢?我们议论辩说后得出的措施是用预置数,先在计数器里放上64536,再来1000个脉冲,不就好了吗?是的,但是计满了以后我们又该怎样办呢?要知道,计数总是一连重复的,流水线上计满后立时又要泉源下一次计数,下一次的计数还是1000吗?当计满并溢出后,计数器外面的值酿成了0(为甚么,能参考前面课程的诠释),是以下一次将要计满65536后才会溢出,这可不切合请求,怎样办?虽然措施很质朴,就是每次一溢出时推行一段法式模范模范(这经常是须要的,要否则要溢出干吗?)能在这段法式模范模范中做把预置数64536送入计数器中的使命。以是接纳使命要领0或1都要在溢出后做一个重置预置数的使命,唱使命虽然就得要时间,浅易来讲这点时间不算甚么,可是有一些场所我们还是要盘算的,以是就有了第三种使命要领&#0;&#0;自动再装入预置数的使命要领。

既然要自动得新装入预置数,那么预置数就得放在一个地方,要否则装甚么呢?那么预置数放在甚么地方呢?它放在T(0/1)的高8位,那么这样高8位不就不克不及加入计数了吗?是的,在使命要领2,只需低8位加入计数,而高8位不加入计数,用作预置数的存放,这样计数规模就小多了,虽然做任可事总有价值的,要害是看值不值,假定我基本不须要计那么多数,那么便可以用这类要领。看图4,每当计数溢出,就会掀开T(0/1)的高、低8位之间的开关,计预置数进入低8位。这是由硬件自动完成的,不须要由人工干预干与干与。

经常这类式作要领用于波特率发生器(我们将在串行接口中解说),用于这类用处时,准时器就是为了供应一个时间基准。计数溢出后不须要唱使命,要做的仅仅只需一件,就是重新装入预置数,再泉源计数,而且中央不要任何延迟,可见这个义务用使命要领2来完成是最妙不外了。

使命要领3

这类式作要领之下,准时/计数器0被拆成2个自力的准时/计数器来用。其中,TL0能组成8位的准时器或计数器的使命要领,而TH0则只能作为准时器来用。我们知道作准时、计数器来用,须要控制,计满后溢出须要有溢出标志,T0被分红两个来用,那就要两套控制及、溢出标志了,从何而来呢?TL0还是用原来的T0的标志,而TH0则借用T1的标志。云云T1不是无标志、控制可用了吗?是的。

浅易情形处,只需在T1以使命要领2运转(当波特率发生器用)时,才让T0使命于要领3的。

准时器/计数器的准时/计数规模

使命要领0:13位准时/计数要领,是以,最多能计到2的13次方,也就是8192次。

使命要领1:16位准时/计数要领,是以,最多能计到2的16次方,也就是65536次。

使命要领2和使命要领3,都是8位的准时/计数要领,是以,最多能计到2的8次方,也说是256次。

预置值盘算:用最年夜计数目减去须要的计数次数便可。

例:流水线上一个包装是12盒,请求每到12盒就发生一个行动,用单片机的使命要领0来控制,应当预置多年夜的值呢?对了,就是8192-12=8180。

以上是计数,明确了这个事理,准时也是一样。这在前面的课程已提到,我们不再重复,请参考前面的例程。