unsigned int i = 0;
unsigned int temperature[];

void GetTemperature(void)
{
  // Turn on VRef power
  P4OUT |= 0x20;                                    // Logic 1 to P4.5 (3.3SW)
  P2OUT &= ~0x80;                                   // Logic 0 to P2.7 (VRef)
  // Turn on temperature power
  P1OUT &= ~0x02;                                    // Logic 0 to P4.1 (Temp)
  
  P6SEL |= 0x02;                            // Enable A/D channel A1
  ADC12CTL0 = ADC12ON+SHT0_0;               // Turn on ADC12, set sampling time
  ADC12CTL1 = SHP;                          // Use sampling timer
  ADC12MCTL0 = SREF_2;                      // Vr+ = VeREF+ (external)
  ADC12CTL0 |= ENC;                         // Enable conversions

  ADC12CTL0 |= ADC12SC;                         // Start conversion
  while (ADC12CTL1 & ADC12BUSY == ADC12BUSY)    // If ADC is busy do nothing
  {
  }
  i++;
  temperature[] = ADC12MEM0;                      // Store result
  while (i < 10)
  {
    ADC12CTL0 |= ADC12SC;                       // Start conversion
    while (ADC12CTL1 & ADC12BUSY == ADC12BUSY)  // If ADC is busy do nothing
    {
    }
    temperature[] = temperature[] + ADC12MEM0;  // Add new result to last result
    i++;
  }
  temperature[] = temperature[] / 10;           // Get average of ten measurements
  i = 0;
  
  // Turn off temperature power
  P1OUT |= 0x02;                                   // Logic 1 to P4.1
  // Turn off VRef power
  P2OUT |= 0x80;                                    // Logic 1 to P2.7
  P4OUT &= ~0x20;                                   // Logic 0 to P4.5
}