Для чтения или записи разряда порта каждый из пяти портов ввода/вывода имеет связанный с ним регистр специальных функций (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 могут быть сконфигурированы, чтобы допустить альтернативные функции разрядов.