關於微控制器長時間定時問題, 微控制器 微控制器的定時時間是怎樣計算?

時間 2022-11-26 05:51:05

1樓:

這很簡單啊,程式我就不寫了,我說一下理論,如果說得好請把分給我,呵呵!

首先是建立乙個時鐘,定義time_125us,time_1ms,time_100ms,time_1s,time_1min,time_1hour這幾個變數,利用定時器每125us產生一次中斷(最好是自動過載,這樣誤差就比較小),中斷裡的**要實現每中斷一次time_125us加1,如果加到8了,time_125us就要清0,同時time_1ms加1,如果time_1ms加到了100,time_1ms就要清0,同時time_100ms加1,……當time_1min加到60時,time_1min就清0,同時把time_1hour加1,各個變數就像手錶裡的各個指標一樣,周而復始,這是中斷裡面的**。

主程式的執行與中斷沒多大關係,所以要那些io怎樣翻轉,就在主程式裡面判斷相應的變數的就可以了,比如說要p11口0.5秒翻轉一次,p12口1秒翻轉一次,在主程式裡寫上

if(time_100ms<5) p11=1;

else p11=0;

if(time_1s&0x01) p12=1; //奇數else p12=0; //偶數要注意程式裡不能出現delay這樣的忙延時函式

2樓:匿名使用者

給你舉個例子吧 80c51

已知fosc=6mhz,下面延時子程式的延時時間大約為10ms精確的時間為:

delay: mov r6,#10 ;2usd1: mov r7,#250 ;20us,重複了10次,一次2usd2:

djnz r7,d2 ;1ms,250*2*2 usdjnz r6,d1 ;40us ,10*2*2usret ;4us

雖然一次只累計250次

但通過迴圈10次的250次累計,就可以達到長時間的定時所以上面的精確時間為10ms+66us(忽略不計)這麼詳細了沒明白?

直說了吧

這程式段,你給r6:10,他就延時10ms你給r6:20,他就延時20ms

你給r6:200,他就延時200ms

在r6=200的基礎上,在加兩句,讓200ms迴圈5次,就可以得到1s的延時,10次就是2s

這樣夠不夠?

那我給你解釋下上面的那段延時程式吧.

delay: mov r6,#10;給r6預設10,迴圈10次用d1: mov r7,#250;給r7預設250,d2:

djnz r7,d2;r7減1,判斷r7是否為0,不為0,則跳轉d2(原地踏步),r7=0的話則繼續執行下一條(r7已從250減到0了)

djnz r6,d1;r6減1,判斷r6是否為0,不為0,跳d1,而d1又是從r7重賦250,這樣,不斷迴圈,直到r6=0,才迴圈結束ret

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

3樓:津人依夢

微控制器的定時時間的計算公式=計數值(定時值)* 機器週期= 計數值(定時值)* 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時序及時鐘電路

4樓:煙火夜空

首先 lz 所謂的 計數值 含義不清楚,不知道是 初值,還是 溢位需要值,如果理解為 後者,那麼 普通51微控制器,可以認為 以上2個等號正確。

但 51微控制器 還有一些可以使用 1t機械週期的,即是 1個機械週期 = 1個時鐘週期(晶振週期),所以並不是 所有 機械週期 都 等於 12/晶振頻率 的

5樓:匿名使用者

學習微控制器還是離不了教科書,這些問題,課本裡說的賊清楚。

51微控制器 的 最大定時時間 怎麼求?

6樓:好湯是熬出來的

m為定時器初始值,即首先加入一部分值進去,再開始計數,溢位後重新賦初值

工作方式1,即x為16

機器週期=12*1/時鐘週期=12*1/12=1us題目要求最大定時時間,則賦初值為m=0,即不賦初值進定時器,定時器也就為原來那麼大的容量2^16us

則最大定時時間為t=2^16us

7樓:做而論道

m,是寫入定時器的初始值。

微控制器定時的問題。。

8樓:匿名使用者

這問題問的夠亂的,中斷執行過後,主程式會接著中斷前的點繼續執行,所以,如果你在其他程式裡沒有動sum,它必定是在time1裡去清零,所以也會有dq的取反,還有就是微控制器速度是很快的,你1ms進中斷一次,你主程式裡要就那點東西,足夠它迴圈幾遍了,不用擔心執行不到。

9樓:匿名使用者

反正是有執行到time1();的時候,雖然過去了,但還會迴圈過來,多少還是有些誤差的,就這程式當然有誤差,,如果

放到中斷中會好些.

10樓:匿名使用者

那要看time1什麼時候才能再執行,只要time1再執行dq就會取反了。有可能是過 1ms,也有可能過很多個ms,也有可能永遠不再執行(比方說time2後到while結尾前有死迴圈)

微控制器定時的問題

