新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > keil c6.20c嵌入匯編源碼編譯方法簡介

        keil c6.20c嵌入匯編源碼編譯方法簡介

        作者: 時間:2012-05-16 來源:網絡 收藏

        //asm.h>
        #ifdef ASM
        unsigned long shiftR1(register unsigned long);
        #else
        extern unsigned long shiftR1(register unsigned long);
        #endif
        //end of asm.h

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

        //asm.c>
        #define ASM
        #include asm.h>
        #include reg52.h>
        #pragma OT(4,speed)
        unsigned long shiftR1(register unsigned long x)
        {
        #pragma asm
        clr c
        mov a,r4
        rrc a
        mov r4,a

        mov a,r5
        rrc a
        mov r5,a

        mov a,r6
        rrc a
        mov r6,a

        mov a,r7
        rrc a
        mov r7,a

        #pragma endasm
        return(x);
        }
        //end of asm.c
        將此源文件加入要的工程文件,將光標指向此文件,選擇右鍵菜單option for file asm.c”,將屬性單“properties”中的“Generate Assembler SRC File”“Assemble SRC File”兩項設置成黑體的“√”將“Link Public Only”的“√”去掉,再即可。用此可以在c源代碼的任意位置用#pragma asm和#pragma endasm語句。但要注意的是在直接使用形參時要小心,在不同的優化級別下產生的代碼有所不同,可以察看對應的.lst文件看一看,得到正確的優化級別后,#pragma OT(x,speed)鎖定優化級別(這里的值是0-9)。



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 卫辉市| 宜川县| 长阳| 商水县| 松江区| 本溪| 翁源县| 睢宁县| 凌云县| 乌拉特前旗| 广德县| 炉霍县| 民勤县| 天气| 射阳县| 夏津县| 武鸣县| 平顶山市| 阳朔县| 广东省| 涟源市| 兴文县| 随州市| 孟州市| 镶黄旗| 望江县| 高雄市| 江津市| 上饶市| 西藏| 浏阳市| 阿巴嘎旗| 江城| 天门市| 和田县| 遵化市| 成都市| 班玛县| 汽车| 拜泉县| 响水县|