51单片机中怎么将函数或者变量定位到指定地址,非常有用
来源:互联网 发布:国产pdf编辑软件 编辑:程序博客网 时间:2024/05/17 09:15
问:C51 怎样将1个子程序段定位在1个固定的地址位置?
以下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、若有多个变量或函数要进行绝对地址定位,则应按地址从低到高的顺序排列。
以下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、若有多个变量或函数要进行绝对地址定位,则应按地址从低到高的顺序排列。
- 51单片机中怎么将函数或者变量定位到指定地址,非常有用
- 单片机C51变量或函数的绝对地址定位
- IAR中通过ICF指定某变量的地址 或者 通过语句指定
- 将var_dump内容保存到文件或者变量中
- 将附初值的的变量定位到ROM中
- 将附初值的的变量定位到ROM中
- 一次性将文件从磁盘中读取到指定变量
- Flex中 12个非常有用函数
- IAR将变量定义在指定地址
- 如何分配变量到指定的地址
- 如何分配变量到指定的地址
- 按指定的值将形状定位到 Chart 的坐标轴中
- 51单片机定时器中断函数中变量初始化的问题
- myeclipse / eclipse 怎么定位到代码指定行
- Myeclipse中快速定位到指定行
- vs2010怎么将生成的exe文件拷贝到指定文件夹中
- Keil C51中变量和函数的绝对地址定位问题
- Keil C51中变量和函数的绝对地址定位问题
- 栈的问题
- VxWorks 操作系统学习笔记
- OpenCV 3.1.c and 3.1.d 习题解答
- BCMwifi驱动学习
- Oracle游标中直接使用日期变量的问题解决
- 51单片机中怎么将函数或者变量定位到指定地址,非常有用
- LeetCode —— Median of Two Sorted Arrays
- java学习笔记------Java网络编程三
- hdu 2546(01背包)
- 薪水?发展?究竟怎样的工作才算是好工作?
- win8 pro 64 分区安装 正版
- E2题
- hdmi相关
- C语言声明的解析