請問哪位能仔細的講一下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,讀出以後清零 。

有哪位能描述一下EPC招標流程

尕魂淡丶 流程如下 對於業主,流程為 確定專案 委託設計 組織招標機構 釋出招標通告 投標人資格預審 通知合格投標人 標書 組織標前考察 召開標前會議 標前會議紀要和補遺書 投標與開標 評標 決標 授標。對於承包商,流程為 跟蹤專案 選擇當地 人 選擇合作物件或分包商 準備資格預審材料 獲得投標人資...

哪位能說一下《辛德勒的名單》的真實歷史是什麼?

辛德勒的名單 schindler slist 是一部由由斯蒂芬 斯皮爾伯格執導,1993年上映的美國電影,根據澳大利亞 家托馬斯 科內雅雷斯所著的 辛德勒名單 改編而成。影片真實的再現了德國企業家奧斯卡 辛德勒在第二次世界大戰期間保護1200名猶太人免法西斯殺害的,真實的歷史事件。辛德勒的名單講述了...

給我介紹一下什麼是」期貨」,什麼是期貨呢?哪位能通俗地介紹一下,我在網上查的老是看不懂 期貨指數怎麼看呢?通俗一點的!

群上調和分析 就是倒騰商品買賣合同,從中賺取差價。這個合同有時間限制的。 就是買賣未來商品交易的合約。注意是合約而不是商品本身,合約有規定的交割日期,到期則行使交割權利 也就是實物的交割 或者對衝平倉。 上海網通 就是允許你隔一個期限進行交易的貨物 所以叫 尤信種媼 最初的 交易是從現貨遠期交易發展...