單片機(jī)keil 常見問題
一、混合編程
1、模塊內(nèi)接口:
使用如下標(biāo)志符:
#pragma asm
匯編語(yǔ)句
#pragma endasm
注意:如果在c51程序中使用了匯編語(yǔ)言,注意在keil編譯器中需要激活Properties中的“Generate Assembler SRC File” 和“Assembler SRC File ”兩個(gè)選項(xiàng)
來個(gè)實(shí)例吧:
#i nclude
void main(void)
{
P2=1;
#pragma asm
MOV R7,#10
DEL:MOV R6,#20
DJNZ R6,$
DJNZ R7,DEL
#pragma endasm
P2=0;
}
另:
1、把"xx.c"加入工程中,右擊"xx.c"選擇“options for file"xx.c" 選擇“Generate Assembler SRC File”和“Assemble SRC File”打上黑勾有效;
2、根據(jù)選擇的編譯模式,把相應(yīng)的庫(kù)文件象加"xx.c"一樣加入工程中并放在"xx.c"下面,如smail模式下選"keilc51libc51s.lib"加入工程中,如果要進(jìn)行浮點(diǎn)運(yùn)算把"keilc51libc51fpl.lib"也加入工程中。
在 Keil 安裝目錄下的 C51LIB 目錄的LIB 文件如下:
C51S.LIB - 沒有浮點(diǎn)運(yùn)算的 Small model
C51C.LIB - 沒有浮點(diǎn)運(yùn)算的 Compact model
C51L.LIB - 沒有浮點(diǎn)運(yùn)算的 Large model
C51FPS.LIB - 帶浮點(diǎn)運(yùn)算的 Small model
C51FPC.LIB - 帶浮點(diǎn)運(yùn)算的 Compact model
C51FPL.LIB - 帶浮點(diǎn)運(yùn)算的 Large model
3、在"xx.c"頭文件中加入優(yōu)化:比如#pragma OT(4,speed)
4、在"xx.c"中加入?yún)R編代碼
#pragma ASM
;Assembler Code Here
#pragma ENDASM
5、編譯生成xx.hex
注意:
沒有做第一步會(huì)有如下警告:'asm/endasm' requires src-control to be active
沒有做第二步會(huì)有如下警告:UNRESOLVED EXTERNAL SYMBOL;
REFERENCE MADE TO UNRESOLVED EXTERNAL等
沒有做第三步會(huì)有如下警告:UNDEFINED SYMBOL (PASS-2)
51單片機(jī)相關(guān)文章:51單片機(jī)教程
c語(yǔ)言相關(guān)文章:c語(yǔ)言教程
單片機(jī)相關(guān)文章:單片機(jī)教程
單片機(jī)相關(guān)文章:單片機(jī)視頻教程
單片機(jī)相關(guān)文章:單片機(jī)工作原理
評(píng)論