1 作业方法0
守时器/计数器的作业方法0称之为13位守时/计数方法。它由TL(1/0)的低5位和TH(0/1)的8位组成13位的计数器,此刻TL(1/0)的高3位未用。
咱们用这个图来评论几个问题:
M1M0:守时/计数器一共有四种作业方法,便是用M1M0来操控的,2位正好是四种组合。
C/T:前面咱们说过,守时/计数器即可作守时用也可用计数用,究竟作什么用,由咱们根据需求自行决定,也说是决定权在咱们��编程者。假如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系列兼容而设的一种作业式,假如你觉得用得不顺手,那就爽性用第二种作业方法。
2 作业方法1
作业方法1是16位的守时/计数方法,将M1M0设为01即可,其它特性与作业方法0相同。
3 作业方法2
在介绍这种式方法之前先让咱们考虑一个问题:上一次课咱们提到过恣意计数及恣意守时的问题,比方我要计1000个数,可是16位的计数器要计到65536才满,怎样办呢?咱们评论后得出的方法是用预置数,先在计数器里放上64536,再来1000个脉冲,不就行了吗?是的,可是计满了之后咱们又该怎样办呢?要知道,计数总是继续重复的,流水线上计满后立刻又要开端下一次计数,下一次的计数仍是1000吗?当计满并溢出后,计数器里边的值变成了0(为什么,能参阅前面课程的阐明),因而下一次即将计满65536后才会溢出,这可不符合要求,怎样办?当然方法很简单,便是每次一溢出时履行一段程序(这常常是需求的,要不然要溢出干吗?)能在这段程序中做把预置数64536送入计数器中的作业。所以选用作业方法0或1都要在溢出后做一个重置预置数的作业,做作业当然就得要时刻,一般来说这点时刻不算什么,可是有一些场合咱们仍是要计较的,所以就有了第三种作业方法��主动再装入预置数的作业方法。
已然要主动得新装入预置数,那么预置数就得放在一个当地,要不然装什么呢?那么预置数放在什么当地呢?它放在T(0/1)的高8位,那么这样高8位不就不能参加计数了吗?是的,在作业方法2,只要低8位参加计数,而高8位不参加计数,用作预置数的寄存,这样计数规模就小多了,当然做任可事总有价值的,关键是看值不值,假如我底子不需求计那么大都,那么就能用这种方法。看图4,每逢计数溢出,就会翻开T(0/1)的高、低8位之间的开关,计预置数进入低8位。这是由硬件主动完结的,不需求由人工干预。
常常这种式作方法用于波特率产生器(咱们将在串行接口中解说),用于这种用处时,守时器便是为了供应一个时刻基准。计数溢出后不需求做作业,要做的只是只要一件,便是从头装入预置数,再开端计数,并且中心不要任何推迟,可见这个使命用作业方法2来完结是最妙不过了。
4 作业方法3
这种式作方法之下,守时/计数器0被拆成2个独立的守时/计数器来用。其间,TL0能组成8位的守时器或计数器的作业方法,而TH0则只能作为守时器来用。咱们知道作守时、计数器来用,需求操控,计满后溢出需求有溢出符号,T0被分红两个来用,那就要两套操控及、溢出符号了,从何而来呢?TL0仍是用本来的T0的符号,而TH0则借用T1的符号。如此T1不是无符号、操控可用了吗?是的。
一般状况处,只要在T1以作业方法2运转(当波特率产生器用)时,才让T0作业于方法3的。