”即可使用其中定义的宏来访问绝对地址,包括:

CBYTE、XBYTE、PWORD、DBYTE、CWORD、XWORD、PBYTE、DWORD

具体使用可看一看absacc.h便知

例如:

#include#define ADstart  XBYTE[0x8000]        //总线方式访问AD

#define ADL     XBYTE[0x8000]

#define ADH     XBYTE[0x8001]

rval=CBYTE[0x0002];指向程序存贮器的0002h地址

rval=XWORD [0x0002];指向外RAM的0004h地址

2. _at_关键字

直接在数据定义后加上_at_ const即可,但是注意:

(1)绝对变量不能被初使化;

(2)bit型函数及变量不能用_at_指定。

例如:

idata struct link list _at_ 0x40;指定list结构从40h开始。

xdata char text[25b] _at_0xE000;指定text数组从0E000H开始

提示:如果外部绝对变量是I/O端口等可自行变化数据,需要使用volatile关键字进行描述,请参考absacc.h。

3. 连接定位控制

此法是利用连接控制指令code xdata pdata data bdata对“段”地址进行,如要指定某具体变量地址,则很有局限性,不作详细讨论。

附:(c51)

/*--------------------------------------------------------------------------

ABSACC.H

Direct access to 8051, extended 8051 and Philips 80C51MX memory areas.

Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc.

All rights reserved.

--------------------------------------------------------------------------*/

#ifndef __ABSACC_H__

#define __ABSACC_H__

#define CBYTE ((unsigned char volatile code *) 0)

#define DBYTE ((unsigned char volatile data *) 0)

#define PBYTE ((unsigned char volatile pdata *) 0)

#define XBYTE ((unsigned char volatile xdata *) 0)

#define CWORD ((unsigned int volatile code *) 0)

#define DWORD ((unsigned int volatile data *) 0)

#define PWORD ((unsigned int volatile pdata *) 0)

#define XWORD ((unsigned int volatile xdata *) 0)

#ifdef __CX51__

#define FVAR(object, addr) (*((object volatile far *) (addr)))

#define FARRAY(object, base) ((object volatile far *) (base))

#define FCVAR(object, addr) (*((object const far *) (addr)))

#define FCARRAY(object, base) ((object const far *) (base))

#else

#define FVAR(object, addr) (*((object volatile far *) ((addr)+0x10000L)))

#define FCVAR(object, addr) (*((object const far *) ((addr)+0x810000L)))

#define FARRAY(object, base) ((object volatile far *) ((base)+0x10000L))

#define FCARRAY(object, base) ((object const far *) ((base)+0x810000L))

#endif

#endif

附:(c166)

/*--------------------------------------------------------------------------

ABSACC.H

Direct access to 166 memory areas for C166/EC++ Version 5.

Copyright (c) 1992-2004 Keil Elektronik GmbH and Keil Software, Inc.

All rights reserved.

--------------------------------------------------------------------------*/

#ifndef __ABSACC_H__

#define __ABSACC_H__

#if (__MODEL__ == 0)

#define MVAR(object, addr) (*((object volatile *) (addr)))

#define MARRAY(object, base) ((object volatile *) (base))

#else

#define MVAR(object, addr) (*((object volatile far *) (addr)))

#define MARRAY(object, base) ((object volatile far *) (base))

#define HVAR(object, addr) (*((object volatile huge *) (addr)))

#define HARRAY(object, base) ((object volatile huge *) (base))

#define XVAR(object, addr) (*((object volatile xhuge *) (addr)))

#define XARRAY(object, base) ((object volatile xhuge *) (base))

#endif

#endif

