Цитата(ssvd @ Oct 31 2009, 18:43)

как я уже сказал, что С только начал изучать...
можете построчно описать какой нибудь способ?
Все когда-то начинали. Читайте книги по си.
Как для первоклассника:
Функция DebounceSwitch2 не получает никаких аргументов и возвращает беззнаковый байт результата 1-истина 0-ложь
Вызывать эту функцию надо с интервалом 5-10мс.
Код
uint8_t DebounceSwitch2(void)
{
// 1. Объявляется локальная статическая переменная и единожды инициализируется нулём при включении контроллера.
static uint16_t State = 0;
// 2. State сдвигается влево на один бит (было 0b 0000 0000 0000 0011 станет 0b 0000 0000 0000 0110)
// 3. далее результат, возвращаемый функцией RawKeyPressed() логически инвертируем (был 0 стал 1 и наоборот)
// 4. далее делаем побитовое ИЛИ результата пункта 2 и пункта 3
// 5. далее делаем побитовое ИЛИ результата пункта 4 с константой 0xe000 = 0b 1110 0000 0000 0000
// 6. присваиваем результат пункта 5 переменной State
State=(State<<1) | !RawKeyPressed() | 0xe000;
// 7. сравниваем State с константой 0xf000 = = 0b 1111 0000 0000 0000 и ели равны возвращаем 1 если иначе 0
return (State==0xf000);
}
побитовое ИЛИ работает так:
a=0b00000001
b=0b00000010
c=a|b; // c станет равно 0b00000011
RawKeyPressed() возвращает нефильтрованное состояние логического входа (кнопка нажата = 0).
и как только кнопка зажата средний член выражения (State<<1) | !RawKeyPressed() | 0xe000
превращается в 1. Получаем (State<<1) | 1 | 0xe000
CODE
Переменная State начинает меняться:
State = 0xe001
State = 0xe003
State = 0xe007
State = 0xe00f
State = 0xe01f
State = 0xe03f
State = 0xe07f
State = 0xe0ff
State = 0xe1ff
State = 0xe3ff
State = 0xe7ff
State = 0xefff
State = 0xffff
State = 0xffff
State = 0xffff
State = 0xffff
Как только кнопку отпустили: (State<<1) | 0 | 0xe000
State = 0xfffe
State = 0xfffc
State = 0xfff8
State = 0xfff0
State = 0xffe0
State = 0xffc0
State = 0xff80
State = 0xff00
State = 0xfe00
State = 0xfc00
State = 0xf800
State = 0xf000 << бинго
State = 0xe000
State = 0xe000
State = 0xe000
State = 0xe000
Такой вот вариант (я его не использую). Существует масса других...
Надо понимать, что при использовании этого алгоритма необходимо
буферировать (очепятка была)

результат подавления дребезга в некоторой переменной...