LCD-Anzeige (ATmega16)

Gast #439169
Lesenswert?
• ▲
▼
Guten Tag,
ich möchte mit einem ATmega16 an ein LCD, (HD66712U) betrieben im 
4-Bitmodus Daten bzw. Befehle übertragen.
Portbelegung:
PD7: Daten
PD6: Daten
PD5: Daten
PD4: Daten
PD3: RS
PD2: E
R/W  gegen GND da ich nur schreiben und nicht lesen will.

Mein Problem ist nun folgendes, wenn ich folgende bits Setze

     cbi      portd,RS
     sbi      portd,E

und dann die Bits 7-4 senden will,

     out      portd,buffer

überschreibe ich mir auch automatisch bit 3-0.
Nur habe ich bis jetzt noch keinen Hinweis gefunden wie ich vom "buffer" 
nur Bit 7-4 ins "portd" schreibe, damit ich anschließend mit dem Befehl 
"swap" das Register behandeln kann und die anderen 4 bits schreibe.
Ich hoffe ihr könnt mir hier einen kleinen Tipp bei meinem 
Assemblerproblem geben.
Schöne Grüße
Alex

Gast #439171
Lesenswert?
• ▲
▼
Hallo,

erstmal stimmt die Reiehnfolge vermutlich nicht.

Die letzte Amtshandlung it üblicherweise der Takt an E, da müssen Daten 
und Registerselect bereits stabil anliegen (Datenblatt Controller 
befragen).
Also als Beipiele:

push buffer  // brauchen wir noch für die untere Hälfte

andi buffer,0xF0 // oberes Nibble maskieren
out      portd,buffer // und raus
cbi      portd,RS  // RS passend setzen
sbi      portd,E   // E auf H für Übernahme
nop                // etwas warten (Controller-Datenblatt, AVR-Takt 
beachten)
cbi     portd,E    // und E wieder L

pop     buffer     // Daten wieder zurück

swap    buffer     // Nibble tauschen
andi buffer,0xF0 // oberes Nibble maskieren
out      portd,buffer // und raus
cbi      portd,RS  // RS passend setzen
sbi      portd,E   // E auf H für Übernahme
nop                // etwas warten (Controller-Datenblatt, AVR-Takt 
beachten)
cbi     portd,E    // und E wieder L

usw.

Gruß aus Berlin
Michael

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.