58 OpenI2C(MASTER, SLEW_ON);
60 SSPADD = (((crystal_frequency_MHz *1000)/4)/baud_rate_KHz)-1;
72 signed char I2C_EEPROM_write (
unsigned char control,
unsigned int address,
unsigned char data ){
74 unsigned char addressH;
75 unsigned char addressL;
77 addressH = (
unsigned char) ((address & 0xFF00) >> 8);
78 addressL = (
unsigned char) (address & 0x00FF);
91 while (SSPCON2bits.SEN);
100 if (WriteI2C(control)){
113 if (!SSPCON2bits.ACKSTAT){
116 if (WriteI2C(addressH)){
133 if (!SSPCON2bits.ACKSTAT) {
136 if (WriteI2C(addressL)) {
153 if (!SSPCON2bits.ACKSTAT){
156 if (WriteI2C(data)) {
173 if (!SSPCON2bits.ACKSTAT) {
179 while (SSPCON2bits.PEN);
207 unsigned char dataReadback;
222 if (dataReadback == data)
233 signed char I2C_EEPROM_read (
unsigned char control,
unsigned int address,
unsigned char *data) {
235 unsigned char addressH;
236 unsigned char addressL;
238 addressH = (
unsigned char) ((address & 0xFF00) >> 8);
239 addressL = (
unsigned char) (address & 0x00FF);
253 while (SSPCON2bits.SEN);
256 if (PIR2bits.BCLIF) {
262 if (WriteI2C(control)){
275 if (!SSPCON2bits.ACKSTAT) {
278 if (WriteI2C(addressH)){
294 if (!SSPCON2bits.ACKSTAT) {
296 if (WriteI2C(addressL)) {
313 if (!SSPCON2bits.ACKSTAT){
318 while (SSPCON2bits.RSEN);
321 if (PIR2bits.BCLIF) {
327 if (WriteI2C(control+1)) {
340 if (!SSPCON2bits.ACKSTAT){
343 SSPCON2bits.RCEN = 1;
346 while (SSPCON2bits.RCEN);
352 while (SSPCON2bits.ACKEN );
358 while (SSPCON2bits.PEN);
361 if (PIR2bits.BCLIF) {