Forum: Mikrocontroller und Digitale Elektronik Bits löschen - Ich stehe auf dem Schlauch


von Gerrit (Gast)


Lesenswert?

Hallo zusammen,

ich habe an PC0, PC1 und PC2 eine LED. Diese möchte ich erst alle 
nacheinander einschalten und dann wieder ausschalten.

Nun stehe ich etwas auf dem Schlauch und verstehe nicht, warum ich meine 
zweite Schleife bis < 4 statt < 3 laufen lassen muss. Tue ich das nicht, 
bleibt die LED an PC2 immer an.

int main(void)
{
    /* Replace with your application code */

  DDRC = 0b00000111;
  PORTC = 0;

    while (1)
    {
    for (int i = 0; i < 3; i++)
    {
      PORTC |= (1 << i);
      _delay_ms(100);
    }

    for (int i = 0; i < 4; i++)
    {
      PORTC &= -(1 << i);
      _delay_ms(100);
    }
    }
}

von bitschupser (Gast)


Lesenswert?

1
PORTC &= ~(1 << i);

nicht
1
PORTC &= -(1 << i);

von Gerrit (Gast)


Lesenswert?

Danke, ich sage doch, ich stand auf dem Schlauch. ;-)

von Udo N. (weinbauer73)


Lesenswert?

Kein Wunder, dass die arme Tilde so platt gedrückt daher kam... ;-)

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.