LCD-Routine aus dem AVR-Tutorial anpassen

OP Persönliche Seite #763874
Lesenswert?

Hallo Leute,

Ich versuche mich gerade vom bequemen BASCOM zum Assembler zu bewegen. 
Jetzt habe ich versucht ein LCD anzusteuern allerdings ist die 
Pinbelegung anders als im Beispiel. Ich habe alles geändert was ich 
dachte dass es das sein könnte aber kein Erfolg. Ich habe mal die Datei 
angehängt. Darin ist alles orginal aus dem Tutorial bis auf der 
Kommentar ganz oben und die .equ Anweisungen die ich bereits auf meine 
Belegung umgeschrieben habe. Aber ich finde nicht heraus wo ich von 
PORTD.0 - PORTD.3 nach PORTD.3 - PORTD.6 umstellen kann.


Danke für jedgliche Hilfe.
#763904
Lesenswert?

@ Robin Tönniges (rotoe)

>Anpassen auf meine Pinbelegung ist nicht so einfach (für mich).

So einfach ist das nicht. Die Daten sollte man auf 0..3 lassen, nur E 
und RS sind frei auf 4..7 verteilbar. Sonst wird die Änderung zu gross. 
Wenn du eine vollkommen freie Pinzuordnung machen willst, nimm den 
vielzitierten Code von Peter Fleury.

MFG
Falk
#763933
Lesenswert?

@ Robin Tönniges (rotoe)

>Hab gerade gesehen dass dieses Beispiel von Peter Fleury in C
>geschrieben ist. Nützt mir also leider nicht viel.

Dann musst du wohl in den sauren Apfel beissen und die Grundfunktionen 
init, data und command überarbeiten. Im Prizip müssen "nur" ein paar 
Shifts eingebaut werden. im Original liegen die Daten auf PD0..3, du 
willst sie auf PD3..6 haben. Also müssen drei lsl rein, an die richtige 
Stelle.

Siehe Anhang, sollte klappen.

MfG
Falk
Angehängte Dateien:
#763991
Lesenswert?

Robin Tönniges wrote:

> PORTD.0 - PORTD.3 nach PORTD.3 - PORTD.6 umstellen kann.

Wer macht den sowas?
Ein Datennibble legt man nicht so saublöd in einen Port hinein.
Das bedeutet immer unnötige und blödsinne Shift Operationen.

> Ok dann mach ich das, weil ich nämlich ein eigenes Testboard entwickelt
> habe und da kann ich die Pinbelegung nicht mehr ändern.

Das solltest du dir noch mal gründlich überlegen.
#763995
Lesenswert?

@ Karl heinz Buchegger (kbuchegg) (Moderator)

>Ein Datennibble legt man nicht so saublöd in einen Port hinein.
>Das bedeutet immer unnötige und blödsinne Shift Operationen.

Sei froh dass er das Datennibble nicht wild zerplückt auf mehrere Ports 
verteilt hat ;-)

MfG
Falk
#764004
Lesenswert?

Falk Brunner wrote:
> @ Karl heinz Buchegger (kbuchegg) (Moderator)
>
>>Ein Datennibble legt man nicht so saublöd in einen Port hinein.
>>Das bedeutet immer unnötige und blödsinne Shift Operationen.
>
> Sei froh dass er das Datennibble nicht wild zerplückt auf mehrere Ports
> verteilt hat ;-)

Auch wieder wahr.
Gast #764023
Lesenswert?

Dafür ist Software auch da. Damit kann man mit "weichen" Mitteln "harte" 
Fehler umgehen. Ist nicht das erste Mal dass jemand im Programm Fehler 
im Layout/in der Hardware ausbügeln muss. Und sicher nicht das letzte 
mal :'o
#764064
Lesenswert?

Robin Tönniges wrote:
> Aber ich habe gelesen und gehört dass das Verständniss eines µC bei
> Assembler viel deutlicher rüberkommt als bei irgendeiner anderen
> Programmiersprache weil
> Assembler DIE µC Programmiersprache ist.
>

Da ist schon was dran.
Auf der anderen Seite musst du in C die Hardware genauso gut
durchschauen wie du es in Assembler müsstest (zumindest mit dem gcc).

Ich schreib zwar ab und an am Assembler Tutorial, aber Hand aufs
Herz: Meine realen Projekte mach ich in C.
Das liegt daran, dass es mir normalerweise nicht auf den letzten
Taktzyklus ankommt, dafür befreit mich aber der Compiler von
Routineaufgaben eines Assembler-Programmierers. Ich schreib halt
lieber
    i = j * 348
als mich darum zu kümmern, in welchem Register jetzt das j schon
wieder rumlungert, wie ich die Multiplikation ausführen muss und
dass ich die Register r0 und r1 für die Hardwaremultiplikation
frei räumen muss.

Hannes Lux (auch ein langjähriger Forumsteilnehmer) sieht die
Sache wieder anders: Der hat lieber Assmembler.

Letztendlich sehe ich das so: Welche Art man bevorzugt, ist
Geschmackssache (auch BASCOM hat durchaus sein Vorzüge), solange
man sie beherrscht. OK, der BASCOM Baukasten ist nicht unbedingt
geeignet, die Funktion der Hardware zu verstehen, allerdings kann
man auch in BASCOM direkt an die Hardware ran.
Gast #791251
Lesenswert?

hallo

ich benutze das myavr board2 mit lcd add on

auf dem das lcd auf partd 4-7 liegt, enable auf 2 und rs auf 3

ich hab die routine soweit geändert das ich meine zeichen ausgeben kann
ich wollte jetzt halt noch wissen was machen mir diese zeilen eigentlich
1
lcd_data:
2

3
           ...           
4

5
           in    temp3, LCD_PORT
6
           andi  temp3, 0x05             ; im original 0x80
7
           or    temp1, temp3
8
           out   LCD_PORT, temp1         ; ausgeben
9
           
10
           ...
11

12
           ret
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren