#include <p30fxxxx.h>
/*Copy Blow macro for EEPROM read----------------
//=======================
//Example : EEPROM read
//=======================
TBLPAG = __builtin_tblpage(&HoleArrayIndex);
EEdata_read(HoleArrayIndex ,0, value);
//=======================
#define EEdata_read(src, offset, dest) { \
register int eedata_addr; \
register int eedata_val; \
\
eedata_addr = __builtin_tbloffset(&src)+offset; \
__asm__("tblrdl [%1], %0" : "=r"(eedata_val) : "r"(eedata_addr)); \
dest = eedata_val; \
}
*/
/*====use this statements to write EEPROM============
unsigned page = __builtin_tblpage(&Obj);
unsigned offset=__builtin_tbloffset(&Obj);
int data=0x60;
EEdata_write(page,offset,data);
============================================= */
void EEdata_write(int eepage,int eeoffset,int eedata)
{
//Step1: Erase data on that location
TBLPAG=eepage;
NVMADRU=eepage;
NVMADR=eeoffset;
NVMCON=0x4044;
asm("DISI #5");
Nop();
__builtin_write_NVM( );
DelayXLCD(); //from delay.c
//Step 2: Write Data on that location
TBLPAG=eepage;
NVMADRU=eepage;
NVMADR=eeoffset;
__builtin_tblwtl(eeoffset,eedata);
NVMCON=0x4004;
asm("DISI #5");
Nop();
__builtin_write_NVM( );
DelayXLCD(); //from delay.c
Nop();
//Data write done//
}