Forum: Compiler & IDEs Schleife in C für Atmega32 funktioniert nicht


von Martin (Gast)


Lesenswert?

Hallo,

ich bin gerad in den Anfängen der Microcontrollerprogrammierung.
Nun stehe ich vor einem kleinen Problem.

Ich habe 3 Taster, Taster 1 und 8 sind für das Setzen aller 8 LEDs an 
PortB. Taster 2 ist dafür da, um die Schleife zum Laufen zu bringen. 
Dies funktioniert auch, aber leider werden die LEDs nicht nach dem 
Durchlauf der for-Schleife wieder zurückgesetzt.

Kann mir jemand was dazu sagen?
1
    int i = 0;
2
    PORTB= 0xFF;
3
    DDRB = 0xFF;
4
    DDRD = 0x00; 
5
6
    while(1){
7
            PORTB= 0xFF;
8
          i = 0;
9
            if(PIND==0b01111111)
10
             {
11
          PORTB = 0x00;
12
          }
13
          if(PIND==0b11111110)
14
             {
15
           PORTB = 0x00;
16
          }
17
          if(PIND==0b11111101)
18
             {
19
           for(i = 255; i >= 0; i=i/2)
20
           {
21
             PORTB = i;
22
             _delay_ms(1000);
23
           }
24
          } 
25
          }
26
    return 1;

von Martin (Gast)


Lesenswert?

(war noch gar nicht fertig)

Meine Frage nun, wie kann ich das machen, dass nach dem 
for-Schleifen-Durchlauf alle LEDs an PortB wieder aus sind und ich 
wieder in der while-Schleife bin =?

Gruß M

von C'est moi (Gast)


Lesenswert?

Deine for Schleife läuft wegen der Abbruchbedingung ewig.

Das größer gleich muss weg.
1
for(i = 255; i > 0; i=i/2)

von C C C (Gast)


Lesenswert?

Martin schrieb:
> wie kann ich das machen

sorgen, dass i = 255; i >= 0; i=i/2 auch mal false wird.

von Martin (Gast)


Lesenswert?

ach wenn es immer so einfach wäre :D

danke

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
Noch kein Account? Hier anmelden.