So, ich hab jetzt noch mal einige Änderungen vorgenommen:

Code:
$regfile = "M8def.dat"                                      '.dat-file ATmega8'
$crystal = 8000000                                          'Taktfrequenz 8MHz'
$hwstack = 350                                              'Größe Hardwarestack'
$swstack = 350                                              'Größe Softwarestack'
$framesize = 200                                            'Größe Frame'

''$lib "i2c_twi.lbx"                                          ' Für Hardware TWI

$baud = 19200                                               'Baudrate UART

Declare Sub Serial0charmatch()
Declare Sub Verarbeiten()
Declare Sub Setzen()

''Config Scl = Portc.5                                        'SCL-Pin
''Config Sda = Portc.4                                        'SDA-Pin

''Config Twi = 400000                                         'Clockspeed für SCL
''Twcr = &B00000100                                           'TWI einschalten

''Const Pcf_write = &H39                                      'Adresse jeelabs LuxPlug
''Const Pcf_read = &H40

''I2cinit                                                     'SCL und SDA initialisieren

Config Serialin = Buffered , Size = 4 , Bytematch = 37      '37=%
Enable Interrupts

Config Lcdpin = Pin , Db4 = Portb.1 , Db5 = Portb.2 , Db6 = Portd.5 , Db7 = Portb.7 , E = Portd.3 , Rs = Portd.2
Config Lcd = 16 * 2

Config Portb.0 = Output                                     'Kontroll-LED
Config Portd.7 = Output                                     '1. schaltbare LED
Config Portd.6 = Output                                     '2. schaltbare LED

Dim I As Byte                                               'Splitting der Hauptschleife
Dim Incoming_data As String * 4                             'UART Buffer
Dim Port As String * 2                                      'Portnummer (String)
Dim Wert As String * 2                                      'Wert -> Port (String)
Dim B_port As Byte                                          'Portnummer (Wert)
Dim B_wert As Byte                                          'Wert -> Port (Wert)
'Dim Flag12 As Bit                                           'Zustand Pin 12
'Dim Flag13 As Bit                                           'Zustand Pin 13

B_port = 50
B_wert = 49

Cls
Cursor On Blink
Lcd "USB-IO_plus"
Waitms 150
Locate 2 , 1
Lcd "."
Waitms 150
Locate 2 , 2
Lcd "."
Waitms 150
Locate 2 , 3
Lcd "."
Waitms 150
Locate 2 , 4
Lcd "initialisiert"


Do
   Toggle Portb.0                                           'Blinkende LED zur Kontrolle des Programmdurchlaufes
   For I = 0 To 200
      Waitms 1
   Next I

   Setzen
   'Print "Port " ; B_port ; " Wert " ; B_wert               'Ausgabe zu Debuggingzwecken
Loop

End                                                         'end program


Sub Serial0charmatch()
   Input Incoming_data Noecho                               ' Daten aus Buffer auslesen
      Verarbeiten
   Clear Serialin                                           ' Buffer leeren
End Sub

Sub Verarbeiten()
   Port = Left(incoming_data , 2)                           'Byte 1 und 2 extrahieren
   Wert = Mid(incoming_data , 3 , 2)                        'Byte 3 und 4 extrahieren
   B_port = Val(port)                                       'String zu Wert konvertieren
   B_wert = Val(wert)
End Sub

Sub Setzen()
   Select Case B_port                                       'zu setzenden Pin auswählen
      Case 50 : If B_wert = 49 Then
                     Portd.6 = 1
                     Gosub Print_on
                 Elseif B_wert = 50 Then
                     Portd.6 = 0
                     Gosub Print_off
                 End If
      Case 51 : If B_wert = 49 Then
                     Portd.7 = 1
                     Gosub Print_on
                 Elseif B_wert = 50 Then
                     Portd.7 = 0
                     Gosub Print_off
                 End If
      Case Else : !nop
   End Select
End Sub

Print_on:
   Print "Pin set high"
   B_port = 0
   B_wert = 0
Return

Print_off:
   Print "Pin set low"
   B_port = 0
   B_wert = 0
Return
Mir scheint es so, als ob mein Programm nicht auf das ASCII Zeichen % also Dezimal 37 reagiert, obwohl ich das so festgelegt habe. Und das komische an der Sache ist, dass es auch schon mal funktioniert hat!
Und trotz meinem Noecho kommt immer mal wieder das, was ich sende zurück. Habs heut mehrmals kompiliert und auf den µC gebrannt. Ein mal kam nichts zurück, sonst kam immer das gesendete zurück, obwohl ich diesbezüglich gar nichts am Code geändert hab. Ich bin echt langsam ratlos.
Wär toll, wenn sich hier mal jemand die Zeit nehmen könnte und kurz über meinen Code schauen und mir nen Tipp geben wo ich was ändern muss...