Лабораторный практикум по курсу "Микропроцессорные устройства". Часть 1, страница 20

                                   ; Во втором цикле 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. Программные методы борьбы с дребезгом

            С дребезгом можно бороться как аппаратным путем, так и программным. Ап­па­ратный ме­тод в УОУ не используется,  поэтому далее будет рассмотрен только прог­рам­мный.