Forum: Mikrocontroller und Digitale Elektronik logisches UND/ODER in C


von Jens (Gast)


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

von Thomas K (Gast)


Lesenswert?

logisches und ist nur ein &
genauso das oder: |

von Khani (Gast)


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

von Khani (Gast)


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

von Thomas K (Gast)


Lesenswert?

huch. tut mir leid.
hab falsch herum gedacht :(

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.