单片机c语言固定地址,51单片机C语言学习笔记4:keil C51绝对地址访问相关推荐

  1. 湿度控制c语言程序,基于51单片机的湿度控制系统设计.doc

    基于51单片机的湿度控制系统设计 基于51单片机的湿度控制系统设计 摘要 关键词:单片机:湿度传感器:ADC0832数模转换 目 录 序 言1 第一章 系统的整体设计方案2 1.1设计内容2 1.2系 ...

  2. 洗衣机控制系统c语言编程,采用C语言编辑基于51单片机的全自动洗衣机控制系统毕业论文.doc...

    采用C语言编辑基于51单片机的全自动洗衣机控制系统毕业论文 深 圳 大 学 本 科 毕 业 论 文(设计) 题目: 基于单片机设计的全自动 洗衣机控制器 姓名: 郑嘉泽 专业: 电子信息工程 学院: ...

  3. 51单片机系列(三)51 单片机游戏设计 —— 双人对战小游戏(石头剪刀布)

    本博客51单片机实训系列,旨在记录本人在大学上单片机技术这门课时所做的课程实训内容,并与大家分享基于51单片的课程作业,如果作业中的某些细节和代码能给大家一点启发那就更好了,希望大家能用51单片机做出 ...

  4. 你知道单片机的工作条件吗?51单片机和52单片机有何区别?

    为增进大家对单片机的认识,本文将对单片机的工作条件以及51单片机和52单片机的区别予以介绍. 单片机可以说是一个微型计算机系统,通过单片机,能够创造出很多有意思的小玩意.为增进大家对单片机的认识,本文 ...

  5. 单片机c语言中断意义,51单片机中断系统的重要性

    描述 在接下来的教程中,将会介绍定时器.串口通信等外设的基本使用,而这些外设的使用都要涉及中断,而且中断是单片机或嵌入式开发中一个相当重要的概念.不能掌握中断系统,就无法灵活应用这些外设. 1.什么是 ...

  6. 跑马灯C语言实验报告,51单片机跑马灯实验报告 分析与小结,思考题源码下载

    一.实验目的与要求 1.熟悉 Keil C51 集成环境软件的使用方法. 2.熟悉 MCS51 汇编指令,能自己编写简单的程序,控制硬件. 3.熟悉畅学开发平台,掌握单片机最小系统及 IO 口的简单控 ...

  7. 51单片机c语言工作手册,51单片机C语言编程手册

    51单片机C语言编程手册 1 第一章 介绍 这是一本关于Intel 80C51 以及广大的51 系列单片机的书这本书介绍给读者一些 新的技术使你的8051 工程和开发过程变得简单请注意这本书的目的可不 ...

  8. 51单片机c语言编程100,51单片机C语言编程100例.doc

    51单片机C语言编程100例.doc 目 录实例3用单片机控制第一个灯亮3实例4用单片机控制一个灯闪烁认识单片机的工作频率3实例5将 P1口状态分别送入P0.P2.P3口认识I/O口的引脚功能4实例6 ...

  9. 单片机四路抢答器课程C语言设计,基于51单片机四路抢答器设计

    内容简介: 毕业设计 基于51单片机四路抢答器设计 共25页,9905字 随着经济水平的不断提高,人们在物质文明得到满足的同时更注重精神文明的追求,各种娱乐节目不断涌现,提高节目的质量尤为重要..本次 ...

最新文章

  1. Spring AOP AspectJ Pointcut Expressions With Examples--转
  2. Linux C :线程操作和线程同步的多线程并发编程
  3. 创建javascript对象的几种方式
  4. Django框架(18.Django中的自定义错误500页面和不存在404页面)
  5. java中序列化怎么创建_【java】面试官问我,如何实现一个自定义序列化
  6. 2018蓝桥杯省赛---java---B---7(螺旋折线)
  7. SuperMap IS.NET自定义Action添加Mark
  8. 修改联想笔记本键盘快捷键
  9. ERP通用附件管理功能设计与实现
  10. android九宫格忘了,九宫格密码忘了怎么办?九宫格锁屏忘记密码解决方法
  11. 硬盘容量统计显示WinDirStat v1.1.2.79(印心绿化版)
  12. Go语言 通过文件流判断文件头来识别文件类型
  13. NBU3.2及以上版本收集DataCollect和NBSU等日志的统一方法
  14. Lenovo ThinkPad SL400安装克隆版的XP
  15. 傅里叶Fourier变换fft-python-scipy-幅值-辐角-相位(一)
  16. WCF实现双工通讯及客户端调用
  17. 医学院交换去计算机学院,第一临床学院成功举办2018年国际医学生SCOPE交换项目...
  18. 台式计算机2017排行分析,CPU天梯图2017年11月最新版 台式电脑处理器天梯排行榜...
  19. nginx服务器的文档根目录,nginx更改根目录
  20. 关于JAVA中查询数据库时500错误Can not set int field ? to null value

热门文章

  1. python图像合成代码_python使用pil库实现图片合成实例代码
  2. 程序人生 - 人打哈欠可以传染狗吗?
  3. python画棒棒糖程序_用python 画几个简单图案
  4. SuperMap iMobile 8Cfor Android/iOS ——专业级移动GIS开发平台
  5. Fiber一个Go语言构建的高效、极速、极简的Web框架
  6. RowMapper是什么?怎么用?
  7. 反转字符串里的单词 + 图示
  8. 论中国民营企业的企业文化
  9. java键盘输入char类型二维数组
  10. java遍历栈的所有元素_Java如何遍历Map的所有的元素