lcd an at90s2313

Gast #1633374
Lesenswert?

Hallo,ich habe ein Lcd an einem at90s2313 angeschlossen.Es wird 
initialisiert und ich kann auch mit
  ldi temp1, 'n'
  rcall lcd_data
das Zeichen anzeigen lassen.Mein Problem ist,wenn ich mir einen 
konstanten Text anzeigen lassen will.Ich hab folgendes probiert:

ldi ZL,Low (begruessung)         ; Adresse des Strings in den
ldi ZH, HIGH(begruessung)        ; Z-Pointer laden
rcall lcd_flash_string

In lcd_flash_string steht:

lcd_flash_string:
           push  temp1
           push  ZH
           push  ZL

lcd_flash_string_1:
           ld temp1,Z+
           cpi   temp1,0
           breq  lcd_flash_string_2
           rcall  lcd_data
           rjmp  lcd_flash_string_1

lcd_flash_string_2:
           pop   ZL
           pop   ZH
           pop   temp1
           ret

Die Anweisung

 begruessung: .db"Bin bereit",0

 steht am ende des Programms.Wenn ich es so ausführe,erscheinen auf dem 
Display nur
12 schwarze Kästchen die unterstrichen sind.Da ich ja die gleiche 
Routine zum anzeigen benutze,kann der Fehler ja nur im Laden mit dem Z 
pointer liegen.Wäre nett,wenn mir jemand helfen könnte.
Gast #1633377
Lesenswert?

Hi

>ldi ZL,Low (begruessung)         ; Adresse des Strings in den
>ldi ZH, HIGH(begruessung)        ; Z-Pointer laden

->

ldi ZL,Low (begruessung<<1)         ; Adresse des Strings in den
ldi ZH, HIGH(begruessung<<1)        ; Z-Pointer laden

MfG Spess
Gast #1633383
Lesenswert?

Hallo,bei
>ldi ZL,Low (begruessung*2)         ; Adresse des Strings in den
>ldi ZH, HIGH(begruessung*2)        ; Z-Pointer laden

ist das gleiche,hatte ich vergessen zu erwähnen.Bewirkt dein Code etwas 
anderes?

gruss
Andy
Gast #1633396
Lesenswert?

Danke.Wo liegt den dann der Fehler.Ist nicht mein erstes LCD,habe schon 
welche an mega8 mega32 usw. am laufen und keine Probleme.
Ich sitz schon seit 2 Stunden davor und krieg es nicht hin.
Mit lpm kann ich nichts machen da mir das Studio bei :

lpm temp1,Z+

einen Fehler rausgibt,das es diesen Befehl beim 2313 nicht gibt.

gruss
Andy
Gast #1633401
Lesenswert?

Hi

>einen Fehler rausgibt,das es diesen Befehl beim 2313 nicht gibt.

Dann kannst du nur ein 'lpm' machen. Das lädt dir den Wert nach r0.

Also:

   lpm
   move temp1,r0
   adiw ZH:ZL,1
   rcall  lcd_data
   ....

MfG Spess

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren