請問哪位能仔細的講一下51系列微控制器定時器定時計算時間的公式或方法

時間 2021-09-01 18:48:17

1樓:匿名使用者

這是我個人學習時的一點心得,我感覺應該是一個比較清楚的版本了。雖然有快一年沒有學習微控制器了,但是想起這些知識還是頗感熟悉。

首先你需要明白一個等價條件和一些基本理論知識,這既是學習後面的前提,同時也是基礎。(以下內容僅指微控制器而言,並且晶振頻率是11.0592mhz)cpu內部每經過一個機器週期(即一定的時間間隔),定時器就自動加一;反之,定時器每自動加一,就表示cpu內部經過了一個機器週期(可以類比我們使用的電子錶)。

二者在大多數情況下是等價的,而只有在討論純概念範疇時二者才是不一樣的(哲學用語)。因此要想設定定時器,關鍵是要知道一個機器週期的大小(即時間間隔):一個機器週期=12個時鐘週期=12個振盪週期=12個晶振週期=12個節拍,而一個振盪週期或者是一個晶振週期則等於晶振頻率的倒數即1/fosc,由此可知一個機器週期=12/fosc。

以本例來說,一個機器週期=0.000001085s,也就是1.085us。

因此當我們知道了需要定時的時間之後(比如定時50ms),即知道了包含多少個機器週期之後(50ms/1.085us=46083),我們就知道了應該往定時器的計數暫存器中寫多大的初值(即寫入(65536-46083));同樣,當我們在看到定時器的計數暫存器當中的數值後(比如(65536-46083)/256中的46083——其實是在程式中看到的),也就知道了定時一次的時間是多少(即用46083*1.085us=50ms)。

2樓:靜雨月軒

這個很好理解啊,假設定時器工作在方式1,也就是最大定時為65536us(假設12m晶振,51微控制器)

那麼你想定時多小為xus

就直接拿tl0=(65536-x)/256 tl1=(65536-x)%256就可以了的

就好像一個杯子,他最多能裝1l的水,而你只想往杯子里加400ml,那麼你就必須先往杯子裡裝

(1000-400)ml的水, 這樣的話,是不是你再往杯子里加400ml的水,就會溢位呢,定時器也是這樣的

3樓:匿名使用者

假設微控制器的晶振為12m那麼時鐘週期為1/12m,12個時鐘週期為一個機器週期,即時鐘週期乘以12,則機器週期為1us,定時器每個機器週期自動加一。那麼我們用定時器0的工作方式1.

void init_timer0()

void main()}}

void timer0() interrupt 1}大概就是這個樣子,不過看到你好像沒有懸賞分啊!

4樓:匿名使用者

假設t0工作於方式1(16位最大65535)那麼定時時間=(65536-x)再乘以機器週期(12m晶振時為1us)

例如定時50000us(既50ms)(晶振12m,機器週期1us)首先在主函式或初始化函式中寫入(就是在執行定時中斷函式之前執行)tmod=0x01;//t0工作於定時模式,方式1th0=(65536-50000)/256;//給定時器高8位賦值,其中50000就是定時機器週期

tl0=(65536-50000)%256;//給定時器高8位賦值ea=et0=tr0=1;//開總中斷,開定時中斷,啟動定時器。

然後定時器開始工作。

定時中斷函式

void timer0() interrupt 1

5樓:小草的追求

看一下郭天祥的51微控制器c語言教程。相信你沒問題

51微控制器定時器初值公式

6樓:

1.簡單說起,256表示一個8位分界點,對它求模得高位位元組存在th0中,求餘得低位位元組放在tl0中,拿十進位制打比:15/10得十位1,15%10得個位數5

2.12mhz時,單週期指令時間為12/fsoc=1us方式1為16位定時/計數器

故定時1ms為:th0=(2^16-1000)/2^8,tl0=(2^16-1000)%256

當為11.0592mhz時,單週期指令時間為12/fsoc=12/11.0592us

