Hallo,

Du musst deine Funktion (Methode) auch aufrufen, sonst tut sich da nichts.
Außerdem musst du immer und immer wieder das Touchfeld abfragen und die Ergebnisse davon verwerten. Deswegen eine Endlosschleife mit while(1) einbauen!

So ähnlich könnte das aussehen:
Code:
...
void read_senskey( void )
{
 uint16_t i = MAX_CYCLE;
 uint8_t a, b, x, y;

 ATOMIC_BLOCK(ATOMIC_FORCEON){
 a = DDRA & ~(SK_A012 | SK_B012);
 b = PORTA & ~(SK_A012 | SK_B012);
 y = SK_B012; // input mask
 do
 {
  DDRA = a; // tristate
  PORTA = b | SK_B012;
  DDRA = a | SK_B012; // Bx = strong high
  DDRA = a; // tristate
  PORTA = b;
  DDRA = a | SK_A012; // Ax = strong low
  if( --i == 0 ) // timeout
    break;
  x = y & PINA; // not immediately after DDRA
  if( x )
  {
   if( x & SK_B0 )
     keys[0] = i;
   if( x & SK_B1 )
     keys[1] = i;
   if( x & SK_B2 )
     keys[2] = i;
  }
  y ^= x; // clear processed input
 }
 while( y ); // all inputs done
 DDRA = a | SK_A012 | SK_B012; // discharge
 }
}

int main (void)
{
 DDRA = 0xff; //PORTA komplett Output
 PORTA = 0x01; //Damit ist PA4 auf +5Volt

 // _delay_ms( 50000 ); // wozu ??

 while(1)
 {
  read_senskey(); //obere Funktion wird aufgerufen, diese fragt ja die Touchfelder ab

  //jetzt die Ergebnisse der Touchabfrage (welche im Array keys[] gespeichert wurden) verwerten
  if( keys[0]>gibeineZahlein )
  {
   //LED an
   PORTA|=0x01;
  }
  else
  {
   //LED aus
   PORTA&=0xFE;
  }
 }

}
PS: Bitte nächstes mal Code-Tags beim eingeben verwenden, dann sieht dein Programm so wie das hier drüber aus^^

Das Programm würde jetzt ein Touchfeld an PA4 / PA5 abfragen und damit eine LED an PA0 schalten.

(bei der void stimmen irgendwie die geschweiften Klammern {} nicht ganz...? oder hab ich mich verzählt?)

Hoffe, ich konnte dir weiterhelfen

Gruß,
Bernhard