Базовая версия MCS–51 Краткие сведения. Современные 8–разрядные микроконтроллеры (МК) обладают такими ресурсами управления в режиме реального времени, для получения которых раньше использовались дорогие многокристальные компоновки в виде отдельных плат микроЭВМ, A именно:
? имеют достаточную емкость памяти, физическое и логическое ее разделение на память программ и память данных (гарвардскую архитектуру) и систему команд, ориентированную на выполнение алгоритмов управления;
? включают в себя все устройства (процессор, ПЗУ, ОЗУ, порты ввода–вывода, систему прерываний, средства обработки битовой информации и др.), необходимые для реализации микропроцессорной системы управления минимальной конфигурации. В 70–е годы прошлого столетия фирмой Intel разработан и освоен промышленный выпуск семейства 8–разрядных микроконтроллеров MCS–48, объединенных рядом общих признаков (разрядностью, системой команд, набором основных функциональных блоков и др.). Базовая версия этого семейства включает в себя:
? 8–разрядный процессор;
? внутреннюю память программ (1/2/4К байт);
? внутреннюю память данных (64/128/256 байт);
? до 27 внутренних и 16 внешних линий ввода–вывода;
? один 8–разрядный таймер–счетчик;
? одноуровневую систему прерываний с двумя источниками запросов. В 1980 г. той же фирмой было разработано новое семейство восьмиразрядных микроконтроллеров MCS–51, которое совместимо с архитектурой семейства MCS–48, но обладает более широкими возможностями.
Архитектура семейства MCS–51 оказалась настолько удачной, что и по настоящее время является одним из стандартов 8–разрядных МК. Поэтому объектом изучения выбраны МК этого семейства, получившие широкое распространение в сравнительно простых системах управления.
Для семейства MCS–51 разработаны различные средства подготовки программ (компиляторы, аппаратно–программные эмуляторы и др.) и имеется большое число библиотек стандартных подпрограмм. В состав семейства входят разнообразные модификации микросхем (версии кристаллов) микроконтроллеров. В статьях этого раздела достаточно подробно рассматривается базовая версия микроконтроллеров семейства MCS–51 (микросхеме 8051 соответствует отечественный аналог КP1816ВЕ51), наиболее простая в структурно–функциональном плане и с точки зрения понимания.
Последующие серии микросхем, сохраняя совместимость с базовой версией, отличаются от нее улучшенной технологией изготовления, электрическими параметрами, дополнительными аппаратными средствами и функциональными возможностями. Структурно–функциональным особенностям последующих модификаций микросхем семейства MCS–51 посвящены следующие статьи. Обобщенная структурная схема MCS–51. В состав МК, обобщенная структурная схема которого приведена на рис. 7.1.1, входят:
? 8–разрядный центральный процессор ЦП, состоящий из АЛУ, устройства управления УУ и формирователя адреса ФА;
? масочное ПЗУ емкостью 4К байта для хранения программ;
? ОЗУ емкостью 128 байт для хранения данных;
? четыре программируемых порта Р0–Р3 для ввода–вывода информации;
? блок последовательного интерфейса БПИ для обмена информацией с внешними устройствами по двухпроводной линии;
? блок таймеров/счетчиков БT/C для поддержания режима реального времени;
? блок прерываний БП для организации прерываний исполняемых программ. Эти средства образуют резидентную часть микроконтроллера, размещенную непосредственно на кристалле. В состав МК входит большое число регистров, которые отнесены к отдельным функциональным блокам и на схеме не показаны.
На схеме также не показаны цепи управления. Двусторонний обмен информацией между блоками осуществляется по внутренней 8–разрядной шине данных ШД–8.
По внутренней 16–разрядной шине адреса ША–16 сформированный в ЦП адрес выводится в ПЗУ (12 разрядов адреса) и в ОЗУ (8 младших разрядов).
При использовании внешней памяти в порт Р0 выводятся 8 младших разрядов адреса и в порт P2 — 3 или 8 старших разрядов.
Для логического расширения интерфейса используется совмещение функций линий портов. В качестве примера на рис. 7.1.1 пунктиром показаны линии порта Р3, выполняющие альтернативные функции передачи управляющих сигналов, о назначении которых будет сказано ниже. Для создания внутреннего тактового генератора к выводам микросхемы МК подключаются кварцевый резонатор и два конденсатора (рис. 7.1.1). Вместо внутреннего тактового генератора для синхронизации можно использовать внешний источник колебаний. Условное графическое обозначение микросхемы МК приведено на рис. 7.1.2, обозначение и назначение выводов — в табл. 7.1.1. Рассмотрим функциональные блоки МК и принцип их работы. Арифметическо–логическое устройство. Арифметическо–логическое устройство предназначено для выполнения арифметических (включая умножение и деление) и логических операций над восьмиразрядными операндами, A также операций логического сдвига, обнуления, установки и др. Структурная схема АЛУ приведена на рис. 7.1.3.
В состав АЛУ входят
? параллельный восьмиразрядный сумматор SМ комбинационного типа с последовательным переносом, выполняющий арифметические (сложение и вычитание) и логические (сложение, умножение, неравнозначность и тождественность) операции;
? аккумулятор A, обеспечивающий функции основного арифметического регистра;
? регистр В, используемый для реализации операций умножения и деления или как дополнительный сверхоперативный регистр, функции которого определяет пользователь;
?регистры (программно недоступные) временного хранения РВХ1, РВХ2, предназначенные для приема и хранения операндов на время выполнения операции;
? ПЗУ констант ПЗУК, хранящее корректирующий код для двоично–десятичного представления данных, код маски при битовых операциях и код констант;
? регистр слова состояния программы PSW, фиксирующий состояние АЛУ после выполненной операции. В табл. 7.1.2 приведены сведения о назначении битов отдельных разрядов регистра PSW. Устройство управления. Устройство управления (УУ) центрального процессора предназначено для координации совместной работы всех узлов МК с помощью вырабатываемых синхроимпульсов и управляющих сигналов. В его состав входят (рис. 7.1.4):
? узел синхронизации и управления УСУ, который формирует синхроимпульсы, задающие машинные циклы и их отдельные состояния (S) и фазы (Р), и в зависимости от режима работы МК вырабатывает необходимый набор управляющих сигналов. На выполнение команды отводится один, два или четыре машинных цикла.
Каждый машинный цикл имеет шесть состояний S1–S6, A каждое состояние включает в себя две фазы P1, P2, длительность которых составляет период колебаний тактового генератора T0SC.
Длительность машинного цикла равна 12T0SC. Все машинные циклы одинаковые, начинаются с фазы S1P1 и заканчиваются фазой S6P2.
Помимо синхроимпульсов устройство синхронизации в каждом машинном цикле формирует два (иногда один) сигнала стробирования младшего байта адреса ALE в виде положительного импульса в фазах S1P2–S2P1 и S4P2–S5P1. Временные диаграммы на рис. 7.1.5 иллюстрируют организацию машинных циклов;
? регистр команд РК, дешифратор команд ДК и ПЛМ, позволяющие в каждом машинном цикле сформировать набор микроопераций в соответствии с микропрограммой выполняемой команды;
? логика ввода–вывода ЛВВ для приема и выдачи сигналов, обеспечивающих обмен информацией МК с внешними устройствами через порты Р0–Р3;
? регистр PCON, имеющий единственный задействованный бит SMOD в позиции PCON.7 для удвоения скорости передачи данных через последовательный порт. Остальные биты зарезервированы для дальнейшего использования. Формирователь адреса. Формирователь адреса (ФА), или счетчик команд РС, предназначен для формирования текущего 16–разрядного адреса программной памяти и 8/16–разрядного адреса внешней памяти данных. В его состав входят (рис. 7.1.6):
? 16–разрядный буфер Б, осуществляющий связь между 8–разрядной шиной данных ШД и 16–разрядной внутренней шиной (ВШ) формирователя адреса;
? схема инкремента СИ для увеличения значения текущего адреса памяти программ на единицу;
? регистр для хранения текущего адреса команд РТА, поступающего из СИ;
? регистр указателя данных DPTR, состоящий из двух 8–разрядных регистров DPHи DPL. Он служит для хранения 16–разрядного адреса внешней памяти данных и может быть использован в качестве двух независимых программно доступных РОН;
? регистр формирователя адреса РФА для хранения исполнительного 16–разрядного адреса памяти программ или 8/16–разрядного адреса внешней памяти данных. Этот регистр используется также для передачи данных через порт Р0 во внешние устройства при выполнении команд MOVX @Rm, A и MOVX @DPRT, A.
Память данных. Память данных предназначена для приема, хранения и выдачи информации, используемой в процессе выполнения программы. Внутренняя (резидентная) память (рис. 7.1.7) данных состоит из ОЗУ емкостью 128 байт, указателя стека SP, регистра адреса ОЗУ РА и дешифратора Дш. Указатель стека SP представляет собой 8–разрядный регистр, предназначенный для приема и хранения адреса ячейки стека, к которой было последнее обращение. После сброса в указателе стека устанавливается адрес 07Н, что соответствует началу стека с адресом 08Н. Регистр адреса РА совместно с дешифратором Дш позволяет осуществить доступ к требуемой ячейке памяти, содержащей байт или бит информации.
В МК предусмотрена возможность увеличения объема памяти данных до 64 Кбайт путем подключения внешних запоминающих устройств. В качестве примера на рис. 7.1.8 показана страничная организация внешней памяти данных ВПД емкостью 2К байт с использованием команд типа MOVX @Rm(m = 0; 1). При этом порт Р0 работает как мультиплексированная шина адрес/данные, три линии порта P2 используются для адресации страницы внешнего ОЗУ, A остальные пять линий могут быть задействованы в качестве линий ввода–вывода. На рис. 7.1.9 приведены временные диаграммы циклов чтения и записи при работе МК с внешним ОЗУ. На диаграммах обозначено:
? PCL OUT — выдача младшего байта счетчика команд PC;
? РСН — старший байт счетчика команд PC;
? DPL, DPH — младший и старший байты регистра указателя данных DPTR, который используется в качестве регистра для косвенной адресации в командах MOVX @DPTR,A и MOVX A,@DPTR;
? P2 SFR — защелки порта P2;
? Rm (m = 0, 1) — регистры, используемые в командах MOVX @Rm, A и MOVX A, @Rm в качестве регистров косвенного адреса;
? Z — высокоомное состояние;
? D — период, в течение которого данные из порта Р0 вводятся в микроконтроллер. Память программ. Память программ предназначена для хранения программ, имеет свое (отдельно от памяти данных) адресное пространство и доступна только для чтения. В ее состав входит дешифратор Дш и ПЗУ (рис. 7.1.10). Для адресации памяти программ используется 16–разрядный счетчик РС, поэтому ее максимальная емкость составляет 64К байта. Внутренняя память программ состоит из ПЗУ емкостью 4К байт и 12–разрядного дешифратора. Внешняя память подключается по схеме на рис. 7.1.11. Если на вывод ?EA МК подается 0 В (как показано на рис. 7.1.11), внутренняя память программ отключается. Все обращения к памяти начинаются с адреса 0000h. При подключении вывода ?ЕА к источнику питания обращение к внутренней памяти программ по адресам 0000h–FFFFh и к внешней памяти программ по адресам 0FFFh–FFFFhпроисходит автоматически.
Для чтения внешней памяти программ МК вырабатывается сигнал ?PSEN. При работе с внутренней памятью сигнал чтения не используется. При обращениях к внешней памяти программ всегда формируется 16–разрядный адрес. Младший байт адреса передается через порт Р0 в первой половине машинного цикла и фиксируется по срезу строба АLЕ в регистре Во второй половине цикла порт Р0 используется для ввода в МК байта данных из внешней памяти.
Старший байт адреса передается через порт P2 в течение всего времени обращения к памяти.
Временные диаграммы циклов чтения и записи при работе МК с внешним ОЗУ приведены на рис. 7.1.12. На диаграммах обозначено:
? PCL OUT — выдача младшего байта счетчика команд PC;
? РСН OUT — выдача старшего байта счетчика команд PC;
? DPH — старший байт регистра указателя данных DPTR, который используется в качестве регистра для косвенной адресации в командах MOVX @DPTR,A и MOVX A,@DPTR;
? P2 SFR — защелки порта P2;
? INS IN — ввод байта инструкции (команды) из памяти программ;
? ADDR OUT — выдача младшего байта адреса внешней памяти данных из регистров Rm (m = 0, 1) или из регистра DPL (младшего регистра DPTR). Порты ввода–вывода. Назначение портов. Порты Р0, P1, P2, Р3 предназначены для обмена информацией между МК и внешними устройствами, A также для выполнения следующих функций:
? через порт Р0 выводится младший байт адреса А7…A0; выводится из МК и вводится в МК байт данных при работе с внешней памятью программ и внешней памятью данных (с разделением во времени);
? через порт P2 выводится старший байт адреса A15…А8 при работе с внешней памятью программ и внешней памятью данных (только при использовании команд MOVX A,@DPTR и MOVX @DPTR,A);
? линии порта Р3 могут быть задействованы на выполнение альтернативных функций, если в фиксатор–защелку этой линии занесена 1, в противном случае на выводе линии фиксируется 0. Альтернативные функции выводов порта P3 приведены в табл. 7.1.3.
Схемные особенности портов
На рис. 7.1.13 показаны схемы для одного канала каждого из портов МК, включающего в себя:
? защелку для фиксации принимаемого бита данных;
? выходной усилительный каскад (драйвер);
? узел связи с выходным каскадом (за исключением P2);
? цепь для передачи бита данных со стороны вывода порта, состоящую из буферов В2 и В3 (для порта Р4). Защелкой служит D–триггер, тактируемый внутренним сигналом «Запись в защелку». Бит данных с прямого выхода D–триггера может быть считан программно через буфер В1 сигналом «Чтение защелки» на линию внутренней шины данных (ШД) МК.
Выходной каскад порта Р0 представляет собой инвертор, особенности которого проявляются в том, что нагрузочный транзистор VT2 открывается только при обращениях к внешней памяти (при передаче через порт адреса и данных). Во всех других режимах нагрузочный транзистор закрыт. Поэтому для использования Р0 (рис. 7.1.13, а) в качестве выходного порта общего назначения к его выводам необходимо подключить внешние нагрузочные резисторы. При записи 1 в защелку порта инверторный транзистор VT1 запирается и внешний вывод порта Р0.Х переводится в высокоомное состояние. В этом режиме вывод порта Р0.Х может служить входом. Если порт Р0 используется как порт ввода/вывода общего назначения, каждый из его выводов Р0.Х может независимо от других работать как вход или как выход. Выходные каскады портов P1, P2, Р3 (рис. 7.1.13, б, в, г) выполнены по схемам инверторов с внутренним нагрузочным резистором, в качестве которого использован транзистор VT2.
Для уменьшения времени переключения при переходе выводов портов из состояния 0 в состояние 1 параллельно нагрузочному транзистору VT2 введен дополнительный транзистор VT3. Транзистор VT3 с помощью элементов в цепи затвора отпирается на время, равное двум периодам колебаний задающего кварцевого генератора (в течение фаз S1P1, S2P2 машинного цикла). Выходные каскады портов Р0, P2 (рис. 7.1.13, A, в) с помощью мультиплексора MX могут быть подключены либо к защелкам, либо к внутренним шинам «Адрес/ данные» и «Адрес». Выходной каскад порта P1 (рис. 7.1.13, 6) постоянно подключен к защелке.
Если вывод порта Р3 является выходом и его защелка содержит 1, то его выходным каскадом управляет аппаратно внутренний сигнал «Альтернативная функция выхода», обеспечивающий выполнение соответствующей альтернативной функции, т.е. на внешнем выводе формируется один из сигналов ?WR,?RD или RxD. Если же вывод порта задействован на вход, то поступающий на него альтернативный сигнал (TxD, ?INT0, ?INT1, Т0, Т1) передается на внутреннюю линию «Альтернативная функция входа».
Режим записи в порт.
При выполнении команды записи в порт новое значение записывается в защелку в фазе S6P2 и выводится непосредственно на выходной контакт порта в фазе S1P1 следующего машинного цикла.
Режим чтения порта
Команды чтения портов считывают информацию непосредственно с внешних контактов выводов порта или с выходов защелок. В первом случае бит данных с вывода порта считывается программно через буфер В2 сигналом «Чтение выводов» на линию внутренней шины данных (ШД) МК. Отметим, что сигналы «Запись в защелку», «Чтение защелки», «Чтение выводов» вырабатываются аппаратно при выполнении соответствующих команд.
Во втором случае реализуется так называемый режим «Чтение—Модификация—Запись», в котором команда считывает сигнал состояния защелки, при необходимости модифицирует его и затем записывает обратно в защелку. Режим «Чтение—Модификация—Запись» реализуется при выполнении следующих команд: ANL, ORL, XRL, JBC; CPL; INC; DEC; DJNC; MOV PX,Y; CLR PX.Y; SETB PX,Y.
Чтение информации с выходов защелок позволяет исключить ошибки при интерпретации логического уровня на выводе порта. Продолжение статьи читайте во второй части.