C环境将变量定义到RAM绝对地址之上

来源:互联网 发布:网络用语辣鸡什么意思 编辑:程序博客网 时间:2024/05/30 23:31

//来源不详

1. 绝对宏:

在程序中,用“#include<absacc.h>”即可使用其中定义的宏来访问绝对地址,包括CBYTE、XBYTE、PWORD、DBYTE、CWORD、XWORD、PBYTE、DWORD
具体使用可看一看absacc.h便知,例如:
rval=CBYTE[0x0002];指向程序存贮器的0002h地址
rval=XWORD[0x0002];指向外RAM的0002h地址

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。

 

 

例:

比如,我想让数组myarr[0x30]的起始地址从物理地址0x00800开始,何如?  
   
  用指针显然不安全,   请教如何通过预编译指令或者RAM段配置来实现?

 

unsigned   char   xdata   mayarr[30]   _at_0x0800

原创粉丝点击