Организация портов ввода

Чтение порта ввода/вывода сначала производит выборку значения разряда порта, а затем сохраняет его в буфере чтения. Поскольку каждое чтение порта производит выборку нового значения, то для хранения считанного значения необходимо использовать временную ячейку памяти.

Например, следующая операция читает текущее значение порта 1 и сохраняет значение в ячейке памяти, обозначенной P1TEMP:
LDB P1TEMP, ioport1 ; Читать P1 и запомнить в P1TEMP

Некоторые разряды порта 2 сконфигурированы только для передачи данных и не содержат никакой схемы для ввода. После чтения порта каждый бит SFR, отражающий состояние разряда "только для вывода", должен быть замаскирован до использования этого регистра.

При использовании разряда квазидвунаправленного порта для приема данных сначала необходимо гарантировать отключение сильного низкого драйвера. Этому способствует запись единицы в требуемый разряд порта.

Например, код, показанный ниже, конфигурирует использование для ввода младшей половины порта 1:
LDB IOPORT1,#00001111B ; Записать 1 во входные разряды порта 1

Порт 0

Порт 0 - порт только для ввода. Внешние выводы разрядов порта 0 отличаются тем, что они могут быть использованы и как цифровые входы (Input Pin P0.x), и как аналоговые входы для АDC (ACHx) одновременно (но это не рекомендуется).

Разряд P0.7 может быть также сконфигурирован как вход внешнего прерывания.

В любом случае, если порт 0 должен использоваться как аналоговый или цифровой вход, необходимо обеспечить напряжение на этом порту через Vref и ANGND выводы.

Aналого-цифровой преобразователь чувствителен к шуму, а одним из источников возникновения шума в преобразователе является чтение порта 0, поэтому строго рекомендуется не производить чтение из порта, пока не закончится операция АD преобразования.

Порт 0 был разработан так, что регистр-защелка не синхронизируется (нет сигнала CLK), если не выполняется чтение порта.
Аббревиатура - IOPORT0
Размер - 1 байт
Находится по адресу 0EH
Использовать для чтения в окне HWindow 0

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