找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 11396|回复: 8
收起左侧

[原创]如何实现c51和asm的混编

[复制链接]
ID:7 发表于 2008-6-9 19:07 | 显示全部楼层 |阅读模式

这是我在编程中积累的经验,希望对大家有用!

如何实现C51和汇编的混合编程
(文中用到的编译器一律为keil)
1、首先来个范例,并从这个范例展开说明:
............       //C51 Code here
#pragma ASM
.............     //Here is the Assembler Code
#pragma ENDASM
...........      //C51 Code here

2、看到范例,大家应该对实现C51和汇编的混合有个大概了解了,呵呵,

其实也就这么一回事。
但是我们还必须要做一些前提工作,首先在Project窗口中包含汇编代码(

ASM)的C文件单击右键,选择“Options for ...”,然后点击“Generate

Assembler SRC File”和“Assemble SRC File”

3、根据选择的编译模式,把相应的库文件加入工程,应该注意的是,这个

文件必须作为该工程的最后一个文件


4、大家可以复制下面这个C51和汇编的混编代码练习一下,加深印象
#i nclude <reg51.h>
void main(void)
{
 P2=0x00;
 #pragma asm
      MOV R7,#10
 #pragma endasm
 P2=0xff;
}


5、上面的过程掌握了以后,我们再来看一下如何实现无参数传递的函数调


例如我们要调用一个延时函数delay()
     //C51
extern void delayms();   //声明
int main()
{
 delayms();   //调用
}


6、有参传递
其实是一样的,就是在子函数中加了参数罢了
例如:int delay(int minite,int second,……)//参数可以多个

回复

使用道具 举报

ID:3490 发表于 2008-7-20 09:02 | 显示全部楼层

求助!!!! 大侠,我还是不知道.我是初学者!!

回复

使用道具 举报

ID:2902 发表于 2008-7-27 22:37 | 显示全部楼层

o(∩_∩)o...学习了

回复

使用道具 举报

ID:67887 发表于 2014-10-27 20:50 | 显示全部楼层
高手。。。。。
回复

使用道具 举报

ID:50881 发表于 2014-11-10 13:35 | 显示全部楼层
顶!!!!!!!
回复

使用道具 举报

ID:72947 发表于 2015-1-31 23:00 来自手机 | 显示全部楼层
正想研究这个方法呢……顶一个
回复

使用道具 举报

ID:103327 发表于 2016-1-26 18:40 | 显示全部楼层
很不错,楼主厉害,谢楼主!支持一下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表