单片机
返回首页

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

2015-10-10 来源:eefocus

在进行8051单片机应用系统程序设计时,编程都往往少不了要直接操作系统的各个存储器地址空间。C51程序经过编译之后产生的目标代码具有浮动地址,其绝对地址必须经过BL51连接定位后才能确定。为了能够在C51程序中直接对任意指定的存储器地址进行操作,可以采用扩展关键字“at”、指针、预定义以及连接定位控制命令。

在这些方法中,本人认为最简单而有效的方法是用“ _at_ ”关键字来对指定变量存储器空间绝对地址来指定。一般格式如下:

                             [存储器类型]           数据类型 标识符            _at_            地址常数

            其中:

                     存储器类型                为idata、data、xdata等C51能够识别的所有类型,最好不要省略。

                     数据类型                   可以用int、long、float等基本类型,当然也可以用数组、结构等复杂数据类型             ,                本人认为一般用unsigned int 就可以解决很多问题了。

                    标识符                      就是要定义的变量名,编程者自己决定

                   地址常数                    就是要直接操作的存储器的绝对地址,必须位于有效的存储器空间之内。

注意:不能对变量进行初始化,只能是全局变量,一般不要轻易用,免得出错。

举例:

                     xdata            unsigned int             addr1            _at_ 0x8300;

另有一种方法就是要用到一个头文件absacc.h,也不是很难,举个例说明一下就会明白:

               #include

                XBYTE[0x8300]=0;              /*向外部存储器(XDATA)地址0x8300写0

本人强烈建议用at,这样可能会更好些,还有一点就是不能乱用,因为有些存储器空间不能随便占用,C51编译器已经做其它的用了,而且有些空间单片机本身就做了很重要的作用,如果乱用,很容易出错.

进入单片机查看更多内容>>
相关视频
  • RISC-V嵌入式系统开发

  • SOC系统级芯片设计实验

  • 云龙51单片机实训视频教程(王云,字幕版)

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

精选电路图
  • 红外线探测报警器

  • 短波AM发射器电路设计图

  • RS-485基础知识:处理空闲总线条件的两种常见方法

  • 如何调制IC555振荡器

  • 基于ICL296的大电流开关稳压器电源电路

  • 基于TDA2003的简单低功耗汽车立体声放大器电路

    相关电子头条文章