5. Регистр команд (CR) (Command Reg.); один байт.
Управляет работой контроллера. Этот регистр программируется при загрузке системы.
Значения некоторых разрядов:
Бит 3 - короткий цикл (1) / норма (0);
Бит 4 - циклический сдвиг (1) / фиксация приоритетов (0).
Программирование В/В в режиме ПДП.
Программирование включает: инициализацию ИФ; установку частоты дискретизации; подготовка данных для вывода.
Ввиду сложности, программирование КПДП осуществляется как правило, с помощью стандартных asm-процедур, а именно:
- инициализацию (программирование) КПДП; разрешение формирования запросов ПДП;
- анализ завершения ПДП (по прерыванию Т/С или опросу SR);
- обработка данных (при вводе); повторение В/В или выход.
Общая ГСА ввода (вывода) в режиме ПДП (рис. 3.16).
1. Процедура инициализации КПДП.
dma_setup Proc uses ds bx cx dx si di f
arg channel: word; Buffer: dword, Length, word, Mode: byte
Формальные параметры процедуры (передаются через стек):
Channel - номер канала (0…7);
Buffer - начальный адрес памяти (SEG: OFFSET);
Length - число передаваемых слов;
Mode - режим канала.
2. Процедура маскирование канала:
prevent_dma Proc uses ds, ax
arg channel: word
Запрещает прием запросов ПДП путем маскирования канала.
3. Процедура демаскирования канала
allow_dma Proc uses ds, ax
arg channel: word
Разрешает обслуживание запросов ПДП. Обычно 2 последние процедуры являются вложенными в процедуру dma_setup. Вызовом процедуры allow инициируется начало передачи данных.
Рис.3.16.
Анализ завершения ПДП при передаче блока выполняется либо по прерыванию Т/С, либо путем программного опроса регистра состояния КПДП.
Варианты завершения ПДП при передаче одного блока без AINIT:
1. Путем запроса прерывания по сигналу Т/С (Terminal Count).
2. Путем программного опроса регистра состояния КПДП:
mov dx, 0d0h; адрес SR
mov cl, Mask; код маски канала.
ТС: in al, dx
and al, cl
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.