微控制器中斷程式中為什麼要重新賦值?

2025-06-17 22:45:16 字數 3385 閱讀 9276

1樓:

這個太好理解啦,就像你用乙隻桶來裝水,你知道這隻桶能裝10公斤水就會溢位。你如果想往桶裡裝2公斤水想讓他溢位,你就得先給它裝進8公斤水。溢位以後你知道裝了2公斤他滿啦(滿了以後會自動全部倒掉,是空的啦),下次如果還是需要裝2公斤就讓他溢位,你不是還得先裝進8公斤水嗎?

不然2公斤水怎麼會溢位呢?呵呵,簡單吧!耐陸。

按計數暫存器的原理昌則頃也是一樣的,一般每秒到65535才會溢位,如果你的微控制器根據晶振頻率和預分頻的結果是每秒15625,那麼你就得給計數暫存器先賦值49910,也就是c2f6。溢位後(計數暫存器的數值會自動清0),下次中斷產生也需要在15625的時候,這個時候如果是沒有預先的49910,就不能達到65535的溢位條件,就不會產生中斷,所以每次執盯羨行玩這個中斷程式都要給計數暫存器賦值。除非你只用一次溢位中斷,可以不用再賦值。

2樓:網友

在工作方式2時是自動重灌初值的,不需要給th0/tl0重新伍仔賦值;在其他工作方式下需要。定時器工作時其th/tl的值是一直加,直到溢位得到中斷。工作方式2是8位定時/計數器,其高8位被用來儲存初值,來中斷後就自動把儲存在其中的初值付給定時計數器,而方段橘段式0方式1是13位、16位定時/計數器,2個暫存器都使用掉了,硬體握譽不能儲存初值,需要軟體每次在中斷中賦初值。

3樓:快樂小斯

進中斷後賀談 th0和tl0是一直在執行自己加一的操作,直到溢位,這個時候th0和tl0已經譽喊不是你幅的初值了,慶拍野所以需要重新寫入初值。

4樓:憨厚還豪放灬標兵

記得要保護現場 和恢復現場 最好使用棧儲存資料。

在微控制器程式設計的時,有時為什麼要對堆疊指標sp重新賦值

5樓:麻飛薇由邦

上電後,sp=07h,而我們在程式設計中有可能用到00h--7fh中的任何乙個記憶體單元。

6樓:玄曼彤柴籟

sp用於存放棧頂的偏移位址。

通俗的說,就是存放堆疊ss的頂部。

微控制器外部中斷進行時,定時器會停止工作嗎?如果在工作,進入外部中斷後對定時器重新賦值,是按新值計算

7樓:網友

微控制器外部中斷進行時,定時器會停止工作嗎?

不會。定時器仍然會默默執行。

如果在工作,進入外部中斷後對定時器重新賦值,定時器會按新值繼續定時嗎?

是的,會按照新值重新工作。但是假如在這個期間定時器已經溢位產生了中斷源,那麼在退出外部中斷處理程式之後,會很快進去定時器中斷服務程式。

外部中斷設定為下降沿觸發,在那個瞬間需要對定時器重新賦值,每到乙個下降沿就重新賦值,請問微控制器進入外部中斷後賦值的所消耗時間與定時器的時間會有誤差嗎?

當然會有誤差,從微控制器檢測到下降沿開始,先要等乙個週期轉移控制權(如果沒有其他更高優先順序中斷佔用),然後要進入中斷入口、壓棧、之後才進入中斷服務程式順序執行,到你改寫定時器計數值的位置已經過了好多個週期了。如果你追求精確即時,這部分滯後的時間一定要測出來並從計數值中減掉。

8樓:網友

請問,你這樣做的目的是什麼?是為了測脈衝寬度嗎?

可以用脈寬捕捉功能。

即便不用脈寬捕捉功能,也可以只啟動或停止定時器即可,不要再裝什麼初值?

9樓:折柳成萌

正常情況下定時器正常工作,一進入外部中斷函式我就將外部中斷關掉了,退出外部中斷服務函式時才開啟,在關閉和開啟這段時間(執行中斷服務程式這段時間),外部中斷都被關閉了,定時器為什麼不工作?? 求正解 勿懂勿進 謝謝。

