找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1902|回复: 2
收起左侧

绝对地址定位问题

[复制链接]
ID:83710 发表于 2015-6-24 21:12 | 显示全部楼层 |阅读模式
   C中定义的全局变量、数组就是固定的了,直接操作吧,比较方便。实际的地址是编译器自动分配的,具体在哪里要看汇编。

汇编里可以直接指定,这是汇编的好处。

以下转自网络
在网上看到有人提到在keil中使用_at_进行绝对地址定位问题,我简单介绍一下它的用法。
使用_at_关键字对存储器进行绝对地址定位程序如下

#i nclude<reg51.h>

char xdata LED_Data[50] _at_ 0x8000;

main()

{

LED_Data[0] = 0x23;

}

在keil中运行以上程序可以在存储器窗口中输入 x:0x8000 可以看到0x8000地址中的值为0x23.

值得指出的几点是

1.在给变量LED_Data[50]定位绝对地址空间时,不能对其赋初值。

2.char xdata LED_Data[50] _at_ 0x8000;这条语句不能主函数中。有些网友提到在按着keil说明中用_at_进行绝对地址定位时,编译会出现错误274,就是将这条语句放在主函数中的原因。

3.keil中地址是自动分配的,所以除非特殊情况否则不提倡使用绝对地址定位。初学者因帖别注意。不要把c当作汇编使用。                                                                                                                     
回复

使用道具 举报

ID:188406 发表于 2017-4-11 11:35 | 显示全部楼层
楼主,如果定义的是一个全局变量,在其他c文件中调用的话,编译你看看内存使用量会不会异常
回复

使用道具 举报

ID:188406 发表于 2017-4-11 11:36 | 显示全部楼层
楼主,如果定义的是一个全局变量,在其他c文件中调用时,内存使用量会不会异常
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表