User Guide

Code
2021
Microchip Technology Inc. and its subsidiaries
DS50003218A-page 37
SSP1CON2bits.SEN = 1; // Start
I2C1_IntPoll();
SSP1BUF = (ControlByte|0x01); //; or with read bit 0
I2C1_IntPoll();
I2C1_ACKCheck();
SSP1CON2bits.RCEN=1; //enable receive
I2C1_IntPoll();
dataread=SSP1BUF;
I2C1_ACK(); //Send ACK for received data
SSP1CON2bits.RCEN=1; //enable receive
I2C1_IntPoll();
dataread=((dataread<<8)|SSP1BUF);;
I2C1_NACK(); //Send NACK for received data
SSP1CON2bits.PEN = 1; //Stop
I2C1_IntPoll();
return dataread;
}
/****************************************************************
*I2C Acknowledge
****************************************************************/
void I2C1_ACK(void)
{
SSP1CON2bits.ACKDT=0; //ACK
SSP1CON2bits.ACKEN=1;
I2C1_IntPoll();
}
/****************************************************************
*I2C No Acknowledge
****************************************************************/
void I2C1_NACK(void)
{
SSP1CON2bits.ACKDT=1; //NACK
SSP1CON2bits.ACKEN=1;
I2C1_IntPoll();
}
/****************************************************************
*I2C check ACK