婷婷亚洲天堂影院-国产精品豆花视频www-伊人影院在线观看-日本少妇浓毛bbwbbwbbw-av网站观看-亚州欧美在线-91精品国产乱码久-任我爽精品视频在线播放-日本视频不卡-亚洲国产精品va在线观看香蕉-国产毛片乡下农村妇女-国产成人免费ā片在线观看老同学-欧美日韩免费在线-成人无码视频免费播放-色综合美女-免费毛片av

電子開發(fā)網(wǎng)

電子開發(fā)網(wǎng)電子設(shè)計 | 電子開發(fā)網(wǎng)Rss 2.0 會員中心 會員注冊
搜索: 您現(xiàn)在的位置: 電子開發(fā)網(wǎng) >> 電子開發(fā) >> 嵌入式系統(tǒng) >> PIC單片機 >> 正文

PIC中檔單片機的中斷總結(jié)

作者:佚名    文章來源:網(wǎng)絡(luò)    點擊數(shù):    更新時間:2008-11-3

  中斷是PIC高手必須掌握的武器,轉(zhuǎn)貼一篇,還希望大家補充發(fā)表對中斷應(yīng)用的見解。

   與51或者其他系列的單片機相比,PIC 單片機的中斷機制有其特殊之處,針對我們一些初學(xué)者存在的一些問題和疑惑,我在此做一個個人總結(jié),不當(dāng)?shù)牡胤剑堈居褌冎刚?/P>

  先摘引三個對PIC中斷理解的回帖,然后我再對中斷活動的過程、應(yīng)該注意的事項、及一個疑惑進行較詳細的總結(jié)和解釋。

---------------

john frank :關(guān)于pic中斷有些不明白的地方
借用大蝦的程序;

;*******中斷服務(wù)代碼*************

    btfss    INTCON,T0IE      ; 判斷是否為T0中斷
    goto    other_int
    btfss    INTCON,T0IF      ; it ’s the time of T0 int
    goto    other_int
    bcf    INTCON,T0IF      ; 是T0中斷,清除中斷標(biāo)志
    movlw    0x10          ; 微秒的高位字節(jié)加上定時時間 256x16分頻=4096=0x1000的高位(0x10)
    addwf    us+1
    goto    end_int         
other_int              ; 可添加其他中斷服務(wù)代碼
    nop              ; other isr code can be added

;**********************************

end_int                  ; 恢復(fù)現(xiàn)場

=================

假如又有新的中斷正好在這段程序中間產(chǎn)生

btfss    INTCON,T0IF        
goto    other_int
bcf    INTCON,T0IF    

程序豈不是要出錯跑飛了

john frank:
謝謝你的關(guān)注。
我講一下自己的理解,權(quán)做回答,不當(dāng)之處,還請站友們指點。

    pic中檔單片機系列沒有“硬件中斷優(yōu)先級別”(請允許我這樣說),含義是指:當(dāng)內(nèi)核正在處理當(dāng)前的中斷服務(wù)A時,在這個期間里,其他任何中斷的產(chǎn)生,只能使其標(biāo)志位xxIF置1,不能剝奪當(dāng)前中斷服務(wù)對CPU的占用權(quán)(反應(yīng)在PC指針不能被新的中斷改變指向),必須等到當(dāng)前中斷服務(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ù)代碼對中斷標(biāo)志和IE的檢測的先后,可設(shè)立優(yōu)先級。

   當(dāng)然,準(zhǔn)確地說,這是一種順序,而非級別,呵呵。

   如果了解一下51的中斷系統(tǒng),相信你能更好地理解PIC的中斷的級別:

將會出現(xiàn)你說的情況,當(dāng)優(yōu)先級更高的中斷來臨時,內(nèi)核將暫時停止當(dāng)前中斷服務(wù),保存當(dāng)前中斷服務(wù)的現(xiàn)場,執(zhí)行優(yōu)先級更高的中斷服務(wù),處理完成后,恢復(fù)現(xiàn)場,執(zhí)行未處理完成的中斷服務(wù)....,最后,返回主程序。

   小弟講得有點煩瑣,并不形象,可能還有紕漏和謬誤之處,請大家指正,相信john frank在仔細看書之后,應(yīng)該可以形成自己的正確看法。

zdtdl :小弟說兩句~~

