PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Eingänge als Binärzahl ?



ProgDom
05.06.2006, 18:56
Hallo,
ich musste gerade mit der Überschrift grübeln, wenn jmd. eine bessere findet bitte melden.

Es ist so ich habe an meinem Atmega8 an Pind.4 bis Pind.7 einen Dip-Schalter. Andere Pins des PortD sind als Ausgänge geschaltet, diese als Eingang.
Ich möchte jetzt in eine Variable den Wert von den aliegenden Bits ermitteln aus den Binärziffern. Also z.B. so:


d.4 d.5 d.6 d.7
on off on on = 11
off on off on = 5


Bei on liegt ein High-Pegel an, bei off ein Low-Pegel. Der Wert soll in eine Variable vom Typ Byte gespeichtert werden.

Da ich noch nicht lange BasCom programmiere, wäre ich für eine Hilfe dankbar, weil ich in der Hilfe nicht fündig wurde und nicht wusste wonach ich suchen soll.

Thx, Mfg
ProgDom

Baui
05.06.2006, 19:13
hallo ProgDom,
wenn ich dich richtig verstehe willst du einfach nur den Wert der vier Bits in einem Byte abspeichern.

Dann mach es doch einfach so

Byte=Portd AND &B11110000

Wenn jetzt unbedingt die Bits an Position 0-3 sein sollen dann nocht

Rotate Byte, Right(4)

Hoffe das hilft dir

Gruß
Baui

ProgDom
05.06.2006, 19:20
Danke, das war genau das was ich brauchte.
Wusste net wie und ob das mit den Bitmasken geht und das umdrehen wusst ich auch nicht.
Aber so ist das perfekt.

Thx

MFG
ProgDom

Baui
05.06.2006, 19:24
Hallo ProgDom,
etwas sparsamer ist übrigens der Befehl Shift, Right (4) da dieser nicht das Byte zwischenspeichert. Für dich reicht das voll und ganz.

Keine Ursache

Gruß
Baui