#1楼主:请教一个宏定义的意思
文章发表于:2008-07-04 09:37
在一个51中有这样一个关于地址的宏定义:
#define XREG (addr) ((unsigned char volatile __xdata *) 0 ) [addr]
请问这个宏定义什么意思?
上面的 0 是什么意思呢?什么样的语法呀?
是cc2430里面的51
#2
文章发表于:2008-07-04 09:40
知道这个宏定义的意思是要把一串十几字节的数据放进固定位置的闪存,使掉电以后数据不丢失.希望通过程序直接能对这串数据进行读写,而不是通过烧程序的方式进行读写.
#4
文章发表于:2008-07-07 10:14
呵呵,问题解决了!
#define XREG(addr) ((unsigned char volatile __xdata *) 0 )[addr]
((unsigned char volatile __xdata *) 0 )这里等效成一个char数组的首地址,也是一个指针,指向flah的0地址。
volatile是表示该变量会被非编译器控制设备改变,比如外设,IO,中断等等,这样每次使用该变量的值时,都会读取一次,而不会使用前一次保存在内存中的值。
((unsigned char volatile __xdata *) 0 )[addr]这个就好理解了,addr是数组下标,相当于从地址0开始的addr个char。
XREG(addr)就是对从0开始的第addr个数(char)进行读写操作。0就是以0基址,addr是偏移量