我想你這樣做帶有實驗性質,因為正常情況下沒必要這麼處理。你需要乙個正解,這麼愛學習的人,不給不好意思。

正解就是:把定時器中斷設定為高優先順序,把外部中斷設定為低優先順序。

10樓:網友

她婆婆哼哼唧唧,沒有。

在微控制器程式設計的時,有時為什麼要對堆疊指標sp重新賦值

11樓:匿名使用者

初始化時通常要重新初始化棧,尤其是使用匯編時,你必需自已去歸劃ram,

12樓:湘湘湘湘湘湘

如果巢狀太多,不重新賦值會引起宕機的。

51微控制器定時器中斷程式裡面對定時器再次賦值時使用全域性變數進行初值傳遞時為什麼資料傳不進去呢?

13樓:網友

不可能的,除非你的程式錯了。

把你的程式貼出來分析一下。

微控制器中斷初始值不能這樣賦值嗎?

14樓:網友

這樣賦值沒有問題,但賦值前需要給on初始化一下。

15樓:慎盼柳

可能微控制器是8位的,所有涉及到16位的運算都非常慢。要想實現類似的效果可以採用查表法,用空間換時間。

16樓:匿名使用者

除錯的時候,on 的值最好設大些。

51微控制器外部中斷函式里的變數被賦值後,

17樓:

因為你在賦值時用了static語句,所以它要一直保持這個值。

微控制器中斷優先賦值語句

18樓:網友

mov ip,#05h ;將外中斷設定為高優先順序中斷。

或用們操作。

etb px0

setb px1

clr ps

clr pt0

clr pt1

也可以做到。因為。

d7 d6 d5 d4 d3 d2 d1 d0 ip

ps pt1 px1 pt0 px0

ip暫存器的位元組位址為0b8h,其d4~d0分別對應五個向量位址的中斷源的高優先順序/低優先順序的設定。相應位為「1」則對應的中斷源為高優先順序,其中斷請求被送入高優先順序的硬體查詢電路中排隊待查詢,否則為「0」 則對應的中斷源為低優先順序,ps:位、位位址為0bch,序列口中斷優先順序控制位。「1」指定串列埠中斷為高優先順序,「0」指定串列埠中斷為低優先順序。

pt1:位、位位址為0bbh,定時器/計數器1溢位中斷優先順序控制位。「1」指定t1溢位中斷為高優先順序,「0」則為低優先順序。

pt0:位、位位址為0b9h,定時器 /計數器0溢位中斷優先順序控制位。「1」指定t0溢位中斷為高優先順序,「0」則為低優先順序。

19樓:網友

可以啊,怎麼不可以,中斷機制跟定時都可以設定優先順序的,根據情況而定吧。

20樓:網友

可以!通過設定ip暫存器的值被設定為高優先順序的中斷,比未被設定為高優先順序的中斷優先順序高,而同為高優先順序或者非高優先順序的中斷。

以微控制器的預設優先順序排序。

求微控制器中圍繞中斷的程式題目?急求

找了幾個定時 計數器的題目,外部中斷應該很簡單。1 利用定時 計數器t0從p1.0輸出週期為1s的方波,讓發光二極體以1hz閃爍,設晶振頻率為12mhz。2 利用定時 計數器t1產生定時時鐘,由p1口控制8個發光二極體,使8個指示燈依次一個一個閃動,閃動頻率為10次 秒 8個燈依次亮一遍為一個週期 ...

微控制器中斷返回指令,微控制器組合語言指令中中斷返回指令RET和RETI有什麼不同?

程式結構錯誤。mov th0,65536 50000 256 定時50毫秒 mov tl0,65536 50000 256mov ie,82h setb tr0 主程式,到這,就沒有了,這那行?timer 下面就是 定時器中斷服務程式mov th0,65536 50000 256 初脈衝50ms m...

微控制器中PORTB什麼意思,請問微控制器程式中的這些符號是什麼意思?

應該還是有 porta portc 吧,直譯過來是 a埠 b埠 c埠 你可以想象成 porta p0.0 p0.7portb p1.0 p1.7 portc p2.0 p2.7 狀態bai反轉,原先輸出高電du 平的io口變為輸出低,原zhi 先輸出低電平的io口變為dao輸出高回 作用 比如開關答...