Hallo Hannes,
das sieht schonmal gut aus
Hast Du das Programm durch den Kompiler gejagt ?
Kommst Du aus der Basic Welt ?
also endif gibt es in dieser Weise nicht bei C, es gibt zwar die Präprozessordirektive
#endif, das ist aber etwas anderes...
und if (temp >=1900h) sagt mir auch nichts, was heißt h ?
Hexadezimal oder wie?
Nicht so kompliziert denken
if(temp >=25) wäre hier besser gewesen...

ich schreibe Dir einfachmal das Programm, versuch es zu verstehen
Code:
#include <avr/io.h>
#include "i2cmaster.h"
#define GETTEMP 0xAA 
#define I2CTHERMO 0x90 
#define STARTCONVERT 0xEE

int main(void) {
   char i2cpuffer[2];
   DDRA = (1<<PA0);
   i2c_start(I2CTHERMO+I2C_WRITE);
   i2c_write(STARTCONVERT);
    i2c_stop();
   for(;;) {
      i2c_start_wait(I2CTHERMO+I2C_WRITE);
      i2c_write(GETTEMP);
      i2c_rep_start(I2CTHERMO+I2C_READ);
      i2cpuffer[0] = i2c_readAck();
      i2cpuffer[1] = i2c_readNak();
      i2c_stop();
      if (puffer[0] >= 25)
         PORTA |=(1<<PA0);
      else
         PORTA &=~(1<<PA0);
     }
     return 0;
}
So in etwa, es kann sein, daß da irgendwo sich ein Fehler versteckt, habe bitte Gnade mit mir, ich habe es eben so zusammengetippt...

Gruß Sebastian