Знакомство с микроконтроллерами проведем на примере ОМЭВМ семейства Intel MCS-51 (отечественный аналог МК-51). Микроконтроллеры данного типа были разработаны достаточно давно, но их архитектура оказалась настолько удачной, что они стали де-факто стандартом среди 8-разрядных однокристальных микроконтроллеров.
Общие характеристики микроконтроллера семейства MCS-51
Микроконтроллер семейcтва MCS-51 состоит из следующих основных блоков:
  1. 8-разрядное арифметическо-логическое устройство;
  2. ПЗУ объемом 4 кБайта;
  3. ОЗУ объемом 128 байт;
  4. четыре многофункциональных 8-разрядных параллельных порта;
  5. последовательный порт;
  6. два 16-разрядных таймера-счетчика;
  7. контроллер прерываний;
  8. блок управления.
Рассматриваемое семейство содержит несколько разновидностей микроконтроллеров, отличающихся объемом и типом внутреннего ПЗУ, технологией изготовления отдельных блоков и другими деталями. Основа архитектуры и принцип действия для всех микроконтроллеров указанного семейства являются общими.
Размер ПЗУ может быть увеличен до 64 кБайт за счет подключения внешнего ПЗУ.
Также, в дополнении к имеющемуся внутреннему ОЗУ, может быть подключено внешнее ОЗУ объемом до 64 кБайт.
Условное обозначение и назначение выводов
На рис. 1 представлено условное графическое обозначение микроконтроллера семейства MCS-51.
Рис. 1.  
Назначение выводов, указанных на рис. 1 приведено в табл. 1:
Таблица 1    
P0.0-P0.7Выводы параллельного порта P0
P1.0-P1.7Выводы параллельного порта P1
P2.0-P2.7Выводы параллельного порта P2
P3.0-P3.7Выводы параллельного порта P3
RSTСигнал общего сброса
BQ1, BQ2Выводы для подключения кварцевого резонатора
DEMAСигнал запрещения использования внутреннего ПЗУ
PMEУправляющий сигнал разрешения чтения из внешнего ПЗУ
ALEСигнал разрешения фиксации адреса
UccВывод питания от источника напряжения +5В

Отличительной особенностью однокристальных микроконтроллеров является многофункциональность выводов параллельных портов. Выводы параллельных портов могут использоваться либо в качестве собственно выводов параллельных портов, либо иметь альтернативное назначение (например, использоваться для передачи адреса/данных к микросхемам внешнего ЗУ). Такое техническое решение было использовано с целью уменьшения количества выводов микросхемы микроконтроллера, а следовательно ее удешевления.
Альтернативные функции выводов параллельных портов рассматриваемого микроконтроллера приведены в табл. 2.
Таблица 2    
ПортНомер выводаАльтернативное назначение
P00-7Мультиплексированная шина адреса/данных при работе в внешним ЗУ. Передаются данные (8 разрядов) и младший байт адреса (8 разрядов)
P10-7Не имеют альтернативного назначения, используются только в качестве выводов параллельного порта
P20-7Старшая часть шины адреса при работе с внешним ЗУ. Передается старший байт адреса
P30Входная линия последовательного порта RxD
P31Выходная линия последовательного порта TxD
P32Вход внешнего прерывания 0 INT0
P33Вход внешнего прерывания 1 INT1
P34Вход таймера-счетчика 0 T0
P35Вход таймера-счетчика 1 T1
P36Управляющий сигнал разрешения записи WR (при работе в внешним ОЗУ)
P37Управляющий сигнал разрешения чтения RD (при работе в внешним ОЗУ)

