Устройство управления охранной сигнализацией, страница 2

Элементная база — микропроцессор КР580ВМ80А.

1.  Разработка алгоритма

Каждая программа имеет четыре основные части: инициализация, ввод данных, обработка данных, вывод данных. Типовая схема первого шага детализации приведена на рисунке 1а. Характерная особенность этого алгоритма его цикличность. Первый шаг детализации алгоритма разрабатываемой программы не раскрывает последовательность необходимых операций, выполняемых микропроцессорной системой, для решения поставленной задачи. Поэтому каждый блок требует дополнительной конкретизации. С учетом этого произведем второй шаг детализации алгоритма. Инициализация будет иметь вид, приведенный на рисунке 1б. Инициализация- это начальная часть алгоритма, в ней присваиваются начальные значения, эта часть не может быть организованна другим способом.

При реализации ввода с клавиатуры необходимо учесть такой эффект как «дребезг», который может привести к искажению результата. В результате многократного касания подвижного контакта с неподвижным при замыкании или размыкании могут возникнуть паразитные импульсы, которые могут восприниматься МПС как полезные сигналы. Защита от дребезга основана на том, что паразитные сигналы  имеют малую длительность. Длительность сигнала может быть измерена путем подсчета количества повторений цикла ввода и многократного опроса клавиатуры. Возможно несколько вариантов организации защиты от дребезга. Алгоритм реализации защиты приведен на рисунке 2. В соответствии с заданием МПС должна реагировать только на кнопки «1», «3», «6». Для реализации этого условия необходимо использовать команду наложения маски. При этом сначала определяется, нажата  ли клавиша затем (если клавиша нажата) уменьшается счетчик повторов, количество повторов находится в регистре С. Когда число повторений достигает нужного значения, то есть в регистре С находится 0, то считается что, произошло нажатие клавиши. Если клавиша не нажата, то в регистр снова загружается постоянная времени при защите от «дребезга» и процесс повторяется, пока клавиша не будет нажата. Код нажатой клавиши необходимо сохранить и произвести аналогичную защиту при отпускании.

В следующей части программы необходимо произвести обработку данных. Алгоритм обработки приведен на рисунке 3. Код нажатой клавиши находится в регистре Е, поэтому в первую очередь, необходимо определить, какая из клавиш нажата для реализации одного из режимов работы. Сначала необходимо проверить, не нажата ли «6» и если нет, то проверить нажат «1» или «3» и вывод на индикацию будет производиться в соответствии с тем, что именно было нажато. Если же была нажата «6», то возможны 2 варианта. Либо произошло блокирование срабатывания очередного датчика, либо кнопка бала нажата второй раз и необходимо разблокировать  и разрешить срабатывание датчиков. Для этого необходимо, чтобы в отдельном регистре хранилась информация о том, какой раз нажата «6». Для этого отведем регистр D и будем записывать в него 0, если «6»

не нажата или нажата второй раз, или 1, если она нажата один раз и необходимо заблокировать. При разблокировании программа переходит на метку «razblok» и продолжает обработку информации, если нажата  необходимая клавиша. При первом нажатии «6» в регистр D записываем 1 и ожидаем очередного нажатия, причем с помощью наложения маски может быть нажата только «6», после чего происходит разблокирование. Блок 3.8- это защита от дребезга. Она аналогична описанной ранее и ее алгоритм приведен на рисунке 4.

После того, как был определен код нажатой клавиши и, соответственно, один из режимов работы, необходимо перейти к последней части- выводу информации на индикацию. Если был нажата «1», то выводим на индикацию «02» и «0.2.» поочередно, обращаясь к подпрограмме задержки, чтобы каждое из значений сменяло другое через 0.5с. Данный алгоритм приведен на рисунке 5а. Аналогично выводим на индикацию «04» и «0.4.» при нажатии «3» (рисунок 5б).

При выводе данных происходит обращение к подпрограмме задержки на 0.5с. с опросом клавиатуры, алгоритм которой приведен на рисунке 6. Постоянная времени загружается в пару h, опрашивается клавиатура. Если нажата клавиша, то происходит защита от дребезга, сохранение кода нажатой клавиши и безусловный переход на метку «obrab». Далее снова происходит определение режима работы. Если же не происходит нажатия клавиши, то содержимое пары h уменьшается на 1 до тех пор, пока не станет равным 0. В результате работы этой подпрограммы, числа, выводимые на индикацию, остаются на дисплее в течение 0.5с, а затем меняются на другие и т.д.