• <tbody id="w8jhq"><dfn id="w8jhq"><pre id="w8jhq"></pre></dfn></tbody>
  • <fieldset id="w8jhq"><pre id="w8jhq"></pre></fieldset>

    久久黄色 视频|我草AV|AV在线网站导航|色色97激情|无码人妻一区二区有奶水|日韩精品|大香蕉97视频|成人a站免费|日本黄色片|久久久久无码AV

    技術熱線: 4007-888-234
    設計開發(fā)

    專注差異化嵌入式產(chǎn)品解決方案 給智能產(chǎn)品定制注入靈魂給予生命

    開發(fā)工具

    提供開發(fā)工具、應用測試 完善的開發(fā)代碼案例庫分享

    技術支持

    從全面的產(chǎn)品導入到強大技術支援服務 全程貼心伴隨服務,創(chuàng)造無限潛能!

    新品推廣

    提供新的芯片及解決方案,提升客戶產(chǎn)品競爭力

    新聞中心

    提供最新的單片機資訊,行業(yè)消息以及公司新聞動態(tài)

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

    更新時間: 2019-03-26
    閱讀量:5536

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


    ;******************** 中斷服務代碼


        btfss    INTCON,T0IE      ; 判斷是否為T0中斷


        goto    other_int


        btfss    INTCON,T0IF      ; it ’s the time of T0 int


        goto    other_int


        bcf    INTCON,T0IF      ; T0中斷,清除中斷標志


        movlw    0x10          ; 微秒的高位字節(jié)加上定時時間 256x16分頻=4096=0x1000的高位(0x10) 

       addwf    us+1


        goto    end_int          


    other_int              ; 可添加其他中斷服務代碼


        nop              ; other isr code can be added


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


    end_int                  ; 恢復現(xiàn)場

     

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


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


    btfss    INTCON,T0IF         


    goto    other_int


    bcf    INTCON,T0IF    
    -------------------------

     

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

    一、中斷活動的過程

     

      對于PIC單片機來說,一次中斷的過程大致有下列階段:

     

    為了使得說明形象和直觀,本文采用一些詼諧的語句來比喻說明:


    中斷請求---------比喻成申請買經(jīng)濟適用房的請求


    中斷標志-------一份申請書


    本中斷使能xxIE-----本單位領導


    PEIE-------------戶口辦公室主任


    GIE--------------銀行的管理信貸的科長 

     1. 中斷請求:房子太少,兒子要結(jié)婚了,得買房了,可資源和財力有限,不能賣商品房,只好按特殊情況處理,寫一份申請書(中斷標志位IF1);

      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科長的關系戶打了他的手機(你在辦事時-處理中斷時,若有GIE被置1),他也會開門取下請勿打擾的牌子,讓關系戶進來,給他蓋好章。這下就對不起了,人家有關系,所以你的事情要馬上停下來,先等關系戶辦完他的事情之后,再給你辦你的事情。這個叫中斷嵌套,要注意GIE科長有8個關系戶(硬件堆棧的深度為8)哦。 

    10. 最后,房地產(chǎn)商辦完了,讓RETFIE小姐打個電話給GIE科長(執(zhí)行RETFIE指令)GIE科長才起來,把請勿打擾的牌子取下,讓其他的帶著申請書的人進來。當然,如果你的事情還沒搞定,GIE科長的關系戶打了他的手機(你在辦事時-處理中斷時,若有GIE被置1),他也會開門取下請勿打擾的牌子,讓關系戶進來,給他蓋好章。這下就對不起了,人家有關系,所以你的事情要馬上停下來,先等關系戶辦完他的事情之后,再給你辦你的事情。這個叫中斷嵌套,要注意GIE科長有8個關系戶(硬件堆棧的深度為8)哦。


    二、需要注意的問題:


    1. 中斷現(xiàn)場的保護(可以參考以前的帖子,在xieyubing版主的指點下,有恰當?shù)睦?/span>);


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


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


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


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

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

     

     


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

     

     


    8. 若要防止中斷請求被丟失:則要注意下面兩種情況:如果同一中斷源的中斷發(fā)生間隔時間大于該中斷服務的處理時間,則可能出現(xiàn)中斷事件被忽略(體現(xiàn)在中斷服務的過程中,標志位被連續(xù)發(fā)生來兩次置位),例如:中斷事件發(fā)生的時間間隔為30ms,中斷服務處理加上跳轉(zhuǎn)判斷的時間為50ms,則情況將會如下所示:

     

       [中斷次數(shù)----------1][中斷次數(shù)----------2][中斷次數(shù)----------3][中斷次數(shù)----------4]


       [處理次數(shù)------------------------1][處理次數(shù)------------------------2][處理次數(shù)------------------------4]


    如果在中斷處理一開始就清除IF,那么如上圖所示,中斷事件34 在處理次數(shù)2的過程中發(fā)生來兩次,那么即使IF清除發(fā)生在中斷次數(shù)3發(fā)生之前,也將丟失第三次中斷。

     


    另外,即使中斷出現(xiàn)的時間間隔大于中斷服務的時間間隔,如果清除中斷標志位的指令安排在中斷服務子程序的尾部,就有可能造成丟失該中斷請求(即兩次中斷標志置位的事件只對應一條清除指令和一次中斷處理。

     

     

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

    三、一個疑惑

     

     

    一個疑問:一些書上提到:如果對寄存器INTCON進行--操作的時候,要事先將GIE0,再對INTCON進行操作,然后將GIE恢復為1


    BCF INTCON,GIE


      BSF INTCON,XX


      BSF INTCON,GIE 

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

     

    該段解釋晦澀難懂,根據(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地址的指令碼,并同時取0005h的指令碼。 

    顯然,作者提到的GIE被清零后,這時如果CPU正在執(zhí)行一條對INTCON“--的指令時,則GIE位還會被寫會操作重新置1,這樣就會造成CPU兩次進入中斷服務程序。的解釋存在下面的問題:GIE被硬件自動清零時的那個周期,是一個空運行周期,CPU并不執(zhí)行指令,下一個周期也是空運行周期,不過是完成將0004h地址中的代碼取指操作。然后就開始了0004h地址的代碼的執(zhí)行操作和0005h地址代碼的取指過程。那么GIE在被硬件自動清零后要想置會1,只有兩種方法:RETFIE指令使GIE自動置1;通過軟件指令對GIE人為置1。顯然,如果對GIE人為置1的指令執(zhí)行在對該標志位清零前,那么會出現(xiàn)前文所述的中斷嵌套(設該中斷為A),如果沒有其他中斷發(fā)生且執(zhí)行順序先于中斷A且對中斷A的標志清零的話,那么中斷A的嵌套是一個死循環(huán)。就不是執(zhí)行兩次的問題了----因為同一個中斷嵌套時,GIE在自動清零被軟件置一永遠都發(fā)生在清除IF之前,那么IF一直得不到清除,而GIE又幾乎一直都是1。 

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


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



    久久黄色 视频|我草AV|AV在线网站导航|色色97激情|无码人妻一区二区有奶水|日韩精品|大香蕉97视频
  • <tbody id="w8jhq"><dfn id="w8jhq"><pre id="w8jhq"></pre></dfn></tbody>
  • <fieldset id="w8jhq"><pre id="w8jhq"></pre></fieldset>