中斷服務函式的格式,微控制器的知識點

2021-03-11 08:38:50 字數 4475 閱讀 9050

1樓:百度文庫精選

內容來自使用者:張立輝

1、在開始寫中斷函式之前,我們來一起回顧一下,微控制器的中斷系統。

(1)中斷源:中斷請求訊號的**。(8051有3個內部中斷源t0,t1,序列口,2個外部中斷源int0,int1(這兩個低電平有效。

(2)中斷響應與返回:cpu採集到中斷請求訊號,怎樣轉向特定的中斷服務子程式,並在執行完之後返回被中斷程式繼續執行。期間涉及到cpu響應中斷的條件,現場保護,現場恢復。

(3)優先順序控制:中斷優先順序的控制就形成了中斷巢狀(8051允許有兩級的中斷巢狀,優先權順序為int0,t0,int1,t1,序列口),同一個優先順序的中斷,還存在優先權的高低。優先順序是可以程式設計的,而優先權是固定的。

80c51的原則是①同優先順序,先響應高優先權②低優先順序能被高優先順序中斷③正在進行的中斷不能被同一級的中斷請求或低優先順序的中斷請求中斷。

80c51的中斷系統涉及到的中斷控制有中斷請求,中斷允許,中斷優先順序控制

(1)3個內部中斷源t0,t1,序列口,2個外部中斷源int0,int1

(2)中斷控制暫存器:定時和外中斷控制暫存器tcon(包括t0、t1,int0、int1),序列控制暫存器scon,中斷允許暫存器ie,中斷優先順序暫存器ip

具體的是什麼,包括哪些標誌位,在這裡不講了,所有書上面都會講。     (4)微控制器復位後,tcon,scon給位清零。      為了更好的瞭解這裡意思,你可以看

2樓:匿名使用者

首先可以肯定,bai中斷服務

du函式可以寫在其他檔案zhi中,並不一定dao要放在main.c中。

中斷服務函內數如果有特定的關

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

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

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

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

3樓:匿名使用者

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

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

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

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

微控制器c語言中斷函式的定義形式是怎樣的?

4樓:大野瘦子

形式如下:

void 中斷copy

名(void) inerrupt 中斷號 using 工作暫存器組

比如外部中斷0

void ext0(void) interrupt 0 using 1 //後面的using 1可以省略,預設為0

定時器1

void t1isr() interrupt 3

微控制器內部結構

1、cpu

它的名字沒有改,還是稱為cpu(central processing unit)。它是微控制器的核心部件,包括運算器和控制器。

運算器既是算術邏輯單元alu(arithmetic logic unit),其功能是進行算術運算和邏輯運算。

控制器一般由指令暫存器、指令譯碼器、時序電路和控制電路組成。其作用是完成取指令、將指令譯碼形成各種微操作並執行指令,同時控制計算機的各個部件有條不紊地工作。

2、微控制器內部結構之一rom

「硬碟」,改了名字,稱為程式儲存器,也叫只讀儲存器。用rom(read only memery)表示。其作用和計算機的硬碟差不多,用來存放使用者編寫的程式。

特點是:掉電後不會丟失資料(程式)。

5樓:

舉例復:

串列埠中斷制函bai數

void int_uart(void)  interrupt 4 //using x  (注:using x 是可選的

du)if(ti==1)

}注意,中

斷函式不能zhi

有引數和返dao回值

6樓:匿名使用者

對bai51而言,形式如下:du

void 中斷

名(void) inerrupt 中斷號 using 工作寄存zhi器組

比如外部中dao斷0

void ext0(void) interrupt 0 using 1 //後面的回using 1可以省略,預設為答0

定時器1

void t1isr() interrupt 3等等

7樓:匿名使用者

對於c51單片

bai機,其內部總共有五級中斷源du

分別為外zhi部中斷0、定

時器dao0、外部中斷1、定時器1及序列版中斷。

c51微控制器的權中斷使用時,主要是通過中斷服務號來決定的。

如你定義一箇中斷服務函式:

void key(void) intterrupt 0當外部中斷0申請中斷時

會自動根據interrupt後面的0,找到上面定義的這個中斷服務函式。

對於其他四個中斷源,其對應的中斷號分別為1、2 、3、4

8樓:清風迎明月

函式名() interrupt 0 (1,2,3,4) using 工作組

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

9樓:匿名使用者

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

10樓:匿名使用者

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

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

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

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

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

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

11樓:無殤洛城

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

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

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

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

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

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

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

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

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

12樓:匿名使用者

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

微控制器中中斷服務函式 有哪位大神能幫我解釋一下下面這段程式什麼意思,就算能讓我清楚一點也成,謝謝了

13樓:匿名使用者

void time1_int() interrupt 1//中斷服務函式,1表示定時器0溢位中斷

if(count==20) //20次計數滿}if(yanshi==1) //延時標誌為1則執行內部程式if(count1==20) //20次計數滿}}}

請教微控制器中斷的問題,請教一個微控制器中斷的問題

需要具體情況具體分析,因為不同的微控制器在中斷機制上有細微的差別,需要查他的資料。一般來說,一箇中斷源請求中斷,對cpu來說,是一次性的做了一個 中斷 假如當時因條件不滿足 例如cpu正在 關中斷 即沒有開啟 中斷允許 而沒有響應中斷,則 資訊還在,這樣,將來一旦開啟了中斷允許,仍然會響應,只是晚了...

51微控制器中中斷服務程式佔用時間不

在某種意思上,中 斷更具有實時性,中斷處理是根據程式段的大小花費時間的,中斷程式段如果比定時時間還長,那個這個定時在主程式裡失去意義了 比如中斷定時為10個機器週期,而中斷程式段需要執行11個機器週期,那麼意味著緊著的中斷程式失去了理論的實時性 cpu無法在設計的要求下執行指令,所以,一般情況下,要...

微控制器的子程式 子程式和中斷服務子程式 中是不是最後不能用LJMP之類的跳轉指令的?只能是RET或

簡單來說,可以這樣理解沒錯。ret reti指令本身已經包含了從stack中pop pc的操作。call 和 ret 這兩條指令,要配套使用。jmp 和 reti,不屬於它們,不可濫用。微控制器中,能否使用ljmp指令從主程式轉入子程式或從子程式跳轉回主程式,為什麼 這個當復 然是能使用ljmp指令...