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

В программе используются 2 временные задержки. Первая - при защите от дребезга(povdr), которую выберем равной 254. Вторая - при временной задержке и ее необходимо рассчитать.

Расчет временной задержки.

Составим уравнение Од + Мн * Pov = 2000000

где Од - суммарное количество тактов команд, выполняющихся однократно при формировании временной задержки (помечены знаком *)

Мн - суммарное количество тактов команд, выполняющихся в цикле (помечены знаком **)

Pov- количество повторений цикла

2220000 - количество тактов в 1 секунде (для тактовой частоты 2,22МГц)

Од = 10+7+10=27 тактов

Мн = 10+7+10+5+5+4+10=51 такт

Pov = (2220000-Од)/Мн

Pov=(1110000-27)/51=  21764.176

В качестве Pov берется целое число проходов 21764


          а)                                                  б)

Рис.1 а - первый шаг детализации б - второй шаг детализации (инициализация)

Рис. 2 Защита от дребезга при нажатии клавиши

 

Рис. 3 Определение кода нажатой клавиши

Рис. 4 Алгоритм защиты от дребезга при блокировании

         а)                                                                б)

Рис. 5 Вывод на индикацию при нажатии а- «1» б- «3»

Алгоритм подпрограммы задержки на 0.5 с. с опросом клавиатуры:

Рис. 6 Подпрограмма задержки

2.Текст программы на языке ассемблера

;1-датчик дверей: индикация цифрами и миганием маркеров

;3-вызов «газовой службы»: индикация цифрами и миганием маркеров

;6-блокирование срабатывания очередного датчика

; распределение регистров микропроцессора

; С-количество повторений при защите от дребезга

; Е- код нажатой клавиши

; H,L- постоянная времени на 0.5 с.

;D- регистр клавиши «6»

porta equ    80h             ; адрес первого индикатора                   

portb equ    81h             ; адрес второго индикатора

portc equ    82h             ; адрес клавиатуры

porcrl         equ    83h             ; адрес порта управления внешними устройствами

pov   equ    21764         ;постоянная времени, заданная на 0.5 с.

povdr         equ    254             ;постоянная защиты от дребезга( кол-во повторов)

mask046    equ    4ah    ;код клавиш «1», «3». «6»

mask6        equ    40h   ;код блокирования срабатывания очередного датчика

                                      ;инициализация

         org    800h           ;стартовый адрес программы в ОЗУ стенда

         lxi     sp,920h      ;инициализация указателя стека   

          mvi   a,89h           ;загрузка управляющего байта внешних устройств

         out    porcrl                   ;вывод управляющего байта внешних устройств

         mvi   e,0               ; инициализация регистров

         mvi   c,0

         mvi   d,0

         mvi   a,0fch                   ;код цифры ноль для вывода