久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5175|回復: 2
打印 上一主題 下一主題
收起左側

51單片機的中斷優先級及中斷嵌套

[復制鏈接]
跳轉到指定樓層
樓主
ID:105323 發表于 2016-2-13 01:18 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
51單片機(80C51系列)有5個中斷源,2個優先級,可以實現二級中斷服務嵌套。現在很多擴展的51單片機已經有4個優先級(或更多)和更多的中斷源了。

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

中斷的優先級有兩個:查詢優先級和執行優先級。

什么是查詢優級呢?我們從datasheet或書上看到的默認(IP寄存器不做設置,上電復位后為00H)的優先級:
外部中斷0 > 定時/計數器0 > 外部中斷1 > 定時/計數器1 > 串行中斷
或 int0,timer0,int1,timer1,serial port 或 INT0、T0、INT1、T1、UART
或 PX0>PT0>PX1>PT1>PS>......

其實都是查詢優級。首先查詢優先級是不可以更改和設置的。這是一個中斷優先權排隊的問題。是指多個中斷源同時產生中斷信號時,中斷仲裁器選擇對哪個中斷源優先處理的順序。而這與是否發生中斷服務程序的嵌套毫不相干。當CPU查詢各個中斷標志位的時候,會依照上述5個查詢優先級順序依次查詢,當數個中斷同時請求的時候,會優先查詢到高優查詢先級的中斷標志位,但并不代表高查詢優先級的中斷可以打斷已經并且正在執行的低查詢優先級的中斷服務。

例如:當計數器0中斷和外部中斷1(按查詢優先級,計數器0中斷>外部中斷1)同時到達時,會進入計時器0的中斷服務函數;但是在外部中斷1的中斷服務函數正在服務的情況下,這時候任何中斷都是打斷不了它的,包括邏輯優先級比它高的外部中斷0計數器0中斷。

而中斷的執行優先級就是你對IP寄存器的設置了。在2個優先級的情況下,某位為1,則相應的中斷源為高優先級;為0,則為低優先級。

關于中斷的優先級有三條原則:
1、CPU同時接收到幾個中斷時,首先響應優先級最高的中斷請求;
2、正在進行的中斷過程不能被新的同級或低行優優先級的中斷請求所中斷;
3、正在進行的低行優優先級中斷服務,能被高行優優先級中斷請求中斷;

若:同一執行優先級中的中斷申請不止一個時,則有一個中斷優先權排隊問題。優先權排隊,由中斷系統硬件確定的自然優先級形成,優先權自高到低的順序即:
外部中斷0>定時/計數0>外部中斷1>定時/計數1>串行接口 (同級中斷默認順序)

例如:設置IP = 0x10,即設置串口中斷為最高優先級,則串口中斷可以打斷任何其他的中斷服務函數實現嵌套,且只有串口中斷能打斷其他中斷的服務函數。若串口中斷沒有觸發,則其他幾個中斷之間還是保持邏輯優先級,相互之間無法嵌套。

關于中斷嵌套。可以這樣說,當一個中斷正在執行的時候,如果事先設置了中斷優先級寄存器IP,那么當一個更高優先級的中斷到來的時候會發生中斷嵌套,如果沒有設置則不會發生任何嵌套;如果有同一個優先級的中斷觸發,它并不是在“不斷的申請”,而是將它相應的中斷標志位置即IE寄存器的某位置位,當CPU執行完當前中斷之后,按照查詢優先級重新去查詢各個中斷標志位,進入相應中斷。

要記住,沒有設置IP時,單片機會按照查詢優先級(或都說邏輯優先級)來排隊進入服務。如果要想讓某個中斷優先響應, 則要設置IP,更改執行優先級(或者說物理優先級)。要注意的是,當設置了IP后,當低執行優先級中斷在運行時,如果有高執行優先級的中斷產生,則會嵌套調用進入高執行優先級的中斷。如果你是用C語言寫的程序,并在中斷服務時 using 了寄存組,要注意,兩個不同優先級的中斷不要 using 同一組寄存器。否則進入一個中斷會破壞之前中斷用的寄存器數據

看兩個問題,如下:
1 在各個中斷都是低優先級的時候,如果定時器0的溢出進入中斷。在這個中斷處理的過程中,外部中斷0也被觸發了,那么是不是要發生中斷嵌套?
2 如果定時器0發生中斷的時候,進入中斷處理程序,這個時候外部中斷1條件觸發條件滿足了。因為定時器0自然優先級比外部中斷1高,那么定時器0的中斷處理程序繼續執行。假設定時器中斷處理程序執行的過程中,外部中斷1的觸發。條件消失了,那么等定時器0的中斷處理完后,程序還是會進入外部中斷1處理程序嗎?

答案1:在IP事先設置了外部中斷0的優先級的情況下,CUP會中止定時器0的中斷服務,進入外部中斷0服務程序,執行完以后再回到定時器0中斷服務程序。否則不會。
答案2:肯定會進入中斷的;外部中斷1的觸發條件滿足后會置位外部1的中斷標志即使后來外部中斷1的觸發條件消失了,也不會清除已置位的中斷標志所以等定時器0的中斷處理完后,程序判斷外部中斷的中斷標志為1后依然會進入外部中斷1處理程序的,只有在外部中斷1處理程序中執行reti指令才會硬件清除外部中斷1的中斷標志(這也正是為什么中斷返回使用reti指令而不可以用ret替換的原因)...
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:642408 發表于 2020-12-29 14:05 | 只看該作者
學到了,我說怎么定時器0怎么不能中斷嵌套外部中斷1,好多人好說51不能嵌套,感謝

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

板凳
ID:390416 發表于 2020-12-29 16:15 | 只看該作者
廢話真多,中斷優先級可調,相同的等級按默認值的順序排級別。不相同的等級當然是高級優先。默認不配置等級。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产欧美精品一区二区 | 久久影音先锋 | 欧美精品一区二区蜜桃 | 91av视频 | 福利网站导航 | 国产精品久久久久久久久久久新郎 | 亚洲一区二区三区免费视频 | 日本国产精品视频 | 国内精品免费久久久久软件老师 | 中文字幕在线视频免费观看 | 国产成人jvid在线播放 | 伊人网伊人网 | 国内精品免费久久久久软件老师 | 日本久久精品视频 | 亚洲狠狠 | 国产高清精品在线 | 日韩欧美久久精品 | 国产精品视频一区二区三区 | 中文字幕亚洲视频 | 亚洲 欧美 日韩在线 | 欧美日韩精品一区二区三区四区 | 日本黄色大片免费 | 一级免费a | 欧日韩不卡在线视频 | 国产精品久久精品 | 国产精品我不卡 | 国产一区二区自拍 | 成人免费一级 | 91麻豆精品国产91久久久更新资源速度超快 | 中文字幕在线一区二区三区 | 免费视频成人国产精品网站 | 在线视频一区二区 | 欧美电影网| 欧美一二三 | 国产成人高清视频 | 国内自拍视频在线观看 | av在线播放网站 | 91精品国产美女在线观看 | 亚洲免费观看视频网站 | 全免一级毛片 | 日日干天天干 |