u8 IIC_Read2(u8 device,u16 addr)
{
u8 temp;
IIC_Start();
IIC_SendByte(device);
IIC_Wait_Ack();
IIC_SendByte((u8)(addr >> 8));
IIC_Wait_Ack();
IIC_SendByte((u8)addr);
IIC_Wait_Ack();
IIC_Start();
IIC_SendByte(device+1);
IIC_Wait_Ack();
temp = IIC_ReadByte();
IIC_NAck();//发送nACK
IIC_Stop();
return temp;
}
通过程序可以看到发送完器件地址device之后先后发送了寄存器地址的高字节和低字节,然后再进行读取。