Выполнение подпрограммы прерывания.
Система прерываний формирует аппаратный вызов (LCALL) соответствующей подпрограммы обслуживания, если она не заблокирована одним из следующих условий:
– в данный момент обслуживается запрос прерывания равного или высокого уровня приоритета;
– текущий машинный цикл — не последний в цикле выполняемой команды;
– выполняется команда RETI или любая команда, связанная с обращением к регистрам IЕ или IP
Отметим, что если флаг прерывания был установлен, но по одному из указанных выше условий не получил обслуживания и к моменту окончания блокировки уже сброшен, то запрос прерывания теряется и нигде не запоминается.
По аппаратно сформированному коду LCALL система прерывания помещает в стек только содержимое счетчика команд (PC) и загружает в него адрес вектора соответствующей подпрограммы обслуживания. По адресу вектора должна быть расположена команда безусловной передачи управления (JMP) к начальному адресу подпрограммы обслуживания прерывания. В случае необходимости она должна начинаться командами записи в стек (PUSH) слова состояния программы (PSW), аккумулятора, расширителя, указателя данных и т.д. и должна заканчиваться командами восстановления из стека (POP). Подпрограммы обслуживания прерывания должны завершаться командой RETI, по которой в счетчик команд перезагружается из стека сохраненный адрес возврата в основную программу. Команда RET также возвращает управление прерванной основной программе, но при этом не снимут блокировку прерываний, что приводит к необходимости иметь программный механизм анализа окончания процедуры обслуживания данного прерывания.
Работа с внешней памятью микроконтроллера 8051.
Обращения к внешней памяти подразделяются на обращения к внешней памяти программ и обращения к внешней памяти данных. В первом случае для формирования сигнала, активирующего ПЗУ с программой, используется сигнал PSEN, во втором — сигналы RD и WR, активизирующие ОЗУ с данными.
Если используется 16-битовый адрес, старшие восемь бит выводятся через порт Р2 , где они сохраняются в течение всего цикла обращения к внешней памяти. Отметим, что выходные каскады порта Р2 имеют внутреннюю нагрузку, несколько отличающуюся от Р1 и РЗ , благодаря чему в SFR Р2 при выводе адресной информации вовсе не обязательно защелкивать все единицы. Добавим также, что при выводе адресной информации информация из SFR Р2, хотя и не присутствует на выводах микроЭВМ, но и не теряется, восстанавливаясь на них после окончания обращений к внешней памяти (если в процессе этих обращений SFR Р2 не был модифицирован).
Если при обращении к внешней памяти данных используется восьми битный адрес, то на выводах порта остается та же информация, которая там была до начала обращения к внешней памяти. Это позволяет организовать постраничную адресацию внешней памяти данных.
Как уже отмечалось, на выводах порта P0 младший байт адреса мультиплексируется с данными. Сигналы адреса/ данных задействуют оба полевых транзистора выходного каскада порта P0. Таким образом, в этом случае выводы P0 уже не являются выводами с открытым стоком и не требуют внешних нагрузочных элементов.
Сигнал ALE используется для фиксации младшего байта адреса во внешнем регистре-защелке. Адресная информация достоверна в момент окончания сигнала ALE.
Выводимый в цикле записи байт заносится в P0 непосредственно перед активацией сигнала WR и остается неизменным до окончания этого сигнала. В цикле чтения данные на выводах P0 для достоверного считывания должны быть установившимися к моменту окончания сигнала RD.
Во время обращения к внешней памяти CPU записывает 0FFH в SFR P0, уничтожая, таким образом, хранимую там информацию. Таким образом, использовать для записи порт P0 при работе с внешней памятью надо с известной долей осторожности.
Обращение к внешней памяти программ возможно в двух случаях:
– когда сигнал ЕА активен, т.е. имеет нулевой уровень,
– когда программный счетчик РС содержит число больше 0FFH.
Следовательно, при использовании микро-ЭВМ, не имеющей встроенного ПЗУ или не использующей его, на входе ЕА должен присутствовать сигнал с нулевым уровнем.
Когда CPU работает с внешней памятью программ, все линии порта Р2 используются для вывода старшего байта адреса и не могут быть использованы для обычного ввода\вывода информации. При этом, как отмечалось выше, в SFR Р2 может быть занесена любая информация — адресная информация, выводимая через Р2, не зависит от состояния его SFR.
Режимы микроконтроллера 8051 с пониженным энергопотреблением.
Во многих вариантах применения микро-ЭВМ энергопотребление является одним из основных параметров. В этих случаях целесообразно использовать КМОП версии микро-ЭВМ. В них предусмотрены дополнительные возможности снижения энергопотребления, отсутствующие в стандартных n-МОП изделиях. Ранее выпускались и n-МОП версии микро-ЭВМ, имевшие режимы работы с пониженным энергопотреблением. В настоящее время их выпуск почти повсеместно прекращен. Однако время от времени они все же будут попадать в руки радиолюбителей, поэтому трудно гарантировать наличие или отсутствие этих режимов в тех или иных конкретных n-МОП изделиях.
МКОП микро-ЭВМ имеют два режима с пониженным потреблением тока: режим холостого хода (XX) и режим выключенного напряжения питания (ВНП). Последний иногда называют режимом пониженного энергопотребления. По мнению авторов настоящей статьи, это вряд ли корректно, так как режим XX также характеризуется пониженным энергопотреблением в сравнении с обычным режимом работы микро-ЭВМ. дословно второй режим, называемый в англоязычной литературе режимом "Power Down Mode", можно перевести так, как указано выше. Этот перевод корректнее отражает суть режима - в нем допустимо вообще отключить от микро-ЭВМ питающее напряжение, подаваемое на вход Vcc (вывод 40 микро-ЭВМ). для сохранения содержимого внутреннее ОЗУ в этом случае нужно запитать от резервного источника. Резервное питающее напряжение подают через вход RST (вывод 9).
В режиме XX (IDL = 1) генератор микро-ЭВМ работает, тактовые сигналы поступают на систему прерываний, последовательный порт и таймеры/счетчики. Все регистры сохраняют свое содержимое, на выводах всех портов удерживаются логические состояния, которые были на них в момент перехода в режим XX. Однако сигнал генератора синхронизирующий CPU, отключается. В режиме ВНП (PD = 1) генератор останавливается. Прекращается тактирование не только CPU, но и последовательного порта, таймеров/ счетчиков, системы прерываний. Как и в режиме XX, состояние регистров, резидентного ОЗУ и выводов портов остается неизменным.
Режимы XX и ВНП активизируются при установке соответствующих битов в специальном функциональном регистре-регистре управления мощностью PCON. Адрес этого регистра 87Н, его описание приведено в табл.
Отметим следующие особенности этого регистра. Если одновременно установлены в 1 биты IDL и PD, то последний имеет преимущество - микро-ЭВМ переходит в режим ВНП. Содержимое регистра PCON после сброса - 0ХХХ0000.
В n-МОП версиях микроЭВМ регистр PCON содержит, как правило, только SMOD. Остальные четыре бита присутствуют только в КМОП устройствах. Пользовательские программы никогда не должны заносить 1 в незанятые биты (PCON4 - PCON6), так как они могут использоваться в следующих модификациях микроЭВМ. Последнее распространяется на все регистры и на все адреса в области регистров специальных функций, которые не заняты регистрами. Разработчики предполагают использовать их в новых изделиях. Однако для достижения совместимости уже разработанного программного обеспечения с новыми изделиями дополнительные возможности последних будут включаться установкой в 1 битов в соответствующих регистрах. Поэтому пользовательская программа, устанавливающая в 1 неиспользуемые биты, будет нормально работать на микро-ЭВМ, имеющихся в наличии сегодня, но вовсе не обязательно будет работать на новых микро-ЭВМ. несмотря на их полную программную совместимость с семейством 8051.
Режим ХХ.
В этот режим микро-ЭВМ переводится любой командой, устанавливающей в 1 бит PCON.0. Она оказывается последней в цепочке выполняемых команд: в режиме XX выполнение программы приостанавливается ,так как на CPU перестает поступать сигнал тактового генератора. Однако содержимое внутреннего ОЗУ и регистров специальных функций остается неизменным, выводы портов удерживают значения, которые были на них до перехода в режим XX, на таймеры/счетчики, приемопередатчик и на систему прерываний продолжают поступать тактовые сигналы. На выводах ALE и PSEN устанавливаются сигналы единичного уровня.
Состояние выводов портов зависит от типа ОЗУ, с которым микро-ЭВМ обменивалась информацией перед тем как перейти в режим XX. При работе с внутренним ОЗУ на выводах портов присутствуют данные из соответствующих SFR (естественно, если порт в режиме вывода информации). При работе с внешним ОЗУ выводы порта 0 переходят в высокоимпедансное состояние, а на выводах порта 2. сохраняется адресная информация. На выводах портов 1 и 3 присутствуют данные из SFR портов.