LCD-Ausgabefunktion über 74HC595

Gast #2311627
Lesenswert?
• ▲
▼
Hallo Foristen,

ich steige derzeit von Assembler auf C um, und versuche derzeit, eine 
LCD-Ausgabefunktion nach C zu überführen. Leider gelingt mir das nicht 
so recht, der Compiler optimiert mir meine Codezeilen raus. Da muss wohl 
ein Fehler in diesen stecken, aber ich finde diesen einfach nicht.

Ich habe ein Standard-LCD (HD44780, 4-Bit-Modus) über eine 
Porterweiterung (74HC595) an meinen ATMega88 angeschlossen. DB7..DB4 und 
RS des LCD sind am 595er an Q_H..Q_D angeschlossen, LCD_EN am AVR 
selbst.

Was geht nun nicht? Ich rufe aus meiner main() die lcd_init() auf, und 
daraus wiederum wird com74hc595_out aufgerufen und ein Parameter ("3" 
zum initialisieren des 4-Bit-Modus) wird übergeben. In der com74hc595 
wird der Übergabewert jedoch sofort gnadenlos überschrieben. Ich komme 
einfach nicht auf den Fehler. Wer findet ihn? :-)

Vielen Dank
Chris2k
Angehängte Dateien:
Moderator Persönliche Seite #2311630
Lesenswert?
• ▲
▼
1
  output &= LCD_PIN_MASK;      // ungültige Bits auf 0 setzen
2
  com74hc595 &= ~LCD_PIN_MASK; // alte Bits auf 0 setzen
3

4
  com74hc595 &= output;        // neuen Inhalt generieren

Das dürfte equivalent sein zur Anweisung:
1
  com74hc595 = 0;

Und keine Sorge, auch wenn du sowas noch so kompliziert hinschreibst,
Compiler sind stur logisch, die ersetzen das dann einfach durch das
logische Äquivalent. :)

Vermutlich wolltest du schreiben:
1
  com74hc595 |= output;        // neuen Inhalt generieren

;-)

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 15 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.