org 800h ;1.2 стартовый адрес программы в ОЗУ стенда
lxi sp,900h ;инициализация указателя стека
mvi a,89h ;загрузка управляющего байта внешних устройств
out porcrl ;вывод управляющего байта в порт управления
;***********************НАЧАЛО ПРОГРАММЫ**********************
vstart: mvi e,60h ; 2.1 загрузка кода правого положения щёток очистки в Е
mov a,e ; 2.2 загрузка кода правого положения щёток очистки в А
out porta ; 2.3 вывод на индикацию - щётка вправо
;ожидание включения одного из режимов
start: mvi c,posdr ; 2.4 загрузка постоянной дребезга в регистр C
drin: in portc ; 2.5 опрос клавиатуры
ani 0Ch ; 2.6 накладывается маска 00001100 - нажаты клавиши включения
;одного из режимов?
jz start ;ничего нужного не нажато, переход на начало
dcr c ;2.7 нажата нужная клавиша, уменьшение счетчика повторов
;при защите от дребезга
jnz drin ; 2.8 дребезг еще не окончен, снова опрос клавиатуры
;дребезг при нажатии окончен - сохранение кода нажатой клавиши в памяти
in portc ; 2.9 чтение кода нажатой клавиши
lxi h,klav ; 2.10 занесение в пару h адреса ячейки памяти, в которой
;необходимо сохранить код клавиши
mov m,a ; 2.11 сохранение кода клавиши в ячейку памяти адрес которой
;находится в паре h
; защита от дребезга при отпускании клавиши
drout1: mvi c,posdr ; 2.12 загрузка постоянной дребезга в регистр C
drout2: in portc ; 2.13 опрос клавиатуры
ani 0Ch ; 2.14 накладывается маска 00001100 - нажаты клавиши включения
;одного из режимов режимов ?
jnz drout1 ; что-то нужное нажато, переход на начало защиты от дребезга
;при отпускании клавиши
dcr c ; 2.15 не нажата никакая нужная клавиша, уменьшение счетчика
; повторов при защите от дребезга
jnz drout2 ; 2.16 дребезг не окончен, переход на опрос клавиатуры
;дребезг при отпускании окончен
;**************ОСНОВНАЯ ЧАСТЬ ПРОГРАММЫ**************************
lxi h,klav ; 3.1 занесение в пару h адреса ячейки памяти в которой был
;сохранён код клавиши
mov a,m ; 3.2 загрузка кода клавиши
cpi 04h ; 3.3 сравнение с 00000100 - с кодом клавиши включения режима
;30 движений в минуту
jz twosec ; да - нажато включение режима 30 движений в минуту
; нет - нажатo включение режима 1 движение в минуту
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.