öhm naja du solltest dir vielleicht die bitoperationen nocheinmal genau ansehen
Code:PORTC |= (1<<0); // ausführlich PORTC = PORTC | (00000001 << 0); PORTC = xxxxxxxx | 00000001; //sinngemäß PORTC = xxxxxxx1; // wenn du jetzt aber PORTC |= (0<<0); //schreibst, passiert NICHTS denn PORTC = PORTC | (00000000 << 0); PORTC = xxxxxxxx | 00000000; // 0 ODER 1 ergibt 1 und 1 ODER 1 ergibt 1 ... ausschliesslich 0 ODER 0 ergibt auch 0 // was du brauchst ist das logische UND // 1 UND 1 ergibt 1 ... 1 UND 0 ergibt 0 und 0 UND 0 ergibt 0 //nun musst du nur darauf achten, dass ALLE anderen bits 1 sind bis auf das/die bit(s) welche(s) du löschen möchtest PORTC = xxxxxxxx & 01111111; //sinngemäß PORTC = xxxxxxxx & ~(10000000); //mit negierung // das ~ zeichen kehrt alle bits einmal um //in kurzform wäre dass dann PORTC &= ~(1<<1); // die schreibweise mit PCn (PC4 im code oben) ist ein makro der atmel lib, PC4 heisst nichts anderes als PIN 4 an PORT C, aufgelöst steht in dem makro also nur eine 4 (1<<PC4) == (1<<4)







Zitieren

Lesezeichen