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

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

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

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

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

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

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

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

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

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

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

10、TF2EQU0C8H.7溢出中斷請求標(biāo)志位ET2EQUIE.5;PT2EQUIP.; T2 控制寄存器 ,用以定時(shí); T2MOD.0; T2MOD.1; T2 計(jì)數(shù)寄存器低字節(jié); T2 計(jì)數(shù)寄存器高字節(jié); T2 啟動(dòng)位; T2 計(jì)數(shù)重栽陷阱寄存器; T2 計(jì)數(shù)重栽陷阱寄存器; 定時(shí)計(jì)數(shù)器 2 計(jì)滿回零; 定時(shí)器 T2 中斷允許; 定時(shí)器 T2 的中斷優(yōu)先級控制位,不過我不確定這個(gè)具體是那一位,; 因此空了下來,有知道的朋友請告訴我一聲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)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論