C51函数和变量常量绝对地址定位

1.  变量绝对地址定位

     在定义变量时使用 _at_ 关键字加上地址就可.

     e.g.

     unsigned char idata myvar _at_ 0x40;

     把变量 myvar 定义在 idata 的 0x40 处, 在 map 文件中可以找到这麽一行

     IDATA   0040H     0001H     ABSOLUTE    

     表示有变量在 idata 的 0x0040 处绝对地址定位.

2. 函数绝对地址定位

   使用 KeilC 编译器定位绝对地址的函数, 打开 Project -> Options for Target 菜单, 选中 BL51 Locate 选项卡, 在 Code: 中输入:

   ?PR?myTest?MAIN(0x4000)

   把函数 myTest 定位到程序区的 0x4000 处(此函数在main.c文件中),再次编译就可以了.

3. 软堆栈指针定位

    当函数被定义为reentrant时,程序将使用软堆栈。

     ?C?LIB_DATA(0x7f)

    表示把软堆栈指针定位到RAM的data区0x7f处。

4.常量绝对地址定位

  ?CO?LIN_LINKLAYER(0x80)

 表示把常量定位到CODE区0x80处。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值