keil C 语言中嵌入汇编语言进行混合编程,方法如下:
1、在C 文件中要嵌入汇编代码片以如下方式加入汇编代码
#pragma ASM
; Assembler Code Here
#pragma ENDASM
2、在Project 窗口中包含汇编代码的C 文件上右键,选择“Options for ...”
在弹出的对话框中,点击右边的
“Generate Assembler SRC File”
和“Assemble SRC File”
使检查框由灰色变成黑色(有效)状态
3 、根据选择的编译模式, 把相应的库文件( 如Small 模式时, 是
Keil\C51\Lib\C51S.Lib)加入工程中, 该文件必须作为工程的最后文件,在默认
安装盘KEIL/C51/LIB/C51S.Lib
4、编译,即可生成目标代码
实例:
#include
#define uchar unsigned char
sbit LED1=P1^0;
//C 嵌入汇编例程
void delay_ms(void)
{
#pragma asm
MOV R0,#0FFH
MOV R1,#0FFH
D_LOOP1:
DJNZ R0,D_LOOP1
MOV R0,#0FFH
DJNZ R1,D_LOOP1
#pragma endasm
}
void main(void)
{
uchar i;
P1 = 0xFF;
while(1)
{
i++;
delay_ms();
if(i>=7)
{
LED1 =~LED1;
i=0;
}
}
}
右击工程的文件夹 把库文件添加进去 像添加文件一样
建议: 用C语言做个框架,编译后改为汇编框架,填入汇编程序,一般可以保证和C语言兼容.注意格式
_asm
{
.......
........
......
}
=====================================================
把asm作关键字,其后的汇编用大括号阔起
如:
void set_time(void)
{
asm
{
del1:
mov r4,#0fh
del2:
mov r5,#0fh
djnz r5,del2
djnz r4,del1
}
}
或
void set_time(void)
{ asm del1:
asm mov r4,#0fh
asm del2:
asm mov r5,#0fh
asm djnz r5,del2
asm djnz r4,del1
}
还有编译器的设置问题
===================================================
KEILC51中是可以直接嵌入汇编,方法为#Pragma asm 汇编行 #pragma ,注意在写汇编之后要
记得加 END 这样子就OK了。
参考资料:http://www.hificat.com/data/Article/apply/200801/2311.html