/*Get register value when register is address declared.
Example:
temp = Reg_rd_byte(&RAMPZ);
or
temp = Reg_rd_byte(0x5

;
or
i = 0x5B;
temp = Reg_rd_byte(i);
param Register address (from 0x20 up to 0xFF)
return Register value */
#define REG_BYTE_AT *(U8 volatile*)
#define Reg_rd_byte(addr) ( REG_BYTE_AT(addr) )
/*Put register value when register is address declared.
param Register address (from 0x20 up to 0xFF) Data (to write) value */
#define Reg_wr_byte(addr, data) ( REG_BYTE_AT(addr) = data )
наверное примерно так как нибудь
Reg_wr_byte(addr, data);
где вместо addr - &R2
вместо data - ваше значение
оставте на откуп компилятору использовать ваши регистры