新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 在Keil C51函數中加入ASM代碼

        在Keil C51函數中加入ASM代碼

        作者: 時間:2016-11-11 來源:網絡 收藏
        使用C51進行單片機編程是事半功倍的事,但是很多算法上以及編譯上的問題,往往使用ASM代碼更為方便又高效。但不知什么原因,Keil在實現C51夾雜ASM代碼比SDCC麻煩很多,方法如下:

        預處理指令 #pragma asm 開始ASM代碼
        預處理指令 #pragma endasm 結束ASM代碼

        本文引用地址:http://www.104case.com/article/201611/316728.htm

        如果就這樣直接編譯的話,會出現以下錯誤:
        error C272: asm/endasm requires src-control to be active

        解決方法:在 Files Toolbar 中選中當前C51文件,點右鍵查看文件選項,將 Generate Assembler SRC File 與 Assemble SRC File 的勾選由灰色變為黑色,即使這兩項有效!

        這時進行編譯沒有問題,但是Link時產生了兩個警告:
        *** WARNING L1: UNRESOLVED EXTERNAL SYMBOL
        *** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL

        解決方法是需要在 Source Group 中添加一個 LIB 文件,根據專案的內容不同有所區別:
        C51S.LIB - 沒有浮點運算的 Small model
        C51C.LIB - 沒有浮點運算的 Compact model
        C51L.LIB - 沒有浮點運算的 Large model
        C51FPS.LIB - 帶浮點運算的 Small model
        C51FPC.LIB - 帶浮點運算的 Compact model
        C51FPL.LIB - 帶浮點運算的 Large model

        LIB 方件在 Keil 安裝目錄下的 C51LIB 目錄中。



        關鍵詞: KeilC51函數ASM代

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 瓮安县| 麟游县| 铜梁县| 广州市| 迭部县| 肇庆市| 阿拉善盟| 尉氏县| 邯郸市| 福清市| 眉山市| 石泉县| 库尔勒市| 桐柏县| 休宁县| 石台县| 武川县| 榆树市| 襄汾县| 淳化县| 巨野县| 沈阳市| 孟连| 南召县| 西乌珠穆沁旗| 黔南| 临桂县| 恭城| 绥芬河市| 崇文区| 宜城市| 留坝县| 公主岭市| 麻城市| 城市| 高邑县| 商都县| 肇源县| 卫辉市| 东阿县| 璧山县|