Заметим, что этот порт в самых младших моделях микроконтроллеров альтернативных функций не имеет, а приведенные альтернативные функции относятся к микроконтроллерам с ядром MCS-52. Линии порта Р1 могут выполнять альтернативные функции только в том случае, если в соответствующие этим линиям разряды регистра записаны логические 1, иначе на линиях порта будет присутствовать логический 0 независимо от характера принимаемой или передаваемой информации.
Порт Р2 может быть использован для передачи старшего байта адреса при программировании внутреннего ППЗУ и при чтении внутренней памяти программ. Через порт Р2 выводится старший байт адреса А8-А15 при работе с внешней памятью программ и внешней памятью данных (с 16-разрядным адресом). Во время доступа к внешней памяти содержимое регистра-защелки порта Р2 не изменяется. При сбросе микросхемы во все разряды порта записываются 1. Формат и адрес порта Р2 приведены на рис. 6.8. На рис. 6.6 приведена схема использования порта Р2 при подключении внешней памяти программ и внешней памяти данных.
Рис. 6.8.
Порт РЗ. Каждая линия порта РЗ имеет индивидуальную альтернативную функцию, которая может быть задействована простым обращением к устройству, соединенному с выводом порта. Например, для того чтобы был выработан строб WR, достаточно обратиться с внешней памяти командой MOVX
Рис. 6.9.
Микроконтроллеры семейства MCS-51 построены по гарвардской архитектуре. Это означает, что память данных и память программ в этих микросхемах разделены и имеют отдельные адресные пространства. В этих микроконтроллерах имеется три адресных пространства: памяти программ, внешней памяти данных и внутренней памяти. Такое построение памяти позволяет удвоить доступное адресное пространство внешней памяти. Кроме того, построение памяти по гарвардской структуре позволяет в ряде случаев увеличить быстродействие микросхем. Для микроконтроллеров особенно важным является то обстоятельство, что не существует команд, способных осуществить запись данных в память программ и тем самым испортить управляющую программу.
Схема подключения внешних микросхем памяти к микроконтроллерам семейства MCS-51 приведена на рис. 6.6. Регистр адреса D3 на этой схеме предназначен для запоминания младших восьми битов адреса, передаваемых через шину данных/адреса, совмещенную с портом Р0. Старшие 8 битов адреса передаются через шину адреса, совмещенную с портом Р2.
Во время передачи адреса через порт Р0О микроконтроллер вырабатывает синхроимпульс на выводе ALE. Именно этот импульс позволяет запомнить младший байт адреса в регистре D3 и тем самым организовать 16-разрядную шину адреса внешней памяти.
При обращении к памяти данных и к памяти программ используются одни и те же шина адреса и шина данных, но разные управляющие сигналы. Для чтения памяти программ вырабатывается сигнал
Память программ предназначена для хранения программ и имеет отдельное от памяти данных адресное пространство объемом 64 Кбайт, причем у некоторых микросхем (например, КР1816ВЕ51, КМ1819ВЕ751, КР1830ВЕ51) для хранения управляющих программ на кристалле микроконтроллера расположено ПЗУ. Это ПЗУ отображается в область младших адресов памяти программ. Поскольку выполнение программы после сброса микроконтроллера всегда начинается с нулевого адреса памяти программ, при включении питания начнет выполняться программа, записанная во внутреннем ПЗУ микроконтроллера.
Микроконтроллеры, не имеющие внутреннего ПЗУ (например, КР1816ВЕ31 и КР1830ВЕ31), могут работать только с внешней микросхемой ПЗУ емкостью до 64 Кбайт (при использовании портов P1 и РЗ в качестве расширителя адреса объем подключаемой ПЗУ может быть увеличен до 1 Гбайт).