Timer2中斷精確定時1S_第1頁
Timer2中斷精確定時1S_第2頁
Timer2中斷精確定時1S_第3頁
Timer2中斷精確定時1S_第4頁
Timer2中斷精確定時1S_第5頁
已閱讀5頁,還剩4頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、Timer2 中斷精確定時 1STimer2 中斷精確定時 1S我們常用51的TO或T1,而89C52擁有3個定時/計數 器,有些人還很少甚至沒有用過 T2.要精確定時,就需要用到中斷方式,并工作在自動重 裝載方式。這里我們用到了 T2 定時器,它具有 16 位的自動 重裝載功能。我們知道, TO,T1 的自動重裝載功能都是 8 位 的,用它們將會帶來很大的誤差。 T2 定時器, 它有一個專門 的自動重裝載寄存器,當計數滿了以后,它將我們預置進去 的數自動的載入 TH2,TL2 這樣就都很好的保證精確定時。 我們用的是 12MHZ 的晶振。就算是計滿也只有幾十毫秒。 要定時一秒,就需要一個變量

2、來保存溢出的次數,積累到了 多少次之后,才執(zhí)行一次操作。這樣就可以累加到 1 秒或者 更長的時間才做一次操作了。T2 寄存器還有一個和其他寄存器不一樣的地方, 就是它的中 斷標志位 TF2 要軟件清零?,F(xiàn)在我們來計算一下,要精確定時,那么,進去中斷的次數 是越少越好,這樣,數據更精確,還能很好的防止對主函數 的影響。T2 定時器預裝載值的計算:設晶振為 12MHz ,每秒鐘可以執(zhí)行 1000000(12000000/12 ) 個機器周期。而 T2 每次溢出時最多經過了 65536 個機器周 期。我們應該盡量讓 T2 定時器的溢出中斷的次數最少。 選擇每秒中斷 14 次,每次溢出 1000000

3、/14=71428.57 個機器 周期,不為整數且超出65536 。選擇每秒中斷 16 次,每次溢出 1000000/16=62500 個機器周 期,小于 65536,有效。選擇每秒中斷 20 次,每次溢出 1000000/20=50000 個機器周 期,小于 65536,有效。其他的就不再算了,我們通過上面的計算,我們可以發(fā)現(xiàn), 我們可以選擇的方式有很多,但是最佳的是每秒中斷 16 次, 每次溢出 62500 個機器周期。下面看程序: i nclude <reg52.h>#define uchar unsigned char#define uint unsigned intsbi

4、t Led=P0A0;/定義 LED 位void Timer2() interrupt 5/調用定時器 2,自動重裝載模式static uchar i=0;/定義靜態(tài)變量 iTF2=0;/定時器 2 的中斷標志要軟件清 0i+;/ 計數標志自加 1if(i=16)r/判斷是否到 1si=0;/ 將靜態(tài)變量清 0Led=Led;/LED 位求反void main()RCAP2H=(65536-62500)/256; / 重裝載計數器賦初值RCAP2L=(65536-62500)%256;ET2=1;/開定時器2 中斷EA=1;/開總中斷TR2=1;/開啟定時器,并設置為自動重裝載模while(1

5、);這里我們看到我們在中斷中用到了static uchar i = 0;定義i為靜態(tài)函數。靜態(tài)函數的特點:函數值在調用結束后不消失保留原值,即其占用的存儲單元不釋放。在下一次該函數調用時,該變量已有值,就是上一次的函數調用結束時的值。它 只賦一次初值。也就是說,只有在第一次進入中斷時static uchar i = 0;才對i賦初值,在以后進入中斷執(zhí)行這句時,不會對 i 賦值。這里重點給大家講講我們開發(fā)板上 STC 單片機的 T2 定時器 的用法。定時器 2 是一個 16 位定時 / 計數器。通過設置特殊功能寄 存器 T2CON 中的 C/T2 位,可將其作為定時器或計數器 (特 殊功能寄存器

6、 T2CON 的描述如表 1 所列)。定時器 2 有 3 種操作模式:捕獲、自動重新裝載(遞增或遞減計數)和波 特率發(fā)生器,這 3 種模式由 T2CON 中的位進行選擇。這里我只將和我們遞增計數自動重裝載功能有關的幾個寄 存器,關于 T2 的其他功能,大家可以參看官方的一些資料。 TF2 定時器 2 溢出標志。定時器 2 溢出時置位,必須由 軟件清除。當 RCLK 或 TCLK=1 時, TF2 將不會置位。 TR2 定時器 2 啟動 / 停止控制位。置 1 時啟動定時器。 C/T2 定時器 / 計數器選擇。 (定時器 2)0= 內部定時器( OSC/12 或 OSC/6 )1= 外部事件計數

