PIC关于RAM空间变量的绝对定位及分配

转载地址:http://bbs.21ic.com/icview-296852-1-1.html

在目前的HI-TECH PICC中,BANK0.....BANK3这样的声明在默认情况下已经不起作用,编译器会根据RAM的使用情况尽量把变量全部安排在BANK0,我看了半天的用户手册测试也没有找到绝对定位的方法,相反,使用全局变量  unsigned long int A @ 0x70 这样的绝对定位却是非常有效的。以前的C教材中警告说这样的绝对定位编译器有可能不保留空间,转而会将其空间分配给其他变量,但目前还没发现编译器这样做,相反,如果0X70以前被别的变量占用,将0X70绝对定位后,原来占用该地址的变量被分配到其他空间。
这种绝对定位适用于多字节变量、数组、结构等多种形式,所定义的地址为数组或结构的第一字节地址
例如在下列声明中:
union CHUFA
{
struct
{
  unsigned char BEICHU_1;
  unsigned char BEICHU_2;
  unsigned char BEICHU_3;
  unsigned char BEICHU_4;
}BEI_CHU;
unsigned long int BEICHU2;

}BEICHU @ 0X70;
0x70为结构体成员 unsigned char BEICHU_1的地址,结构体下面的其他成员的地址依次递增,0X70也为联合体中的成员 unsigned long int BEICHU2 的首地址,同时也是整个联合体 BEICHU的首地址,整个联合体占用0X70--0X73 共4个字节RAM空间,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值