RTC (DS1307) I2C

#define RTC_Write_Addess    0xD0 //0b11010000
uint8_t I2C_Write_RTC(uint8_t min,uint8_t hr,uint8_t day,uint8_t date,uint8_t month,uint8_t year)
{
	I2C_Start();     // Start condition
	I2C_Write(RTC_Write_Addess);
	I2C_Write(0x00); // For intial address 0x00
	I2C_Write(0);    // Initial Second for value 0 
	I2C_Write(min);  // Write Minute value
	I2C_Write(hr);   // Write hour value
	I2C_Write(day);  // Write day value 0 for Sunday
	I2C_Write(date); // Write date of month
	I2C_Write(month);// Write month value
	I2C_Write(year); // Write year value
	I2C_Write(0x90); // Square wave with 1Hz output
	I2C_Stop();
}
#define RTC_Read_Addess		0xD1 //0b11010001
uint8_t I2C_Read_RTC(int *sec, int *mi, int *hr, int *da, int *dat, int *mon, int *yr)
{
    I2C_Start();
	I2C_Write(RTC_Write_Addess);
	I2C_Write(0x00);
	I2C_Start();
	I2C_Write(RTC_Read_Addess);
	*sec=I2C_Read_Ack();
	*mi=I2C_Read_Ack();
	*hr=I2C_Read_Ack();
	*da=I2C_Read_Ack();
	*dat=I2C_Read_Ack();
	*mon=I2C_Read_Ack();
	*yr=I2C_Read_Nack();
	I2C_Stop(); 
	
}
volatile int second,minute,hour,day,date,month,year;
I2C_Read_RTC(&second,&minute,&hour,&day,&date,&month,&year);