老古开发网首页
导航:老古开发网首页文章索引文章分类单片机→[C51 怎样将1个子程序段定位在1个固定的地址位置?]
| -文章搜索 - 最新文章 - |

C51 怎样将1个子程序段定位在1个固定的地址位置?

发布时间:2005年3月26日 点击次数:3824
来源:   作者:
 
以下2问题均要用C51解决
1。 怎样将1个子程序段定位在1个固定的地址位置?
    例如将 INT BCD2HEX(INT XX)定位在1000H
2。 HOW在EEPROM 中固定的位置存放1字符串?
    如在200H处放“COPYRIGHT 2001-11”
答: 函数定位与变量定位...

1、函数定位:
假如要把C源文件 tools.c 中的函数
int BIN2HEX(int xx)
{
  ...
}
放在CODE MEMORY的0x1000处,先编译该工程,然后打开该工程的M51文件,在
* * *   C O D E   M E M O R Y   * * *
行下找出要定位的函数的名称,应该形如:
CODE    xxxxH     xxxxH     UNIT         ?PR?_BCD2HEX?TOOLS
然后在:
Project->Options for Target ...->BL51 Locate:Code
中填写如下内容:
?PR?_BCD2HEX?TOOLS(0x1000)
再次Build,在M51中会发现该函数已放在CODE MEMORY的0x1000处了

2、赋初值的变量定位:
要将某变量定位在一绝对位置且要赋初值,此时用 _at_ 不能完成,则如下操作:
在工程中建立一个新的文件,如InitVars.c,在其中对要处理的变量赋初值(假设是code变
量):
char code myVer = {"COPYRIGHT 2001-11"};
然后将该文件加入工程,编译,打开M51文件,若定义的是code型,则在
* * *   C O D E   M E M O R Y   * * *
下可找到:
CODE    xxxxH     xxxxH     UNIT         ?CO?INITVARS
然后在:
Project->Options for Target ...->BL51 Locate:Code
中填入:
?CO?INITVARS(0x200)
再次编译即可。

相应地,如为xdata变量,则InitVars.c中写:
char xdata myVer = {"COPYRIGHT 2001-11"};
然后将该文件加入工程,编译,打开M51文件,在
* * *  X D A T A   M E M O R Y  * * *
下可找到:
XDATA   xxxxH     xxxxH     UNIT         ?XD?INITVARS
然后在:
Project->Options for Target ...->BL51 Locate:Xdata
中填入:
?XD?INITVARS(0x200)
再次编译即可。相应地,若定义的是data/idata等变量,则相应处理即可。

3、若有多个变量或函数要进行绝对地址定位,则应按地址从低到高的顺序排列

欢迎进入老古论坛进行讨论
[单片机] 相关文章:
如何正确使用内存
简介:
对于初学者来说,内存是个神秘的空间。程序的绝大部分错误,也是在于内存的使用不当造成的,而且这些错误有些都是隐藏很深的。所以,如何掌握内存的使用,通晓系统对内存的管理手段,将是软件成功的一个非常关键的因素。     首先我们要了解内存的分配方式。一般来说,内存的分配方式有三种:      1.从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。      2.在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内......

用计算机并口模拟SPI通讯的C源程序
CRC16-STANDARD的快速算法,51汇编
IIC总线模拟程序
CRC算法原理及C语言实现
几种码制转换 BCD TO HEX,HEX TO BCD ,BIN TO HEX
DSP与单片机的一种高速通信实现方案
利尔达推出MSP430FE42x单相多功能防窃电电能表解决方案
volatile的用法
keil中的变量和常量定位问题
 
下一个:[PIC MSP430 ]晶振电路中如何选择电容C1,C2?
简介:
(1):因为每一种晶振都有各自的特性,所以最好按制造厂商所提供的数值选择外部元器件。 (2):在许可范围内,C1,C2值越低越好。C值偏大虽有利于振荡器的稳定,但将会增加起振时间。 (3):应使C2值大于C1值,这样可使上电时,加快晶振起振。......
 

上一个:[电路板]protel网络载入时报告NODE没有找到

老古开发网版权所有 2006年9月 asp.Net V2.0 设计:老古
页面缓存:10分钟 执行时间:16毫秒