VAI (27.03.2007 08:05, просмотров: 1) ответил rezident на Вот так мы все и ходим по одним и тем же тропам.
Делаю приблизительно так, как описал rezident в 1 случае. из таймерного прерывания раз в 10..20 мс вызывается следующий код.
<c>
// если надо, иметь текущее значение, то делаем еще глобальную переменную
char keygl = 0;
.....
static char key[4], kk;
key[kk++ & 3] = читаем из порта;
if ( key[0] == key[1] && key[0] == key[2] && key[0] == key[3] )
{ if ( keys != key[0] ) // (4 * хх) ms одно и тоже, считаем что нажата или отпущена
put_circle_i( keygl = key[0], &key_buf ); // в циклический буфер
}
</c>