logisches UND/ODER in C

Gast #74018
Lesenswert?
• ▲
▼
Hallo!
Bin Anfänger, und wollte mal schauen, wie ich zwei Eingänge verunden
kann und das als Ergebnis ausgebe.
Wenn ich folgendes schreibe, und ich jeweils eine der Tasten drücke,
fängt die LED schon an zu leuchten.

PORTC.1 = (PIND.1&&PIND.2);

Es kommt eher eine ODER Verknüpfung raus!?
Was mache ich falsch?
Und wie sieht dann eine ODER Verknüpfung aus?
Es wäre super, wenn ihr mir helfen könntet!
mfG
Jens
Gast #74020
Lesenswert?
• ▲
▼
Also mal prinzipiell :
das logische UND ist &&
das logische ODER ist ||
bitweise UND ist &
bitweise ODER ist |

Wenn das logische UND in dem Beispiel nicht geht, dann liegt das mehr
an der Methode, wie das Programmierinterface eines µC in C/C++
aussieht.

Ganz am Rande : Bitte sagt nicht verunden und verodern, denn dann
bekommt man echte Probleme bei den folgenden logischen Verknüpfungen :
- XOR -> "exklusiv verodern" ? "verexklusivodern" ??
- NOT -> "vernichten" ?
Klingt aber sehr lustig !

MfG, Khani
Gast #74021
Lesenswert?
• ▲
▼
Weiterführung (tschuldigung habe zu hastig Submit gedrückt) :

Ich glaube, da liegt ein anderes Problem vor :
Du hast wahrscheinlich die Taster mit Pullup-Widerständen gegen Vcc (+)
geschaltet. Das heißt, wenn sie nicht gedrückt sind, liegt am
µController eine 1 an. Jetzt hast Du vielleicht auch noch die Leds
zwischen Vcc und dem Port C. (Das ist dann die Schaltung hier aus dem
Tutorial)

Das heißt die LED gibt negiert den Ausgabewert der UND-Verknüpfung aus.
Wenn also beide Taster ungedrückt sind, liefert das je eine 1 am
Eingang und damit am Ausgang eine 1. Daraus folgt LED leuchtet nicht.
Bei allen anderen Kombinationen von Tastern ein/aus leuchtet sie.

Wie Du schon richtig erkannt hast, ist das eine ODER-Verknüpfung.
Gratulation, Du hast so heben das deMorgan'sche Gesetz gefunden !

'-' heißt negiert

-------
 -   -
(A & B) = A | B

MfG, Khani

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.