/** Configuration ********************************************************/ #pragma config OSC = INTIO67 // Internal oscillator block, port function on RA6 and RA7 #pragma config PWRT = OFF #pragma config WDT = OFF // Watchdog Timer: #pragma config MCLRE = OFF // MCLR Enable: #pragma config PBADEN = OFF // PORTB<4:0> pins are configured as digital I/O on Reset #pragma config LVP = OFF // Low Voltage ICSP: // Code from Microchip void ReadEEdataChar(unsigned char *dest, unsigned char addr) { EECON1bits.EEPGD = 0; /* READ step #1 */ EEADR = addr; /* READ step #2 */ EECON1bits.RD = 1; /* READ step #3 */ *dest = EEDATA; /* READ step #4 */ } // Code from Microchip void WriteEEdataChar(unsigned char *source, unsigned char addr) { EECON1bits.EEPGD = 0; /* WRITE step #1 */ EECON1bits.WREN = 1; /* WRITE step #2 */ EEADR = addr; /* WRITE step #3 */ EEDATA = *source; /* WRITE step #4 */ INTCONbits.GIEH = 0; // disable/enable interrupts INTCONbits.GIEL = 0; // disable/enable interrupts EECON2 = 0x55; /* WRITE step #5 */ EECON2 = 0xaa; /* WRITE step #6 */ EECON1bits.WR = 1; /* WRITE step #7 */ INTCONbits.GIEH = 1; // disable/enable interrupts INTCONbits.GIEL = 1; // disable/enable interrupts while (!PIR2bits.EEIF); /* WRITE step #8 */ PIR2bits.EEIF = 0; /* WRITE step #9 */ }