Работа с портами в Турбо Паскаль

Любое устройство и любое средство ввода/вывода имеет один или несколько регистров. Доступ к этим регистрам делается через адресное пространство ввода/вывода. Регистры имеют разрядность 8,16 или 32 бита, а адресное пространство ввода/вывода включает 65536 адресов. То есть понятие порта можно определить как 8-,16- или 32-разрядный аппаратный регистр, который имеет определенный адрес в адресном пространстве ввода вывода. Вся работа с устройствами на низком уровне происходит с использованием этих портов.
Pascal способен работать с портами ввода/вывода. Для этого в языках Turbo Pascal и в первой версии Delphi существуют предопределенные массивы PortW и Port. Это одномерные массивы индексы которого соответствуют адресу порта ввода/вывода. Разница между PortW и Port заключается в то, что в PortW – элементы имеют тип word (целочисленный тип. Возможные значения от 0 до 65535), а в массиве Port – значение byte (целое число от 0 до 255). Запись и чтение в порт осуществляется также как и с обычным массивом.
Port[номер_порта] := данные – запись данных типа byte в порт;
Переменная := Port[номер_порта] – чтение данных типа byte из порта.
PortW[номер_порта] := данные – запись данных в порт. Записываемые данные должны иметь тип word Переменная := PortW[номер_порта] – чтение данных из порта. В переменную будут записаны данные типа word.
После появления Object Pascal – массвы Port и PortW были исключены. Это проблему можно было решить, используя стандартные средства APIWindows. Но это подходило только в таких случаев, когда использовались стандартные порты – LPT, Com и др. При использовании других портов – ошибка не исчезала. Ф.Булбак нашел решение проблемы, создав динамическую библиотеку. Четыре процедуры из этой библиотеки позволяют полностью отказаться от использования элементов массивов Port и PortW:
PortOut – запись байта в порт
PortWordOut – запись данных типа word в порт
Параметрами для данных процедур являются: 1 – адрес порта, 2 – данные которые нужно записать
PortIn – чтение байта из порта
PortWordIn – чтения данных тапа word из порта
У этих процедур всего один параметр – адрес порта.
http://rddn.ru



Отзывы и комментарии
Ваше имя (псевдоним):
Проверка на спам:

Введите символы с картинки: