Gast
#3007275
Hallo
Ich habe eine Verständnisfrage und zwar habe ich folgenden Code
geschrieben:
#include <avr/io.h>
int main(void)
{
DDRD|= (1<<PD0);
PORTC|=(1<<PC0); //Aktivierung des Pull-up
PORTD=0xFF; //Alles LEDS aussschalten
while(1)
{
if (!(PINC&(1<<PC0)))
{
PORTD&= ~((1<<PD0)); //LED ein;
}
}
}
Der Taster an PC0 wird gerdrückt und die LED an PD0 leuchtet das klappt
auch.Ich verstehe aber nicht wieso, deswegen erkläre ich mal kurz wie
ich das alles verstanden habe:
PINC= ist binär 0b'0000 0000' wird eine Taste gedrückt wird aus
PINC= 0b'0000 0001' setze ich dieses in meine if-anweisung
if(!(PINC&(1<<PC0)))--> if(!(0b'0000 0001'&(0b'0000 0001')))
0b0000 0001 & 0b0000 0001 = 0000 0001 dann wird das ganze negiert durch
!
und ich erhalte 1111 1110??? Wieso leuchtet die LED trotzdem ich hätte
erwartet das sie nur bei 0b'1111 1111' leuchtet. Kann mir einer das
genau erklären damit ich es in den Kopf krieg?