В программе используются 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 а - первый шаг детализации б - второй шаг детализации (инициализация)
|
Рис. 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 ;код цифры ноль для вывода
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.