Разработка системы контроля, под управлением микропроцессора I8085, страница 2

Адрес

Метка

Операция

КОП

Комментарий

1

2

3

4

5

0000

MVI A, 03

3E

Инициализация PPI приёма с АЦП

0001

03

0002

OUT 83

D3

0003

83

0004

MVI A, 08

3E

Инициализация PPI индикации

0005

08

0006

OUT 43

D3

0007

43

0008

LXI SP, 900

31

Организация стэка по адресу 0900h

0009

00

000A

09

000B

M1

MVI B, 00

06

Обнуляем регистр B.

000C

00

000D

MVI B, 08

06

Организовываем счетчик каналов.

000E

08

000F

MVI C, 00

0E

Обнуляем регистр C.

0010

00

0011

MVI C, 01

0E

Выбор канала мультиплексора.

0012

01

0013

M2

MOV A, C

79

0014

OUT 82

D3

0015

82

0016

MVI A, 80

3E

Запускаем АЦП

0017

80

0018

OUT 82

D3

0019

82

001A

MVI A, 00

3E

001B

00

001C

OUT 82

D3

001D

82

001E

HLT

76

Ожидаем готовности АЦП

001F

IN 81

DB

Считываем данные из порта B и младших разрядов порта C и сохраняем их в паре регистров DE.

0020

81

0021

MOV E,A

5F

0022

IN 82

DB

0023

82

0024

MOV D, A

57

0025

CALL COMP

CD

Вызов подпрограммы перевода и индикации.

0026

39

0027

00

0028

CALL ALERT

CD

Вызов подпрограммы сравнения с пороговыми значениями.

0029

58

002A

00

002B

INR C

0C

Инкрементируем регистр С (выбор следующего канала).

0032

DCR B

05

Декрементируем регистр В (выбор следующего канала).

0033

JNZ M2

C2

Если счетчик каналов не '0', то переходим на метку М2.

0034

13

0035

00

0036

JZ М1

CA

Если счетчик каналов '0', то возвращаемся к первому каналу (метка М1).

0037

0B

0038

00

0039

COMP

PUSH H

E5

Подпрограмма перевода напряжения температуру и индикации. Сохраняем содержимое регистра HL в стэке.

003A

MOV A, C

79

Если первый и второй каналы, то процедура сравнения значений с таблицей пропускается.

003B

SUI 03

D6

003C

03

003D

JC

DA

003E

24

003F

00

0040

LXI H, 0100

21

Загружаем в программу адрес первой строки таблицы.

0041

00

0042

01

0043

COMP_LOOP

MOV A, M

7E

Сравниваем данные с АЦП со значениями из таблицы, используя вычитание.

0044

SUB D

92

0045

INX H

23

0046

MOV A, M

7E

0047

SUB E

93

0048

INX H

23

0049

JNC IND

D2

Переходим к индикации, когда найдено совпадение.

004A

51

004B

00

004C

INX H

23

Переходим к следующим значениям, если нет совпадения.

004D

INX H

23

004E

JMP COMP_LOOP

C3

004F

43

0050

00

0051

IND

OUT 40

D3

Выводим на индикацию найденные значения температуры.

0052

40

0053

INX H

23

0054

OUT 41

D3

0055

41

0056

POP H

E1

Выгружаем из стэка содержимое регистра HL.

0057

RET

C9

Выход из подпрограммы.

0058

ALERT

PUSH H

E5

Подпрограмма сравнения с пороговыми значениями и сигнализация. Сохраняем содержимое регистра HL в стэке.

0059

MOV A, L

7D

Сравниваем данные с предупредительной сигнализацией.

005A

SUI CC

D6

005B

CC

005C

MOV A, H

7C

005D

SBI 03

DE

005E

03

005F

JNC A1

D2

Переходим к индикации, если совпадает.

0060

6B

0061

00

0062

MOV A, L

7D

Сравниваем данные с аварийной сигнализацией.

0063

SUI EB

D6

0064

EB

0065

MOV A, H

7C

0066

SBI 03

DE

0067

03

0068

JNC A2

D2

Переходим к индикации, если совпадает.

0069

6F

006A

00

006B

A1

MVI A, 01

3E

Вывод предупредительной сигнализации.

006C

01

006D

OUT 42

D3

006E

42

006F

A2

MVI A, 02

3E

Вывод аварийной сигнализации.

0070

02

0071

OUT 42

D3

0072

42

0073

POP H

E1

Выгружаем из стэка содержимое регистра HL.

0074

RET

C9

Выход из подпрограммы.

0075

WAIT

LXI H, 03FF

21

Подпрограмма задержки.

0076

FF

0077

03

0078

LOOP

MVI A, FF

3E

0079

FF

007A

DCR A

3D

007B

JNZ LOOP

C2

007C

78

007D

00

007E

DCX H

2B

007F

JNZ LOOP

C2

0080

78

0081

00

0082

RET

C9

Выход из подпрограммы.

002C

INT       

MOV A, C

79

Переход к обработке канала.

002D

SUI 09

D6

002E

09

002F

JC

DA

0030

1F

0031

00