在进行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编译器已经做其它的用了,

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

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

  1. avr单片机led数码管六位动态显示时分秒c语言程序,AVR单片机控制8段LED数码管同时显示 - AVR单片机8位数码管显示的程序实现(两种方法介绍)...

    AVR单片机控制8段LED数码管同时显示 这是一个简单的供单片机入门学习者练习用的8段LED数码管控制汇编程序,控制一个两位的数码管同时显示字符(动态刷新).用AVR- Studio-4 开发,在AV ...

  2. avr单片机led数码管六位动态显示时分秒c语言程序,AVR单片机8位数码管显示的程序实现(两种方法介绍)...

    描述 本文为大家介绍两个AVR单片机8位数码管显示的程序实现. AVR单片机595驱动8位数码管的显示的电路实现 主程序代码 #include > #include //GCC中的延时函数头文件 ...

  3. linux中复制字符串出错,C语言实现字符串的复制的两种方法

    本文将要为您介绍的是C语言实现字符串的复制的两种方法,具体操作方法: 利用数组实现 1 #include 2 #include 3 4 void copy_string(char str1[],cha ...

  4. C语言无符号双字节乘法,华为OJ机试标题:两个大整数相乘(纯C语言实现两个大整数相乘,两种方法实现大数相乘)...

    华为OJ机试题目:两个大整数相乘(纯C语言实现两个大整数相乘,两种方法实现大数相乘) 题目描述: 输出两个不超过100位的大整数的乘积. 输入: 输入两个大整数,如1234567 123 输出: 输出 ...

  5. html怎么样取jsp中的路径,jsp中获得路径的两种方法和获得url路径的方法(推荐)

    是解决相对路径的问题,可返回站点的根路径. //这样获得的是绝对路径 //这样获得的是相对路径 能够更有效的防治连接的失效. request.getContextPath()得到的是项目的名字,如果项 ...

  6. python自带的shell是什么-python中执行shell的两种方法总结

    一.使用python内置commands模块执行shell commands对Python的os.popen()进行了封装,使用SHELL命令字符串作为其参数,返回命令的结果数据以及命令执行的状态: ...

  7. linux c语言乘法口诀,shell 脚本实现乘法口诀表的两种方法——shell与C语言

    shell 脚本实现乘法口诀表的两种方法--shell与C语言 话不多说直接给出代码(执行c语言时没有gcc编译器会报错的哦!): 1 #!/bin/bash 2 if [ $# -eq 0 ] 3 ...

  8. java如何做全局缓存_传智播客JNI第七讲 – JNI中的全局引用/局部引用/弱全局引用、缓存jfieldID和jmethodID的两种方式...

    讲解JNI中的全局引用/局部引用/弱全局引用.缓存jfieldID和jmethodID的两种方式,并编写两种缓存方式的示例代码. 1.从Java虚拟机创建的对象传到本地C/C++代码时会产生引用,根据 ...

  9. PTA—念数字(C语言)两种方法

    PTA-念数字(C语言)两种方法 输入一个整数,输出每个数字对应的拼音.当整数为负数时,先输出fu字.十个数字对应的拼音如下: 0: ling 1: yi 2: er 3: san 4: si 5: ...

  10. 在word文档中如何自动生成目录,两种方法制作目录,总有一种适合你

    在word文档中如何自动生成目录,两种方法制作目录,总有一种适合你 目录 在word文档中如何自动生成目录,两种方法制作目录,总有一种适合你 1.文章中的标题较多,每个单独调整格式太费劲,这里我们用一 ...

最新文章

  1. NOI2003文本编辑器
  2. 解决使用pip安装lxml包报错问题Could not find function xmlCheckVersion in library libxml2. Is libxml2 installed?
  3. iOS之深入解析Runtime的objc_msgSend“快速查找”底层原理
  4. Python学习笔记9—文件
  5. 同学,解决下这个 Bug!
  6. BeanPropertyRowMapper使用注意事项
  7. kvm、qemu-kvm、ibvirt及openstack,之间的关系
  8. 今天的练习是敏捷结果30天的最后一天
  9. prim算法_数据结构 7.4.1 最小生成树 Prim
  10. 【性能优化】如何让APK瘦成一道闪电
  11. strtus2 与springmvc
  12. lsp语言服务器,身为程序员还不知道?Xtext与LSP让一个语言服务器横扫多个IDE!-lsp文件...
  13. 使用正交表法设计测试用例
  14. vagaa搜索服务器没响应,Vagaa(哇嘎)搜索不到资源怎么办?
  15. 基于C语言的端口扫描工具设计与实现
  16. Mex HDU - 4747(dp)
  17. TypeScript查缺补漏
  18. POJ 1417 True Liars 带权并查集 + 背包
  19. 【组合数学】指数生成函数 ( 指数生成函数概念 | 排列数指数生成函数 = 组合数普通生成函数 | 指数生成函数示例 )
  20. 线性回归的多重共线性问题及其解决

热门文章

  1. [iOS] UIScrollView (UIWebView) 截长屏功能实现
  2. matlab的基本语法规则_MATLAB语法规则
  3. .net web页面嵌入海康视频(winform)
  4. USB设备仿真框架设计指南——6.DSF核心模拟器
  5. stm32F103 模拟I2C mpu6050收到数据全为0,或者地址为209,104,0x68,0xD0的一些解决办法总结
  6. 使用PE破解Windows电脑密码
  7. 海信电视怎么删除自带应用
  8. 3串口多串口双串口以及2串口转WiFi多跳路由通讯实现一
  9. springboot医疗管理系统毕业设计源码015221
  10. 预警:Mac木马出新招,利用俄罗斯太空计划作诱饵