8052定時器T2的用法_第1頁
8052定時器T2的用法_第2頁
8052定時器T2的用法_第3頁
8052定時器T2的用法_第4頁
8052定時器T2的用法_第5頁
已閱讀5頁,還剩1頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、聲明,定時器T2只有52以上的芯片才有,51沒有的。下載 (110.23 KB)2011-5-16 16:33下載 (197.88 KB)2011-5-16 16:341 Y& . c: 6 A9 T+ v+ F* 6 j下載 (118.87 KB)2011-5-16 16:47捕捉模式在捕捉模式時,兩種操作模式由T2CON中的EXEN2位選擇。如果EXEN20,Timer2作為一個16位向上定時或計數器,當溢出時將T2CON中的TF2置1。這個標志位可以產生一個中斷。如果EXEN21,Timer2起同樣的作用,但是,外部輸入端T2EX上的下降延也可以使TH2和TL2中的值捕捉到RCAP2H和

2、RCAP2L中,另外,T2EX上的下降延可以將EXF2置1,像TF2一樣,也可以產生一個中斷。捕捉模式詳見圖5。下載 (67.65 KB)2011-5-16 16:47* g W W3 r 自動重載模式Timer2在指定為16為自動重載模式時可以編程為加計數或減計數,此功能由T2MOD中的DCEN位決定。DCEN0,計數器向上計數,默認置為0,DCEN1時,Timer2的加或減由T2EX的值決定。下載 (70.15 KB)2011-5-16 16:474 h9 b4 , q# I圖6顯示Timer2在DCEN=0時自動向上計數。在這個模式時,T2CON的EXEN2為可以選擇兩種操作。EXEN2

3、0,Timer2向上計數到0FFFFH時將TF2為置1,溢出可以把RCAP2H和RCAP2L中的16為值重新加載到定時寄存器中。捕捉模式時RCAP2H和RCAP2L中的值由軟件預先設定。EXEN21,既可以由溢出重載也可以由T2EX引腳的下降延觸發重載。TF2和EXF2都可以產生中斷。設置DCEN=1時Timer2可以向上或向下計數,如圖6所示,此模式下,T2EX腳控制計數方向。T2EX如果為1,Timer2向上計數。計數器到0FFFFH時溢出并將TF2置1。溢出可以使RCAP2H和RCAP2L中的16為值重新加載到定時寄存器中。T2EX如果為0,Timer2向下計數,當TH2和TL2中的值和

4、RCAP2H和RCAP2L相等時向下溢出。溢出使TF2置1并將0FFFFH重新加載到計時寄存器中。下載 (80.5 KB)2011-5-16 16:47下載 (91.13 KB)2011-5-16 16:470 # U N: G& h* J) W x: m a7 波特率發生器通過設置T2CON中TCLK或RCLK位選擇Timer2位波特窺測發生器Timer2作為發送和接收時可以應用于不同的波特率,設置TCLK或RCLK位使Timer2工作在波特率發生器模式,如圖8所示。波特率發生器模式和重載模式相似,TH2中值的溢出將使軟件預設的16位寄存器值重載到計數器中。波特率1、3模式由Timer2的溢

5、出速率決定,由下面的等式表示模式1、3波特率(Timer2計數值)/16定時器可以指定為計數或定時模式,在許多應用中,被設置成定時模式,Timer2的定時操作和波特率發生器的操作不同,作為定時器,它每機器周期(1/12個晶振周期)增加1,作為波特率發生器它每個狀態時間(1/2晶振周期)增加1。波特率公式如下:模式1、34 m1 q8 ) n* x) Z: 2 ?& z=晶振頻率波特率( k3 8 S1 C1 W. w) b32(65536-RCAP2H,RCAP2L)這里(RCAP2H,RCAP2L)是RCAP2H和RCAP2L作為16為無符號整數。Timer2作為波特率發生器如圖8,這個只有

6、在TCLK或者RCLK1是才有效。需要注意的是TH2的的溢出不會將TF2置1,也不會產生中斷,如果這時EXEN2置1,T2EX引腳的下降延將會使TF2置1并不會引發(RCAP2H,RCAP2L)到(TH2,TL2)的重載,那樣,當Timer2作為波特率發生器時,T2EX可以作為一個外部中斷使用。當Timer2在波特率發生器模式作為定時器運行時(TR11),TH2,TL2不能進行讀寫,在這種情況下,計時器每個狀態時間增加1,對其讀寫的結果將會不正確RACAP2寄存器可以讀不可以寫,因為寫可能引起交迭重載或者重載出錯。在處理Timer2的RACAP2寄存器前必須停止計時(TR20)。下載 (74.

7、81 KB)2011-5-16 16:47可編程時鐘輸出P1.0可以輸出50占空比的可編程時鐘,如圖9所示。這個引腳,除了作為普通的IO口,還有另外兩個交替功能,它可以編程為Timer2的外部輸入腳或者占空比50的可變時鐘輸出,在晶振16M時頻率范圍從61Hz到4MHz。Timer2指定為時鐘發生器,必須將C/T2為清0并將T2OE位置1。TR2啟動或停止計時器。輸出頻率取決于晶振頻率和Timer2的捕捉寄存器的重載值,如下面公式所示。時鐘輸出頻率晶振頻率/4(65536-(RCAP2H,RCAP2L)在時鐘輸出模式,Timer2溢出不會產生中斷,它可以同時作為波特率發生器和時鐘輸出使用,然而

8、,當他們都使用(RCAP2H,RCAP2L)時,波特率和時鐘輸出頻率不能取決于獨自的設置參數。/ M% c4 M S/ j Z$ Q8052 T2 用法詳解1、要精確定時,必須使用定時器的自動裝載方式。本實驗使用T2定時器,讓它工作在16bit自動 裝載方式,這時,有另一個位置專門裝著16位預裝載值,當T2溢出時,預裝載值立即被裝入, 這就保證了精確定時。 2、T2定時器是一個16位定時器,最長的溢出時間也就幾十毫秒,要定時1秒,就需要用一個變量 來保存溢出的次數,積累到了一定的次數后,才執行一次操作。這樣就可以累加到1秒或者更 長的時間才做一次操作。 3、當T2定時器發生溢出中斷時,需要用戶

9、自己清除溢出標記,而51的其他定時器是自動清除的。 4、T2定時器預裝載值的計算: 設晶振為12MHz,每秒鐘可以執行1000000(12000000/12)個機器周期。而T2每次溢出時最多 經過了65536個機器周期。我們應該盡量讓T2定時器的溢出中斷的次數最少,這樣對主程序的干擾 也就最小。 選擇每秒中斷14次,每次溢出1000000/14=71428.57個機器周期,不為整數且超出65536個機器周期,無效。 選擇每秒中斷16次,每次溢出1000000/16=62500個機器周期,小于65536個機器周期,有效。 選擇每秒中斷20次,每次溢出1000000/20=50000個機器周期,小于65536個機器周期,有效。 通過上面的計算,我們可以發現,我們可以選擇的方式有很多,但是最佳的是每秒中斷16次,每次 溢出62500個機器周期,那么賦給T2定時器的初值應為65536-62500=3036,轉換成十六進制值為 0x0BDC。 */*定時2中斷服務子函數*/ void timer2_init()RCAP2L=(65536-62500)%256;RCAP2H=(65536-62500)/256;TR2=1;void isr_init()ET2=1;EA=1; void Timer2

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論