Проектирование имитатора сигналов на микропроцессоре 1821ВМ85, страница 10

LXI

SP,

;указатель вершины стека

MVI

A,

; младший байт данных для счетчиков

OUT

;в регистр младшего байта счетчиков

MVI

A,

; старший байт данных для счетчиков

OUT

;в регистр старшего байта счетчиков

MVI

A,

; младший байт данных для счетчика

OUT

; в регистр младшего байта счетчика

MVI

A,

; старший байт данных для счетчика

OUT

в регистр старшего байта счетчика

MVI

A,1

OUT

запись в первый разряд дисплея (для индикации )

OUT

запись в пятый разряд дисплея (для индикации )

STA

Запись в ячейку ОЗУ текущего значения

SUB

A

Создание нуля в аккумуляторе

OUT

запись в третий разряд числа (для индикации скорости )

MVI

A,11

OUT

запись во второй разряд числа (для индикации направления –)

MVI

A,

OUT

запись в четвертый разряд числа (для индикации направления  +)

STA

Запись в ячейку ОЗУ предыдущего значения направления

MVI

A,0Bh

SIM

; разрешение прерываний по входу RST7,5

EI

MAIN

JMP

MAIN

L1:

PUSH

H

PUSH

B

PUSH

PSW

IN

58h

MOV

C,A

; запоминание кода в регистре

MVI

A,

;

ANA

C

;– код нажатой клавиши

MOV

C,A

; запоминание в регистре C кода нажатой клавиши

ANI

;

CPI

8

; сравнение старших разрядов кода с числом 8

JZ

L2

; переход к заданию направления движения

JC

L5

; переход к заданию скорости движения

MOV

A,C

– код нажатой клавиши

SUI

11

преобразование значения кода клавиши периода

OUT

70h

вывод кода на дисплей

CALL

TAB

; подпрограмма чтения таблицы данных

OUT

30h

; запись  в регистр младшего байта счетчика

INX

H

; адрес старшего байта  данных

MOV

A,M

; пересылка  в аккумулятор

OUT

18h

; запись  в регистр старшего байта счетчика  

JMP

L6

; переход на ввод кода клавиши

L2:

MOV

A,C

;  – код нажатой клавиши

OUT

10h

; запись  в триггер знака

LDA

0803h

; извлечение кода предыдущего направления

OUT

71h

; вывод значения предыдущего направления на дисплее

MOV

A,C

; модификация значения текущего направления

CPI

8h

JZ

L3

ADI

6h

; была нажата клавиша «+»

JMP

L4

L3

ADI

3h

; была нажата клавиша «–»

L4

STA

0803h

OUT

73h

; вывод символа на дисплей

JMP

L6

L5

LDA

0804h

; извлечение кода предыдущего значения скорости

OUT

72h

;вывод значения предыдущего значения скорости на дисплее

MOV

A,C

; запись нового значения скорости

STA

0804h

OUT

74h

вывод символа на дисплей

CALL

TAB

; подпрограмма чтения таблицы данных

OUT

50h

; запись  в регистр младшего байта счетчика

INX

H

MOV

A,M

;

OUT

38h

; запись  в регистр старшего байта счетчика

JMP

L6

TAB

LXI

H,

;

MOV

A,C

;  – код нажатой клавиши

ADD

A

;

MOV

C,A

; формирование в числа, равного

MVI

B,0

; удвоенному коду клавиши

DAD

B

;  – адрес памяти

MOV

A,M

; – младший байт данных

MVI

A, 10h

SIM

RET

L6:

POP

PSW

POP

B

POP

H

EI

; разрешение всех прерываний (после следующей команды)

RET

; возврат из подпрограммы обработки прерываний

END