ja, aber irgend etwas ist noch falsch an der Sache...., zumindestens wenn ich's im AVR Studio simuliere (Startbedingung: PINC0,1,2,3 auf high)
nochmals:
wenn PINC.4 NULL ist und PINB.0 auch NULL ist ins "workreg1 den Wert 42 bringen und anschließend via Jump-Bef.......
wenn ich am Simulator jetzt den PINC3 auf LOW setze, dann sollte die if-Bedingung ausgeführt werden. Ist aber nicht so!
Was ist falsch an meiner if...Abfrage?

hier mein Code:

int workreg1 = 16;
int workreg2 = 17;
int workreg3 = 18;

int main()
{
DDRB = 0b00000000;
PORTB = 0b11111111;

DDRC = 0b00000000;
PORTC = 0b11111111;



//************************************************** *****************************************
// Tastaturabfrage 4x3
//
// 1. Zeile auf LOW setzen und anschließend die Eingänge C0 - C3 auf 0 abfragen und auch der Eingang B0 muss 0 sein!
//************************************************** *****************************************
do
{
DDRB = 0b00000001;
PORTB = 0b11111110; // erste Reihe auf 0 setzen
// _delay_us(10); // warte 10µs


if ( !(PINC & (1<<PINC4)) && (!(PINB & (1<<PINB0)) ) )
{ workreg1 = 42; // Taste * wurde gedrückt (42 Dez.)
goto Taste_ged;
}
else if ( !(PINC & (1<<PINC2)) && (!(PINB & (1<<PINB0)) ) )
{ workreg1 = 7; //Taste 7 wurde gedrückt
goto Taste_ged;
}
else if ( !(PINC & (1<<PINC1)) && (!(PINB & (1<<PINB0)) ) )
{ workreg1 = 4; //Taste 4 wurde gedrückt
goto Taste_ged;
}
else if ( !(PINC & (1<<PINC0)) && (!(PINB & (1<<PINB0)) ) )
{ workreg1 = 1; //Taste 1 wurde gedrück€t
goto Taste_ged;
}


// else _delay_us(10);

DDRB = 0b00000000;
PORTB = 0b11111111; // erste Reihe auf 1 setzen durch Pullup

// _delay_us(10);

//************************************************** **************************
// 2. Zeile auf LOW setzen und anschließend die Eingänge C0 - C3 auf "0" abfragen
//************************************************** **************************
usw. --> das ganz noch 2x
danke papua