Электроника и МП техника. Китаев Ю.В. - 39 стр.

UptoLike

Составители: 

39
086d 1c inr E
086e
da 6c
08
jc shift
0871 7b mov A, E
код путем сдвига сканкода вправо до того
момента, когда единственный нулевой бит
сканкода будет "вытолкнут" командой rar
во флаг переноса. В этот момент в
регистре E зафиксируется вычисленный
код клавиши. Например нажата SW2. Ее
сканкод = 1111 1011. Потребуется 3
сдвига, чтобы вытолкнуть "0",
одновременно содержимое регистра E
увеличится на 3 и станет равным ff +3 = 2.
0872 c9 ret выйти из подпрограммы key
#### подпрограмма delay временной задержки на 10 мсек ####
delay: 0895 d5 push D
сохранить значение рег-ра E (а не D!), т.к.
он используется в п/п "key"
0896
11 50
08
lxi D,
0850
записать в пару DE начальное значение
временной задержки
dl: 0899 1b dcx D уменьшать в цикле величину задержки
089a 7a mov A, D
089b b3 ora E
вычислить содержимое DE с помощью
операции (D "ИЛИ" E) - нулевой
результат только в том случае, если и (D)
и (E) равны 0
089c
c2 99
08
jnz dl повторить, если результа не равен 0
089f d1 pop D
восстановить прежнее значение регистра
E, по истечении задержки
08a0 c9 ret и выйти из подпрограммы
#### подпрограмма индикации (вывод адреса и байта данных на три
линейки ####
indic: 08a1 3e fb mvi A, fb
записать в аккумулятор код линейки
старшего байта адреса
08a3 d3 01 out 01 и вывести его в порт PB с адресом 01
08a5 7c mov A, H
переслать в аккумулятор старший байт
адреса
08a6
cd ba
08
call lght и высветиь его
08a9 3e f7 mvi A, f7
записать в аккумулятор код линейки
младшего байта адреса
08ab d3 01 out 01 и вывести его в порт PB с адресом 01
08ad 7d mov A,L переслать в аккумулятор младший байт