文档介绍: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\)加入工程中, 该文件必须作为工程的最后文件,在默认
安装盘 KEIL/C51/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;
}
}
}
2 . 无参数传递的函数调用
C51调用汇编函数
先来个例子:其中 和 为项目中的两个文件
/*************************************************************
*********/
#include<>
#define uchar unsigned char
extern void delay100();
sbit LED1=P1^1;
/******************************************
C 嵌入汇编例程
******************************************/
void main(void)
{
uchar i;
P1 = 0xFF;
while(1)
{
i++;
delay100();
if(i>=7)
{
LED1 =~LED1;
i=0;
}
}
}
;**************************************************
?PR?DELAY100 SEGMENT CODE; //在程序存储区中定义段
PU