一.TMOD:守时器计数度器形式寄存器
M1M0:守时/计数器一共有四种作业方法,便是用M1M0来操控的,2位正好是四种组合。
1.作业方法1
作业方法1是16位的守时/计数方法,将M1M0设为01即可,其它特性与作业方法0相同。
作业方法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来完结是最妙不过了。
作业方法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次。
预置值核算:用最大计数量减去需求的计数次数即可。
C/T: 前面咱们说过,守时/计数器即可作守时用也可用计数用,究竟作什么用,由咱们根据需求自行决定,也说是决定权在咱们编程 者。假如C/T为0便是用作守时器(开关往上打),假如C/T为1便是用作计数器(开关往下打)。趁便提一下:一个守时/计数器同一时间要么作守时用,要 么作计数用,不能一起用的,这是个极一般的知识,几乎没有教材会提这一点,但许多初学者却会有此困惑。
GATE:看图,当咱们挑选了守时或计数作业方法后,守时/计数脉冲却不一定能抵达计数器端,中心还有一个开关,明显这个开关不合上,计数脉冲就无法曩昔,那么开关什么时候曩昔呢?有两种状况
1.GATE =0,剖析一下逻辑,GATE非后是1,进入或门,或门总是输出1,和或门的另一个输入端INT1无关,在这种状况下,开关的翻开、合上只取决于TR1, 只需TR1是1,开关就合上,计数脉冲得以四通八达,而假如TR1等于0则开关翻开,计数脉冲无法经过,因而守时/计数是否作业,只取决于TR1。
GATE=1,在此种状况下,计数脉冲通路上的开关不只要由TR1来操控,并且还要遭到INT1引脚的操控,只需TR1为1,且INT1引脚也是高电平,开关才合上,计数脉冲才得以经过。这个特性能够用来丈量一个信号的高电平的宽度,想想看,怎样测?
二.TCON:守时器计数度器操控寄存器
1.中止恳求源:
(1)外部中止恳求源:即外中止0和1,经由外部引脚引进的,在单片机上有两个引脚,名称为INT0、INT1,也便是P3.2、P3.3这两个引脚。在内部的TCON中有四位是与外中止有关的。
IT0:INT0触发方法操控位,可由软件进和置位和复位,IT0=0,INT0为低电平触发方法,IT0=1,INT0为负跳变触发方法。这两种方法的差异将在今后再谈。
IE0:INT0中止恳求标志位。当有外部的中止恳求时,这位就会置1(这由硬件来完结),在CPU呼应中止后,由硬件将IE0清0。
IT1、IE1的用处和IT0、IE0相同。
(2)内部中止恳求源
TF0:守时器T0的溢出中止符号,当T0计数发生溢出时,由硬件置位TF0。当CPU呼应中止后,再由硬件将TF0清0。
TF1:与TF0相似。
TI、RI:串行口发送、接纳中止
三.中止答应寄存器IE
在MCS-51中止体系中,中止的答应或制止是由片内可进行位寻址的8位中止答应寄存器IE来操控的。见下表
EA
总开关
X
X
ES
串行口中止答应
ET1
守时器1中止答应
EX1
外中止1中止答应
ET0
守时器0中止答应
EX0
外中止0中止答应
其间EA是总开关,假如它等于0,则一切中止都不答应。
ES-串行口中止答应
ET1-守时器1中止答应
EX1-外中止1中止答应。
ET0-守时器0中止答应
EX0-外中止0中止答应
四.中止优先级寄存器IP
中止优先级中由中止优先级寄存器IP来高置的,IP中某位设为1,相应的中止便是高优先级,不然便是低优先级。
X
X
X
PS
串口
PT1
守时器1
PX1
外中止1
PT0
守时器0
PX0
外中止0
五个中止源的恳求地址
外中止0:0003H
守时器0:000BH
外中止1:0013H
守时器1:001BH
串口:0023H