找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 8134|回复: 0
打印 上一主题 下一主题
收起左侧

51单片机对绝对地址访问的几种方法

[复制链接]
跳转到指定楼层
楼主
ID:342442 发表于 2018-10-13 08:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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,也不是很难,举个例说明一下就会明白:
#include <absacc.h>
XBYTE[0x8400]=0;
两种方法都是向外部存储器(XDATA)地址 0x8400 写0
本人强烈建议用“_at_”进行编程,这样可能会更好些,
还有一点就是不能乱用,因为有些存储器空间不能随便占用,C51 编译器已经做其它的用了,
而且有些空间单片机本身就做了很重要的作用,如果乱用,很容易出错.


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

81.47 KB, 下载次数: 23, 下载积分: 黑币 -5

51单片机,绝对值地址

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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