PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : komischer fehler



franzl
15.02.2007, 17:37
hallo,
also folgendes ich hab in meinem programm zwei ausgänge und möchte diese zusammen löschen.
PORTB &=~ (1<<PB0)&(1<<PB1);
nur leider löscht er nur PB0. das kapier ich irgendwie nicht. denn das geht doch normalerweiße so wie es oben steht. jetz hab ich kurz umgeformt
PORTB &=~(1<<PB0); PORTB &=~(1<<PB1);
nun funktionierts. aber ich kann mir das einfach nicht erklären.
mfg franz

SprinterSB
15.02.2007, 17:46
Es sollte heissen

PORTB &=~ (1<<PB0) & ~(1<<PB1);

Deine zweite Lösung hat aber einige Vorteile (kürzer, schneller und atomar), setzt die Ports allerdings nacheinander.

Pascal
15.02.2007, 19:12
Man könnte auch folgendes schreiben, was ich persönlich übersichtlicher finde:

PORTB &= ~( (1<<PB0) | (1<<PB1) )

PicNick
15.02.2007, 20:17
@Pascal: Dem würde ich mich anschliessen. C hat eh' den schlechten Ruf, daß er für ungeübte schlecht lesbar ist.



"Alle Dateien nicht löschen ? Enter J/N"