Космонавтика  Архитектура 3-х шинных систем 

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 [ 20 ] 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57

Начало

Выборка флажка колонок нз памяти

Т,=Т,+1

Очистить счет*1нк Т,

Сдвиг флажка

колонок на I разряд вправо


Запись значения Т,

Сдвиг 0-*0j

Выборка нз памяти слова данных об активности горизонтальной линии

Очистка счетчика Tj

14

Гг+1

Сдвиг на 1 разряд вправо слова данных об активности горизонтальных линий


О -От

Вес ключа ~ [5 Т,]+Т,

Запись веса ключа в память

Рнс. 4.18. Блок-схема программы вычисления десятичного значения веса нажатой клавиши.

Г Возврат

никаких действий выполнять нельзя. В рассматриваемой системе используются следующие критерии определения факта действительного замыкания и факта действительного размыкания ключа:

Ключ считается действительно замкнутым, если микропроцессорная система вычислит один и тот же вес ключа 50 раз подряд.

Ключ считается действительно разомкнутым, если микропроцессорная система обнаружит его разомкнутым в течение

D, Do

0 0 0 0 1 0 0 о

После сдвига вправо на 1 разряд в позиции D? появляется значение О - -00000 1 0 0-*

Рис. 4.19. Сдвиг слова данных вправо на один разряд. В позиции D? появляется логическое значение 0.

50 последовательных просмотров входной горизонтальной линии матрицы клавиатуры.

Отметим, что выбор числа последовательных подтверждений факта нахождения ключа в определенном состоянии является субъективным. Благодаря последовательным подтверждениям устраняется влияние эффекта механической вибрации клавиши, существующего в клавишных устройствах. Интервал времени, в течение которого ключ находится в неопределенном состоянии, может быть различным для различных клавиатур.

4.11. Программные средства учета-Эффекта вибрации клавиатуры

Теперь рассмотрим программное обеспечение, используемое дли учета эффекта вибрации клавиш. Разберем блок-схему, отражающую последовательность происходящих в системе событий. Потом представим конкретную программу, необходимую для реализации этой блок-схемы. В задаче можно выделить две части. Первая заключается в разработке программы, обеспечивающей 50-кратное последовательное подтверждение факта обнаружения одного ключа в замкнутом состоянии. Вторая часть задачи состоит в установлении того, что в течение 50-кратного последовательного сканирования входных линий матрицы клавиатуры не обнаруживается активной выходной линии клавиатуры. Эти частные задачи соответствуют вопросам определения фактов действительного нажатия и освобождения определенной клавиши.



На рис. 4.20 представлена блок-схема, определяющая последовательность действий, выполняемых системой при вводе информации о нажатии одной клавиши. Отметим, что эта программа использует рассмотренную выше подпрограмму, блок-схема которой дана на рис. 4.10; эта подпрограмма использу-

Начало

Вызов подпрограммы, показанной на рис.4.10

ВьЕзов подпрограммы

определения веса ключа

(см,рнс.418)


Вызов подпрограммы определения веса ключа (см. рис.4.18)

Рис. 4.20. Блок-схема программы ввода информации в микропроцессорную систему о нажатии одной клавиши.

ется для определения номера активизируемой входной линии матрицы клавиатуры. Кроме того, в данной программе используется подпрограмма обнаружения активной выходной, линии клавиатуры. Если клавиша не нажата, то флажок выходов имеет значение 0. В этом случае управление передается (рис. 4.20) подпрограмме активизации входных линий, которая установит на следующей входной линии уровень логического 0. Этот цикл выполняется системой до тех пор, пока пользователь не нажмет на клавишном пульте какую-либо клавишу.

Если на шаге 3 (рис. 4.20) обнаруживается значение флажка выходов , отличное от нуля, то данная программа вызовет подпрограмму вычисления веса ключа, принимающего значения

Начало

Выборка из памяти значения переменной КТ1МЕ


9

KTI.ME = KTIME+1

КТ1МЕ = 0


KROW = C0000001,

Переход к программе, , прелставленнок па рпс.4,20

, Переход к программе . определения факта освобождения ключа

Рис. 4.21. Блок-схема программы определения 50 последовательных подтверждений нажатия определенной клавиши.

в диапазоне от О до 24. Программа записывает это число в память по адресу, обозначенному как KWGT.

Итак, допустим, система один раз обнаружила активный выход клавиатуры. Теперь должна быть выполнена 50-кратная проверка активности одной и той же выходной линии клавиатуры, определяемой замыканием одного ключа. Блок-схема соответствующего алгоритма показана на рис. 4.21. На данной



блок-схеме счетчик KTIME используется для регистрации числа последовательных поступлений в систему сигналов, соответствующих замыканию одного и того же ключа, и для проверки достижения этого числа заданному количеству подтверждений.

