; чтение кода нажатой клавиши
; что нажато пуск или смена счета ?
lxi h,klav ; занесение в пару h адреса ячейки памяти в которой
; ранее сохранен код нажатой клавиши
mov a,m ; пересылка кода нажатой клавиши из ячейки памяти, адрес
; которой находится в паре h в аккумулятор
cpi 1h ; число 1 соответствует нажатой клавише “0” (“пуск”)
jz pusk0 ; нажат пуск
; нажата другая клавиша - т.е. нажата смена режима
reg: mov a,d ; эталон количества секунд равен 1 ?
cpi 1
jnz re1 ; нет, эталон кол. сек. равен 2, значит его надо
; сделать равным 1
; да, эталон кол. секунд равен 1
mvi d,2 ; установка режима счета 2
jmp prod
re1: mvi d,1 ; установка режима счета 1
;
; проверка состояния секундомера стоит или считает
prod: lxi h,rab ; берем состояние из ячейки памяти
mov a,m
ana a ; в ячейке “0” (секундомер “стоит”)
jz circl ; да, секундомер стоит, уходим на ожидание нажатия
; клавиши “0” (“пуск”).
jmp pusk1 ; продолжение работы после смены режима
;
pusk0: lxi h,rab ; установка режима "работа", т.к. была нажата клавиша
; “0” (“пуск”).
mvi m,1
; работа секундомера - отсчет времени
pusk1: mov e,d ; установка текущего количества секунд, через которые
; надо изменить состояние секундомера (время задержки
; в секундах), эталон хранится в регистре d
zad: call zader ; * 17 вызов подпрограммы задержки на 1 сек.
dcr e ; уменьшение на 1 текущего количества секунд (произошла
; задержка на 1 сек.)
jnz zad ; отработана задержка на заданное количество секунд ?
; если нет, то надо повторить задержку на 1 сек,
; если задержка отработана, то надо увеличить счетчик
; времени
; увеличение счетчика времени
mov a,b ; пересылка в рег.а текущего времени,
; которое хранится в рег. в
add d ; сложение текущего времени с эталоном увеличения
; секунд, который хранится в регистре d (там может быть
; 1 или 2 в зависимости от режима счета (увеличение
; текущего времени на 1 или на 2
daa ; превращение текущего времени в число в двоично-
; десятичном коде
mov b,a ; сохранение текущего времени в регистре в для
; использования на следующем шаге счета
; индикация
; подготовка к индикации старшей цифры числа
ani 0f0h ; стираем младшую цифру (мл. 4 разряда)
rrc ; перемещаем старшую цифру в младшие 4 разряда
rrc
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.