www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik lcd an at90s2313


Autor: andy (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: andy (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: andy (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: andy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die antwort.Werd ich nachher sofort ausprobieren.

gruss

Andy

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.