**
前言
**
单单是用汇编还是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