Автоматизированные системы контроля и управления РЭС, конспект лекций, страница 16

mov  dx, RgAdat (имя буфера данных АЦП)         

                           in      ax, dx

          ;обнуление 6 старших разрядов

                          mov dx, 000 000 11111 11111 b

                          and   ax, dx         

          ; преобразование к 12-разрядному коду ЦАП

                           shl ax, 1  

                           shl ax, 1

          ; вывод на ЦАП

                           mov dx, RgSDat 1

                           mov dx, ax

          ; проверка нажатия клавиши выхода в DOS

                            jmp Next

Stop: {выход в DOS}.   

Граф-схема алгоритма ввода-вывода (рис. 3.13):   

Рис.3.13.        

                          3.4.2. Ввод/вывод по прерыванию

Этот способ В/В поддерживается аппаратно контроллером приоритетных прерываний ПК (КПП) типа i8259A (2 каскадированных БИС). КПП (PIC) выполняет следующие функции:

- принимают запросы на прерывание;

-определяет приоритет прерывающего устройства;

- вызывает процедуры обработки прерываний;

-осуществляет возврат в основную (прерванную) программу.

В ПК IBM-типа имеется 256 типов прерываний: 16 аппаратных и 240 программных, которые вызываются командой INT n, где n - номер или тип прерывания; n = 0,1…255. Номер аппаратного прерывания для i-го канала (i-й линии для i = 8…15) находится как n = i + 68H (в 16-ричной системе) или n = i +104 - в десятичной.  Для i = 0,..7  n=i+8.

Каждому типу (номеру) прерывания отводится 4 байта или 2 слова памяти ПК с начальным адресом Аn=4×n, куда записывается полный начальный адрес процедуры обработки прерываний (CS: IP) - т. н. вектор прерываний. Общий объем  таблицы векторов прерываний (или указателей прерываний) равен 1024 байта (адреса 000000…0003FF), рис. 3.14.

Рис.3.14.

Программирование В/В по прерыванию включает в себя:

- программирование  контроллера;

- инициализация таблицы векторов прерываний;

- программирование процедуры обработки прерываний.