Gast
#1298938
Hallo zusammen, ich programmiere auf einem dsPIC mit dem C30 Compiler und hier sind sowohl die Bits der SFRs als auch die Ports im Header File als Bitfeld maskiert, sodass man direkt auf ein einzelnes Bit zugreifen kann. Nun möchte ich eben ein solches Bit während der Init auf einen bestimmten Wert setzen, nämlich dem invertierten (oder gegenteiligen) Wert dessen was an einem bestimmten Portpin anliegt --> also in etwa: if (PORTAbits.RA15 == 1) { INTCON2bits.INT4EP = 0; } else { INTCON2bits.INT4EP = 1; } Um dies kürzer schreiben zu können, gibt es drei Varianten, von denen ich gerne wüsste wo der Unterschied liegt, alle funktionieren nämlich einwndfrei, dass Assembly ist allerdings unterschiedlich: a) INTCON2bits.INT4EP = PORTAbits.RA15 ? 0 : 1; b) INTCON2bits.INT4EP = !PORTAbits.RA15; c) INTCON2bits.INT4EP = ~PORTAbits.RA15; Sprich ist der Bitoperator (c) und logische Operator (b) bei einzelnen Bits gleichzusetzten ? Was ist der bessere Stil ? Was würdet ihr verwenden ? Danke und Grüße...