




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、PIC中檔單片機的中斷總結(jié) 這篇PIC中檔單片機的中斷總結(jié)的關(guān)鍵詞是PI,IC,C中,中檔,檔單,單片,片機,機的,的中,中斷,斷總,總結(jié),結(jié), 與51或者其他系列的單片機相比,PIC 單片機的中斷機制有其特殊之處,針對我們一些初學(xué)者存在的一些問題和疑惑,我在此做一個個人總結(jié),不當?shù)牡胤?,請站友們指正? 先摘引三個對PIC中斷理解的回帖,然后我再對中斷活動的過
2、程、應(yīng)該注意的事項、及一個疑惑進行較詳細的總結(jié)和解釋。 - john frank :關(guān)于pic中斷有些不明白的地方 借用大蝦的程序; ;* 中斷服務(wù)代碼 btfss INTCON,T0IE 判斷是否為T0中斷 goto other_int
3、btfss INTCON,T0IF it s the time of T0 int goto other_int bcf INTCON,T0IF
4、0;是T0中斷,清除中斷標志 movlw 0x10 微秒的高位字節(jié)加上定時時間 256x16分頻=4096=0x1000的高位(0x10) addwf us+1 goto end
5、_int other_int 可添加其他中斷服務(wù)代碼 nop other
6、160;isr code can be added ;* end_int 恢復(fù)現(xiàn)場 = 假如又有新的中斷正好在這段程序中間產(chǎn)生 btfss INTCON,T0IF goto
7、0; other_int bcf INTCON,T0IF 程序豈不是要出錯跑飛了 john frank:謝謝你的關(guān)注。 我講一下自己的理解,權(quán)做回答,不當之處,還請站友們指點。 pic中檔單片機系列沒有“硬件中斷優(yōu)先級別”(請允許我這樣說),含義是指:當內(nèi)核正在處理當前的中斷服務(wù)A時,在這個期間里,其他任何中斷的產(chǎn)生,只能使其標志位xxIF置1,不能剝奪當前中斷服務(wù)對CPU的占用權(quán)(反應(yīng)在PC指針不
8、能被新的中斷改變指向),必須等到當前中斷服務(wù)處理A完畢,然后,根據(jù)goto other_int語句的轉(zhuǎn)向,依次判斷。若新發(fā)生的中斷處理代碼在中斷服務(wù)A之后(前、后指代碼在ROM中地址順序,越大越后),則進行新發(fā)生的中斷處理;若恰好新發(fā)生的中斷服務(wù)代碼在剛被處理完畢的中斷服務(wù)A代碼之前,則將不予理會,(即程序指針PC不會在中斷處理代碼空間中又返回到0004H的入口),等到執(zhí)行到retfie 后返回主程序,然后再次進入中斷入口0004H. 之所以說其無“硬件中斷優(yōu)先級別”是與“軟件中斷優(yōu)先級別”對應(yīng)的,通過中斷服務(wù)代碼對中斷標志和IE的檢測的
9、先后,可設(shè)立優(yōu)先級。 當然,準確地說,這是一種順序,而非級別,呵呵。 如果了解一下51的中斷系統(tǒng),相信你能更好地理解PIC的中斷的級別: 將會出現(xiàn)你說的情況,當優(yōu)先級更高的中斷來臨時,內(nèi)核將暫時停止當前中斷服務(wù),保存當前中斷服務(wù)的現(xiàn)場,執(zhí)行優(yōu)先級更高的中斷服務(wù),處理完成后,恢復(fù)現(xiàn)場,執(zhí)行未處理完成的中斷服務(wù).,最后,返回主程序。 小弟講得有點煩瑣,并不形象,可能還有紕漏和謬誤之處,請大家指正,相信john frank在仔細看書之后,應(yīng)該可以
10、形成自己的正確看法。 zdtdl :小弟說兩句 簡單地說,當系統(tǒng)響應(yīng)一個中斷時,GIE位將被自動清零以禁止其他的中斷,在執(zhí)行中斷返回指令RETFIE后系統(tǒng)再自動置GIE位1開放中斷。只要不在中斷程序中對GIE置1,就不會產(chǎn)生反復(fù)進入中斷的現(xiàn)象,靠查詢方式?jīng)Q定響應(yīng)誰。PIC也有中斷嵌套,可以形成多級嵌套,甚至自身嵌套,不過嵌套的級數(shù)絕對不能超過硬件堆棧的深度。 - PIC中檔單片機的中斷總結(jié)正文 一、中斷活動的過程 對于PIC單片機來說,一次中斷的過程大致有下列階段: 為了使得說明形象和直觀,本文采用一些詼諧的語句
11、來比喻說明: 中斷請求-比喻成申請買經(jīng)濟適用房的請求 中斷標志-一份申請書 本中斷使能xxIE-本單位領(lǐng)導(dǎo) PEIE-戶口辦公室主任 GIE-銀行的管理信貸的科長 1. 中斷請求:房子太少,兒子要結(jié)婚了,得買房了,可資源和財力有限,不能賣商品房, 只好按特殊情況處理,寫一份申請書(中斷標志位IF置1); 2. 本單位領(lǐng)導(dǎo)xxIE看了之后, 如果給你蓋了一個戳:(即該中斷使能位IE=1),那么恭喜你,這份申請書可以提交到更高一級的部門;如果沒蓋(xxIE=0),那么對不起,先放我這里吧,等我們研究研究好后再說
12、。如果你不開心,要拿回申請書撕掉,呵呵,那么IF=0;你的購房請求之夢破滅; 3. xxIE領(lǐng)導(dǎo)將根據(jù)戶口,將這些請求書給分類,一類是外地遷來的戶口,提交給戶口辦公室PEIE主任審查,PEIE主任如果給你蓋了個戳(PEIE=1),那么,他將會把申請書提交給銀行的GIE科長批準,否則就是放在這里再研究研究或者你要回來撕毀;一類是本地戶口,可直接提交給銀行的GIE科長批準,然后你將申請書帶到GIE科長的辦公室。 4. GIE科長蓋了章之后(GIE=1),然后,你就可以拿著申請書去找房地產(chǎn)商要房子了(此時PC指針=0004H),因為
13、GIE科長有很多事情要做,所以他每蓋了一次戳之后(注意是一次不是一個,因為也許有多個中斷同時發(fā)生,也就是說有其他地方的人來請GIE蓋戳),就在辦公室門外掛了個牌子:請勿打擾。他自己則休息去了,直到接到RETFIE的電話或者有人打他的手機。 5. 房地產(chǎn)商準備給房子了,不過你最好得先把各項手續(xù)給填好,叫5w押金,另外協(xié)議阿,合同阿,都得自己搞定,這叫“保護現(xiàn)場”。 6. 房地產(chǎn)商開始上班了,于是挨個查“申請書”是誰提交的,以便給你安排你預(yù)定的房子。這個叫“中斷查詢”。 7. 查到是你的后,然后打
14、電話讓你過來,帶你去看房子,把鑰匙給你。這個交“中斷處理”。 8. 鑰匙交給你之后,房子你是到手了,不過這份申請書就失效了,房地產(chǎn)商將該申請書銷毀。這個叫“清除中斷標志”。 9. 好啦,現(xiàn)在你可以去房地產(chǎn)商自己去要回以前交的押金,身份證啊等等。這個叫“恢復(fù)現(xiàn)場”。 10. 最后,房地產(chǎn)商辦完了,讓RETFIE小姐打個電話給GIE科長(執(zhí)行RETFIE指令),GIE科長才起來,把“請勿打擾”的牌子取下,讓其他的帶著申請書的人進來。當然,如果你的事情還沒搞定,GIE科長的關(guān)系戶打了他的手機(你在辦
15、事時處理中斷時,若有GIE被置1),他也會開門取下“請勿打擾”的牌子,讓關(guān)系戶進來,給他蓋好章。這下就對不起了,人家有關(guān)系,所以你的事情要馬上停下來,先等關(guān)系戶辦完他的事情之后,再給你辦你的事情。這個叫“中斷嵌套”,要注意GIE科長有8個關(guān)系戶(硬件堆棧的深度為8級)哦。 二、需要注意的問題: 1. 中斷現(xiàn)場的保護(可以參考以前的帖子,在xieyubing版主的指點下,有恰當?shù)睦?; 2. 初次上電復(fù)位、電源跌落復(fù)位和其他情況下的復(fù)位,均使得全局中斷位GIE和其他中斷使能位xxIE=0; 3. 中斷標志位的狀態(tài)與該中斷源是否被屏蔽無關(guān),與全局中斷使能位GIE也無
16、關(guān)。 4. 當開放某一中斷源時,該中斷源就是通過中斷標志向CPU申請中斷的,無論什么原因,只要標志位IF置1(可以用軟件強行置1),均會產(chǎn)生中斷請求。 5. 當中斷標志位為1,如果該中斷被屏蔽或者被禁止了,只要不清除標志位,那么該中斷請求會被潛伏下來,一旦屏蔽解除,立即產(chǎn)生中斷響應(yīng)。反之,如果在屏蔽/禁止條件解除之前清除了該標志位,那么則無中斷請求。 6. 當CPU響應(yīng)任一中斷時,全局中斷使能位GIE會自動清零;當中斷返回時,它有自動置1。如果在中斷處理期間,用軟件將已經(jīng)清零的GIE位又重新置位,這個時候若再出現(xiàn)中斷請求,就可以形成了中斷嵌套。即:在處理某一中斷期
17、間又響應(yīng)了其他中斷請求,就形成了中斷嵌套,此時,前一中斷處理過程會被暫停而進入新的中斷處理,當新中斷處理完畢后,才會繼續(xù)處理前一個被擱置的中斷。此方式可以形成多級嵌套,但不能超過硬件堆棧的深度8級,以免造成堆棧溢出而不能正常返回。 7. 如果同時發(fā)生多個中斷請求,則中斷處理的順序取決于中斷程序中的檢查中斷源的順序。 8. 若要防止中斷請求被丟失:則要注意下面兩種情況:如果同一中斷源的中斷發(fā)生間隔時間大于該中斷服務(wù)的處理時間,則可能出現(xiàn)中斷事件被忽略(體現(xiàn)在中斷服務(wù)的過程中,標志位被連續(xù)發(fā)生來兩次置位),例如:中斷事件發(fā)生的時間間隔為30ms,中斷服務(wù)處理加上跳轉(zhuǎn)判斷的時間為
18、50ms,則情況將會如下所示: 中斷次數(shù)-1中斷次數(shù)-2中斷次數(shù)-3中斷次數(shù)-4 處理次數(shù)-1處理次數(shù)-2處理次數(shù)-4 如果在中斷處理一開始就清除IF,那么如上圖所示,中斷事件3、4 在處理次數(shù)2的過程中發(fā)生來兩次,那么即使IF清除發(fā)生在中斷次數(shù)3發(fā)生之前,也將丟失第三次中斷。 另外,即使中斷出現(xiàn)的時間間隔大于中斷服務(wù)的時間間隔,如果清除中斷標志位的指令安排在中斷服務(wù)子程序的尾部,就有可能造成丟失該中斷請求(即兩次中斷標志置位的事件只對應(yīng)一條清除指令和一次中斷處理。 9. 在進行查表操作時必須禁止CPU
19、響應(yīng)中斷,以避免中斷返回時跳轉(zhuǎn)到不希望的地址上去。 三、一個疑惑 一個疑問:一些書上提到:如果對寄存器INTCON進行“讀-改-寫”操作的時候,要事先將GIE清0,再對INTCON進行操作,然后將GIE恢復(fù)為1 即BCF INTCON,GIE BSF INTCON,XX BSF INTCON,GIE 所提到的理由是:當CPU正在執(zhí)行一條對INTCON寄存器進行“讀-改-寫”操作的指令時,如果恰好發(fā)生了中斷請求,則中斷服務(wù)程序會被執(zhí)行兩次。這是因為當中斷請求發(fā)生后INTCON寄存器的GIE寄存器會被硬件自動清零(屏蔽所
20、有中斷),并且程序轉(zhuǎn)入中斷例程入口(0004h)。當GIE被清零后,這時如果CPU正在執(zhí)行一條對INTCON“讀-改-寫”的指令時,則GIE位還會被寫會操作重新置1,這樣就會造成CPU兩次進入中斷服務(wù)程序。 該段解釋晦澀難懂,根據(jù)中斷發(fā)生過程的時序(PICmicro中檔單片機系列參考手冊的第8-2頁):在第n個指令周期里,CPU檢測到IF標志位為1,則在n+1個周期內(nèi)將自動使得GIE=0,該周期內(nèi)既不取指也不執(zhí)行指令,然后在n+2個指令周期里,0004h指針裝入PC指針,該周期也不運行其他指令,只完成0004H->(PC)的取指過程,第n+3個指令周期里,CPU執(zhí)行0004h地址的指令碼
21、,并同時取0005h的指令碼。 顯然,作者提到的“當GIE被清零后,這時如果CPU正在執(zhí)行一條對INTCON“讀-改-寫”的指令時,則GIE位還會被寫會操作重新置1,這樣就會造成CPU兩次進入中斷服務(wù)程序?!钡慕忉尨嬖谙旅娴膯栴}:GIE被硬件自動清零時的那個周期,是一個空運行周期,CPU并不執(zhí)行指令,下一個周期也是空運行周期,不過是完成將0004h地址中的代碼取指操作。然后就開始了0004h地址的代碼的執(zhí)行操作和0005h地址代碼的取指過程。那么GIE在被硬件自動清零后要想置會1,只有兩種方法:RETFIE指令使GIE自動置1;通過軟件指令對GIE人為置1。顯然,如果對GIE人為置1的指令執(zhí)行在對該標志位清零前,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 房地產(chǎn)代銷的合同
- 安裝合同與買賣合同
- 國產(chǎn)醫(yī)療器械委托申報合同書
- 專業(yè)演出活動策劃及執(zhí)行合同書
- 房屋建筑施工合同書
- 材料合同價格補充協(xié)議
- 物流長途運輸司機勞動合同書
- 產(chǎn)品銷售合同協(xié)議書
- 企業(yè)文化建設(shè)與價值觀塑造方案
- 店鋪承包轉(zhuǎn)讓合同
- 壓力管道設(shè)計與審批人員考試題電子版-5
- 福建能化集團筆試題庫
- 2024年10月自考00341公文寫作與處理試題及答案
- 制造業(yè)員工崗位技能提升方案
- 腰椎小關(guān)節(jié)紊亂癥的護理
- 《機器人驅(qū)動與運動控制》全套教學(xué)課件
- 《Python程序設(shè)計》課件-5:列表的概念
- 老年慢病常見意外與防范
- 北師大版三年級勞動與技術(shù)《5.我是蒸煮小達人》說課稿
- 【公開課課件】《農(nóng)業(yè)區(qū)位因素及其變化》
- (必會)軍隊文職(數(shù)學(xué)1)近年考試真題題庫(含答案解析)
評論
0/150
提交評論