Hallo

ich habe ein Verständnisproblem bei meinem Program. Es soll über die RS232 ein Steuerbefehl empfangen und dann die Uhr stellen oder wieder zurückgeben. Dazu sende ich zum stellen der Uhr z.B. den Befehl "WB1S12101911071"
Das klappt ohne Probleme. Möchte ich die Uhrzeit wieder auslesen sende ich "WB1G" und hierbei ist das Problem. Egal was ich mache der Code in der Select Case wird nicht ausgeführt.
Kann mir bitte jemand sagen warum??? Wenn ich das gleich Programm in .NET progge geht das. Ich bitte um Tips.
Danke.

Code:
$regfile = "m8535.dat"
''$regfile = "m16def.dat"
$crystal = 8000000                                          ' used crystal frequency
$baud = 9600                                                ' use baud rate
$hwstack = 32                                               ' default use 32 for the hardware stack
$swstack = 10                                               ' default use 10 for the SW stack
$framesize = 40


Config Graphlcd = 240 * 128 , Dataport = Porta , Controlport = Portc , Ce = 2 , Cd = 3 , Wr = 0 , Rd = 1 , Reset = 4 , Fs = 6 , Mode = 6
'Config Graphlcd = 128 * 64sed , Dataport = Porta , Controlport = Portc , Ce = 4 , Ce2 = 3 , Cd = 0 , Rd = 1 , Reset = 5 , Enable = 2
'Clear the screen will both clear text and graph display
Cls


Config 1wire = Portd.3                                      '' 1 Wire Port
Config Pinc.7 = Output                                      '' LCD Invert
Config Pind.4 = Output

Config Scl = Portd.5
Config Sda = Portd.6

'config UART Interrupt
On Urxc Onrxd                                               'Interrupt-Routine setzen
Enable Urxc                                                 'Interrupt URXC einschalten
Enable Interrupts                                           'Interrupts global zulassen                                 '' LCD Backlight

Portc.7 = 0                                                 '' LCD Invert ON
Portd.4 = 1                                                 '' LCD Backlight ON

Dim Zaehler As Integer
Zaehler = 0

Dim I As Byte
Dim Settimedate As Byte
Dim RS232 As Byte
I = 1
Dim Mystring As String * 11
Dim Mybytes(12) As Byte At Mystring Overlay

Dim Ds1307w As Byte
Dim Ds1307r As Byte
Ds1307w = &B11010000
Ds1307r = &B11010001

Dim _day As Byte
Dim _month As Byte
Dim _year As Byte
Dim _sec As Byte
Dim _min As Byte
Dim _hour As Byte
Dim _weekday As Byte

Dim Modus As Byte
Dim Test As Byte

Config Portb = Output
Portb = &B11111111



Do
   Select Case Modus
   Case 1                                                   '' Set Date and Time
      Print "Hour:"
      Print _hour
      Print "Minute:"
      Print _min
      Print "Sec:"
      Print _sec
      Print "Day:"
      Print _day
      Print "Month:"
      Print _month
      Print "Year:"
      Print _year
      Print "Weekday:"
      Print _weekday
    If Test = 1 Then
      _sec = Makebcd(_sec)
      _min = Makebcd(_min)
      _hour = Makebcd(_hour)
      I2cstart
      I2cwbyte Ds1307w
      I2cwbyte 0
      I2cwbyte _sec
      I2cwbyte _min
      I2cwbyte _hour
      I2cstop
      _day = Makebcd(_day)
      _month = Makebcd(_month)
      _year = Makebcd(_year)
      I2cstart
      I2cwbyte Ds1307w
      I2cwbyte 3
      I2cwbyte _weekday
      I2cwbyte _day
      I2cwbyte _month
      I2cwbyte _year
      I2cstop
    End If
      Modus = 0
   Case 2                                                   '' Get Date and Time
    If Test = 1 Then
      I2cstart
      I2cwbyte Ds1307w
      I2cwbyte 0
      I2cstop
      I2cstart
      I2cwbyte Ds1307r
      I2crbyte _sec , Ack
      I2crbyte _min , Ack
      I2crbyte _hour , Ack
      I2crbyte _weekday , Ack
      I2crbyte _day , Ack
      I2crbyte _month , Ack
      I2crbyte _year , Nack
      I2cstop
    End If
      Print "20332011076"
      _day = Makedec(_day)
      _month = Makedec(_month)
      _year = Makedec(_year)
      _sec = Makedec(_sec)
      _min = Makedec(_min)
      _hour = Makedec(_hour)
      Print "Hour:"
      Print _hour
      Print "Minute:"
      Print _min
      Print "Sec:"
      Print _sec
      Print "Day:"
      Print _day
      Print "Month:"
      Print _month
      Print "Year:"
      Print _year
      Print "Weekday:"
      Print _weekday
      Modus = 0
   End Select


Portb = &B00000000
Wait 1
Portb = &B11111111
Wait 1

Loop
End




'UART interrupt routine
Onrxd:
Dim Temp As String * 11
Dim T As Byte
  If I = 1 Then
    If Chr(udr) = "W"then
    I = 2
    Else
    I = 1
    End If
  Elseif I = 2 Then
    If Chr(udr) = "B" Then
    I = 3
    Else
    I = 1
    End If
  Elseif I = 3 Then
    If Chr(udr) = "1" Then
    I = 4
    Else
    I = 1
    End If
  Elseif I = 4 Then
      Select Case Chr(udr)
      Case "S"
      I = 5
      Case "G"
      Modus = 2
      Case Else
      I = 1
      End Select
  Elseif I = 5 Then
    Incr RS232
    Mybytes(rs232) = Udr
    If RS232 = 11 Then
    RS232 = 0
    I = 1
      Temp = Mid(mystring , 1 , 2)
      T = Val(temp)
      _hour = T

      Temp = Mid(mystring , 3 , 2)
      T = Val(temp)
      _min = T
      _sec = 00

      Temp = Mid(mystring , 5 , 2)
      T = Val(temp)
      _day = T


      Temp = Mid(mystring , 7 , 2)
      T = Val(temp)
      _month = T

      Temp = Mid(mystring , 9 , 2)
      T = Val(temp)
      _year = T

      Temp = Mid(mystring , 11 , 1)
      T = Val(temp)
      _weekday = T
      Modus = 1
    End If

  End If
Return