Forum: Mikrocontroller und Digitale Elektronik Anfängerfrage, wie wird ein Bit gesetzt ?


von Stefan W. (Gast)


Lesenswert?

Hallo,

ich habe ne ganz simple Frage zu meinen kleinen Programm das einfach 
eine LED einschalten soll solange ich auf einen Taster drücke.

dieses Programm funktioniert, aber sobald ich den  Befehl

PORTC = 0x01;  durch
PORTC |= (1 << 1);
ersetze tut sich nichts mehr.



bool alarm = false;

int main()
{
    DDRC  = 0xFF;  // PC0..PC7 as output
    PORTC = 0x00;  // all PORTC output pins Off
    DDRA  = 0x00;  //all A port pins as input
    PORTA=(1<<PA0);  //Enable internal Pull-Up resistors

        while(1) {
        if (bit_is_clear(PINA,PA0)) alarm=true;
        if (alarm == true) {             // Alarmfall
//      PORTC |= (1 << 1);

  PORTC = 0x01;
        alarm = false;
        }
  else PORTC = 0x00;
}
  return 0;
}

Weis jemand warum? Was mache ich falsch?

von Sven P. (Gast)


Lesenswert?

(1 << 1) ergibt 0x02!!!

Musst schreiben: PORTC |= (1<<0);

von Stefan W. (Gast)


Lesenswert?

OK, danke für den Tip

es sind an beiden Ausgängen LEDs (PC0 und PC1) angeschlossen

Ich weis nicht warum, aber jetzt gehts!

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.