51微控制器中斷服務函式與其他函式的區別

2021-03-27 22:38:07 字數 3172 閱讀 7677

1樓:無殤洛城

中斷函式,屬於後臺觸發,前臺執行的函式體;

其他函式,都屬於前臺呼叫執行的函式體。

51微控制器中斷服務函式與其他函式的差異性:

1,中斷函式與普通函式相比要注意在入口遮蔽一些中斷,在出口恢復,防止中斷函式在處理重要工作中,又被中斷重入,導致處理異常。

2,中斷函式還要注意在入口儲存重要的暫存器狀態,特別是函式中用到的暫存器,在出口恢復,防止中斷函式結束後給正常程式帶來異常。

3,普通函式相當於子程式,完全可以寫到主函式裡面去。

4,中斷函式一般是和硬體相關聯,在一定條件下才跳轉進入的函式,這也是中斷兩字的來歷------中斷現在正在進行的程式,執行中斷函式。

5,中斷函式需要預先設定中斷條件。在嵌入式上,可以是硬體上的定時器技術溢位,或者是中斷引腳電平的跳變,在pc上也可以是一些特定的事件的發生,比如滑鼠的單擊,鍵盤某個按鍵的按下,等等。

6,中斷服務程式的入口地址是相對固定的,而普通的功能程式入口則是隨意設定的,此外,中斷服務程式的呼叫方式也不同於普通的功能程式,中斷服務程式的呼叫是靠中斷申請訊號,而非普通的程式。

2樓:匿名使用者

其實微控制器的中斷服務函式就像一個小型的作業系統,可以同時執行多個任務,中斷觸發之後進入中斷函式,執行完之後,回到程式原先執行的位置,這樣給人感覺同時在執行兩個任務

微控制器程式中,中斷服務子程式與其他普通程式有什麼不同?

3樓:電量測量

這兩型別的子程式區別在於如下幾點:

中斷服務子程式有5箇中斷內

源中斷服務子程式不需要容在主程式中被呼叫,而是滿足條件自動觸發從指令上看中斷用reti,子程式用ret

在呼叫普通子程式時有可能被優先順序高的中斷子程式打斷兩者入口地址不同,中斷有固定入口地址

4樓:aizen_人間喜劇

一個自動呼叫 一個手動呼叫 你說有什麼不同

5樓:陸澤仍雅麗

兩型別程式區別於幾點:

斷服務程式5斷源

斷服務程式需要主程式呼叫滿足條件自觸發

指令看斷用reti程式用ret

呼叫普通程式能優先順序高斷程式打斷

兩者入口址同斷固定入口址

c語言中中斷服務子程式與其他子程式的區別

6樓:勤奮的小龍

中斷是微控制器復的一個

制重要功能,中斷子程式專為bai

執行中du斷功能,它是在發生中斷後zhi,自動執行的,不需dao要主程式呼叫;普通子函式要主程式呼叫才能執行。

彙編裡的區別:

普通子函式用ret返回;中斷子程式用reti返回,reti返回時要清除中斷標誌的;

普通子函式呼叫時直接進入函式入口地址,中斷函式在中斷髮生時先進中斷入口

03h、08h、13h、18h、23h後隨即寫一個跳轉指令,再跳轉到相應語句。

c語言區別:

普通子函式用的是c語言裡的主函式呼叫子函式的方法,子函式可以有引數,有返回值;中斷函式沒有引數,沒有返回值;

中斷函式的寫法也不一樣,以80c51為例:

void int0() interrupt 0 using 1

interrupt 0不是是外部中斷0引發的中斷,必須寫; using 1

表示在中斷函式裡用第一組暫存器r0-r7.這個可以省略。

7樓:匿名使用者

中斷服務子程式只需新增關鍵字 interrupt 0/1/2/3/4/5,且不能有返回引數及輸入引數,其他使用方法同普通子程式一樣.

8樓:匿名使用者

「並在mai.c(主函式在其中)檔案中而在另一個c檔案中 」 完全無法理解你這句話啥意思

