Ok, hab mal im TWI-Praxis rumgewühlt.

Morgen werde ich mal diesen Code ausprobieren:

Code:
$regfile = "m8def.dat"
$crystal = 1000000
$baud = 1200
$swstack = 128
$hwstack = 128
$framesize = 128


'Nun eine Temperatur messen:

Twcr = &B10100100   ' Start erzeugen
Gosub Twiloopsub    ' Warten bis Start erzeugt

If Status = &H08 Or Status = &H10 Then       ' falls start gesendet
   Twdr = &B10010000       ' Slave Adresse senden  (w)
   Twcr = &B10000100       ' Aktion auslösen
   Gosub Twiloopsub ' Warten bis fertig

   If Status = &H18 Or Status = &H40 Then       ' falls ack empfangen
   Twdr = &B1010001 ' Befehl zum Messen senden
   Twcr = &B10000100       ' Aktion auslösen
   Gosub Twiloopsub ' Warten bis fertig

      If Status = &H28 Then
      Twcr = &B10010100       ' Stop
      ' warten bis stop-flag gelöscht:
      Do
      Loop Until Twcr.twsto = 0

      Else
      Print "byte nicht gesendet"
      Print Status

      End If


   Else
   Print "kein addressack"
   Print Status

   End if

Else
Print "Startfehler"
Print Status

End If

' nun auslesen:
Twcr = &B10100100   ' Start erzeugen
Gosub Twiloopsub    ' Warten bis fertig

If Status = &H08 Or Status = &H10 Then
Twdr = &B10010000   ' Slave Adresse senden (w)
Twcr = &B10000100   ' Aktion auslösen
Gosub Twiloopsub    ' Warten bis fertig

    If Status = &H18 Then       ' falls ack vom slave
    Twdr = &B10101010       ' Befehl senden
    Twcr = &B10000100       ' Aktion auslösen
    Gosub Twiloopsub       ' Warten bis fertig

      If Status = &H28 Then       ' falls ack vom slave
      Twcr = &B10100100       ' Erneut Start erzeugen
      Gosub Twiloopsub       ' Warten bis fertig

         If Status = &H08 Or Status = &H10 Then       ' falls 2.start gesendet
         Twdr = &B10010001       ' Slave Adresse senden (lesen)
         Twcr = &B10000100       ' Aktion auslösen
         Gosub Twiloopsub       ' Warten bis fertig

            If Status = &H40 Then       ' falls slave addr. gelesen raus
            Twcr = &B11000100       ' Ack erzeugen
            Gosub Twiloopsub       ' warten bis empfangen

               If Status = &H58 Or Status = &H50 Then       ' dann auslesen
               Twidaten1 = Twdr
               Else
               Print "nichts empfangen 1"
               Print Status
               End If

            Twcr = &B10000100       ' Nack erzeugen
            Gosub Twiloopsub

               If Status = &H58 Or Status = &H50 Then
               Twidaten2 = Twdr
               Else
               Print "nichts empfangen 2"
               Print Status
               End If

            Twcr = &B10010100       ' Stop




            Else
            Print "kein lese-slave"
            Print Status
            End If

         Else
         Print "kein 2.Start raus"
         Print Status
         End If

      Else
      Print "kein command gesendet"
      Print Status
      End If

   Else
   Print "kein slaveschreib"
   Print Status
   End If

Else
Print "kein Start"
Print Status
End If

    ' Twidaten1/2 enthalten den Temperaturwert.
Print Twidaten1
Print Twidaten2

Twiloopsub:
Do : Loop Until Twcr.twint = 1
Status = Twsr And &HF8
Return
Mal schauen, was sich da so tut...