Вот я и решил собрать "коллекцию" приемов взаимодействия (и подключения кнопок), описать преимущества и недостатки того или иного метода...
В общем здесь будем добиваться четких нажатий, быстрой реакции и взаимопонимания с МК.

Добавлено after 26 minutes 57 seconds:
для начала подключение кнопки и настройка порта:
устройство небольшое, кнопка рядом, помехи невелики, кнопка подсоединяется с Y выход порта X на "минусовую" шину:
Код: Выделить всё
DDRX&=~(1<<Y); //DDRX.Y=0; устанавливаем ногу на вход.
PORTX|=(1<<Y); //PORTX.Y=1; включаем подтягивающий резистор (внутри МК).
...
//теперь PINX&(1<<Y) //PINX.Y отражает состояние входа (и кнопки) 0-нажата, не 0 - не нажата
//(тут важно - "не 0" это не обязательно 1, конструкция PINX&(1<<Y) при отпущенной кнопке принимает значение 2^Y)
самый простой пример антидребезга:
Код: Выделить всё
if ((PINX&(1<<Y))==0)
{
delay_us(100); //задержка перед повторной проверкой кнопки
if ((PINX&(1<<Y))==0) {действия при нажатой кнопке};
};Добавлено after 9 minutes 12 seconds:
если требуется величить стабильность (ослабить помехи) можно добавить внешний резистор от "ноги" к плюсу питания МК (R около 10кОм).

[/uquote]