新聞中心

        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)。



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 鄂托克前旗| 长白| 京山县| 沾益县| 宜都市| 建阳市| 保靖县| 博客| 大城县| 肥乡县| 定南县| 揭西县| 小金县| 罗田县| 京山县| 六安市| 婺源县| 怀宁县| 沽源县| 河西区| 陵川县| 察雅县| 治县。| 江源县| 天柱县| 河南省| 威宁| 华安县| 紫云| 泰兴市| 黑水县| 南投县| 永康市| 丹棱县| 英吉沙县| 剑河县| 施甸县| 云龙县| 彩票| 渭源县| 永嘉县|