ora l ; ** 4
jnz zader1 ; ** 10 нет, постоянная времени еще не равна 0, переход
; к следующему циклу временной задержки на 1 сек.
; да, постоянная времени равна “0”
ret ; * 10 возврат из подпрограммы задержки на 1 сек.
;
; подпрограмма табличного преобразования
tabcn: push d ; временное сохранение в теке содержимого пары d
; так как оно еще понадобится
lxi h,base ; загрузка в пару h базового адреса таблицы ; кодов для семисегментных индикаторов
mov e,a ; формирование 16-разрядного смещения для получения
mvi d,0 ; действительного адреса кода цифры
dad d ; получение действительного адреса кода цифры
mov a,m ; пересылка кода цифры из памяти (таблицы) в рег.а
pop d ; восстановление из стека содержимого пары d
ret ; возврат из подпрограммы табличного преобразования
;
klav: db 0 ; ячека памяти в которой временно хранится код
; нажатой клавиши клавиатуры
;
rab: db 0 ; ячека памяти в которой временно хранится
; текущее сосотояние секундомера “0” - секундомер стоит
; “1” - секундомер считает
;
; таблица кодов необходимых для индикации цифр на
; семисегментном индикаторе
base: db 0fch ; код цифры “0”
db 60h ; “1”
db 0dah ; “2”
db 0f2h ; “3”
db 66h ; “4”
db 0b6h ; “5”
db 0beh ; “6”
db 0e0h ; “7”
db 0feh ; “8”
db 0f6h ; “9”
end ; директива ассемблера, означающая конец текста
; программы
Расчет временной задержки.
Составим уравнение Од + Мн * Pov = 2000000
где Од - суммарное количество тактов команд, выполняющихся однократно при формировании временной задержки (помечены знаком *)
Мн - суммарное количество тактов команд, выполняющихся в цикле (помечены знаком **)
Pov- количество повторений цикла
2000000 - количество тактов в 1 секунде (для тактовой частоты 2МГц)
Од = 17+10+10=27 тактов
Мн = 10+7+10+5+5+4+10=51 такт
Pov = (2000000-Од)/Мн
Pov=(2000000-37)/51= 39214,96078431
В качестве Pov берется целое число проходов 39214
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.