當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]說最基本的,老的51單片機(jī)(80C51系列)有5個(gè)中斷源,2個(gè)優(yōu)先級(jí),可以實(shí)現(xiàn)二級(jí)中斷服務(wù)嵌套?,F(xiàn)在很多擴(kuò)展的51單片機(jī)已經(jīng)有4個(gè)優(yōu)先級(jí)(或更多)和更多的中斷源了。在說到中斷之前,我先來定義一下優(yōu)先級(jí),明白了什么是優(yōu)

說最基本的,老的51單片機(jī)(80C51系列)有5個(gè)中斷源,2個(gè)優(yōu)先級(jí),可以實(shí)現(xiàn)二級(jí)中斷服務(wù)嵌套?,F(xiàn)在很多擴(kuò)展的51單片機(jī)已經(jīng)有4個(gè)優(yōu)先級(jí)(或更多)和更多的中斷源了。

在說到中斷之前,我先來定義一下優(yōu)先級(jí),明白了什么是優(yōu)先級(jí),后面的闡述就容易明白了。實(shí)際上很多人都是混淆了優(yōu)先級(jí)的含義,所以才覺得糊里糊涂。

中斷的優(yōu)先級(jí)有兩個(gè):查詢優(yōu)先級(jí)和執(zhí)行優(yōu)先級(jí)。

什么是查詢優(yōu)級(jí)呢?我們從datasheet或書上看到的默認(rèn)(IP寄存器不做設(shè)置,上電復(fù)位后為00H)的優(yōu)先級(jí):

外部中斷0 > 定時(shí)/計(jì)數(shù)器0 > 外部中斷1 > 定時(shí)/計(jì)數(shù)器1 > 串行中斷

或 int0,timer0,int1,timer1,serial port 或 INT0、T0、INT1、T1、UART

或 PX0>PT0>PX1>PT1>PS>......

其實(shí)都是查詢優(yōu)級(jí)。首先查詢優(yōu)先級(jí)是不可以更改和設(shè)置的。這是一個(gè)中斷優(yōu)先權(quán)排隊(duì)的問題。是指多個(gè)中斷源同時(shí)產(chǎn)生中斷信號(hào)時(shí),中斷仲裁器選擇對(duì)哪個(gè)中斷源優(yōu)先處理的順序。而這與是否發(fā)生中斷服務(wù)程序的嵌套毫不相干。當(dāng)CPU查詢各個(gè)中斷標(biāo)志位的時(shí)候,會(huì)依照上述5個(gè)查詢優(yōu)先級(jí)順序依次查詢,當(dāng)數(shù)個(gè)中斷同時(shí)請(qǐng)求的時(shí)候,會(huì)優(yōu)先查詢到高優(yōu)查詢先級(jí)的中斷標(biāo)志位,但并不代表高查詢優(yōu)先級(jí)的中斷可以打斷已經(jīng)并且正在執(zhí)行的低查詢優(yōu)先級(jí)的中斷服務(wù)。

例如:當(dāng)計(jì)數(shù)器0中斷和外部中斷1(按查詢優(yōu)先級(jí),計(jì)數(shù)器0中斷>外部中斷1)同時(shí)到達(dá)時(shí),會(huì)進(jìn)入計(jì)時(shí)器0的中斷服務(wù)函數(shù);但是在外部中斷1的中斷服務(wù)函數(shù)正在服務(wù)的情況下,這時(shí)候任何中斷都是打斷不了它的,包括邏輯優(yōu)先級(jí)比它高的外部中斷0計(jì)數(shù)器0中斷。

而中斷的執(zhí)行優(yōu)先級(jí)就是你對(duì)IP寄存器的設(shè)置了。在2個(gè)優(yōu)先級(jí)的情況下,某位為1,則相應(yīng)的中斷源為高優(yōu)先級(jí);為0,則為低優(yōu)先級(jí)。

關(guān)于中斷的優(yōu)先級(jí)有三條原則:

1、CPU同時(shí)接收到幾個(gè)中斷時(shí),首先響應(yīng)優(yōu)先級(jí)最高的中斷請(qǐng)求;

2、正在進(jìn)行的中斷過程不能被新的同級(jí)或低行優(yōu)優(yōu)先級(jí)的中斷請(qǐng)求所中斷;

3、正在進(jìn)行的低行優(yōu)優(yōu)先級(jí)中斷服務(wù),能被高行優(yōu)優(yōu)先級(jí)中斷請(qǐng)求中斷;

若:同一執(zhí)行優(yōu)先級(jí)中的中斷申請(qǐng)不止一個(gè)時(shí),則有一個(gè)中斷優(yōu)先權(quán)排隊(duì)問題。同一執(zhí)行優(yōu)先級(jí)的中斷優(yōu)先權(quán)排隊(duì),由中斷系統(tǒng)硬件確定的自然優(yōu)先級(jí)形成,優(yōu)先權(quán)自高到低的順序即:

