51單片機定時器初值的計算_第1頁
51單片機定時器初值的計算_第2頁
51單片機定時器初值的計算_第3頁
51單片機定時器初值的計算_第4頁
51單片機定時器初值的計算_第5頁
已閱讀5頁,還剩6頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

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

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

3、1.0592M的晶振,很適合產(chǎn)生串口時鐘,而12M晶振很方便計算定時器的時間),使用插接式比較方便。51單片機12M和11.0592M晶振定時器初值計算2011-01-04 22:25at89s52晶振頻率12m其程序如下:引用代碼:#include<stdio.h>#include<reg51.h>void timer0_init()TMOD=0x01;/ 方式 1TL0=0xb0;TH0=0x3c;TR0=1;ET0=1;void timer0_ISR(void) interrupt 1TL0=0xb0;TH0=0x3c;/50ms 中斷一次single+;if(s

4、ingle=20)kk+;single=0;void main()int kk=0;/ 計數(shù)器int single=0;timer0_init();TL0=0xb0;TH0=0x3c;這兩個是怎么算出來得如果晶振不是12Mhz是 11.0592 MHz 怎么算12M的晶振每秒可產(chǎn)生1M個機器周期,50ms就需要50000個機器周期,定時器在方式 1 工作,是16 位計數(shù)器,最大值為65536,所以需設(shè)置初值15536,即3CB0H(10進制 15536轉(zhuǎn)換成 16進制數(shù) 3CB0),所以 TH0=0x3c, TL0=0xb0。(65536-50000周期=初值 15536)高位就是TH0 的值

5、,低位為TL0 的值11.0592M的晶振每秒可產(chǎn)生0.9216M個機器周期,50ms就需要46080個機器周期,定時器在方式1 工作,是16位計數(shù)器,最大值為65536,所以需設(shè)置初值1945a 即 4c00H,所以 TH0=0x4c, TL0=0x00。其實很簡單,不管你使用多大的晶振,使用51 單片機,一般都是12分頻出來,也就可以得出一個機器周期機器周期=12/n(n 指晶振頻率),假設(shè)你要定時的時間為M那么定時的初值為:M/機器周期=初值;TH0= ( 65536-初值)%256;TL0=( 65536-初值)/256;將(65536初值)所得的值化成-16進制,其高位就是TH0 的

6、值,低位為TL0 的值例如用12M晶振做1ms定時計算如下:機器周期=12/12*10A6=1us(微秒) 定時初值=(1*10A-3)/(1*10A-6)=1000;所以:TH0= (65536-1000 %256;TL0= (65536-1000 /256;將 65536-1000=6453成為 16 進制為:0xFC18TH0=0xFC;TL0=0X18;單片機T2定時器實現(xiàn)1秒精確定時程序日期:2008-07-29 來源:東哥單片機學(xué)習(xí)網(wǎng)作者:佚名字體:大中 小(投遞新聞)單片機T2定時器實現(xiàn)1秒精確定時程序/* 文件名:test.c* 功 能:使用T2定時器實現(xiàn)1秒精確定時并閃燈*

7、1.CPU 型號:AT89S52* 2.晶振:12.000MHz*/ 包含頭文件/ 定義位變量#include "reg52.h"#define uint unsigned int#define uchar unsigned charsbit P1_7 = P1 A 7;/* 函數(shù)名稱:Timer2_Server()* 功 能:定時器2 溢出中斷。* 入口參數(shù):無* 出口參數(shù):無* 注 意:在本函數(shù)中設(shè)置了一個靜態(tài)變量Timer2_Server_Count,靜態(tài)變量的值在進入函數(shù)時是不會被* 初始化的,而是保持上次的值。它用來計數(shù)T2 定時器的溢出次數(shù)(進入本函數(shù)的次數(shù)),

8、每* 溢出16 次,就控制一次LED11 反轉(zhuǎn)顯示。這時的時間正好是1 秒,而且是精確的秒!只與晶振* 的精度有關(guān)。* /void Timer2_Server(void) interrupt 5static uint Timer2_Server_Count;/ 定義靜態(tài)變量,用來計數(shù)T2 定時器的溢出次數(shù)(進入本函數(shù)的次數(shù))TF2=0;/ T2 定時器發(fā)生溢出中斷時,需要用戶自己清除溢出標(biāo)記,而51 的其他定時器是自動清除的 ?Timer2_Server_Count+;if(Timer2_Server_Count=16)/ T2 定時器的預(yù)裝載值為0x0BDC,溢出 16 次就是 1 秒鐘。T

9、imer2_Server_Count=0;P1_7=P1_7;/ LED11 反轉(zhuǎn)顯示。/* 函數(shù)名稱:main()* 功 能:使用T2 定時器實現(xiàn)1 秒精確定時并使LED11 閃燈,即LED11 亮 1 秒,滅 1 秒,亮 1 秒,滅 1 秒 * 注 意:* 1 、要精確定時,必須使用定時器的自動裝載方式。本實驗使用T2 定時器,讓它工作在16bit 自動* 裝載方式,這時,有另一個位置專門裝著16 位預(yù)裝載值,當(dāng)T2 溢出時,預(yù)裝載值立即被裝入,* 這就保證了精確定時。* 2、 T2 定時器是一個16 位定時器,最長的溢出時間也就幾十毫秒,要定時1 秒,就 需要用一個變量來保存溢出的次數(shù),

10、積累到了一定的次數(shù)后,才執(zhí)行一次操作。這樣就可以累加到1秒或者更* 長的時間才做一次操作。* 3、當(dāng)T2定時器發(fā)生溢出中斷時,需要用戶自己清除溢出標(biāo)記,而 51的其他定時器是自動清除的。* 4、T2 定時器預(yù)裝載值的計算:精選設(shè)晶振為12MHz,每秒鐘可以執(zhí)行 1000000 (12000000/12)個機器周期。而 T2每次溢出時最多經(jīng)過了 65536個機器周期。我們應(yīng)該盡量讓T2 定時器的溢出中斷的次數(shù)最少,這樣對主程序的干擾也就最小。選擇每秒中斷14 次,每次溢出每次溢出1000000/14=71428.57個機器周期,不為整數(shù)且超出65536 個機器周期,有效。選擇每秒中斷16 次,每次溢出每次溢出1000000/16=62500 個機器周期,小于65536個機器周期,有效。選擇每秒中斷20 次,每次溢出每次溢出1000000/20=50000 個機器周期,小于65536個機器周期,有效。通過上面的計算,我們可以發(fā)現(xiàn),我們可以選擇的方式有很多,但是最佳的是每秒我們可以選擇的方式有很多,但是最佳的是每秒中斷16次,每次溢出 62500個機器周期,那么賦給T2 定時器的初值應(yīng)為65536-62500=3036,轉(zhuǎn)換成卜六進制值為0x0

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論