; Программа “секундомер”.
; Выполняемые функции: нажатие на клавишу “0” - запуск секундомера;
; “1” - останов секундомера
; “2” - смена режима счета:
; по умолчанию включен режим увеличения состояния на 1 сек., нажатие на эту
; клавишу приводит к включению режима смены состояний через 2 сек. Повторное
; нажатие на эту клавишу переводит в режим смены состояний через 1 сек. И т.д.
;
; Распределение регистров микропроцессора.
; B - счетчик времени, (текущее время в двоично-десятичном коде),
; С - защита от дребезга,
; D - эталон количества секунд,
; Е - текущее количество секунд,
; D,E - индекс таблицы,
; H,L - постоянная времени на 1 секунду,
; H,L - адрес таблицы для вывода
;
porta equ 80h ; адрес первого индикатора
portb equ 81h ; адрес второго индикатора
portc equ 82h ; адрес клавиатуры
porcrl equ 83h ; адрес порта управления внешними устройствами
pov equ 39214 ; постоянная времени зад. на 1 сек.
povdr equ 254 ; пост. времени защиты от дребезга (кол. повторов).
kodkl equ 5h ; код пуска и смены режима 00000101 (кл. “0” и “2”).
kodkl1 equ 6h ; код останова и смены режима 00000110 (кл. “1” и “2”).
;
org 800h ; стартовый адрес программы в ОЗУ стенда
; инициализация
lxi sp,900h ; инициализация указателя стека
mvi a,89h ; загрузка управляющего байта внешних устройств
out porcrl ; вывод управляющего байта в порт управления
mvi b,0 ; инициализация регистров микропроцессора
mvi e,0
mvi d,1
mvi a,0fch ; код цифры ноль для вывода
out porta ; вывод нулей на индикацию
out portb
;
; ожидание пуска или смены режима
circl: mvi c,povdr ; загрузка кол. повторов при защ. от дребезга
rept: in portc ; опрос клавиатуры
ani kodkl ; нажат “пуск” или “смена режима” ?
jz circl ; ничего не нажато
; защита от дребезга при нажатии
dcr c ; да, нажато, уменьшение счетчика повторов при защ. от
; дребезга
jnz rept ; дребезг еще не окончен
; дребезг при нажатии окончен
; сохранение кода нажатой клавиши
in portc ; чтение кода нажатой клавиши
lxi h,klav ; занесение в пару h адреса ячейки памяти в которой
; необходимо сохранить код нажатой клавиши
mov m,a ; пересылка кода нажатой клавиши в ячейку памяти, адрес
; которой находится в паре h
reset1: mvi c,povdr ; ожидание отпускания клавиши
rept1: in portc ; опрос клавиатуры
ana a ; ни одна клавиша не нажата ?
jnz reset1 ; нет, что-то нажато
; защита от дребезга при отпускании клавиши
dcr c ; ничего не нажато, уменьшение счетчика повторов при
; защ. от дребезга
jnz rept1 ; дребезг еще не окончен
; дребезг при отпускании окончен
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.