PIC16F883平台,硬件I2C口。读入一个全局数组gotiic[]。更多细节忘记了。
void read_adxl345(void)
{
unsigned char i;
ACKDT=0;//ACK TO SLAVE AFTER RECEIVING
SSPCON2 |= 1;//SET SEN
while (!SSPIF);//WAIT ACK FROM SLAVE
SSPIF =0;//CLEAR FLAG
SSPBUF = 0XA6;//ADRRESS OF ADXL345
//SSPCON2 |= 1;//SET SEN
while (!SSPIF);//WAIT ACK FROM SLAVE
SSPIF =0;//CLEAR FLAG
SSPBUF = 0X32;// XOUT
while (!SSPIF);//WAIT ACK FROM SLAVE
SSPIF =0;//CLEAR FLAG
RSEN=1;
while (!SSPIF);//WAIT ACK FROM SLAVE
SSPIF =0;//CLEAR FLAG
SSPBUF = 0XA7;//ADRRESS OF ADXL345,READ
while (!SSPIF);//WAIT ACK FROM SLAVE
SSPIF =0;//CLEAR FLAG
for (i=0;i<5;i++)
{
ACKDT=0;//ACK FLAG
RCEN=1;
while (RCEN);//WAIT NACK SENT
ACKEN=1;
while (ACKEN);//CLEAR FLAG
gotiic[i]=SSPBUF;//RECEIVED BYTE
}
ACKDT=1;//NACK FLAG
RCEN=1;
while (RCEN);//WAIT NACK SENT
ACKEN=1;
while (ACKEN);//CLEAR FLAG
gotiic[5]=SSPBUF;//RECEIVED BYTE
PEN=1;//SET PEN
while (PEN);//WAIT NACK SENT
}