#define I2C_DisableAck()       IIC1C1 |= IIC1C1_TXAK_MASK
#define I2C_EnableAck()        IIC1C1 &= ~IIC1C1_TXAK_MASK
#define I2C_RepeatedStart()    IIC1C1 |= IIC1C1_RSTA_MASK
#define I2C_EnterRxMode()      IIC1C1 &= ~IIC1C1_TX_MASK
#define I2C_write_byte(data)   IIC1D = data

#define I2C_Start()            IIC1C1 |= IIC1C1_TX_MASK;\
                               IIC1C1 |= IIC1C1_MST_MASK

#define I2C_Stop()             IIC1C1 &= ~IIC1C1_MST_MASK;\
                               IIC1C1 &= ~IIC1C1_TX_MASK

#define I2C_Wait()             while((IIC1S & IIC1S_IICIF_MASK)==0) {} \
                               IIC1S |= IIC1S_IICIF_MASK;

void I2C_WriteRegister(unsigned char u8SlaveAddress, unsigned char u8RegisterAddress, /*unsigned*/ char u8Data);
unsigned char I2C_ReadRegister(unsigned char u8SlaveAddress, unsigned char u8RegisterAddress);
void I2C_ReadMultiRegisters(unsigned char u8SlaveAddress, unsigned char u8RegisterAddress, unsigned char n, unsigned char *r);
void Pause(int number);
