//*****************************************************
//******************* EEPROM DATA *********************
//*****************************************************
void write(unsigned char data1, unsigned int address)
{
unsigned char address_low=0,address_high=0;
address_low = address;
address >>= 8;
address_high =address;
address_high = address_high & 0b00000011;
delay_ms(1);
//EEADR = address;
EEADR = address_low;
EEADRH = address_high;
EEDATA = data1;
EECON1 = 0b00000100; delay_us(100);
EECON1.f7 =0;
EECON1.f6 =0;
EECON1.f2 =1;
INTCON.F7 = 0; //disable interrupt
EECON2 = 0x55; //sequence
EECON2 = 0xaa; //sequence
EECON1.F1 = 1; // set WR bit of EECON1
INTCON.F7 = 1;
delay_ms(10);
EECON1.F2 = 0;
}
unsigned char read(unsigned int address)
{
unsigned char temp=0,address_low=0,address_high=0;
delay_ms(2);
address_low = address;
address >>= 8;
address_high= address;
address_high = address_high & 0b00000011;
// EEADR = address;
EEADR = address_low;
EEADRH = address_high;
EECON1.f7 =0;
EECON1.f6 =0;
EECON1.f0 =1;
temp = EEDATA;
delay_ms(2);
return(temp);
}
void split(unsigned int data1,unsigned char counter)
{
unsigned char r1=0,r2=0;
// counter = counter *2;
r1 = data1; //lower
data1 >>= 8;
r2 = data1; //higher
write(r1,counter);write(r2,counter+1);
}
unsigned int read_split(unsigned char counter)
{
unsigned char e1=0,e2=0;
unsigned int e3=0;
// counter = counter*2;
e1 = read(counter);
e2 = read(counter+1);
e3 = e2;
e3 <<= 8;
e3 = e3 | e1;
return(e3);
}
void split4(unsigned long int data1,unsigned int counter)
{
unsigned char r1=0,r2=0,r3=0,r4=0;
// counter = counter *2;
r1 = data1; //lower 0byte
data1 >>= 8;
r2 = data1; //higher 1byte
data1 >>= 8;
r3 = data1; //higher 2byte
data1 >>= 8;
r4 = data1; //highest 3byte
write(r1,counter);write(r2,counter+1);write(r3,counter+2);write(r4,counter+3);
}
unsigned long int read_split4(unsigned int counter)
{
unsigned char e1=0,e2=0,e3=0,e4=0;
unsigned long int e5=0;
// counter = counter*2;
e1 = read(counter);
e2 = read(counter+1);
e3 = read(counter+2);
e4 = read(counter+3);
e5 = e4;
e5 <<= 8;
e5 = e5 | e3;
e5 <<= 8;
e5 = e5 | e2;
e5 <<= 8;
e5 = e5 | e1;
return(e5);
}