使用T2定時(shí)器實(shí)現(xiàn)1秒精確定時(shí) 附有C程序 和匯編程序 先看看再說吧,,不錯(cuò)免費(fèi).doc_第1頁
使用T2定時(shí)器實(shí)現(xiàn)1秒精確定時(shí) 附有C程序 和匯編程序 先看看再說吧,,不錯(cuò)免費(fèi).doc_第2頁
使用T2定時(shí)器實(shí)現(xiàn)1秒精確定時(shí) 附有C程序 和匯編程序 先看看再說吧,,不錯(cuò)免費(fèi).doc_第3頁
使用T2定時(shí)器實(shí)現(xiàn)1秒精確定時(shí) 附有C程序 和匯編程序 先看看再說吧,,不錯(cuò)免費(fèi).doc_第4頁
使用T2定時(shí)器實(shí)現(xiàn)1秒精確定時(shí) 附有C程序 和匯編程序 先看看再說吧,,不錯(cuò)免費(fèi).doc_第5頁
已閱讀5頁,還剩4頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

使用T2定時(shí)器實(shí)現(xiàn)1秒精確定時(shí)使用T2定時(shí)器實(shí)現(xiàn)1秒精確定時(shí)2009-10-02 16:22小雨的成長中斷精確定時(shí)1S 作者 小雨 日期 2009-4-17 8:12:00這一課,我們將告訴大家如何精確定時(shí)1S。要精確定時(shí),就需要用到中斷方式,并工作在自動(dòng)重裝載方式。這里我們用到了T2定時(shí)器,它具有16位的自動(dòng)重裝載功能。我們知道,T0,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è)變量來保存溢出的次數(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/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 #define uchar unsigned char#define uint unsigned intsbit Led=P00; /定義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) /判斷是否到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);這里我們看到我們在中斷中用到了static uchar i0;定義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 i0;才對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ù)器(特殊功能寄存器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ù)器(下降沿觸發(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ù)位后T2CON是全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和外部中斷操作格式 ; T2CON.7 TF2 溢出中斷標(biāo)志位 ; T2CON.6 EXF2 外部中斷標(biāo)志位 ; T2CON.5 RCLK 串行接口接受時(shí)鐘標(biāo)志位 ; T2CON.4 TCLK 串行接口發(fā)送時(shí)鐘標(biāo)志位 ; T2CON.3 EXEN2 外部允許控制位 ; T2CON.2 TR2 運(yùn)行控制為 ; T2CON.1 C/T2 定時(shí)器/計(jì)數(shù)器功能選擇位 ; T2CON.0 CP/RL2 捕捉/重裝載標(biāo)志位T2MOD EQU 0C9H ; T2 控制寄存器,用以定時(shí)器2在裝入計(jì)數(shù)方式選擇 ; T2MOD.0 DCEN 向下計(jì)數(shù)允許位 ; T2MOD.1 T2OE T2輸出允許位TL2 EQU 0CCH ; T2 計(jì)數(shù)寄存器低字節(jié)TH2 EQU 0CDH ; T2 計(jì)數(shù)寄存器高字節(jié)TR2 EQU 0C8H.2 ; T2 啟動(dòng)位RCAP2L EQU 0CAH ; T2 計(jì)數(shù)重栽陷阱寄存器低字節(jié)RCAP2H EQU 0CBH ; T2 計(jì)數(shù)重栽陷阱寄存器高字節(jié)TF2 EQU 0C8H.7 ; 定時(shí)計(jì)數(shù)器2計(jì)滿回零溢出中斷請求標(biāo)志位ET2 EQU IE.5 ; 定時(shí)器T2中斷允許;PT2 EQU IP. ; 定時(shí)器T2的中斷優(yōu)先級控制位,不過我不確定這個(gè)具體是那一位, ; 因此空了下來,有知道的朋友請告訴我一聲 org 0000h sjmp main org 002bh sjmp timer2_isr org 0033hmain: clr p1.7 mov r0,#16 mov rcap2h,#0bh mov rcap2l,#0dch;mov th2,#0bh ;mov tl2,#0dch ;這兩句可要可不要 setb ea setb et2 mov t2con,#04h ;設(shè)置t2定時(shí)器的工作模式為16位自動(dòng)重裝載定時(shí)器方式 sjmp $timer2_isr: clr tf2 ;定時(shí)器t2不同與定時(shí)器t0和t1,它需要軟件清零 djnz r0,next cpl p1.7 mov r0,#16 ;每次退出前,對軟件計(jì)數(shù)器重裝初值 next: nop nop reti end-高準(zhǔn)確度時(shí)鐘程序算法2009-09-27 21:09作者:廣州增城市電力局(511300) 黃沛芳 來源:電子技術(shù)應(yīng)用 摘要:通過對引起實(shí)時(shí)時(shí)鐘計(jì)時(shí)誤差因數(shù)的分析,給出了一種提高實(shí)時(shí)時(shí)鐘長期計(jì)時(shí)準(zhǔn)確度的實(shí)用而有效的軟件方法。該方法具有成本低、易實(shí)現(xiàn)、通用性強(qiáng)、徹底校正等優(yōu)點(diǎn)。關(guān)鍵詞:實(shí)時(shí)時(shí)鐘 準(zhǔn)確度 定時(shí)器 軟件校正 電子計(jì)時(shí)器通常以石英晶振為時(shí)鐘源。時(shí)鐘源的頻率通常為幾十kHz乃至幾十MHz,而學(xué)用時(shí)鐘的最小計(jì)單位一般在0.01s1s。高頻的時(shí)鐘源脈沖通過分頻器后產(chǎn)生基本定時(shí)脈沖。電子計(jì)時(shí)器的計(jì)時(shí)部分就是對基本定時(shí)脈沖進(jìn)行累加,產(chǎn)生秒、分、時(shí)等時(shí)間信息乃至日、月、年等日期信息。 1 引起計(jì)時(shí)誤差的因數(shù) 一個(gè)常規(guī)電子計(jì)時(shí)器的計(jì)時(shí)準(zhǔn)確度,取決于晶振標(biāo)稱頻率(fs)與實(shí)際頻率(fo)的頻率偏差和晶振頻率的時(shí)漂、溫漂等離散參數(shù)。普通晶振的實(shí)際頻率與標(biāo)稱頻率有較大的偏差,可達(dá)萬分之五(萬分之5),折算到一天計(jì)時(shí)誤差就是43.2s。一般室內(nèi)氣溫變化在每天10左右,對應(yīng)晶振頻率溫漂5分種。若將本文算法編入計(jì)時(shí)程序中,讓用戶自己校正定時(shí)參數(shù),將大大提高各種附帶時(shí)鐘的計(jì)時(shí)準(zhǔn)確度。 將基于軟件提高實(shí)時(shí)時(shí)鐘準(zhǔn)確度的算法應(yīng)用于普通石英晶振,利用89C52 T2定時(shí)器的軟實(shí)時(shí)時(shí)鐘,未作校正每天11s;進(jìn)行軟件計(jì)時(shí)校正后,每10天的計(jì)時(shí)誤差1s。本文提出的基于軟件提高時(shí)鐘準(zhǔn)確度的算法,具有極高的實(shí)用價(jià)值。/*C52有T0 T1 T2 三個(gè)定時(shí)器 其中T2定時(shí)器比較特殊T2為16位的定時(shí)器 可以設(shè)置成自動(dòng)載入TF2中斷標(biāo)識位需要手動(dòng)清零 也就是軟件置零 這樣才能響應(yīng)下一次中斷11.0592MHZ P1為流水燈 每次中斷時(shí)間設(shè)置為20MS */#include/#include#define uchar unsigned char#define uint unsigned intvoid Time2_Init(void);void Time1_Init(void);void Time0_Init(void);ucharflag=0xf0;uintnum=0;uint di=0;uint aa=0;void main(void)Time0_Init(); Time1_Init(); Time2_Init();TR0=1; TR1=1; TR2=1;while(1) if(aa=50) flag=flag; aa=0; P1=flag; /一次定時(shí)20MSvoid Time2_Init(void) EA=1; ET2=1; / T2CON EXEN2=0; C_T2=0; TF2=0; RCAP2L=(65535-18432)%256; RCAP2H=(65535-18432)/256;void Time2(void) interrupt 5 TF2=0; aa+;/void T

溫馨提示

  • 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

提交評論