Ansprechen von mehreren Ports

OP #4753787
Lesenswert?

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
Moderator Persönliche Seite #4753827
Lesenswert?

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
#define PB0 0
2
#define PB1 1
3
...
4
#define PB7 7

Wenn Du also schreibst:
1
for (int a = 0; a <= 3; a++)
2
{
3
  PORTA |= (1 << a);
4
  _delay_ms(500);
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 ;-)

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