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 系列兼容而设的一种工作式,如果你觉得用得不顺手,那就干脆用第二种工
作方式。
工作方式 1
工作方式 1 是 16 位的定时/计数方式,将 M1M0 设为 01 即可,其它特性与工作方
式 0 相同。
工作方式 2
在介绍这种式方式之前先让我们思考一个问题:上一次课我们提到过任意计数及
任意定时的问题,比如我要计 1000 个数,可是 16 位的计数器要计到 65536 才满,
怎么办呢?我们讨论后得出的办法是用预置数,先在计数器里放上 64536,再来
1000 个脉冲,不就行了吗?是的,但是计满了之后我们又该怎么办呢?要知道,
计数总是持续重复的,流水线上计满后马上又要开始下一次计数,下一次的计数
还是 1000 吗?当计满并溢出后,计数器里面的值变成了 0(为什么,能参考前
面课程的说明),因此下一次将要计满 65536 后才会溢出,这可不符合要求,怎
么办?当然办法很简单,就是每次一溢出时执行一段程序(这常常是需要的,要
不然要溢出干吗?)能在这段程序中做把预置数 64536 送入计数器中的事情。所
以采用工作方式 0 或 1 都要在溢出后做一个重置预置数的工作,做工作当然就得
要时间,一般来说这点时间不算什么,可是有一些场合我们还是要计较的,所以
就有了第三种工作方式��自动再装入预置数的工作方式。