if( PINB&(1<<SDO) ) {}?

Gast #1547118
Hey ho,

ich hab mal ein kleines Verständnisproblem zu folgender Anweisung:

if( PINB&(1<<SDO) ) {};

Ich habe es mal eine Runde lang durch den Debugger gejagdt und 
festgestellt, wenn SDO(EINGANG) eine 1 ist dann geht er in den If-Block 
und wenn SDO eine 0 ist, dann wird der Block übersprungen.

Ich verstehe nicht was die Undverknüpfung mit PINB ist? Wird dort mit 
PINB0 UND verknüpft? Das kann eigentlich nicht, da ich PINB0 einmal auf 
High und einmal auf Low gesetzt habe und feststellen musste, dass die 
Funktion die selbe bleibt.

Was ist die Undverknüpfung mit PINB??? PINB müsste ja irgendwie für eine 
1 stehen und nur wenn SDO auch eine 1 ist ist die IF-Bedingung true. 
Versteh das irgendwie noch nit ganz.

Wäre sehr sehr dankbar für eine ausführliche Erklärung. Danke;-)
Gast #1547132
SDO ist nur die Pinnummer eben des SDO Pins, die 1 wird um diese Nummer 
links geschoben und das Ergebnis per UND mit PinB verknüpft. Ist dieser 
Pin gesetzt, dann ist das Ergebnis größer als 0, und damit WAHR, dann 
wird der Block ausgeführt.
Gast #1547140
Michael H. schrieb:
> Die ausführliche Erklärung dieses Ausdrucks findest Du im
> avr-gcc-Tutorial. Ist recht einfach wenn man's mal verstanden hat.

Das habe ich natürlich fleißig getan, aber dort steht irgendwie nicht 
wirklich was PINA oder PINB genau darstellt?
Die Funktion ist mir schon kla...
Das steht ja z.B. im avr-gcc-Tutorial:
/* Fuehre Aktion aus, wenn Bit Nr. 1 (das "zweite" Bit) in PINC gesetzt 
(1) ist */
if ( PINC & (1<<PINC1) ) {
  /* Aktion */
}

Aber was bedeutet in PINC gesetzt ist ? Wie sieht von PINC der Binär 
oder der Hex-wert aus? PINC geht von 1-7 =) hööö .... Seh ich es einfach 
nit?.... hmmm ... ich versteh einfach nicht ganz was dort passiert.. 
Also das er  die Aktion ausführt wenn Bit Nr.(x) in PINC gesetzt ist 
versteh ich, aber ich verstehe immer nochnit was das PINC ist? Also was 
und womit wird dort verglichen, geprüft, verundet oder wie auch immer ?
Gast #1547147
MWS schrieb:
> Ergebnis per UND mit PinB verknüpft

PinB was ist PinB? Der geht von 1-7 =)
Das PinB ohne Nummer verwirrt mich sehr=) Könnte man die If-Bedingung 
leichter schreiben?
Gast #1547151
He, he, beschäftige Dich auch mal mit MC Hardware, die PinX sind die 
Eingangsregister, die wiedergeben welche Signale gerade an den 
entsprechenden Beinchen anliegen :D
Gast #1547166
MWS schrieb:
> He, he, beschäftige Dich auch mal mit MC Hardware, die PinX sind die
> Eingangsregister, die wiedergeben welche Signale gerade an den
> entsprechenden Beinchen anliegen :D

Erstmal vielen vielen Dank =)

Kleines BSP. ob ich es vetsanden habe:

ich benutze  PinB0-7 als Input und überall liegt ein High an auch am 
SDO(PINB 6).

also würde die If-Bedingung im Prinzip (11111111&01000000) so 
ausschauen. Und somit kommt der Wert 1 also true raus=) Richtig?

Falls ja, sage ich vielmals Danke...Danke !!!;-)
Gast #1547183
Fast ganz genauso ist das ;-)

Nur das hier: (11111111&01000000) ergibt natürlich 01000000 und nicht 1.
Da allerdings alles ungleich 0 auch TRUE/WAHR ist, so wäre dieser 
Vergleich auch WAHR.

Ist der SDO Pin auf 0, würde nach dem UND eine 0 rauskommen und die ist 
mit FALSE definiert.
Gast #1547307
Ich sage vielmals Danke =) vielleicht sollte ich das nächste mal genauer 
ins Datenblatt schauen, da stand drin das das gesamte register PINB 
heisst.

nochmals danke danke für die schnelle Antwort.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.