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.
Hallo Robin, das kann aber nicht Dein ganzes Programm sein..... Gruss Otto
Nein das ist nur die Routine zum initialisieren des LCD's das Programm selbst ist wesentlich kürzer und es sollte auch funktionieren. Nur das Anpassen auf meine Pinbelegung ist nicht so einfach (für mich).
@ 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
Falk Brunner wrote: > Wenn du eine vollkommen freie Pinzuordnung machen willst, nimm den > vielzitierten Code von Peter Fleury. Ok dann mach ich das, weil ich nämlich ein eigenes Testboard entwickelt habe und da kann ich die Pinbelegung nicht mehr ändern.
Hab gerade gesehen dass dieses Beispiel von Peter Fleury in C geschrieben ist. Nützt mir also leider nicht viel.
@ 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
Klappt leider nicht :( Ich hatte es schonmal so ähnlich versucht aber nicht mit einem Befehl sonder am Anfang habe ich 3 Nullen weggenommen und am Ende wieder angehängt. Aber Da scheinen noch mehr Befehle zu sein die man ändern muss wo das aber leider nicht so einfach zu sein scheint.
JUHU! Es funktioniert. Vielen Dank. Jetzt analysiere ich mal was du da nu gemacht hast :)
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.
Layout kann ich ändern aber es ist schon geätzt, bestückt und funktionsbereit :)
@ 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
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.
Robin Tönniges wrote: > Layout kann ich ändern aber es ist schon geätzt, bestückt und > funktionsbereit :) Beim nächsten mal auf solche Dinge achten.
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
Robin Tönniges wrote: > Hallo Leute, > > Ich versuche mich gerade vom bequemen BASCOM zum Assembler zu bewegen. Bewege Dich lieber zu C... Michael
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. Korrigier mich wenn ich falsch liege.
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.
Hört sich sehr überzeigend an. Ich kann C++ ich weiß nur nicht ob sich das als Vor- oder Nachteil heraustellen könnte.^^
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 |
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.