簡單地說,當(dāng)系統(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單片機來說,一次中斷的過程大致有下列階段:
為了使得說明形象和直觀,本文采用一些詼諧的語句來比喻說明:

中斷請求---------比喻成申請買經(jīng)濟適用房的請求
中斷標(biāo)志-------一份申請書
本中斷使能xxIE-----本單位領(lǐng)導(dǎo)
PEIE-------------戶口辦公室主任
GIE--------------銀行的管理信貸的科長

  1. 中斷請求:房子太少,兒子要結(jié)婚了,得買房了,可資源和財力有限,不能賣商品房,只好按特殊情況處理,寫一份申請書(中斷標(biāo)志位IF置1);
  2. 本單位領(lǐng)導(dǎo)xxIE看了之后,如果給你蓋了一個戳:(即該中斷使能位IE=1),那么恭喜你,這份申請書可以提交到更高一級的部門;如果沒蓋(xxIE= 0),那么對不起,先放我這里吧,等我們研究研究好后再說。如果你不開心,要拿回申請書撕掉,呵呵,那么IF=0;你的購房請求之夢破滅;
  3. xxIE領(lǐng)導(dǎo)將根據(jù)戶口,將這些請求書給分類,一類是外地遷來的戶口,提交給戶口辦公室PEIE主任審查,PEIE主任如果給你蓋了個戳(PEIE= 1),那么,他將會把申請書提交給銀行的GIE科長批準(zhǔn),否則就是放在這里再研究研究或者你要回來撕毀;一類是本地戶口,可直接提交給銀行的GIE科長批準(zhǔn),然后你將申請書帶到GIE科長的辦公室。
  4.  GIE科長蓋了章之后(GIE=1),然后,你就可以拿著申請書去找房地產(chǎn)商要房子了(此時PC指針=0004H),因為GIE科長有很多事情要做,所以他每蓋了一次戳之后(注意是一次不是一個,因為也許有多個中斷同時發(fā)生,也就是說有其他地方的人來請GIE蓋戳),就在辦公室門外掛了個牌子:請勿打擾。他自己則休息去了,直到接到RETFIE的電話或者有人打他的手機。
  5. 房地產(chǎn)商準(zhǔn)備給房子了,不過你最好得先把各項手續(xù)給填好,叫5w押金,另外協(xié)議阿,合同阿,都得自己搞定,這叫“保護現(xiàn)場”。
  6. 房地產(chǎn)商開始上班了,于是挨個查“申請書”是誰提交的,以便給你安排你預(yù)定的房子。這個叫“中斷查詢”。
  7. 查到是你的后,然后打電話讓你過來,帶你去看房子,把鑰匙給你。這個交“中斷處理”。
  8.  鑰匙交給你之后,房子你是到手了,不過這份申請書就失效了,房地產(chǎn)商將該申請書銷毀。這個叫“清除中斷標(biāo)志”。
  9. 好啦,現(xiàn)在你可以去房地產(chǎn)商自己去要回以前交的押金,身份證啊等等。這個叫“恢復(fù)現(xiàn)場”。
  10. 最后,房地產(chǎn)商辦完了,讓RETFIE小姐打個電話給GIE科長(執(zhí)行RETFIE指令),GIE科長才起來,把“請勿打擾”的牌子取下,讓其他的帶著申請書的人進來。當(dāng)然,如果你的事情還沒搞定,GIE科長的關(guān)系戶打了他的手機(你在辦事時-處理中斷時,若有GIE被置1),他也會開門取下“請勿打擾” 的牌子,讓關(guān)系戶進來,給他蓋好章。這下就對不起了,人家有關(guān)系,所以你的事情要馬上停下來,先等關(guān)系戶辦完他的事情之后,再給你辦你的事情。這個叫“中斷嵌套”,要注意GIE科長有8個關(guān)系戶(硬件堆棧的深度為8級)哦。


二、需要注意的問題:
1. 中斷現(xiàn)場的保護(可以參考以前的帖子,在xieyubing版主的指點下,有恰當(dāng)?shù)睦?;

2. 初次上電復(fù)位、電源跌落復(fù)位和其他情況下的復(fù)位,均使得全局中斷位GIE和其他中斷使能位xxIE=0;

3. 中斷標(biāo)志位的狀態(tài)與該中斷源是否被屏蔽無關(guān),與全局中斷使能位GIE也無關(guān)。

4. 當(dāng)開放某一中斷源時,該中斷源就是通過中斷標(biāo)志向CPU申請中斷的,無論什么原因,只要標(biāo)志位IF置1(可以用軟件強行置1),均會產(chǎn)生中斷請求。

5. 當(dāng)中斷標(biāo)志位為1,如果該中斷被屏蔽或者被禁止了,只要不清除標(biāo)志位,那么該中斷請求會被潛伏下來,一旦屏蔽解除,立即產(chǎn)生中斷響應(yīng)。反之,如果在屏蔽/禁止條件解除之前清除了該標(biāo)志位,那么則無中斷請求。

6. 當(dāng)CPU響應(yīng)任一中斷時,全局中斷使能位GIE會自動清零;當(dāng)中斷返回時,它有自動置1。如果在中斷處理期間,用軟件將已經(jīng)清零的GIE位又重新置位,這個時候若再出現(xiàn)中斷請求,就可以形成了中斷嵌套。即:在處理某一中斷期間又響應(yīng)了其他中斷請求,就形成了中斷嵌套,此時,前一中斷處理過程會被暫停而進入新的中斷處理,當(dāng)新中斷處理完畢后,才會繼續(xù)處理前一個被擱置的中斷。此方式可以形成多級嵌套,但不能超過硬件堆棧的深度8級,以免造成堆棧溢出而不能正常返回。

7. 如果同時發(fā)生多個中斷請求,則中斷處理的順序取決于中斷程序中的檢查中斷源的順序。

8. 若要防止中斷請求被丟失:則要注意下面兩種情況:如果同一中斷源的中斷發(fā)生間隔時間大于該中斷服務(wù)的處理時間,則可能出現(xiàn)中斷事件被忽略(體現(xiàn)在中斷服務(wù)的過程中,標(biāo)志位被連續(xù)發(fā)生來兩次置位),例如:中斷事件發(fā)生的時間間隔為30ms,中斷服務(wù)處理加上跳轉(zhuǎn)判斷的時間為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ù)的時間間隔,如果清除中斷標(biāo)志位的指令安排在中斷服務(wù)子程序的尾部,就有可能造成丟失該中斷請求(即兩次中斷標(biāo)志置位的事件只對應(yīng)一條清除指令和一次中斷處理。

9. 在進行查表操作時必須禁止CPU響應(yīng)中斷,以避免中斷返回時跳轉(zhuǎn)到不希望的地址上去。


三、一個疑惑
一個疑問:一些書上提到:如果對寄存器INTCON進行“讀-改-寫”操作的時候,要事先將GIE清0,再對INTCON進行操作,然后將GIE恢復(fù)為1

即BCF INTCON,GIE
  BSF INTCON,XX
  BSF INTCON,GIE

所提到的理由是:當(dāng)CPU正在執(zhí)行一條對INTCON寄存器進行“讀-改-寫”操作的指令時,如果恰好發(fā)生了中斷請求,則中斷服務(wù)程序會被執(zhí)行兩次。這是因為當(dāng)中斷請求發(fā)生后INTCON寄存器的GIE寄存器會被硬件自動清零(屏蔽所有中斷),并且程序轉(zhuǎn)入中斷例程入口(0004h)。當(dāng)GIE被清零后,這時如果CPU正在執(zhí)行一條對INTCON“讀-改-寫”的指令時,則GIE位還會被寫會操作重新置1,這樣就會造成CPU兩次進入中斷服務(wù)程序。

該段解釋晦澀難懂,根據(jù)中斷發(fā)生過程的時序(PICmicro中檔單片機系列參考手冊的第8-2頁):在第n個指令周期里,CPU檢測到IF標(biāo)志位為1,則在n+1個周期內(nèi)將自動使得GIE=0,該周期內(nèi)既不取指也不執(zhí)行指令,然后在n+2個指令周期里,0004h指針裝入PC指針,該周期也不運行其他指令,只完成0004H->(PC)的取指過程,第n+3個指令周期里,CPU執(zhí)行0004h地址的指令碼,并同時取0005h的指令碼。

顯然,作者提到的“當(dāng)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í)行在對該標(biāo)志位清零前,那么會出現(xiàn)前文所述的中斷嵌套(設(shè)該中斷為A),如果沒有其他中斷發(fā)生且執(zhí)行順序先于中斷A且對中斷A的標(biāo)志清零的話,那么中斷A的嵌套是一個死循環(huán)。就不是執(zhí)行兩次的問題了----因為同一個中斷嵌套時,GIE在自動清零被軟件置一永遠都發(fā)生在清除IF之前,那么IF一直得不到清除,而GIE又幾乎一直都是1。

