Ja,das mit dem Repeated start ist korrekt sonst gibt es jede 2-3. Runde Müll.

Aber wofür bei der Abfrage am Ende nochmal den Pointer auf null setzen ?

Diese Zeilen am Ende hier kannst du weglassen.

Code:
I2cstart
I2cwbyte Ds1307w
I2cwbyte 0
I2cstop
Und bei der Zeile "I2crbyte _year , Ack" änderst du das "Ack" in "Nack" (No Ack wie gefordert) dann klappts besser.

Im Ganzen sieht die Unterroutine dann so aus........

Code:
Getdatetime:
 I2cstart
 I2cwbyte Rtcw
 I2cwbyte 0
 I2cstart
 I2cwbyte Rtcr
 I2crbyte _sec , Ack
 I2crbyte _min , Ack
 I2crbyte _hour , Ack
 I2crbyte Weekday , Ack
 I2crbyte _day , Ack
 I2crbyte _month , Ack
 I2crbyte _year , Nack
 I2cstop
 _sec = Makedec(_sec) : _min = Makedec(_min) : _hour = Makedec(_hour)
 _day = Makedec(_day) : _month = Makedec(_month) : _year = Makedec(_year)
Return
Diese Routine findet man so fast überall im Web.