Hi Leute, komm mir ziemlich dämlich vor

ich hab das altbewährte DIP-204 LCD An meinen M16 gehängt und will für das laufende Projekt den Port A für die Steuerung verwenden.
4-Bit
a.2=RS
a.3=E
a.4=DB4
a.5=DB5
a.6=DB6
a.7=DB7

DB0-3 = GND

Hab mich schon von der Lib verabschiedet und versuch das Ding "von Hand" mit dem folgenden Code zu betreiben, aber funzt nit.

Ich tüftel da schon 2 Abende dran rum und seh vermutlich den Wald vor Bäumen nicht. Habt Ihr mal ne Minute Zeit mir n Fingerzeig zu geben?

Code:
   
   $regfile = "m16def.dat"
   $crystal = 8000000

   $baud = 2400

   '$lib "ea-dip-Zeit.lib"
   'Initlcd

   Declare Sub Lcdinit(byval Zeichen As Byte)

   Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 , Db7 = Porta.7 , E = Porta.3 , Rs = Porta.2
   Config Lcd = 20 * 4a
   Initlcd

   Config Pina.2 = Output
   Config Pina.3 = Output
   Config Pina.4 = Output
   Config Pina.5 = Output
   Config Pina.6 = Output
   Config Pina.7 = Output

   E Alias Porta.3
   Rs Alias Porta.2


   Call Lcdinit(&B00100100)
   Waitms 5
   Call Lcdinit(&B00001001)
   Waitms 5
   Call Lcdinit(&B00100000)
   Waitms 5
   Call Lcdinit(&B00000110)
   Waitms 5
   Call Lcdinit(&B00000001)
   Waitms 5
   Call Lcdinit(&B00001100)
   Waitms 5


   Cls

   Dim Temp As Byte

   Do
   Waitms 500
   ' Hintergrundbeleuchtung aus
   Portd.7 = 0

   Incr Temp
   Lcd Temp
   Print Temp

   Waitms 500
   ' Hintergrundbeleuchtung ein
   Portd.7 = 1

   Loop

   'Schreibt die Initialisierungs - Bits zum LCD

   Sub Lcdinit(byval Zeichen As Byte)
     Print "init: ";
     Print Zeichen

     ' Höherwertiges Nibble setzen
     If Zeichen.4 = 1 Then Porta.4 = 1 Else Porta.4 = 0
     If Zeichen.5 = 1 Then Porta.5 = 1 Else Porta.5 = 0
     If Zeichen.6 = 1 Then Porta.6 = 1 Else Porta.6 = 0
     If Zeichen.7 = 1 Then Porta.7 = 1 Else Porta.7 = 0
     ' Höherwertiges Nibble übertragen
     E = 1
     Waitms 1
     E = 0
     Waitms 1

     ' 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
     E = 1
     Waitms 1
     E = 0
     Waitms 1

   End Sub