Если счетчик KTIME при проверке на щаге 2 (см. рис. 4.21) равен О, то значит, что от определенного ключа в систему поступил первый сигнал. Так как сигнал поступил в первый разнеоб-ходимо запомнить соответствующее весовое значение ключа. Это делается посредством присваивания переменной КСОМР весового значения ключа, сигнал от которого поступил в систему. Весовое значение этого ключа всегда запоминается в памяти по адресу KWGT. После присваивания переменной КСОМР на 3-м шаге нового значения устанавливается значение счетчика KTIME равньПи 1 и происходит переход к секции программы, обеспечивающей прием других сигналов от клавиатуры. Прежде чем перейти к этой секции программы, система восстанавливает значение счетчика активных входных линий клавиатуры KROW. Устанавливаемое начальное значение определяет, что теперь уровень логического О должен подаваться на первую горизонтальную линию матрицы клавиатуры. Это действие выполняется на 5-м шаге рассматриваемого алгоритма. Когда информация о замыкании ключа вводится в систему во второй раз, значение счетчика KTIME не будет равно 0. Поэтому после шага 2 выполнится шаг 7. На 7-м шаге сравниваются значения переменных KWGT и КСОМР. Если сравниваемые значения не равны, то выполняется, согласно блок-схеме, переход к шагу 8. На 8-м шаге счетчику KTIME присваивается значение О, и система будет снова пытаться получить 50 последовательных подтверждений факта нажатия определенной клавиши. Если значения переменных KWGT и КСОМР равны, то после выполнения шага 7 будет выполняться шаг 9. На шаге 9 значение счетчика KTIME увеличивается на 1. Тем самым учитывается еще одно последовательное поступление информации о замыкании одного и того же ключа. Потом система проверяет значение счетчика KTIME. Эта проверка выполняется на 10-м шаге алгоритма. На 10-м шаге фактически проверяется, было ли 50 раз подряд зафиксировано одно и то же значение веса ключа.

Если значение счетчика KTIME не равно 50, то система переходит к выполнению шага 5, назначение которого было описано выше. Затем система снова возвращается к программной секции, обеспечивающей ввод Информации о состояниях выходных линий клавишного пульта.

Если на шаге 10 значение счетчика KTIME равно 50, то система выполняет следующие действия. Сначала отмечается, что было зафиксировано действительное нажатие клавиши. Соответствующее весовое значение ключа запоминается в двух ячейках памяти с адресами KWGT и КСОМР. Система использует

ячейки KWGT для сохранения веса действительно замкнутого ключа. .

После установления факта действительного нажатия клавиши система перейдет к программной секции, которая обеспечит определение факта отжатия клавиши по принципу 50-кратного подтверждения. До тех пор пока ключ остается в замкнутом состоянии, функция, рпределяемая им, выполняться не должна. Отметим, что микропроцессорная система должна обладать таким быстродействием, что при оценке общей производительности системы временем, которое тратится на подтверждение нахождения клавиши в том или ином состоянии, можно пренебречь. А время выполнения функции соответствующей клавиши должно быть много меньше, чем время, которое эта клавиша находится в нажатом состоянии.

Если при полном сканировании входных линий матрицы клавиатуры не обнаруживается ни одной активной выходной линии, то фиксируется отсутствие нажатой клавиши. Блок-схема для реализации этой функции показана на рис. 4.22. Сначала переменной KROW присваивается такое значение, которое обеспечит сканирование входных линий клавиатуры, начиная с. первой линии. Затем счетчику KTIME присваивается значение 0. В этой программной секции счетчик KTIME используется для подсчета количества полных сканирований клавиатуры, во время которых не обнаруживалось замкнутого ключа. Теперь система вызывает подпрограмму с именем ROW (шаг 3 на блок-схеме). Эта подпрограмма готовит и выдает данные, определяющие значения уровней на входных линиях клавиатуры. После этого система обращается к подпрограмме COL.

Подпрограмма COL проверяет состояние выходных линий клавиатуры. Если активных выходных линий нет, то подпрограмма COL присваивает флажку выходов значение 0. Если же активные выходные линии обнаруживаются, то управление передается в начальную точку программы, что показано на блок-схеме стрелкой, идущей от шага 5 к шагу 1.

Если активных выходных линий не обнаружено, то флажок выходов имеет значение О и система перейдет после шага 5 к шагу 9. На 9-м шаге значение счетчика NROW увеличивается на 1. Счетчик NROW используется для регистрации количества последовательных выполнений подпрограммы COL, во время которых система не обнаруживает активных выходных линий. Счетчик NROW фактически указывает, какая из горизонтальных линий матрицы в настоящее время активизирована. Когда значение NROW равно 5, пятая по счету горизонтальная линия матрицы была активизирована. Однако активных выходных линий система не обнаружила.

в этом случае система, выполняя программу, представленную блок-схемой на рис. 4.22, перейдет от шага 10 к шагу 6.



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 [ 20 ] 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57