; Во втором цикле PC6 = 1, PC5 = 0, PC4 = 1
; В третьем цикле PC6 = 0, PC5 = PC4 = 1
out 2 ; Активизация нового столбца
in 0 ; Ввод байта состояния клавиатуры
... ; Формирование признака нажатой
; клавиши и ее скан-кода
...
Если циклы продолжаются, то небходимо написать dad h. Это приведет к сдвигу HL на один разряд влево и нуль из D4 сдвинется сначала в D5, а затем - в D6.
Возможны дальнейшие упрощения программы за счет специального размещения таблицы кодов визуального образа, инкремента не скан-кода, а сразу адреса кода визуального образа (для этого необходимо при входе в блок 1 программы поддержки клавиатуры инициализировать регистровую пару начальным адресом таблицы). Но это, возможно, не очень удачные решения. Первое - потому, что ограничивает программиста при размещении таблицы (в больших проектах это может быть существенным фактором), второе - потому, что не дает возможности получить скан-код в чистом виде. Ведь отображение нажатой клавиши на дисплее - частный случай использования скан-кода. Нетрудно представить себе МПС, в которой клавиатура используется для управления какими-либо объектами или режимами работы объектов, т.е. в применениях не связанными с визуализацией.
ПРИЛОЖЕНИЕ 8
Подавление дребезга клавиатуры
П8.1. Явление дребезга
Явление дребезга (вибрации)характерно для большинства электро-механических ключей, оно поясняется временными диаграммами, представленными на рис. П8.1.
Рис. П8.1. Диаграммы состояния ключа при коммутации
На рис. П8.1 замкнутое (при нажатии) состояние ключа представлено сигналом высокого уровня, а разомкнутое - сигналом низкого уровня. Явление дребезга заключается в том, что при коммутации ключ не сразу переходит в коммутируемое состояние, а спустя время дребезга Тдр. В течение этого времени ключ может несколько раз замкнуться и разомкнуться. На диаграмме "а" показано ложное срабатывание ключа, которое возможно при сильных механических воздействиях на клавиатуру: удары, падения и т.п. На диаграмме "б" показано срабатывание ключа при воздействии оператора.
Игнорирование явления дребезга может привести к неприятным последствиям. Так в первом случае, если опрос клавиатуры придется на момент времени t0, то МПС зафиксирует наличие нажатия клавиши и начнет несанкционированную реакцию на это "нажатие". Во втором случае, если опрос клавиатуры придется на момент времени t0, то МПС зафиксирует наличие нажатия клавиши. Если далее момент опроса клавиатуры придется на момент времени t1, то МПС зафиксирует отжатие клавиши и начнет реакцию на нажатую клавишу. Если следующий опрос клавиатуры придется на момент времени t2, то МПС снова зафиксирует нажатие клавиши, которое следует признать ложным, поскольку за анализируемый промежуток времени клавиша нажималась только один раз. Такая же неприятность возможна и при проверке отжатия клавиши. Так, если проверка отжатия клавиши придется на момент времени t3, то МПС признает ее отжатой и в момент времени t4 может зафиксировать ее новое нажатие, которое также придется признать ложным.
П8.2. Программные методы борьбы с дребезгом
С дребезгом можно бороться как аппаратным путем, так и программным. Аппаратный метод в УОУ не используется, поэтому далее будет рассмотрен только программный.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.