www.mikrocontroller.net

Forum: Compiler & IDEs Variable invertieren


Autor: lemmi187 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

brauch schnell mal Hilfe mit dem C- Syntax:
Ich habe drei Taster, die über einen externen Interrupt drei LEDs 
steuern.
Nun möchte ich, dass beim ersten Mal Drücken des Tasters die ledFlag auf 
1 geht und beim erneuten Drücken des Tasters wieder auf 0. Im Prinzip 
ein simples invertieren.
Welchen Datentyp bzw. Operator nehme ich da am besten?

lemmi

Autor: ozo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
XOR ist dein Freund, guckst du hier:
Beitrag "bit invertieren in C"

N'abend

Autor: lemmi187 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Super, danke.

lemmi

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
lemmi187 schrieb:
> Welchen Datentyp bzw. Operator nehme ich da am besten?

bool aus <stdbool.h>

Autor: Andreas Kanzler (scavanger)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Rolf Magnus schrieb:
> lemmi187 schrieb:
>> Welchen Datentyp bzw. Operator nehme ich da am besten?
>
> bool aus <stdbool.h>

1. Nur bei C99!

und

2. Warum? Für für so was simples kann man die Port-Pins auch direkt 
schalten. Warum eine Hilfsvariable?

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Warum? Für für so was simples kann man die Port-Pins auch direkt
> schalten. Warum eine Hilfsvariable?
My50cent: Ich halte es nicht für verkehrt, einen Portzustand in eine 
Variable einzulesen und dann von dort weiterzuarbeiten. Mag bei kleinen 
Programmen nicht notwendig, überflüssig und oversized sein, aber wenn's 
mal komplexer wird, könnten sonst Seiteneffekte auftreten, die real gar 
nicht vorhanden.
Zumindest ging's mal dem Stift so, der beim Messen zwei Pins 
unbeabsichtigt durch die Messspitze kurzgeschlossen hatte (lowaktiver 
Tastereingang neben lowaktivem Ausgang für LED). Er hatte gemessen, 
nachdem die LED aktiv wurde. Anstatt den Taster zwischenzuspeichern, 
hat er ihn überall neu eingelesen, obwohls gar nicht nötig war und sich 
dann einen Wolf für einen Pseudofehler gesucht (okay, zugegeben, ein 
Reset + zweiter Messlauf hätte ihm auch nicht geschadet :))

Ralf

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Andreas Kanzler schrieb:

> Rolf Magnus schrieb:
>> lemmi187 schrieb:
>>> Welchen Datentyp bzw. Operator nehme ich da am besten?
>>
>> bool aus <stdbool.h>
>
> 1. Nur bei C99!

Ja, und?  Kann GCC doch.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.