Цитата(Pyku_He_oTTyda @ Mar 22 2007, 21:26)

Спасибо!
Несколько кнопок не могут быть нажаты, это считается ошибкой.
Тогда вполне мой второй вариант подходит. Зачем держать семь переменных, для которых валидным будет только семь значений на всех? Можно еще поправить:
Код
enum keypressed_t {RELEASED, UP, DOWN, LEFT, RIGHT, MODE, SET, MAX_KEY};
void read_key()
{
uint8_t Port_Val = ~PINA;
uint8_t Mask = 1 << (MAX_KEY - 1);
uint8_t Key_tmp = MAX_KEY - 1;
do
{
if(Port_Val & Mask)
break;
Mask >>= 1;
Key_tmp--;
}
while(Mask);
Key = Key_tmp;
}