//*****************************************
//********** Programa principal ***************
//*****************************************
main
{
char from_eeprom1 = ' ';
char save_me = ' ';
save_me = 'A';
ee_write_byte(0x00, &save_me); // Escritura
ee_read_byte(0x00, &from_eeprom1); // Lectura
}
//***********************************************
//***** Funcion escritura en eeprom *****************
//***********************************************
void ee_write_byte(unsigned char address, unsigned char *_data)
{
EEDATA = *_data;
EEADR = address;
// start write sequence as described in datasheet, page 91
EECON1bits.EEPGD = 0;
EECON1bits.CFGS = 0;
EECON1bits.WREN = 1; // enable writes to data EEPROM
INTCONbits.GIE = 0; // disable interrupts
EECON2 = 0x55;
EECON2 = 0x0AA;
EECON1bits.WR = 1; // start writing
while(EECON1bits.WR){ _asm nop _endasm; }
// if(EECON1bits.WRERR){printf("ERROR: writing to EEPROM failed!n");}
EECON1bits.WREN = 0;
INTCONbits.GIE = 1; // enable interrupts
}
//***********************************************
//***** Funcion lectura en eeprom *******************
//***********************************************
void ee_read_byte(unsigned char address, unsigned char *_data)
{
EEADR = address;
EECON1bits.CFGS = 0;
EECON1bits.EEPGD = 0;
EECON1bits.RD = 1;
*_data = EEDATA;
}
//***********************************************