外部中斷0>定時(shí)/計(jì)數(shù)0>外部中斷1>定時(shí)/計(jì)數(shù)1>串行接口

例如:設(shè)置IP = 0x10,即設(shè)置串口中斷為最高優(yōu)先級(jí),則串口中斷可以打斷任何其他的中斷服務(wù)函數(shù)實(shí)現(xiàn)嵌套,且只有串口中斷能打斷其他中斷的服務(wù)函數(shù)。若串口中斷沒有觸發(fā),則其他幾個(gè)中斷之間還是保持邏輯優(yōu)先級(jí),相互之間無法嵌套。

關(guān)于中斷嵌套??梢赃@樣說,當(dāng)一個(gè)中斷正在執(zhí)行的時(shí)候,如果事先設(shè)置了中斷優(yōu)先級(jí)寄存器IP,那么當(dāng)一個(gè)更高優(yōu)先級(jí)的中斷到來的時(shí)候會(huì)發(fā)生中斷嵌套,如果沒有設(shè)置則不會(huì)發(fā)生任何嵌套;如果有同一個(gè)優(yōu)先級(jí)的中斷觸發(fā),它并不是在“不斷的申請(qǐng)”,而是將它相應(yīng)的中斷標(biāo)志位置即IE寄存器的某位置位,當(dāng)CPU執(zhí)行完當(dāng)前中斷之后,按照查詢優(yōu)先級(jí)重新去查詢各個(gè)中斷標(biāo)志位,進(jìn)入相應(yīng)中斷。

要記住,沒有設(shè)置IP時(shí),單片機(jī)會(huì)按照查詢優(yōu)先級(jí)(或都說邏輯優(yōu)先級(jí))來排隊(duì)進(jìn)入服務(wù)。如果要想讓某個(gè)中斷優(yōu)先響應(yīng), 則要設(shè)置IP,更改執(zhí)行優(yōu)先級(jí)(或者說物理優(yōu)先級(jí))。要注意的是,當(dāng)設(shè)置了IP后,當(dāng)?shù)蛨?zhí)行優(yōu)先級(jí)中斷在運(yùn)行時(shí),如果有高執(zhí)行優(yōu)先級(jí)的中斷產(chǎn)生,則會(huì)嵌套調(diào)用進(jìn)入高執(zhí)行優(yōu)先級(jí)的中斷。如果你是用C語言寫的程序,并在中斷服務(wù)時(shí) using 了寄存組,要注意,兩個(gè)不同執(zhí)行優(yōu)先級(jí)的中斷服務(wù)程序不要 using 同一組寄存器。

看兩個(gè)問題,如下:

1 在各個(gè)中斷都是低優(yōu)先級(jí)的時(shí)候,如果定時(shí)器0的溢出進(jìn)入中斷。在這個(gè)中斷處理的過程中,外部中斷0也被觸發(fā)了,那么是不是要發(fā)生中斷嵌套?

2 如果定時(shí)器0發(fā)生中斷的時(shí)候,進(jìn)入中斷處理程序,這個(gè)時(shí)候外部中斷1條件觸發(fā)條件滿足了。因?yàn)槎〞r(shí)器0自然優(yōu)先級(jí)比外部中斷1高,那么定時(shí)器0的中斷處理程序繼續(xù)執(zhí)行。假設(shè)定時(shí)器中斷處理程序執(zhí)行的過程中,外部中斷1的觸發(fā)。條件消失了,那么等定時(shí)器0的中斷處理完后,程序還是會(huì)進(jìn)入外部中斷1處理程序嗎?

答案1:在IP事先設(shè)置了外部中斷0的優(yōu)先級(jí)的情況下,CUP會(huì)中止定時(shí)器0的中斷服務(wù),進(jìn)入外部中斷0服務(wù)程序,執(zhí)行完以后再回到定時(shí)器0中斷服務(wù)程序。否則不會(huì)。

答案2:肯定會(huì)進(jìn)入中斷的;外部中斷1的觸發(fā)條件滿足后會(huì)置位外部1的中斷標(biāo)志,即使后來外部中斷1的觸發(fā)條件消失了,也不會(huì)清除已置位的中斷標(biāo)志,所以等定時(shí)器0的中斷處理完后,程序判斷外部中斷的中斷標(biāo)志為1后依然會(huì)進(jìn)入外部中斷1處理程序的,只有在外部中斷1處理程序中執(zhí)行reti指令才會(huì)硬件清除外部中斷1的中斷標(biāo)志(這也正是為什么中斷返回使用reti指令而不可以用ret替換的原因)...

擴(kuò)展閱讀:單片機(jī)中斷處理過程:中斷響應(yīng) 中斷處理 中斷返回詳解

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動(dòng)力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