MOV Р1, #01110011Ь ;Выдать на все восемь выводов Р1 число 01110011
MOV РЗ, А ;Выдать на все восемь выводов РЗ содержимое АСС
2. ANL (логическое «И»), например:
ANL Р1, #11110011b ;выдать низкий потенциал на выводах Р1.2 и Р1.3
3. XRL (исключающее «ИЛИ»), например:
XRL РЗ, #01000100Ь ;инвертировать состояние выводов РЗ.2 и Р3.6
4. ORL (логическое «ИЛИ»), например:
ORL Р1, #00001100b ;выдать высокий потенциал на выводах Р1.2 и Р1.3
Эти команды изменяют потенциал сразу на нескольких выводах порта.
Для изменения потенциалов только на одном выводе микросхемы можно воспользоваться следующими командами с битовой адресацией:
1. MOV (пересылка), например:
MOV P1.2, С ;выдать содержимое бита переноса через вывод 2 порта Р2
2. CPL (инверсия), например:
CPL Р1.2 ; проинвертировать 2-й бит порта Р2
3. SETB (установить бит), например:
SETB Р2.3 ; выдать высокий потенциал на вывод 3 порта Р2
4. CLR (сбросить бит), например:
CLR Р2. 3 ; выдать низкий потенциал на вывод 3 порта Р2
При записи в разряд порта логического 0 выходной транзистор открывается и на выводе микросхемы появляется низкий потенциал, изменить который извне невозможно. Поэтому при опросе этого вывода порта микросхемы входная информация в этом случае всегда будет восприниматься как логический 0 независимо от состояния выходов внешних устройств. Если в указанный разряд записать логическую 1, то выходной транзистор закрывается и на выводе микросхемы за счет генератора тока появляется высокий потенциал. Он может быть изменен извне на нулевой потенциал замыканием соответствующего вывода микросхемы на общий провод. В этом случае считываемое микроконтроллером значение бита будет соответствовать сигналу на выходе внешнего устройства. Поэтому перед тем как осуществить ввод информации по какому-либо выводу порта, соответствующий разряд необходимо настроить на ввод — записать в него логическую единицу.
По той же причине при настройке выводов порта на выполнение альтернативных функций в соответствующие разряды параллельного порта должны быть записаны логические I.
Кроме работы в качестве обычных портов ввода-вывода внешние выводы портов Р0-Р3 могут выполнять ряд дополнительных (альтернативных) функций.
Порт Р0 может быть использован для организации части шины адреса и шины данных при работе микроконтроллера с внешней памятью данных или программ. При этом через него из микроконтроллера выводится младший байт адреса А0-А7, а также принимается в микроконтроллер или выдается из него байт данных. Во время чтения содержимого внешней памяти во все триггеры-защелки порта Р0 аппаратно записываются 1 (т. е. содержимое порта теряется). Кроме того, через порт Р0 передаются данные при программировании внутреннего ППЗУ, и читается содержимое внутренней памяти программ при работе с программатором.
При сбросе микросхемы во все разряды порта Р0 записываются 1. У схемы Р0, в отличие от схем всех других портов, отсутствует внутренний генератор тока. Поэтому при работе с этим портом приходится подключать внешние резисторы к плюсу источника питания.
Формат и адрес порта Р0 приведены на рис. 6.5. На этом же рисунке приведены адреса отдельных битов порта Р0 в битовом пространстве. На рис. 6.6 приведена схема использования выводов портов Р0 и Р2 для подключения внешней памяти программ и внешней памяти данных.
Рис. 6.5.
Рис. 6.6.
Порт Р1 может быть использован для чтения внутренней памяти программ или для передачи младшего байта адреса при программировании внутреннего РПЗУ. В младших моделях микроконтроллера семейства других альтернативных функций у порта Р1 нет. При сбросе микросхемы во все разряды порта записываются 1.
Формат и адрес порта Р1 приведены на рис. 6.7. На этом же рисунке приведены адреса отдельных битов порта Р1 в битовом пространстве.
Рис. 6.7.