问:c51 怎样将1个子程序段定位在1个固定的地址位置?
以下2问题均要用c51解决
1。 怎样将1个子程序段定位在1个固定的地址位置?
例如将 int bcd2hex(int xx)定位在1000h
2。 how在eeprom 中固定的位置存放1字符串?
如在200h处放“皇冠最新app版本 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 = {"皇冠最新app版本 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 = {"皇冠最新app版本 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、若有多个变量或函数要进行绝对地址定位,则应按地址从低到高的顺序排列。
『本文转载自网络,皇冠最新app版本的版权归原作者所有,如有侵权请联系删除』