mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik LCD initialisieren


Autor: Samy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten Abend oder besser Nacht

Habe da mal ne Frage zu einem Source-File das ein LCD (HD44780)
initialisieren soll.
Wenn Daten bzw. Befehle gesendet wurden wird mit dem Sprungbefehl
"rcall WaitBusy" das BusyFlag des LCD abgefragt.
Der Datenbus des LCD hängt am PortA (8bit) und und E,RW und RS des LCD
an PortC des AVR. Takt ist 4Mhz

1  WaitBusy:
2  ldi R16, 0x00    ;
3  out DDRA, R16    ;PortA als Eingang konfiguriert
4  cbi PortC, RS    ;Register-Select 0 = Befehl
5  sbi PortC, RW    ;Schreibrichtung 1 = lesen von LCD
6  WB1:
7  sbi PortC, E     ;Enable-Impuls starten
8  nop              ;
9  nop              ;E muß min.320ns anliegen
10 in R16, PinA     ;BusyFlag in R16 einlesen
11 cbi PortC, E     ;Enable-Impuls beenden
12 nop              ;Zeitverzögerung warum auch immer
13 sbrc R16, BF     ;wenn bit7 in R16 0 ist überspringe den
                     nächsten Befehl
14 rcall WB1        ;Rücksprung zu WB1
15 cbi PortC, RW    ;Schreibrichtung 0 = schreiben zu LCD
16 ldi R16, 0xFF
17 out DDRA, R16    ;PortA als Ausgang konfiguriert
18 ret              ;Rücksprung zu Hauptprogramm

So das ist ja alles logisch und ich habe es auch kappiert, aber warum
ist in Zeile 12 diese Zeitverzögerung von 250ns bei 4Mhz??? Wozu brauch
man die???

Autor: HDW (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich würde mal sagen, dass der "nop"-Befehl nicht notwendig ist.
Mit den Löschen vom Enable-Bit beendest du ja die Kommunikation mit dem
Display. Daher ist das Busyflag schon längst in R16 geschrieben.
Un das sollte dann auch ohne den "nop"-Befehl direkt geprüft werden
können.

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.