电路驿站 EDAdesign.com.cn 网站创建日期:2004年10月1日

 
首页
| 设计与应用
| 驿站大卖场
| 驿站课堂
| 代客设计
| 服务与支持
| 留言本
单片机C51基础教程

>首页驿站课堂C51基础教程第四章 Keil C51高级编程

∷ 51教程导航
·
Keil C51开发系统基本知识
·
Keil C51软件使用详解
·
Keil C51 vs 标准C
·
Keil C51高级编程
·
Keil C51库函数参考
·
Keil C51例子:Hello.c
·
Keil C51的代码效率
·
Keil C51 软件使用方法
 
 
 
C51基础教程
来源:http://www.51c51.net 作者: 资料整理:电子虫虫
·
第四章 Keil C51高级编程
 
第一节
绝对地址访问
第二节
Keil C51与汇编的接口
第三节
C51软件包中的通用文件
第四节
段名转换与程序优化
   
 
1 2 3 4

  第二节 Keil C51与汇编的接口
 

1. 模块内接口
方法是用#pragma语句具体结构是:

#pragma asm

汇编行

#pragma endasm

这种方法实质是通过asm与ndasm告诉C51编译器中间行不用编译为汇编行,因而在编译控制指令中有SRC以控制将这些不用编译的行存入其中。

2. 模块间接口
C模块与汇编模块的接口较简单,分别用C51与A51对源文件进行编译,然后用L51将obj文件连接即可,关键问题在于C函数与汇编函数之间的参数传递问题,C51中有两种参数传递方法。

(1) 通过寄存器传递函数参数

最多只能有3个参数通过寄存器传递,规律如下表:

 

参数数目

char

int

long,float

一般指针

1

R7

R6& R7

R4~R7

R1~R3

2

R5

R4& R5

R4~R7

R1~R3

3

R3

R2& R3

 

R1~R3

  (2) 通过固定存储区传递(fixed memory)

这种方法将bit型参数传给一个存储段中:

?function_name?BIT

将其它类型参数均传给下面的段:?function_name?BYTE,且按照预选顺序存放。

至于这个固定存储区本身在何处,则由存储模式默认。

(3) 函数的返回值

函数返回值一律放于寄存器中,有如下规律:

 

return type

Registev

说明

bit

标志位

由具体标志位返回

char/unsigned char 1_byte指针

R7

单字节由R7返回

int/unsigned int 2_byte指针

R6 & R7

双字节由R6和R7返回,MSB在R6

long&unsigned long

R4~R7

MSB在R4, LSB在R7

float

R4~R7

32Bit IEEE格式

一般指针

R1~R3

存储类型在R3 高位R2 低R1

  (4) SRC控制

该控制指令将C文件编译生成汇编文件(.SRC),该汇编文件可改名后,生成汇编.ASM文件,再用A51进行编译。

   
 

关于驿站 | 驿站声明 | 网站介绍 | 网站推广 | 联系我们 | 友情链接
Copyright@2004-2008 EDAdesign.com.cn 版权所有 不得转载 沪ICP备05000346号
版主:威特 E-Mail:edadesign@tom.com 联系站长! QQ:306963535 QQ群:10116628