Реферат: Параллельные интерфейсы Centronics и LPT-порт

intAddress=890; //адрес регистра Control

int data;

data = Inp32(Address);

Запись/чтение данных в регистр Status

Наконец, добрались до регистра Status. Он однонаправленный, данные в него может записать только внешнее устройство , т.е. мы в программе можем только читать содержимое этого регистра. Причитав данные из Status, и переведя их в двоичное число, сразу довольно трудно понять что же реально творится с напряжениями на выходах этого регистра. Во-первых, он тоже имеет инвертированные выводы, а во-вторых рабочими являются биты под номерами 4-7, а 0-3 не используются, и следовательно число записывается довольно хитро. Чтобы разобраться, лучше просто несколько раз делать чтение при разных данных в регистре.

Возникает вопрос, а как эти данные на нем установить? Довольно просто. В качестве внешнего устройства, пока, будете выступать Вы. Выполнитетакойкод.

int Address=889; //адресрегистра Status

int data;

data = Inp32(Address);

Вы получите некоторое число. Теперь возьмите проводник и соедините им любой из земляных выводов порта (18-25) с каким-нибудь выводом регистра Status (10-13, 15), например с десятым. И снова выполните чтение. Вы получите другое число. Уберите проводник. Прочитав, получаете исходное число. Как это работает? Исходно, на всех выводах этого регистра находится высокий уровень напряжения +5 В. Когда мы соединили один из его выводов с землей, то на нем, соответственно, напряжение стало равным нулю, т.е. логический ноль. Теперь двоичным данным в регистре соответствует другое десятичное число. Можно попробовать замыкать и другие выводы регистра Status на землю, замыкать сразу несколько. Каждый раз при чтении получится разный результат.

Следует заметить, что при таких опытах с регистром Status возникает не совсем понятная ситуация с другими выводами порта LPT. После первого замыкания выводов Status, начинают мигать выводы Data и Control. Это связано с тем, что порт LPT предназначен для подключения принтера, а выводы Status он использует, для того чтобы сообщить компьютеру некоторую служебную информацию. Изменения на выводах Status регистрирует системный драйвер операционной системы. Он же проводит и ответные действия, для нас наблюдаемые в виде периодического изменения состояния других выводов. Тут уж ни чего не поделаешь. Я обычно, просто в начале работы с портом делаю замыкание какой-нибудь линии регистра Status на землю и жду примерно минуту, пока драйвер не утихомирится. После этого порт свободен, и новые операции над регистром Status не приводят к неконтролируемым процессам в порту.

К-во Просмотров: 298
Бесплатно скачать Реферат: Параллельные интерфейсы Centronics и LPT-порт