📄 dpjjx19.htm
字号:
<p style="line-height: 150%; margin-top: 0; margin-bottom: 0"></P></font></OL>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<FONT FACE="宋体" LANG="ZH-CN" SIZE=2>为什	么在这种模式下只用</font><FONT SIZE=2>13</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>位呢?干吗不用</FONT><FONT SIZE=2>16</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>位,这是为了和</FONT><FONT SIZE=2>51</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>机的前辈</FONT><FONT SIZE=2>48</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>系列兼容而设的一种工作式,如果你觉得用得不顺手,那就干脆用第二种工作方式。</font></P><OL>
<FONT FACE="宋体" LANG="ZH-CN" SIZE=3>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0"></font><LI>
<p style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<FONT FACE="宋体" LANG="ZH-CN" SIZE=2>工作方式</font><FONT SIZE=2>1</LI></font><FONT SIZE=3></p>
<p style="line-height: 150%; margin-top: 0; margin-bottom: 0"></P>
</FONT>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<FONT FACE="宋体" LANG="ZH-CN" SIZE=2>工作方式</font><FONT SIZE=2>1</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>是</FONT><FONT SIZE=2>16</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>位的定时</FONT><FONT SIZE=2>/</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>计数方式,将</FONT><FONT SIZE=2>M1M0</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>设为</FONT><FONT SIZE=2>01</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>即可,其它特性与工作方式</FONT><FONT SIZE=2>0</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>相同。</font></P><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0"></FONT><LI>
<p style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<FONT FACE="宋体" LANG="ZH-CN" SIZE=2>工作方式</font><FONT SIZE=2>2</LI></font><FONT SIZE=3></p>
<p style="line-height: 150%; margin-top: 0; margin-bottom: 0"></P>
</FONT>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<FONT FACE="宋体" LANG="ZH-CN" SIZE=2>在介绍这种式方式之前先让我们思考一个问题:上一次课我们提到过任意计数及任意定时的问题,比如我要计</font><FONT SIZE=2>1000</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>个数,可是</FONT><FONT SIZE=2>16</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>位的计数器要计到</FONT><FONT SIZE=2>65536</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>才满,怎么办呢?我们讨论后得出的办法是用预置数,先在计数器里放上</FONT><FONT SIZE=2>64536</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>,再来</FONT><FONT SIZE=2>1000</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>个脉冲,不就行了吗?是的,但是计满了之后我们又该怎么办呢?要知道,计数总是不断重复的,流水线上计满后马上又要开始下一次计数,下一次的计数还是</FONT><FONT SIZE=2>1000</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>吗?当计满并溢出后,计数器里面的值变成了</FONT><FONT SIZE=2>0</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>(为什么,可以参考前面课程的说明),因此下一次将要计满</FONT><FONT SIZE=2>65536</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>后才会溢出,这可不符合要求,怎么办?当然办法很简单,就是每次一溢出时执行一段程序(这通常是需要的,要不然要溢出干吗?)可以在这段程序中做把预置数</FONT><FONT SIZE=2>64536</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>送入计数器中的事情。所以采用工作方式</FONT><FONT SIZE=2>0</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>或</FONT><FONT SIZE=2>1</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>都要在溢出后做一个重置预置数的工作,做工作当然就得要时间,一般来说这点时间不算什么,可是有一些场合我们还是要计较的,所以就有了第三种工作方式��自动再装入预置数的工作方式。</font></P>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<FONT FACE="宋体" LANG="ZH-CN" SIZE=2>既然要自动得新装入预置数,那么预置数就得放在一个地方,要不然装什么呢?那么预置数放在什么地方呢?它放在</font><FONT SIZE=2>T</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>(</FONT><FONT SIZE=2>0/1</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>)的高</FONT><FONT SIZE=2>8</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>位,那么这样高</FONT><FONT SIZE=2>8</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>位不就不能参与计数了吗?是的,在工作方式</FONT><FONT SIZE=2>2</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>,只有低</FONT><FONT SIZE=2>8</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>位参与计数,而高</FONT><FONT SIZE=2>8</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>位不参与计数,用作预置数的存放,这样计数范围就小多了,当然做任可事总有代价的,关键是看值不值,如果我根本不需要计那么多数,那么就可以用这种方式。看图</FONT><FONT SIZE=2>4</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>,每当计数溢出,就会打开</FONT><FONT SIZE=2>T</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>(</FONT><FONT SIZE=2>0/1</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>)的高、低</FONT><FONT SIZE=2>8</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>位之间的开关,计预置数进入低</FONT><FONT SIZE=2>8</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>位。这是由硬件自动完成的,不需要由人工干预。</font></P>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<FONT FACE="宋体" LANG="ZH-CN" SIZE=2>通常这种式作方式用于波特率发生器(我们将在串行接口中讲解),用于这种用途时,定时器就是为了提供一个时间基准。计数溢出后不需要做事情,要做的仅仅只有一件,就是重新装入预置数,再开始计数,而且中间不要任何延迟,可见这个任务用工作方式</font><FONT SIZE=2>2</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>来完成是最妙不过了。</font></P><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0"></FONT><LI>
<p style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<FONT FACE="宋体" LANG="ZH-CN" SIZE=2>工作方式</font><FONT SIZE=2>3</LI></font><FONT SIZE=3></p>
<p style="line-height: 150%; margin-top: 0; margin-bottom: 0"></P></font></OL>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<FONT FACE="宋体" LANG="ZH-CN" SIZE=2>这种式作方式之下,定时</font><FONT SIZE=2>/</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>计数器</FONT><FONT SIZE=2>0</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>被拆成</FONT><FONT SIZE=2>2</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>个独立的定时</FONT><FONT SIZE=2>/</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>计数器来用。其中,</FONT><FONT SIZE=2>TL0</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>可以构成</FONT><FONT SIZE=2>8</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>位的定时器或计数器的工作方式,而</FONT><FONT SIZE=2>TH0</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>则只能作为定时器来用。我们知道作定时、计数器来用,需要控制,计满后溢出需要有溢出标记,</FONT><FONT SIZE=2>T0</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>被分成两个来用,那就要两套控制及、溢出标记了,从何而来呢?</FONT><FONT SIZE=2>TL0</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>还是用原来的</FONT><FONT SIZE=2>T0</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>的标记,而</FONT><FONT SIZE=2>TH0</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>则借用</FONT><FONT SIZE=2>T1</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>的标记。如此</FONT><FONT SIZE=2>T1</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>不是无标记、控制可用了吗?是的。</font></P>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<FONT FACE="宋体" LANG="ZH-CN" SIZE=2>一般情况处,只有在</font><FONT SIZE=2>T1</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>以工作方式</FONT><FONT SIZE=2>2</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>运行(当波特率发生器用)时,才让</FONT><FONT SIZE=2>T0</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>工作于方式</FONT><FONT SIZE=2>3</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>的。</font></P>
<B>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<FONT FACE="宋体" LANG="ZH-CN" SIZE=2>定时器</font><FONT SIZE=2>/</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>计数器的定时</FONT><FONT SIZE=2>/</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>计数范围</font></P>
</B>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<FONT FACE="宋体" LANG="ZH-CN" SIZE=2>工作方式</font><FONT SIZE=2>0</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>:</FONT><FONT SIZE=2>13</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>位定时</FONT><FONT SIZE=2>/</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>计数方式,因此,最多可以计到</FONT><FONT SIZE=2>2</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>的</FONT><FONT SIZE=2>13</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>次方,也就是</FONT><FONT SIZE=2>8192</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>次。</font></P>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<FONT FACE="宋体" LANG="ZH-CN" SIZE=2>工作方式</font><FONT SIZE=2>1</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>:</FONT><FONT SIZE=2>16</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>位定时</FONT><FONT SIZE=2>/</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>计数方式,因此,最多可以计到</FONT><FONT SIZE=2>2</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>的</FONT><FONT SIZE=2>16</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>次方,也就是</FONT><FONT SIZE=2>65536</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>次。</font></P>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<FONT FACE="宋体" LANG="ZH-CN" SIZE=2>工作方式</font><FONT SIZE=2>2</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>和工作方式</FONT><FONT SIZE=2>3</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>,都是</FONT><FONT SIZE=2>8</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>位的定时</FONT><FONT SIZE=2>/</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>计数方式,因此,最多可以计到</FONT><FONT SIZE=2>2</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>的</FONT><FONT SIZE=2>8</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>次方,也说是</FONT><FONT SIZE=2>256</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>次。</font></P>
<FONT FACE="宋体" LANG="ZH-CN" SIZE=2>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">预置值计算:用最大计数量减去需要的计数次数即可。</P>
</FONT>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<FONT FACE="宋体" LANG="ZH-CN" SIZE=2>例:流水线上一个包装是</font><FONT SIZE=2>12</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>盒,要求每到</FONT><FONT SIZE=2>12</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>盒就产生一个动作,用单片机的工作方式</FONT><FONT SIZE=2>0</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>来控制,应当预置多大的值呢?对了,就是</FONT><FONT SIZE=2>8192-12=8180</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>。</font></P>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<FONT FACE="宋体" LANG="ZH-CN" SIZE=2>以上是计数,明白了这个道理,定时也是一样。这在前面的课程已提到,我们不再重复,请参考前面的例子。</font><font size="2">
</font>
</P>
<FONT FACE="宋体" LANG="ZH-CN" SIZE=3>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0"></P>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0"> </P></FONT></BODY>
</HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -