函数绝对定位方法:
将链接方式从LX51改回BL51,然后再BL51 Locate中的Code框中写入:
?PR?_DELAY?DELAY(0x8000)
其中,前面那个_DELAY是指函数名叫做delay,前面为什么要加_还不清楚,而且原来无论是什么这里都是大写;
后面那个DELAY是指文件名叫做delay,也就是说这个函数要到delay.c中去找;
括号里面的当然就是要定位到的地址了。

如果不强制定位,连接器一般都会把程序从0开始安排,有多大安排多大。

ouravr网友总结(比较全):
使用KeilC51软件,可以很方便地将代码或者数据绝对定位到某个地址。

1、代码定位:

方法1:使用伪指令CSEG。比如要将MyFunc1定位到代码区C:0x1000,则新建一个A51文件,添加以下内容:

PUBLIC  MYFUNC1

CSEG AT 1000H

MYFUNC1:

;其它代码

RET

在其它源文件中,就可以调用MyFunc()函数了。需要注意的是,编译器不检测传递参数的数目,仅检测函数是否有返回值。

方法2:使用BL51 Locate选项。比如在main.c中定义了一个MyFunc2函数,并且要将该函数定位到代码区C:0x2000,则从菜单中选择Project->Options for Target 'Target1',在弹出的对话框中选择BL51 Locate页,在下面的code栏中写上?PR?MYFUNC2?MAIN(0x2000)即可。

如果想定位多个函数,也可以使用*通配符。

2、变量定位:

只有全局变量可以绝对定位,局部变量无法实现绝对定位。

方法1:使用_at_关键字。声明一个全局变量unsigned char data MyBuf1[8] _at_ 0x20;

方法2:使用BL51 Locate选项。比如将main.c中定义的所有data型的全局变量定位到数据区D:0x28开始的空间,则从菜单中

选择Project->Options for Target 'Target1',在弹出的对话框中选择BL51 Locate页,在下面的data栏中写上?DT?MAIN(0x28)即可。

如果是idata,则使用?ID?MAIN(0x28),如果是xdata,则使用?XD?MAIN(0x28),如果是pdata,则使用?PD?MAIN(0x28)

3、堆栈定位:

在STARTUP.A51文件中定义了堆栈区?STACK,其起始地址同样可以在BL51 Locate页中设置,在Stack栏写上?STACK(0x80)

LX51定位方法:
这个方法是在WizNet的ISP教程中发现的。
首先在需要定位的那个文件的首行写上 #pragma userclass(CODE = ISP)
当然=后面的那个名字是自己起的。
然后再options的LX51 Locate中的userclass中写上 CODE_ISP(C:0x8000)即可
很显然:后面的是定位地址,如果有多个,就再加逗号继续写。

