Hallo,

der Ablauf beim lesen muss ein anderer sein.

Code:
  ldi r18, (2^Pin_Res+2^Pin_A0+2^Pin_rw)            ;High for Reset + A0 + RW 
  Out Ctrl_port , R18 
  rCall Seddelay 
  ldi r18, (2^Pin_Res+2^Pin_A0+2^Pin_E+2^Pin_rw)    ;High for Reset + A0 + E + RW 
  Out Ctrl_port , R18 
  rCall Seddelay 

  in r24,data_port_in                               ;Dummyread lt. Datenblatt
  in r24,data_port_in                               ;Datenport nach R24 lesen

  ldi r18, (2^Pin_Res+2^Pin_A0+2^Pin_CS1+2^Pin_rw)  ;High for Reset + A0 + CS1 + RW 
  Out Ctrl_port , R18 
  rcall Seddelay 

;hier zu lesen ist sinnlos, da CS1 jetzt High ist.