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

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(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ì)算:1 .晶振12M12MHz除12為1MHz,也就是說一秒 二1000000次機(jī)器周期。10ms=10000次 機(jī)器周期。65536-10000=55536(d8f0)TH0=0xd8 , TL0=0xf02 .晶振 11.0592M11.0592MHz除12為921600Hz,就是一秒 921600次機(jī)器周期,10ms=9216次機(jī)器周期。65536-9216=56320(dc00)TH0=0xdc , TL0=0x00二。50MS定時(shí)器初值的計(jì)算:1 .晶振12M12MHz除12為1MHz,也就是說一秒 =1000000次機(jī)器周期。50

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

3、1.0592M的晶振,很適合產(chǎn)生串口時(shí)鐘,而12M晶振很方便計(jì)算定時(shí)器的時(shí)間),使用插接式比較方便。51單片機(jī)12M和11.0592M晶振定時(shí)器初值計(jì)算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;/ 計(jì)數(shù)器int single=0;timer0_init();TL0=0xb0;TH0=0x3c;這兩個(gè)是怎么算出來得如果晶振不是12Mhz是 11.0592 MHz 怎么算12M的晶振每秒可產(chǎn)生1M個(gè)機(jī)器周期,50ms就需要50000個(gè)機(jī)器周期,定時(shí)器在方式 1 工作,是16 位計(jì)數(shù)器,最大值為65536,所以需設(shè)置初值15536,即3CB0H(10進(jìn)制 15536轉(zhuǎn)換成 16進(jìn)制數(shù) 3CB0),所以 TH0=0x3c, TL0=0xb0。(65536-50000周期=初值 15536)高位就是TH0 的值

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

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

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

8、每* 溢出16 次,就控制一次LED11 反轉(zhuǎn)顯示。這時(shí)的時(shí)間正好是1 秒,而且是精確的秒!只與晶振* 的精度有關(guān)。* /void Timer2_Server(void) interrupt 5static uint Timer2_Server_Count;/ 定義靜態(tà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ù)裝載值為0x0BDC,溢出 16 次就是 1 秒鐘。T

9、imer2_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)使用T2 定時(shí)器,讓它工作在16bit 自動(dòng)* 裝載方式,這時(shí),有另一個(gè)位置專門裝著16 位預(yù)裝載值,當(dāng)T2 溢出時(shí),預(yù)裝載值立即被裝入,* 這就保證了精確定時(shí)。* 2、 T2 定時(shí)器是一個(gè)16 位定時(shí)器,最長(zhǎng)的溢出時(shí)間也就幾十毫秒,要定時(shí)1 秒,就 需要用一個(gè)變量來保存溢出的次數(shù),

10、積累到了一定的次數(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)過了 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ī)器周期,有效。通過上面的計(jì)算,我們可以發(fā)現(xiàn),我們可以選擇的方式有很多,但是最佳的是每秒我們可以選擇的方式有很多,但是最佳的是每秒中斷16次,每次溢出 62500個(gè)機(jī)器周期,那么賦給T2 定時(shí)器的初值應(yīng)為65536-62500=3036,轉(zhuǎn)換成卜六進(jìn)制值為0x0

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論