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

            Все программные методы борьбы с дребезгом построены по принципу "не верь гла­зам сво­им",  т.е. первоначально зафиксированно изменение в состоянии клавиатуры должно быть пе­реп­ро­верено. Наиболее просто такая перепроверка осуществляется оп­ро­сом клавиатуры через время Тзад заведомо большее чем Тдр от момента фиксации из­ме­не­ния в состоянии клавиатуры. Так в пер­вом случае (диаграмма "а"), если в момент вре­ме­ни t2 перепроверить состояние клавиатуры, то она окажется выключенной, что поз­во­лит отвергнуть предварительное  заключение  о ее нажа­тии,  сделанное в момент времени t0.  Перепроверки состояния клавиатуры, сделанные в моменты вре­мени  t2,  t5 во втором слу­чае (диаграмм "б"),  подтвердят соответственно нажатие и отжатие клавиши, что пре­дот­вратит ввод ложного  дополнительного символа в МПС при однократном на­жа­тии кла­виши. Алгоритм поддержки клавиатуры, построенный по такому методу, приведен на рис. П8.2.

                       

    Рис. П8.2.  Алгоритм  функционирования  программы  поддержки клавиатуры с по­дав­ле­нием дребезга

            В блоках 1, 5, 9, 12 выполняется полное сканирование клавиатуры, подпрограмму ре­али­за­ции которого можно взять из ПРИЛОЖЕНИЯ 7.  Блок 2 проверяет нажатие кла­ви­ши. Если кла­виша не нажата, то следует переход на блок 1 для повторных ска­ни­ро­ва­ний клавиатуры. В про­тивном случае значение скан-кода нажатой клавиши сохраняется в переменной Save (см.  блок 3).  После этого выполняется задержка на время Тзад (см.  блок 4) с последующим полным сканированием клавиатуры (см. блок 5). Если клавиша окажется не нажатой (такая проверка осу­ществляется блоком 6),  то следует  признать, что,  зафиксированное блоком 2, нажатие кла­ви­ши оказалось ложным и перейти в начало ал­горитма. В противном случае в блоке 7 необходмио срав­нить первоначальное значение скан-кода, сохраненное в переменной Save,  с полученным в ходе второй проверки. Не сов­падение этих кодов ведет к переходу в начало алгоритма, а совпадение - к конс­та­та­ции факта нажатой клавиши с последующей  реакцией. Реакция на на­жа­тую клавишу (см. блок 8) заключается в выводе визуального образа нажатой клавиши в край­нее  правое  зна­коместо дисплея  со  сдвигом предыдущей информации на нем на один разряд влево. Именно так работает УОУ при штатной работе.

            Далее в блоках 9...12 определяется отжатие клавиши.  Причем, делается это дваж­ды - в бло­ках 10 и 13.  Между этими  последовательными проверками также делается за­дер­жка на время Тзад.  Поскольку задержка в программе выполняется дважды, то целе­со­об­разно эти части программы оформить в виде подпрограммы,  которую можно вызы­вать в нужных местах.  Ниже приводится один из возможных вариантов такой под­прог­рам­мы:

Zaderjka equ    3fffh

Delay:

        push    h

        lxi        h, Zaderjka

Loop:  

       dcx        h

        mov      a, l

        ora       h

        jnz       Loop

        pop      h

        ret

            Значение Zaderjka определяет Тзад и подбирается  экспериментально. Более слож­ные ме­то­ды борьбы с дребезгом [7] требуют для принятия  решения  о нажатой клавише N - кратного пос­ледовательного повторения скан-кода нажатой клавиши или N - кратного повторения приз­на­ка не нажатой клавиши при анализе размыкания ключа.

    ПРИЛОЖЕНИЕ 9

            Ввод частотных сигналов в МПС

            П9.1. Общие положения

            Частотным сигналом будем называть последовательность прямоугольных им­пуль­сов,  час­тота следования Fx которых пропорцинальна измеряемому параметру. Такие пос­­ледо­ватель­нос­ти могут возникать, например,  в измерительных системах,  подобных пред­ставленной на рис. П9.1.

                        Рис. П9.1. Структурная схема измерительной системы

            На рис. П9.1 сделаны следующие обозначения:

            ППИ  - первичный преобразователь информации (датчик) измеряемого параметра Х;

            Ux (Ix) - выходное напряжение (ток) датчика;

            ПНЧ (ПТЧ) - преобразователь напряжение (ток) - частота;