51單片機(jī)定時(shí)器初值的計(jì)算_第1頁(yè)
51單片機(jī)定時(shí)器初值的計(jì)算_第2頁(yè)
51單片機(jī)定時(shí)器初值的計(jì)算_第3頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余1頁(yè)可下載查看

下載本文檔

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

文檔簡(jiǎn)介

1、51單片機(jī)定時(shí)器初值的計(jì)算一。10MS定時(shí)器初值的計(jì)算:晶振12M12MHz除12為1MHi也就是說(shuō)一秒=1000000次機(jī)器周期。10ms=10000次機(jī)器周期。65536-10000=55536(d8f0)TH0=0xd8,TL0=0xf0晶振11.0592M11.0592MHz除12為921600Hz,就是一秒921600次機(jī)器周期,10ms=9216次機(jī)器周期。65536-9216=56320(dc00)TH0=0xdc,TL0=0x00二。50MS定時(shí)器初值的計(jì)算:晶振12M12MHz除12為1MHz;也就是說(shuō)一秒=1000000次機(jī)器周期。50ms=50000次機(jī)器周期。65536

2、-50000=15536(3cb0)TH0=0x3c,TL0=0xb0晶振11.0592M11.0592MHz除12為921600Hz,就是一秒921600次機(jī)器周期,50ms=46080次機(jī)器周期。65536-46080=19456(4c00)TH0=0x4c,TL0=0x00三。使用說(shuō)明以12M晶振為例:每秒鐘可以執(zhí)行1000000次機(jī)器周期個(gè)機(jī)器周期。而T每次溢出最多65536個(gè)機(jī)器周期。我們盡量應(yīng)該讓溢出中斷的次數(shù)最少(如50ms),這樣對(duì)主程序的干擾也就最小。開(kāi)發(fā)的時(shí)候可能會(huì)根據(jù)需要更換不同頻率的晶振(比如c51單片機(jī),用11.0592M的晶振,很適合產(chǎn)生串口時(shí)鐘,而12M晶振很方便

3、計(jì)算定時(shí)器的時(shí)間),使用插接式比較方便。51單片機(jī)12M和11.0592M晶振定時(shí)器初值計(jì)算2011-01-0422:25at89s52,晶振頻率12m其程序如下:引用代碼:#include<stdio.h>#include<reg51.h>voidtimer0_init()TMOD=0x01;/方式1TL0=0xb0;TH0=0x3c;TR0=1;ET0=1;voidtimer0_ISR(void)interrupt1TL0=0xb0;TH0=0x3c;/50ms中斷一次single+;if(single=20)kk+;single=0;voidmain()intkk

4、=0;/計(jì)數(shù)器intsingle=0;timer0_init();TL0=0xb0;TH0=0x3c;這兩個(gè)是怎么算出來(lái)得如果晶振不是12Mhz是11.0592MHz怎么算12M的晶振每秒可產(chǎn)生1M個(gè)機(jī)器周期,50ms就需要50000個(gè)機(jī)器周期,定時(shí)器在方式1工作,是16位計(jì)數(shù)器,最大值為65536,所以需設(shè)置初值15536,即3CB0H(10ffi制15536轉(zhuǎn)換成16進(jìn)制數(shù)3CB0),所以TH0=0x3qTL0=0xb0=(65536-50000周期=初值15536)高位就是TH0的值,低位為T(mén)L0的值11.0592M的晶振每秒可產(chǎn)生0.9216M個(gè)機(jī)器周期,50ms就需要46080個(gè)機(jī)器

5、周期,定時(shí)器在方式1工作,是16位計(jì)數(shù)器,最大值為65536,所以需設(shè)置初值19456,即4C00H所以TH0=0x4qTL0=0x00=其實(shí)很簡(jiǎn)單,不管你使用多大的晶振,使用51單片機(jī),一般都是12分頻出來(lái),也就可以得出一個(gè)機(jī)器周期機(jī)器周期=12/n(n指晶振頻率),假設(shè)你要定時(shí)的時(shí)間為M那么定時(shí)的初值為:M/機(jī)器周期=初值;TH0=(65536-初值)256TL0=(65536-初值)/256;將(65536-初值)所得的值化成16進(jìn)制,其高位就是TH0的值,低位為T(mén)L0的值例如用12M晶振做1ms定時(shí)計(jì)算如下:機(jī)器周期=12/12*10A6=1us(微秒)定時(shí)初值=(1*10A-3)/(

6、1*10A-6)=1000;所以:TH0=(65536-1000)%256TL0=(65536-1000)/256;將65536-1000=64536化為16進(jìn)制為:0xFC18TH0=0xFC;TL0=0X18;單片機(jī)T2定時(shí)器實(shí)現(xiàn)1秒精確定時(shí)程序日期:2008-07-29來(lái)源:東哥單片機(jī)學(xué)習(xí)網(wǎng)作者:佚名字體(投遞新聞)* 單片機(jī)T2定時(shí)器實(shí)現(xiàn)1秒精確定時(shí)程序/*文件名:test.c*功能:使用T2定時(shí)器實(shí)現(xiàn)1秒精確定時(shí)并閃燈1.CPU型號(hào):AT89S522.晶振:12.000MHz*在進(jìn)入函數(shù)時(shí)是不會(huì)被*/#include"reg52.h/包含頭文#defineuintunsig

