ö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)
Lesezeichen