Синхронизация источника и приёмника в соответствии с алгоритмом программирования вольтметра, страница 3

out dx, al                                                         Запись в порт с адресом dx числа al (СД установился = 0)

mov dx, Port_A                                              Записываем в регистр dx адрес порта А.

mov al, 10111010B                                        Конец программы.

out dx, al                                                         Запись в порт с адресом dx числа al

mov dx, Port_C                                              Записываем в регистр dx адрес порта С.

mov al, 00000010B                                       CД=1, 0v

out dx, al                                                        Запись в порт с адресом dx числа al (СД установился = 1)

end;                                                                      Конец ассемблерной вставки.

delay (100);                                                        Необходимая задержка для установления линии СД.

ВОЛЬТМЕТР В РЕЖИМЕ «ИСТОЧНИК»

Asm                                                                      Ассемблерная вставка.

Переводим вольтметр в режим ожидания команды или адреса.

mov dx, Port_B                                              Записываем в регистр dx адрес порта В.

mov al, 11101100B                                        ДУ=0, УП=0, ОИ=1.

out dx, al                                                         Запись в порт с адресом dx числа al (Установились ДУ=0, УП=0,

ОИ=1).

mov al, 11100100B                                        Защелкиваем триггеры.

out dx, al                                                         Запись в порт с адресом dx числа al (Триггеры переключились).

mov dx, Port_A                                              Записываем в регистр dx адрес порта В.

mov al, 10111110B                                         01000001B, 41h adress = МАИ – Мой Адрес Источник.

out dx, al                                                          Запись в порт с адресом dx числа al (теперь вольтметр стал

«источником»).

Завершаем режим адресации, записывая в УП единицу.                    

mov dx, Port_B                                               Записываем в регистр dx адрес порта В.

mov al, 11101110B                                         ДУ=0, УП=1, ОИ=1

out dx, al                                                         Запись в порт с адресом dx числа al (Установились ДУ=0, УП=1,

ОИ=1).

mov al, 11100110B                                        Защёлкивание триггера.

out dx, al                                                         Запись в порт с адресом dx числа al (триггеры переключились).

end;                                                                       Конец ассемблерной вставки.

delay (100);                                                           Необходимая задержка для установления линии.

Устанавливаем направление передачи данных в портах А, В, С, путём  записи в RUS числа 91Н (тем самым переключив порт А на ввод)

asm                                                                       Ассемблерная вставка.

mov dx, Port_RUS                                         Записываем в регистр dx адрес RUS (303Н).

mov al, 10010001B                                        91H (указываем новое направление передачи).

out dx, al                                                         Запись в порт с адресом dx числа al (Направление передачи

ISA<=КОП).

mov dx,Port_B                                                 Записываем в регистр dx адрес порта В.

mov al, 10001110B                                          Переключаем буфер на ввод.

out dx, al                                                           Запись в порт с адресом dx числа al (Буфер DD4 переключился на ввод).

end;                                                                         Конец ассемблерной вставки.

Далее реализована правая часть алгоритм взаимодействия.

(Контроллер принимает данные от вольтметра).

repeat         

{*************************************************************************}

В цикле считываем данные с ШД и выводим их на экран.

for i:=1 to 12 do begin                                             Начало цикла.

asm                                                                              Ассемблерная вставка.

mov dx, Port_C                                                  Записываем в регистр dx адрес порта С.

mov al, 00000000B                                            ДП=1, ГП=1