您当前的位置:五五电子网电子知识电子学习基础知识电脑-单片机-自动控制单片机函数的声明及段的命名规则 正文
单片机函数的声明及段的命名规则

单片机函数的声明及段的命名规则

点击数:7637 次   录入时间:03-04 11:46:43   整理:http://www.55dianzi.com   电脑-单片机-自动控制

  1、函数的声明
  
  为了使C程序和汇编程序相互调用,要求汇编程序必须遵循C51中函数名的转换规则,否则将无法实现程序的相互调用。C51中函数名的转换规则如下表所示。

C51函数声明 转换函数名 说明 void func (void) FUNC 无参数传递或参数不通过寄存器传递的函数,其函数名不作改变转入目标文件中 void func (char) _FUNC 带有用寄存器传递参数的函数,在其名字前加上前缀“_”作为区别,表明函数包含寄存器内的参数传递 void func (void) reentrant _?FUNC 对于再入函数,在其名字前加上前缀“_?”作为区别,它包含堆栈内的参数传递

  2、段的命名规则
  
  C51程序模块被编译后,其中的函数都以“?PR?函数名?模块名”为名的命名规则被分配到CODE段中;而函数中的DATA和BIT对象则以“?函数名?BYTE”和“?函数名?BIT”的命名规则建立DATA和BIT段。在C51程序和汇编程序相互调用时,汇编语言必须遵循C51中有关段名命名规则,其命名规则如下表所示。

数据 段类型 段名 程序代码 CODE ?PR?函数名?模块名(所有存储器模式) 局部变量 DATA ?DT?函数名?模块名(SMALL模式) PDATA ?PD?函数名?模块名(COMPACT模式) XDATA ?XD?函数名?模块名(LARGE模式) 局部bit变量 BIT ?BI?函数名?模块名(所有存储器模式)

  以下给出一个示例:
  
  ;**********汇编程序使用A51进行编译、
  
  调试**********
  
  NAMESCAN;定义模块名
  
  ?PR?SCAN_KEY?SCANsegmeNTCode;
  
  定义程序代码段
  
  PUBLICSCAN_KEY;定义公共符号,函数名
  
  RSEG?PR?SCAN_KEY?SCAN;程序代码段
  
  SCAN_KEY:;起始地址……END
  
  /***********C程序使用C51进行编译、
  
  调试************/
  
  #include<reg51.h>
  
  externvoidscan_key();/*对外部被调函数的声明
  
  */voiDMAin(void)
  
  {……scan_key();/*调用汇编函数*/……
  
  }




本文关键字:单片机  命名  电脑-单片机-自动控制电子学习 - 基础知识 - 电脑-单片机-自动控制

《单片机函数的声明及段的命名规则》相关文章>>>