微控制器我想問,中斷服務函式可以寫在其他c檔案中嗎?如果可以,會起作用嗎?如果不行,只能寫mai

2021-04-21 12:19:43 字數 2435 閱讀 6366

1樓:匿名使用者

中斷程式 就是一個 函式 放在**都可以 只要宣告好 只有 一個有且只有一個 main函式 沒有什麼main.c檔案 c檔案可以是任何名

2樓:匿名使用者

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

中斷服務函式專如果有特定的

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

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

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

51微控制器模組化,中斷服務函式(在main.c中)所提供的值,能不能被其他.c檔案呼叫?怎麼呼叫?

3樓:匿名使用者

樓上已經說了。

跨檔案、跨模組的全域性變數引用,引用方在宣告該全域性變數/函式時,需要在前面加上extern關鍵字,這樣編譯器才會知道「哦,這個名字在這個檔案不一定有宣告,要把所有檔案編譯了也許才能找到」。

4樓:匿名使用者

可以,但要在變數前加extern

c51微控制器的中斷操作,與直接在主函式內寫入中斷服務程式有什麼區別?

5樓:匿名使用者

二樓說的已經相當好了。我只是想在補充一些,主函式內是不能寫中斷服務程式----函式內是不能再定義函式的,中斷服務程式也是一個函式。還有計算機中,設定中斷就是為了達到實時響應,如果你只在中斷程式中設定一個標號,然後把中斷的操作寫在其他函式中就不能快速的響應中斷,而失去了中斷的意義了。

如你把定時器設為1ms中斷一次,在中斷服務程式用一個標號來表示有中斷產生,然後在其他函式中執行中斷的操作,又假如其他函式執行的時間需要10ms那麼也就11ms才執行一次中斷,從而失去了中斷的意義了。2:因為p0口是漏極開路的。

與你所想的也許有很大的區別。呵呵!希望可以幫到你!

6樓:匿名使用者

當你的主程式很長的時候,把中斷的操作寫

在主程式中不能快速的響應。例如一個外部中斷在主程式的開頭被觸發,而你的中斷操作放在主程式的結尾。而你的整個主程式的執行時間是10ms,那麼你這個中斷操作就延遲了10ms。

如果放在中斷服務程式中,不論何時發生中斷,cpu將會跳到中斷服務程式中去處理中斷操作。這是微控制器的一種並行操作方式。第二個問題:

因為p0口是漏極開路的。你去看看p0口的內部結構圖,再用一點點的電路知識就能分析出來。

7樓:匿名使用者

首先為這個你要呼叫的c檔案寫一個標頭檔案,比如這個檔案叫fun.c,那你可以寫一個叫fun.h的標頭檔案。

這個標頭檔案的內容是fun.c檔案裡的函式宣告。接著把fun.

c加入你的專案裡。下一步在主函式的上面用#include "fun.h"把標頭檔案包含進來。

8樓:匿名使用者

就像電腦關機與待機的區別

微控制器 多個c原檔案裡的程式含有中斷,主程式呼叫的時候中斷服務程式怎麼辦?寫在主函還是直接跟在子程式裡?

9樓:匿名使用者

中斷程式你寫在**都沒問題,只有安你微控制器的中斷函式格式寫就ok了,但是這個包含中斷的。c檔案必須要被編譯哦。

10樓:匿名使用者

那些子函式用的是同一個中斷嗎,如果用的是不同的中斷就沒關係啊。

還有你的微控制器有中斷優先順序嗎,有的話你就要好好考慮一下了

11樓:匿名使用者

中斷子程式以及呼叫的程式沒有錯誤的話 可以把中斷單獨拿出來做個模組,寫在.h檔案裡,extern void t0()interrupt 1 用到的c檔案,包含這個.h標頭檔案就好

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

12樓:匿名使用者

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

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

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

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

微控制器呼叫中斷服務子程式和呼叫子程式的區別是什麼

中斷服務子程bai序入口地du址相對某一中斷是固zhi定的,呼叫子程式的偏dao移專地址是隨機的,基本過程差不屬多,返回時,中斷服務子程式用的是reti 呼叫子程式是ret 呼叫中斷服務子程式和呼叫子程式都會把當前偏移地址的下一地址壓棧,但呼叫子程式的返回指令ret不影響標誌位,reti從中斷程式返...

微控制器中子程式和中斷服務程式有何異同?為什麼子程式返回指令R

reti是中斷返回指令 這條指令的功能和ret指令相似,2條指令的不同之處是 本指令清除了中斷響應時,被置1的mcs 51內部不可定址的 優先順序生效 觸發器清零。微控制器組合語言指令中中斷返回指令ret和reti有什麼不同?ret是子程式返bai回指令,返 du回到呼叫該子程式處zhi的下一條指令...

請問各位大蝦!c51微控制器中,寫主函式時寫成void main()和寫成main()有什麼區別

這個在51微控制器中是體現不出來的,要在有作業系統的時候,系統在呼叫程式的時候,有返回值可以判斷程式是否正確執行。沒有區別,main 就是預設空返回值,跟void main 是一樣的 void 表示空型別 void main 比 main 更符合格式要求。在效果上是一樣的。void是指函式無返回值,...