Zitat Zitat von HeSt Beitrag anzeigen
Hallo allerseits,

ich möchte nun endlich mit der Verwendung eines Displays an einem Mega8 oder/und Mega16 beginnen.
Einige Beiträge habe ich ja schon gesichtet und studiert ... bin aber noch nicht ganz schlau daraus geworden ...
Nun meine Fragen:
Kann ich für einen 4-Bit-Betrieb des LCDs nur EINEN Port nutzen, wie es mir vorschwebt (siehe unten), oder muss ich Steuer- und Datenleitungen an getrennten Ports ausgeben?
Wenn getrennt, hilft mir ja eine 4-Bit-Anwendung nichts, da ich mit den anderen 4-Port-Pins nichts steuern kann, weil ja bei der Ausgabe (einem OUT PORTx,ldc_data) ALLE PINs des PORTs angesprochen werden und somit andere Funktionen mit angesteuert würden!?.

ZB (M16):
; PC0 / 22 > + Transitor VCC to LCD
; PC1 / 23 LCD RS (register select)
; PC2 / 24 LCD RW (read/write)
; PC3 / 25 LCD E (enable)
; PC4 / 26 \
; PC5 / 27 \ > Datalines for LCD 1602
; PC6 / 28 /
; PC7 / 29 /

Gruß Heinz
Du kannst grundsätzlich es so machen wie es dir beliebt. Ein Port für alles, ein Port für Steuer und ein Port für Datenleitungen oder im schlimssten Falle, falls der Port nicht ganz ausreicht auch nur einen Pin auf einen anderen Port legen.
Bezug auf "weil ja bei der Ausgabe (einem OUT PORTx,ldc_data)":
ldc_data = ein Register und im 4bit- Modus müssen eben 2mal 4bit übertragen werden. Somit bleibt das Highnibble immer 0 bei der Vorverabeitung. Damit das LCD die Daten auch richtig verarbeitet kann zb das RW, RS oder das Enablebit einzelnd gesetzt werden.
RS, RW, Enable können als Bit/s deklariert werden
1 = RS
2 = RW
3 = Enable

zB:

out PORTx , LCD_DATA
sbi PORTx , RS
sbi PORTx , RW
sbi PORTx , Enable

übersetzt ohne Deklarationen

out PORTC , R16
sbi PORTC , 1
sbi PORTC , 2
sbi PORTC , 3

Letztendlich dienen die Deklarationen nur der Lesbarkeit in allen Programmiersprachen.
https://www.mikrocontroller.net/arti...-Tutorial:_LCD

Seriele 8bit-Ausgabe mit kleiner Hardwareerweiterung
https://www.roboternetz.de/community...Seriel-ATMega8

https://www.roboternetz.de/community...chnipsel/page2

Zitat Zitat von HeSt Beitrag anzeigen
Wo ich auch noch grüble ist, wie ich ADC-Werte in Volt umrechne und diese mit zumindest einer Kommastelle ausgeben kann - in Assembler!
Guck mal hier
https://www.roboternetz.de/community...ine-Bibliothek
beinhaltet mehrere 16bit Matheroutinen.