作者所說的情況似乎是這樣的:讀改寫INTCON指令按如下過程分解:讀INTCON的時候,GIE先是為1的,此時發(fā)生了中斷,GIE被硬件清零,開始執(zhí)行中斷服務(wù)程序,然后再IF標(biāo)志沒有清除之前,執(zhí)行INTCON的其他位的修改和寫回操作,也將中斷發(fā)生前的GIE讀為1的信息寫回GIE,這樣,CPU被迫發(fā)生了第二次中斷。顯然,這樣是將BSF  INTCON, XX指令分解得支離破碎---本來一個指令周期可以完成的指令被跨了多個指令周期;而且一個指令周期的指令被CPU在不同地址處分解執(zhí)行讀改寫過程。

如果不是這樣的話,那么作者的解釋就自相矛盾:“當(dāng)CPU正在執(zhí)行一條對INTCON寄存器的‘讀-改-寫’操作的指令時,如果恰好發(fā)生了中斷請求  ”與“當(dāng)GIE被清零后,這是如果CPU正在執(zhí)行一條對INTCON‘讀-改-寫’的指令時”相互矛盾

Tags:PIC單片機,中斷,單片機中斷,學(xué)習(xí)  
責(zé)任編輯:admin
相關(guān)文章列表
沒有相關(guān)文章
請文明參與討論,禁止漫罵攻擊,不要惡意評論、違禁詞語。 昵稱:
1分 2分 3分 4分 5分

