0 oder 1 in eine Variable

OP #3741867
Moin Leute,
Folgendes:
Ich habe einen 165er an meinem ATmega32A, Am D0 & D1 vom165er hängt ein 
Drehencoder.
Das auselesen der Daten funktioniert auch ohne Probleme.
Nun aber zu meiner eigentlichen Frage, um die Drehencoder auszulesen 
brauche ich in meiner Funktion 2variablen die entweder 0 oder 1 sind, je 
nach aktuellen status vom drehencoders halt. Nun dachte ich mir ok kein 
Ding, und habs folgendermaßen ausprobiert:
1
void get_Encoder_data(int v165)
2
{
3
  test = (v165 & _BV(1));
4
  test2 = (v165 & _BV(2));
5
}

v165 ist meine Variable in der mein Binärcode vom 165er gespeichert ist.

So ansich funktioniert das ganze auch, jedoch ist in test eine 2 wenn 
der pin an ist und in test2 steht eine 4.
Eigentlich ja auch recht klar...
Aber wie umgehe ich das?
ich möchte halt wirklich nur eine null oder eine eins drin stehen haben.

Oder geht das ganze auch noch einfacher?

Ich freu mich auf eure Lösungsvorschläge.

Grüße
Martin
Gast
Martin Kathke schrieb:
> Moin Leute,
> Folgendes:
> Ich habe einen 165er an meinem ATmega32A, Am D0 & D1 vom165er hängt ein
> Drehencoder.

Und was ist "ein 165er"? Eine Motorradklasse?

> void get_Encoder_data(int v165)
> {
>   test = (v165 & _BV(1));
>   test2 = (v165 & _BV(2));
> }
>
> v165 ist meine Variable in der mein Binärcode vom 165er gespeichert ist.
>
> So ansich funktioniert das ganze auch, jedoch ist in test eine 2 wenn
> der pin an ist und in test2 steht eine 4.

> ich möchte halt wirklich nur eine null oder eine eins drin stehen haben.
1
   test = v165 & _BV(1) ? 1 : 0;
2
   test2 = v165 & _BV(2) ? 1 : 0;
1
void get_Encoder_data(int v165)
2
{
3
  test = (v165 & _BV(1))>>1;
4
  test2 = (v165 & _BV(2))>>2;
5
}
1
void get_Encoder_data(int v165)
2
{
3
  test = (v165 & _BV(1))?1:0;
4
  test2 = (v165 & _BV(2))?1:0;
5
}
1
void get_Encoder_data(int v165)
2
{
3
  test = !!(v165 & _BV(1));
4
  test2 = !!(v165 & _BV(2));
5
}

Viele Möglichkeiten..

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 12 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.