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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.