51单片机C语言编程中对单片机绝对地址访问的两种方法

在进行8051单片机应用系统程序设计时,编程都往往少不了要直接操作系统的各个存储器地址空间。
C51程序经过编译之后产生的目标代码具有浮动地址,其绝对地址必须经过BL51连接定位后才能确定。
为了能够在C51程序中直接对任意指定的存储器地址进行操作,可以采用扩展关键字“at”、指针、预定义以及连接定位控制命令。
在这些方法中,本人认为最简单而有效的方法是用“ _at_ ”关键字来对指定变量存储器空间绝对地址来指定。一般格式如下:
[存储器类型]    数据类型  标识符   _at_      地址常数
 其中:
 (1).存储器类型: idata、data、xdata等C51能够识别的所有类型,最好不要省略。
 (2).数据类型: 可以用int、long、float等基本类型,当然也可以用数组、
 结构等复杂数据类型类型,本人认为一般用unsigned int 就可以解决很多问题了。
 (3).标识符: 就是要定义的变量名,编程者自己决定
 (4).地址常数就是要直接操作的存储器的绝对地址,必须位于有效的存储器空间之内。
注意:不能对变量进行初始化,只能是全局变量,一般不要轻易用,免得出错。
举例:
xdata unsigned int  addr1 _at_ 0x8400;
addr1 = 0;
另有一种方法就是要用到一个头文件absacc.h,也不是很难,举个例说明一下就会明白:

                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值