#include <msp430x16x.h>
#include <stdio.h>

void main(void)
{
  WDTCTL = WDTPW + WDTHOLD;                 // Stop watchdog
  P3SEL |= 0x0a;                            // Assign I2C pins to module
  U0CTL |= I2C + SYNC;                      // Switch USART0 to I2C mode (Reccommended I2C init procedure)
  U0CTL &= ~I2CEN;                          // Disable the I2C module (Recommended I2C init procedure)
  
  //Now configure I2C Module with I2CEN  = 0
  
  I2CTCTL |= I2CSSEL_1;                     // ACLK
  I2CSCLH = 0x00;                           // High period of SCL
  I2CSCLL = 0x00;                           // Low period of SCL
  I2CNDAT = 0x02;                           // Send 2 bytes (byte = 8 bits) 
  I2CSA = 0x0068;                           // Slave address is 0x68
  
  //Now enable I2C Module

  U0CTL |= I2CEN;                           // Enable I2C using a 7-bit address
  
  //Now set time
                          
  U0CTL |= MST;                             // Master mode
  I2CTCTL |= I2CTRX + I2CSTT + I2CSTP;      // Transmit, ST, SP (clears MST)
  I2CDRB |= 0x00;                           // Register address (seconds)
  I2CDRB |= 0x01;                           // Set for one second
  
  //Now continuously read seconds
  
  while (1)
  {   
      U0CTL |= MST;                           // Master mode
      I2CTCTL |= I2CTRX + I2CSTT;             // Transmit, ST
      I2CDRB = 0x00;                          // Reset register pointer to read seconds first
      I2CTCTL |= I2CSTT + I2CSTP;             // Receive, Restart, SP (clears MST)
      printf ("I2CDRB = %x", I2CDRB);
  }
}
