keil c51 c语言支持,介绍一下KEIL C51所支持的C语言和汇编语言混合编程的方法!

请 登录 后使用快捷导航

没有帐号?注册

阅 12727|回 15

最后登录2015-5-3

在线时间8 小时

威望63分

芯积分E金币好友

18887cfa2281b1328835ec8b83790451.png

发表于2010-12-8 19:54

介绍一下KEIL C51所支持的C语言和汇编语言混合编程的方法!

[复制链接]

51单片机是最早的单片机,也是在国内应用最广泛的单片机,为大家所喜爱!但执行速度较其它单片机较慢。因此在编程时更加要注重程序的执行效率及编程上的技巧处理,最大限度的发挥其性能,满足项目开发的实际需要。在嵌入式开发中,C语言具有可移植性强和可读性好等优点,而汇编语言的高效、快速及可直接对硬件进行操作等优点又是C语言所难以达到的,本帖就为大家介绍一下KEIL C51所支持C和汇编混合编程的方法,将这两种语言的优点完美的结合,更大限度的发挥51单片机的性能,加快我们的产品开发周期!

如用此方法实现6时钟(6T)的51单片机对320kbps mp3文件的流畅播放,就是这种混合编程的方法的一个很好的应用实例!下面就为大家介绍一下混合编程的方法。

所谓混合编程,就是在一个项目中,同时使用C和汇编两种语言。 C语言和汇编语言混合编程的方法形式多样,可以是以汇编语言为主体,在其中内嵌部分C语言;也可以是以C语言为主体在其中加入部分汇编语言(此方法实用价值较高,而被工程师们广泛的采用)。在此方法中,用汇编语言编写对有关硬件的驱动和处理、复杂的算法、实时性要求较高等底层的东西,来满足单片机对某些硬件高效、快速、精确的处理等性能上的要求。用C语言来编写程序的主体部分。这样就将C语言的可移植性强和可读性好与汇编语言的高效、快速及可直接对硬件进行操作等优点相结合。两者优劣互补、相得益彰,加快我们产品的开发周期,具有极高的现实意义和实用价值!

在KEIL C51中加入的汇编代码需按照其编译器中约定的规则才可以实现C语言程序对汇编代码的调用。即KEIL C51的命名规则和参数传递规则。

一. KEIL C51的命名规则

在KEIL C51中,编译器对C语言程序中的函数会自动的进行转换,转换规则如下表:

函数属性      函数举例 段中的函数名

无参数或无寄存器参数传递的函数           void func1(void)   func1

含通过寄存器传递的参数                   void func2(int)       _func2

可重入函数                 void func3(char)reentrant       _?func3

二. KEIL  C51函数的参数传递规则

(一)通过寄存器传递的函数参数表

参数长度 第1个形参 第2个形参 第3个形参

1字节(char)   R7  R5  R3

2字节(int)   R6(H) R7  R4(H) R5  R2(H) R3

3字节(通用指针) R1(H)~R3

4字节(long)   R4(H)~R7

(二)函数返回值使用的寄存器列表

返回类 使用的寄存器

位数据(bit) 位累加器CY

1字节(char) R7

2字节(int) R6(H) R7

3字节(通用指针) R3(类型)R2(H) R1

4字节(long) R4(H)~R7

4字节(float) R4(H)~R7,32位IEEE格式,指数和符号位在R7

在混合编程中,最常用也是最实用的方法是在C语言中加入部分汇编语言的代码,分为两种方法。

方法1)在Keil C51的函数中直接插入

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值