keil中函数变量定位方法相关推荐

  1. AUTOSAR从入门到精通100讲(十五)-AURIX TC3xx MCAL中Link文件解析以及代码变量定位方法详解

    一 TC3xx系列MCAL中TASKING Link文件解析以及代码变量定位方法 1 TASKING Link文件解析 1.1 DSRAM中的数据存放: 在AURIX™ 2G中(以TC387为例),每 ...

  2. php中template函数,thinkPHP模板中函数的使用方法

    这篇文章主要介绍了thinkPHP模板中函数的使用方法,结合实例形式对比分析了php函数的单独使用与thinkPHP模板中php函数的相应使用技巧,需要的朋友可以参考下 1.php中的方法使用 $va ...

  3. 在嵌入在html中的pdf电子签章,一种网页PDF中电子签章定位方法与流程

    本发明属于一种电子签章技术领域,具体涉及一种网页PDF中电子签章定位方法. 背景技术: 国密电子签章中的套章方法操作复杂,无法对电子文档中一次性加盖多个印章的,大大降低了盖章效率,尤其是无法在所有需要 ...

  4. Java Ucase_JSP页面中的变量和方法声明(Declaration)、表达式(Expression)和Java程序片(Scriptlet)统称为JSP标记。...

    JSP页面中的变量和方法声明(Declaration).表达式(Expression)和Java程序片(Scriptlet)统称为JSP标记. 面中Access2010数据库7个对象中,()是实际存放 ...

  5. shadow-root中的元素定位方法

    shadow-root中的元素定位方法 背景 观察一下元素的DOM结构 我理解的shadow-root 定位步骤 实现元素定位的语句 还有一种更简单的方法 背景 最近接手了一个新项目的测试工作,前几天 ...

  6. python跨行字符串 变量_在Python中有没有在多行字符串中使用变量的方法?

    所以我把这个作为邮件发送脚本的一部分:try: content = ("""From: Fromname To: Toname MIME-Version: 1.0 Con ...

  7. wps里面函数怎么使用_WPS中函数的使用方法 - 卡饭网

    在WPS中输入化学方程式方法详解 在WPS中输入化学方程式方法详解 一.安装WPS化学助手 WPS化学助手可以让你在WPS中快速输入化学分子式.反应方程式,省去手动更改上下标和字母大小写的繁琐操作.登 ...

  8. 一种解析SAS程序文件中的变量的方法

    笔者使用的SAS数据库查询平台,对接了一个以JSON格式的分级授权引擎,需将用户提交给数据库查询的SQL语句拼接在JSON入参里,但大量用户使用的数据库查询语句SQL超长(超过32767字节),这里, ...

  9. 【python中selenium八大定位方法解析】

    1.python模拟人,打开浏览器,操做页面,验证系统的功能是否正确() 2.web自动化应用场景:1.冒烟测试(稳定的业务场景,主流程确认系统可用) 2.回归测试(稳定的业务场景,页面改的小) 场景 ...

  10. php中函数声明的方法,PHP中的函数声明与使用

    函数 1.  函数名是标识符之一,只能有字母数字下划线,开头不能是数字: 函数名的命名,必须符合"小驼峰法则"FUNC(),func(),Func(); 函数名不区分大小写; 函数 ...

最新文章

  1. Hexo 个人博客 SEO 优化(3):改造你的博客,提升搜索引擎排名
  2. boost创建线程池_Java并发 之 线程池系列 (1) 让多线程不再坑爹的线程池
  3. 迁移学习---inceptionV3
  4. why unit test of user status failed
  5. tcp文件服务器设计报告,TCPIP协议分析课程设计报告书.doc
  6. redis3.0.7_sds.c_sdsnewlen()
  7. python公式计算器_Python-计算器
  8. Linux下netstat常用,Linux netstat常用命令
  9. oracle创建一个学生,oracle 创建学生选课视图
  10. collectd 5.7.2 发布,系统监控和统计工具
  11. 10个新晋潮语,测你潮不潮!
  12. Blend 动画 模板
  13. 程序员实用算法 源码_程序员必须知道的十大基础实用算法综述
  14. 【读书笔记】iOS-Web应用程序的自动化测试
  15. 位运算初步入门状态压缩操作
  16. 信息处理技术员下午考试试题分析
  17. 海思Hi3796MV200最新官方SDK
  18. 矩阵的对称性,自反性和反对称性的判断
  19. 关于用C#实现宽带的连接
  20. 为什么日本人不吃鲤鱼

热门文章

  1. JAVA实现List集合去重
  2. 利用JS代码完成动态生成表格案例及解析
  3. 西门子840d备份到u盘_840dsl 启动服务U盘制作和CF卡数据备份回装
  4. 《遥感原理与应用》总结—遥感平台
  5. 开源ext2read代码走读之-扩展分区与逻辑分区说明及如何读取扩展分区的分区表(EBR)
  6. HashMap底层原理详解
  7. 1999年考研数学一解析pdf
  8. 三层交换机LLDP协议对 L2/L3端口,报文处理实验
  9. 蓝桥杯web:2.【Bug 调试】修复注册验证问题
  10. 常用HTML5开发工具有哪些?