Auch wenn ich jetzt Gefahr laufe zu nerven. Aber da habe ich noch ein kleines Problem.
Ich möchte Bytes in eine RTC (DS1307) schreiben und auch von dieser wieder zurücklesen. Ich habe dazu zwei Unterprogramme geschrieben, die jweils den Bereich von Adresse 00 - 0A beschreibt.
Jetzt habe ich festgestellt, dass imme das letzte Byte fehlerhaft ist. Ich habe nur noch nicht herausgefunden ob es schon falsch in die RTC geschrieben wird, oder falsch ausgelesen.
Hier mal die entsprechenden Programme dazu:

Code:
' ****************************************
' * DS1307 Adr $00 - $09 schreiben       *
' ****************************************

Sub DS1307Write()

  I2cstart                                                                      'I²C-Bus Startsignal ausgeben
  I2cwbyte DS1307W                                                              'DS1307 in Schreibmodus setzen
  I2cwbyte 0                                                                    'Startadresse $0 in DS1307 einschreiben

  For Z = 0 To 9                                                                'Adressen $00 - $09 in DS1307 schreiben
    I2cwbyte Rtc_Regs(Z + 1)                                                    'Werte fortlaufend einschreiben
    Waitms 10                                                                   '10ms Pause bis zum nächsten Byte
  Next Z                                                                        'Nach vorletztem Byte 10ms warten.
    Waitms 10                                                                   'Letzte Adresse
  Z = Z + 1                                                                     'Daten einschreiben
  I2cwbyte Rtc_Regs(Z + 1)
  I2cstop                                                                       'I²C-Bus Stopsignal ausgeben

End Sub
Code:
' ****************************************
' * DS1307 Adr $00 - $09 auslesen        *
' ****************************************

Sub DS1307Read()

  I2cstart                                                                      'I²C-Bus Startsignal ausgeben
  I2cwbyte DS1307W                                                              'DS1307 in Schreibmodus setzen
  I2cwbyte 0                                                                    'Startadresse $0 in DS1307 einschreiben

  I2cstart                                                                      'I²C-Bus Startsignal erneut ausgeben
  I2cwbyte DS1307R                                                              'DS1307 in Lesemodus versetzen
  For Z = 0 To 9                                                                'Adressen $00 - $09 aus DS1307 lesen.
    I2crbyte Rtc_Regs(Z + 1), Ack                                               'Nach jedem Lesen Empfang bestätigen.
  Next Z
  Z = Z + 1                                                                     'letzte zu lesende Adresse nach Empfang
  I2crbyte Rtc_Regs(Z + 1), Nack                                                'nicht mehr bestätigen.
  I2cstop                                                                       'I²C-Bus Stopsignal ausgeben

End Sub