?? 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>位不參與計數,用作預置數的存放,這樣計數范圍就小多了,當然做任可事總有代價的,關鍵是看值不值,如果我根本不需要計那么多數,那么就可以用這種方式??磮D</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 + -