打印
[技术问答]

keil c51中变量 常量 函数的定位

[复制链接]
437|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
robincotton|  楼主 | 2024-6-30 19:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
Keil C51 中变量、常量、函数的定位是指在编译器中将变量、常量、函数定位到某个特定的存储器地址上,以满足特定的应用需求。下面是 Keil C51 中变量、常量、函数定位的相关知识点:

一、代码定位

Keil C51 中有两种方法可以将代码定位到某个特定的存储器地址上:

1. 使用伪指令 CSEG:可以在 A51 文件中使用伪指令 CSEG 将代码定位到某个特定的存储器地址上。
2. 使用 BL51 Locate 选项:可以在 Project->Options for Target 'Target1' 中选择 BL51 Locate 页,并在下面的 code 栏中写上相应的地址信息。

二、变量定位

Keil C51 中只有全局变量可以绝对定位,局部变量无法实现绝对定位。有两种方法可以将变量定位到某个特定的存储器地址上:

1. 使用_at_关键字:可以使用_at_关键字将变量定位到某个特定的存储器地址上。
2. 使用 BL51 Locate 选项:可以在 Project->Options for Target 'Target1' 中选择 BL51 Locate 页,并在下面的 data 栏中写上相应的地址信息。

三、堆栈定位

Keil C51 中可以在 STARTUP.A51 文件中定义堆栈区,并将其定位到某个特定的存储器地址上。

四、_at_关键字的使用

_at_关键字可以用于将变量或函数定位到某个特定的存储器地址上。但需要注意的是,在使用_at_关键字时,不能对变量赋初值,并且这条语句不能在主函数中使用。

五、STARTUP.A51 文件的作用

STARTUP.A51 文件用于定义堆栈区和内存初始化部分。如果不添加该文件,编译器将自动加入一段初始化内存以及堆栈等的代码,这时的内存初始化部分将无法控制。

使用特权

评论回复
沙发
caigang13| | 2024-7-1 08:28 | 只看该作者
Keil的代码编辑确实没有像VS、eclipse好用。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

20

主题

1265

帖子

0

粉丝