最好是宣告。 這種語法要求跟你怎麼用這個函式完全沒關係的, 無論是什麼函式只要你用到了最好就是先宣告

9樓:匿名使用者

要, #include" "這相當於檔案包含 只需標頭檔案

微控制器 我想問,中斷服務函式可以寫在其他c檔案中嗎?

10樓:匿名使用者

首先可以肯定,中斷服務函式可以寫在其他檔案中,並不一定要放在main.c中。

中斷服務函式如果有特定的關鍵字修飾,比如keil c51用interrupt,不僅可以放在任意檔案中,甚至可以用static 把中斷函式定義成區域性的函式都沒問題。

其他的,一般需要自己定義入口呼叫,比如某系統的定時中斷入口放在0x0008地址,則在0x0008地址放一條長跳轉指令,或者直接把函式的地址放在0x0008地址,這個根據系統不同,可能有不同的要求。

另外,有的c把載入程式會有一個預設的中斷服務地址表,使用者只需要根據系統的要求,按照一定的格式、名稱定義好中斷服務程式,系統就會自動呼叫。

微控制器呼叫中斷服務子程式和呼叫子程式的區別,儘量詳細,急…

11樓:匿名使用者

中斷程式會打斷普通程式執行,即中斷優先。

12樓:水野未知

其實區別不大。基複本過程都一樣。制呼叫子程式很簡單,也不用講了。

中斷服務子程式特殊點。一般就是檢測到中斷標誌位了,就去呼叫一下。高階點的微控制器有硬體中斷的功能。

只要中斷髮生了,就自動進入中斷子程式,軟體上都不用呼叫。直接把中斷服務子程式掛到中斷向量上去就可以。還有一點區別就是返回的指令一般不一樣。

常見的比如,一個用rti,另一個是rtc.

13樓:走路的蔥哥

中斷服務子程式入口地址相對某一中斷是固定的,呼叫子程式的偏移地址是內隨機的,基本過程差不多容,返回時,中斷服務子程式用的是reti 呼叫子程式是ret

呼叫中斷服務子程式和呼叫子程式都會把當前偏移地址的下一地址壓棧,但呼叫子程式的返回指令ret不影響標誌位,reti從中斷程式返回,並會清除內部相應的中斷狀態暫存器。

我說的是80c51的

14樓:匿名使用者

呼叫中斷服務子程式,就是產生中斷即執行它

呼叫子程式,在程式裡面什麼時候呼叫它就執行

51微控制器中的外部中斷服務程式入口0和1有什麼不同

15樓:匿名使用者

你是哪個型別的51微控制器 一般是指 兩個中斷的區分

51微控制器中斷問題

cpu響應中斷後,由硬體自動清零 但是但是但是但是但是但是但是但是 你的程式沒使用中斷 你只是使用了定時器 tf0和tf1可以不清0,硬體會自動清0 但是在一些增強型的51系統裡 如at89s52 tf2則必需由軟體清0 那是中斷請求 中斷沒開清什麼零 要是清了還怎麼查詢啊.這位仁兄 微控制器有兩種...

51微控制器的中斷服務程式入口地址是0003H,000BH,他

三位元組的跳轉指令分別存在0003h 0004h 0005h和000bh 000ch 000dh。就是隻佔用3,4,5三個位元組,剩下的6 a地址的空間空閒 你所說的0003h,000bh為rom地址,一個地址上有一位元組,就是說0003h到000bh有11 3 8位元組,3位元組的跳轉指令肯定可以...

mcs51微控制器中中斷和中斷系統的概念及其主要功能

你好!中斷其實很容易理解啊,這樣來說吧,比如說你在做a事,但是突然間來了你想起來了更重要的b事,所以你馬上去做b事了,做完之後再回來繼續做a事,這個就是中斷!在程式裡面也是一樣的!中斷系統裡面有五個中斷,外部中斷0和1,定時器 計數器中斷0 1,序列口中斷!中斷 當mcs c51微控制器的cpu正在...