#define XREG(addr) ((unsigned char volatile __xdata *) 0 )[addr]

本文详细解析了XREG宏定义的工作原理,解释了如何通过此宏实现对特定地址的闪存区域进行读写操作。同时介绍了volatile关键字的作用,即确保每次访问变量时都直接从指定的内存位置读取最新值。

#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是偏移量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值