由於採用方式0,為13為定時器,th0高8位和tl0的低5位故定時1ms為:

th0=(2^13-1000/(12/11.0592))/2^5,tl0=(2^16-1000/(12/11.0592))%2^5這麼晚了 寫寫不容易,多給些分以此鼓勵俺

o(∩_∩)o~

7樓:一萬光年

方式0最好別去用了,很麻煩的

8樓:匿名使用者

還是看下書,問下老師的好

微控制器定時器定時的時間怎麼算?

9樓:津人依夢

微控制器的定時時間的計算公式=計數值(定時值)* 機器週期= 計數值(定時值)* 12 / 晶振頻率專。屬

上面的兩個等號是等價的,因為,微控制器的機器週期=12秒/晶振頻率,因此兩個公式通用。

完成一個基本操作所需要的時間稱為機器週期。一般,一個機器週期由 若干個s週期(狀態週期)組成。80c51系列微控制器一個機器週期由6個s週期組成。

一個s週期(狀態週期),由2個時鐘週期組成。

若干個機器週期,組成了指令週期。根據指令不同,所需的機器週期數也不同。

擴充套件資料

幾種典型指令;

1、單位元組週期指令(比如 inc a)

2、雙位元組單週期指令(比如 add a,#data)

3、單位元組雙週期指令 (比如 inc  dptr)

4、單位元組雙週期指令 (比如movx a @dptr)

第三章 微控制器的結構及原理  3.5 cpu時序及時鐘電路

10樓:匿名使用者

51微控制器1個機器週期=12個時鐘週期,頻率為12mhz,則一個機器週期為1us,具體到定時器程

回序就是,假如你答想定1ms,那麼微控制器每次加一個一,就要過1us,那麼1ms就要加1000次,所以用65535-1000=64535;再把64535換成16進製為fc17,把fc付給th0,17給tlo,即可定時1ms,因為65535他就溢位進入中斷。

11樓:匿名使用者

51單片來機,根據晶振頻率,計算指令源週期,設定定時器的分頻,然後設定定時器的工作方式tmod,最後設定初值th0 tl0 比如用的x hz的晶振,stc的微控制器有3種模式(x/12)x/6,還有單週期指令,

選擇12分頻的,t=1/(x/12)就是一個指令週期 ,如果定時沒有分頻,(65536-z(初值))*t就是定時的時間

比如是12m的晶振那麼 設定tmod=0x01;16位定時器模式th0=(65536-20000)/256;

tl0=(65536-20000)%256;就是設定了20ms的定時

12樓:做而論道

計算機內部的時間,是按照機器週期的個數來計算的。

和微控制器的晶振頻率有關。

13樓:未王艮

先看bai你用的幾m晶振,然後設定du定時器zhi的工作方式tmod,最後設定初值daoth0 tl0 比如用的版x hz的晶振

那麼t=1/(x/12)就是權一個機器週期 ,(65536-z(初值))*t就是定時的時間

比如是12m的晶振那麼 設定tmod=0x01;

th0=(65536-20000)/256;

tl0=(65536-20000)%256;就是設定了20ms的定時

14樓:匿名使用者

定時器也就相當於計數,每計個數對應一個指令週期,看看微控制器的時鐘晶振是多大,對應計算下

【微控制器】微控制器的定時時間是怎樣計算?

15樓:津人依夢

微控制器的定時時間的計算公式=計數值(定時值)* 機器週期= 計數值(定時值)* 12 / 晶振頻率。

上面的兩個等號是等價的,因為,微控制器的機器週期=12秒/晶振頻率,因此兩個公式通用。

完成一個基本操作所需要的時間稱為機器週期。一般,一個機器週期由 若干個s週期(狀態週期)組成。80c51系列微控制器一個機器週期由6個s週期組成。

一個s週期(狀態週期),由2個時鐘週期組成。

若干個機器週期,組成了指令週期。根據指令不同,所需的機器週期數也不同。

擴充套件資料

幾種典型指令;

1、單位元組週期指令(比如 inc a)

2、雙位元組單週期指令(比如 add a,#data)

3、單位元組雙週期指令 (比如 inc  dptr)

4、單位元組雙週期指令 (比如movx a @dptr)

第三章 微控制器的結構及原理  3.5 cpu時序及時鐘電路

16樓:箬竺

微控制器定時器定時計算方法

對12mhz 1個機器週期 1us 12/fosc = 1us

方式0 13位定時器最大時間間隔 = 2^13 = 8.192ms

方式1 16位定時器最大時間間隔 = 2^16 = 65.536ms

方式2 8位定時器最大時間間隔 = 2^8 = 0.256ms =256 us

定時5ms,計算計時器初值 m = 2^k-x*fosc/12 12mhz

方式0: k=13,x=5ms,fosc=12mhz 則 m = 2^13 - 5*10^(-3)*12*10^6/12= 3192 = 0x0c78

thx = 0ch,tlx = 78h,

方式1: k=16,x=5ms,fosc=12mhz 則 m = 2^16 - 5*10^(-3)*12*10^6/12= 60536 = 0xec78

thx = ech,tlx = 78h,

50ms 12mhz thx = 3ch,tlx = b0h,

10ms thx = d8h,tlx = f0h,

方式2: 最大時間 2^8fosc/12 = 0.256ms

十進位制數是怎麼來的?

6mhz 一個機器週期 12/6 = 2us

定時1ms 計數初值x

(2^16-x)*2us = 1000us

x = 2^16 - 500 ,th,tl 可置 -500

12mhz 一個機器週期 12/12 = 1us

12mhz 一個機器週期 12/12 = 1us

定時50ms 計數初值x

(2^16-x)*1us = 50000us

x = 2^16 - 50000 ,th,tl 可置 -500

定時器 計內部晶振頻率

計數器 計外部輸入cpu腳上的脈衝個數 p3.4(t0) p3.5(t1) 負跳變加一

當晶振為6mhz時,最高計數頻率500khz

暫存器1 th tl

2 tcon

tr0 tr1 其他位是中斷控制位

tmod

gate c/t1 m1 m0 gate c/t0 m1 m0

c8051f00x

定時器:每個時鐘加1 時鐘可為系統時鐘或系統時鐘的1/12

ckcon

當引腳上出現電平時啟動t0 當不滿足時,停止t0,讀出以後清零 。

哪位能介紹一下原子殼層模型

理工類專業 數學與應用數學 資訊與計算科學 物理學 應用化學 生物技術 地質學 大氣科學類 理論與應用力學 電子資訊科學與技術 環境科學 採礦工程 石油工程 冶金工程 機械設計製造及其自動化 建築學等。1 建築學專業 建築學是一門以學習如何設計建築為主,同時學習相關基礎技術課程的學科。主要學習的內容...

哪位能提供一下寒假出國那裡好玩啊

1 南歐 地中海沿岸的歐洲國家,主要包括西班牙 葡萄牙 義大利和希臘的全部,當然也包括法國南部以尼斯為中心的蔚藍海岸地區。其中尤其推薦希臘,碧藍的愛琴海 堆滿迷宮般純白色建築的小島,很漂亮,也很陽光!2 澳大利亞,關於這片充滿陽光 海灘和神奇生物的土地在很多介紹上都有,不多羅嗦了。3 紐西蘭,指環王...

哪位能介紹一下考GMAT的經驗?比如用什麼考試時考試後有哪些需要注意的事情。越詳細越好啦。我開

下面這是我們中旬700 學員的一些分享經驗,其中提到了複習資料的使用,獲取對你有幫助。gmat考試複習的話我只做了og prep07和08,其他的都沒有做,我覺得這樣應該還挺有效果的,主要是要把自己不懂的地方弄會。題目做的過多的話,有時候狀態不穩定,反而會對自己的心態有一定的影響。但從語法上來講,我...