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

    EEPW首頁 > 嵌入式系統 > 設計應用 > MCS-51單片機中斷函數注意事項

    MCS-51單片機中斷函數注意事項

    作者: 時間:2014-01-10 來源:網絡 收藏

    (1)不能進行參數傳遞,如果中包含任何參數聲明都將導致編譯出錯。

    (2)沒有返回值,如果企圖定義一個返回值將得不到正確的結果,建議在定義中斷函數時將其定義為void類型,以明確說明沒有返回值。

    (3)在任何情況下都不能直接調用中斷函數,否則會產生編譯錯誤。因為中斷函數的返回是由8051的RETI指令完成的,RETI指令影響8051的硬件中斷系統。如果在沒有實際中斷情況下直接調用中斷函數,RETI指令的操作結果會產生一個致命的錯誤。

    (4)如果在中斷函數中調用了其它函數,則被調用函數所使用的寄存器必須與中斷函數相同。否則會產生不正確的結果。

    (5)C51編譯器對中斷函數編譯時會自動在程序開始和結束處加上相應的內容,具體如下:在程序開始處對ACC、B、DPH、DPL和PSW入棧,結束時出棧。中斷函數未加using n修飾符的,開始時還要將R0~R1入棧,結束時出棧。如中斷函數加using n修飾符,則在開始將PSW入棧后還要修改PSW中的工作寄存器組選擇位。

    (6)C51編譯器從絕對地址8m+3處產生一個中斷向量,其中m為中斷號,也即interrupt后面的數字。該向量包含一個到中斷函數入口地址的絕對跳轉。

    (7)中斷函數最好寫在文件的尾部,并且禁止使用extern存儲類型說明。防止其它程序調用。

    51單片機相關文章:51單片機教程




    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 长乐市| 翼城县| 开封县| 石渠县| 嫩江县| 隆安县| 承德市| 当涂县| 炉霍县| 东乡县| 嘉祥县| 峨山| 嘉黎县| 安阳县| 邵武市| 桐乡市| 江津市| 公主岭市| 桦川县| 安仁县| 班玛县| 新巴尔虎右旗| 郑州市| 米脂县| 中山市| 南康市| 嘉鱼县| 达拉特旗| 富裕县| 平昌县| 吉木乃县| 宕昌县| 河间市| 双城市| 仙桃市| 平安县| 报价| 秀山| 稻城县| 合山市| 都安|