還可以輸入 200 個字
[ 查看全部 ] 網(wǎng)友評論
關(guān)于我們 - 聯(lián)系我們 - 廣告服務(wù) - 友情鏈接 - 網(wǎng)站地圖 - 版權(quán)聲明 - 在線幫助 - 文章列表
返回頂部
刷新頁面
下到頁底
晶體管查詢
婷婷亚洲天堂影院-国产精品豆花视频www-伊人影院在线观看-日本少妇浓毛bbwbbwbbw-av网站观看-亚州欧美在线-91精品国产乱码久-任我爽精品视频在线播放-日本视频不卡-亚洲国产精品va在线观看香蕉-国产毛片乡下农村妇女-国产成人免费ā片在线观看老同学-欧美日韩免费在线-成人无码视频免费播放-色综合美女-免费毛片av
<button id="4i884"></button>
  • <abbr id="4i884"><source id="4i884"></source></abbr>
  • <code id="4i884"><tr id="4i884"></tr></code>
  • <rt id="4i884"></rt>
    <li id="4i884"></li>
  • <rt id="4i884"><tr id="4i884"></tr></rt>
  • 国产一二三区在线播放| 九九热精品国产| 亚洲综合123| 黑森林福利视频导航| 成人免费观看在线| 婷婷中文字幕在线观看| 国产天堂在线播放| 欧美二区在线视频| 国产成人生活片| 国产精品亚洲天堂| 日本成人xxx| 中文国产在线观看| 一级黄色片国产| 亚洲视频一二三四| 在线黄色免费看| 天天操天天干天天做| 丁香婷婷激情网| 黄色片一级视频| 亚洲人成无码www久久久| 久久久性生活视频| 欧美啪啪免费视频| 成年网站在线免费观看| 熟女性饥渴一区二区三区| 97国产精东麻豆人妻电影| 欧美成人一区二区在线观看| 国产高清精品在线观看| 俄罗斯av网站| 亚洲欧美另类动漫| 亚洲免费黄色网| 亚洲色图都市激情| www.射射射| 91激情视频在线| 国产人妻互换一区二区| 精品成在人线av无码免费看| 女人喷潮完整视频| 亚洲小视频网站| 欧美一级中文字幕| 日韩视频免费在线播放| www.99r| www.激情网| 免费无码av片在线观看| 一级黄色在线播放| 青青青青草视频| 欧美美女一级片| 色欲色香天天天综合网www| 日韩精品免费播放| 裸体裸乳免费看| 免费观看精品视频| 国产在线拍揄自揄拍无码| 俄罗斯av网站| www.-级毛片线天内射视视| 精品欧美一区免费观看α√| 国产xxxxhd| www.爱色av.com| 国产一区二区三区在线免费| 国产天堂在线播放| 国产原创中文在线观看| 日韩成人av免费| 久久精品视频91| 色综合久久久久无码专区| www.五月天色| 天天插天天操天天射| 久久综合久久网| 丰满女人性猛交| www.日本一区| 免费观看日韩毛片| 99热这里只有精品免费| 手机精品视频在线| 特黄视频免费观看| 我看黄色一级片| 青青在线视频观看| 国产成人无码精品久久久性色| 国产在线无码精品| 公共露出暴露狂另类av| 久久免费看毛片| 亚洲一级免费在线观看| 国产高清视频网站| 日韩一级片播放| 日韩精品视频一区二区在线观看| 日韩 欧美 视频| 轻点好疼好大好爽视频| 国产精品自拍合集| 国产乱淫av片杨贵妃| 男人插女人视频在线观看| 久久手机在线视频| 国产人妻777人伦精品hd| 免费欧美一级视频| 白嫩少妇丰满一区二区| 午夜精品在线免费观看| 国产成人手机视频| 91小视频在线播放| 粉嫩av一区二区三区天美传媒| 欧美极品少妇无套实战| 午夜免费福利小电影| 欧美综合在线观看视频| 精品日韩久久久| www.色.com| 久久艹国产精品| 欧美成人免费高清视频| www亚洲成人| ijzzijzzij亚洲大全| 日韩五码在线观看| 亚洲一级免费在线观看| 亚洲av综合色区| 亚洲中文字幕无码专区| wwwwww.色| 久操手机在线视频| 88av.com| 黄色a级在线观看| aa在线免费观看| 一级黄色高清视频| 国产成人a亚洲精v品无码| 亚洲成色www.777999| 国产精品88久久久久久妇女| 97xxxxx| 台湾无码一区二区| 一本久道中文无码字幕av| 欧美另类videosbestsex日本| 国自产拍偷拍精品啪啪一区二区| 天天操,天天操| 给我免费播放片在线观看| 日本国产一级片| 欧美色图色综合| www.黄色网址.com| 亚洲人成无码www久久久| 日韩亚洲欧美一区二区| 老司机久久精品| 久久国产乱子伦免费精品| 国产视频在线观看网站| 91av视频免费观看| 50路60路老熟妇啪啪| av女优在线播放| www.亚洲一区二区| 热久久久久久久久| av在线网址导航| 午夜dv内射一区二区| 日本a在线免费观看| 免费在线精品视频| 黄色网络在线观看| 视频一区二区视频| 偷拍盗摄高潮叫床对白清晰| 亚洲精品第三页| 99sesese| 亚欧激情乱码久久久久久久久| 成人黄色一区二区| 成人免费视频久久| 男女污污的视频| www午夜视频| 五月花丁香婷婷| 国产精品99久久久久久大便| 四虎1515hh.com| 爱豆国产剧免费观看大全剧苏畅| 手机版av在线| 蜜桃福利午夜精品一区| 亚洲男人天堂2021| 黄色小视频大全| 水蜜桃色314在线观看| 水蜜桃色314在线观看| 少妇性饥渴无码a区免费| 成人在线观看a| 91小视频在线播放| 91精品一区二区三区四区| av在线免费观看国产| 国内自拍在线观看| 欧美男女交配视频| 二级片在线观看| 激情五月宗合网| 日韩一级理论片| 丰满人妻一区二区三区53号| 欧美三级一级片| 日本三级黄色网址| 国产成人永久免费视频| 黑人糟蹋人妻hd中文字幕| 一区二区三区欧美精品| 日韩精品一区二区免费| 国产三级日本三级在线播放| 在线黄色免费看| 五十路熟女丰满大屁股| 亚洲一级免费观看| 日韩激情视频一区二区| 一道本在线免费视频| 一本色道久久88亚洲精品综合| 成年人视频网站免费观看| 精品国产鲁一鲁一区二区三区| 成人在线观看你懂的| 亚洲天堂网站在线| 欧美少妇性生活视频| 国产一二三四五| 在线视频日韩一区| 国产日韩av网站| 婷婷激情小说网| 一区二区三区韩国| 日韩一级性生活片| 青少年xxxxx性开放hg| 国产成人黄色网址| 久久久999视频| 黄色一级片在线看| 国产爆乳无码一区二区麻豆 | 日本高清免费在线视频| 欧美aⅴ在线观看|