uint8_t I2C_ReadByte(uint8_t REG_Address)
{
    uint8_t data_byte;
    //*((u8 *)0x4001080c) |=0x80; 
    while(I2C_GetFlagStatus(I2C1, I2C_FLAG_BUSY)); // Added by Najoua 27/08/2008
 
 
    /* Send START condition */
    I2C_GenerateSTART(I2C1, ENABLE);
    //*((u8 *)0x4001080c) &=~0x80;
 
    /* Test on EV5 and clear it */
    while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_MODE_SELECT));
 
    /* Send EEPROM address for write */
    I2C_Send7bitAddress(I2C1, I2C1_MPU6050, I2C_Direction_Transmitter);
 
    /* Test on EV6 and clear it */
    while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED));
 
    /* Clear EV6 by setting again the PE bit */
    I2C_Cmd(I2C1, ENABLE);
 
    /* Send the EEPROM's internal address to write to */
    I2C_SendData(I2C1, REG_Address);  
 
    /* Test on EV8 and clear it */
    while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_TRANSMITTED));
 
    /* Send STRAT condition a second time */  
    I2C_GenerateSTART(I2C1, ENABLE);
 
    /* Test on EV5 and clear it */
    while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_MODE_SELECT));
 
    /* Send EEPROM address for read */
    I2C_Send7bitAddress(I2C1, I2C1_MPU6050, I2C_Direction_Receiver);
 
    /* Test on EV6 and clear it */
    while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_RECEIVER_MODE_SELECTED));
 
    /* While there is data to be read */
    /* Disable Acknowledgement */
    I2C_AcknowledgeConfig(I2C1, DISABLE);
 
    /* Send STOP Condition */
    I2C_GenerateSTOP(I2C1, ENABLE);
    
 
    while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_RECEIVED));       
    data_byte = I2C_ReceiveData(I2C1);
    I2C_AcknowledgeConfig(I2C1, ENABLE);
    return data_byte;
 
}