|
|
Сканирование матрицы клавиатуры выполняется как обычно. У меня фиксация клавиши обнаруживается при ее нажатии. Кроме того имеется счетчик задержки и пара флажков: флаг нажатия клавиши и флаг автоповтора. В начальном состоянии флажки сброшены и счетчик задержки обнулен.
Если при сканировании клавиатуры обнаруживается нажатие кнопки, то устанавливается флаг нажатия кнопки и возвращается код нажатой кнопки. Если при следующем сканировании обнаруживается, что кнопка еще не отпущена, то начинает работать счетчик задержки, который при каждом сканировании увеличивается до тех пор, пока его значение не станет равным Td (время задержки до автоповтора). После этого устанавливается флаг автоповтора и в дальнейшем счетчик увеличивается до значения Ta (период автоповтора). При установленном флаге автоповтора код кнопки выдается с периодом Ta, до тех пор, пока кнопка не будет отпущена. После этого флажки сбрасываются, счетчик обнуляется и программа возвращается в исходное состояние.
E-mail: info@telesys.ru