Das Beispiel von starbearer.de sollte eigentlich funktionieren:

Code:
'***********************************************************
'*  Ansteuerung von bis zu 20 Servos mit dem SD20          *
'*  über den I2C Bus.                                      *
'*  das Programm dreht den Servo am Servo PIN 1 des SD20   *
'*  und liest den Register 0 (Version) um die Vorgänge     *
'*                   zu demonstrieren.                     *
'*                 (ohne Expanded Mode)                    *
'***********************************************************

'*********** Ports für den I2C Bus**************************
define SDA Port[15]
define SCL Port[16]

define I2C_Daten byte
define N byte 'Schleifenvariable
define Startbyte byte
define Kommandobyte byte
define ServoNummer byte
define ServoWinkel byte

'I2C Bus Ruhezustand
SDA=ON
SCL=ON

'*********** Hauptprogramm********************************
#Main

 Get Startbyte                                            ' Startbyte von der seriellen Schnittstelle
  If Startbyte <> 97 Then GoTo Main                       ' Schleife, solang bis ein Startbyte empfangen wurde
  If Startbyte = 97 Then GoTo KlasseA                     ' falls Kommandobyte = asci(97)="a" springe zur #KlasseA
  
#KlasseA                                                  ' Klasse A: Servodirektsteuerung
 get ServoNummer                                          ' Nummer des anzusteuernden Servos von der seriellen Schnittstelle empfangen
 get ServoWinkel                                          ' Winkel des anzusteuernden Servos von der seriellen Schnittstelle empfangen
 GoSub ServoStellen
GoTo Main


#ServoStellen
 GoSub I2C_Start                                          ' I2C-Startbedingung
 I2C_Daten = 194                                          ' Adresse des SD20 am I2C Bus
 GoSub I2C_Write                                          ' Adresse übertragen
 I2C_Daten = ServoNummer                                  ' Register des Servos, der  angesprochen werden soll schreiben
 GoSub I2C_Write                                          ' Register übertragen
 I2C_Daten = ServoWinkel                                  ' Winkel auf den dieser Servo drehen soll schreiben
 GoSub I2C_Write                                          ' Winkel schreiben
 GoSub I2C_Stop                                           ' I2C-Stopbedingung.
Return

'*********** I2C Bus Standard Routinen********************

#I2C_Start
 SDA = OFF
 SCL = OFF
Return

#I2C_Stop
 SDA = OFF
 SCL=ON
 SDA=ON
Return

#I2C_Write
 For n = 1 To 8                                             ' 8 Bit schreiben in For-Next-Schleife
  SDA = OFF
  if (I2C_Daten and 128) =128 then SDA=ON
  pulse SCL
  I2C_Daten=I2C_Daten shl 1
 Next
 pulse SCL
Return

#I2C_Read
 I2C_Daten = 0
 deact SDA
 For n = 1 To 8                                             ' 8 Bit lesen in For-Next-Schleife
   I2C_Daten=I2C_Daten shl 1
   SCL=ON
   If SDA Then I2C_Daten = I2C_Daten + 1
   SCL = OFF
 Next
Return

#Ack
 SDA = 0
 pulse SCL
Return

#NoAck
 SDA = 1
 pulse SCL
Return