7、器(下降沿觸發(fā))CP/RL2捕獲/ 重裝標志。置位: EXEN2=1 時, T2EX 的負跳變產生捕獲。清 零: EXEN2=0 時,定時器 2 溢出或 T2EX 的負跳變都可使定時器自動重裝。當 RCLK=1 或 TCLK=1 時,該位無效且定時器強制為溢出時自動重裝。RCAP2H,RCAP2L 是定時器 T2 一個專門存放預置數的 寄存器。定時器 2 遞增計數到 0FFFFH ,并在溢出后將 TF2 置位,然后將 RCAP2L 和 RCAP2H 中的 16 位值作為重新 裝載值裝入定時器 2。 RCAP2L 和 RCAP2H 的值是通過軟 件預設的。從表一,表二可以看到,因為我們復位后 T

8、2CON 是全 0 。所以,只要我們設制好預置數,開好中斷,再將TR2置為 1,就能啟動 T2 的遞增計數自動重載功能了。 下面匯編程序是由嚴復平會員寫,非常感謝! ! *,*;51 匯編 定時器 T2 精確 1s 定時程序 ;功能:使用 T2 定時器實現(xiàn) 1 秒精確定時并閃燈 ;晶振: 12MHz;芯片: AT89S52;作者: Jurassic_K.M;日期: 2009 年 2 月 24 日 *,*;keil 默認情況下只能認識標準的 8051 的寄存器, T2 不再此 列,需要手動加入寄存器定義T2CON EQU 0C8H ; T2 控制寄存器 ,用以程 控定時器 2 和外部中斷操作格式

9、; T2CON.7TF2 溢出中斷標志位; T2CON.6EXF2 外部中斷標志位; T2CON.5RCLK 串行接口接受時鐘標志位; T2CON.4TCLK 串行接口發(fā)送時鐘標志位; T2CON.3EXEN2 外部允許控制位; T2CON.2TR2 運行控制為; T2CON.1C/T2 定時器 /計數器功能選擇位; T2CON.0CP/RL2 捕捉 /重裝載標志位T2MOD EQU 0C9H器 2 在裝入計數方式選擇DCEN 向下計數允許位T2OE T2 輸出允許位TL2EQU0CCHTH2EQU0CDHTR2EQU0C8H.2RCAP2LEQU0CAH低字節(jié)RCAP2HEQU0CBH高字節(jié)

10、TF2EQU0C8H.7溢出中斷請求標志位ET2EQUIE.5;PT2EQUIP.; T2 控制寄存器 ,用以定時; T2MOD.0; T2MOD.1; T2 計數寄存器低字節(jié); T2 計數寄存器高字節(jié); T2 啟動位; T2 計數重栽陷阱寄存器; T2 計數重栽陷阱寄存器; 定時計數器 2 計滿回零; 定時器 T2 中斷允許; 定時器 T2 的中斷優(yōu)先級控制位,不過我不確定這個具體是那一位,; 因此空了下來,有知道的朋友請告訴我一聲org 0000hsjmp mainorg 002bhsjmp timer2_isrorg 0033hmain:clr p1.7mov r0,#16mov rcap2h,#0bhmov rcap2l,#0dch;mov th2,#0bh ;mov tl2,#0dch;這兩句可要可不要setb easetb et2mov t2c

溫馨提示

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

評論

0/150

提交評論