Hallo alle, Ganz am Anfang, ich bin Anfängerin und lerne zu Programmieren in meiner Lehre. und zwar steh ich vor folgendem Problem: Aufgabe ist eine LED Matrix so zu Programmieren das alle LED einmal leuchten. Bis dahin alles kein Problem, jetzt die Schwierigkeit: Eine Schleife zu haben die automatisch alle anpricht, ohne das ich jeden Befehl einzeln schreiben muss BSP wie ich es machen würde nur es nicht funktioniert: for (int a = 0; a <= 3; a++) { PORTA |= (1 << PB a); _delay_ms(500); } so mal eine kleine denkweiße, klar muss ich noch PortD ansteuern. Wie schaffe ich es nur die Pins PB0-3 durchlaufen zulassen. Ich hoffe ihr versteht wo mein Problem liegt bzw. was ich meine LG danielle
schau dir mal die Defintion von deinem "PB a" (bzw. halt PB0 etc) an
Justus S. schrieb: > schau dir mal die Defintion von deinem "PB a" (bzw. halt PB0 etc) an in wie fern die Definition?
na ja, zB PB0 steht ja für irgendwas bzw was (und warum) macht denn zB PORTA = (1 << PB0)
ja genau eine Diode wird immer angesteuert mit PORTA |= (1 << PA0); PORTD |= (1 << PD3); dann leuchtet eine LED
Gast
#4753822
Ganz einfach:
1 | |
2 | |
3 | |
4 | |
5 | |
Wenn Du Dir die Definitionen für PB0, PB1 usw. in den entsprechenden Header-Dateien anschaust, dann wirst Du sehen, dass das einfache Zahlen von 0 bis 7 sind. Du wirst also ungefähr dieses hier finden:
1 | |
2 | |
3 | |
4 | |
Wenn Du also schreibst:
1 | |
2 | |
3 | |
4 | |
5 | |
dann werden nacheinander die Pins PA0, PA1, PA2 und PA3 aktiviert (und nicht PB0...PB3, da Du hier ja PORTA und nicht PORTB geschrieben hast). Das sollte als Denkanstoß reichen ;-)
Licht ist aufgegangen danke!
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.
