0 oder 1 in eine Variable

OP #3741867
Lesenswert?
• ▲
▼
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 #3741887
Lesenswert?
• ▲
▼
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;
#3741889
Lesenswert?
• ▲
▼
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

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.