300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > c语言中存储器的绝对地址 51单片机C语言编程中对单片机绝对地址访问的两种方法...

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

时间:2023-08-12 12:46:32

相关推荐

c语言中存储器的绝对地址 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 XBYTE[0x8400]=0;

两种方法都是向外部存储器(XDATA)地址0x8400写0

本人强烈建议用“_at_”进行编程,这样可能会更好些,

还有一点就是不能乱用,因为有些存储器空间不能随便占用,C51编译器已经做其它的用了,

而且有些空间单片机本身就做了很重要的作用,如果乱用,很容易出错.

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。