关于51单片机C语言与汇编混编的教程
51单片机C语言与汇编混合编程
7.8 C51语言与汇编语言混合编程
在某些需要精确控制指令运行时间的环境,我们可以使用Keil C51 语言与汇编语言混合编程。
7.8.1 在C51语言函数中嵌入汇编语言
(1)在C51语言函数中要嵌入汇编语言,可以用如下方式加入汇编代码:
#pragma ASM
; Assembler Code Here
#pragma ENDASM
(2)这时必须对编译器进行设置,一种方式是在uVision2编辑环境的Project窗口中包含汇编代码的C文件上单击右键,选择“Opitons for…”单击右边的“Generate Assembler SRC File”和 “Assemble SRC File”选择框,使检查框由灰色变成黑色(有效)状态;另外一种方法是在程序中添加编译器控制命令,编译器控制指令“#pragma src”和“#pragma asm/#pragma endasm”实现。“src”为编译控制命令,令编译器将C源文件编译成汇编文件。
格式:
#pragma src (放在文件开始)
:
[return_type] function_name([args]) [其他参数]
{ : (C语言源程序)
#pragma asm
: (汇编语言源程序)
#pragma endasm
: (C语言源程序)
}
这两种方法都是告诉编译器将包含汇编语言的C51文件编译成汇编语言文件。
(3)根据选择的编译模式,把相应的库文件(如Small模式时,是Keil\C51\Lib\C51S.Lib) 加入工程中,该文件必须作为工程的最后文件。
(4)编译,即可生成目标代码。
例:
#include
void main()
{
P2=1;
#pragma asm
MOV R7,#10
DEL:MOV R6,#20
DJNZ R6,$
DJNZ R7,DEL
#pragma endasm