Hallo Leute, ich fange gerade mit der Assembler-Programmierung an. Ich habe mir eine Kiste gebaut mit einem LCD-Display, einem 8-Fach Mäuse-Klavier und 8 LED's die fest auf High gelegt sind ( das heist ich muss Low mit dem µC schalten damit die leuchten ). Da die LED's jetzt so verschaltet sind, ist meine Programmierung jetzt verkehrt herum, man kann den Port bestimmt am Anfang des Programms einfach invertieren. In der Befehlsliste habe ich den Befehl /bit gefunden, ist der dafür? Wenn ja, wie wende ich den an. Das LCD-Display möchte ich gerne über PWM dimmen, wie muss ich das Programmieren? Ich danke euch schon mal für eure Hilfe! Gruß Marcel
Marcel wrote: > Da die LED's jetzt so verschaltet sind, ist meine Programmierung jetzt > verkehrt herum, man kann den Port bestimmt am Anfang des Programms > einfach invertieren. LED an: CLR Portpin LED aus: SETB Portpin Druck Dir am besten den Befehlssatz aus. > Das LCD-Display möchte ich gerne über PWM dimmen, wie muss ich das > Programmieren? Abschnitt PCA im Datenblatt Peter
> ...man kann den Port bestimmt am Anfang des Programms einfach invertieren.
Jein. Port invertieren geht so nicht. Aber wenn dein Assembler Macros
unterstützt, kannst du dir separate Kommandos erzeugen, die wie ein
Befehl aussehen, aber wie mehrere wirken, ähnlich dem #define in C.
Also in etwa so (Pseudo-Code):
1 | .beginmacro LED0_ON |
2 | clr P0.0 |
3 | .endmacro |
4 | .beginmacro LED1_ON |
5 | clr P0.1 |
6 | .endmacro |
7 | ... |
8 | .beginmacro LED6_OFF |
9 | setb P0.6 |
10 | .endmacro |
11 | .beginmacro LED7_OFF |
12 | setb P0.7 |
13 | .endmacro |
Die genaue Implementation ist natürlich vom verwendeten Assembler abhängig. Es muss nicht unbedingt ein Makro sein, je nachdem was der Assembler alles kann. Im Fall eines Makros kann es sogar sein, dass Makro-Parameter unterstützt werden, d.h. wenn du es geschickt implementierst, brauchst du nur zwei Makros (ON und OFF) und kannst über einen Parameter bestimmen, welches Portbit es betrifft. > In der Befehlsliste habe ich den Befehl /bit gefunden, ist der dafür? Wenn > ja, wie wende ich den an. Wie Peter oben schon geschrieben hat, CLR und SETB sind dein Freund. Eine Befehlsreferenz gibts hier (alles zusammen wird gerne die 8051-Bibel genannt): http://www.semiconductors.philips.com/acrobat/various/80C51_FAM_ARCH_1.pdf http://www.semiconductors.philips.com/acrobat/various/80C51_FAM_HARDWARE_1.pdf http://www.semiconductors.philips.com/acrobat/various/80C51_FAM_HARDWARE_1.pdf Ralf
warum nicht einfach eine XOR verknüpfung von Port mit 0xFF ?
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.