PIC單片機的中斷問答
當然,準確地說,這是一種順序,而非級別,呵呵。
如果了解一下51的中斷系統(tǒng),相信你能更好地理解PIC的中斷的級別:
將會出現(xiàn)你說的情況,當優(yōu)先級更高的中斷來臨時,內(nèi)核將暫時停止當前中斷服務,保存當前中斷服務的現(xiàn)場,執(zhí)行優(yōu)先級更高的中斷服務,處理完成后,恢復現(xiàn)場,執(zhí)行未處理完成的中斷服務....,最后,返回主程序。
小弟講得有點煩瑣,并不形象,可能還有紕漏和謬誤之處,請大家指正,相信johnfrank在仔細看書之后,應該可以形成自己的正確看法。
zdtdl:小弟說兩句~~
簡單地說,當系統(tǒng)響應一個中斷時,GIE位將被自動清零以禁止其他的中斷,在執(zhí)行中斷返回指令RETFIE后系統(tǒng)再自動置GIE位1開放中斷。只要不在中斷程序中對GIE置1,就不會產(chǎn)生反復進入中斷的現(xiàn)象,靠查詢方式?jīng)Q定響應誰。PIC也有中斷嵌套,可以形成多級嵌套,甚至自身嵌套,不過嵌套的級數(shù)絕對不能超過硬件堆棧的深度。
-------------------------
PIC中檔單片機的中斷總結(jié)正文
一、中斷活動的過程
對于PIC單片機來說,一次中斷的過程大致有下列階段:
為了使得說明形象和直觀,本文采用一些詼諧的語句來比喻說明:
中斷請求---------比喻成申請買經(jīng)濟適用房的請求
中斷標志-------一份申請書
本中斷使能xxIE-----本單位領導
PEIE-------------戶口辦公室主任
GIE--------------銀行的管理信貸的科長
1.中斷請求:房子太少,兒子要結(jié)婚了,得買房了,可資源和財力有限,不能賣商品房,只好按特殊情況處理,寫一份申請書(中斷標志位IF置1);
2.本單位領導xxIE看了之后,如果給你蓋了一個戳:(即該中斷使能位IE=1),那么恭喜你,這份申請書可以提交到更高一級的部門;如果沒蓋(xxIE=0),那么對不起,先放我這里吧,等我們研究研究好后再說。如果你不開心,要拿回申請書撕掉,呵呵,那么IF=0;你的購房請求之夢破滅;
3.xxIE領導將根據(jù)戶口,將這些請求書給分類,一類是外地遷來的戶口,提交給戶口辦公室PEIE主任審查,PEIE主任如果給你蓋了個戳(PEIE=1),那么,他將會把申請書提交給銀行的GIE科長批準,否則就是放在這里再研究研究或者你要回來撕毀;一類是本地戶口,可直接提交給銀行的GIE科長批準,然后你將申請書帶到GIE科長的辦公室。
4. GIE科長蓋了章之后(GIE=1),然后,你就可以拿著申請書去找房地產(chǎn)商要房子了(此時PC指針=0004H),因為GIE科長有很多事情要做,所以他每蓋了一次戳之后(注意是一次不是一個,因為也許有多個中斷同時發(fā)生,也就是說有其他地方的人來請GIE蓋戳),就在辦公室門外掛了個牌子:請勿打擾。他自己則休息去了,直到接到RETFIE的電話或者有人打他的手機。
5. 房地產(chǎn)商準備給房子了,不過你最好得先把各項手續(xù)給填好,叫5w押金,另外協(xié)議阿,合同阿,都得自己搞定,這叫“保護現(xiàn)場”。
6. 房地產(chǎn)商開始上班了,于是挨個查“申請書”是誰提交的,以便給你安排你預定的房子。這個叫“中斷查詢”。
7. 查到是你的后,然后打電話讓你過來,帶你去看房子,把鑰匙給你。這個交“中斷處理”。
8. 鑰匙交給你之后,房子你是到手了,不過這份申請書就失效了,房地產(chǎn)商將該申請書銷毀。這個叫“清除中斷標志”。
9. 好啦,現(xiàn)在你可以去房地產(chǎn)商自己去要回以前交的押金,身份證啊等等。這個叫“恢復現(xiàn)場”。
10. 最后,房地產(chǎn)商辦完了,讓RETFIE小姐打個電話給GIE科長(執(zhí)行RETFIE指令),GIE科長才起來,把“請勿打擾”的牌子取下,讓其他的帶著申請書的人進來。當然,如果你的事情還沒搞定,GIE科長的關(guān)系戶打了他的手機(你在辦事時-處理中斷時,若有GIE被置1),他也會開門取下“請勿打擾”的牌子,讓關(guān)系戶進來,給他蓋好章。這下就對不起了,人家有關(guān)系,所以你的事情要馬上停下來,先等關(guān)系戶辦完他的事情之后,再給你辦你的事情。這個叫“中斷嵌套”,要注意GIE科長有8個關(guān)系戶(硬件堆棧的深度為8級)哦。
二、需要注意的問題:
1. 中斷現(xiàn)場的保護(可以參考以前的帖子,在xieyubing版主的指點下,有恰當?shù)睦?;
2. 初次上電復位、電源跌落復位和其他情況下的復位,均使得全局中斷位GIE和其他中斷使能位xxIE=0;
3. 中斷標志位的狀態(tài)與該中斷源是否被屏蔽無關(guān),與全局中斷使能位GIE也無關(guān)。
4. 當開放某一中斷源時,該中斷源就是通過中斷標志向CPU申請中斷的,無論什么原因,只要標志位IF置1(可以用軟件強行置1),均會產(chǎn)生中斷請求。
5. 當中斷標志位為1,如果該中斷被屏蔽或者被禁止了,只要不清除標志位,那么該中斷請求會被潛伏下來,一旦屏蔽解除,立即產(chǎn)生中斷響應。反之,如果在屏蔽/禁止條件解除之前清除了該標志位,那么則無中斷請求。
6. 當CPU響應任一中斷時,全局中斷使能位GIE會自動清零;當中斷返回時,它有自動置1。如果在中斷處理期間,用軟件將已經(jīng)清零的GIE位又重新置位,這個時候若再出現(xiàn)中斷請求,就可以形成了中斷嵌套。即:在處理某一中斷期間又響應了其他中斷請求,就形成了中斷嵌套,此時,前一中斷處理過程會被暫停而進入新的中斷處理,當新中斷處理完畢后,才會繼續(xù)處理前一個被擱置的中斷。此方式可以形成多級嵌套,但不能超過硬件堆棧的深度8級,以免造成堆棧溢出而不能正常返回。
評論