Адрес |
Метка |
Операция |
КОП |
Комментарий |
|
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 |
||||
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.