Организация запоминающего устройства
Запоминающее устройство в рассматриваемом микроконтроллере состоит из ЗУ программ (ПЗУ) и ЗУ данных (ОЗУ). ЗУ программ и ЗУ данных имеют раздельные адресные пространства размером 64 кБайт.
ЗУ программ представляет собой постоянное запоминающее устройство, предназначенное для хранения команд программы. ЗУ программ может иметь объем до 64 кБайт. 4 кБайта этого ЗУ расположены на кристалле микроЭВМ, они соответствуют четырем младшим килобайтам адресного пространства (адреса от 0000h до 0FFFh). Дополнительно может быть подключено внешнее ПЗУ, которое будет соответствовать адресам от 1000h до FFFFh. Таким образом, при обращении в память программ по адресу меньше 0FFFh автоматически происходит обращение к внутреннему ПЗУ микроконтроллера, при обращении по адресу больше 0FFFh — обращение к внешнему ПЗУ.
Микроконтроллер имеет возможность отключения внутреннего ПЗУ путем подачи активного сигнала (логической "1") на вход DEMA. В этом случае при обращении к памяти программ по любому адресу происходит обращение к внешнему ПЗУ.
Схема подключения внешнего ПЗУ к микроконтроллеру представлена на рис. 2.
Рис. 2.  
Временная диаграмма изменения сигналов при чтении из внешнего ПЗУ (памяти программ) представлена на рис. 3.
Рис. 3.  
Как видно из схемы, для передачи данных используются выводы порта Р0, для передачи адреса — выводы портов Р0 (младший байт) и Р2 (старший байт). Так как порт Р0 представляет собой мультиплексированную шину адреса данных, для подключения ЗУ необходимо выполнить ее демультиплексирование. Для этого применен буферный регистр, фиксирующий младший байт адреса по заднему фронту строба адреса ALE. Сигнал PME (разрешение чтения из памяти программ) играет роль управляющего сигнала разрешения чтения.
Нужно заметить, что при подключении внешнего ПЗУ порты Р0 и Р2 выполняют функции передачи адреса/данных и не могут быть использованы как собственно порты ввода-вывода.
ЗУ данных представляет собой ОЗУ, предназначенное для хранения каких-либо данных. ЗУ данных подразделяется на внутреннее и внешнее.
Внутреннее ЗУ данных имеет объем 128 байт и расположено непосредственно внутри микроконтроллера. Оно содержит:
Внешнее ЗУ данных может быть подключено к микроконтроллеру в виде микросхем внешнего ОЗУ при необходимости. Максимальный объем внешнего ЗУ данных равен 64 кБайт. Адресные пространства внутреннего и внешнего ЗУ данных разделены. Схема подключения внешнего ЗУ данных представлена на рис. 4.
Рис. 4.  
Временная диаграмма изменения сигналов при чтении из внешнего ОЗУ (памяти данных) представлена на рис. 5.
Рис. 5.  
Как и в схеме подключения внешнего ПЗУ используются порты Р0 и Р2 для передачи адреса и данных, для демультиплексирования шины адреса-данных используется буферный регистр. Для управления процессом обмена служат сигналы разрешения чтения (RD, вывод 7 порта Р3) и разрешения записи (WR, вывод 6 порта Р3).
Обобщенная архитектура микроЭВМ
Обобщенная архитектура микроЭВМ представлена на рис. 6.
Рис. 6.  
Блок АЛУ содержит многофункциональный 8-ми разрядный сумматор, аккумулятор и регистр состояния (аналог регистра флагов в МП общего назначения). Предназначен для выполнения арифметических и логических операций над данными.
Блок счетчика команд содержит регистр-счетчик команд (16-разрядный), схему инкремента, регистр указателя данных. Предназначен для формирования 16-разрядных адресов команд и данных.
Блок портов ввода-вывода содержит четыре 8-разрядных двунаправленных порта ввода-вывода. Каждый порт имеет буферный регистр, из которого считываются данные при вводе информации и записываются при выводе, а также управляющий регистр, который определяет направление передачи данных и режим использования выводов порта — по прямому назначению или для реализации альтернативной функции ввода-вывода. Возможно непосредственное обращение к каждому отдельному разряду параллельного порта и настройка каждого отдельного разряда на соответствующий режим работы. Например, в схеме на рис. 4 разряды 6 и 7 порта 3 использовались для альтернативных функций ввода-вывода (формирование управляющих сигналов чтения-записи), но шесть остальных разрядов этого порта могут быть использованы в операциях ввода-вывода как линии параллельного порта.
Блок последовательного интерфейса и прерываний состоит из двух отдельных частей — последовательного интерфейса и блока обработки прерываний.
Блок последовательного интерфейса представляет собой дуплексный последовательный порт, имеющий четыре режима работы:
Режим 0. Синхронная передача или прием данных по линии RxD (вывод 0 порта Р3). Размер кадра — 8 бит. Скорость передачи определяется тактовой частотой микроконтроллера () и равняется .
Режим 1. Асинхронная передача, размер кадра — 10 бит (старт-бит, стоп-бит и 8 бит данных). Скорость передачи определяется частотой переполнения таймера/счетчика 1, то есть может задаваться программно.
Режим 2. Асинхронная передача, размер кадра — 11 бит (старт-бит, стоп-бит, 8 бит данных и служебный бит). Служебный бит устанавливается программно и программно же может быть проанализирован после приема данных. Он может быть использован, например, для контроля четности или для иных целей. Скорость передачи определяется тактовой частотой микроконтроллера () и равняется или .
Режим 3. Аналогичен режиму 2, но скорость передачи определяется частотой переполнения таймера/счетчика 1, то есть может задаваться программно.
Передача данных начинается немедленно после записи байта в выходной буферный регистр последовательного интерфейса (SBUF). Чтение принятых данных происходит также по адресу SBUF –—при чтении он соответствует входному буферному регистру.
Регистр SBUF расположен в области регистров специальных функций ЗУ данных. После приема байта или завершения передачи байта формируется прерывание от последовательного интерфейса.
Блок обработки прерываний обеспечивает обработку сигналов запросов на обмен по прерываниям от пяти источников (табл. 3)
Таблица 3    
Источник прерыванияАдрес подпрограммы обработки прерывания
1Сигнал внешнего прерывания по линии INT0 (P3.2)0003h
2Переполнение таймера/счетчика0000Bh
3Сигнал внешнего прерывания по линии INT1 (P3.3)0013h
4Переполнение таймера/счетчика1001Bh
5Последовательный интерфейс (завершение приема/передачи очередного байта данных)0023h

