|
|||||||||||
| 技術交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術 | 電源技術 | 測控之家 | EMC技術 | ARM技術 | EDA技術 | PCB技術 | 嵌入式系統(tǒng) 驅動編程 | 集成電路 | 器件替換 | 模擬技術 | 新手園地 | 單 片 機 | DSP技術 | MCU技術 | IC 設計 | IC 產業(yè) | CAN-bus/DeviceNe |
想在C中嵌入段匯編 |
| 作者:sybaselu 欄目:單片機 |
想在C中嵌入段匯編,是不是如下: while(1) { start: #pragma ASM .....JB P3.2, start;(能到start那里嗎?) #pragma ENDASM |
| 2樓: | >>參與討論 |
| 作者: sybaselu 于 2005/1/24 19:02:00 發(fā)布:
編譯不過! 可是問題是,當我用偉福的編譯器編譯完后,提示: 'asm/endasm' requires src-control to be active(要求源碼控制被激活?什么意思?) 是不是在源碼的開頭加上什么參數(shù)的 |
|
| 3樓: | >>參與討論 |
| 作者: sybaselu 于 2005/1/24 20:06:00 發(fā)布:
后來 后來在源文件頭加上 #pragma SRC 編譯還是提示錯,好像是文件或路徑找不到.OBJ文件找不到!請教! |
|
| 4樓: | >>參與討論 |
| 作者: lu_weixi 于 2005/1/24 20:06:00 發(fā)布:
要加入以下控制 #pragma src(abc.asm) 就可以通過編譯了。最后你要用abc.asm這個文件。 |
|
| 5樓: | >>參與討論 |
| 作者: abc2001 于 2005/1/25 8:35:00 發(fā)布:
看一下這個例程吧. //<asm.h> #ifdef ASM unsigned LONG shiftR1(register unsigned LONG); #else extern unsigned LONG shiftR1(register unsigned LONG); #endif //end of asm.h //<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嵌入?yún)R編語句。 但要注意的是在直接使用形參時要小心,在不同的優(yōu)化級別下產生的匯編代碼有所不同, 可以察看對應的.lst文件看一看,得到正確的優(yōu)化級別后,#pragma OT(x,speed)鎖定 優(yōu)化級別(這里的值是0-9)。 |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |