Знакомство с микроконтроллерами проведем на примере ОМЭВМ семейства Intel MCS-51 (отечественный аналог МК-51). Микроконтроллеры данного типа были разработаны достаточно давно, но их архитектура оказалась настолько удачной, что они стали де-факто стандартом среди 8-разрядных однокристальных микроконтроллеров.
Общие характеристики микроконтроллера семейства MCS-51
Микроконтроллер семейcтва MCS-51 состоит из следующих основных блоков:
- 8-разрядное арифметическо-логическое устройство;
- ПЗУ объемом 4 кБайта;
- ОЗУ объемом 128 байт;
- четыре многофункциональных 8-разрядных параллельных порта;
- последовательный порт;
- два 16-разрядных таймера-счетчика;
- контроллер прерываний;
- блок управления.
Рассматриваемое семейство содержит несколько разновидностей микроконтроллеров, отличающихся объемом и типом внутреннего ПЗУ, технологией изготовления отдельных блоков и другими деталями. Основа архитектуры и принцип действия для всех микроконтроллеров указанного семейства являются общими.
Размер ПЗУ может быть увеличен до 64 кБайт за счет подключения внешнего ПЗУ.
Также, в дополнении к имеющемуся внутреннему ОЗУ, может быть подключено внешнее ОЗУ объемом до 64 кБайт.
Условное обозначение и назначение выводов
На рис. 1 представлено условное графическое обозначение микроконтроллера семейства MCS-51.
Назначение выводов, указанных на рис. 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
Порт | Номер вывода | Альтернативное назначение |
P0 | 0-7 | Мультиплексированная шина адреса/данных при работе в внешним ЗУ. Передаются данные (8 разрядов) и младший байт адреса (8 разрядов) |
P1 | 0-7 | Не имеют альтернативного назначения, используются только в качестве выводов параллельного порта |
P2 | 0-7 | Старшая часть шины адреса при работе с внешним ЗУ. Передается старший байт адреса |
P3 | 0 | Входная линия последовательного порта RxD |
P3 | 1 | Выходная линия последовательного порта TxD |
P3 | 2 | Вход внешнего прерывания 0 INT0 |
P3 | 3 | Вход внешнего прерывания 1 INT1 |
P3 | 4 | Вход таймера-счетчика 0 T0 |
P3 | 5 | Вход таймера-счетчика 1 T1 |
P3 | 6 | Управляющий сигнал разрешения записи WR (при работе в внешним ОЗУ) |
P3 | 7 | Управляющий сигнал разрешения чтения RD (при работе в внешним ОЗУ) |
Организация запоминающего устройства
Запоминающее устройство в рассматриваемом микроконтроллере состоит из ЗУ программ (ПЗУ) и ЗУ данных (ОЗУ). ЗУ программ и ЗУ данных имеют раздельные адресные пространства размером 64 кБайт.
ЗУ программ представляет собой постоянное запоминающее устройство, предназначенное для хранения команд программы. ЗУ программ может иметь объем до 64 кБайт. 4 кБайта этого ЗУ расположены на кристалле микроЭВМ, они соответствуют четырем младшим килобайтам адресного пространства (адреса от 0000h до 0FFFh). Дополнительно может быть подключено внешнее ПЗУ, которое будет соответствовать адресам от 1000h до FFFFh. Таким образом, при обращении в память программ по адресу меньше 0FFFh автоматически происходит обращение к внутреннему ПЗУ микроконтроллера, при обращении по адресу больше 0FFFh — обращение к внешнему ПЗУ.
Микроконтроллер имеет возможность отключения внутреннего ПЗУ путем подачи активного сигнала (логической "1") на вход DEMA. В этом случае при обращении к памяти программ по любому адресу происходит обращение к внешнему ПЗУ.
Схема подключения внешнего ПЗУ к микроконтроллеру представлена на рис. 2.
Временная диаграмма изменения сигналов при чтении из внешнего ПЗУ (памяти программ) представлена на рис. 3.
Как видно из схемы, для передачи данных используются выводы порта Р0, для передачи адреса — выводы портов Р0 (младший байт) и Р2 (старший байт). Так как порт Р0 представляет собой мультиплексированную шину адреса данных, для подключения ЗУ необходимо выполнить ее демультиплексирование. Для этого применен буферный регистр, фиксирующий младший байт адреса по заднему фронту строба адреса ALE. Сигнал PME (разрешение чтения из памяти программ) играет роль управляющего сигнала разрешения чтения.
Нужно заметить, что при подключении внешнего ПЗУ порты Р0 и Р2 выполняют функции передачи адреса/данных и не могут быть использованы как собственно порты ввода-вывода.
ЗУ данных представляет собой ОЗУ, предназначенное для хранения каких-либо данных. ЗУ данных подразделяется на внутреннее и внешнее.
Внутреннее ЗУ данных имеет объем 128 байт и расположено непосредственно внутри микроконтроллера. Оно содержит:
- 32 8-разрядных регистра общего назначения (РОН), объединенных в 4 группы (банка) по 8 регистров. В каждый момент времени возможна работа только с одной группой (банком) РОН, переключение банков осуществляется через специальный управляющий регистр.
- 6 8-разрядных регистров с индивидуально адресуемыми битами. Каждый отдельный бит этих регистров имеет собственный адрес и к нему возможен индивидуальный доступ по чтению или записи.
- Регистры специальных функций. Это регистры, относящиеся к различным функциональным блокам и имеющие специальное назначение в соответствии с логикой работы соответствующего блока (к примеру, входной буфер последовательного интерфейса, счетные регистры таймеров/счетчиков, регистры управления и состояния таймеров счетчиков и т.п.).
Внешнее ЗУ данных может быть подключено к микроконтроллеру в виде микросхем внешнего ОЗУ при необходимости. Максимальный объем внешнего ЗУ данных равен 64 кБайт. Адресные пространства внутреннего и внешнего ЗУ данных разделены. Схема подключения внешнего ЗУ данных представлена на рис. 4.
Временная диаграмма изменения сигналов при чтении из внешнего ОЗУ (памяти данных) представлена на рис. 5.
Как и в схеме подключения внешнего ПЗУ используются порты Р0 и Р2 для передачи адреса и данных, для демультиплексирования шины адреса-данных используется буферный регистр. Для управления процессом обмена служат сигналы разрешения чтения (RD, вывод 7 порта Р3) и разрешения записи (WR, вывод 6 порта Р3).
Обобщенная архитектура микроЭВМ
Обобщенная архитектура микроЭВМ представлена на рис. 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.
Переход однокристальной микроЭВМ в режимы холостого хода и микропотребления выполняется путем установки соответствующих битов в регистре управления микроконтроллером специальной командой. Регистр управления микроконтроллером расположен в области регистров специальных функций ЗУ данных.