?? 定時-計數器的方式控制字.htm
字號:
size=3>,且</FONT><FONT size=3>INT1</FONT><FONT lang=ZH-CN face=宋體
size=3>引腳也是高電平,開關才合上,計數脈沖才得以通過。這個特性可以用來測量一個信號的高電平的寬度,想想看,怎么測?</FONT><FONT
lang=ZH-CN face=宋體 size=3>
<P></P></FONT></LI></OL>
<P align=justify><FONT lang=ZH-CN face=宋體 size=3>為什 么在這種模式下只用</FONT><FONT
size=3>13</FONT><FONT lang=ZH-CN face=宋體 size=3>位呢?干嗎不用</FONT><FONT
size=3>16</FONT><FONT lang=ZH-CN face=宋體 size=3>位,這是為了和</FONT><FONT
size=3>51</FONT><FONT lang=ZH-CN face=宋體 size=3>機的前輩</FONT><FONT
size=3>48</FONT><FONT lang=ZH-CN face=宋體
size=3>系列兼容而設的一種工作式,如果你覺得用得不順手,那就干脆用第二種工作方式。</FONT></P>
<OL><FONT lang=ZH-CN face=宋體 size=3>
<P align=justify></FONT>
<LI><FONT lang=ZH-CN face=宋體 size=3>工作方式</FONT><FONT size=3>1</FONT><FONT
size=3>
<P></P></FONT>
<P align=justify><FONT lang=ZH-CN face=宋體 size=3>工作方式</FONT><FONT
size=3>1</FONT><FONT lang=ZH-CN face=宋體 size=3>是</FONT><FONT
size=3>16</FONT><FONT lang=ZH-CN face=宋體 size=3>位的定時</FONT><FONT
size=3>/</FONT><FONT lang=ZH-CN face=宋體 size=3>計數方式,將</FONT><FONT
size=3>M1M0</FONT><FONT lang=ZH-CN face=宋體 size=3>設為</FONT><FONT
size=3>01</FONT><FONT lang=ZH-CN face=宋體 size=3>即可,其它特性與工作方式</FONT><FONT
size=3>0</FONT><FONT lang=ZH-CN face=宋體 size=3>相同。</FONT></P><FONT lang=ZH-CN
face=宋體 size=3>
<P align=justify></FONT></P>
<LI><FONT lang=ZH-CN face=宋體 size=3>工作方式</FONT><FONT size=3>2</FONT><FONT
size=3>
<P></P></FONT>
<P align=justify><FONT lang=ZH-CN face=宋體
size=3>在介紹這種式方式之前先讓我們思考一個問題:上一次課我們提到過任意計數及任意定時的問題,比如我要計</FONT><FONT
size=3>1000</FONT><FONT lang=ZH-CN face=宋體 size=3>個數,可是</FONT><FONT
size=3>16</FONT><FONT lang=ZH-CN face=宋體 size=3>位的計數器要計到</FONT><FONT
size=3>65536</FONT><FONT lang=ZH-CN face=宋體
size=3>才滿,怎么辦呢?我們討論后得出的辦法是用預置數,先在計數器里放上</FONT><FONT size=3>64536</FONT><FONT
lang=ZH-CN face=宋體 size=3>,再來</FONT><FONT size=3>1000</FONT><FONT lang=ZH-CN
face=宋體
size=3>個脈沖,不就行了嗎?是的,但是計滿了之后我們又該怎么辦呢?要知道,計數總是不斷重復的,流水線上計滿后馬上又要開始下一次計數,下一次的計數還是</FONT><FONT
size=3>1000</FONT><FONT lang=ZH-CN face=宋體
size=3>嗎?當計滿并溢出后,計數器里面的值變成了</FONT><FONT size=3>0</FONT><FONT lang=ZH-CN
face=宋體 size=3>(為什么,可以參考前面課程的說明),因此下一次將要計滿</FONT><FONT
size=3>65536</FONT><FONT lang=ZH-CN face=宋體
size=3>后才會溢出,這可不符合要求,怎么辦?當然辦法很簡單,就是每次一溢出時執行一段程序(這通常是需要的,要不然要溢出干嗎?)可以在這段程序中做把預置數</FONT><FONT
size=3>64536</FONT><FONT lang=ZH-CN face=宋體
size=3>送入計數器中的事情。所以采用工作方式</FONT><FONT size=3>0</FONT><FONT lang=ZH-CN face=宋體
size=3>或</FONT><FONT size=3>1</FONT><FONT lang=ZH-CN face=宋體
size=3>都要在溢出后做一個重置預置數的工作,做工作當然就得要時間,一般來說這點時間不算什么,可是有一些場合我們還是要計較的,所以就有了第三種工作方式&#0;&#0;自動再裝入預置數的工作方式。</FONT></P>
<P align=justify><FONT lang=ZH-CN face=宋體
size=3>既然要自動得新裝入預置數,那么預置數就得放在一個地方,要不然裝什么呢?那么預置數放在什么地方呢?它放在</FONT><FONT
size=3>T</FONT><FONT lang=ZH-CN face=宋體 size=3>(</FONT><FONT
size=3>0/1</FONT><FONT lang=ZH-CN face=宋體 size=3>)的高</FONT><FONT
size=3>8</FONT><FONT lang=ZH-CN face=宋體 size=3>位,那么這樣高</FONT><FONT
size=3>8</FONT><FONT lang=ZH-CN face=宋體
size=3>位不就不能參與計數了嗎?是的,在工作方式</FONT><FONT size=3>2</FONT><FONT lang=ZH-CN
face=宋體 size=3>,只有低</FONT><FONT size=3>8</FONT><FONT lang=ZH-CN face=宋體
size=3>位參與計數,而高</FONT><FONT size=3>8</FONT><FONT lang=ZH-CN face=宋體
size=3>位不參與計數,用作預置數的存放,這樣計數范圍就小多了,當然做任可事總有代價的,關鍵是看值不值,如果我根本不需要計那么多數,那么就可以用這種方式。看圖</FONT><FONT
size=3>4</FONT><FONT lang=ZH-CN face=宋體 size=3>,每當計數溢出,就會打開</FONT><FONT
size=3>T</FONT><FONT lang=ZH-CN face=宋體 size=3>(</FONT><FONT
size=3>0/1</FONT><FONT lang=ZH-CN face=宋體 size=3>)的高、低</FONT><FONT
size=3>8</FONT><FONT lang=ZH-CN face=宋體 size=3>位之間的開關,計預置數進入低</FONT><FONT
size=3>8</FONT><FONT lang=ZH-CN face=宋體
size=3>位。這是由硬件自動完成的,不需要由人工干預。</FONT></P>
<P align=justify><FONT lang=ZH-CN face=宋體
size=3>通常這種式作方式用于波特率發生器(我們將在串行接口中講解),用于這種用途時,定時器就是為了提供一個時間基準。計數溢出后不需要做事情,要做的僅僅只有一件,就是重新裝入預置數,再開始計數,而且中間不要任何延遲,可見這個任務用工作方式</FONT><FONT
size=3>2</FONT><FONT lang=ZH-CN face=宋體 size=3>來完成是最妙不過了。</FONT></P><FONT
lang=ZH-CN face=宋體 size=3>
<P align=justify></FONT></P>
<LI><FONT lang=ZH-CN face=宋體 size=3>工作方式</FONT><FONT size=3>3</FONT><FONT
size=3>
<P></P></FONT></LI></OL>
<P align=justify><FONT lang=ZH-CN face=宋體 size=3>這種式作方式之下,定時</FONT><FONT
size=3>/</FONT><FONT lang=ZH-CN face=宋體 size=3>計數器</FONT><FONT
size=3>0</FONT><FONT lang=ZH-CN face=宋體 size=3>被拆成</FONT><FONT
size=3>2</FONT><FONT lang=ZH-CN face=宋體 size=3>個獨立的定時</FONT><FONT
size=3>/</FONT><FONT lang=ZH-CN face=宋體 size=3>計數器來用。其中,</FONT><FONT
size=3>TL0</FONT><FONT lang=ZH-CN face=宋體 size=3>可以構成</FONT><FONT
size=3>8</FONT><FONT lang=ZH-CN face=宋體 size=3>位的定時器或計數器的工作方式,而</FONT><FONT
size=3>TH0</FONT><FONT lang=ZH-CN face=宋體
size=3>則只能作為定時器來用。我們知道作定時、計數器來用,需要控制,計滿后溢出需要有溢出標記,</FONT><FONT
size=3>T0</FONT><FONT lang=ZH-CN face=宋體
size=3>被分成兩個來用,那就要兩套控制及、溢出標記了,從何而來呢?</FONT><FONT size=3>TL0</FONT><FONT
lang=ZH-CN face=宋體 size=3>還是用原來的</FONT><FONT size=3>T0</FONT><FONT lang=ZH-CN
face=宋體 size=3>的標記,而</FONT><FONT size=3>TH0</FONT><FONT lang=ZH-CN face=宋體
size=3>則借用</FONT><FONT size=3>T1</FONT><FONT lang=ZH-CN face=宋體
size=3>的標記。如此</FONT><FONT size=3>T1</FONT><FONT lang=ZH-CN face=宋體
size=3>不是無標記、控制可用了嗎?是的。</FONT></P>
<P align=justify><FONT lang=ZH-CN face=宋體 size=3>一般情況處,只有在</FONT><FONT
size=3>T1</FONT><FONT lang=ZH-CN face=宋體 size=3>以工作方式</FONT><FONT
size=3>2</FONT><FONT lang=ZH-CN face=宋體 size=3>運行(當波特率發生器用)時,才讓</FONT><FONT
size=3>T0</FONT><FONT lang=ZH-CN face=宋體 size=3>工作于方式</FONT><FONT
size=3>3</FONT><FONT lang=ZH-CN face=宋體 size=3>的。</FONT></P><B>
<P align=justify><FONT lang=ZH-CN face=宋體 size=5>定時器</FONT><FONT
size=5>/</FONT><FONT lang=ZH-CN face=宋體 size=5>計數器的定時</FONT><FONT
size=5>/</FONT><FONT lang=ZH-CN face=宋體 size=5>計數范圍</FONT></P></B>
<P align=justify><FONT lang=ZH-CN face=宋體 size=3>工作方式</FONT><FONT
size=3>0</FONT><FONT lang=ZH-CN face=宋體 size=3>:</FONT><FONT
size=3>13</FONT><FONT lang=ZH-CN face=宋體 size=3>位定時</FONT><FONT
size=3>/</FONT><FONT lang=ZH-CN face=宋體 size=3>計數方式,因此,最多可以計到</FONT><FONT
size=3>2</FONT><FONT lang=ZH-CN face=宋體 size=3>的</FONT><FONT
size=3>13</FONT><FONT lang=ZH-CN face=宋體 size=3>次方,也就是</FONT><FONT
size=3>8192</FONT><FONT lang=ZH-CN face=宋體 size=3>次。</FONT></P>
<P align=justify><FONT lang=ZH-CN face=宋體 size=3>工作方式</FONT><FONT
size=3>1</FONT><FONT lang=ZH-CN face=宋體 size=3>:</FONT><FONT
size=3>16</FONT><FONT lang=ZH-CN face=宋體 size=3>位定時</FONT><FONT
size=3>/</FONT><FONT lang=ZH-CN face=宋體 size=3>計數方式,因此,最多可以計到</FONT><FONT
size=3>2</FONT><FONT lang=ZH-CN face=宋體 size=3>的</FONT><FONT
size=3>16</FONT><FONT lang=ZH-CN face=宋體 size=3>次方,也就是</FONT><FONT
size=3>65536</FONT><FONT lang=ZH-CN face=宋體 size=3>次。</FONT></P>
<P align=justify><FONT lang=ZH-CN face=宋體 size=3>工作方式</FONT><FONT
size=3>2</FONT><FONT lang=ZH-CN face=宋體 size=3>和工作方式</FONT><FONT
size=3>3</FONT><FONT lang=ZH-CN face=宋體 size=3>,都是</FONT><FONT
size=3>8</FONT><FONT lang=ZH-CN face=宋體 size=3>位的定時</FONT><FONT
size=3>/</FONT><FONT lang=ZH-CN face=宋體 size=3>計數方式,因此,最多可以計到</FONT><FONT
size=3>2</FONT><FONT lang=ZH-CN face=宋體 size=3>的</FONT><FONT
size=3>8</FONT><FONT lang=ZH-CN face=宋體 size=3>次方,也說是</FONT><FONT
size=3>256</FONT><FONT lang=ZH-CN face=宋體 size=3>次。</FONT></P><FONT lang=ZH-CN
face=宋體 size=3>
<P align=justify>預置值計算:用最大計數量減去需要的計數次數即可。</P></FONT>
<P align=justify><FONT lang=ZH-CN face=宋體 size=3>例:流水線上一個包裝是</FONT><FONT
size=3>12</FONT><FONT lang=ZH-CN face=宋體 size=3>盒,要求每到</FONT><FONT
size=3>12</FONT><FONT lang=ZH-CN face=宋體 size=3>盒就產生一個動作,用單片機的工作方式</FONT><FONT
size=3>0</FONT><FONT lang=ZH-CN face=宋體 size=3>來控制,應當預置多大的值呢?對了,就是</FONT><FONT
size=3>8192-12=8180</FONT><FONT lang=ZH-CN face=宋體 size=3>。</FONT></P>
<P align=justify><FONT lang=ZH-CN face=宋體
size=3>以上是計數,明白了這個道理,定時也是一樣。這在前面的課程已提到,我們不再重復,請參考前面的例子</FONT><FONT lang=ZH-CN
face=宋體 size=3>。</FONT> </P>
<P align=center><A href="http://www.onestudy.net/"><FONT
face=黑體>返回“一學網</FONT><FONT face="Times New Roman" color=#000000> </FONT><FONT
face="Times New Roman"><FONT color=#000000>www.</FONT><FONT
color=#ff0000>one</FONT><FONT color=#008000>study</FONT>.net</FONT><FONT
face=黑體> ”首頁</FONT></A></P>
<P align=justify> </P><FONT lang=ZH-CN face=宋體 size=3>
<P align=justify></P>
<P align=justify> </P></FONT></BODY></HTML>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -