• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統 > 設計應用 > PIC單片機的中斷問答

    PIC單片機的中斷問答

    作者: 時間:2013-05-11 來源:網絡 收藏

    與51或者其他系列的單片機相比,的中斷機制有其特殊之處,針對我們一些初學者存在的一些問題和疑惑,我在此做一個個人總結,不當的地方,請站友們指正。

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

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

    johnfrank:關于pic中斷有些不明白的地方

    借用大蝦的程序;

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

    btfssINTCON,T0IE;判斷是否為T0中斷

    gotoother_int

    btfssINTCON,T0IF;it’sthetimeofT0int

    gotoother_int

    bcfINTCON,T0IF;是T0中斷,清除中斷標志

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

    addwfus+1

    gotoend_int

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

    nop;otherisrcodecanbeadded

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

    end_int;恢復現場

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

    假如又有新的中斷正好在這段程序中間產生

    btfssINTCON,T0IF

    gotoother_int

    bcfINTCON,T0IF

    程序豈不是要出錯跑飛了

    johnfrank:

    謝謝你的關注。

    我講一下自己的理解,權做回答,不當之處,還請站友們指點。

    pic中檔單片機系列沒有“硬件中斷優先級別”(請允許我這樣說),含義是指:當內核正在處理當前的中斷服務A時,在這個期間里,其他任何中斷的產生,只能使其標志位xxIF置1,不能剝奪當前中斷服務對CPU的占用權(反應在PC指針不能被新的中斷改變指向),必須等到當前中斷服務處理A完畢,然后,根據gotoother_int語句的轉向,依次判斷。若新發生的中斷處理代碼在中斷服務A之后(前、后指代碼在ROM中地址順序,越大越后),則進行新發生的中斷處理;若恰好新發生的中斷服務代碼在剛被處理完畢的中斷服務A代碼之前,則將不予理會,(即程序指針PC不會在中斷處理代碼空間中又返回到0004H的入口),等到執行到retfie后返回主程序,然后再次進入中斷入口0004H...

    之所以說其無“硬件中斷優先級別”是與“軟件中斷優先級別”對應的,通過中斷服務代碼對中斷標志和IE的檢測的先后,可設立優先級。


    上一頁 1 2 3 下一頁

    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 尉犁县| 涞水县| 镇远县| 西乌珠穆沁旗| 靖西县| 监利县| 遵化市| 通许县| 堆龙德庆县| 枣阳市| 蓝田县| 昌平区| 鹤庆县| 石嘴山市| 准格尔旗| 宜宾县| 秭归县| 永新县| 邳州市| 奇台县| 河间市| 屏南县| 南阳市| 大姚县| 旅游| 阿勒泰市| 富平县| 泽普县| 云南省| 西吉县| 灌阳县| 大方县| 体育| 沂水县| 汾阳市| 湘潭市| 蒲城县| 山丹县| 买车| 东兴市| 冷水江市|