7、nedint#defineucharunsignedcharsbitP1._7=P1A7;件變量/定義位/* 函數(shù)名稱:Timer2_Server()*功能:定時(shí)器2溢出中斷。入口參數(shù):無(wú)出口參數(shù):無(wú)注意:在本函數(shù)中設(shè)置了一個(gè)靜態(tài)變量Timer2_Server_Count靜態(tài)變量的值初始化的,而是保持上次的值。它用來(lái)計(jì)數(shù)T2定時(shí)器的溢出次數(shù)(進(jìn)入本函數(shù)的次數(shù)),每溢出16次,就控制一次LED11反轉(zhuǎn)顯示。這時(shí)的時(shí)間正好是1秒,而且是精確的1秒!只與晶振的精度有關(guān)。*/voidTimer2_Server(void)interrupt5(staticuintTimer2_Server_Count;

8、/定義靜態(tài)變量,用來(lái)計(jì)數(shù)T2定時(shí)器的溢出次數(shù)(進(jìn)入本函數(shù)的次數(shù))TF2=0;/T2定時(shí)器發(fā)生溢出中斷時(shí),需要用戶自己清除溢出標(biāo)記,而51的其他定時(shí)器是自動(dòng)清除的?Timer2_Server_Count+;if(Timer2_Server_Count=16)/T2定時(shí)器的預(yù)裝載值為0X0BDG溢出16次就是1秒鐘。(Timer2_Server_Count=0;P1_7=P1_7;/LED11反轉(zhuǎn)顯示。*函數(shù)名稱:main()能:使用T2定時(shí)器實(shí)現(xiàn)1秒精確定時(shí)并使LED11閃燈,即LED11亮1秒,滅1秒,亮1秒,滅1秒啟、:1、要精確定時(shí),必須使用定時(shí)器的自動(dòng)裝載方式。本實(shí)驗(yàn)使用2定時(shí)器,讓它工

9、作在16bit自動(dòng)裝載方式,這時(shí),有另一個(gè)位置專門(mén)裝著16位預(yù)裝載值,當(dāng)T2溢出時(shí),預(yù)裝載值立即被裝入,這就保證了精確定時(shí)。2、T2定時(shí)器是一個(gè)16位定時(shí)器,最長(zhǎng)的溢出時(shí)間也就幾十毫秒,要定時(shí)1秒,就需要用一個(gè)變量來(lái)保存溢出的次數(shù),積累到了一定的次數(shù)后,才執(zhí)行一次操作。這樣就可以累加到1秒或者更長(zhǎng)的時(shí)間才做一次操作。3、當(dāng)T2定時(shí)器發(fā)生溢出中斷時(shí),需要用戶自己清除溢出標(biāo)記,而51的其他定時(shí)器是自動(dòng)清除的。4、T2定時(shí)器預(yù)裝載值的計(jì)算:設(shè)晶振為12MHz每秒鐘可以執(zhí)行1000000(12000000/12)個(gè)機(jī)器周期。而T2每次溢出時(shí)最多經(jīng)過(guò)了65536個(gè)機(jī)器周期。我們應(yīng)該盡量讓T2定時(shí)器的溢出中斷的次數(shù)最少,這樣對(duì)主程序的干擾也就最小。選擇每秒中斷14次,每次溢出1000000/14=71428.57個(gè)機(jī)器周期,不為整數(shù)且超出65536個(gè)機(jī)器周期,有效。選擇每秒中斷16次,每次溢出1000000/16=62500個(gè)機(jī)器周期,小于65536個(gè)機(jī)器周期,有效。選擇每秒中斷20次,每次溢出1000000/20=50000個(gè)機(jī)器周期,小于65536個(gè)機(jī)器周期,有效。通過(guò)上面的計(jì)算,我們可以發(fā)現(xiàn),我們可以選擇的方式有很多,但是最佳的是每秒中斷16次,每次溢出62500個(gè)機(jī)器周期,那么賦給T2定時(shí)器的初值應(yīng)為65536-62500=303

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論