56 signed char write_I2C_EEPROM(
unsigned char control,
int address,
unsigned char data ){
58 unsigned char addressH;
59 unsigned char addressL;
61 addressH = (
unsigned char) ((address & 0xFF00) >> 8);
62 addressL = (
unsigned char) (address & 0x00FF);
75 while (SSPCON2bits.SEN);
84 if (WriteI2C(control)){
97 if (!SSPCON2bits.ACKSTAT){
100 if (WriteI2C(addressH)){
117 if (!SSPCON2bits.ACKSTAT) {
120 if (WriteI2C(addressL)) {
137 if (!SSPCON2bits.ACKSTAT){
140 if (WriteI2C(data)) {
157 if (!SSPCON2bits.ACKSTAT) {
163 while (SSPCON2bits.PEN);
191 unsigned char dataReadback;
206 if (dataReadback == data)
217 signed char read_I2C_EEPROM(
unsigned char control,
int address,
unsigned char *data) {
219 unsigned char addressH;
220 unsigned char addressL;
222 addressH = (
unsigned char) ((address & 0xFF00) >> 8);
223 addressL = (
unsigned char) (address & 0x00FF);
237 while (SSPCON2bits.SEN);
240 if (PIR2bits.BCLIF) {
246 if (WriteI2C(control)){
259 if (!SSPCON2bits.ACKSTAT) {
262 if (WriteI2C(addressH)){
278 if (!SSPCON2bits.ACKSTAT) {
280 if (WriteI2C(addressL)) {
297 if (!SSPCON2bits.ACKSTAT){
302 while (SSPCON2bits.RSEN);
305 if (PIR2bits.BCLIF) {
311 if (WriteI2C(control+1)) {
324 if (!SSPCON2bits.ACKSTAT){
327 SSPCON2bits.RCEN = 1;
330 while (SSPCON2bits.RCEN);
336 while (SSPCON2bits.ACKEN );
342 while (SSPCON2bits.PEN);
345 if (PIR2bits.BCLIF) {