Was zur hölle ist mit diesem compiler los

einen code den ich gestern noch fehlerlos compilen könnte geht heut nicht mehr

könnts ihr mal testen

die fehlermeldungen hab ich als kommentar in den code eingefügt

Code:
Dim Zeichen As Byte
Declare Sub Lcdwrite(byval Zeichen As Byte)                 'funktion zum senden an das display

'Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 , Db7 = Porta.7 , E = Porta.1 , Rs = Porta.0


Initlcd
   Call Lcdwrite(&B00101100)                                'aufruf zum initialisieren
   Waitms 5                                                 'des display controllers
   Call Lcdwrite(&B00001001)
   Waitms 5
   Call Lcdwrite(&B00101000)
   Waitms 5
   Call Lcdwrite(&B00000110)
   Waitms 5
   Call Lcdwrite(&B00001100)
   Waitms 5

Config Lcd = 20 * 4a                                        'display als 20 zeichen mal 4 zeilen

Do
  Wait 1
  Cls
  Upperline
  Lcd "11111111111111111111"
  Lowerline
  Lcd "22222222222222222222"
  Thirdline
  Lcd "33333333333333333333"
  Fourthline
  Lcd "44444444444444444444"
Loop


Sub Lcdwrite(byval Zeichen As Byte)
     ' Höherwertiges Nibble setzen
     If Zeichen.4 = 1 Then Porta.4 = 1 Else Porta.4 = 0     'error 31 invalid datatype (0)
     If Zeichen.5 = 1 Then Porta.5 = 1 Else Porta.5 = 0   'error 31 invalid datatype (0)
     If Zeichen.6 = 1 Then Porta.6 = 1 Else Porta.6 = 0    'error 31 invalid datatype (0)
     If Zeichen.7 = 1 Then Porta.7 = 1 Else Porta.7 = 0    'error 31 invalid datatype (0)

     Porta.1 = 1                                            'enable auf 1
     Waitms 5
     Porta.1 = 0                                            'enable auf 0
     Waitms 5

     ' Niederwertiges Nibble setzen
     If Zeichen.0 = 1 Then Porta.4 = 1 Else Porta.4 = 0
     If Zeichen.1 = 1 Then Porta.5 = 1 Else Porta.5 = 0
     If Zeichen.2 = 1 Then Porta.6 = 1 Else Porta.6 = 0
     If Zeichen.3 = 1 Then Porta.7 = 1 Else Porta.7 = 0
     ' Niederwertiges Nibble übertragen
     Porta.1 = 1
     Waitms 5
     Porta.1 = 0
     Waitms 5
                                                              'error 229 line 0 end sub or end function expected
   End Sub

End