Forum: Mikrocontroller und Digitale Elektronik lcd an at90s2313


von andy (Gast)


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.

von spess53 (Gast)


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

von andy (Gast)


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

von spess53 (Gast)


Lesenswert?

Hi

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

Nein. Ein Shift nach links entspricht einer Multiplikation mit 2.
Das ist halt Geschmackssache.

MfG Spess

von andy (Gast)


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

von spess53 (Gast)


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

von andy (Gast)


Lesenswert?

Danke für die antwort.Werd ich nachher sofort ausprobieren.

gruss

Andy

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.