Программирование портов ввода/вывода

Для чтения или записи разряда порта каждый из пяти портов ввода/вывода имеет связанный с ним регистр специальных функций (SFR). Некоторые из портов ввода/вывода имеют дополнительный регистр SFR, который реконфигурирует разряд порта, чтобы поддерживать альтернативную функцию. Не все регистры специальных функций портов являются и читаемыми, и записываемыми одновременно (например, SFR порта 0 только читаем). Также не все регистры спецфункций существуют в одном и том же горизонтальном окне (например, запись в регистры управления SFR осуществляется в HWindow 0, а чтение - в HWindow 15). IOPORT0, IOPORT1 и IOPORT2 - регистры, которые используются для того, чтобы читать порт 0, читать/записывать порт 1 и читать/записывать порт 2 соответственно. Таблица 4.2 показывает, что происходит при чтении или записи каждого порта ввода/вывода и какие условия могут вызвать непредвиденный результат.

Таблица 4.2

Операции чтения/записи портов
Порт Обозначение Операция чтения Операция записи
0 IOPORT0 Читает текущее значение. Порт не должен читаться, когда выполняется AD преобразование. Невозможна. Запись в IOPORT0 не воздействует на P0, но воздействует на контроллер скорости передачи.
1 IOPORT1 Читает текущее значение разрядов. В разряд порта может быть записано значение единицы, но возвращено значение нуля, поскольку состояние вывода может внешне измениться. Запись изменяет значение регистра-защелки порта. Изменение регистра-защелки разряда порта не влияет на состояние внешнего вывода порта, если выбрана альтернативная функция.
2 IOPORT2 Читает текущее значение разрядов порта, за исключением тех, которые предназначены только для вывода. Разряды только для передачи данных возвращают неопределенное значение и должны быть замаскированы. Запись изменяет значение регистра-защелки порта, за исключением разрядов только для ввода, запись в которые игнорируется.
3, 4 1FFEH Читает текущее значение разрядов порта. В разряд порта может быть записана 1, а прочитан 0, поскольку значение может быть внешне перезаписано. Запись изменяет значение регистра-защелки разряда порта. Любой внешний доступ контроллера шины перезаписывает значение регистра-защелки для выполнения операций на шине. Порты 3 и 4 всегда доступны вместе через операцию чтения/записи слова.

После сброса устройства все порты ввода/вывода, за исключением портов 3 и 4, функционируют как порты для приема и передачи данных. При EA=0 во время переднего фронта RESET# порты 3 и 4 функционируют как системная шина адреса/данных и не могут использоваться как порты ввода/вывода.

Полностью или частично порт 0, порт 1 и порт 2 могут быть сконфигурированы, чтобы допустить альтернативные функции разрядов.

<<< Содержание >>>