51汇编&C51相互调用

**

前言

**
单单是用汇编还是C都太无聊了,让我们进入混合编程的世界吧!

在C51中嵌入51汇编代码

第一个任务是想随便在C里嵌入一个延时准确的函数,自然需要用汇编啦。
(暂时还不传参数进汇编)

#include<reg52.h>
typedef unsigned int u16;
typedef unsigned char u8;

void delay(u16 i){
	
#pragma asm
	mov r7,#20
DL1:
	mov r6,#20
DL0:
	mov r5,#200
	djnz r5,$
	djnz r6,DL0
	djnz r7,DL1
#pragma endasm

}
void main(){

	P2=0xff;
	while(1){
		P2=~P2;
	 	delay(500);
	}
}

用Keil编程的时候别忘记需要为需要嵌入汇编的C文件设置SRC编译控制命令。这个命令能把C文件编译成汇编文件。

在需要嵌入汇编的C文件处右击,找到Options for File ‘xxx.c’,把两个勾点黑
在这里插入图片描述

然后还需要引入一个静态库文件,在Keil的安装目录里,找到C51\C51S.LIB。把这个文件加入你的Source Group.

运行效果:
在这里插入图片描述

现在终于嵌入了汇编了。可以通过打断点,调试,好设置准确的延时时间了。
混合编程的目的已经实现了。
但是这仅仅是开始。

参考:KeilC51中 C51程序与汇编程序的接口方法——张玉峰,荀建军
https://blog.csdn.net/u012363005/article/details/51814126

猜你喜欢

转载自blog.csdn.net/weixin_41374099/article/details/89043358
C51