8-Bit Variable an Port ausgeben

OP #2280299
Lesenswert?

Hallo,
Wie kann ich eine 8-Bit variable auf einem Atmel-Chip direkt an einen 
Port ausgeben, sodass die dort angeschlossenen LEDs die ausgegebene Zahl 
in binär darstellen?
1
uint8_t zaehler;
2
zaehler =0;
3
DDRB= 0*FF
4
PORTB = zaehler;
5
zaehler=1;
Funktioniert das in dieser Art und Weise?
Kann ich die Variable, wenn ich sie mit volatile als global deklariere 
auch in anderen Funktionen ändern und die LEDs würden sich dann auch 
verändern?
Gruß Jannis
PS: die Suche hat für mich nichts brauchbares zu Tage gebracht.
Gast #2280345
Lesenswert?

Nö. Der C Compiler wird dein Programm wegen zu vielen Fehlern ablehnen. 
Eine Chance hast du mit
1
#include <avr/io.h>
2

3
int main(void)
4
{
5
  uint8_t zaehler = 0;
6
  
7
  // Hardware initialisieren: PORTB komplett Ausgang
8
  DDRB = 0xFF;
9

10
  // Unendliche Arbeitsschleife
11
  while(1) {
12
    PORTB = zaehler;
13
    zaehler += 1; // überlauf bei 255 -> 0
14
    // Bei hoher Taktrate des AVR hier Pause (delay) einplanen...
15
  }
16
}
Persönliche Seite #2280382
Lesenswert?

Jannis C. schrieb:
> Sehe
> ich das richtig, dass die Zuweisung der Variable an den Port immer in
> der gleichen Schleife stehen muss?

Der Port spiegelt nicht automagisch den Inhalt der Variablen, sondern es 
muss der Inhalt der Variablen schon "von Hand" an den Port ausgegeben 
werden. Wenn sie sich ändert, und der Port dem folgen soll, muss sie 
wieder an den Port ausgegeben werden.

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