При поступлении запроса на прерывание от любого источника по завершении выполнения текущей команды выполняется переход на соответствующую подпрограмму обработки прерывания. Адреса подпрограмм обработки фиксированы и расположены на "расстоянии" 8 байт друг от друга. Если размер подпрограммы обработки превышает 8 байт, необходимо использовать команду безусловного перехода на ту область памяти программ, в которой лежит продолжение подпрограммы.
Обработка любого прерывания может быть разрешена/запрещена через регистр разрешения прерываний, расположенный в области регистров специальных функций ЗУ данных.
Прерывания имеют два уровня приоритетов: высокий приоритет и низкий приоритет. Приоритет назначается установкой соответствующих битов в регистре приоритетов. При поступлении одновременно запросов от двух источников первым будет обработан запрос от источника с более высоким приоритетом. При поступлении двух и более запросов с одинаковым уровнем приоритета они будут обработаны в фиксированной последовательности, соответствующей порядку перечисления прерываний в табл. 3 (т.е прерывание от INT0 — первым, прерывание от последовательного интерфейса — последним).
Блок таймеров/счетчиков включает в себя два таймера-счетчика, каждый из которых состоит из 16-разрядного счетного регистра, регистра режимов, регистра управления и схемы инкремента. Все перечисленные регистры расположены в области регистров специальных функций ЗУ данных. Оба таймера/счетчика полностью аналогичны друг другу и могут работать в режиме таймера или в режиме счетчика.
При работе в режиме таймера задачей таймера/счетчика является "засечение" определенного интервала времени и формирование прерывания по окончании этого интервала. В 16-разрядный счетный регистр заносится начальное значение . После запуска таймера/счетчика в каждом такте синхронизации микроконтроллера происходит увеличение значения счетного регистра на 1. Прерывание, обозначающее окончание измеряемого временного интервала, генерируется при переполнении счетного регистра. Таким образом, период времени с момента запуска таймера/счетчика до момента генерации запроса на прерывание определяется следующей формулой:

где — тактовая частота микроконтроллера.
То есть, изменяя начальное значение счетного регистра, можно задавать различную длительность интервала времени, отмеряемую таймером.
Работая в режиме счетчика таймер/счетчик подсчитывает импульсы, поступающие на счетный вход Т0 (Р3.4) для таймера-счетчика 0 и Т1 (Р3.5) для таймера-счетчика 1. При поступлении каждого импульса (по положительному или отрицательному фронту сигнала, в зависимости от настроек таймера-счетчика) происходит увеличение за 1 значения счетного регистра. В таком режиме таймер-счетчик может использоваться для подсчета каких-либо внешних событий (например, импульсов, поступающих с импульсного датчика скорости или положения).
Блок управления выполняет управление работой микроконтроллера, обеспечивает взаимодействие и координацию работы всех его узлов. Блок управления также обеспечивает функционирование микроконтроллера в двух специальных режимах: режиме холостого хода и режиме микропотребления.
В режиме холостого хода перестает работать блок АЛУ, выполнение программы приостанавливается. Остальные блоки ОМЭВМ продолжают работать (таймеры-счетчики, последовательный интерфейс, блок управления прерываниями). В результате энергопотребление микроконтроллера падает до 15-30% от номинального. Выход из режима холостого хода происходит при возникновении любого прерывания или при подаче сигнала общего сброса RST.
В режиме микропотребления прекращается работа тактового генератора. Соответственно, все блоки микроконтроллера перестают функционировать. Данные в регистрах сохраняются. Переход из режима микропотребления в нормальный режим работы возможен только при подаче сигнала общего сброса RST.
Переход однокристальной микроЭВМ в режимы холостого хода и микропотребления выполняется путем установки соответствующих битов в регистре управления микроконтроллером специальной командой. Регистр управления микроконтроллером расположен в области регистров специальных функций ЗУ данных.