11樓:做而論道

參考:http://hi.

51微控制器定時器2的最短定時時間怎麼有限制?

12樓:匿名使用者

應該是你的中斷服務程式有問題,占用時間可能太多,超過定時時間了,因此可能造成不准的情況,貼上你的定時中斷程式看看,還有最好在定時程式裡賦值時先作如下處理:

tr2=0;

賦值tr2=1;

13樓:匿名使用者

51微控制器定時器,晶振是12mhz、12分頻,理論上最短定時時間1微秒,

但是,cpu 執行指令 需要時間,只要中斷服務程式 的執行時間 不超過定時器 定時時間,

並且 有些餘量,則就不成問題,如果沒有餘量,則中斷結束 又進入 中斷,

如果 超過定時器 定時時間,則來不及 處理 定時也就不準確了。

用 c 語言程式設計,有可能 定時時間 過短 會有問題,有不好 計算中斷用去多少時間。

如果用 組合語言 程式設計,晶振是12mhz、12分頻,只是產生乙個方波訊號,30khz 頻率沒有問題。

當然你要檢測 準確性 加入計數程式後 會占用時間,

一般程式設計時, 在中斷 服務程式中 盡量少占用時間,能不在中斷服務程式中處理的 事盡量 不在

中斷服務程式中 處理。

14樓:匿名使用者

如果你要提高定時精度,你可以增加晶振頻率如:24mhz,是不是能夠解決你的問題

15樓:一萬光年

這個微控制器不是傳統的51微控制器,時鐘比傳統51的時鐘要快12倍,仔細看晶元資料...

16樓:勤奮的石頭

1微秒是每條彙編指令需要的時間,定時器中斷涉及到了壓棧定址出棧等操作,天知道用了多少條彙編指令,你定個20微妙當然有問題,程式還有別的事情幹,比如數碼管顯示(這玩意兒也很耗時),不能光響應你的中斷去了。。。

如果用中斷還想有一定的精度的話一般微控制器的話10~20k就到頂了。

不過如果你只是想輸出高頻方波訊號的話,我建議你不要用定時器,直接在主程式裡面加迴圈,除去必須的**後,根據需要的頻率增加不同數量的_nop_指令,這個應該能達到更高的頻率。

51微控制器定時問題

17樓:匿名使用者

你的定時時間測量始末標誌是什麼?

定時器的工作方式、定時初值是多少?迴圈多少次以實現1s?

把資料放上來看看

18樓:

你最好是定時測好,在串列埠中開啟定時器就可以了

關於微控制器學習的問題,關於微控制器c語言的問題

在廣東那邊肯定能找到工作的,但是沒前途。建議你先在一家小的通訊產品公司累計工作經驗,做測試員就行了,目的就是增加工作經驗和工作經歷,這樣你再去廣東深圳那邊找工作 平台 就高了,就一定會最終得到乙份好的工作。注意 在小廠工作也有在小廠工作的好處,工作雖然簡單,不需要有什麼專業知識,但是也得把工作流程摸...

關於微控制器的問題,高手請進(從事微控制器工作

微控制器用的好,最終還是要用到通訊的。其實你說的感測器很多也是要把它感應到的資料傳輸到微控制器裡面去處理的,也就是說,通訊還是要學的,不過你只高微控制器這塊的話,先搞懂spi i2c等等這些,學的好也要了解並掌握can匯流排技術,這個在很多領域都用到。另外你說的arm和eda技術,可以說是兩個領域,...

微控制器問題,微控制器的問題有哪些?

理論上定時器0的中斷優先順序要比串列埠的高,你對中斷優先順序的理解有誤。在預設情況下,微控制器的5個中斷源都是同級的優先順序,只在同時申請中斷時,先響應定時器t0的中斷,但不等於t0的優先順序比串列埠高,而是同級的。在響應了同級的中斷時,是不能再響應其它同級的中斷的。你的問題解決的辦法是 在響應串列...

微控制器的延時問題,微控制器延時問題

具體說你用的8位微控制器 處理int型別時需要做兩次減法指令 而char型只需要一次 你想想在你的函式裡一共減法做了20 20 248次那也就是說換為char型資料 就相當於至少少了20 20 248條語句 按常用51微控制器,12m振盪頻率算 一條語句1微妙 加起來就可觀了吧。你仔細看看你的c語言...

為什麼要給微控制器的定時器賦初值,微控制器定時器裝初值啥意思

給微控制器的定時器賦初值是為了取得準確的自己需要的定時時間,比如你數0 255要256秒,你賦個初值155,你就從156開始數了,數到255只用100秒 埠取反就更好理解了,比如現在的埠為高電平1,取反後就是低電平0了,實現的功能嗎,就要看具體用法了,比如我在在點亮led時,讓埠定時取反,那麼led...