Hallo inka,

nicht so ganz, aber fast. So könnte es vielleicht gehen. Ich kann das aber erst heute abend testen.

Code:
#include "asuro.h"
#include "lcd.h"
#include "i2c.h"

//makrodefinitionen der taster
#define LCD_KEY_YELLOW   (1<<PD6)
#define LCD_KEY_RED      (1<<PD2)
#define LCD_KEY_BLUE     (1<<PB3)

int LCDPollSwitch (void)
{
int key = 0;

//taster pins auf input schalten
  TCCR2 = (1 << WGM21) | (1 << CS20);   //  OC2 PIN deaktivieren, aber 36kHz Timer weiterlaufen lassen (z.B. für Sleep(void) )

  DDRD &= ~((1<<PD2)|(1<<PD6));      // roten und gelben Taster als Eingang definieren
  DDRB &= ~(1<<PB3);            // blauen Taster als Eingang definieren

//taster abfragen

  key  |= (PIND&LCD_KEY_YELLOW);
  key  |= (PINB&LCD_KEY_RED);
  key  |= (PINB&LCD_KEY_BLUE);

//taster pins auf output schalten

  TCCR2 = (1 << WGM20) | (1 << WGM21) | (1 << COM20) | (1 << COM21) | (1 << CS20);

  DDRD &= ~((1<<PD2)|(0<<PD6));      // roten und gelben Taster als ausgang definieren
  DDRB &= ~(1<<PB3);                 // blauen Taster als ausgang definieren


//tasterwert zurückgeben

return key;
}

int main(void)
{
  int keys;

  Init();
  InitI2C();
  InitLCD();

  while(1)
  {
    keys = LCDPollSwitch();
    if (keys & LCD_KEY_YELLOW)
    {
        PrintSetLCD(0,0,"Yellow");
    }
    else if (keys & LCD_KEY_RED)
    {
        PrintSetLCD(0,0,"Red");
    }
    else if (keys & LCD_KEY_BLUE)
    {
        PrintSetLCD(0,0,"Blue");
    }
    Msleep(1000);
  }
  return 0;
}