Вы находитесь на странице: 1из 148

Министерство образования и науки Российской Федерации

Государственное образовательное учреждение


высшего профессионального образования
«Омский государственный технический университет»

А. В. Никонов, Е. М. Раскин

ОДНОКРИСТАЛЬНЫЕ
МИКРОКОНТРОЛЛЕРЫ И МИКРОЭВМ

Курс лекций

Омск
Издательство ОмГТУ
2010
УДК 004.31–181.48(075)
ББК 32.973я73
Н62

Рецензенты:

В. П. Денисов, доктор техн. наук, заведующий кафедрой электроники


и автотракторного электрооборудования
Сибирской автомобильно-дорожной академии;
Н. А. Чеботарёв, канд. техн. наук, зам. директора по науке ОАО «Автоматика»

Никонов, А. В.
Н62 Однокристальные микроконтроллеры и микроЭВМ: курс лекций /
А. В. Никонов, Е. М. Раскин. – Омск: Изд-во ОмГТУ, 2010. – 140 с.

ISBN 978-5-8149-0966-4

Изложены базовые положения организации на полупроводниковом


кристалле микропроцессорных управляющих и вычислительных устройств по
принципу «система на кристалле», отражена методика их применения в
проектах различной направленности, приведены основные аспекты
электронной и программной компоненты знаковых стадий развития данной
технической области – изделий ф. Intel 51-й серии, семейства PIC ф. Microchip
и контроллеров AVR ф. Аtmel. Показана физическая суть работы типовых
функциональных узлов и способы их использования в микроконтроллерных
сетях.
Предназначен для студентов специальности 230102 «Автоматизированные
системы обработки информации и управления» и направления 230100
«Информационная и вычислительная техника», а также других направлений,
связанных с применением микропроцессорных устройств.

Печатается по решению редакционно-издательского совета


Омского государственного технического университета

УДК 004.31–181.48(075)
ББК 32.973я73

© ГОУ ВПО «Омский государственный


технический университет», 2010
2
ISBN 978-5-8149-0966-4

3
ВВЕДЕНИЕ
Создание микропроцессора (МП) как универсального компонента,
который стал связывающим звеном БИС и СБИС различного назначения,
позволило обеспечить функциональную полноту изделий электронной
промышленности большой степени интеграции. МП придал свойство
универсальности всей совокупности современного поколения изделий
электронной техники сверхбольшой степени интеграции, что обеспечивает
низкую стоимость систем управления. Он стал проводником электроники во
все сферы народного хозяйства, науки и быта.
Основной причиной качественно нового этапа в развитии автономных
средств вычислительной техники (СВТ) послужили успехи электронной
промышленности в увеличении разрешающей способности формирования
элементов на полупроводниковом кристалле. Разрешающая способность в
несколько сотен нанометров и менее позволила расположить функциональные
узлы ЭВМ на кристалле БИС или СБИС, что привело к созданию
однокристальных микроЭВМ (ОмЭВМ) и однокристальных
микроконтроллеров (ОмК).
Следствием универсальности МП-систем является их высокая гибкость –
возможность быстрой перенастройки при необходимости даже значительных
изменений алгоритмов управления. Перенастройка осуществляется
программным путём без существенных производственных затрат.
МП позволяют легко реализовать принципы открытых систем,
функциональные возможности которых могут наращиваться по мере
необходимости или при появлении новых технических средств. Области
применения ОмЭВМ и ОмК классифицируют по составу функций,
выполняемых ими при управлении технологическими процессами,
оборудованием, устройствами и их параметрами и данными.
Задачи автоматизации процессов различного рода сопряжены с
проблемой автоматического ввода информации в ЭВМ, для решения которой
разработана аналоговая и аналого-цифровая база. Фактически, это процессоры
аналогового сигнала, комплексно выполняющие автоматические операции
сбора, измерений, предварительной обработки, подготовки и ввода в ЭВМ
кодированной измерительной информации. Такие процессоры могут быть
объединены с интегральными первичными измерительными преобразователями
(датчиками).
Целесообразность применения МП-устройства определяется
эффективностью при его включении в проект. Универсальных рекомендаций

4
здесь нет и решение принимает сам разработчик. Но в целом использование
МП-устройства оправдано в следующих случаях [1]:
а) число корпусов интегральных схем (ИС) малой и средней степени
интеграции, требуемое для решения задачи, превышает 30–50 шт.;
б) проектируемое устройство должно быть многофункциональным;
в) проектируемый модуль должен взаимодействовать с большим числом
входных и выходных устройств;
д) требуется запомнить большой объём данных или большое число
логических состояний;
е) при выполнении алгоритмов, связанных с вычислениями;
ж) при необходимости выполнения дополнительных обеспечивающих
функций (самокалибровка, самодиагностика и т. п.);
и) необходимо выполнять статистическую обработку данных в процессе
работы;
к) промежуточные результаты работы устройства должны определяться
по ходу работы и индицироваться;
л) необходимость выполнять различные функциональные преобразо-
вания;
м) велик объём обрабатываемых данных и требуется большая
производительность при их обработке.
В современной технике используются как ОмЭВМ, так и ОмК. ОмЭВМ –
виды вычислительных устройств, представляющих собой комплекс
технических средств и программного обеспечения (ПО), способный
реализовать алгоритм, оформленный в виде программы, хранимой в памяти, и
ориентированный на реализацию процессов переработки информации во
взаимодействии с человеком-пользователем [2]. Как универсальная БИС они
начали изготавливаться в 70-е годы прошлого столетия, и на кристалле
располагались процессор, память (ОЗУ и ПЗУ), схемы сопряжения с
устройствами ввода-вывода (контроллеры) и тактовый генератор.
ОмЭВМ позволили заменить схемы жёсткой логики на программируемые
схемы. Эти изделия имеют низкую стоимость при наличии на кристалле
функционально полного набора устройств. ОмЭВМ объединяет на одном
полупроводниковом кристалле как сам МП, так и ряд дополнительных
устройств, обеспечивающих его функционирование в системе управления:
оперативную и программную память, генератор синхроимпульсов,
разнообразные устройства ввода и вывода информации и др. Такие БИС
относят к области «система на кристалле» (System-on-a-Chip, SoC).
В зависимости от назначения она может оперировать как цифровыми
сигналами, так и аналоговыми, аналого-цифровыми, а также частотами

5
радиодиапазона. Как правило, применяется в портативных и встраиваемых
системах. Если разместить все необходимые цепи на одном
полупроводниковом кристалле не удается, применяется схема из нескольких
кристаллов, помещенных в единый корпус (System in a package, SiP). SoC
считается более выгодной конструкцией, так как позволяет увеличить процент
годных устройств при изготовлении и упростить конструкцию корпуса.
Типичная SoC содержит:
– один или несколько микроконтроллеров, микропроцессоров или ядер
цифровой обработки сигналов;
– банк памяти, состоящий из модулей ПЗУ, ОЗУ, ППЗУ или Flash;
– источники сигналов опорной частоты, например, с использованием
кварцевых резонаторов и систем фазовой автоподстройки частоты (ФАПЧ,
phase-locked loops);
– таймеры, счётчики, цепи задержки после включения;
– стандартные интерфейсы для внешних устройств: USB, FireWire,
Ethernet, USART, SPI;
– входы и выходы цифро-аналоговых и аналого-цифровых
преобразователей;
– регуляторы напряжения и стабилизаторы питания.
Блоки могут быть соединены с помощью шины. Если в составе чипа есть
контроллер прямого доступа к памяти (DMA), то с его помощью можно
заносить данные с большой скоростью из внешних устройств напрямую в
память чипа, минуя процессорное ядро.
Для функционирования системы программное обеспечение не менее
важно, чем аппаратное. Разработка, как правило, ведётся параллельно.
Аппаратная часть собирается из стандартных отлаженных блоков, для сборки
программной части используются готовые драйверы. Применяются средства
разработки CAD и интегрированные программные оболочки.
Для того, чтобы удостовериться в правильной работе созданной
комбинации блоков, драйверы и программу загружают в эмулятор аппаратной
части (микросхему с программируемыми цепями, FPGA). Также требуется
задать расположение блоков и разработать межблочные связи. Перед сдачей в
производство аппаратная часть тестируется на корректность с использованием
специальных языков (Verilog, VHDL, SystemVerilog, SystemC, OpenVera).
До 70 % общих усилий на разработку затрачивается именно на этом этапе.
Системы на кристалле потребляют меньше энергии, стоят дешевле и
работают надёжнее, чем наборы микросхем с той же функциональностью.
Меньшее количество корпусов упрощает монтаж. Тем не менее, создание одной
слишком большой и сложной системы на кристалле может оказаться более

6
дорогим процессом, чем серии из маленьких, из-за сложности разработки и
отладки а также снижения процента годных изделий.
ОмК – устройство переработки информации, ориентированное на работу с
некоторой искусственной системой [2]. Большое число портов – особенность
контроллеров: так, БИС 580ВМ80А имеет 256 портов ввода-вывода. В памяти
контроллера может храниться большое число программ, но их количество всегда
ограничено и сами программы известны заранее. Они вводятся в контроллер в
процессе проектирования или БИС, или устройства на его основе. Хранящийся в
памяти комплект программ обновляется в исключительных случаях:
используются ПЗУ для постоянных программ и ППЗУ для изменяющегося ПО [3].
Также у контроллеров нет операционной системы, нет внутреннего
системного ПО (или оно представлено очень слабо). Все режимы работы
контроллера известны заранее и поэтому потребность в системном ПО
отсутствует. ОмК обычно работают в реальном масштабе времени, что
достигается применением БИС быстродействующих серий и отсутствием
системного ПО (например, БИС серии 1804 имеют длительность цикла 150 нс).
ОмЭВМ и ОмК имеют большое число сходных черт, но микроконтроллер –
это устройство переработки информации (способное реализовать алгоритм),
ориентированное на совместную работу с некоторой искусственной системой
(машиной, прибором, и т. п.). В повседневной практике термин
«микроконтроллер» вытеснил термин «однокристальная микроЭВМ».

7
1. ОДНОКРИСТАЛЬНЫЕ МИКРОПРОЦЕССОРНЫЕ
УСТРОЙСТВА. АРХИТЕКТУРА И ВИДЫ МИКРОЭВМ
И МИКРОКОНТРОЛЛЕРОВ
В разделе представлена архитектура однокристальных МП-уст-
ройств. Рассмотрена организация структур ОмЭВМ и различных видов
ОмК. Даются основные черты исторически сложившихся направлений
и современных тенденций в области однокристальных «систем на
кристалле».
Ключевые слова: архитектура микропроцессора, шинная организация,
микроконтроллер, сторожевой таймер, микроконтроллер встраиваемый;
микроконтроллеры с внешней памятью; цифровой сигнальный процессор.

1.1. Архитектура процессоров


Под архитектурой микропроцессорной системой понимают структуру,
построение и принципы организации аппаратных и программных средств,
рассматриваемые не изнутри – с точки зрения разработчика БИС, а снаружи –
с точки зрения пользователя. Отличия в архитектуре могут существенно
сказаться на производительность и БИС при выполнении различных задач.
В первую очередь архитектура оценивается по системе команд, на которую
она ориентирована. Процессоры RISC (Reduced Instruction Set Computer) –
это устройства с сокращённой системой команд. Здесь набор выполняемых
команд сокращён до минимума. Разработчик должен комбинировать команды,
чтобы реализовать более сложные операции.
Процессоры CISC (Complex Instruction Set Computers) – это устройства
с полной (сложной) системой команд. Выполняют большой набор команд с
развитыми возможностями адресации (непосредственная, индексная, и т. д.).
Это даёт возможность выбрать наиболее подходящую команду для выполнения
необходимой операции.
Возможность равноправного использования всех регистров процессора
называется симметричностью процессора («ортогональностью»). Это
обеспечивает дополнительную гибкость при выполнении ряда операций
(например, условных переходов). В СISC-процессорах условный переход
обычно реализуется в соответствии с определённым значением бита (флага) в
регистре состояния. В RISC-процессоре условный переход может происходить
при определённом значении бита, который находится в любом месте памяти,
что значительно упрощает операции с флагами.

8
Преимущество RISC-процессоров проявляется в том, что их более
простые команды требуют для выполнения значительно меньшее число
машинных циклов. За счёт этого достигается существенное увеличение
производительности.
Также архитектура процессоров оценивается по принципу организации
памяти – архитектуры Гарвардского и Принстонского университетов США.
Принстонская архитектура (её также называют архитектурой Фон-Неймана)
имеет общую память для хранения программ и данных. Она представлена на
рисунке 1.1.

Дешифра-
ПЗУ данные тор команд
программ адреса
ОЗУ дан- Блок ин- Процессор и
ных терфейса с внутренние
памятью регистры
Стековое
ОЗУ управляющие
сигналы

Рис. 1.1. Архитектура вычислительной системы с Принстонской архитектурой

В этой архитектуре блок интерфейса с памятью выполняет арбитраж


запросов к памяти, обеспечивая выборку команд, чтение и запись данных,
размещение в память или внутренних регистрах. Этот блок решает задачу
выбора из памяти и данных, и очередной команды. Решение осуществляется
путём выборки следующей команды во время выполнения предыдущей
(операция предварительной выборки).
Основное преимущество этой архитектуры – она упрощает устройство
микропроцессора, так как реализует обращение только к одной общей памяти
при необходимости воспользоваться ЗУ данных, программ или стеком. Это
представляет большую гибкость для разработчика ПО прежде всего в области
операционных систем реального времени.
Но при такой архитектуре команды и данные запрашиваются по одной и
той же шине. Чтобы выполнить выборку команды, необходимо сделать
несколько запросов. Например, если необходимо считать байт и поместить его
в аккумулятор, то в первом цикле из памяти выбирается команда, во втором
цикле данные считываются из памяти и размещаются в аккумуляторе.

9
В Гарвардской архитектуре разделена память программ и память данных.
Обращение к памяти происходит по отдельным шинам адреса и данных, что
значительно повышает производительность процессора по сравнению с
предыдущей архитектурой (рисунок 1.2).

данные
адреса
ПЗУ Дешифра-
программ тор команд

управляющие
сигналы Стековое
ОЗУ
Блок реги-
Процессор и ин- стров
терфейс к блоку (ОЗУ дан-
регистров ных)

Рис. 1.2. Архитектура вычислительной системы с Гарвардской архитектурой

Данная архитектура выполняет команды за меньшее число тактов, чем


предыдущая. Это обусловлено тем, что здесь больше возможностей для
реализации параллельных операций. Выборка следующей команды может
происходить одновременно с выполнением предыдущей команды, и нет
необходимости останавливать процессор на время выборки команды. Тот же
пример, – при считывании байта и помещении его в аккумулятор, – команда
также выполняется за два цикла: но выборка очередной команды производится
одновременно с выполнением предыдущей команды. В итоге команда
выполняется всего за один цикл (во время чтения следующей команды). Такой
метод (называется «параллелизм») позволяет командам выполняться за
одинаковое число тактов, что позволяет просто определять время выполнения
циклов и критических участков программы. Это важно для устройств, где
нужно обеспечить время выполнения. Но Гарвардская архитектура не является
достаточно гибкой.
Но сравнение архитектур нельзя проводить абстрактно. Оно должно
увязываться с конкретным приложением. Зачастую специфика архитектуры
позволяет наилучшим образом реализовать конкретное приложение. С целью
уменьшения выводов БИС ОмЭВМ и ОмК при их построении применяют

10
следующую структурную организацию. С раздельными шинами (рисунок 1.3:
раздельными – для памяти и для контроллеров ВУ): за счёт использования
двунаправленных шин, по одной шине, в зависимости от дополнительного
управляющего сигнала (напр., READ/WRITE) данные передаются из памяти в
процессор или обратно.

A
(шина адреса)
Контроллеры
М F внешних
(память) (процессор) устройств (ВУ)
D С
(шина данных) (шина управления)

Рис. 1.3. Структурная организация БИС ВТ с раздельными шинами

Для внешних устройств ввод-вывод информации может сопровождаться


сигналом INPUT/OUTPUT, что ведёт к дальнейшему сокращению выводов
БИС.
Структурная организация БИС с изолированными шинами приведена на
рисунке 1.4. За счёт использования одних и тех же шин для связи процессора с
памятью, и с внешними устройствами сокращается число выводов БИС, а
передача данных управляется наличием на шине управления сигнала R/W
(обмен с памятью) или сигнала I/O (обмен с ВУ).

С
D A
F М

R/W

Контроллеры
I/O
(ВУ)

11
Рис. 1.4. Структурная организация БИС ВТ с изолированными шинами

Активно применяется структурная организация с мультиплексируемой


шиной (рисунок 1.5). По ней за счёт объединения адресной шины и шины
данных в одни моменты времени передаются адреса, а в другие моменты –
данные.

A/D
F М
С

R/W

Контроллеры
I/O
(ВУ)

Рис. 1.5. Структурная организация БИС ВТ с мультиплексируемой шиной

Развитием последнего варианта является структура с общими шинами –


в ней исключены команды ввода-вывода из системы команд ЭВМ. Часть
адресного пространства в памяти отводят для адресов регистров контроллеров
внешних устройств. Для ввода-вывода используют команды ЭВМ, которые
осуществляют запись данных в эту область памяти. Процессор как бы
заставляют выполнять операцию с регистром данных контроллера ВУ, в то
время как он работает так, как если бы имел дело с ячейкой памяти ЭВМ
(рисунок 1.6).
A/D
F М
С МВУ

R/W

Контроллеры
(ВУ)

Рис. 1.6. Структурная организация БИС ВТ с общими шинами

1.2. Виды микроэвм и микроконтроллеров

12
Микроконтроллеры – управляющие устройства в микроисполнении –
широко применяются в различных областях технической деятельности
человека:
в ПЭВМ, стиральных машинах, музыкальных центрах, автомобилях, средствах
измерений, и т. д. Микроконтроллер является управляющим ядром аппаратных
комплексов различного назначения. С его помощью гораздо легче, в отличие от
традиционных решений, реализуются различные схемы. Опираясь на [4],
можно представить внутреннее содержание микроконтроллера и его
направленность на некоторые возможные объекты управления так, как это
сделано на рисунке 1.7.

Электро- Индикаторы
Индикаторы (свето- Выклю-
Персо- (светодиодные,
диодные, 7- чатели и
нальный двига-
7-сегментные,
сегментные, матрич- переклю-
компью- тель матричные)
ные) чатели
тер

Последо- Цифро- Дат-


ватель- вой порт чики
ный порт ввода-
вывода
Память
программ ОЗУ Аналоговый порт Звуко-
(ПЗУ) ввода-вывода воспро-
изводя-
Центральное Таймер щие уст-
Сторо- процессорное реального ройства
жевой устройство времени
таймер (CPU)

Микро-
Тактовый Цепь контрол-
Таймер
генератор сброса лер

Рис. 1.7. Содержание и возможная направленность микроконтроллера

Достоинство микроконтроллера (МК) – это наличие на кристалле


большого числа периферийных схем, что позволяет ему общаться с
разнообразными внешними устройствам при минимуме дополнительных узлов.
Это также уменьшает размеры конструкции и позволяет снизить потребление
энергии от источника питания.

13
Из рисунка 1.7 видно, что МК содержит типовые функциональные узлы.
К ним относятся следующие.
1. Центральное процессорное устройство – оно принимает из памяти
программ коды команд, декодирует их и исполняет. В него входят арифметико-
логическое устройство (АЛУ), регистры и цепи управления.
2. Память программ – она хранит коды команд, последовательность
которых формирует программу микроконтроллера.
3. Оперативная память данных (ОЗУ) – здесь хранятся переменные
программ. У многих МК здесь также расположен стек.
4. Тактовый генератор – инициирует работу контроллера, и от него
зависит скорость работы МК.
5. Цепь сброса – приводит МК в исходное состояние, чем определяет
правильный запуск его работы.
6. Последовательный порт – позволяет обмениваться данными с
внешними устройствами при малом числе проводов.
7. Цифровой порт ввода-вывода – с помощью его линий можно управлять
одновременно несколькими внешними устройствами, адресуя их.
8. Таймер – задаёт временные интервалы.
9. Сторожевой таймер – специальный таймер, предназначенный для
предотвращения системных сбоев программы: после запуска он начинает
отсчёт заданного временного интервала. Если программа не перезапустит его
до истечения этого интервала времени, сторожевой таймер перезапустит МК.
То есть программа должна сигнализировать таймеру, что с ней всё в порядке.
Если такого сигнала нет, то в работе программы по какой-то причине
произошёл сбой.
Наиболее распространён ОмК ф. Intel 51-й серии и его клоны от разных
производителей. Кроме этого, появились интегральные схемы, использующие
сокращённый набор команд процессора (RISK – Reduced Instruction Set
Computers). Среди них популярны контроллеры ф. Microchip семейства PIC
(Peripheral Interface Controller). Также лидирующее место занимают RISK
ОмК из серии AVR (например, ф. Аtmel). PIC-контроллеры выпускают многие
фирмы, кому не лень их делать.
PIC-контроллер имеет также RISK-процессор, только архитектура
процессора другая и кодовое слово не 8 бит, а 11–15 бит.
Основное отличие RISK-процессора от 51-й серии ф. Intel, например, то,
что команда в нём исполняется за один такт, и число команд ограничено –
обычно около 60–70 штук. Поэтому в ходе изучения нужно рассматривать оба
типа микроконтроллеров. Как обычный ОмК нужно рассмотреть контроллер
51-й серии (и как самый используемый тип контроллеров). А в качестве

14
RISK-контроллера необходимо рассмотреть PIC-контроллеры и контроллер
AVR ф. Аtmel, так как для него много всевозможного бесплатного
обеспечения, используемого для программирования и демонстрации.
Впрочем, нет принципиальной разницы, на каком оборудовании
изучаются ОмК, так как сейчас все они часто программируется на языке С. Но
ресурсы в разных процессорах разные и, в зависимости от модели, что-то
может присутствовать, а что-то может быть упущено. После контроллера 51-й
серии целесообразно рассматривать AVR-контроллеры, а затем идут atmega и
arm как дальнейшее развитие. Достаточно рассмотреть и изучить один
процессор –
и полученные знания легко распространяются на все остальное. Новые ресурсы
и возможности появляются, а принципы остаются всё те же (кроме PIC-
контроллеров).
Семейство MCS-51, по сути дела, стало прародителем семейств так
называемых PIC и AVR микроконтроллеров, выполненных по Гарвардской
архитектуре процессора.
В случае высоких требований к быстродействию МК, при условии их
низкой стоимости и энергопотребления, разработки на основе МК MCS-51
применяются реже, уступая место разработкам на PIC и AVR
микроконтроллерах.
В целом, многообразие современных ОмК чрезвычайно велико. Зачастую
их делят на виды [5]:
– встраиваемые 8-разрядные;
– 16- и 32-разрядные МК;
– цифровые сигнальные процессоры (DSP).
Встраиваемые (embedded) микроконтроллеры имеют все ресурсы
(память, устройства ввода-вывода, и т. д.) на одном кристалле с процессорным
ядром. На такой контроллер подаются питание и тактовые сигналы. В них
процессорное ядро может быть общего плана или разработано специально для
данного МК. Основное назначение встраиваемых МК – обеспечить гибкое
программируемое управление объектами и связь с внешними устройствами.
Они не приспособлены для выполнения комплекса сложных функций.
Такие МК содержат большое число вспомогательных устройств, за счёт
чего реализуется их включение в конкретную систему с использованием
минимального числа дополнительных компонентов. Обобщённая структура
такого контроллера приведена на рисунке 1.8.

15
Блок Память про-
управления грамм
питанием

Порты вво-
да–вывода
Блок
управления Процес-
сбросом сор
Блок син-
хронизации
ОЗУ
и таймер

Рис. 1.8. Обобщённая структура простого встраиваемого микроконтроллера


В состав таких МК обычно входят схема начального запуска (Reset);
генератор тактовых импульсов; центральный процессор; память программ (ПЗУ
или ППЗУ, ЭППЗУ); память данных (ОЗУ); средства ввода-вывода данных;
таймеры, фиксирующие число командных циклов.
Сложные встраиваемые МК реализуют дополнительные возможности:
встроенный монитор-отладчик программ; внутренние средства
программирования памяти программ; обработка прерываний от различных
источников; аналоговый ввод-вывод; последовательный ввод-вывод
(синхронный и асинхронный); параллельный ввод-вывод (включая интерфейс с
компьютером); подключение внешней памяти (микропроцессорный режим).
Типичные значения частоты тактовых сигналов различных МК
составляют 10–20 МГц. Главным фактором, ограничивающим их скорость,
является время доступа к памяти.
Микроконтроллеры с внешней памятью (особенно 16- и 32-разрядные)
используют только внешнюю память, которая включает в себя как память
программ ПЗУ (ROM), так и некоторый объём памяти данных ОЗУ (RAM),
требуемый для конкретного применения. Структура МК с внешней памятью
приведена на рисунке 1.9.
Примером такого МК служит БИС ф. Intel 80188. Это микропроцессор
8088 (используемый в компьютерах IBM PC), интегрированный на общем
кристалле с дополнительными схемами, реализующими ряд стандартных
функций (прерывания и прямой доступ к памяти DMA). Здесь в одном корпусе
объединены устройства, необходимые для реализации систем, в которых могут
использоваться функциональные возможности и ПО микропроцессора 8088.

16
источник
питания Блок
управления входные и
выходные

Порты вво-
да–вывода
сигнал сброса питанием сигналы
(запуск) Блок
управления Процес-
сбросом сор
тактовые Блок син-
сигналы хронизации Интерфейс с
Интерфейс
внешней па-
и таймер с внешней
мятью Память
памятью программ
данные (ПЗУ)
адреса Память
данных
управляющие (ОЗУ)
сигналы

Рис. 1.9. Обобщённая структура микроконтроллера с внешней памятью


Микроконтроллеры с внешней памятью предназначены для применений,
требующих большого объёма памяти данных ОЗУ и небольшого количества
устройств (портов) ввода-вывода. Для них наиболее подходят приложения, в
которых критическим ресурсом является память, а не число логических
входов–выходов общего назначения, тогда как для встраиваемых МК
характерна обратная ситуация.
Типичный пример МК с внешней памятью – контроллер жёсткого диска
(HDD) с буферной кэш-памятью, который обеспечивает промежуточное
хранение и распределение больших объёмов данных (обычно, мегабайты).
Внешняя память даёт возможность такому МК работать с более высокой
скоростью, чем встраиваемый МК.
Цифровые сигнальные процессоры (DSP) предназначены для
получения текущих данных от аналоговой системы и формирования
соответствующего отклика. В них АЛУ работает с очень высокой скоростью,
что позволяет осуществлять обработку данных в реальном масштабе времени (в
темпе поступления входных данных). Пример – активный шумоподавляющий
микрофон, когда второй микрофон обеспечивает сигнал окружающего шума,
который вычитается из сигнала первого микрофона. Так подавляется шум и
остаётся только голос.
Цифровым сигнальным процессорам присущи особенности встраиваемых
МК и контроллеров с внешней памятью. Они не предназначены для
автономного применения, а входят в состав систем и предназначены для
управления внешним оборудованием. Например, наличие аналогового ввода–
вывода и встроенного устройства цифровой обработки в БИС КМ1813ВЕ1
позволяет использовать её для построения фильтров (в том числе

17
перестраиваемых), в синтезаторах и анализаторах речи, в анализаторах спектра,
для генераторов сигналов различной формы и т. п.
Примером отечественных ОмЭВМ может служить таблица А.1 [6, 7]
приложения А. Наиболее доведённой до практического применения являлась
серия 1850. Ряд серий ОмЭВМ имеют БИС отладочного кристалла без
встроенного ПЗУ и позволяют отрабатывать различные применения БИС
данных серий за счёт замены или перепрограммирования внешнего ПЗУ
(например, КМ1814ВЕ3, КР1816ВЕ35, КР1816ВЕ39 или КР1820ВЕ1).
Наличие аналогового ввода-вывода и встроенного устройства цифровой
обработки в БИС КМ1813ВЕ1 позволяет использовать её для построения
фильтров (в том числе перестраиваемых), в синтезаторах и анализаторах речи, в
анализаторах спектра, для генераторов сигналов различной формы и т. п.
Характеристики отечественных микроконтроллеров приведены в таблице
Б.1 приложения Б, а характеристики зарубежных ОмК приведены в таблице Б.2.
Описание контроллера серии AVR (микроконтроллер AT90S2313) приведено
в [8].
Выводы
Основной причиной качественно нового этапа в развитии автономных
средств вычислительной техники послужили успехи электронной
промышленности в увеличении разрешающей способности формирования
элементов на полупроводниковом кристалле. Целесообразность применения
однокристальных МП-устройств определяется эффективностью при их
включении в проект. Преимущество RISC-процессоров проявляется в том, что
их более простые команды требуют для выполнения значительно меньшее
число машинных циклов. За счёт этого достигается существенное увеличение
производительности.
ОмЭВМ объединяет на одном полупроводниковом кристалле как сам
МП, так и ряд дополнительных устройств, обеспечивающих его
функционирование в системе управления: оперативную и программную память,
генератор синхроимпульсов, разнообразные устройства ввода и вывода
информации и др. ОмК – это устройства переработки информации,
ориентированные на работу с некоторой искусственной системой. Большое
число портов – их особенность. Микроконтроллер является управляющим
ядром аппаратных комплексов различного назначения. С его помощью гораздо
легче, в отличие от традиционных решений, реализуются различные схемы.
Основное преимущество Принстонской архитектуры в том, что она
упрощает устройство микропроцессора, так как реализует обращение только к
одной общей памяти при необходимости воспользоваться ЗУ данных, программ
или стеком. Это представляет большую гибкость для разработчика ПО прежде
всего в области операционных систем реального времени. Гарвардская
18
архитектура выполняет команды за меньшее число тактов, чем предыдущая –
здесь больше возможностей для реализации параллельных операций.
С целью уменьшения выводов БИС ОмЭВМ и ОмК при их построении
применяют различные структурные организации. Многообразие современных
ОмК чрезвычайно велико, и часто их делят на виды: встраиваемые 8-разрядные;
16- и 32-разрядные; цифровые сигнальные процессоры.

Вопросы для обсуждения


1. Универсальные рекомендации к оправданному использованию
однокристальных МП-устройств в проектах.
2. Сравнение архитектур однокристальных МП-устройств с CISC- и
RISC-процессорами по быстродействию и затратам объёма памяти на хранение
программы.
3. Альтернативные критерии для классификации современных
однокристальных МП-устройств, исходя из их аппаратных характеристик и
методик программирования и отладки.
Контрольные вопросы
1. Перечислите конкретные случаи, когда оправдано использование
МП-устройств.
2. Как Вы понимаете роль микропроцессора, как универсального
компонента, обеспечивающего полноту и универсальность электронных
модулей и систем?
3. Как Вы представляете себе однокристальную микроЭВМ или
микроконтроллер, понимая их как функциональные узлы ЭВМ, расположенные
на полупроводниковом кристалле?
4. Охарактеризуйте высокую гибкость микропроцессорных систем как
следствие их универсальности.
5. Как Вы представляете себе суть реализации принципов открытых
систем с помощью микропроцессорных модулей?
6. Охарактеризуйте термин «процессор аналогового сигнала»
применительно к однокристальной микроЭВМ.
7. Изложите Ваше понимание такой возлагаемой на микропроцессор
задачи, как «устройство должно быть многофункциональным».

Список рекомендуемой литературы


1. Бродин В. Б. Системы на микроконтроллерах и БИС программируемой
логики / В. Б. Бродин, А. В. Калинин. – М.: ЭКОМ, 2002. – 400 c.

19
2. Цифровая обработка информации на основе быстродействующих БИС /
С.А. Гамкрелидзе [и др.]; под ред. В.Г. Домрачева. – М.: Энергоатомиздат,
1988. – 136 с.
3. Однокристальные микроЭВМ / А. В. Боборыкин [и др.]. – М.: Бином,
МИКАП, 1994. – 398 с.

Список рекомендуемых периодических изданий


1. Электроника НТБ // Для специалистов, занятых разработкой,
производством и применением изделий электронной техники, а также ученым,
преподавателям и студентам технических вузов. – Периодичность 6 (8) номеров
в год.
2. Цифровая обработка сигналов // Научно-технический журнал: плановая
периодичность издания – четыре номера в год.
3. Computer // IEEE Computer Society.

20
2. АППАРАТНАЯ ЧАСТЬ ОДНОКРИСТАЛЬНЫХ
МП-СРЕДСТВ
В этом разделы освещены особенности однокристальных
микропроцессорных средств, определяющих условия и эффективность их
использования.
Ключевые слова: КМОП-инвертор, спящий режим, потребляемая
мощность, инициализация, напряжение питания, тактовый генератор,
прерывание, таймер, ШИМ, преобразование напряжения
КМОП-инвертор. В настоящее время практически все однокристальные
микропроцессорные средства выпускаются по КМОП-технологии (CMOS –
Complementary Metal Oxide Semiconductor). В ней используется логический
ключ на паре комплементарных (р-канальном и n-каналном) полевых
транзисторов с изолированным затвором (рисунок 2.1) – так называемый
КМОП-инвертор.
При низком уровне напряжения на входе верхний транзистор открыт, а
нижний – закрыт, и на выходе установится высокий потенциал UП. При
высоком уровне напряжения на входе верхний транзистор закрыт, а нижний
открыт, и на выходе низкий потенциал «земли».
IC
+Uп
р-канальный
UЗИ
вкл

выкл
вход выход

+Uп IC

0 выкл n-канальный

вкл UЗИ

Рис. 2.1. Логический ключ (КМОП-инвертор)

В любом фиксированном состоянии через транзисторы течёт крайне


малый ток. В «спящем» режиме, когда частота переключения равна нулю,
потребление мощности от источника питания практически нет, так как
потребляемый ток очень мал. С увеличением частоты переключения в
интервале времени, когда на каждый входной перепад один транзистор в

21
процессе закрывания, а другой – в процессе открывания, от шины питания к
земле в короткое время переключения протекает значительный импульс тока.
То есть увеличиваются средний потребляемый ток и потребляемая мощность.
Кроме того, такая схема обладает большим входным и малым выходным
сопротивлением.
Порог переключения. Для практического использования КМОП-элемен-
тов важно знать значение порога переключения. Обычно оно лежит в
пределах от 1,4 В до UП/2. Различные логические элементы могут иметь разные
пороги переключения. Прежде, чем использовать элемент, необходимо
убедиться, что его логические уровни и порог переключения соответствуют
уровням и порогам переключения других элементов.
Нужно обращать внимание на возможность использования элементов с
пониженным напряжением питания, которые имеют более низкие уровни
логической единицы (низковольтная логика). Необходимо, чтобы уровень
логической единицы (высокий уровень потенциала) всегда был выше порога
переключения.
Потребляемая мощность. Очень часто однокристальные
микропроцессорные средства имеют автономное питание: батареи или
конденсаторы большой ёмкости, обеспечивающие сохранение
работоспособности при кратковременных отключениях питания. При
планировании энергопотребления необходимо учитывать, что потребляемая
мощность зависит от режима функционирования. В зависимости от режима
работы, МП-устройство может при одном и том же ресурсе энергии
функционировать в течение нескольких часов или нескольких месяцев.
Имеются три значения мощности, потребляемой МП-компонентом в различных
рабочих условиях:
а) собственная мощность, необходимая для нормальной работы МП-
компонента. Эту мощность потребляет МП-компонент когда к нему не
подключены внешние устройства. Значение этой мощности зависит в основном
от тока, потребляемого при переключении КМОП-инверторов, который в свою
очередь зависит от скорости работы (частоты переключения). Так, для МК
PICMicro 16С73А увеличение тактовой частоты с 1 МГц до 4 МГц приводит к
увеличению тока питания с 550 мкА до 1,25 мА. Это означает, что программное
обеспечение должно быть компактным с целью увеличения срока службы
устройства без смены батарей.
Собственная мощность уменьшается при снижении напряжения питания.
В этом плане нужно выбирать тип МП-компонента и подключённых к нему
устройств. Многие ИС могут работать при снижении напряжения питания до
2 В и менее;
22
б) мощность, потребляемая устройствами ввода-вывода, которую
необходимо учитывать при наличии обмена данными с внешними
устройствами. Эта мощность определяет значение мощности, которое МП-
компонент должен затратить на управление работой внешней устройств. Она
определяется конкретным вариантом применения МП-компонента. Например,
если МК является единственным активным устройством и выдаёт управляющие
сигналы непрерывно, даже когда внешние устройства не требуют
обслуживания, то данное устройство будет потреблять больший ток, чем это
необходимо для нормальной работы;
в) мощность, потребляемая в «спящем» режиме, когда ожидается
наступление внешнего события, переключающего МП-компонент в рабочий
режим. В спящий режим МК входит после выполнения специальной команды.
При этом тактовый генератор останавливается до наступления некоторого
события, например, поступления сигнала от сторожевого таймера или
изменения состояния определённого входа.
Использование спящего режима может уменьшить потребляемую
мощность с уровня в несколько милливатт до микроватт. Спящий режим – это
виртуальный выключатель, реализованный внутри микропроцессорного
компонента. В этом режиме сохраняется содержимое памяти данных ОЗУ
(RAM).
Основной недостаток спящего режима – это относительно большое
время, необходимое для выхода из спящего режима и запуска тактового
генератора МП-компонента (десятки миллисекунд). Такая задержка
оказывается слишком большой при взаимодействии с другой компьютерной
системой. При работе в спящем режиме необходимо, чтобы ток нагрузки МП-
компонента был минимален: втекающий или вытекающий ток нагрузки
вызывает увеличение потребления мощности.
Напряжение питания. Однокристальные МП-компоненты работают в
широком диапазоне напряжений питания и в широком диапазоне внешних
условий. Различные источники питания могут иметь уровень напряжения ниже
номинального, что ведёт к изменению значений напряжений логических «0» и
«1». Кроме этого, напряжение питания может иметь пульсации. Поэтому при
проектировании соответствующих устройств необходимо оценивать
справочные характеристики, отражающие диапазоны изменений уровней
напряжения логических «0» и «1» и напряжения питания.
Для предохранения функционального узла на ОМК следует
развязывать питающее напряжение: у вывода питания подключается
конденсатор ёмкостью порядка 0,1 мкФ, что обеспечивает повышенный

23
выходной ток при переходных процессах. В итоге в функциональном узле
предотвращаются ложные сбросы и искажения данных.
Запуск устройства. Запуск устройства с ОМК должен происходить после
того, как установилось требуемое значение напряжения питания после его
включения. Поэтому в устройствах применяют простую схему сброса
(инициализации) ОМК при включении напряжения питания (рисунок 2.2).

UПИТ
R1–10 к
на вход «Сброс»
МП-элемента
ручной «Сброс» (актиный уро-
R2 вень – низкий)
100
C–0,1 мк

Рис. 2.2. Формирование сигнала сброса микропроцессора

В этой схеме активный уровень сигнала сброса устанавливается или при


нажатии кнопки, или при включении питания. При включении питания
напряжения сброса начинает возрастать за счёт заряда конденсатора. Активный
(низкий) уровень сигнала «Сброс» будет существовать, пока напряжение на
конденсаторе не возрастёт до значения переключения схемного элемента на
входе сброса в МП. Это примерно через 2,2 мс после включения напряжения
питания (tЗАД  2,2(R1 + R2)C = 2,210,11030,110–6  2,2 мс). Дальнейшее
возрастание напряжения на входе сброса уже не является активным значением
сигнала «Сброс», и МП начинает функционировать.
То же, если нажата кнопка «Сброс»: конденсатор быстро разряжается
через сопротивление 100 Ом, ограничивающее разрядный ток, и после
отпускания кнопки опять заряжается, уходя от уровня нулевого напряжения до
значения переключения схемного элемента в МП. Этого времени должно быть
достаточно для установления стабильного значения напряжения питания и
требуемой частоты тактового генератора. Сигнал сброса оканчивается и
начинает функционировать микропроцессор.
Некоторые МП-компоненты имеют встроенную схему задержки
включения – пуска тактового генератора и начала выполнения первой команды
программы. В этом случае элементы R2, С по рисунку 2.2 могут быть удалены.
24
Указанные схемы сброса используются в том случае, когда напряжение
питания поддерживается в заданном рабочем диапазоне. Если для питания
используются батареи, разряжающиеся с течением времени, то это ведёт к
нарушению работы устройства, так как напряжение отключения одних
элементов достигается раньше, чем других.
В указанном плане используются элементы, называемые элементами
наблюдения за питанием (мониторы питания). При уменьшении напряжения на
шине питания до значения ниже допустимого, монитор питания вырабатывает
сигнал сброса. Мониторы питания обычно содержат схему задержки,
аналогичную рисунку 2.2, а монтируются в корпусе трёхвыводного
транзистора.
Тактовый генератор. Обеспечение работы тактового генератора МП-
компонента требует минимального числа внешних элементов, несмотря на то,
что большинство МП-устройств работает в широком диапазоне частот – от
близких к нулю до десятков мегагерц. Иногда используют тактовую частоту
1 Гц и менее для отладки ПО. Интегральная схема МП-компонента обычно
имеет внутренний тактовый генератор, частота выходного сигнала которого
задаётся внешними элементами.
Для задач, требующих высокой точности установки частоты тактового
генератора (часы реального времени, интерфейс микроконтроллера с другими
устройствами и т. п.) в качестве внешнего элемента используют кварцевый
резонатор, что позволяет получить относительную нестабильность частоты не
более 0,001–0,01 %. Типовая схема подключения кварцевого резонатора
показана на рисунке 2.3.
микроконтоллер

CLK0

CLK1

Рис. 2.3. Типовая схема подключения кварцевого резонатора

Номиналы ёмкостей в схеме приводятся в документации производителя


МП-компонента (единицы – сотни пикофарад). Иногда в качестве нижнего
конденсатора используют подстроечный, что позволяет точно установить
частоту тактового генератора. В некоторых случаях параллельно кварцевому

25
резонатору подключают резистор большого номинала (несколько мегаом), что
обуславливает устойчивую работу тактового генератора.
Недостаток данной схемы – это внешние компоненты и механическая
хрупкость кварцевого резонатора. В ряде случаев вместо кварцевого резонатора
применяют керамические компоненты – фильтр на основе пьезоэлементов или
на основе поверхностной акустической волны (ПАВ-фильтры). Такие элементы
более устойчивы к ударной механической нагрузке, часто имеют встроенные
конденсаторы, хотя таким генераторам присуща большая относительная
нестабильность частоты (примерно 0,1–0,5 %).
Другой способ задания частоты генерации – это использование RC-
компонентов (рисунок 2.4).

R
микроконтоллер

CLK0
C

CLK1

Рис. 2.4. Типовая схема подключения RC-компонентов

Частота генерации определяется постоянной времени RC-цепи, но общей


формулы для расчёта частоты генерации нет вследствие нелинейности
импеданса по входу МК-компонента. Номиналы резистора и конденсатора
указываются в руководстве по применению МП-компонента.
Это наиболее дешёвый и наименее точный способ задания частоты.
Нестабильность частоты такого генератора порядка десятков процентов.
Кроме указанного, тактовые импульсы могут быть поданы от внешнего
генератора. В этом случае можно задать любую частоту синхронизации
МП-компонента за счёт соответствующей установки частоты внешнего гене-
ратора.
Также, иногда в МП-компонентах могут быть встроенные RC- или
кольцевые генераторы. Работой внутреннего тактового генератора управляют
путём программирования соответствующего регистра конфигурации, которое
производится вместе с программированием памяти программ МП-компонента.

26
Программный счётчик. Программный счётчик (РС – Program Counter)
используется для указания следующей команды выполняемой программы. Это
счётчик с параллельным вводом и параллельным выводом. В процессорах с
принстонской архитектурой содержимое РС поступает по шине данных в схему
управления памятью, указывая адрес считываемой команды. Программные
счётчики часто входят в состав схемы управления памятью – это позволяет
избежать передачи адреса по внутренней шине данных.
Основные характерные особенности программного счётчика
следующие:
– параллельная загрузка нового содержимого с шины данных;
– возможность возврата к адресу первой команды программы
(возможность сброса);
– реализация счёта на увеличение (инкремента) для адресации следующей
команды.
Сигналы, обеспечивающие выполнение этих операций счётчиком,
формируются дешифратором команд, управляющим последовательностью
действий МП-компонента.
Параллельная загрузка используется для записи в программный счётчик
адреса перехода при выполнении команды безусловного перехода (jump) или
вызова подпрограммы (call). В компьютерах с принстонской архитектурой этот
адрес поступает по шине данных. Так как в 8-разрядных устройствах объём
доступной памяти программ составляет лишь 256 байт, то разрядность РС
больше, чем 8 бит. При загрузке в счётчик нового адреса, он поступает по шине
данных частями по 8 бит, что требует выполнения дополнительных машинных
циклов.
Чтобы сократить время загрузки программного счётчика, ряд
процессоров имеет команды ветвления branch, при которых загружается
только 8 младших разрядов адреса. Старшие разряды адреса остаются без
изменения. В этом случае по шине передаётся только один байт (для загрузки
полного 16-разрядного адреса понадобилось бы передавать два байта).
Начальное содержимое программного счётчика после запуска МП-
устройства может иметь любое значение. Часто используется значение
начального адреса 0000016 (адрес, выраженный шестнадцатиричным числом),
но ряд устройств начинает выполнение программы с других адресов.
Аналогичная ситуация возникает с адресами прерываний (векторами
прерываний) при выполнении программы по запросу на прерывание основной
программы. Обслуживание прерывания начинается с адреса (вектора

27
прерывания), отличного от адреса, загружаемого при начальном запуске
устройства. Но для реализации прерывания или запуска устройства
используются обычно одни и те же аппаратные средства.
Если выполняется вызов подпрограммы или обрабатывается прерывание,
то адрес возврата (следующей команды) может быть сохранён в стеке без
выполнения дополнительных тактов для инкремента содержимого
программного счётчика.
В устройствах с принстонской архитектурой необходимо следить, чтобы
РС не вышел за пределы памяти программ (иначе начнётся выборка данных
вместо команд и попытка выполнить выбранные коды данных, что ведёт к
непредсказуемому результату). Также, если программный счётчик достигнет
конца адресуемой памяти, то некоторые устройства осуществляют циклический
переход к команде, размещённой по адресу 0000016. В других устройствах
дешифратор команд продолжает наращивать программный счётчик, что
приводит к выполнению неопределённых команд.
Арифметико-логическое устройство. АЛУ процессора используется для
выполнения всех математических операций в программе (сложение, вычитание,
логическое И, логическое ИЛИ, сдвиг содержимого регистров и установку
содержимого регистра состояния в соответствии с полученными результатами.
АЛУ не используется при чтении или записи данных или команд – оно служит
только для обработки данных. АЛУ можно представить как аппаратный блок,
который обрабатывает два слова данных (операнды) и сохраняет полученный
результат (рисунок 2.5).

операнд 1 операнд 2

Биты состояния
АЛУ (флаги)

результат

Рис. 2.5. АЛУ процессора

От конкретного типа микропроцессора зависит, как вводятся операнды в


АЛУ и куда поступает результат – это одно из основных различий между
различными типами процессоров и их системами команд. Некоторые
28
процессоры выбирают один операнд из регистра-аккумулятора и сохраняют
результат также в аккумуляторе. Другие процессоры позволяют использовать
различные источники операндов и места размещения результатов.
АЛУ обычно работают только с положительными числами. Но при
выполнении вычитания получаются отрицательные числа, если вычитаемое
больше уменьшаемого. Для представления отрицательных чисел используется
дополнительный код («дополнение до двух»). Так, например, операция
вычитания в микроконтроллере Microchip PIC выполняется следующим
образом. Вместо вычитания одного числа из другого происходит добавление
отрицательного числа: A – B = A + (–B) – где отрицательное число –В
представляется в дополнительном коде. Полагая, что числа А и В – байтовые,
поясним этот приём рисунком 2.6.
Графическая интерпретация замены вычитания сложением с дополнением
отрицательного числа поясняется выражением

А + (MAX – B) = {А + (MAX – A)} + [(MAX – B) – (MAX – A)] = A – B.

Отрезок, отражаемый фигурными скобками, выпадает за разрядную


сетку.
Также замену операции вычитания на сложение за счёт действий с
дополнительным кодом (для отрицательных чисел) можно пояснить
следующим образом [9]. Дополнение отрицательного числа К определяется: М
= Sn – |К|, где S – основание системы счисления для числа К; n – число разрядов
целого числа К.

максимально
|MAX – B| MAX – A возможное при
данном числе
разрядов (MAX)
отрицательные –В 0
А положительные

дополнение
числа –В после
взятия его по А + (дополне-
не учитывается ние числа –В
модулю из-за перепол- после взятия его
нения разрядной по модулю)
сетки
результат вычи-
тания: А – В

29
Рис. 2.6. Замена вычитания сложением

Дополнением положительного числа считают само положительное


число.
Для чисел 1 и –1 пятиразрядные дополнения будут: (+1) – дополнение
00001; (–1) – дополнение 99999. Операция вычитания (1 – 1) заменяется
сложением [(+1) + (–1) = 0] или [00001 + 99999 = 1 00000]. В полученном
результате 1 не учитывается, так как выпадает за разрядную сетку.
Механизм образования дополнения двоичных чисел следующий:
– получить инверсию числа;
– затем к инверсии прибавить 1,
например:
0000001011000101  число
1111110100111010  инверсия
1
1111110100111011  дополнение числа
То есть, чтобы получить дополнительный код отрицательного двоичного
числа, указанный выше механизм выполняется операцией
–В = (В  000FF16) + 1.
Следовательно, если есть схема преобразования отрицательных чисел в
дополнительный код, то нет необходимости использовать схему вычитания.
Достаточно иметь в составе АЛУ сумматор, который реализует вычитание с
помощью следующей замены:
А – В = А + (В  000FF16) + 1.
Но этот метод выполнения вычитания неудобен для анализа полученного
результата, если учитывать флаг переноса, устанавливаемый в результате
сложения и вычитания.
В традиционных АЛУ, которые имеют и сумматор и вычитатель, обычно
используется флаг «переноса – заёма». Этот флаг устанавливается в 1, когда
результат сложения больше, чем 000FF16 или меньше нуля. В обоих случаях
флаг используется для указания того, что значение 8-ми старших бит
результата зависят от результата, полученного при операции над 8-ью
младшими битами. Если же АЛУ не содержит вычитателя, то флаг переноса
также устанавливается после сложения или вычитания, но имеет другое
значение.
Рассмотрим примеры. Пусть уменьшаемое число больше вычитаемого
числа:
30
0007716 – 0005516 = 0007716 + (–0005516) = 0007716 + (0005516  000FF16) + 1 =
= 0007716 + 000АА16 + 1 = 0012216.
Результат получился больше, чем 0FF16 (единица в третьем справа
разряде), что приводит к установке флага «переноса» единицы в младшем бите
старшего байта (флаг «переноса – заёма» в этом случае был бы не равен 1).
Младшие восемь бит равны 02216, что ожидалось, – это значение и будет
записано в качестве результата.
Пусть уменьшаемое число меньше вычитаемого числа, тогда:
0005516 – 0007716 = 0005516 + (–0007716) = 0005516 + (0007716  000FF16) + 1 =
= 0005516 + 0008816 + 1 = 000DE16.
Здесь младшие восемь разрядов представляют число –2216 (2216 = 2160 + +
2161 = 34), являющееся дополнением для DE16 (DE16 = 14160 + 13161 = 222), а
бит переноса в старший байт (флаг переноса) равен нулю – такой, как и
ожидалось.
В традиционном АЛУ для данного примера результат также будет иметь
значение DE16, но установится флаг «заёма – переноса», равный 1.
То есть АЛУ без вычитателя устанавливает флаг переноса в 1, когда
результат вычитания положительный, и в 0 – при отрицательном результате
вычитания. Поэтому формируемый бит переноса в старший разряд можно
называть флагом «перенос – знак».
Обычно различные представители одного семейства микроконтроллеров
имеют одинаковые АЛУ. В некоторых семействах АЛУ реализуют
определённые операции, которые не выполняются МК других семейств
(например, умножение). Дополнительные функции различных МК одного
семейства реализуются путём включения в их структуру дополнительных
аппаратных средств, но при этом структура и функции АЛУ сохраняются, так
как вводимые в МК дополнительные устройства используют свои регистры, не
связанные с регистром состояния и аккумулятором (например, семейство 8-
разрядных МК 68НС05 ф. Motorola).
Сторожевые таймеры. Сторожевые таймеры предназначены для вывода
микроконтроллерных устройств из непредсказуемых ситуаций, который часто
возникают из-за обращения по неправильному адресу, что, в свою очередь,
обычно является следствием воздействия помех от промышленного
оборудования. Сторожевой таймер вызывает сброс МК, если его содержимое не
обновляется в течение определённого промежутка времени (обычно от десятков
миллисекунд до нескольких секунд). То есть, если изменение содержимого
программного счётчика не соответствует заданной программе, то не будет
31
выполнена команда модификации сторожевого таймера. В этом случае
сторожевой таймер производит сброс МК, устанавливая его в исходное
состояние.
Сторожевой таймер не рекомендуется использовать для маскирования
неправильной работы программ: уменьшая вероятность программных ошибок,
он не обеспечит исключение всех возможных причин их возникновения.
Необходимо тщательно тестировать программное обеспечение в различных
ситуациях.
Подпрограммы и функции. Подпрограммы и функции также имеют
аппаратную поддержку, обеспечивающую вызов подпрограмм и передачу
параметров, необходимых для её выполнения.
При вызове подпрограммы требуется сохранить содержимое
программного счётчика для того, чтобы команда возврата могла вернуть
управление исходной программе. Это может быть выполнено различными
способами.
а. Автоматически, как часть команды САLL (вызов), путём сохранения
адреса возврата в стеке. При возврате к исходной программе адрес извлекается
из стека и загружается в программный счётчик.
б. В архитектурах, не имеющих стека или других регистров для
сохранения содержимого программного счётчика, при выполнении команды
GOTO (переход к ...) – переход к подпрограмме – адрес возврата сохраняется в
регистре, причём ответственность за сохранение адреса возврата возлагается на
программиста. Для этого только имитируется команда CALL, т. е. адрес
возврата сохраняется в каком-либо регистре (если подпрограмма не вызывает
другие подпрограммы. Иначе это ведёт к усложнению работы программиста).
При возврате из подпрограммы содержимое этого регистра загружается в
программный счётчик.
в) В устройствах, где адрес возврата вообще нигде не сохраняется при
выполнении команды GOTO, – для имитации вызова подпрограммы адрес
возврата необходимо сохранить в виде переменной.
Функции – это сложные подпрограммы, при выполнении которых
определённые параметры передаются из исходной программы в подпрограмму,
а после завершения работы подпрограммы определённые параметры
передаются обратно. Передача параметров в функцию может осуществляться
различными способами.
а. Поместить параметры в стек перед вызовом функции. В подпрограмме
индексный регистр загружается значением указателя стека – и таким образом
получают доступ к параметрам. Преимущество: для передачи параметров

32
используется специально выделенный фрагмент памяти. Переменные,
определённые внутри функции, обычно называют локальными или
автоматическими, так как они используются только данной функцией, и память
для их размещения выделяется автоматически.
б. За счёт использования индексного регистра для эмуляции стека.
Аналогичный метод вызова функций используется в процессорах, не имеющих
стека. Адрес возврата можно сохранить в эмулированном счётчике.
в. Для передачи параметров, их можно сохранить в регистрах процессора
или в памяти данных в качестве специальных переменных. Но передача
параметров через регистры процессора сокращает число регистров, доступных
для выполнения функции, а сохранение параметров в виде специальных
переменных также уменьшает объём памяти, доступной для использования
программой.
Возврат параметров выполняется любым из описанных выше способов.
Но обычно значения возвращаемых параметров загружаются в регистры
процессора. Это наиболее быстрый и эффективный метод передачи данных.
Прерывания. Обработчики запросов на прерывания у
микроконтроллерных устройств проще, чем у персонального компьютера. По
запросу на прерывание основной программы, основная программа
останавливается и запускается специальная подпрограмма («обработчик
прерывания», «программа обслуживания прерывания»). Запуск программы
вызывается сигналом аппаратуры. Так как основная программа может отказать
в подтверждении прерывания и в выполнении программы обслуживания
прерывания, то в этом плане существует термин запрос на прерывание
(interrupt request). Действия при выполнении прерывания показаны на рисунке
2.7.

33
Сбросить контроллер
Обработать

Восстановить
прерывание Программа

Сохранить

Возврат
обслужива-

регистры

регистры
прерываний
ния преры-
вания

основная программа основная программа

Рис. 2.7. Выполнение прерывания

Компьютерная система может реагировать на запрос на прерывание


несколькими способами:
а. Не реагировать на запрос, пока не завершится выполнение текущей
задачи. Это реализуется путём запрещения (маскирования) обслуживания
запроса на прерывание. Такой метод обработки запросов на прерывание
используется, когда нужно обеспечить заданное время выполнения основной
программы: любое прерывание может нарушить реализацию необходимого
интерфейса.
Длительное маскирование прерываний не рекомендуется, так как в
течение времени маскирования может произойти наложение нескольких
событий, вызывающих прерывания, а распознаваться будет только одно.
Продолжительность маскирования определяется конкретным применением
МП-устройства, типом и частотой следования событий. Не рекомендуется
запрещать прерывания на время большее, чем половина минимального
ожидаемого периода следования событий, запрашивающих прерывания
(случайная величина с равномерной плотностью распределения вероятности).
б. После завершения задачи возможен один из вариантов:
1) сброс маски и разрешение обслуживания запроса, что ведёт к запуску
обработчика прерываний;
2) анализ значений битов (поллинг – polling (опрос)), указывающих на
поступление запросов на прерывание и непосредственное выполнение
программы обслуживания прерывания без вызова обработчика прерывания.

34
Обработчик прерываний выполняет нижеследующую последовательность
действий (рисунок 2.7).
1. Сохранить содержимое регистров контекста – регистров,
определяющих текущее состояние выполнения основной программы. Обычно
это состояние программного счётчика, регистры состояния и аккумулятор.
Также сохраняется содержимое индексного регистра процессора, так как он
может быть использован для обработки запроса на прерывание.
2. Сбросить контроллер прерываний и устройства, вызвавшее запрос.
После сброса контроллер прерываний готов воспринимать следующий запрос.
Если поступит новый запрос прерывания, то регистр маскирования прерываний
процессора предотвратит обработку запроса. Но регистр состояния прерываний
зафиксирует этот запрос, который будет ожидать своего обслуживания. После
завершения обработки текущего прерывания маска прерываний будет
сброшена и вновь поступивший запрос поступает на обработку.
Вложенные прерывания сложны для обработки рядом однокристальных
МП-устройств, которые не имеют стека. В устройствах со стеком они также
могут вызвать переполнение стека – у однокристальных МП-устройств
зачастую ограничен объём их памяти данных и стека.
3. Обработать данные. В микроконтроллерах обычно принимают и
сохраняют данные, и далее их используют после окончания текущей задачи.
Такой способ обслуживания запроса является компромиссом между
немедленной полной обработкой данных по запросу на прерывание, которая
может потребовать много времени, и игнорированием прерывания, что может
привести к потере информации о событии, вызвавшем запрос.
Адрес, который загружается в программный счётчик при переходе к
программе обслуживания прерывания, называется вектор прерывания. Для
различных прерываний могут быть заданы различные вектора, что избавляет
программу обслуживания от необходимости определять причину прерывания.
Использование различными прерываниями одного вектора обычно не вызывает
проблем при работе микроконтроллеров, так как чаще всего микроконтроллер
исполняет одну единственную программу. Этим МК отличается от
персонального компьютера, у которого в ходе эксплуатации могут добавляться
различные источники прерываний.
В микроконтроллере, где аппаратная часть хорошо известна, не должно
возникать проблем при совместном использовании векторов прерываний.
4. Восстановить содержимое регистров контекста. Вместе с выполнением
команды возврата из прерывания это событие переводит процессор в
состояние, в котором он находился до выполнения прерывания. Так как
содержимое регистра состояния и программного счётчика обычно

35
автоматически сохраняется, это избавляет от сохранения этих данных в памяти
программными средствами с помощью команд пересылки. А затем и от
восстановления при возврате к исходной программе.
Но такое автоматическое сохранение реализуется не во всех МП-уст-
ройствах. Если содержимое регистра состояния сохраняется перед
выполнением программы по обслуживанию прерывания, то по команде
возврата производится автоматическое восстановление регистра состояния.
Если содержимое других регистров процессора изменяется при
обслуживании прерывания, то оно должно быть также сохранено в памяти до
изменения, и затем восстановлено перед возвратом в основную программу.
Обычно принято сохранять все регистры процессора, чтобы избежать
непредсказуемых ошибок, которые трудно локализовать.
5. Вернуться к прерванной основной программе.
Выше описаны так называемые аппаратные прерывания, когда запрос
формируется аппаратной частью по какому-либо событию. Ещё существуют
программные прерывания: некоторые процессорные команды используются
для имитации программных прерываний. Обычно это вызов системных
подпрограмм, которые располагаются в произвольном месте памяти или
требуют
при обращении к ним межсегментных переходов (один сегмент равен
216 = 64 Кбайт; область памяти 232 = 4 Гбайт). Эта возможность реализована в
МП ф. Intel i86 и используется в базовой системе ввода-вывода BIOS и
операционной системе (ОС) DOS для ПЭВМ для вызова системных
подпрограмм без необходимости фиксирования точки входа.
Вместо этого используются различные вектора прерываний, выбирающие
команду для выполнения при таком программном прерывании.
Таймеры. Обычно таймеры используются для обеспечения заданной
временной задержки. Для переключения таймера используются тактовые
импульсы процессора. Загрузив в таймер начальное значение, можно отсчитать
требуемые интервалы времени, фиксируя окончание интервала по моменту
переполнения таймера. Если перед таймером включить предварительный
делитель частоты (ПДЧ), это позволит отсчитывать более длинные интервалы
времени.
Если коэффициент предварительного делителя частоты (который обычно
двоичный) равен степени двойки (2, 4, 8, 16, ...), то это может не позволить
точно отсчитать требуемый временной интервал. Точное значение можно
отсчитать путём добавления команд NOP (no operation – задание холостых
тактов процессора) или других команд, используемых для заполнения
определённых промежутков времени. Для отсчёта заданного времени таймер

36
можно очистить, а затем непрерывно сравнивать его содержимое с требуемым
значением.
Другой способ получения точного отсчёта временного интервала
таймером – это загрузить в таймер число, равное разности между его ёмкостью
и числом, требуемым для точного отсчёта. Затем ждать, когда флаг прерывания
по переполнению таймера установится в единицу.
Для задач, связанных с созданием часов реального времени, такой способ
(предварительный делитель частоты и далее таймер) использовать нельзя, так
как в момент перезагрузки таймера степень заполнения ПДЧ неизвестна и при
отсчёте времени будут возникать ошибки.
Для часов реального времени рекомендуется непрерывная работа
таймера, когда делитель частоты никогда не сбрасывается, а при переполнении
таймера – увеличивать содержимое счётчика часов реального времени. Когда
требуется узнать текущее время, программа выбирает и преобразует
содержимое этого счётчика и получает правильное значение времени. (Такой
способ используется в ПЭВМ ф. IBM, где переключение («тик») таймера
происходит 18,2 раза в секунду).
Кроме отсчёта времени, в МП-устройствах таймеры выполняют и другие
задачи. Так, если в качестве тактирующего сигнала использовать сигнал от
внешнего устройства, то можно вести подсчёт числа внешних событий.
Если микроконтроллер имеет 2 таймера, то можно реализовать подсчёт
числа событий, происходящих за единицу времени (тахометр). Программа
сбрасывает в ноль таймер подсчёта числа событий (второй таймер), затем
устанавливает определённый временной интервал для срабатывания таймера,
задающего интервал времени для подсчёта событий (первый таймер) (рису-
нок 2.8).

переполнение

тактовый Делитель час- Таймер 1


сигнал тоты
ШИНА ДАННЫХ

сигнал Таймер 2 Процессор


внешнего
события запрос на
прерывание

Рис. 2.8. Счётчик событий за интервал времени (тахометр)

37
По истечении этого интервала времени первый таймер устанавливает в
единицу бит переполнения, по которому процессор считывает содержимое
второго таймера.
Часто таймеры в МК используются для ввода-вывода сигналов с
широтно-импульсной модуляцией (ШИМ) (PWM – Pulse Width Modulated).
Сигнал имеет вид периодической последовательности импульсов с
повторяющейся формой, где длительность импульса пропорциональна
значению некоторой аналоговой величины. Такой сигнал часто используется
для управления скоростью вращения электродвигателя или положением вала в
сервоприводе (следящей системе).
На рисунке 2.9 показана схема формирования сигнала с ШИМ с помощью
МК. Пока заданное значение длительности импульса больше, чем содержимое
таймера, на выходе поддерживается высокий потенциал (вершина импульса).
Когда содержимое таймера станет равным или больше, чем заданное
значение периода следования импульсов, то таймер принудительно
сбрасывается в ноль, и далее процесс повторяется.
Этот способ формирования ШИМ-сигнала требует минимального участия
процессора. Длительность импульса может быть изменена процессором в
любое время. Такая схема может формировать последовательность импульсов
со скважностью два, для чего можно задать период в два раза большим
длительности импульса.
период сле-
дования им-
пульсов (В)
А<В
заданная дли- (выход ШИМ-
тельность им- Компаратор ко- сигнала)
пульса (А) дов

тактовый Таймер
сигнал А>В

«Сброс»

Рис. 2.9. Формирование сигнала с ШИМ с помощью микроконтроллера

Измерить длительность импульса с помощью таймера можно по схеме,


приведённой на рисунке 2.10. В схеме таймер обнуляется, пока входной

38
импульс имеет низкий уровень напряжения. Когда измеряемый импульс имеет
высокий уровень напряжения, открывается логический ключ на схеме И и
тактовый сигнал тактирует таймер.

тактирующие
импульсы
И

" Сброс" Таймер


входная после-
довательность
импульсов
данные о
Регистр длительности
импульса
«Запись» (по
срезу входного
импульса)
Рис. 2.10. Измерить длительность импульса с помощью таймера

По срезу (окончанию) входного импульса содержимое таймера (данные о


длительности импульса) записывается в регистр. Таймер опять обнуляется
низким уровнем входного сигнала до прихода следующего импульса.
Преобразование напряжения логических уровней. Если стыкуются
устройства, реализованные на ИС с различным типом логики и различным по
полярности напряжением питания (например, ЭСЛ и КМОП), то применяют
или специальные ИС преобразователей напряжения, или специальные схемы
включения. ИС преобразователей напряжения не всегда приемлемы, так как
обычно обеспечивают одностороннюю, а не двунаправленную передачу данных
и часто увеличивают стоимость разработки.
В схемных решениях приводят в соответствие пороги переключения ИС в
обоих устройствах за счёт сдвига напряжения, подключаемого к земляному
выводу, на такую величину, чтобы пороги переключения соответствовали друг
другу. Например, рисунок 2.11, для разнополярных по питанию схем сдвиг
производят на величину U* = UПЕРЕКЛ КМОП + |UПЕРЕКЛ ЭСЛ|. Если размах
напряжения между уровнями логических 1 и 0 одинаковы, то соединение
устройств производится напрямую без дополнительных компонентов. Если этот
размах напряжения у приёмного устройства больше, чем у передающего, то
соединение производится через дополнительный резистор (1–10 кОм),
ограничивающий ток по связывающему проводнику и предохраняющий
входной каскад приёмника от самовозбуждения.

39
Так как современные КМОП микропроцессорные средства потребляют
очень малую мощность от источника питания (потребляемый ток единицы –
доли миллиампера), то сдвиг напряжения можно осуществить простым
включением в цепь питания диодов. Падение напряжения на кремниевом диоде
составляет 0,7 В, а на германиевом – 0,3 В.
Выводы
Основой однокристальных МП-устройств является КМОП-схемотехни-
ческий базис. Высокая степень интеграции компонентов на полупроводниковом
кристалле позволила создать малогабаритные эффективные микроЭВМ
(микроконтроллеры). Свойства логического КМОП-ключа обеспечили работу в
широком диапазоне напряжений питания, обычно 1,2–5 В при очень малом
потреблении тока от источника питания (в зависимости от режима работы –
от единиц микроампер до десятков миллиампер). Но увеличения тактовой
частоты и избыточная сложность программ ведут к увеличению потребляемой
мощности.
Однокристальные МП-устройства в основном повторяют функиональное
содержание типового процессора ЭВМ, но с учётом ограничений на площадь
кристалла и потребляемую мощность.
Контроллерная направленность в эксплуатации в различных технических
задачах привела к тому, что ОмК стали обеспечивать выполнение
дополнительных специфических функций, поддерживающих процесс
управления в АСУ технологическими процессами.

40
UПИТ2 = UПИТ КМОП – U*

Устройство с Устройство с
ИС ЭСЛ ИС КМОП
выход
R
1–10 кОм

вход
UПИТ1 = 0 – U* сигнал
КМОП
уровень
переключения
КМОП

уровень земляного провода (0 В)


уровень рабочая точка
переключения
ЭСЛ

сигнал ЭСЛ
сигнал и порог
смещённого КМОП-
приёмника
Переключение смещённого КМОП-приёмника сигналом с
меньшим размахом «0–1» происходит за счёт того, что его
входной транзистор находится в состоянии активного
линейного усиления.

Рис. 2.11. Согласование логических уровней устройств с ЭСЛ и КМОП


интегральными схемами

Вопросы для обсуждения


1. Пути уменьшения потребляемой мощности однокристальными МП-
устройствами при увеличении тактовой частоты.
2. Минимизация времени выхода микроконтроллера из спящего режима.
3. Новые дополнительные, относительно существующих,
функциональные возможности однокристальных микроконтроллеров.

41
Контрольные вопросы
1. Опишите, что включает в себя термин «однокристальный
микроконтроллер».
2. Опишите основные свойства комплементарного логического ключа,
являющегося основой схемотехнического базиса ОмК.
3. Приведите способы инициализации интегральной схемы
микроконтроллера.
4. Расскажите о способах формирования частоты тактового сигнала ОмК
и присущих им свойствах.
5. Опишите назначение программного счётчика.
6. Дайте описание выполнения арифметических операций в АЛУ.
7. Расскажите об обработке запроса на прерывание и реализации
программы по запросу.

Список рекомендуемой литературы


1. Цифровая обработка информации на основе быстродействующих БИС /
С.А. Гамкрелидзе [и др.]; под ред. В.Г. Домрачева. – М.: Энергоатомиздат,
1988. – 136 с.
2. Горячев А.В. Микропроцессоры. Информационно-управляющие
вычислительные системы: учеб. пособие для втузов / А.В. Горячев, А.А.
Шишкевич; под ред. Л.Н. Преснухина. – М.: Высш. шк., 1984. – 120 с.
3. Шевкопляс Б.В. Микропроцессорные структуры. Инженерные решения /
Б.В. Шевкопляс. – М.: Радио и связь, 1990. – 512 с.

Список рекомендуемых периодических изданий


1. Электронные компоненты // Москва: Изд-й дом «Электроника».
2. Новости электроники // Информационно-технический журнал комп.
КОМПЭЛ: периодичность один–два раза в месяц, освещает вопросы
применения электронных компонентов.

42
3. ОСОБЕННОСТИ ОБМЕНА ДАННЫМИ
В разделе рассмотрен способ обмена данными у однокристальных
МП-устройств. Рассмотрена организация как обмена данными межу
отдельными МП-устройствами, так и организация сети однокристальных
микроконтроллеров.
Ключевые слова: порты ввода-вывода, триггер данных, триггер
управления, бит чётности, последовательный обмен, протокол обмена данными,
микроконтроллерная сеть, ведущий, ведомый, формат команды, арбитраж
запросов.
Основной интерфейс между однокристальным МП-устройством и
внешними устройствами реализуется через параллельные порты ввода-вывода
[5]. Во многих микроконтроллерах выводы этих портов служат также для
выполнения других функций – последовательного или аналогового ввода-
вывода.
В большинстве МК отдельные выводы портов могут быть
запрограммированы на ввод или вывод данных. Типичная схема подключения
внешнего вывода показана на рисунке 3.1.

Шина данных
внешний
D Триггер Q вывод
И С данных
Шина адреса Дешиф-
ратор управление
адреса выводом
D Триггер Q
И С управ-
ления

WR

И
RD
разрешение
ввода данных
Рис. 3.1. Подключение внешнего вывода в МК

При вводе данных считывается значение сигнала (0 или 1) на внешнем


выводе, а не содержимое триггера данных. Хотя некоторые МК имеют
возможность выбора между чтением данных, установленных на выходе
триггера данных или на внешнем выводе.

43
Внешний вывод в режиме ввода работает как выход с открытым
коллектором (то есть другие схемы обеспечивают ему нагрузку, подключённую
к шине питания). Внешний вывод переходит в режим вывода информации
только для выдачи «0»: ноль сначала записывается в триггер данных, а затем с
помощью триггера управления на внешнем выводе устанавливается низкий
уровень напряжения.
В современных МК обеспечивается индивидуальный доступ к триггеру
данных и триггеру управления с помощью адресной шины. Также имеются МК,
у которых внешние выводы объединены в группы по 4 или 8 разрядов, которые
программируются на совместную работу в качестве входов или выходов.
Внешний вывод также может быть использован для подачи запроса на
прерывание – в этом случае внешний вывод работает в режиме ввода
информации.
Кроме указанной схемы используются варианты подключения внешнего
вывода по схеме с открытым стоком (рисунок 3.2). Состояние внешнего
вывода будет соответствовать состоянию подключённой к нему линии шины до
тех пор, пока внешний вывод не будет переключён на работу в режиме вывода
информации и установлен в состояние «0».

внешний
управление вывод
Шина данных выводом

D Триггер Q И
И С данных
Шина адреса Дешиф-
ратор
адреса
D Триггер Q
И С управ-
ления

WR

И
RD
разрешение
ввода данных

Рис. 3.2. Подключение внешнего вывода в МК по схеме «с открытым стоком»

44
В этом случае внешний вывод соединён с землёй через МОП-транзистор,
который управляется схемой И, подключённой к выходам триггеров
управления и данных.
Такое подключение внешнего вывода позволяет создавать шины, в
которых линии объединяют выходы устройств по схеме «монтажное И»:
одноименные линии шины подключаются к напряжению питания через
резистор. Если все МОП-транзисторы (или ключи) закрыты, то на линии
высокий уровень напряжения (логическая «1»). Если же хотя бы один ключ
открыт, то на линии будет низкий потенциал (логический «0»).
Распространённый вид связи между различными системами – это
последовательный обмен: байт данных передаётся по одному проводу бит за
битом с обеспечением синхронизации между приёмником и источником
данных. Существует очень много протоколов последовательной передачи
данных, которые применяются в МП-средствах. Иногда эти протоколы
реализуются схемами, расположенными на полупроводниковом кристалле МП-
средства, что упрощает разработку различных приложений. Наиболее
распространённый вид последовательного ввода-вывода данных – это
асинхронный последовательный
обмен.
В этой форме связи байт данных пересылается как пакет, включающий
информацию о начале и конце передачи данных, а также информацию для
контроля ошибок. Первым передаётся старт-бит, указывающий на начало
передачи данных, т. е. на начало пакета. Этот бит используется приёмником для
синхронизации процесса чтения данных, которые следуют за старт-битом:
младший бит данных идёт первым.
После битов данных может следовать бит чётности (контрольный бит),
который используется для проверки правильности полученных данных. Есть
два типа проверки на чётность: проверка на нечётность (odd – нечётный)
означает, что число единиц в пакете данных, включая бит чётности, должно
быть нечётным. Например, 05516 будет иметь бит чётности равным «1», чтобы
сделать число единичных битов равным пяти, то есть – нечётным. Проверка на
чётность (even – чётный) означает, что число единичных битов должно быть
чётным: например, при передаче числа 05516 бит чётности будет равен «0».
Ряд микроконтроллеров требует определять программно значение бита
чётности и затем помещать его в регистр. Простым образом алгоритм этой
процедуры реализуется в выполнении логической операции «Исключающее
ИЛИ» (ХОR) над всеми битами передаваемого байта. Для микроконтроллера

45
8051 такая процедура выполняется с помощью нижеследующей программы для
байтовой переменной Char.
mov Count, 8 ; Записать в переменную Count число 8 для обработки
8 бит
mov А, 0 ; Записать в регистр А процессора число 0 для его очистки
P_Loop ; Метка в программе, куда выполняется возврат после
обработки каждого бита
xrl A, Char ; Операция XOR над младшими битами операндов:
регистра А и переменной Char
rrc A ; Сдвинуть циклически вправо на 1 бит регистр А, чтобы
перейти к следующему биту
djnz Count, P_Loop ; Уменьшить Count на единицу и, если результат не
равен нулю, то перейти к метке P_Loop (т. е., повторить

8 раз)
Младший бит регистра А будет содержать бит чётности (Even) для
операнда Char. Количество единичных битов вместе с битом чётности будет
чётным числом. Чтобы реализовать проверку на нечётность, необходимо
инвертировать младший бит в регистре А.
За битом чётности следует стоп-бит, который используется приёмником
для обработки конца передачи пакета.
Некоторые параметры должны быть известны при реализации обмена:
один из них – передаваемое число бит данных, которое определяется типом
приёмного и передающего устройств. Например, в телетайпах использовалось 5
бит данных, а также могут использоваться пакеты длиной до 8 бит.
Наряду с битами чётности или нечётности возможны другие варианты
контрольных битов:
– no – означает отсутствие бита чётности в пакете;
– mark – означает, что вместо бита чётности всегда передаётся 1;
– space – означает, что вместо бита чётности всегда передаётся 0.
Такие варианты контрольных битов используются редко – когда
необходимо дать приёмнику дополнительное время на обработку пакета.
Количество стоп-битов также может быть различным. Второй стоп-бит
может вводиться для той же цели, что и контрольные биты mark и space:
приёмнику даётся больше времени для обработки принятого пакета.
Основная масса современных МП-устройств использует для
асинхронного обмена формат данных 8-N-1: это передача 8 бит данных,
отсутствие бита чётности и наличие одного стоп-бита. Этого оказывается

46
достаточным для обеспечения связи между устройствами на современной
элементной базе.
Наиболее известный протокол асинхронной последовательной связи –
это протокол RS-232, являющийся международным стандартом. Здесь
асинхронный приёмник ждёт прихода старт-бита, когда на лини
устанавливается низкий уровень напряжения. Через половину времени
передачи одного бита (длительность этого интервала времени задаётся
синхросигналом) линия опрашивается. Если на линии всё ещё удерживается
низкий уровень сигнала, то приёмник ждёт ещё один период и считывает
данные (рисунок 3.3).

бит чётности
передавае-

стоп-бит
мые данные
бит 0

бит 2
бит 1

бит 3
бит 4
старт-бит

Т
Т/2

синхросигнал t
момент первого
опроса линии на
наличие на ней
«0» момент второго момент считы-
опроса линии на вания бита дан-
наличие на ней ных
«0»

Рис. 3.3. Чтение данных при асинхронном последовательном обмене

Если же на линии оказывается высокий уровень сигнала, то приёмник


считает, что произошла ошибка и данные не принимаются. Такой алгоритм
используется как при аппаратной, так и при программной реализации
асинхронного приёма данных. Программная реализация использует
программные циклы для отсчёта задержек времени. Ещё один
распространённый метод асинхронной последовательной передачи данных –
это использование кода типа «Манчестер» (manchester). Здесь передача
каждого бита данных синхронизируется импульсом, а значение бита «0» или
«1» определяется промежутком времени до следующего импульса.
После передачи заданного числа битов данных следует стоп-импульс,
а затем приём данных прекращается (рисунок 3.4).

47
передавае-

импульс
мые данные

стоп-
старт-бит
«1» «0»

t
биты данных

Рис. 3.4. Последовательный обмен данными


с использованием кода «Манчестер»
Особенность этого кодирования в том, что старт-бит качественно
отличается от «0» или «1». Это позволяет приёмнику определить, являются ли
поступающие данные началом или серединой посланного пакета: в последнем
случае данные не будут приниматься до прихода старт-бита.
Манчестерское кодирование хорошо подходит для случаев, когда поток
передаваемых данных может быть легко прерван посторонним фактором.
Поэтому такой метод является основным для связи с помощью инфракрасного
излучения.

3.1. Синхронный последовательный обмен


При синхронном обмене вместе с данными посылается синхросигнал,
который используется приёмником для стробирования (фиксации) бита данных.
Параллельное представление данных для нужд пользователя использует типовую
схему для преобразования последовательных данных в параллельные (приведена
на рисунке 3.5). Для многих приложений второй регистр можно исключить.

DD1, DD2
1533ИР37
МИКРО- О О
D0 0 D0 0
КОНТРОЛЛЕР D1 1 1
RG D1 RG
D2 2 D2 2
D3 1 1 D3
Данные 3 3
1 2 2
D4 4 D4 4
2 3 3
D5 5 D5 5
3 4 4 D6
D6 6 6
4 5 5
D7 7 D7 7

Тактовый
сигнал С С
Разрешение
считывания Е0 Е0

48
Рис. 3.5. Преобразование последовательных данных в параллельный вид

Работа схемы отражает принцип действия сдвигового регистра.


Микроконтроллер бит за битом проталкивает данные через регистр DD1 до тех
пор, пока первый бит не окажется на выходе О7. Затем микроконтроллер
переписывает полученный байт данных в регистр DD2.
Существует два основных протокола для синхронной связи: Microwire
(«микропровод») и SPI. Эти протоколы используются чаще для синхронной
последовательной передачи данных, чем для объединения устройств в единую
сеть. Они схожи, но и имеют различия.
В этих протоколах каждое устройство адресуется индивидуально, хотя
линии передачи данных и синхронизации могут быть общими для многих
устройств. Невосприимчивость устройств к передаваемым данным
определяется сигналом «разрешения выборки кристалла» (chip select): если
уровень этого сигнала для конкретного устройства не является активным, то
устройство игнорирует лини данных и синхронизации. В каждый момент
времени только одно из подключённых к шине устройств может быть ведущим
(master), то есть иметь возможность задавать режим работы шины.
Синхронный вывод данных микроконтроллером через
последовательный порт (порт ввода-вывода) происходит через встроенный в
МК сдвиговый параллельно-последовательный регистр. При выводе байта
побитно, вывод каждого бита предваряется появлением синхросигнала на
отдельном контакте МК, позволяющего приёмнику подготовиться к приёму
информации. И затем МК выдвигает из своего сдвигового регистра очередной
бит данных.
При реализации стандартов, подобных Microwire, где сначала выдаётся
старт-бит, этот бит посылается с помощью команд чтения и записи в порт
ввода-вывода. Аналогичная схема используется для приёма данных, когда
поступающие данные сначала побитно последовательно вводятся в сдвиговый
параллельно-последовательный реверсивный регистр, встроенный в
микроконтроллер, и он выставляет данные на внутреннюю шину данных МК в
параллельном виде. Затем эти данные считываются микропроцессором.
Протокол Microwire обеспечивает передачу данных со скоростью до
1 Мбит/с. В одном передаваемом пакете находится 16 бит данных. На рисунке 3.6
показана временная диаграмма для чтения 16 бит данных в этом протоколе.

49
СS (разрешение вы-
борки кристалла)
100 нс
тактовые им- t
пульсы
DI (вход дан-
ных)
DО (выход
данных)

OP1
OP2
SB (старт-бит)

A5

A2
A1
A0
A4
A3

D15
D0
Рис. 3.6. Чтение данных в протоколе Microwire
После выбора ИС следует передача:
– старт-бита SB;
– 8-разрядной команды (ОР1, ОР2, А5, А4, А3, А2, А1, А0);
– 16-разрядный адрес (не является обязательным);
– 16 бит данных.
Для максимальной скорости 1 Мбит/с период тактового сигнала равен
500 нс (частота следования импульсов равна 1 МГц, а скважность 2).
Передаваемые биты должны выдаваться на линию за 100 нс до переднего
фронта тактового импульса. Чтение данных должно происходить за 100 нс до
наступления заднего фронта тактового импульса.
Протокол SPI. Этот протокол похож на протокол Microwire, но имеет
ряд отличий:
а) SPI способен передавать данные со скоростью до 3 Мбит/с;
б) разрядность данных в SPI пакете равна 8 бит;
в) передатчик в SPI имеет возможность приостановить передачу данных;
д) данные в SPI могут передаваться в виде множества байтов, которые
называются «блок» или «страница».
Как и в предыдущем протоколе, в SPI сначала передаётся байт, который
содержит команду для принимающего устройства. Затем идёт необязательный
16-разрядный адрес, после чего следуют 8-разрядные данные.
В протоколе SPI используется симметричный тактовый сигнал
(скважность импульсной последовательности равна 2), рисунок 3.7.

50
CS (разрешение вы-
борки кристалла) 30 нс
тактовые им- t
пульсы
DI (вход дан-
ных)
DО (выход
данных)

SB (старт-бит)

15
14
13
12
11
10
17
16

D7
D0
команда

Рис. 3.7. Запись данных в протоколе SPI


При реализации протоколов Microwire и SPI наиболее простой способ
соединения – когда к одной линии подключены вход DIn и выход DOut. При
таком способе соединения микроконтроллер должен отключить свой выходной
драйвер (формирователь выходного сигнала) когда закончит последовательную
передачу данных. После этого он может принимать данные от другого
устройства (рисунок 3.8).

Микроконтрол- Синхронное устройство


лер
DevSel CS (разрешение вы-
тактовый борки кристалла)
сигнал
DIn
данные
R DOut
1–10 кОм

Рис. 3.8. Подключение входа DIn и выхода DOut к одной линии

Резистор между выводами устройств необходим для ограничения тока,


когда и микроконтроллер, и периферийное устройство выдают данные на
линию связи.

3.2. Протоколы для микроконтроллерных сетей

51
Применительно к микроконтроллерам, термин «сеть» означает набор
проводов (шины), которые используются для подключения дополнительных
устройств или для связи с другими микроконтроллерами. То есть сеть МК
отличается от локальной сети, например, такой, как EtherNet. Далее под
микроконтроллерной сетью будем понимать отдельную линию связи (провод)
и множество подключённых к ней устройств, которые могут и инициировать
передачу сообщений, и посылать соответствующий отклик на полученное
сообщение – то есть могут выступать в роли передатчика или приёмника.
В таких сетях имеется интеллектуальное устройство, которое может
инициировать передачу данных – носит название ведущий (master).
Устройства, которые только отвечают на запросы, но не могут их
инициировать, называются «ведомые» (slaves). Микроконтроллерная сеть
может иметь несколько ведущих устройств, и в этом случае сетевой протокол
требует введения схемы арбитража, которая позволит различным ведущим
устройствам передавать данные, не нарушая передачу других сообщений.
Обычно в микроконтроллерной сети передаётся небольшой объём данных
в отличие от локальных сетей ЭВМ, и их пропускная способность довольно
мала. Типовая оценка скорости – это несколько байт в секунду.
Ниже приведены наиболее часто используемые виды
микроконтроллерных сетей и основы используемых в них протоколов, что
позволяет оценить их пригодность для конкретного применения.
Наиболее популярный протокол для сети микроконтроллеров – это I2C,
который предназначен для связи устройств в многопроцессорных системах.
Стандарт разработан компанией Philips в конце 70-х годов как метод
реализации интерфейса между микропроцессорами и периферийными
устройствами, и он не требует прокладки многочисленных линий для передачи
между устройствами всех разрядов адреса, данных и сигналов управления.
Кроме того, данный протокол позволяет разделять сетевые ресурсы между
несколькими ведущими процессорами (multimastering).
Шина I2С содержит две линии: линия SDA для передачи данных и линия
SCL для передачи синхросигнала, который используется для стробирования
данных. Обе линии подключены через резисторы к шине питания, за счёт чего
на них держится высокий уровень напряжения до тех пор, пока на линию не
выставляется «0» с низким уровнем напряжения. Это позволяет нескольким
устройствам управлять их состоянием путём соединения по схеме монтажное
И. Пример организации шины I2C показан на рисунке 3.9.

52
+UПИТ

Основной про- Управляющее R


цессор устройство 1–10
кОм
Scl
(синхросигнал)
SDA
(данные)
Устрой- Устрой- Устрой- Устрой-
ство 1 ство 2 ство 3 ство 4

Рис. 3.9. Пример организации шины I2C

Двухпроводная линия используется для определения начала передачи


данных, а также для передачи самих данных. Чтобы начать передачу данных,
шина переводится в стартовое состояние, так как при отсутствии передаваемых
данных шина находится в пассивном ждущем состоянии (idle). При этом на
обе линии сигналы не поступают, и на них установлен высокий уровень
сигнала, равный напряжению питания.
Чтобы инициировать передачу данных, ведущее устройство, которое
запрашивает управление шиной, устанавливает низкий уровень сначала на
линии SDA, а затем на линии SCL (стартовое состояние). В процессе
пересылки данных такое состояние шины является нерабочим, так как приём
передаваемых данных производится только при высоком (активном) уровне
синхросигнала на линии SCL.
Чтобы закончить передачу данных, выполняются обратные действия: на
линии SCL устанавливается высокий уровень сигнала, а затем в такое же
состояние переводится линия данных SDA (рисунок 3.10).

53
Scl
(синхросигнал)

SDA
(данные) Ждущий
режим

Передаваемые

Конец передачи
Начало передачи (стар-
Ждущий

товое состояние)
режим

биты
Рис. 3.10. Форма сигналов на шине I2C

Данные передаются синхронным способом, причём первым посылается


старший бит. После передачи 8 бит ведущее устройство переводит линию
данных в «плавающее» состояние, ожидая подтверждения приёма данных от
ведомого устройства. Таким подтверждением является установка ведомым
устройством низкого уровня сигнала на линии SDA. После бита подтверждения
на обеих линиях устанавливается низкий уровень (рисунок 3.11).
Затем производится пересылка следующего байта или шина переводится
в состояние конца передачи. Это означает, что передача завершена и приёмник
может готовиться к следующему циклу пересылки данных.
Есть две максимальные скорости передачи данных по шине I2C:
стандартный режим – до 100 Кбит/с и быстрый режим – до 400 Кбит/с.
Временные диаграммы для этих режимов работы с указанием минимально
допустимых длительностей интервалов времени приведены на рисунке 3.11.

54
4,0 мкс 4,7 мкс 4,0 мкс 4,0 мкс
Быстрый режим 0,6 мкс 1,3 мкс 0,6 мкс 0,6 мкс

Scl
(синхросигнал)

SDA
(данные) Ждущий
режим
Ждущий
режим

ваемые
Переда-

передачи
состояние)
(стартовое
Начало пе-

биты

Конец
редачи

Рис. 3.11. Передача байта по шине I2C

Формат команды, передаваемой ведущим устройством ведомому,


показан на рисунке 3.12. Адрес получателя содержит 7 бит. Обычно (но не
обязательно) четыре старших бита адреса используются для указания типа
устройства, а следующие три бита используются для выбора одного из 8
устройств этого типа или служат для более точного определения типа
устройства. Иногда некоторые устройства требуют указания в качестве трёх
последних адресных бит определённых кодов, а другие (например, микросхемы
памяти EEPROM с последовательной выборкой) используют эти биты для
выбора адресата внутри устройства.

Начало Принимаемые
Адрес при- Конец
передачи R/W Ack или передавае- Ack
ёмника передачи
мые данные

Рис. 3.12. Формат передачи данных по шине I2C:


R/W – вид обмена (приём или передача); Ack – бит подтверждения.

Существует также стандарт, в котором 10-разрядный адрес передаётся


двумя байтами: в первом байте первые 4 бита содержат «1», следующий бит
имеет значение «0», последние 2 бита являются старшими битами адреса, а
завершающие 8 бит адреса передаются в следующем байте. Следует
внимательно относиться к распределению адресов между устройствами,
подключёнными к шине.
55
Первые четыре бита адреса обычно служат для определения типа
выбираемых устройств в соответствии со следующим соглашением:
0000 – «Зарезервированный адрес»;
0010 – «Синтезатор голоса»;
0011 – «Аудио-интерфейс»;
0100 – «Звуковой генератор»;
0111 – «Жидкокристаллический или светодиодный дисплей»;
1000 – «Видео-интерфейс»;
1001 – «АЦП и ЦАП-интерфейсы»;
1010 – «Последовательная память»;
1100 – «Управление радиоприёмником»;
1101 – «Часы или календарь»;
1111 – «Зарезервировано для использования 10-разрядного адреса».
В некоторых устройствах требуется посылка стартового бита, чтобы
сбросить принимающее устройство в исходное состояние для приёма
следующей команды. Например, при чтении из памяти EEPROM с
последовательной выборкой, первая команда посылает адрес ячейки, из
которой производится чтение, а вторая команда выполняет чтение данных по
этому адресу.
Когда два устройства пытаются управлять шиной одновременно –
инициировать процесс передачи данных несколькими ведущими МК
multimastering – это может привести к возникновению коллизий. Если один
МК уже взял управление шиной, установив на ней стартовое состояние, то
попытка управления шиной со стороны другого МК будет блокирована. А если
несколько МК инициирует стартовое состояние одновременно, то требуется
произвести арбитраж их запросов.
Для этого во время передачи данных оба передатчика точно
синхронизируют тактовые импульсы. Если при передаче адреса бит, который
должен иметь значение «1», на самом деле имеет значение «0», то это
указывает на то, что шина занята другим устройством. В этом случае ведущее
устройство отключается от шины и ждёт, когда наступит состояние «Конец
передачи», после которого повторяет запрос.
Протокол I2C легко реализуется программным путём, но «быстрый
режим» не может быть реализован из-за перегрузки процессора. Для некоторых
МК слишком быстр и «стандартный режим». Программная реализация
наиболее удобна когда в сети имеется только одно ведущее устройство. В этом
случае не нужно синхронизироваться с другими устройствами или принимать

56
сообщения от других ведущих устройств, работающих со слишком большой
скоростью, которая не обеспечивается при программной реализации.
Выводы
Обмен данными между однокристальными МП-устройствами ведётся при
малом объёме и, следовательно, при малых скоростях. Поэтому
микроконтроллерные сети имеют упрощённую организацию магистрали и
используют для асинхронного и синхронного обмена данными как протоколы
широкого назначения (RS-232, манчестерский код Microwire, SPI), так и
специальные протоколы для микроконтроллерных сетей типа I2С.
Формат команды, передаваемой ведущим устройством ведомому,
позволяет адресовать конкретное устройство и задать вид квитированного
обмена. Формат включает и распределение адресов между устройствами,
подключёнными к шине.
Кроме указанного, алгоритм работы протоколов позволяет провести
арбитраж запросов на захват шины для передачи данных, что предотвращает
возникновение коллизий.

Вопросы для обсуждения


1. Пути увеличения скорости обмена данными между однокристальными
МП-устройствами.
2. Оценка надёжности асинхронного и синхронного обмена данными в
микроконтроллерной сети.
3. Пути увеличения скорости обмена данными в микроконтроллерной
сети при программной реализации протоколов обмена.

Контрольные вопросы
1. Опишите, за счёт чего выводы микроконтроллера могут быть
запрограммированы на ввод или вывод данных.
2. В цепи контакта микроконтроллера для ввода-вывода есть триггер
данных. Опишите процесс считывания информации с внешней линии данных
через указанный контакт.
3. Поясните понятие «внешний вывод микроконтроллера является
«выходом с открытым коллектором». Какую функцию (и возможность)
позволяет реализовать этот вывод?
4. Опишите работу внешнего вывода микроконтроллера, выполненного
по схеме «с общим стоком», на вывод и приём данных.
5. Расскажите об асинхронном последовательном обмене между систе-
мами.

57
6. Расскажите о проверке правильности полученных данных при обмене
между системами.
7. Опишите два типа проверки на чётность: «odd» и «even».
Список рекомендуемой литературы
1. Воробьёв Н.В. Микропроцессоры. Элементная база и схемотехника
средств сопряжения: учеб. пособие для втузов / Н.В. Воробьёв, В.Д. Вернер;
под ред. Л.Н. Преснухина. – М.: Высш. шк., 1984. – 103 с.
2. Шевкопляс Б.В. Микропроцессорные структуры. Инженерные решения /
Б.В. Шевкопляс. – М.: Радио и связь, 1990. – 512 с.
3. Жан М. Рабаи, Ананта Чандракасан, Боривож Николич. Цифровые
интегральные схемы. Методология проектирования / М. Рабаи Жан,
Чандракасан Ананта, Николич Боривож. – Digital Integrated Circuits. – 2-е изд. –
М.: Вильямс, 2007.

Список рекомендуемых периодических изданий


1. Электроника НТБ // Для специалистов, занятых разработкой,
производством и применением изделий электронной техники, а также ученым,
преподавателям и студентам технических вузов. – Периодичность 6 (8) номеров
в год.
2. Журнал сетевых решений: LAN // Периодичность 12 номеров в год.
Круг вопросов, связанных с сетями и их сопряжением.

58
4. ПРОТОКОЛЫ ДЛЯ МИКРОКОНТРОЛЛЕРНЫХ СЕТЕЙ
В разделе показаны основы протокола CAN, отражена реализация
ввода-вывода аналоговых сигналов, а также методика организации
ведомых однокристальных МП-устройств. Отражены однокристальные
МП-устройства с программируемой памятью.
Ключевые слова: протокол CAN, кадр, доминантное значение,
рецессивное значение, способ ввода, АЦП, программируемая память, ведомый,
внутрисистемное программирование, бит защиты, схемный эмулятор,
программы-мониторы.
Протокол CAN (Controller Area NetWork) разработан компанией Bosch
как сетевое решение для связи компьютерных систем в автомобилях. Его
аналог – появившийся позже протокол американского стандарта J1850.
Протокол CAN удовлетворяет требованиям: скорость обмена до 1 Мбит/с;
нечувствительность к электромагнитным помехам; малое число контактов в
разъёмах; простое подключение и удаление устройств.
Протоколы обеих стандартов совпадают и основываются на первых двух
уровнях семиуровневой модели открытых систем OSI, но на электрическом
уровне эти стандарты не совместимы. Передача данных в электрическом плане
реализуется с помощью драйверов, соответствующих стандарту RS-485,
который обуславливает выдачу на линию связи дифференциального сигнала
(напряжения). Такая сеть будет работать, даже если один из двух проводников
дифференциальной линии связи (пары) закорочен или оборван. Это особенно
важно для обеспечения надёжности работы оборудования.
Протокол CAN реализуется с использованием схемы «монтажное И»,
которая используется и в шине I2C. Это позволяет выполнять арбитраж между
различными ведущими устройствами: когда выходной драйвер ведущего
устройства активен, шина переводится в низкий уровень напряжения
аналогично шине I2C. Пример реализации арбитража в протоколе CAN показан
на рисунке 4.1.
На рисунке, когда сигнал на выходе драйвера устройства не совпадает с
уровнем напряжения, установленном на линии передачи данных (например,
при выдаче напряжения логической «1» на шине оказывается напряжение
логического «0»), то драйвер останавливает передачу данных до тех пор, пока
не завершится передача текущего сообщения. Такой способ арбитража
исключает необходимость повторной посылки сообщения при возникновении
коллизии на шине.
Каждое сообщение представляет собой отдельный кадр в потоке
пересылаемых данных. Кадр передаётся как фрагмент этого асинхронного

59
последовательного потока, в котором пересылка данных не сопровождается
посылкой синхросигнала. При этом приёмник и передатчик должны работать
на одной тактовой частоте: обычно скорость обмена устанавливается в
диапазоне от
200 Кбит/с до 1 Мбит/с. Формат кадра передачи данных показан на рисунке 4.2.

состояние
ожидания
выходной
драйвер 1
выходной t несовпаде-
ние для
драйвер 2
драйвера 2
выходной несовпаде-
драйвер 3 ние для
драйвера 3
шина бит 2
бит 0
бит 1

бит 4
старт-бит

бит 3

Рис. 4.1. Арбитраж при передаче данных в протоколе шины CAN


В этом протоколе нулевое значение бита называется «доминантным»
(господствующим), а единичное значение – «рецессивным» (отступающим).

SOF RTR Ack

состояние ИДЕНТИФИ- DLC Данные (0–8 байт) CRC


ожидания КАТОР

r1/r0 EOF
Рис. 4.2. Кадр передачи данных по шине CAN с использованием 11-битного идентификатора

Различные поля кадра имеют следующее назначения:


– SOF – (Start Of Frame) начало кадра (единичный доминантный бит);
– ИДЕНТИФИКАТОР – 11-ти или 19-битный идентификатор сообщения;
– RTR – бит, указывающий, что ведущее устройство является
передатчиком данных (если RTR = 1) или приёмником данных (если RTR = 0);
– r1/r0 – зарезервированные биты, которые должны быть доминантными;
– DLC – четыре бита, которые указывают количество передаваемых байт;
– Данные – от нуля до 8 передаваемых байтов данных, где старший бит
идёт первым;
60
– CRC – 15-битный код контрольной суммы, за которым следует
рецессивный бит;
– Ack – 2-битное поле подтверждения готовности (доминантный и
рецессивный биты);
– EOF – (End Of Frame) – конец кадра (поле, содержащее не менее 7
рецессивных бит).
С целью более гибкого обеспечения обмена сообщениями, в плане
адресации в стандарте CAN устройствам не даются специфические имена или
адреса: сообщение идентифицировано использованием 11-ти или 19-битного
идентификатора сообщения.
Приведённый состав кадра протокола CAN имеет сложный формат, что
затрудняет его обработку в процессе передачи и приёма сообщения. Обработка
может выполняться как аппаратно, так и программно, но в основном
используется аппаратная реализация по стандарту CAN. Ряд производителей
встраивают CAN-интерфейс в выпускаемые микроконтроллеры. Существуют
серийно выпускаемые устройства (Intel 82527), которые эффективно и с
минимальными дополнительными затратами выполняют функции CAN-
интерфейса.

4.1. Ввод-вывод аналоговых сигналов


Часто однокристальные МП-устройства должны взаимодействовать с
аналоговыми устройствами, которые работают с непрерывными сигналами.
Появляется необходимость вводить и выводить такие сигналы. Поэтому многие
однокристальные МП- устройства содержат АЦП (ADC – Analog-to-Digital
Converter) и ЦАП (DAC – Digital-to-Analog Converter). Применяют три
способа ввода аналогового сигнала в МК:
а. С промежуточным преобразованием входной физической величины
Х (неэлектрической) в аналоговую физическую величину Y электрического
характера, которая далее преобразуется в код с помощью схемы ввода
(например, геометрическое перемещение объекта приводит к физическому
изменению положения движка потенциометра, а затем измеряется
сопротивление потенциометра).
Для определения сопротивления потенциометра к выводу цифрового
входа МК подключается RC-цепь. Сопротивление определяется путём (рису-
нок 4.3) последующего измерения времени, в течение которого потенциал на
конденсаторе остаётся больше порога переключения по входу МК. Чем больше
сопротивление, тем большее число своих тактовых импульсов будет
просчитано за время измерения.
61
перезаряд конден-
сатора (изменение дозаряд
потенциала нижней конденсато-
обкладки) ра
UПИТ t

C дозаряд до
порога пере-
порог пе-
ключения
Микро- реключе-
контрол- ния
лер потен-
R циометр
1–10 кОм
t
Рис. 4.3. Измерение сопротивления на входе МК

Для измерения, вывод параллельного порта переводится в режим выхода,


на котором устанавливается «1» (высокий потенциал). Конденсатор,
заряжённый от источника питания через потенциометр и имеющий нулевой
потенциал на нижней обкладке, быстро перезаряжается до уровня «1» на
нижней обкладке через сопротивление R, ограничивающее ток перезаряда и
предотвращающее короткое замыкание в начале перезаряда.
Когда конденсатор перезарядился, выход драйвера МК закрывается и
конденсатор возвращается в исходное состояние: заряд с нижней обкладки
стекает через потенциометр (конденсатор дозаряжается через потенциометр –
разность потенциалов между его обкладками возрастает). Измерение
заканчивается, когда напряжение на данном выводе МК упадёт ниже порога
переключения.
Для измерения этого интервала времени используется таймер МК. Для
определения времени t дозаряда конденсатора до порога переключения можно
использовать выражение: 2,2RC. Сопротивление R выбирают в диапазоне
100–200 Ом, ёмкость конденсатора – 0,1 мкФ, а сопротивление потенциометра –
10 кОм. При этом t  2,2 мс: этот интервал измеряется МК с достаточной
точностью, и такая задержка не заметна для пользователя.
Точность измерения сопротивления потенциометра мала из-за
нелинейного изменения выходного сопротивления по КМОП-выводу
интегральной схемы. Этот способ используется в случаях, когда не требуется
высокой точности или при относительных измерениях.
б. Следующий способ аналого-цифрового преобразования, обычно
используемый в МК, основан на применении аналогового компаратора
напряжения. Обычно в МК, использующих аналоговые компараторы, опорное

62
напряжение формируется внутри МК, там же делится резистивным делителем,
и требуемое значение напряжения выбирается встроенным аналоговым
мультиплексором. Управление перебором значений опорных напряжений в МК
выполняется по простым алгоритмам (например, наращивание выходного
состояния счётчика).
Выбираемое в очередном шаге перебора опорное напряжение подаётся на
опорный вход компаратора. То значение напряжения, при котором происходит
переключение выхода компаратора, соответствует значению поступающего
входного напряжения. Точность такого АЦП в МК мала, так как опорное
напряжение в них формируется с достаточно большим шагом. Например, при
3-разрядном управляющем коде, воздействующем на аналоговый
мультиплексор, имеется восемь опорных напряжений (при максимальном
входном напряжении 5 В эти опорные напряжения равны 0,7; 1,4; 2,1; 2,8; 3,5;
4,2; 4,9 и 5,6 В).
Разновидностью АЦП с применением компараторов является
параллельный метод преобразования, в котором имеется многозначная мера –
источник опорного напряжения (ИОН) с дискретом по выходному напряжению.
На каждый вход ИОН подключён вход опорного напряжения отдельного
компаратора. Другие входы всех компараторов объединены вместе и на них
поступает входной сигнал. Все выходы компараторов подключены к входам
приоритетного шифратора, на выходе которого представляется результат
преобразования в требуемом коде.
Эта разновидность АЦП самая быстродействующая по сравнению с
другими преобразователями (время преобразования определяется только
задержкой компараторов и приоритетного шифратора), но и обладает
максимальной аппаратной избыточностью и стоимостью. Например, при
выходном коде в 8 разрядов требуется 28 = 256 компараторов и т. д.
в. Третий способ аналого-цифрового преобразования – это
интегрирующий однотактный времяимпульсный АЦП (с линейной
развёрткой). В качестве опорного напряжения здесь используется сигнал
генератора линейно-изменяющегося сигнала (ГЛИН), нарастающего от нуля до
UПИТ, и компаратор.
В начале преобразования таймер сбрасывается, а затем с запуском
таймера нарастает сигнал ГЛИН. Когда напряжение ГЛИН превысит
напряжение на входе АЦП, таймер останавливается и вырабатывается сигнал
«конец преобразования» (ADC stop), который может вызвать прерывание МК.
Содержимое таймера пропорционально значению входного напряжения. Часто
ИС МК имеют возможность дать команду на выполнение преобразования,
установив соответствующее значение бита «Старт АЦП» в регистре

63
управления, а после выполнения преобразования в этом регистре
устанавливается соответствующее значение бита «Стоп АЦП».
Это высокоточный метод, но он требует относительно большого времени
на преобразование. Некоторые МК имеют встроенные ГЛИН, причём
обеспечивающие разную скорость сигнала ГЛИН при различных значениях
входного напряжения. Но при больших скоростях уменьшается точность
преобразования. Кроме того, входное напряжение может изменяться за время
преобразования. Для устранения от такой динамической погрешности на входе
применяют УВХ: его запоминающий конденсатор быстро заряжается до
значения входного напряжения, отключается от него, а запомненное значение
подвергается преобразованию.
Для обработки высокочастотных сигналов целесообразно использовать
внешний параллельный АЦП совместно с цифровым процессором сигналов
(DSP).

4.1.1. Вывод аналоговых сигналов


Аналоговый выход имеют не все МК. Обычно на их выходах
формируется только опорное напряжение, получаемое с помощью резистивного
делителя. В большинстве случаев внешние устройства, для которых требуется
создать аналоговый сигнал, обладают различными входными сопротивлениями
– от больших значений до очень малых. Тогда, согласно закону напряжения
Кирхгофа для контуров, из-за различного падения напряжения на выходном
сопротивлении аналогового выхода МК на различных внешних устройствах
будут устанавливаться различные значения напряжения, хотя выводится одно и
то же значение.
Кроме того, при больших частотах смены выходного аналогового
напряжения МК, и передаче его по линии связи внешнему устройству
достаточно сложно обеспечить согласование тракта передачи по выходному
сопротивлению источника сигнала и входному сопротивлению приёмника. Из-
за этого возникают отражения сигнала от приёмника, искажающие значение
выходного сигнала МК.
Обычно для получения выходного аналогового напряжения используются
внешние ЦАП, цифровые потенциометры, включённые как делители
напряжения, или широтно-модулированные импульсные сигналы, из которых
отфильтрована постоянная составляющая (обычно RC-цепью). Такие способы
обеспечивают высокую точность и малый дискрет установки выходного
напряжения (единицы милливольт).
Кроме этого, МК могут использоваться с развязывающим каскадом в
виде повторителя напряжения на операционном усилителе. Между МК и

64
повторителем напряжения установлен многодиапазонный резистивный
делитель напряжения, к промежуточным узлам которого подключены выходы
МК (рисунок 4.4).
Значение напряжения, поступающего на вход повторителя, зависит от
того, на каких выходах МК установлен низкий уровень напряжения
(логический «0»).

+UПИТ
МИКРО-
КОНТРОЛЛЕР
аналоговый
+ выход
Выходы

Рис. 4.4. Вывод аналогового напряжения с развязкой от нагрузки

Аналоговый повторитель напряжения на операционном усилителе


обеспечивает развязку цепи нагрузки от резистивного делителя, что
обеспечивает независимый от нагрузки коэффициент деления резистивного
делителя напряжения. Значения сопротивлений резисторов делителя выбирают
в зависимости от количества выводов МК, используемых для управления
выходным напряжением. От этой схемы нельзя получить выходное напряжение
большее, чем напряжение питания.
Даже запитав резистивный делитель от источника с напряжением большим,
чем UПИТ, заставим открыться ограничительные диоды, подключённые к выводам
выходов внутри МК. Для получения большего напряжения нужно заменить
повторитель напряжения на усилитель, тоже на операционном усилителе.

4.1.2. Однокристальные ведомые МП-устройства


Однокристальные МП-устройства могут функционировать в режиме
ведомого (slave) устройства: оно подключается к другому процессору как
периферийное устройство. В этом режиме определённое количество выводов
65
МК выделяется для связи с шиной ведущего процессора. Ведомый МК ведёт
себя как интеллектуальная специализированная ИС (ASIC), включённая в
систему, которая управляется ведущим устройством. Например, в ПЭВМ
микроконтроллер служит в качестве интерфейса клавиатуры. Это позволяет
процессору ПЭВМ просто считывать и записывать данные, не реализуя
протокол последовательного обмена с клавиатурой, который обеспечивается
микроконтроллером. Структура, показывающая использование МК в качестве
ведомого устройства, показана на рисунке 4.5.

Ведущий Ведомый
процессор Дешифратор микрокон-
Адрес троллер
адреса
RD CS
WR RD
WR
D0–D7 D0–D7

Рис. 4.5. Использование МК в качестве ведомого устройства

МК может прерывать ведущее устройство, используя одну из своих


линий ввода–вывода для подачи запроса прерывания. В ряде случаев ведомые
МК могут работать как ведущие устройства при соблюдении конкретных
заранее определённых условий.

4.2. Мп-устройства с программируемой памятью


Ряд однокристальных МП-устройств имеет электрически
перепрограммируемую память, расположенную на собственном кристалле
(EEPROM). Особенность таких устройств – это необходимость
программирования их памяти.
EEPROM (Electrically Erasable Programmable Read Only Memory) –
это память, в которой информация стирается с помощью электрического
сигнала. Программирование памяти МК идёт в следующем порядке:
– в регистр программатора загружаются данные, которые необходимо
записать в память;
– проводится пересылка данных по необходимому адресу и запись
данных в выбранную ячейку памяти;
– выполняется верификация (проверка правильности записанного зна-
чения).

66
Однако этот процесс требует значительного расхода энергии, который
выражается в необходимости приложения относительно большого напряжения
(30 В) и длительности импульса стирания более десятка микросекунд.
Программирование устройства занимает время от нескольких секунд до
нескольких минут, в зависимости от объёма данных и алгоритма
программирования.
Лучшие характеристики имеет EEPROM, впервые разработанная фирмой
Intel в 1989 году и получившая название Flash EEPROM (или Flash Memory) –
флэш-память. Основные преимущества по сравнению с EEPROM – достаточно
высокое быстродействие, малая длительность процесса стирания информации.
Микросхемы современной флэш-памяти имеют время доступа при чтении не
более 35 нс.
Поэтому существуют устройства, которые не требуют оборудования для
программирования. Они имеют встроенный аппаратно-программный блок,
заменяющий внешнее оборудование для программирования (кроме источника
повышенного напряжения, требуемого для программирования).
Кроме этого, существуют МК, которые допускают его программирование
после установки его же в некоторую систему (внутрисистемное
программирование – ISP). То есть, такой МК может быть смонтирован на
плату с пустой памятью программ, которая затем может быть
запрограммирована без влияния на остальные компоненты схемы.
Использование ISP-микроконтроллеров избавляет от необходимости в
специальном программаторе, а это, в свою очередь, даёт возможность
обновлять программное обеспечение без изменения расположенных на плате
аппаратных средств. В производстве так создаётся запас готовых изделий,
которые могут легко модифицироваться в соответствии с новыми
требованиями к ним.
МК могут содержать специальные средства для защиты своего
программного кода. Эти средства предотвращают считывание хранящихся в
них программ. Часто такая возможность реализуется путём установки
определённого значения конфигурационного бита в процессе
программирования. Обычно значение этого бита может быть изменено только в
процессе программирования содержимого памяти МК, например, при
ультрафиолетовом стирании содержимого EPROM (ППЗУ).
Установка бита защиты не может гарантировать абсолютную защиту
загруженного программного кода. Встроенная защита не может предотвратить
все возможности считывания программного кода спецоборудованием. Для
затруднения считывания некоторые МК имеют аппаратные блоки, которые
позволяют сначала зашифровывать записываемые программы путём

67
перемешивания команд, а затем преобразовывать перемешанные данные в
поток команд процессора.
Для отладки проектируемых устройств и для входящих в их состав МК
выпускаются схемные эмуляторы (ICE – In-Circuit Emulator). Эмуляторы
физически заменяют МК в проектируемом устройстве и реализуют интерфейс
разработчика с данным устройством. Этим обеспечивается доступ к
аппаратным средствам и программному обеспечению.
Ряд эмуляторов выпускается интегрированными с системой разработки
программного обеспечения (редактор и компилятор), давая возможность
производить отладку в режиме реального времени. В этом случае исключены
задержки, связанные со стиранием при перепрограммировании памяти или
последовательным вводом-выводом, в том числе на светодиодные индикаторы
для определения текущего состояния МК.
Ряд МК содержат последовательные интерфейсы, предназначенные для
отладки приложений. Эти интерфейсы позволяют считывать и записывать
содержимое регистров, памяти программ и данных, а также обеспечивают
управление работой устройства в режиме удалённого доступа, в том числе и
считывания содержимого памяти данных. Это позволяет контролировать ход
выполнения программы.
При использовании этого интерфейса со специализированной
многофункциональной управляющей программой, он может заменить схемный
эмулятор при отладке ПО и комплексной отладке работы всего устройства.
Интерфейсы такого типа обычно реализуются в сложнофункциональных МК,
но встречаются и в простых вариантах. Для отладки также применяются
специальные программы-мониторы, выполняющие ряд простых функций:
– запуск программы;
– останов и модификация кода программы;
– чтение и модифицирование содержимого регистров и памяти данных;
– пошаговое выполнение программ и остановка в контрольных точках.
Этот вариант отладки используется в МК при наличии большого объёма
памяти. Некоторые контроллеры содержат встроенную программу-монитор.
Наиболее эффективное применение микропроцессорных компонентов
наблюдается в случаях, когда эффективно взаимодействуют аппаратное и
программное обеспечения. Понимание того, как программируется устройство,
не менее важно, чем понимание того, как работают аппаратные интерфейсы.
Системы на базе однокристальных МП-средств используют единство
программного и аппаратного обеспечения. Объединение инструментальных
средств разработки ПО с инструментальными средствами разработки
аппаратного обеспечения очень важно при проектировании устройств. Для

68
разработки приложений на базе МК используют следующие основные
инструменты: редактор исходных текстов; компилятор-ассемблер;
программный симулятор; аппаратный эмулятор; программатор. Каждый из этих
инструментов может исполняться в отдельности, но их совместное
использование упрощает разработку и отладку приложения.
Редактор исходных текстов используется для создания исходного кода
программы. Простые редакторы просто копируют код, вводимый с клавиатуры,
в файл. Специализированные редакторы позволяют реагировать на нажатие
конкретных клавиш определённым образом, что может программироваться
пользователем. Например, такой редактор может иметь программу, которая
обрабатывает нажатия клавиш клавиатуры, и обеспечивает специальные виды
отклика в различных ситуациях. Так ввод оператора if может сопровождаться
откликом, воспроизводящим формат языка для этого оператора. Это избавляет
от ошибок в синтаксисе оператора.
Компилятор-ассемблер используется для преобразования исходного
текста в ассемблерные команды микроконтроллера и затем в формат, который
может быть загружен в память программ. Интерфейс компилятора-ассемблера
обеспечивает взаимодействие между редактором компилятором-ассемблером.
Он может передавать информацию об ошибках компиляции и отображать
неправильные строки на дисплее (например, выделение их цветом в исходном
тексте), что делает процесс разработки простым и эффективным. Такой
интерфейс фактически производит комплексную обработку исходного текста.
Симуляторы – это программы, которые выполняют откомпилированный
программный код в инструментальном компьютере системы разработки (host –
главный компьютер, ведущий узел в сети) таким образом, как если бы он
выполнялся в выполнялся в реальной целевой системе (target). Это позволяет
наблюдать за программой и реакцией МК на различные события. Симулятор
позволяет исследовать различные ситуации, которые трудно воспроизвести на
реальной аппаратуре.
Для имитации внешних условий и ситуаций используется специальный
файл входных воздействий. Файл задаёт последовательность входных
сигналов (тест), поступающих на моделируемое (симулируемое) устройство.
Разработка теста занимает много времени, но его использование позволяет
выявить, как работает МК и программа в определённых ситуациях. Если
устройство не работает ожидаемым образом, в тест вносят изменения, чтобы
выяснить, в чём заключается проблема. Симулятор позволяет наблюдать за
процессом выполнения программы в отличие от реальной аппаратуры, где
видны только конечные результаты.

69
Существуют графические симуляторы: они позволяют вместо изменений
в файле входных воздействий (тесте) имитировать подключённое к МК
оборудование. Такой симулятор экономит время, затрачиваемое на разработку
тестов: он позволяет быстро испытать разные комбинации входных сигналов,
чтобы выявить ошибку и найти её причину. Нужно помнить, что симуляторы не
обеспечивают выполнение программы в режиме реального времени. Но и
нужно помнить, что существенно легче производить отладку ПО используя
исходный текст, а не файлы, сгенерированные компилятором: следить за
выполнением программы с помощью исходного текста проще, чем
контролировать скомпилированный код. Этот метод называется символической
отладкой.
Схемный эмулятор – это специальная схема, реализующая интерфейс с
МК в реальном масштабе времени (emulator – подражатель, последователь).
Эмулятор использует интегральную схему МК, подключённую не к ПЗУ, а к
ОЗУ программ, и вся схема в целом выполняет прикладные задачи с реальной
скоростью. Многие эмуляторы могут использоваться для записи команд,
выполняемых процессором в определённое время – это позволяет уяснить, как
реагирует процессор на данную ситуацию. Схемные эмуляторы имеют
высокую стоимость. Они электрически соединяются с отлаживаемой системой,
что должно выполняться по правилам технической эксплуатации эмулятора. Но
в практике такие устройства являются мощным инструментом для разработки
приложений.
Программатор используется для записи программ в память программ
МК. Много МК выпускаются с масочно-программируемой памятью программ.
Интегральные схемы ROM (ПЗУ) в отечественной литературе называют также
масочными постоянными запоминающими устройствами, т. е. устройствами
программируемыми однократно изготовителем микросхем по способу
заказного фотошаблона (маски).
В качестве запоминающих элементов в них используются диоды,
биполярные транзисторы, биполярные транзисторы с диодами Шотки, МОП-
транзисторы, КМОП-ключи. Запись информации осуществляется методом
включения ЗЭ в требуемое перекрытие матрицы с помощью сменной маски при
изготовлении кристалла. Из всех методов записи информации в ПЗУ этот метод
отличается наибольшей простотой изготовления, и, следовательно, самой
низкой стоимостью при массовом производстве. Поэтому такая память широко
используются в качестве носителей постоянных программных кодов, кодов
физических констант, кодов символов жидкокристаллических индикаторов и т.
д. Занесение в них информации нередко называют «прошивкой».

70
Основу масочных ПЗУ составляют матрица ЗЭ на многоэмиттерных
транзисторах (рисунок 4.6), адресные формирователи (АФ), дешифратор адреса
DС, мультиплексоры MUX, усилители считывания (УСч) и устройство
управления (УУ). Адресные входы А разделены на две группы. Первая группа
(1, 2, …k) адресных входов через АФ и DC выбирает один из 2k
многоэммитерных транзисторов матрицы ЗЭ. В свою очередь, каждый
транзистор имеет 2k эмиттеров, так как обычно матрица ЗЭ имеет равное число
горизонтальных и вертикальных шин. Поэтому число разрядных шин также
равно 2k.

Рис. 4.6. Схема масочного ПЗУ на биполярных транзисторах

Чтение информации. Значение бита информации, хранящегося в данном


ЗЭ, зависит от того, есть ли связь данного эмиттера с разрядной шиной или нет.
Коллекторный ток выбранного транзистора проходит через эмиттеры только в
те разрядные шины, которые связаны с эмиттерами транзисторов, создавая
положительные напряжения на этих разрядных шинах, в то время как на
разрядных шинах, не связанных с эмиттерами транзисторов, напряжение равно
нулю.
Разрядные шины, разделенные по числу выходов на m групп, по одной
из каждой группы выбираются мультиплексорами MUX в соответствии с кодом
второй группы адресных входов (k + 1), … , n и подключаются к усилителям
считывания. Так как во второй группе имеется (n – k) адресных входов, то к
каждому мультиплексору подключаются 2n–k разрядные шины.
В зависимости от числа входов разрешения выбора кристалла CS
устройство управления представляет собой либо буферный каскад при одном
71
входе CS, либо дешифратор старших разрядных битов (k + 1, k + 2, … n)
адресного слова А.
Иногда на выход БИС масочных ПЗУ включают выходной регистр,
тактируемый внешним сигналом. Этот регистр позволяет устранить зону
неопределенности в выходном сигнале БИС, обусловленную временем выборки
информации от подачи адресного сигнала до появления на выходе выбранной
информации.
Запись информации в эти ПЗУ производится на одном из последних
этапов изготовления БИС с помощью сменного шаблона металлизации
различными способами. Масочные ПЗУ обладают высокой надежностью
работы, самой низкой стоимостью при массовом производстве, минимальным
объемом при заданной информационной емкости, устойчивы к внешним
электромагнитным полям.
Также выпускаются МК с E(E)PROM памятью для разработки
приложений. То есть существует возможность непосредственного
программирования МК при разработке приложения.
Микросхемы многократно перепрограммируемых ПЗУ EPROM (РПЗУ)
способны к многократному (примерно 100 раз) перепрограммированию самим
пользователем. В микросхемах РПЗУ запись информации осуществляется
электрическими сигналами, а стирание – либо ультрафиолетовым излучением
(в отечественной литературе их сокращенно называют УФ РПЗУ), либо
рентгеновским излучением (значительно менее распространены).
Микросхемы УФ РПЗУ имеют ЗЭ, построенный на транзисторе МОП с
плавающим двойным затвором. Это n-МОП транзистор, у которого в
подзатворном однородном диэлектрике SiО2 сформирована изолированная
проводящая область из металла или поликристаллического кремния
(плавающий затвор).
Микросхемы репрограммируемых ПЗУ с электрическим стиранием
EEPROM – в них и запись и стирание информации осуществляется
электрическим способом (многократное перепрограммирование). Второй
отличительной особенностью микросхем EEPROM от микросхем EPROM
является значительное число перепрограммирования (до 106 циклов). В них
используется МНОП-транзистор: отличается от обычного МОП–транзистора
двухслойным подзатворным диэлектриком. На границе диэлектрических слоев
возникают центры захвата заряда. Благодаря туннельному эффекту носители
заряда могут проходить через тонкую пленку окисла и скапливаться на границе
раздела слоев (5–8 нм). Этот заряд и является носителем информации,
хранимой МНОП-транзистором. Преред перепрограммированием в них
информация стирается во всех ЗЭ.

72
В режиме программирования осуществляется запись только логического
нуля. Для этого на управляющий затвор, исток и сток подают импульс
положительного напряжения. В обратно смещенных p-n-переходах возникает
лавинный пробой, область которого насыщена электронами. Часть электронов
проникает в плавающий затвор. Снятие высокого программирующего
напряжения восстанавливает обычное состояние областей транзистора и
запирает электроны в плавающий затвор. Заряженный электронами, он
увеличивает пороговое напряжение включения транзистора.
В режиме стирания информации, при котором осуществляется удаление
заряда из плавающего затвора, осуществляется подача на управляющие затворы
нулевого напряжения, а на стоки – напряжения программирования. В режиме
стирания ЗЭ записывается логическая «1». Режим чтения аналогичен режиму
чтения в УФ РПЗУ.
Интерфейс традиционных микросхем EEPROM имеет временную
диаграмму режима программирования с большой длительностью импульса, что
не позволяет непосредственно использовать сигнал записи системной шины.
Более современные микросхемы имеют более сложную внутреннюю структуру,
в которую входит управляющий автомат. Это позволяет упростить внешний
интерфейс, делая возможным непосредственное подключение к
микропроцессорной шине, и скрыть специфические вспомогательные операции
стирания и верификации после программирования.
Для МК используются как специальные программаторы, так и возможности
внутрисистемного программирования ISP. Во втором случае программатор –
часть проектируемого устройства. Некоторые программаторы реализуют
функции схемного эмулятора. При этом установленный в программаторе МК
подключается к отлаживаемой системе и управляет её работой аналогично
тому, как это выполняется в эмуляторе.
Выводы
Гибкое обеспечения обмена сообщениями в сети ОмК обеспечивается
усложнёнными стандартами (например, CAN). По таким протоколам кадры
имеют сложный формат, что затрудняет его обработку, которая может
выполняться как аппаратно, так и программно. Производители встраивают
интерфейс в выпускаемые микроконтроллеры.
Ввод и вывод аналоговых сигналов из ОмК производится по упрощённым
известным схемотехническим решениям – АЦП, ЦАП и базовым схемам на
основе операционных усилителей.
Активно развивается программный инструмент отладки ОмК систем.
Контроллеры содержат встроенные программы-мониторы, эффективно
взаимодействуют аппаратное и программное обеспечения, используется

73
единство программного и аппаратного обеспечения. Объединяются
инструментальные средства разработки ПО с инструментальными средствами
разработки аппаратного обеспечения.

Вопросы для обсуждения


1. Пути увеличения точности АЦП и ЦАП однокристальными
МП-устройствами.
2. Перспективы применения флэш-памяти в запоминающих устройствах
ОмК.
3. Положительные и затратные стороны применения «файлов входных
воздействий», используемых для моделирования (симуляторы) при отладке
устройств на основе ОмК.

Контрольные вопросы
1. Приведите основные черты протокола САN для компьютерных
контроллерных сетей.
2. Расскажите об адресации в стандарте контроллерных сетей CAN.
3. Охарактеризуйте способ контроллерного аналого-цифрового
преобразования с промежуточным преобразованием входной физической
величины.
4. Опишите способ контроллерного аналого-цифрового преобразования с
аналоговым компарированием напряжения.
5. Расскажите об интегрирующем однотактном времяимпульснм аналого-
цифровом преобразовании.
6. Приведите схему и опишите работу МК в качестве ведомого устройства.
7. Опишите основные технологии и способы в схемотехнике памяти
микроконтроллерных устройств.

Список рекомендуемой литературы


1. Сташин В.В. Проектирование цифровых устройств на
однокристальных микроконтроллерах / В.В. Сташин, А.В. Урусов, О.Ф.
Мологонцева. – М.: Энергоатомиздат, 1990. – 224 с.
2. Варламов И.В. Микропроцессоры в бытовой технике / И.В. Варламов,
И.Л. Касаткин. – М.: Радио и связь, 1990. – 104 с.
3. Системы на кристалле. Проектирование и развитие. – М.: Техносфера,
2004. – 160 с.
4. Уэнделл Одом. Компьютерные сети. Первый шаг / Одом Уэнделл. – М.:
«Вильямс», 2005. – 432 с.
74
Список рекомендуемых периодических изданий
1. Журнал сетевых решений: LAN // Периодичность 12 номеров в год.
Круг вопросов, связанных с сетями и их сопряжением.
2. C++Builder. Программирование для профессионалов // Выходит 12 раз
в год. Посвящён тонкостям программирования, решению сложных задач,
новым перспективным технологиям программирования,
слабодокументированным возможностям C++Builder, особенностям новых
версий продукта и перспективам его развития.

5. СЕМЕЙСТВО ОДНОКРИСТАЛЬНЫХ
КОНТРОЛЛЕРОВ MCS-51
В разделе описано семейство однокристальных микропроцессорных
устройств MCS-51 фирмы Intel, дана обобщенная архитектура семейства,
приведён типовой способ использования, показана система памяти
микроконтроллера 8xC51Fx.
Ключевые слова: микроконтроллер MCS-51, синхронизация, цикл
записи, цикл чтения, внешняя память программ, начальная установка, регистр
специальных функций, слово состояния программы, система команд, режимы
адресации, набор команд.
Семейство 8-разрядных микроконтроллеров MCS-51 было выпущено
фирмой Intel в начале 80-х годов. Микроконтроллеры являются функционально
завершенными однокристальными изделиями с Гарвардской архитектурой,
содержащими все необходимые узлы для работы в автономном режиме, и
предназначенными для реализации различных цифровых алгоритмов
управления. На сегодняшний день семейство MCS-51 содержит несколько
десятков типов ИС, отличающихся конкретной реализацией отдельных узлов и
условиями эксплуатации. Все ИС семейства обладают аналогичной
архитектурой и имеют целый ряд общих узлов. Структура микроконтроллера
MCS-51 приведена на рисунке 5.1 [10].

75
Рис. 5.1. Структурная схема микроконтроллера MCS-51
Общими узлами у всех микроконтроллеров семейства являются:
а) 8-разрядный центральный процессор (ЦП), ориентированный на
управление исполнительными устройствами. ЦП имеет встроенную схему 8-
разрядного аппаратного умножения и деления чисел. Наличие в наборе команд
большого числа операций для работы с прямоадресуемыми битами дает
возможность говорить о так называемом «булевом процессоре»;
б) внутренняя память программ масочного или репрограммируемого
типа, имеющая для различных кристаллов объем от 4-х до 32 Кбайт. В
некоторых версиях она отсутствует;
в) не менее чем 128-байтное резидентное ОЗУ данных, которое
используется для организации регистровых банков, стека и хранения
пользовательских данных;
д) не менее 32-х двунаправленных интерфейсных линий (портов),
индивидуально настраиваемых на ввод или вывод информации;
е) два 16-битных многорежимных счетчика–таймера, используемых для
подсчета внешних событий, организации временных задержек и тактирования
коммуникационного порта;
ж) двунаправленный дуплексный последовательный коммуникационный
порт, предназначенный для организации каналов связи между
микроконтроллером и внешними устройствами;
и) двухуровневая приоритетная система прерываний, поддерживающая не
менее 5-ти векторов прерываний от внутренних и внешних источников;

76
к) встроенный тактовый генератор.
Центральный процессор микроконтроллеров MCS-51 имеет следующие
технические характеристики:
– разрядность АЛУ 8 бит;
– число выполняемых команд 111;
– длина команд один, два или три байта;
– число регистров общего назначения (РОН) 32;
– число прямоадресуемых битовых переменных 128;
– число прямоадресуемых битов в области регистров специальных
функций 128;
– максимальный объем памяти программ 64 Кбайта;
– максимальный объем памяти данных 64 Кбайта;
– максимальный объем внутренней памяти данных 256 байт;
– время выполнения команд при тактовой частоте 12 МГц:
1) сложение – 1 мкс;
2) пересылки «регистр–внешняя память данных» – 2 мкс;
3) умножение–деление – 4 мкс.
– методы адресации регистровый, косвенный, прямой, непосредственный.
Различные микроконтроллеры семейства содержат широкий набор
дополнительных средств для эффективной обработки асинхронных событий,
измерения частот и временных интервалов, обработки аналоговых сигналов,
управления двигателями, организации мультипроцессорных систем. В общем,
БИС семейства MCS-51 – это 8-разрядная ОмЭВМ. ПЗУ, ОЗУ, регистры
специального назначения, АЛУ и внешние шины имеют байтовую
организацию. Двухбайтовые данные используются только регистром-
указателем (DPTR) и счетчиком команд (РС). Также регистр-указатель данных
может быть использован как двухбайтовый регистр DPTR или как два
однобайтовых регистра специального назначения DPH и DPL. Счетчик команд
всегда используется как двухбайтовый регистр.
Типичным представителем контроллеров подсемейства 80xC51Fx
является интегральная схема 83C51FA.
Синхронизация микроконтроллера: опорным интервалом времени, на
котором основана синхронизация работы всего микроконтроллера, является
машинный цикл. Машинный цикл имеет фиксированную длительность и
содержит 6 состояний S1–S6, каждое из которых по длительности
соответствует такту, и, в свою очередь, состоит из двух временных интервалов,
определяемых фазами P1 и P2 (рисунок 5.2). Длительность фазы равна периоду
следования внешнего сигнала синхронизации.

77
Рис. 5.2. Наполнение машинного цикла во времени

Таким образом, каждый машинный цикл состоит из 12 периодов входного


тактового сигнала и при частоте последнего 12 МГц (период 83,33 нс)
составляет 1 мкс (83,33 нс × 12 = 1 мкс). Дважды за один машинный цикл
формируется сигнал ALE (Address Latch Enable – разрешение защёлкивания
адреса) для защёлкивания разрядов адреса (A8–А15) при операциях с
внешними устройствами и с внешней памятью (при мультиплексировании 16
битной шины адреса через 8-разрядный порт).
Входной тактовый сигнал вырабатывается либо встроенным тактовым
генератором микроконтроллера при подключении к его выводам кварцевого
резонатора или LC-цепочки, либо внешним источником тактовых сигналов
(рисунок 5.3).

Рис. 5.3. Подключение навесных элементов, определяющих тактовую частоту

В случае LC-цепочки частота синхросигнала определяется выражением

f  1/ 2 LC .
Внешний интерфейс микроконтроллера. Внешний интерфейс
микроконтроллера предназначен для организации взаимодействия его с
внешней памятью программ и данных и устройствами ввода-вывода. Обмен
данными осуществляется по внешней мультиплексной магистрали
микроконтроллера. Эта магистраль использует выводы порта P0 для выдачи
младшего байта адреса и чтения-записи байта данных, а выводы порта P2 – для
78
выдачи старшего байта адреса. Обращение к внешней памяти данных требует
двух машинных циклов, поэтому второй импульс ALE внутри машинного
цикла при обращении к внешней памяти данных не генерируется.
Цикл чтения из внешней памяти данных (рисунок 5.4). По заднему
фронту сигнала ALE младший байт адреса, поступающий с выводов порта P0,
должен быть зафиксирован во внешнем регистре-защелке.

Рис. 5.4. Организация (протокол) цикла чтения из внешней памяти данных


Старший байт адреса держится на выводах порта P2 в течение всего
цикла и не требует внешней фиксации. Данные считываются в фазе P1
состояния S3 текущего машинного цикла. К этому моменту они должны быть
заведомо установлены на шине данных.
Цикл записи во внешнюю память данных (рисунок 5.5).

Рис. 5.5. Организация (протокол) цикла записи во внешнюю память данных

При обращении к внутренней памяти данных сигналы RD и WR не


вырабатываются. Однако сигнал ALE вырабатывается всегда.
Для обращения ко внешней памяти программ используется механизм
отличный от механизма обращения к памяти данных. Для фиксации слов
79
программы используется специальный сигнал PSEN. При этом сигналы ALE и
PSEN вырабатываются дважды за машинный цикл. Если второй выбираемый
байт в команде не используется, то он игнорируется. При переходе к
выполнению следующей команды он будет считан вторично.
Цикл чтения внешней памяти программ представлен на рисунке 5.6.

Рис. 5.6. Организация (протокол) цикла чтения внешней памяти программ


Так же, как и в случае памяти данных, младший байт адреса должен быть
зафиксирован во внешнем регистре по заднему фронту сигнала ALE. Байты
программы считываются в фазе P1 состояний S4 и S1 текущего машинного
цикла. При обращении к внутренней памяти программ сигнал PSEN не
генерируется.
Работа с внешней памятью программ разрешена лишь при низком уровне
на входе EA. При этом микроконтроллер считает, что вся память программ
расположена во внешней памяти. При высоком уровне сигнала на входе ЕА
микроконтроллер реализует цикл обращения к внешней памяти программ лишь
в случае, если требуемый адрес выходит за пределы внутреннего сегмента
памяти программ. Если в ИС прошит бит секретности, то уровень сигнала на
входе EA фиксируется при сбросе микроконтроллера во внутренней защелке и
дальнейшее его изменение не влияет на работу системы.
Начальная установка (аппаратный сброс) производится с целью запуска
или перезапуска микроконтроллера после подачи на него напряжения питания.
Сброс осуществляется подачей на вход RESET высокого уровня и удержания
его в течение не менее двух машинных циклов. Этот сигнал может подаваться
асинхронно по отношению к внутреннему тактированию. Вход RESET
постоянно опрашивается микроконтроллером в момент S5 фаза P2 каждого
машинного цикла.

80
После сигнала сброса порты ввода-вывода находятся в неизменном
состоянии в течение 19-ти периодов тактирования, после чего в промежутке
между 19-м и 31-м тактом переводятся в начальное «единичное» состояние.
При этом сигналы ALE и PSEN находятся в неактивном высоком состоянии.
По сигналу сброса микроконтроллер устанавливает все служебные
регистры в начальное состояние. На содержимое внутренней памяти данных
сигнал RESET не влияет. При включении питания она устанавливается в
произвольное состояние. Длительность сигнала RESET должна быть не
меньше времени, необходимого для запуска внутреннего тактового генератора,
плюс два машинных цикла.
В свою очередь, время установки генератора зависит от частоты
синхронизации и добротности кварцевого резонатора. При частоте 10 МГц оно
обычно составляет около 1 мкс. Для автоматического рестарта после подачи
напряжения питания к выводу RESET необходимо подключить RC-цепочку,
обеспечивающую требуемую задержку, позволяющую генерировать одиночный
импульс сброса.
После снятия сигнала RESET проходит от одного до двух тактовых
периодов до активизации ИС. При этом микроконтроллер начинает выполнять
программу с адреса 000016 внутренней либо внешней памяти программ (в
зависимости от уровня сигнала EA).
Удержание выводов ALE и PSEN в активном (нулевом) состоянии при
активном сигнале RESET приводит к переводу всех выводов ИС в
высокоимпедансное состояние (режим ONCE). Этот режим используется для
отладки системы.

5.1. Организация памяти микроконтроллера 8xc51fx


 Все микроконтроллеры семейства MCS-51 имеют Гарвардскую
архитектуру, т. е. раздельное адресное пространство программ и данных. Это
позволяет осуществлять доступ к памяти данных по 8-битным адресам, что
способствует более быстрой обработке данных в ЦП. Также возможно
использование и 16-битных адресов данных.
Программная память доступна только по чтению. Общий объем ее
адресного пространства составляет 64 Кбайта. В различных версиях МК может
присутствовать до 32 Кбайт внутренней памяти программ. При обращении к
этим областям памяти используются циклы обмена по внутренней магистрали
микроконтроллера. При необходимости можно расширить память программ за
счет внешнего ПЗУ. Карта памяти программ представлена на рисунке 5.7.

81
Рис. 5.7. Карта программной памяти

После сигнала RESET микроконтроллер начинает выполнение


программы с адреса 000016 либо внешней, либо внутренней памяти программ, в
зависимости от состояния сигнала EA.
Память данных доступна как по чтению, так и по записи. Общий объем
ее адресного пространства составляет 64 Кб. Адрес может иметь размер один
или два байта. Однобайтная адресация часто используется при страничной
организации ОЗУ. Карта памяти данных показана на рисунке 5.8.

Рис. 5.8. Карта памяти данных

Внутренняя память данных может быть разделена на три условных блока –


нижний, верхний и пространство регистров специальных функций (SFR)
(рисунок 5.9).

82
Рис. 5.11. Карта внутренней памяти данных

Внутренняя память данных всегда адресуется байтом, что подразумевает


256 байт адресного пространства. Однако, фактически можно обращаться к
384-м байтам. Прямая адресация ячейки с адресом свыше 7F16 осуществляет
доступ к области регистров специальных функций, а косвенная – к верхней
области внутренней памяти данных. Т. о., эти две области занимают одно и то
же адресное пространство, хотя и разделены физически. Все байты в нижней
128-байтной половине внутренней памяти данных могут адресоваться как
прямо, так и косвенно.
Первые 32 байта в нижней области внутреннего ОЗУ сгруппированы в
4 банка по 8 регистров. Инструкции программы могут оперировать с ними как с
регистрами общего назначения R0–R7. Два бита регистра PSW определяют,
какой из банков используется в текущий момент. Это позволяет более
эффективно использовать память программ, поскольку регистровые
инструкции короче, чем прямая адресация. Переключение регистровых банков
эффективно заменяет операции сохранения регистров в стеке на время
обработки прерывания.
Следующие за регистровыми банками 16 байт образуют блок побитно
адресуемого пространства. Набор инструкций MCS-51 содержит широкий
выбор операций над битами, а 128 бит (16 байт по 8 бит) в этом блоке могут
быть прямо адресованы. Битовые адреса имеют значения от 0016 до 7F16.
Для 16-ти адресов в пространстве SFR имеется возможность как битовой,
так и байтовой адресации. Побитово адресуемыми регистрами являются те, чей
шестнадцатеричный адрес заканчивается на «0» или «8». Битовые адреса в этой

83
области располагаются со значения 8016 по FF16. Наиболее часто
используемыми регистрами специальных функций являются:
– аккумулятор (байтовый адрес 0E016). Используется во всех
арифметических и логических операциях в качестве операнда;
– регистр B (байтовый адрес 0F016). Используется при операциях
умножения и деления, а также как сверхоперативный регистр;
– слово состояния программы PSW (байтовый адрес 0D016). Содержит
информацию о состоянии программы;
– указатель стека (байтовый адрес 08116). Используется для указания на
вершину стека в операциях записи в стек и чтения из него. По аппаратному
сбросу устанавливается в значение 0716 (область стека в этом случае начинается
с адреса 0816) и инкрементируется при каждой записи в стек. Запись в SP
производится для предопределения положения стека во внутренней памяти
данных микроконтроллера;
– указатель данных DPTR (байтовые адреса 08216, 08316). Состоит из двух
байт: старшего DPH и младшего DPL. Используется как 16-ти или 8-битовый
указатель адреса при обращении к внешней памяти или выполнении команды
перехода по косвенному адресу.
Слово состояния программы PSW содержит ряд статусных битов,
отражающих текущее состояние процессора (таблица 5.1).
Таблица 5.1
Формат PSW
PSW.7 PSW.6 PSW.5 PSW.4 PSW.3 PSW.2 PSW.1 PSW.0
CF (CY) AF (AC) F0 RS1 RS0 OV (OF) – P (PF)

Назначение отдельных битов PSW указано в таблице 5.2.

Таблица 5.2
Назначение битов PSW
Бит Назначение
CF (CY) Флаг переноса (Carry Flag)
AF (AC) Флаг дополнительного переноса (Auxilinary Carry Flag)
F0 Флаг пользователя 0
Биты выбора используемого регистрового банка: 00 – банк 0;
RS1, RS0
01 – банк 1; 10 – банк 2; 11 – банк 3.
OF (OV) Флаг переполнения (Owerfow Flag)
– Зарезервирован. Доступен по чтению и записи.
PF (P) Флаг четности (Parity Flag)

84
Бит переноса, кроме арифметических операций, используется также и в
булевых операциях. Биты RS0 и RS1 используются для выбора одного из 4-х
регистровых банков. Бит четности отражает число установленных бит в
аккумуляторе: P = 1, если аккумулятор содержит нечетное число единиц, и P =
0, если четное. Т. е., количество ненулевых битов в аккумуляторе плюс P
является всегда четным числом. Два бита в PSW ни с чем не связаны и могут
использоваться как флаги состояний.

5.2. Система команд микроконтроллеров


семейства mcs-51
Система команд MCS-51 поддерживает единый набор инструкций,
который предназначен для выполнения 8-битовых алгоритмов управления
исполнительными устройствами [10]. Существует возможность использования
быстрых методов адресации к внутреннему ОЗУ, осуществления битовых
операций над небольшими структурами данных. Имеется развернутая система
адресации однобитовых переменных как самостоятельного типа данных,
позволяющая использовать отдельные биты в логических и управляющих
командах булевой алгебры.
Режимы адресации: набор команд MCS-51 поддерживает следующие
режимы адресации. Прямая адресация: операнд определяется 8-битовым
адресом в инструкции. Прямая адресация используется только для младшей
половины внутренней памяти данных и регистров SFR. Косвенная адресация:
инструкция адресует регистр, содержащий адрес операнда. Данный вид
адресации используется для внешнего и внутреннего ОЗУ. Для указания 8-
битовых адресов могут использоваться регистры R0 и R1 выбранного
регистрового банка или указатель стека SP. Для 16-битовой адресации
используется только регистр указателя данных DPTR.
Регистровые инструкции: регистры R0–R7 текущего регистрового
банка могут быть адресованы через конкретные инструкции, содержащие
3-битовое поле, указывающее номер регистра в самой инструкции. В этом
случае соответствующее поле адреса в команде отсутствует. Операции с
использованием специальных регистров: некоторые инструкции используют
индивидуальные регистры (например, операции с аккумулятором, DPTR, и т.
д.). В данном случае адрес операнда вообще не указывается в команде. Он
предопределяется кодом операции.
Непосредственные константы: константа может находиться прямо в
команде за кодом операции.
Индексная адресация: индексная адресация может использоваться
только для доступа к программной памяти и только в режиме чтения. В этом

85
режиме осуществляется просмотр таблиц в памяти программ. 16-битовый
регистр (DPTR или программный счетчик) указывает базовый адрес требуемой
таблицы, а аккумулятор указывает на точку входа в нее.
Набор команд имеет 42 мнемонических обозначения команд для
конкретизации 33 функций этой системы. Синтаксис большинства команд
ассемблерного языка состоит из мнемонического обозначения функции, вслед
за которым идут операнды, указывающие методы адресации и типы данных.
Различные типы данных или режимы адресации определяются установленными
операндами, а не изменениями мнемонических обозначений.
Систему команд условно можно разбить на пять групп: арифметические
команды; логические команды; команды передачи данных; команды битового
процессора; команды ветвления и передачи управления. Обозначения и
символы, используемые в системе команд, приведены в таблице 5.3.
Таблица 5.3
Обозначения и символы, используемые в системе команд
Обозначение,
Назначение
символ
1 2
А Аккумулятор
Rn Регистры текущего выбранного банка регистров
r Номер загружаемого регистра, указанного в команде
Окончание табл. 5.3
1 2
Прямо адресуемый 8-битовый внутренний адрес ячейки данных, который
direct может быть ячейкой внутреннего ОЗУ данных (0–127) или регистром
специальных функций SFR (128–255)
@Rr Косвенно адресуемая 8-битовая ячейка внутреннего ОЗУ данных
data8 8-битовое непосредственное данное, входящее в код операции (КОП)
dataH Старшие биты (15–8) непосредственных 16-битовых данных
dataL Младшие биты (7–0) непосредственных 16-битовых данных
addr11 11-битовый адрес назначения
addrL Младшие биты адреса назначения
disp8 8-битовый байт смещения со знаком
Бит с прямой адресацией, адрес которого содержит КОП, находящийся во
bit
внутреннем ОЗУ данных или регистре специальных функций SFR
a15, a14...a0 Биты адреса назначения
(Х) Содержимое элемента Х
((Х)) Содержимое по адресу, хранящемуся в элементе Х
(Х)[M] Разряд М элемента Х
Операции:

86
+ сложения
– вычитания
* умножения
/ деления
AND логического умножения (операция И)
OR логического сложения (операция ИЛИ)
XOR сложения по модулю 2 (исключающее ИЛИ)
/X инверсия элемента Х

Мнемонические обозначения функций однозначно связаны с


конкретными комбинациями способов адресации и типами данных. Всего в
системе команд возможно 111 таких сочетаний.

5.2.1. Арифметические и логические инструкции


Как пример арифметической команды, операция сложения может быть
выполнена одной из нижеследующих команд.
ADD A,7F16 – прибавить к содержимому регистра А число 7F16 и
результат сохранить в регистре А;
ADD A,@R0 – прибавить к содержимому регистра А число, адрес
которого (@ – commercial at) хранится в регистре R0 (косвенная адресация), и
результат сохранить в регистре А;
ADD A,R7 – прибавить к содержимому регистра А содержимое регистра
R7 и результат сохранить в регистре А;
ADD A,#127 – прибавить к содержимому регистра А число, адрес ячейки
хранения которого 127 (# – символ номера), и результат сохранить в регист-
ре А.
Все арифметические инструкции выполняются за один машинный цикл за
исключением команды INC DPTR (смещение указателя данных DPTR на
следующий байт), требующей два машинных цикла, а также операций
умножения и деления, выполняемых за 4 машинных цикла. Любой байт во
внутренней памяти данных может быть инкрементирован и декрементирован
без использования аккумулятора.
Инструкция MUL AB производит умножение (multiplication –
умножение) данных в аккумуляторе на данные, находящиеся в регистре B,
помещая произведение в регистры A (младшая половина) и B (старшая
половина).
Инструкция DIV AB делит (division – деление) содержимое аккумулятора
на значение в регистре B, оставляя остаток в B, а частное – в аккумуляторе.
Инструкция DA A предназначена для двоично-десятичных
арифметических операций (арифметические операции над числами,

87
представленными в двоично-десятичном коде). Она не делает преобразования
двоичного числа в двоично-десятичное, а лишь обеспечивает правильный
результат при сложении двух двоично-десятичных чисел.
Пример логической команды: операция логического И может быть
выполнена одной из следующих команд:
ANL A,7F16 – логическое умножение содержимого регистра А на число
7F16 и результат сохраняется в регистре А;
ANL A,@R1 – логическое умножение содержимого регистра А на число,
адрес которого хранится в регистре R1 (косвенная адресация), и результат
сохранить в регистре А;
ANL A,R6 – логическое умножение содержимого регистра А на
содержимое регистра R6, и результат сохранить в регистре А;
ANL A,#53 – логическое умножение содержимого регистра А на число,
адрес ячейки хранения которого 5316, и результат сохранить в регистре А.
Все логические операции над содержимым аккумулятора выполняются за
один машинный цикл, остальные – за два. Логические операции могут
производиться над любым из нижних 128 байтов внутренней памяти данных
или над любым регистром SFR (регистров специальных функций) в режиме
прямой адресации без использования аккумулятора.
Операции циклического сдвига RL A, RLC A и т. д. перемещают
содержимое аккумулятора на один бит вправо или влево. В случае левого
циклического сдвига младший бит перемещается в старшую позицию. В случае
правого циклического сдвига происходит обратное.
Операция SWAP A осуществляет обмен младшей и старшей тетрад в
аккумуляторе.

5.2.2. Команды передачи данных


Команда MOV dest,src позволяет пересылать данные между ячейками
внутреннего ОЗУ или областью регистров специальных функций SFR без
использования аккумулятора. При этом работа с верхней половиной
внутреннего ОЗУ может осуществляться только в режиме косвенной адресации,
а обращение к регистрам SFR – только в режиме прямой адресации.
Во всех микросхемах MCS-51 стек размещается непосредственно в
резидентной памяти данных и увеличивается вверх. Инструкция PUSH вначале
увеличивает значение в регистре указателя стека SP, а затем записывает в стек
байт данных. Команды PUSH и POP используются только в режиме прямой
адресации (записывая или восстанавливая байт), но стек является всегда
доступным при косвенной адресации через регистр SP. Таким образом, стек
может использовать и верхние 128 байт памяти данных. Эти же соображения

88
исключают возможность использования стековых команд для адресации
регистров SFR.
Инструкции передачи данных включают в себя 16-битовую операцию
пересылки MOV DPTR,#data16, которая используется для инициализации
регистра указателя данных DPTR при просмотре таблиц в программной памяти
или для доступа к внешней памяти данных.
Операция XCH A,byte применяется для обмена данными между
аккумулятором и адресуемым байтом. Команда XCHD A,@Ri аналогична
предыдущей, но выполняется только для младших тетрад, участвующих в
обмене операндов.
Для доступа к внешней памяти данных используется только косвенная
адресация. В случае однобайтных адресов используются регистры R0 или R1
текущего регистрового банка, а для 16-разрядных – регистр указателя данных
DPTR. При любом методе доступа к внешней памяти данных аккумулятор
играет роль источника либо приемника информации.
Для доступа к таблицам, размещённым в программной памяти,
используются команды:
MOVC A,@A+DPTR ;
MOVC A,@A+PC .
В качестве базового адреса таблицы используется содержимое
соответственно регистра указателя данных DPTR или PC (программного
счётчика), а смещение берется из A. Эти команды используются
исключительно для чтения данных из программной памяти, но не для записи в
нее.
5.2.3. Булевы операции
Микросхемы MCS-51 содержат в своем составе «булевый» процессор.
Внутреннее ОЗУ имеет 128 прямо адресуемых бит. Пространство регистров
специальных функций SFR может также поддерживать до 128 битовых полей.
Битовые инструкции осущесвляют условные переходы, пересылки, сброс,
инверсии, операции «И» и «ИЛИ». Все указанные биты доступны в режиме
прямой адресации.
Бит переноса CF в регистре специальных функций «слово состояния
программы PSW» используется как однобитный аккумулятор булевого
процессора.

5.2.4. Инструкции переходов


Адреса операций переходов обозначаются на языке ассемблера меткой
либо реальным значением в пространстве памяти программ. Адреса условных
переходов ассемблируются в относительное смещение – знаковый байт,

89
прибавляемый к программному счетчику PC в случае выполнения условия
перехода. Границы таких переходов лежат в пределах между минус 128 и 127
относительно первого байта, следующего за инструкцией. В регистре
специальных функций «слово состояния программы PSW» отсутствует флажок
нуля, поэтому инструкции JZ и JNZ проверяют условие «равно нулю» как
тестирование данных в аккумуляторе.
Существует три вида команды безусловного перехода: SJMP, LJMP и
AJMP – различающиеся форматом адреса назначения. Инструкция SJMP
кодирует адрес как относительное смещение, и занимает два байта. Дальность
перехода ограничена диапазоном от минус 128 до 127 байт относительно
инструкции, следующей за SJMP.
В инструкции LJMP используется адрес назначения в виде 16-битной
константы. Длина команды составляет три байта. Адрес назначения может
располагаться в любом месте памяти программ.
Команда AJMP использует 11-битную константу адреса. Команда
состоит из двух байт. При выполнении этой инструкции младшие 11 бит
адресного счетчика замещаются 11-битным адресом из команды. Пять старших
бит программного счетчика PC остаются неизменными. Таким образом,
переход может производиться внутри 2К-байтного блока, в котором
располагается инструкция, следующая за командой AJMP.
Существует два вида команды вызовы подпрограммы: LCALL и ACALL.
Инструкция LCALL использует 16-битный адрес вызываемой подпрограммы.
В данном случае подпрограмма может быть расположена в любом месте памяти
программ. Инструкция ACALL использует 11-битный адрес подпрограммы.
В этом случае вызываемая подпрограмма должна быть расположена в одном
2К-байтном блоке с инструкцией, следующей за ACALL. Оба варианта
команды кладут на стек адрес следующей команды и загружают в
программный счетчик PC соответствующее новое значение.
Подпрограмма завершается инструкцией RET, позволяющей вернуться
на инструкцию, следующую за командой CALL. Эта инструкция снимает со
стека адрес возврата и загружает его в программный счетчик PC. Инструкция
RETI используется для возврата из подпрограмм обработки прерываний.
Единственное отличие RETI от RET состоит в том, что RETI информирует
систему о том, что обработка прерывания завершилась. Если в момент
выполнения RETI нет других прерываний, то она идентична RET.
Инструкция DJNZ предназначена для управления циклами. Для
выполнения цикла N раз надо загрузить в счетчик байт со значением N и
закрыть тело цикла командой DJNZ, указывающей на начало цикла.

90
Команда CJNE сравнивает два своих операнда как беззнаковые целые и
производит переход по указанному в ней адресу, если сравниваемые операнды
не равны. Если первый операнд меньше, чем второй, то бит переноса CF
устанавливается в «1».
Все команды в ассемблированном виде занимают 1, 2 или 3 байта. Более
широкое и подробное описание микроконтроллера приведено в [10].
Выводы
Микроконтроллеры семейства MCS-51 имеют Гарвардскую архитектуру,
т. е. раздельное адресное пространство программ и данных, что позволяет
осуществлять доступ к памяти данных по 8-битным адресам: это способствует
более быстрой обработке данных в процессоре.
Система команд MCS-51 поддерживает набор инструкций, которые
предназначены для выполнения большого объёма команд с высокой скоростью.
Программирование микроконтроллеров облегчает организация памяти в три
ступени (включая регистровые банки).

Вопросы для обсуждения


1. Развитие интерфейсных устройств, встроенных в микроконтроллеры
серии 8051.
2. Инструментальные средства разработки для архитектуры 8051.
3. Выполнение команд в архитектуре 8051.

91
Контрольные вопросы
1. В чём выражается Гарвардская архитектура микроконтроллеров
MCS-51?
2. Дайте общую характеристику микроконтроллеров MCS-51.
3. Охарактеризуйте процессор и внутреннюю память программ
микроконтроллера MCS-51.
4. Охарактеризуйте ОЗУ данных и порты микроконтроллера MCS-51.
5. Охарактеризуйте таймеры и коммуникационный порт
микроконтроллера MCS-51.
6. Охарактеризуйте систему прерываний и тактовый генератор
микроконтроллера MCS-51.
7. Охарактеризуйте методы адресации операндов у микроконтроллера
MCS-51.

Список рекомендуемой литературы


1. Фрунзе А.В. Микроконтроллеры? Это же просто! Т. 1 / А.В. Фрунзе. –
М.: ООО «ИД СКИМЕН», 2002. – 336 с.
2. Фрунзе А.В. Микроконтроллеры? Это же просто! Т. 2 / А.В. Фрунзе. –
М.: ООО «ИД СКИМЕН», 2002. – 392 с.
3. Фрунзе А. В. Микроконтроллеры? Это же просто! Т. 3 / А. В. Фрунзе,
А. А. Фрунзе. – М.: ООО «ИД СКИМЕН», 2003. – 224 с.

Список рекомендуемых периодических изданий


1. International Journal of Electrical Engineering Education. FindArticles.com.
[Электронный ресурс]
http://findarticles.com/p/articles/mi_qa3792/is_200104/ai_n8944118/

6. АРХИТЕТУРА МИКРОКОНТРОЛЛЕРОВ PICMicro


В разделе описаны аппаратные средства, дана обобщенная
архитектура микроконтроллеров PICMicro, приведёны особенности
программирования.
Ключевые слова: микроконтроллер PICMicro, уровень модели, регистр
состояния, режима ожидания, регистровые банки, адресация регистров,
периферийные устройства.
Микроконтроллеры PICMicro фирмы MicroChip являются одними из
наиболее эффективных по количеству команд, выполняемых за фиксированный

92
промежуток времени. В этом семействе микроконтроллеров выпущено много
моделей.
Младшие модели серии 16С5х реализуют нижний уровень
возможностей микроконтроллеров семейства PICMicro. Они выполняют
подмножество команд, реализуемых старшими моделями, и программно
совместимы с ними (не рекомендуются в новых разработках). У них мало число
прерываний, мал объём доступной памяти программ и ОЗУ, отсутствует
внутрисистемное программирование и порты ввода-вывода с расширенными
функциями. Так микроконтроллеры серии 12С5хх обладают 6-ью линиями
ввода-вывода и объёмом памяти программ 512 или 1024 команды.
Используются для создания небольших простых приложений (в основном для
создания простых интерфейсных устройств).
Модели микроконтроллеров среднего уровня обладают большим числом
различных функций. Базовая архитектура аналогична архитектуре младшей
группы моделей, но существенно отличаются по возможностям обработки
прерываний. У них имеется внутрисистемное программирование, а
функциональные возможности позволяют использовать один и тот же
программный код для различных приложений.
Обычно используется один вектор прерывания. Имеются АЦП и
устройства, обеспечивающие непосредственное подключение датчиков.
Технические характеристики моделей среднего уровня отражены в таблице 6.1
[5].

Таблица 6.1
Технические характеристики моделей микроконтроллеров
семейства PICMicro среднего уровня
Характеристика Значение
1 2
Количество уровней
8
прерываний (подпрограмм)
Объём памяти программ 512–8К команд
Регистровый файл (ОЗУ) 36–192 байт
Число источников
4–12
прерываний
Число таймеров 1–3
Напряжение питания 2,0–5,0 В
Тактовая частота ноль – 4 МГц или до 20 МГц
Число линий ввода-вывода 13–33
Тип памяти программ Масочная; ППЗУ; ЭППЗУ/Flash
Окончание табл. 6.1
93
1 2
Возможности
Компараторы напряжения; ЦАП с резистивным
для аналого-цифрового
делителем; интегрирующие АЦП; ШИМ-выходы
преобразования
Протоколы
SPI, I2C, асинхронный
последовательных портов
Прямого подключения ЖКИ; параллельный ведомый
Другие порты
порт

Модели микроконтроллеров старшего уровня используют 16-битные


команды и могут адресовать 64К слов памяти. Так как слово содержит 16 бит,
то, например, модели серии 17Схх могут адресовать по 128 Кбайт памяти
программ и памяти данных.
Ядро центрального процессора серии 17Схх позволяет различным
командам обращаться ко всем регистрам процессора (в моделях МК младшего
и среднего уровней нельзя использовать любой регистр в качестве
аккумулятора, что возможно в данной серии), что повышает гибкость
использования микроконтроллера. Также имеется возможность использовать
несколько векторов прерываний.
Так как модели микроконтроллеров старшего уровня разрабатывались
для взаимодействия с другими цифровыми устройствами, то, например, в серии
17Схх нет АЦП и устройств сопряжения с аналоговыми модулями.

6.1. Аппаратная часть микроконтроллеров picmicro


В разделе приводится описание архитектуры микроконтроллеров
PICMicro среднего уровня. У моделей младшего уровня она аналогична, но в
них не поддерживается обработка прерываний. А архитектура
микроконтроллеров старшего уровня может использовать для интерфейса
внешнюю шину, как это реализуют микропроцессоры. Также их архитектура
включает регистр W в банк регистров (например, серия 17С4х).
Центральный процессор PICMicro имеет Гарвардскую архитектуру,
поэтому его можно рассматривать как арифметико-логическое устройство с
регистрами. Процессор содержит ряд регистров специального назначения,
которые управляют работой CPU, а также регистры управления вводом-
выводом и регистры RAM, которые могут быть использованы программой
пользователя для хранения переменных и организации интерфейса с
периферийными устройствами, расположенными на кристалле.
Все адреса явно определяются в командах. В командах с регистровой ад-
ресацией для задания адреса выделяется 7 бит. Таким образом, процессор PIC

94
может обращаться к 128 адресам (рисунок 6.1). Регистр W, который можно
рассматривать как аккумулятор или регистр временного хранения. Все
арифметические команды процессора PIC используют регистр W. Если
требуется сложить содержимое двух регистров, то сначала надо перенести
содержимое первого регистра и регистр W, а затем добавить к нему
содержимое второго регистра.

Шина
данных

Память Регистры
программ Программный
счётчик

АЛУ
Дешиф-
ратор ко-
манд
Шина адреса
7-битный
дешифра-
тор адреса

Рис. 6.1. Базовая архитектура микроконтроллера PICMicro

Архитектура PICMicro эффективна, так как позволяет сохранить


результат выполнения операции как в регистре W, так и записать его в регистр,
являющимся источником второго операнда. Возможность записи результата
обратно в регистр-источник исключает необходимость использования
дополнительной команды для сохранения результата операции. Таким образом
обеспечивается простое и эффективное перемещение результатов.
На рисунке 6.2 показана схема процессора, представляющая на
простейшем уровне архитектуру PICMicro. Более половины команд могут
быть выполнены при использовании только тех блоков, которые приведены на
схеме. Один из параметров арифметической команды используется для
указания размещения результата. Если этот параметр имеет значение «1», то
результат записывается обратно в регистр-источник.

95
В ассемблере MPASM фирмы Microchip для указания размещения
результата в регистре-источнике используется символ f. Для записи результата
в регистр W параметр, определяющий место размещения, должен иметь
значение «0» или в команде ассемблера должен быть указан символ w. Для
указания размещения результата используется последний параметр в
ассемблерной записи команды:
addwf FSR, w ; Сложение регистров W и FSR, и
; размещение результата в регистре W
iorwf TMR0, f ; Операция эквивалентности над содержимым регистров
; W и TMR0, и размещение результата в регистре TMR0

выбор банка
Шина регистров
значения данных
Память флагов Регистры
программ Программный
счётчик Регистр
состояния
STATUS

АЛУ
Дешиф-
ратор ко-
Регистр
манд
W
7-битный
(девяти-)
дешифра-
Шина адреса тор адреса

Рис. 6.2. Архитектура контроллера PICMicro с регистром W

Запись результата в регистр W необходима при выполнении команд, ко-


торые производят сравнение операндов без изменения содержимого источника.
Такая запись используется также в случаях, когда результат является
промежуточной величиной или если он должен быть сохранен в другом ре-
гистре. Место назначения результата может быть не указано в команде в явном
виде:
addwf Reg ; Прибавить содержимое регистра Reg к содержимому
; регистра W

96
При такой записи ассемблер MPASM фирмы Microchip и большинство
других ассемблеров запишут результат вычисления в регистр-источник (ана-
логично указанию параметра «f» или «1»).
Регистр состояния (STATUS) является основным регистром процессора,
который осуществляет контроль выполнения программы. Содержимое этого
регистра можно разделить на три части. В первой части регистра STATUS
содержатся флаги Z, DC и С, которые используются для управления ходом
выполнения программы. Флаг нуля Z устанавливается в «1», если результат
операции равен нулю (например, при выполнении команд сложения,
вычитания, сброса или битных операций).
Флаг переноса С устанавливается в «1», если результат сложения
превышает число 255 (0x0FF) или результат вычитания меньше нуля.
Взведение флага переноса показывает, что для получения правильного
результата необходимо изменить значение старшего байта. Флаг
промежуточного переноса (полупереноса) DC устанавливаемся в «1», если в
результате выполнения арифметических команд (сложение или вычитание)
младшая тетрада (четыре бита) превышает число 15.
Данные флаги могут быть считаны и записаны. Они изменяют своё
значение в соответствии с результатом выполнения арифметических и
логических команд. Следует отметить, что регистр состояния STATUS не
может быть приёмником в арифметических и логических командах. Макрос для
сброса в «0» всех битов регистра состояния перед выполнением
арифметической команды следующий.
ClearFlags Macro ; Сбросить флаги состояния
movlw 0x0F8 ; Загрузить значение константы 0x0F8 в регистр W
andwf STATUS, w ; Выполнить операцию «И» между регистром W
; и регистром STATUS, и размещение результата
; в регистре W
movwf STATUS ; Запись содержимого регистра W в регистр STATUS
endm ; Конец макроса
Функциональная схема процессора PICMicro показано на рисунке 6.2.
Во второй части регистра STATUS следующие два бита определяют
режим работы микроконтроллера при включении и при выходе из режима
ожидания SLEEP. Таблица 6.2 показывает значения этих битов в различных
ситуациях. Данные биты предназначены для того, чтобы прикладная программа
могла определить, в каком состоянии находится процессор в момент перво-
начальной загрузки.

97
Таблица 6.2
Значения битов _PD и _TO, определяющих режим работы контроллера
при включении и при выходе из режима ожидания
_TO _PD Состояние
1 1 Запуск при включении питания или подаче сигнала
на вход _MCLR
0 1 Сброс сторожевого таймера в ходе выполнения
программы
0 0 Выход из режима ожидания по сигналу сторожевого
таймера
1 0 Выход из режима ожидания по сигналу _MCLR
или прерыванию

Во третьей части регистра STATUS состояния битов зависят от типа


используемого процессора. В младших моделях PICMicro (серия 16С5х) эти
биты используются аналогично регистру PCLATH в PICMicro средних и
старших моделей (как описано ниже в подразделе «Программный счётчик»).
В PICMicro среднего уровня, где используется 7-битная адресация, в
любой команде можно прямо адресовать 128 регистров. Возможность
обращения только к 128 регистрам является существенным ограничением.
Поэтому разработчики PIСMicro разбили память данных на банки размеров
128 регистров. В PICMicro среднего уровня могут использоваться четыре
банка (512 регистров), хотя обычно применяются только два. Выбор банка
осуществляется битами RP в регистре состояния. С учётом этого, архитектура
будет иметь вид, показанный на рисунке 6.2.
В некоторых моделях PICMicro регистровые файлы распределены между
банками данных, но имеется ряд контроллеров этого семейства, которые имеют
отдельные регистровые файлы в каждом из банков. Это обстоятельство следует
учитывать при выборе типа контроллера PICMicro и вида программного
обеспечения, который предполагается использовать для разработки
приложения. Рекомендуется по умолчанию всегда использовать банк 0.
Обращение к банку 1 следует выполнять только при выборке аппаратных
регистров или области переменных, расположенных в данном банке. После
завершения обращения к этому банку следует произвести обратное
переключение к банку 0.
В серии PIC16C5X нет второю банка. Вместо выбора регистровых
банков, биты RP в этих микроконтроллерах используются для выбора
различных страниц памяти программ. Наличие в процессоре только одного
банка означает, что в младших моделях микроконтроллеров PICMicro нельзя
прямо обратиться к регистрам OPTION и TRIS, которые в моделях среднею

98
уровня располагаются в банке 1, Для доступа к этим регистрам введены
специальные команды «option» и «tris», с помощью которых можно
содержимое регистра W переписать в эти регистры.
Смена регистровых файлов при переключении банков может показаться
недостатком архитектуры этого семейства. Сложности возникают из-за
принятых компанией Microchip правил адресации. Регистры банка 1 имеют
адреса от 0x080 и более (установка 7-го бита в адресе указывает на
использование страницы 1), а регистры банка 0 – адреса от 0x07F и менее.
Однако реально это лишь способ записи адреса. При данной форме записи бит
PR0 можно рассматривать как бит 7 адреса. Если в заданном адресе бит 7
установлен в «1», то перед обращением к регистру должен быть установлен в
«1» бит PR0 в регистре состояния. Для PICMicro среднего уровня,
использующих четыре банка, диапазон адресов регистров составляет от 0 до
0x01FF, а выбор 128-адресного банка осуществляется с помощью битов PR1 и
PR0.
Основные регистры – STATUS, INDF, FSR, PCL, PCLATH и INTCON
имеют одни и те же адреса в разных типах микроконтроллеров и размещаются с
одинаковым адресом на каждой странице памяти. Это сделано для про-
граммной совместимости различных моделей микроконтроллеров. Размещение
peгистров в двух основных банках показано в таблице 6.3.

Таблица 6.3
Регистры PICMicro среднего уровня
Адрес Банк 0 Банк 1 Адрес Примечание
0х000 INDF INDF 0х080 * – PORTC/TRISC :
0х001 TMR0 OPTION 0х081 для варианта с портом С.
0х002 PCL PCL 0х082
0х003 STATUS STATUS 0х083 ** – регистры ввода/вывода.
0х004 FSR FSR 0х084
0х005 РОRТА TRISA 0х085
0х006 PORTB TRISB 0х086 PCON*** – регистр управлением
0х007 * * 0х087 включением питания.
0х008 ** ** 0х088
0х009 ** ** 0х089 Пространство файловых
0х00А PCLATH PCLATH 0х08A регистров.
0х00В INTCON INTCON 0х08B
0х00С 0х08C ▬ ▬ конец пространство
PCON*** файловых регистров.
0х020 0х0A0
0х07F 0х0FF

99
Адресация регистров в процессорах PIC оcуществляется тремя
различными способaми адресации дынных: непосредственной адресации,
прямой регистровой адресации и косвенной aдресации. Функции этих способов
во многих случаях перекрываются, но каждый из них paзработан для
peaлизации определённой операции.
Непосредственная адресация означает, что операнд, используемый при
операции, являемы частью команды. Можно загрузить в peгистр W
необходимое число или изменить содержимое этого peгистpa с помощью
некоторой команды с определённым операндом (рисунок 6.3).
Непосредственная адресация используется в тех случаях, когда заранее
известно значение переменной для загрузки в регистр или выполнения
операции. Например, запись содержимого в регистр «направления ввода-
вывода» реализуется следующим образом.

Шина
данных
Программный
счётчик выбор банка
регистров

Память Регистры
программ
Регистр
значения MUX состояния
флагов STATUS

АЛУ
Дешиф-
ратор ко-
Регистр
манд
W
7-битный
(девяти-)
дешифра-
Шина адреса тор адреса

Рис. 6.3. Архитектура контроллера PICMicro с непосредственной


передачей данных из команды

bsf STATUS, PR0 ; бит установить в «1» в регистре STATUS, имя бита
; PR0: выбор банка «1» с помощью битов PR0 и PR1
movlw 0011011101b ; загрузить константу в регистр W: т. е.
; запрограммировать разряды № 1 и № 5 на вывод
; данных (установив «0» в битах с номерами 1 и 5;
100
movwf TRISB ^ 0x080h ; загрузить регистр W в регистр TRISB, и выполнить
; с загруженным операцию «исключающее ИЛИ» с
; числом 0x080h (маскирование числом 10000000) –
; т. е. установить в регистре TRISB бит № 7 в
; состояние «0»
bcf STATUS, RP0 ; бит очистить в «0» в регистре STATUS, имя бита
; PR0: выбор банка «0» с помощью битов PR0 и PR1
Выполнение логической операции XOR («исключающее ИЛИ») над
TRISB и числом 0х080 делается потому что адрес TRISB равен 0x086, что
указываем на выбор регистра с номером 0x006 в банке «1». Если оставить 7-ой
бит в TRISB установленным в «1», то MPASM с формирует
предупреждающее сообщение <302> об обращении к pегистpу, находящемуся
вне банка «0». Это даёт возможность проверить, не происходит ли обращение к
неправильному peгистpy. Чтобы избежать этого, можно изменить значение
cтapшего бита, который указывает на используемую страницу регистров.
Значение этого бита можно сбрасывать и с помощью операции &0x07F.
Доступ к peгистpy означает, что можно обработать его содержимое в
АЛУ и поместить результат в peгистpe W или в выбранном регистре.
Вычисление происходит в процессоре и результаты помещаются в регистр W
или обратно в регистр–источник. Обычно для загрузки в регистр W
содержимого другого регистра используется команда mov. Эта команда
выполняется аналогично другим арифметическим командам, использующим
регистр W. Следующий программный код загружает содержимое из одного
регистра и сохраняет его в другом регистре.
movf Reg1 w ; загрузить содержимое регистра Reg1 в регистр W
movwf Reg2 ; сохранить содержимое W в регистре Reg2
Бывают случаи, когда необходимо использовать косвенную адресацию
данных и модифицировать адрес с помощью арифметической операции.
Регистры INDF и FSR используются для индексной и косвенной адресации
данных, что позволяет собирать данные в массив и обращаться к ним как к
массиву. Pегистp INDF является псевдорегистром с адресом 0, который в
действительности не существует. При обращении к этому pегистpy на самом
делe происходит обращение к peгистpy, aдpec которого содержится в FSR.
Схема процессора PICMicio с указанными добавлениями изображена на
рисунке 6.4.
Если необходимо записать строку символов, постyпающиx в процеccop
PIC, то это может бьть сделано при помощи набоpа переменных, но такой
процесс трудно организовать. Вместо этого может бьпь использован массив
байтов, который позволяет производить доступ к данным. Oтдельные байты в
массиве могут быть выбраны явным образом, но обращение к целой строке

101
можем быть осуществлено только последовательно, с использованием простого
алгоритма программирования.
Шина
данных выбор банка
Программный
регистров
счётчик

Память Регистры
программ Регистр
FSR
значения MUX
флагов Регистр
состояния
STATUS

АЛУ
Дешиф-
ратор ко-
Регистр
манд
W
7-битный
(девяти-)
дешифра-
Шина адреса тор адреса

MUX

Рис. 6.4. Архитектура контроллера PICMicro с косвенной адресацией

Па языке С формирование массива и доступ к нему осуществляется


следующим образом.
char Array [ 10 ] // Сформировать массив размером в 10 цифр
Array [ i ] = ‘а’ // Модифицировать элемент массива
j = Array [ i ] // Считать элемент массива
Используя ассемблер PICMicro, эти процедуры можно представить в cлe-
дующем виде.
Array equ Array_Start ; Определить адрес начала массива
; Array [ i ] = ‘а’ – Модифицировать элемент массива
movlw Array ; Записать константу Array в регистр W
addwf i, w ; Прибавить к содержимому регистра W константу i
и сохранить в регистре W: т. е., получить смещение
102
для i-го элемента массива
movwf FSR ; Записать содержание регистра W в регистр FSR
movlw ‘a’ ; Записать константу «а» в регистр W: т. е., полу-
чение символа для записи в массив
movwf INDF ; Записать содержание регистра W в псевдорегистр
INDF: т. е., константу «а» i-м элементе массива
;
j = Array [ i ] – Считать элемент массива
movlw Array ;
Записать константу Array в регистр W
addwf i, w ;
Прибавить к содержимому регистра W константу i
и сохранить в регистре W: т. е., получить смещение
movwf FSR ; для i-го элемента массива
movf INDF, w ; Записать содержание регистра W в регистр FSR
Записать содержимое псевдорегистра INDF в
movwf j ; регистр W: т. е. получить символ и сохранить его
Записать содержимое регистра W в переменную j
Рассматривая данный пример, можно видеть, что одномерные массивы
могут бьпь сформированы так же легко, как и многомерные массивы.
Многомерные массивы похожи на одномерные, но индекс арифметически
вычисляется для каждого параметра. Так, индекс для элемента 3, 5 в массиве
размерностью 88, где нумерация элементов в строках и столбцах начинается
с 1, будет иметь величину 2·8 + 4.
В младшиx моделях микроконтроллеров PICMicro доступ к регистрам
осуществляется только при обращении к первой странице. Это означает, что
бит PR0 в peгистpe состояния не используется и нет прямого доступа к
регистрам ТRIS и OPTION, которые обычно находятся на странице 1
регистрового пространства микроконтроллepoв PICMicro среднего уровня.
При рассмотрении регистpa FSR и косвенной адресации необходимо
отметить: хотя регистр FSR обеспечивает доступ к 256 различным адресам
peгистpoв в двух банках, он не может исполъзоваться для обращения к 256
непрерывно расположенным файловым peгистpaм, то ecть к единому массиву,
состоящему из 128 или больше смежных адресов. Причина состоит в том, что в
первых нескольких адресах каждого банка содержатся регистры управления.
При попытке выйти за пределы 128 байтов банка изменяется содержимое
peгистpoв управления микроконтроллером, что приводит к плохому результату.
Демонстрация работы регистров INDF и FSR отражается в рассмотрении
«стандартного» процессора и его индексной команды. Например, загрузка
индекса в аккумулятор может выполняться командой
move a, (Index)

103
Скобки указывают, что содержимое регистра Index является адресом того
регистра, содержимое которого надо записать в аккумулятор а.
В процессорах PIC не удастся использовать эквивалентную команду
movf (FSR) w
Но вместо (FSR) в этой команде необходимо указать INDF – при этом
будет выполняться точно такая же операция (содержимое FSR используется
как адрес регистра, который является источником операнда.
Программный счётчик имеет механизм изменения наиболее сложный в
семействе PIC. Во всех микроконтроллерах PICMicro команды содержат одно
командное слово или адрес – это особенность архитектуры RISC. Так, в
командах goto и call недостаточно места для указания полного значения нового
содержимого программного счётчика. В контроллерах среднего уровня,
использующих 14-битовые команды, только 11 бит команды служат для
указания нового адреса. Эти 11 бит адресуют 2К памяти микроконтроллера,
которые образуют страницу.
Обычно в команде указываются все младшие биты нового адреса.
Старшие биты загружаются из другого регистра, который называется
PCLATH, каждый раз при выполнении команд goto, call или команд
«вычисляемых переходов», рисунок 6.5. Эта форма указания адреса
используется для всех команд
goto и call, но конкретный вариант их реализации различается для трёх
различных семейств PICMicro.

104
Шина
Регистры данных
PCLATH/STATUS

Шина
команд
MUX MUX

Регистр PCL

Стек содержимого программного счётчика

Рис. 6.5. Блок счётчика команд PICMicro


В другом методе изменения содержимого программного счётчика
младшие 8 бит непосредственно доступны программе и могут быть
использованы для реализации простых таблиц или переходов с вычисляемыми
адресами. Только младшие 8 бит могут быть прямо модифицированы с
помощью программного обеспечения, а остальные биты поступают из регистра
PCLATH.
В младших моделях отсутствует регистр PCLATH: старшие биты адреса
сохраняются в регистре STATUS там же, где биты PR в микроконтроллерах
среднего уровня. Эти биты комбинируются с битами, заданными в команде, для
указания адреса при выполнении команды безусловного перехода goto Address.
Младшие модели используют страницы, содержащие 512 адресов, поэтому
команды goto и call имеют для указания адреса 9 и 8 битов соответственно. Так
как такие модели имеют адресное пространство объёмом 2К, то проблема
адресации решается с помощью битов PA0 и PA1 в регистре STATUS.
Указанные биты должны быть установлены так, чтобы правильно
указывать на страницу, где располагаются 512 адресов.
Переход goto с вычисляемым адресом выполняется как и во всех моделях
контроллеров, но с особенностью: таблица адресов и все её элементы должны
находиться в пределах первых 256 адресов 512-адресной страницы, как и метки

105
вызова подпрограмм. То есть, в микроконтроллерах, имеющих объём памяти
1К, можно использовать только две таблицы сегментов переходов (всего
512 элементов).
Так как в микроконтроллерах среднего уровня используются команды
длиной 14 бит, то адресуемый с их помощью объём памяти составляет до
8 Кбайт. При этом некоторые биты регистра STATUS используются для
выполнения других функций, нежели аналогичные биты в младших моделях.
Для адресации памяти программ в моделях среднего уровня введён регистр
PCLATH.
При 14-битной длине команд для указания адреса в командах goto и call
используется 11 бит. Это даёт размер страницы для данного семейства 2К (211).
С помощью команды addwf PCL[,f] микроконтроллеры PICMicro могут
непосредственно обращаться лишь к 256 адресам таблицы. Однако в отличие от
младших моделей выбираемые данные могут иметь любую разрядность и
располагаться в любом месте памяти. Рассмотрим пример размещения в
микроконтроллере 700-элементной таблицы, начиная с произвольного адреса
(т. е. за пределами 256-адресного пространства). Здесь Table является
подпрограммой, которая выбирает в регистр W требуемый элемент таблицы.

Table ; Возвращает элемент EntryHigh/Entry


movlw HIGH TableStart ; Вычисление значения PCLATH
addwf EntryHigh, w ; Прибавление к старшему байту номера
; элемента
movwf PCLATH ; Сохранение в регистре PCLATH
movlw TableStart & 0x0FF
addwf Entry, w ; Вычисление смещения в 256-байтной
; странице
btfsc STATUS, C ; Если установлен флаг переноса, то
; инкремент 256-байтной страницы
incf PCLATH
movwf PCL ; Переход к элементу таблицы

TableStart ; Начало таблицы


retlw Element_1 ; Получение элемента для Entry=0
retlw Element_2 ; Получение элемента для Entry=1
...
retlw Element_700 ; Получение элемент для Entry=699
Этот программный код является эффективным для межстраничных
переходов goto. Сначала PCLATH задаёт значения старших битов адреса входа
106
в таблицу, затем рассчитывается правильное смещение, определяющее 8
младших битов адреса входа в таблицу. Если при их расчёте сумма превысит
0x0FF, то содержимое регистра PCLATH увеличивается на 1, т. к. адрес
находится на следующей 256-байтной странице.
Старшие модели PICMicro работают аналогично моделям среднего
уровня с одним важным отличием – биты регистра PCLATH изменяются при
выполнении команд goto/call. В средних моделях этого не происходит.
Периферийные устройства подключаются и используют регистры
периферийных устройств. Каждое периферийное устройство является блоком,
который подключён к адресному дешифратору, шине данных, и управляется
через устройство дешифрации команд.

Выводы
Простота архитектуры микроконтроллеров семейства PICMicro ведёт к
более сложной методике разработки программного обеспечения при создании
эффективных приложений.
В то же время отсутствие доступа к пространству стека препятствует
разработке систем реального времени.

107
Вопросы для обсуждения
1. Минимизация числа циклов при выполнении команд goto, call и return.
2. Аппаратная реализация стека в семействе PICMicro.
3. Набор команд для архитектуры семейства PICMicro.

Контрольные вопросы
1. Центральный процессор микроконтроллера семейства PICMicro.
2. Регистр состояния микроконтроллера семейства PICMicro.
3. Адресация регистров микроконтроллера семейства PICMicro.
4. Программный счётчик микроконтроллера семейства PICMicro.
5. Внутренняя память микроконтроллеров семейства PICMicro.
6. Системный тактовый генератор микроконтроллеров семейства
PICMicro.
7. Аппаратные регистры и файл регистров микроконтроллеров семейства
PICMicro.

Список рекомендуемой литературы


1. Прокопенко Б.Я. Однокристальные микроконтроллеры PIC12Cx,
PIC12C6x, PIC16x8x, PIC14000, M16C/61/62 / Б.Я. Прокопенко. – М.: Додэка-
XXI, 2001. – 336 с.
2. Катцен, С. PIC-микроконтроллеры. Все, что вам необходимо знать:
[пер. с англ.] / С. Катцен. – М.: Додэка-ХХ1, 2008. – 656 с.

Рекомендуемые периодические издания


1. International Journal of Electrical Engineering Education. FindArticles.com.
[Электронный ресурс] http://findarticles.com/p/articles/

108
7. МИКРОКОНТРОЛЛЕРЫ СЕМЕЙСТВА AVR
В разделе описаны аппаратные средства, дана обобщенная
архитектура микроконтроллеров семейства AVR, приведёны особенности
программирования.
Ключевые слова: микроконтроллер семейства AVR, прямая регистровая
адресация, регистр состояния, полуперенос, адресации внешней памяти,
индексные регистры, стек, прерывания, адресация данных.
Микроконтроллеры AVR считаются одним из направлений, активно
развиваемых корпорацией Atmel. На настоящий момент соотношение «цена –
производительность – энергопотребление» для микроконтроллеров AVR
остается едва ли не лучшим в разряде 8-разрядных микроконтроллеров.
Семейство интенсивно развивается, усложняется и совершенствуется. AVR –
продукт корпорации Atmel (1997 г.). В августе 1999 года уже были три
семейства AVR – tiny, classic и mega (www.atmel.com).
Как и в любом процессоре, особенности AVR являются следствием
общих принципов, использованных при их разработке. Контроллеры
реализованы на базе набора регистров, представленных в графическом виде на
рисунке 7.1. Структура микроконтроллера AVR показана на рисунке 7.2. Эта
организация обеспечивает высокую эффективность процессора при обработке
данных. Архитектура AVR оптимизирована, чтобы соединить достоинства
Гарвардской и Принстонской архитектур для достижения очень быстрого и
эффективного выполнения программ [11].

Программный счётчик и стек

РОН
и
АЛУ
Регистры ввода–вывода
и память SRAM

Рис. 7.1. Приоритеты регистров в архитектуре процессоров AVR

Регистры общего назначения и АЛУ. Простое ядро процессора, которое


содержит регистры общего назначения и АЛУ, может выполнять 91 из 120
команд, реализуемых AVR. Каждая из этих команд использует содержимое
регистров общего назначения при выполнении операций (рисунок 7.3).

109
VCC (UПИТ) PA0–PA7 PC0–PC7

Драйверы порта А Драйверы порта С


8 8
GND Регистр данных Регистр данных
(Общ.) порта А Регистр порта С Регистр

XTAL1
направ- направ-
ления ления
данных данных
порта А порта С
Шина Данных
8

Внутренний Гене-
Програм-
Указатель генератор
мный счёт- ратор
стека
чик Сторожевой
таймер Синхронизация
flash- SRAM и управление
память
программ Регистры Регистр управ-

RESET XTAL2
общего наз- ления МК
Регистр начения
Таймеры-
команд счётчики
Контроллер
Дешифра-
тор команд прерываний
AЛУ ALE
EEPROM
на линии Регистр ICP
управления состояния

Логика прог- SPI UART


раммирования
Аналоговый
компаратор

Регистр дан- Регистр нап- Регистр дан- Регистр нап-


ных порта B равления дан- ных порта D равления дан-
ных порта В ных порта D

Драйверы порта В Драйверы порта D

PB0–PB7 PD0–PD7

Рис. 7.2. Структура микроконтроллера AVR 8515 фирмы Atmel

110
Есть два типа команд, которые могут выполняться этим ядром.
Арифметические операции выполняются над содержимым РОН, а операции
изменения последовательности команд могут реализовать только переходы в
программе, но не могут производить вызов подпрограмм или сохранение
содержимого программного счетчика.

Програм-
мный счёт-
чик Шина
данных
Шина Регистры
Память команд общего наз-
программ начения
32 х 8

Дешифра-
тор команд AЛУ

Рис. 7.3. Структурная схема регистров общего назначения и АЛУ

При обращении к РОН и АЛУ используется только один способ адреса-


ции – прямая регистровая адресация, которая осуществляется путем указа-
ния адреса выбираемого регистра. В команде могут быть указаны адреса одного
или двух регистров. Например, сложение содержимого двух регистров с
сохранением результата в первом из них выполняется при помощи команды
add: (add А, В), которая может быть записана в виде: А = А + В – или пред-
ставлена графически (рисунок 7.4).

Програм-
мный счёт-
чик Регистры обще- Шина
го назначения данных
Шина
Память команд 32 х 8
программ В
А

Дешифра-
тор команд AЛУ

Рис. 7.4. Пути передачи данных при выполнении команды AVR add А,В

111
Если второй операнд не требуется, в команде указывается только один
регистр, как, например, в команде инверсии. Второй операнд может являться
частью команды (непосредственная адресация), в этом случае данные с шины
команд поступают на шину данных.
Прибавление константы выполняется при помощи команды addiw A,
const, что означает А = А + const и показано графически на рисунке 7.5.
Содержимое программного счетчика инкрементируется после того, как
очередная команда считывается из памяти или принимает новое значение при
выполнении команды безусловного перехода jmp (рисунок 7.6).

Програм-
мный счёт-
чик Регистры обще- Шина
го назначения данных
Шина
Память команд 32 х 8
программ
adiw A, c А

Дешифра-
тор команд AЛУ

Рис. 7.5. Пути передачи данных при выполнении команды adiw A, const

направление передачи
Програм- метки «Label»
мный счёт-
чик Регистры обще- Шина
го назначения данных
Шина
Память команд 32 х 8
программ
jmp Label

Дешифра-
тор команд AЛУ

Рис. 7.6. Пути передачи данных при команде безусловного перехода jump label

112
Регистр состояния. При первом взгляде на описание регистра состояния
в документации на микроконтроллеры AVR вас может удивить количество
битов в нем и кажущаяся сложность выполняемых ими функций. После
включения регистра состояния структура AVR будет иметь вид, показанный на
рисунке 7.7.

Програм-
мный счёт-
чик Шина
данных
Шина Регистры
Память команд общего наз-
программ начения
32 х 8

Дешифра-
тор команд AЛУ

Регистр состоя-
ния SREG

Рис. 7.7. Архитектура AVR с учетом регистра состояния SREG

Регистр состояния является частью адресного пространства ввода–вывода


и в нём устанавливаются признаки результата арифметических операций.
Отдельные биты регистра имеют следующее назначение (таблица 7.1):

Таблица 7.1
Биты регистра состояния
Номер
Обозначение Назначение
бита
0 С Флаг переноса–заёма
1 Z Флаг нуля
2 N Флаг отрицательного результата
3 V Флаг переполнения
4 S Флаг знака
5 H Флаг переноса между тетрадами (полупереноса)
6 T Временный бит
7 I Бит общего разрешения прерываний
Основным признаком в регистре состояния является флаг нуля, который
устанавливается в «l», когда результатом операции является ноль. Многие
команды могут изменить этот флаг, что делает его неудобным для передачи
113
параметров. Вместо него лучше использовать флаг переноса С, который
применяется для этих целей другими процессорами во многих приложениях. В
ряде случаев более удобным может оказаться использование временного бита
Т, с помощью которого можно задавать значение одного бита, в качестве
условия ветвления программы.
Как и в большинстве микроконтроллеров и микропроцессоров, флаг
переноса–заёма С в AVR устанавливается после каждой операции сложения
или вычитания. Он также используется для временного сохранения старшего
или младшего бита операнда при операциях обыкновенных и циклических
сдвигов, что типично для многих микроконтроллеров. При сложении флаг
переноса устанавливается в «l», если результат больше $FF, а при вычитании –
если результат меньше нуля.
Флаг переноса между тетрадами Н (полуперенос) устанавливается после
выполнения сложения или вычитания, в процессе которого произошел перенос
из младшей или заем в старшей тетраде (полубайте). Например, если прибавили
7 к содержимому регистра, в котором хранилось число 9:
add R16, R17 ; R16 = 9, R17 = 7
Регистр R17 содержит число 7, и после сложения с содержимым R16, в
котором хранится 9, результатом будет число $10, которое не может быть
размещено в младшей тетраде. В этом случае будет установлен флаг Н в реги-
стре состояния. Если младшая тетрада результата имеет значение меньшее, чем
10, то флаг Н будет сброшен в «0».
Как и флаги полупереноса для всех других контроллеров, бит Н меняется
при переносе–заёме из младшего шестнадцатиричного разряда (тетрады). Его
изменение не основано на десятичном результате операции. Но если требуется
контролировать декадный перенос при операциях с двоично-десятичными
числами, бит полупереноса может быть непосредственно использован при
выполнении операции сложения, как это показано выше. Если результат
операции больше или равен 10, то устанавливается значение флага Н = 1,
которое указывает, что правильный двоично-десятичный результат может быть
получен путем прибавлении числа 6.
Использование флагов отрицательного результата N, переполнения V и
знака S может показаться довольно сложным, если рассматривать, как они
устанавливаются в «1» или сбрасываются в «0» при арифметических
операциях. Следует понять их назначение, и тогда их применение станет
простым и логичным. Эти биты надо проверять только после операции
сложения или вычитания, в процессе которых используются или получаются
отрицательные числа, представляемые в дополнительном коде.

114
Флаг отрицательного результата N устанавливается в «1», если старший
(знаковый) разряд результата (бит 7) равен «1». Когда знаковый разряд
установлен в «1», это часто означает, что результат отрицателен. Следует,
однако, отметить, что знаковый разряд может быть установлен в «1» и в
результате логической операции. В этом случае знаковый разряд не должен
использоваться в каких-либо других целях, кроме указания на то, что он был
установлен в 1 после соответствующей операции.
Флаг переполнения V устанавливается при сложении или вычитании двух
чисел со знаком, представленных в дополнительном коде (дополнение до двух)
в случае, если значение полученного результата выходит за пределы
допустимого диапазона, который для восьмибитового числа со знаком со-
ставляет от минус 128 до плюс 127. При сложении двух положительных чисел
флаг V устанавливается в «1» если сумма больше 127, в случае сложения двух
отрицательных чисел – если результат меньше минус 128. Этот флаг
показывает, что результат не является правильным 8-разрядным числом со
знаком.
Вы можете сказать, что на самом деле результат является правильным,
только его нельзя разместить в 8-разрядном регистре, и будете правы. Для раз-
решения этой ситуации служит флаг знака S, который позволяет представить
результат сложения или вычитания 8-разрядных чисел в дополнительном коде в
виде 9-разрядного числа со знаком. Если после операций сложения или
вычитания чисел со знаком флаг переполнения V установлен в «1», то резуль-
татом будет 9-разрядное число со знаком, причем старшим (знаковым) раз-
рядом числа является флаг S, а восемь бит результата будут храниться в 8-
разрядном регистре–приемнике.
Бит Т – временный бит, который используется для хранения результата
команд BST и BLD или для передачи однобитовых параметров. Хотя бит Т не
изменяется никакими другими командами, он должен быть сохранен вместе с
другими битами регистра состояния при выполнении прерываний или
подпрограмм, которые могут изменить содержимое этого регистра.
Последним является общий флаг разрешения прерываний I. Когда он ус-
тановлен в «1», запросы прерываний будут обслуживаться. Если флаг I
сброшен в «0», то обслуживание прерываний будет отложено до тех пор, пока
этот флаг не будет установлен в «1».
Адресация устройств ввода-вывода и памяти SRAM. Понимание того,
как адресуются регистры общего назначения, а как – SRAM, может быть
затруднено. Это верно, когда контроллеры младших моделей семейства
AVR1200 работают вместе с контроллерами AVR8515, реализующими полный
набор функций. Реализация обращения к памяти, регистрам общего назначения

115
и регистрам ввода-вывода может показаться сложной, так как существует два
способа обращения к ним. Первый способ – прямое обращение к каждой из
этих областей данных. Этот способ прямого доступа является основным при
выполнении арифметических операций. Второй способ доступа объединяет все
три области регистров и памяти, включая внешнюю память, образуя общее
адресное пространство данных (рисунок 7.8).
Регистры ввода-вывода – это 64-байтовый блок, который содержит как
регистры управления процессором, так и регистры интерфейса ввода-вывода.
Команды in и out используются для обмена данными между РОН и регистрами
ввода-вывода. Внутренняя память SRAM – это блок оперативной памяти для
хранения переменных. Эта память доступна при помощи команд load и store,
которые позволяют также обращаться к РОН и регистрам ввода-вывода,
которые располагаются в соответствующих областях адресного пространства
данных.

Память Область регист- Область реги- Адресное пространст-


программ ров общего на- стров ввода– во данных
значения вывода
$0000
32 х 8
$0020
64 х 8
Команды $0060
Внутренняя
память
SRAM

Внешняя
память
$FFFF

Рис. 7.8. Организация адресного пространства процессоров AVR

Последней областью в адресном пространстве данных является внешняя


память. Вся оставшаяся часть 64-килобайтного пространства данных может
быть использована для адресации внешней памяти SRAM или устройств вво-
да-вывода. Хотя различные модели микроконтроллеров семейства AVR
отличаются составом регистров, имеется ряд регистров, общих для всех
моделей, которые располагаются по одним и тем же адресам (таблица 7.2).
Таблица 7.2
116
Адреса в пространстве регистров ввода-вывода
Адреса
Регистры Область Имя
Назначение
ввода-вывода данных регистра
$3F $5F SREG Регистр состояния
$ЗЕ $5Е SPH Указатель стека – старший байт
$3D $5D SPL Указатель стека – младший байт
$ЗВ $5В GIMSK Регистр маски прерываний
$ЗА $5А GIFR Регистр запросов прерываний
$35 $55 MCUCR Регистр управления микроконтроллера

Другие регистры выполняют функции ввода-вывода, которые специфич-


ны для определенных моделей микроконтроллеров.
При выполнении арифметических операций используются только
регистры общего назначения, и их адреса не зависят от того, используется ли
для обращения к ним адреса РОН (при использовании арифметических
инструкций) или адресное пространство данных (при использовании команд
load, store). Обращение к регистрам ввода-вывода производится либо при
помощи команд in, out с использованием области адресов ввода-вывода или
при помощи команд load, store в адресном пространстве данных. Если
используются команды load, store, то к абсолютному адресу должно быть
прибавлено начальное смещение $20 (десятичное число 32), как показано в
приведенной выше таблице адресов регистров ввода-вывода.
Обращение к внутренней памяти SRAM или внешней памяти произво-
дится только через адресное пространство данных при помощи команд load,
store, которые используют абсолютные адреса. Если надо считать операнд из
внешней памяти, то обращение займет на один или два цикла больше, чем при
использовании внутренней памяти.
Команды load, store позволяют использовать индексные регистры. В
адресном пространстве РОН последние 6 регистров могут использоваться как
три 16-разрядных индексных регистра, содержимое которых загружается либо
из адресного пространства данных, либо из памяти программ. Эти индексные
регистры имеют имена X (адреса $1А–$1В), Y (адреса $1C–$1D) и Z (адреса
$1E–$1F). Индексный регистр Z может также использоваться для чтения из
памяти программ отдельных байтов, что позволяет хранить в ней таблицы
данных.
После всего указанного структура AVR становится такой, как показано на
рисунке 7.9. В этой структуре показана шина адреса, которая используется для

117
адресации регистров и оперативной памяти. Адрес может формироваться
разными способами, например, он может быть указан в команде или
определяться с использованием индексного регистра
Младшие модели микроконтроллеров AVR1200 не содержат оперативной
памяти SRAM и не выполняют команды обращения к РОН и регистрам ввода-
вывода, использующие единое адресное пространство данных (рисунок 7.10).
В этой модели имеются три отдельных адресных пространства для памяти
программ, РОН и регистров ввода-вывода, которые не объединяются в единое
адресное пространство данных. К регистрам ввода-вывода можно обратиться
только при помощи команд in и out, а команды load, store фактически не
используются. Младшие модели AVR имеют также только один индексный
регистр Z, расположенный по адресам $1E–$1F в области регистров общего
назначения. Этот индексный регистр может использоваться для выборки
данных, хранящихся или в РОН, или в памяти программ.

Шина
адреса

Регистры вво-
Шина да–вывода
Програм-
команд
мный счёт- Шина
чик Память SRAM внут- данных
ренняя / внешняя
Адрес РОН
Память
программ X
Y
Z
Дешифра-
тор команд

АЛУ

Регистр со-
стояния
SREG

Рис. 7.9. Структура AVR с памятью SRAM и регистрами ввода-вывода

118
Память Область регист- Область реги-
программ ров общего на- стров ввода–
значения вывода
$0000 $0000
32 х 8 64 х 8
$003F
$001F
Команды

Рис. 7.10. Области памяти в архитектуре младших моделей AVR

Программный счетчик и стек. Реализация стека – главное отличие


между младшими моделями AVR и другими микроконтроллерами этого
семейства. В младших моделях AVR стек реализован в виде оперативной
памяти типа LIFO («последний пришел – первый ушел»), добавленной к
программному счетчику. Когда вызывается подпрограмма или происходит
запрос прерывания, содержимое счетчика команд вводится в этот стек (рисунок
7.11). В AVR1200 такой стек имеет глубину в три элемента. Это значит, что вы
можете иметь только три вложенные подпрограммы или два вложенных вызова
функции в активном обработчике прерывания. Данное обстоятельство
значительно ограничивает возможности этого микроконтроллера.
Структурная схема для AVR1200 и других младших моделей приведена
на рисунке 7.12.
Другие модели семейства AVR не имеют таких жестких ограничений на
объем стека, так как они используют для размещения стека внутреннюю память
SRAM и, возможно, внешнюю память (рисунок 7.13). Такая структура
позволяет использовать в качестве стека весь доступный объем оперативной
памяти.
Использование значительного объема памяти RAM в качестве стека дает
ряд преимуществ при разработке приложений. Окончательная структурная
схема микроконтроллеров AVR имеет вид, показанный на рисунке 7.14.
119
Програм-
мный счёт-
Шина чик к памяти
команд программ

Стек про-
граммного
счётчика

Рис. 7.11. Счетчик команд и стек в младших моделях AVR

Трёхуров-
невый стек Шина
Регистры
данных
ввода–
Шина Програм- вывода
команд мный счёт-
чик
Адрес
РОН
Память
программ

Z
Дешифра-
тор команд AЛУ
Шина
адреса

Регистр состоя-
ния SREG

Рис. 7.12. Структурная схема младших моделей AVR с учетом стека

120
Програм-
мный счёт-
Шина чик к памяти
команд программ

Указатель Шина
стека адреса

SRAM

Рис. 7.13. Программный счетчик и стек в старших моделях AVR

Прерывания. Реализация прерываний в AVR является специфичной для


конкретных приложений, так как легко можно написать обработчик
прерываний, который абсолютно не будет менять контекстовую информацию
контроллера (содержимое стека, регистра состояния и других регистров), или
такой, который будет сохранять содержимое всех РОН и некоторых
специальных регистров.
Если произошел запрос прерывания и флаг I в регистре состояния
установлен в «1», то адрес следующей команды сохраняется в стеке, а
выполнение программы продолжается с адреса, хранящегося в соот-
ветствующем векторе прерывания. Когда запрос прерывания получен и
программа перешла по этому вектору, флаг I сбрасывается в «0», чтобы
предотвратить возможность вызова нового прерывания во время обработки
прерывания текущего.
Флаг I будет снова установлен в «1» в конце обработчика прерывания,
когда выполняется команда возврата reti. Он также может быть установлен
в «1» в процессе обработки (после сохранения контекстовых регистров),
чтобы разрешить вложенные прерывания. Средние и старшие модели AVR
могут обрабатывать столько вложенных прерываний, на сколько хватит объема
стека для сохранения содержимого программного счетчика и регистров кон-
текста.

121
Шина
адреса

Регистры вво-
Шина Указатель
да–вывода
команд стека
Шина
Память SRAM внут- данных
ренняя / внешняя
Програм- Адрес РОН
мный счёт-
чик X
V
Z
Память
программ

Дешифра-
тор команд АЛУ

Регистр со-
стояния
SREG

Рис. 7.14. Полная архитектура процессора AVR с указателем стека

Младшие модели имеют ограниченный объем стека (три позиции),


который может быстро переполниться при выполнении вложенных прерываний
или подпрограмм.
Способы адресации данных. Основным способом доступа к данным
является прямое обращение к регистрам общего назначения. Обычно в формате
команды отводятся пять бит, которые позволяют адресоваться к любому
регистру. Прямое обращение к одному из РОН показано на рисунке 7.15.
Обычно такая адресация используется для операций с содержимым одного
регистра (инкремент, декремент, инверсия знака, очистка и т. д.). Некоторые из
этих команд дважды повторяют адрес в коде команды.
Регистры общего назначения. Команды, оперирующие с двумя
регистрами, действуют, в основном, аналогичным образом. В этих командах
регистр-приемник (destination) указывается перед регистром-источником
(source), то есть является первым параметром. Таким образом, команда
add R0, R1
реально выполняется так: R0 = R0 + R1. Рассмотренные способы
адресации операндов называются прямой регистровой адресацией (рисунок

122
7.16).
Регистры общего
назначения
Команда
0
Код опера- Адрес Код опера-
ции ции

1F
Рис. 7.15. Прямая адресация в AVR

Регистры общего
назначения
Команда
0
Код опера- Адрес 1 Адрес 2 Код опера-
ции ции

1F
Рис. 7.16. Прямая адресация AVR к двум РОН

Операнды могут также входить в состав команды. В других контроллерах


это называется «непосредственной адресацией». В AVR будем называть этот
способ адресации «непосредственной прямой регистровой» (рисунок 1.17). Хо-
рошим примером команды с такой адресацией является ORI: так как поле
адреса составляет 4 бита, возможно обращаться только к 16 старшим РОН.

Команда

Код опера- Непосредствен- Адрес Непосредствен-


ции ный операнд ный операнд

Рис. 1.17. Непосредственная адресация AVR

Это, очевидно, окажет влияние на то, как разместить данные в рабочих


регистрах. Чтобы избежать ошибок, можно использовать в качестве рабочих

123
16 старших регистров общего назначения, имеющих адреса с $10 по $1F.
Последняя форма прямой адресации, применяемая для доступа ко всему
объему адресуемой памяти, использует второе слово команды для указания
16-разрядного адреса. При этом способе адресации данные, размещенные в
любой точке адресуемой памяти, поступают в РОН или выбираются из них.
Есть две особенности, на которые стоит обратить внимание при такой адре-
сации. Первая особенность – опять доступны только 16 старших РОН. Вторая
особенность – команды с такой адресацией не реализуются в младших моделях
AVR1200. В этих моделях для передачи данных между РОН и набором
регистров ввода-вывода используются команды in и out, реализующие прямую
адресацию двух регистров.
Последний способ обращения к данным – косвенная адресация. По
технической документации на микроконтроллеры AVR видно, что в ней
используется пять рисунков для описания этого способа адресации, реализация
которого иллюстрируется на рисунке 7.18. На этом рисунке показана только
косвенно-регистровая адресация и не приведены ее варианты с предекрементом
и постинкрементом. Основные команды косвенной адресации используют
содержимое индексных регистров в качестве адреса для выборки данных. Это
похоже на индексную адресацию в большинстве других микроконтроллеров.
Это единственный режим, доступный в младших моделях AVR, где для
обращения к РОН может использоваться только индексный регистр Z, а РОН и
регистры ввода-вывода не образуют общее регистровое пространство.

Регистры общего
назначения
Команда

Код опера- Смещение Код опера-


ции ции
Индексные ре-
гистры X, Y или
Z
+
SRAM

Рис. 7.18. Косвенная адресация к РОН-памяти данных в AVR


124
При обычной косвенно-регистровой адресации содержимое индексного
регистра не изменяется при выполнении операции. Для получения эффек-
тивного адреса можно использовать положительное смещение, прибавляемое к
содержимому индексного регистра. Такой способ адресации называется
косвенно-регистровой адресацией со смешением. Смещение может иметь
значение от нуля до 63 и прибавляется к величине, хранящейся в индексном
регистре. Такой способ адресации наиболее эффективен при обращении к
структуре данных, когда смещение указывает на нужный элемент в структуре.
Полученный эффективный адрес не сохраняется после операции.
Есть и другие варианты косвенной адресации: косвенно–регистровая с
предекрементом и косвенно-регистровая с постинкрементом. При их исполь-
зовании происходит изменение содержимого индексного регистра в процессе
выполнения команды – либо до обращения к памяти (предекремент), либо
после (постинкремент). Значительным преимуществом этих команд является
возможность организации стека, кроме того они могут служить для индексации
элементов в структурах данных. Это позволяет эффективно применять AVR
при разработке компиляторов для языков высокого уровня, которые
используют локальные переменные.
В технической документации для микроконтроллеров AVR показано, ка-
ким образом можно обеспечить обращение к данным, размещенным в памяти
программ, и как изменяется содержимое программного счетчика.

Выводы
Эффективность микроконтроллеров семейства AVR поддерживается
наличием флаш-памяти для хранения программ с возможностью
внутрисхемного программирования. Но наличие только 32 регистров общего
назначения является ограничением при написании прикладных программ.
Новые модели AVR обладают дополнительными периферийными
устройствами и вариантами реализации памяти, что значительно обогащает
данное семейство микроконтроллеров.

Вопросы для обсуждения


1. Баланс между использованием РОН микроконтроллера и памяти RAM.
2. Возможности внутрисхемного программирования в семействе AVR.
3. Создание структур данных в микроконтроллерах семейства AVR.

125
Контрольные вопросы
1. Архитектура процессора микроконтроллеров семейства AVR.
2. Аппаратные средства микроконтроллеров семейства AVR.
3. Прерывания в системе микроконтроллеров семейства AVR.
4. Программирование в системе микроконтроллеров семейства AVR.
5. Средства разработки ПО для микроконтроллеров семейства AVR.
6. Система команд микроконтроллеров семейства AVR.
7. Битовые команды микроконтроллеров семейства AVR.

Список рекомендуемой литературы


1. Хартов В.Я. Микроконтроллеры AVR. Практикум для начинающих /
В.Я. Хартов. – М: Изд-во МГТУ им. Н.Э. Баумана, 2007. – 240 с.
2. Баранов В.Н. Применение микроконтроллеров AVR: схемы,
алгоритмы, программы / В.Н. Баранов. – М.: Издательский дом «Додэка–ХХ1»,
2004. – 288 с.

Список рекомендуемых периодических изданий


1. International Journal of Electrical Engineering Education. FindArticles.com.
[Электронный ресурс] http://findarticles.com/p/articles/
2. Компоненты и технологии // Для специалистов, занятых разработкой,
производством, практическим программированием и применением изделий
электронной техники, а также ученым, преподавателям и студентам
технических вузов.

126
БИБЛИОГРАФИЧЕСКИЙ СПИСОК

1. Мирский Г.Я. Микропроцессоры в измерительных приборах / Г.Я.


Мирский. – М.: Радио и связь, 1984. – 160 с.
2. Шилейко А.В. Микропроцессоры / А.В. Шилейко, Т.И. Шилейко. – М.:
Радио и связь, 1986. – 112 с.
3. Сташин В.В. Проектирование цифровых устройств на однокристальных
микроконтроллерах / В.В. Сташин, А.В. Урусов, О.Ф. Мологонцева. – М.:
Энергоатомиздат, 1990. – 224 с.
4. Голубцов М.С. Микроконтроллеры AVR: от простого к сложному /
М.С. Голубцов, А.В. Кириченкова. – М.: СОЛОН–Пресс, 2006. – 304 с.
5. Предко М. Руководство по микроконтроллерам. Т. 1 / М. Предко. – М.:
Постмаркет, 2001. – 416 с.
6. Басманов А.С. Микропроцессоры и однокристалные микроЭВМ:
Номенклатура и функциональные возможности / А.С. Басманов, Ю.Ф.
Широков под ред. В.Г. Домрачёва. – М.: Энергоатомиздат, 1988. – 128 с.
7. Варламов И.В. Микропроцессоры в бытовой технике / И.В. Варламов,
И.Л. Касаткин. – М.: Радио и связь, 1990. – 104 с.
8. Никонов А.В. Однокристальные микроЭВМ и микроконтроллеры: учеб.
пособие / А.В. Никонов. – Омск: Изд-во ОмГТУ, 2009. – 56 с.
9. Токхейм Р. Основы цифровой электроники. – М.: Мир, 1998. – 392 с.
10. Денисов К.М. Микропроцессорная техника. Конспект лекций
[Электронный ресурс] . – URL: http://ets.ifmo.ru/denisov/lec/oglavlen.htm .
11. Евстифеев А.В. Микроконтроллеры AVR семейств Tiny и Mega фирмы
ATMEL / А.В. Евстифеев. – М.: Издательский дом «Додэка–XXI», 2004. – 560 с.

127
ОПРЕДЕЛЕНИЯ, ОБОЗНАЧЕНИЯ И СОКРАЩЕНИЯ
БИС, СБИС – категории интегральных схем (большие интегральные
схемы, сверхбольшие интегральные схемы). Классификация ведётся по числу
элементов, расположенных на полупроводниковом кристалле: несколько
десятков элементов – это интегральные схемы малой степени интеграции. При
наличии элементов в количестве от 100 и до 1 000 шт. – средней степени
интеграции; при количестве от 1 000 и до 10 000 – большой степени интеграции
(БИС); и при числе более 10 000 – сверхбольшие интегральные схемы (СБИС).
Современное состояние технологий электронной промышленности позволяет
создавать СБИС при количестве элементов в несколько миллионов на
кристалле площадью примерно 1717 мм2.
ПЛИС – (EPLD, Erasable (Electrically) Programmable Logic Device)
перепрограммируемая логическая интегральная схема: стираемое
программируемое логическое устройство или логическое устройство с
электрическим программированием.
ШИМ – широтно-импульсная модуляция. ШИМ есть импульсный сигнал
постоянной частоты и переменной скважности, то есть отношения периода
следования импульса к его длительности. С помощью задания скважности
(длительности импульсов) можно менять среднее напряжение на выходе ШИМ.
ALU – арифметико-логическое устройство;
ARM – семейство процессоров ARM стандарт де-факто для
встраиваемых и мобильных систем. Представляет собой некоторый
конструктор, с помощью которого заказчик набирает себе те возможности,
которые ему нужны. Поэтому линейка продуктов фирмы ARM состоит из
базовых процессорных ядер и их «дочек», в которых реализованы различные
дополнительные возможности. В настоящее время лицензируются четыре
полностью 32-разрядных базовых ядра: ARM7, ARM9, ARM9E-S и ARM10.
Известны два семейства совместимых с ARM процессоров: StrongARM,
разработанное совместно с корпорацией Digital Electronics, и XScale,
поставляемое корпорацией Intel.
ASIC (Application-Specific Integrated Circuit) – проблемно-ориентиро-
ванная (специализированная) интегральная микросхема (заказная). Микросхема
для выполнения набора специальных функций, например, для управления
устройством, обычно разрабатываемая под конкретного заказчика. Их новой
разновидностью стали программируемые заказные интегральные схемы
(Programmable ASIC), функциональность которых можно со временем
наращивать.
CAD (Computer-Aided Design) – система автоматизированного
проектирования, САПР.

128
CAN (Controller Area Network) – протокол CAN – асинхронная
последовательная коммуникационная шина, использующая в качестве среды
передачи витую пару проводов. Протокол был предложен фирмой Bosch в
конце 1980-х годов для автомобильной промышленности (бортовая сеть
автомашины), затем он был стандартизован (ISO-11898) и SAE. Протокол CAN
реализует первый и второй уровень эталонной модели OSI. При скорости
передачи 1 Мбит/с длина шины может достигать 40 метров. При меньших
скоростях длину можно увеличить до километра. CAN присутствует в двух
версиях: версия А задает 11-битную идентификацию сообщений (т. е. в системе
может быть 2048 сообщений ), версия B – 29-битную (536 миллионов
сообщений). Версия В, часто именуемая full-CAN, вытесняет версию А,
которую называют также basic-CAN.
CISC (Complex Instruction Set Computers) – устройства с полной
(сложной) системой команд. Выполняют большой набор команд с развитыми
возможностями адресации (непосредственная, индексная, и т. д.). Это
традиционная архитектура процессоров с широким набором различных
машинных команд переменной длины и разным временем их исполнения в
противоположность RISC-процессорам. Процессоры семейств 80x86 и 680x0
относятся к CISC-процессорам, однако часто внутри самих CISC-процессоров
используется RISC-архитектура ALU, CPU, EPIC, RISC, VLIW.
CMOS (Complementary Metal-Oxide Semiconductor, Complementary
MOS) – комплементарная структура металл–оксид–полупроводник, КМОП:
технология изготовления микросхем – характеризуется меньшим
быстродействием, но высокой плотностью размещения элементов,
устойчивостью к шумам и малым потреблением энергии.
CPU (Central Processing Unit) – центральный процессор – часть
компьютера, непосредственно выполняющая машинные команды, из которых
состоят программы. Содержит регистровый файл (register file), устройство
управления (control unit), устройство управления памятью (MMU),
арифметико-логическое устройство (ALU) и другие блоки.
DC – дешифратор адреса.
DMA (Direct Memory Access) – контроллер прямого доступа к памяти –
прямой доступ к памяти (ПДП) – метод высокоскоростной пересылки данных
по общей шине между ОЗУ и периферийным устройством (например, жёстким
диском) минуя процессор, который на это время отключается от всех шин. ПДП
несколько замедляет работу процессора. Иногда под DMA подразумевается
микросхема DMAC, осуществляющая контроль обмена в режиме ПДП. DMA –
это частный случай bus mastering (захват шины).
DPH, DPL – однобайтовые регистры специального назначения.
DPTR – регистр–указатель.

129
DSP – цифровые сигнальные процессоры. Цифровой сигнальный
процессор (Digital signal processor; сигнальный микропроцессор; процессор
цифровых сигналов) – специализированный микропроцессор, предназначенный
для цифровой обработки сигналов, обычно в реальном масштабе времени.
EEPROM (E2PROM) (Electrically Erasable Programmable Read-Only
Memory) – электрически стираемое программируемое постоянное
запоминающее устройство (ЭСППЗУ) – электрически стираемая память – тип
полупроводникового ППЗУ, в котором для стирания и перепрограммирования
используется электрические сигналы, подаваемые либо из компьютера, либо с
внешнего устройства (программатора) на специальные ножки микросхемы.
Допускает от 10 до 100 тыс. циклов перезаписи. ЭСППЗУ заметно вытеснено
флэш-памятью.
EPIC (Explicitly Parallel Instruction Computing) – вычисления с
заданным параллелизмом команд. Технология EPIC – технология,
используемая в архитектуре IA-64 набора команд 64-разрядного процессора
Merced, разработанного корпорациями Intel и Hewlett-Packard. В этой
технологии компилятор явным образом говорит процессору, какие команды
можно исполнить параллельно, а какие зависят от других команд.
Ethernet (сеть, стандарт, технология) – протокол канального уровня и
передающая среда ЛВС с шинной архитектурой, разработанная в 1973 г.
Регламентируется стандартами IEEE 802.3 и ISO 8802.3. Регламентирует в
качестве передающей среды коаксиальный кабель, метод управления доступом
CSMA/CD, скорость передачи данных 10 Мбит/с, размер пакета от 72 до
1526 байтов, а также метод кодирования данных. В одной сети Ethernet может
работать до 1024 рабочих станций. Развитие этой технологии для сетей
100 Мбит/с – Fast Ethernet.
FireWire – название высокоскоростной последовательной локальной
шины P1394 фирмы Apple. FireWire (в процессе стандартизации она получила
название IEEE 1394) обеспечивает скорость передачи до 400 Мбит/с,
поддерживает P&P, а также позволяет подсоединять несколько различных
устройств (теоретически – до 63) через один разъём.
Flash – флэш-память: энергонезависимая электрически
перепрограммируемая постоянная память, которая может быть записана и
прочитана так же, как и динамическое ОЗУ, но сохраняет своё содержимое без
питания и регенерации, как EPROM. Применяется в очень многих видах
электронных устройств.
FPGA (Field Programmable Gate Array) – программируемая вентильная
матрица, базовый матричный кристалл (БМК): тип вентильной матрицы,
которая может быть запрограммирована самим пользователем (в условиях
эксплуатации).
HDD – жёсткий диск (винчестер).
130
host (хост) – общий термин, описывающий нечто, содержащее ресурс и
предоставляющее к нему доступ. Часто используется как префикс, например
host computer.
ICE (in-circuit emulator) – внутрисхемный эмулятор – программно-
аппаратное средство разработки прототипных, например процессорных, плат.
Вместо процессора подсоединяется плата эмулятора, который вырабатывает
все необходимые сигналы и исполняет программы, но с трассировкой основных
сигналов и расширенными возможностями отладки.
ISP (In-System Programming) – внутрисистемное программирование –
внутрисхемное программирование установленных на плату ПЛИС.
MIPS – (Microprocessor without Interlocked Pipeline Stages)
микропроцессор без аппаратных блокировок между пятью ступенями
конвейера. MIPS-процессор, MIPS-архитектура – это проект открытой
процессорной RISC-архитектуры, разрабатывавшийся в середине 80-х годов
группой под руководством профессора Дж. Хеннесси в Стэнфордском
университете для исполнения ОС Berkeley Standard UNIX, а также
коммерческие варианты процессоров, выпускаемые компаниями AMD, BRCM,
IDT, Marvell, NEC, PMC, Toshiba.
MUX – мультиплексоры.
OSI (Open Systems Interconnection) – взаимодействие открытых систем –
эталонная модель OSI – семиуровневая модель протоколов передачи данных
(стандарт ISO-7498) для обеспечения взаимодействия открытых систем. В
модели OSI все сетевые функции разделены на уровни таким образом, что все
вышележащие уровни пользуются услугами нижележащих через
стандартизованные интерфейсы. Такая структура позволяет модифицировать
любой из уровней, не затрагивая остальные. Уровни OSI снизу вверх:
физический (physical layer), канальный (data link layer), сетевой (network
layer), транспортный (transport layer), сеансовый (session layer),
представления данных (presentation layer) и прикладной (application layer).
Поскольку уровни с первого по третий управляют физической доставкой
данных по сети, то их иногда называют уровнями среды передачи данных
(media layers).
РС – счётчик команд.
phase-locked loops – система фазовой автоподстройки частоты.
PowerPC (Power Performance Chip) – процессор PowerPC – это
семейство 32- и 64-разрядных микропроцессоров, разработанных альянсом
IBM, Motorola и Apple Computer (1993 г.). Широко применяются в
компьютерах PowerMac (Apple Computer), RS/6000 и AS/400 (IBM).
Базируется на RISC-архитектуре.
RAM (ОЗУ) – оперативное запоминающее устройство;
ROM (ПЗУ) – постоянное запоминающее устройство;
131
RISC (Reduced Instruction Set Computer) – устройства с сокращённой
системой команд. RISC-архитектура – архитектура процессоров, построенная
на основе сокращённого набора команд (их обычно в три раза меньше, чем у
аналогичных по разрядности обычных CISC-процессоров). Характеризуется
наличием команд фиксированной длины, большого количества регистров,
операций типа регистр-регистр (всех, кроме команд чтения и записи в память),
а также отсутствием косвенной адресации. Концепцию RISC разработал Джон
Кок из IBM Research, название придумал профессор университета в Беркли
Дэвид Паттерсон. Одним их недостатков RISC-архитектуры считается
фиксированная длина команд, требующая для хранения программы большего
объёма памяти. С другой стороны, она сильно упрощает конвейеризацию. Три
наиболее распространённых RISC-архитектуры: MIPS, PowerPC и ARM.
SoC (system-on-a-chip) – система на кристалле – однокристальная
система объединяет в одном кристалле все или большую часть элементов
цифровой системы. Если в качестве элементной базы для SoC выбрана ПЛИС
(программируемая логическая интегральная схема), то используется также
термин SoPC. Если SoC содержит несколько процессоров, то она именуется
однокристальным мультипроцессором (MPSoC).
SPI (Serial Peripheral Interface) – последовательный интерфейс
(периферийных устройств): передача по нему идёт бит за битом. Часто так
именуется БИС 8051 корпорации Intel, в процессорах встроенных систем
обычно интегрируется в кристалл процессора.
UART (Universal Asynchronous Receiver/Transmitter) – универсальный
асинхронный приёмопередатчик – микросхема типа Intel 8251, 8250 или 16450,
16550A, преобразующая данные, поступающие по параллельным линиям, в
данные, передаваемые последовательно, и наоборот. Так как работа
передатчика и приёмника не синхронизируется, поток данных должен
содержать сигналы о начале и конце байта данных – стартовый и стоповый
биты.
USART (Universal Synchronous-Asynchronous Receiver/Transmitter) –
универсальный синхронный/асинхронный приемопередатчик.
USB (Universal Serial Bus) – универсальная последовательная шина –
стандарт, предложенный в 1995 г. для обмена данными по недорогой шине
между персональными компьютерами и среднескоростными периферийными
устройствами. Подключение устройства не требует перезагрузки компьютера,
переконфигурирования системы или установки интерфейсной карты.
Распознавание устройства и установка соответствующего драйвера
выполняется компьютером автоматически, без вмешательства человека. К
одному порту USB можно последовательно присоединить до 127 устройств.
USB-кабель содержит четыре провода: два – витая пара, питание 5 В и общий
провод. Таким образом, через него можно запитывать маломощные устройства.
132
Поддерживается технология plug and play, а также «горячая» замена. Развитие
стандарта – принятый
в 2000 г. более быстрый совместимый с предыдущей версией стандарт USB 2.0,
обеспечивающий пропускную способность до 480 Кбайт/с.
VLIW (Very Long Instruction Word) – архитектура процессора с
командными словами очень большой длины. В такой команде объединено
несколько обычных команд, которые выполняются одновременно
(параллельно) разными функциональными блоками процессора для повышения
его быстродействия. Рост производительности достигается за счет того, что
процессору не нужно тратить время на организацию параллелизма на уровне
команд (ILP). Группирование параллельно исполняемых операций выполняется
компилятором. Таким образом, характеристики компьютера будут сильно
зависеть от качества компилятора (а ручная оптимизация программы очень
сложна). Архитектура VLIW-компьютеров была предложена в 1979 г.
сотрудником Йельского университета Дж. Фишером.

fТ – частота тактового сигнала;


АЛУ – арифметико-логическое устройство;
АФ – адресный формирователь;
АЦП – аналого-цифровой преобразователь;
БИС (СБИС) – большие (сверхбольшие) интегральные схемы;
ЗУ – запоминающее устройство;
ЗЭ – запоминающий элемент;
ИС – интегральная схема;
МК – микроконтроллер;
МП – микропроцессор;
ОЗУ (RAM) – оперативное запоминающее устройство;
ОмК – однокристальный микроконтроллер;
ОмЭВМ – однокристальная микроЭВМ;
ОС – операционная система;
ПАВ – поверхностная акустическая волна;
ПО – программное обеспечение;
ПДЧ – предварительный делитель частоты;
ПЗУ (ROM) – постоянное запоминающее устройство;
ППЗУ – перепрограммируемое постоянное запоминающее устройство;
ЭППЗУ – электрически перепрограммируемое постоянное запоминающее
устройство;
РПЗУ – многократно перепрограммируемые ПЗУ;
РОН – регистр общего назначения;
СВТ – средства вычислительной техники;
УВХ – устройство выборки-хранения;
133
УСч – усилитель считывания;
УФ – ультрафиолетовое излучение (облучение);
УУ – устройство управления;
ФАПЧ – фазовая автоподстройка частоты;
ЦАП – цифро-аналоговый преобразователь;
ЦП – центральный процессор;
ШД – шина данных;
ШИМ – широтно-импульсная модуляция.

134
ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ
А Запись информации ............................. 66
Адресация непосредственная ............. 95 Запуск устройства .............................. 22
– прямая регистровая ........................ 105 И
– внешней памяти .............................. 110 Инициализация .................................... 22
Адресация косвенная .................. 97, 118 Интерфейс внешний ............................ 69
– регистровая .................................... 119 Интегрирующий (АЦП) ...................... 57
Арифметико-логическое Инструкции переходов ....................... 85
устройство............................................. 26 К
Арифметические команды .................. 90 Кадр ...................................................... 55
Архитектура микропроцессорной КМОП ................................................... 19
системы .................................................. 7 Код дополнительный .......................... 27
– Принстонского университета ............ 8 Кодирование «манчестерское» ........... 45
– Гарвардского университета ............... 9 Коллизия .............................................. 52
Б Компаратор аналоговый ..................... 58
Бит чётности ........................................ 42 Компилятор-ассемблер ....................... 65
– защиты ............................................... 63 Косвенная адресация .......................... 91
– прямоадресуемый ............................. 72 Л
Булевы операции ................................. 85 Логические команды ........................... 81
Быстрый режим ................................... 52 М
В «Манчестер» ........................................ 44
Ввода-вывода порт .............................. 13 Микроконтроллер встраиваемый ....... 14
– адресация ........................................ 109 – с внешней памятью .......................... 15
Ведомый ......................................... 48, 55 МНОП-транзистор .............................. 68
Ведущий ............................................... 48 Модели младшие ................................. 88
Вектор прерывания ............................. 33 – среднего уровня ................................ 88
Вывод порта ......................................... 40 Монтажное И .................................41, 49
Выборка кристалла .............................. 46 Мощность собственная ....................... 20
Вывод синхронный ............................. 46 – ввода-вывода ..................................... 21
Г – в «спящем» режиме .......................... 21
Генератор тактовый ............................ 23 Н
Д Набор команд ....................................... 81
Дополнения механизм образования ... 28 Напряжения преобразование .............. 37
Данных ввод ........................................ 40 Начальная установка ........................... 76
– адресация ........................................ 109 О
– команды передачи ........................... 84 Обмен последовательный ................... 42
Доминантное (значение) ..................... 56 – асинхронный ..................................... 42
Ж – синхронный ....................................... 45
Ждущее состояние .............................. 49
ОмК (однокристальный
З микроконтроллер) ................................. 6

135
ОмЭВМ (однокристальная – общего назначения ................... 94, 106
микроЭВМ) ............................................ 4 – состояния ............................. 32, 83, 107
Оперативная память ............................ 13 – восстановление ................................. 33
Организация раздельными шинами ... 10 Регистров адресация ........................... 95
– изолированными шинами ................ 10 Регистровые инструкции .................... 81
– мультиплексируемой шиной ........... 11 Регистровые банки .............................. 93
– общими шинами ............................... 11 Регистры основные ............................. 94
П – индексные ....................................... 111
Память данных .................................... 78 Рeгистpy доступ ................................... 94
– программ ..................................... 13, 72 Редактор исходных текстов ................ 65
– внешняя ............................................. 72 Режимы адресации .............................. 80
– программируемая ............................. 62 Режим ожидания ................................. 92
Параллелизм .......................................... 9 Рецессивное (значение) ....................... 56
«Плавающее» состояние ..................... 50 С
Подпрограммы .................................... 30 Сброса цепь .......................................... 13
Поллинг ................................................ 32
Симметричность процессора ................ 7
Полуперенос ...................................... 108
Симулятор ............................................ 65
Порог переключения ........................... 20
Синхронизация микроконтроллера .... 73
Порт последовательный ...................... 13
Синхросигнал ...................................... 43
– ввода-вывода ..................................... 40
Система команд ................................... 80
Прерывания .................................. 31, 115
Система на кристалле ........................... 4
– аппаратные ........................................ 33
Слово состояния .................................. 79
– вложенные ........................................ 32
Способ ввода ....................................... 57
– вектор ................................................ 33
– запрос ................................................ 31 Стандартный режим ............................ 50
– обработчик ........................................ 32 Старт-бит ............................................. 42
– программные ..................................... 33 Стек .................................................... 113
Программатор ...................................... 66 Стоп-бит ............................................... 43
Программа-монитор ............................ 64 Схема с открытым стоком .................. 41
Программирование внутрисистем- Счётчик программный .................. 24, 99
ное ........................................................ 63 Т
Промежуточное преобразование ........ 57 Таймер ............................................ 13, 34
Протокол асинхронной последова- – сторожевой ........................................ 13
тельной связи ....................................... 43 Тактовый генератор ............................ 13
– синхронной последовательной Тахометр .............................................. 35
связи ..................................................... 46 У
– CAN ................................................... 55 Устройства периферийные ............... 101
– I2C ..................................................... 49 Управляющий автомат ........................ 69
– Microwire ........................................... 48 Указатель стека ................................... 79
– RS-232 ............................................... 43
– SPI ...................................................... 47
Р Ф
Регистр специальных функций .......... 71
Файл входных воздействий ................ 65
136
Флаг ...................................................... 92 Чтение информации ............................ 67
Формат команды ................................. 51 Ш
Функции ............................................... 30 Шины разрядные ................................. 67
Ц ШИМ .................................................... 35
Центральное процессорное Э
устройство .............................................12 Эмулятор схемный ........................ 64, 66
Цикл записи ......................................... 75
– чтения .......................................... 75, 76
Цифровой порт .................................... 13
Цифровой сигнальный процессор ...... 16

137
ПРИЛОЖЕНИЯ
Приложение А
Характеристики отечественных
однокристальных микроЭВМ
Примером последовательного развития отечественных ОмЭВМ может
служить таблица А1 [6, 7]. Наиболее доведённой до практического применения
являлась серия 1850. Расположение названий типов ОмЭВМ по строкам
отражает развитие этого направления во времени. Заметен рост
вычислительных ресурсов за счёт увеличения ёмкости ПЗУ программ, в том
числе и в появлении внешнего ПЗУ программ. Улучшалась технология
изготовления ПЗУ, ведущая к программированию с помощью простых
аппаратных средств, расширялась система команд. Возрастала разрядность
шины данных и увеличивалось значение тактовой частоты. При этом снижалась
мощность, потребляемая от источника питания.
Появились встроенные таймеры, обеспечивалась обработка запроса на
прерывание работы основной программы. Также появились внутренние АЦП,
ЦАП и входное УВХ.

Таблица А1
Характеристики БИС отечественных ОмЭВМ
Тип (аналог) Значения параметров
КБ1013ВК1-2 Разрядность шины данных: 4. РПИТ: 200 мкВт. Внутреннее ПЗУ
программ: 29 страниц 63×8 бит.
КБ1013ВК4-2 РПИТ: 200 мкВт. Внутреннее ПЗУ программ: 44 страницы 63х8 бит.
К1813ВЕ1 fT: 6,67 МГц. Внутреннее ПЗУ программ: 4608 бит (192х24). Тип
(i2920) внутреннего ПЗУ: УФ ППЗУ. Внутреннее регистровое ОЗУ: 1 Кбит
(40х25). Примечание: 21 команда; внутренние АЦП, ЦАП; входное УВХ.
КР1814ВЕ2 Разрядность шины данных: 4. Внутреннее ПЗУ программ: 1 К бит
(TMS1000NLL) (16х64 байт). Тип внутреннего ПЗУ: масочное. Внутреннее регистровое
ОЗУ: 64х4 бит. Примечание: 43 команды.
К1814ВЕ3 Разрядность шины данных: 4. fT: 0,35 МГц. Внутреннее регистровое
(TMS1099) ОЗУ: 64х4 бит. Примечание: 43 команды.
КР1814ВЕ4 Разрядность шины данных: 4. Внутреннее ПЗУ программ: 1 Кбит. Тип
(TMS1200) внутреннего ПЗУ: масочное. Внутреннее регистровое ОЗУ: 64х4 бит.
Примечание: 43 команды.
КР1816ВЕ31 Разрядность шины данных: 8. fT: до 12 МГц. Порты ввода-вывода:
(i8031АН) (кол-во)х(разрядн.): 4х8. UПИТ: 5 В; IПИТ: 150 мА. Внутреннее
регистровое ОЗУ: 128х8 бит. Внешняя память программ: 64 Кх8.
Внешняя память данных: 64 Кх8. Кол-во таймеров/разрядность: 2/16.
Число источников прерываний; внешних выводов/приоритет: 5; 2/2.
Продолжение табл. А.1

138
КР1816ВЕ35 Разрядность шины данных: 8. fT: 6 МГц. Порты ввода-вывода: (кол-
(i8035) во)х(разрядн.): 3х8. UПИТ: 5 В; IПИТ: 135 мА. Внутреннее регистровое
ОЗУ: 64х8 бит. Внешняя память программ: 4 Кх8. Внешняя память
данных: 384х8. Кол-во таймеров/разрядность: 1/8.
КР1816ВЕ39 Разрядность шины данных: 8. fT: 11 МГц. Порты ввода-вывода: (кол-
(i8039) во)х(разрядн.): 3х8. UПИТ: 5 В; IПИТ: 110 мА. Внутреннее регистровое
ОЗУ: 128х8 бит. Внешняя память программ: 4 Кх8. Внешняя память
данных: 384х8. Кол-во таймеров/разрядность: 1/8.
КР1816ВЕ48 Разрядность шины данных: 8. fT: 6 МГц. Внутреннее ПЗУ программ:
(i8048) 1 Кх8 бит. Тип внутреннего ПЗУ: УФ ППЗУ. Внутреннее регистровое
ОЗУ: 64х8 бит. Три 8-разрядных порта ввода-вывода.
КР1816ВЕ49 Разрядность шины данных: 8. fT: 11 МГц. Порты ввода-вывода: (кол-
(i8049) во)х(разрядн.): 3х8. Внутреннее ПЗУ программ: 2 Кх8 бит. Тип
внутреннего ПЗУ: масочное (или УФ ППЗУ, без ПЗУ). Внутреннее
регистровое ОЗУ: 128х8 бит. Внешняя память программ: 4 Кх8.
Внешняя память данных: 256х8. Кол-во таймеров/разрядность: 1/8.
Примечание: 111 команд.
КР1816ВЕ51 Разрядность шины данных: 8. fT: 12 МГц. Внутреннее ПЗУ программ:
(i8051АН) 4 Кх8 бит. Тип внутреннего ПЗУ: масочное. Внутреннее регистровое
ОЗУ: 128х8 бит.
КР1816ВЕ751 Разрядность шины данных: 8. fT: до 12 МГц. Порты ввода-вывода:
(i8749Н) (кол-во)х(разрядн.): 4х8. UПИТ: 5 В; IПИТ: 220 мА. Внутреннее ПЗУ
программ: 4 Кбит. Тип внутреннего ПЗУ: УФ ППЗУ. Внутреннее
регистровое ОЗУ: 128х8 бит. Внешняя память программ: 64 Кх8.
Внешняя память данных: 64 Кх8. Кол-во таймеров/разрядность: 2/16.
Число источников прерываний; внешних выводов/приоритет: 5; 2/2.
КР1820ВЕ1 Разрядность шины данных: 4. fT: 4 МГц. UПИТ: 5 В; IПИТ: 35 мА.
(СОР402) Внутреннее регистровое ОЗУ: 64х4 бит. Число источников
прерываний; внешних выводов/приоритет: 1;. Примечание: 49 команд.
К1820ВЕ2 Разрядность шины данных: 4. fT: 4 МГц. UПИТ: 5 В; IПИТ: 35 мА.
(СОР420) Внутреннее ПЗУ программ: 1024х8 бит. Тип внутреннего ПЗУ:
масочное. Внутреннее регистровое ОЗУ: 64х4 бит. Число источников
прерываний; внешних выводов/приоритет: 1;. Примечание: 49 команд.
КР1830ВЕ31 Разрядность шины данных: 8. fT: до 12 МГц. Порты ввода-вывода:
(i80С31ВН) (кол-во)х(разрядн.): 4х8. UПИТ: 5 В; IПИТ: 18 мА. Внутреннее регистровое
ОЗУ: 128х8 бит. Внешняя память программ: 64 Кх8. Внешняя память
данных: 64 Кх8. Кол-во таймеров/разрядность: 2/16. Число источников
прерываний; внешних выводов/приоритет: 5; 2/2.
КР1830ВЕ35 Разрядность шины данных: 8. fT: до 6 МГц. Порты ввода-вывода: (кол-
(i80С35) во)х(разрядн.): 3х8. UПИТ: 5 В; IПИТ: 8 мА. Внутреннее регистровое ОЗУ:
64х8 бит. Внешняя память программ: 4 Кх8. Внешняя память данных:
384х8. Кол-во таймеров/разрядность: 1/8.
КР1830ВЕ48 Внутреннее ПЗУ программ: 1 Кх8. Тип внутреннего ПЗУ: масочное.
(i80С48)
КР1830ВЕ51 Внутреннее ПЗУ программ: 4 Кбит. Тип внутреннего ПЗУ: масочное.
(i80С51ВН)
Окончание табл. А1
КР1830ВЕ753 Разрядность шины данных: 8. Порты ввода-вывода: (кол-во) х

139
(i87С51) (разрядн.): 4х8. UПИТ: 5 В. Внутреннее ПЗУ программ: 4 Кбит. Тип
внутреннего ПЗУ: УФ ППЗУ. Внутреннее регистровое ОЗУ: 128х8 бит.
Внешняя память программ: 64 Кх8. Внешняя память данных: 64 Кх8.
Кол-во таймеров/разрядность: 2/16. Число источников прерываний;
внешних выводов/приоритет: 5; 2/2.
КР1835ВЕ31 Разрядность шины данных: 8. fT: до 12 МГц. Порты ввода-вывода:
(i80C31ВН) (кол-во)х(разрядн.): 4х8. UПИТ: 5 В; IПИТ: 13 мА. Внутреннее регистровое
ОЗУ: 128х8 бит. Внешняя память программ: 64 Кх8. Внешняя память
данных: 64 Кх8. Кол-во таймеров/разрядность: 2/16.
КР1835ВЕ39 Разрядность шины данных: 8. Порты ввода-вывода: (кол-во) х
(i8039) (разрядн.): 3х8. Внутреннее регистровое ОЗУ: 128х8 бит. Внешняя
память программ: 4 Кх8. Внешняя память данных: 256х8. Кол-во
таймеров/разрядность: 1/8.
КР1835ВЕ49 Внутреннее ПЗУ программ: 2 Кх8. Тип внутреннего ПЗУ: масочное.
(i8049)
КР1835ВЕ51 Внутреннее ПЗУ программ: 4 Кбит. Тип внутреннего ПЗУ: масочное.
(i80C51ВН)
1835ВГ14 Разрядность шины данных: 8. fT: 8 МГц. Порты ввода-вывода: (кол-
(вместо во) х (разрядн.): 27 линий. UПИТ: 5 В; IПИТ: 1 мА. Внутреннее ПЗУ
1816ВЕ35, программ: 2 Кбайт. Внутреннее регистровое ОЗУ: 256 байт. Кол-во
ВЕ49) таймеров/разрядность: 1/8.
КР1850ВЕ31 fT: 3,5–12 МГц. UПИТ: 5 В; IПИТ: 120 мА. Внутреннее регистровое ОЗУ:
(i8031) 128х8 бит.
КР1850ВЕ631 fT: 3,5–12 МГц. UПИТ: 5 В; IПИТ: 120 мА. Внутреннее регистровое ОЗУ:
128х8 бит.
КР1850ВЕ651 Внутреннее ПЗУ программ: 32 Кбит.
КР1850ВЕ35 . fT: 8 МГц.
(i8035)
КР1850ВЕ48 Разрядность шины данных: 8. fT: 1–6 МГц. Порты ввода-вывода: (кол-
(i8048) во)х(разрядн.): 3х8. UПИТ: 5 В. Внутреннее ПЗУ программ: 1 Кбайт. Тип
внутреннего ПЗУ: масочное. Внутреннее регистровое ОЗУ: 64 байт.
Внешняя память программ: 2 Кх8. Внешняя память данных: 256х8.
Кол-во таймеров/разрядность: 1/8. Число источников прерываний;
внешних выводов/приоритет: –; 2/1.
КР1850ВЕ50 Разрядность шины данных: 8. fT: 1–6 МГц. Порты ввода-вывода: (кол-
(i8050) во)х(разрядн.): 3х8. Внутреннее ПЗУ программ: 4 Кбайт. Тип
внутреннего ПЗУ: масочное. Внутреннее регистровое ОЗУ: 256 байт.
Число источников прерываний; внешних выводов/приоритет: 2/1.
КР1850ВЕС48 fT: до 11 МГц. Порты ввода-вывода: (кол-во)х(разрядн.): 3х8. РПИТ:
5 мВт (при частоте 1 МГц). Внешняя память программ: 2 Кх8. Внешняя
память данных: 256х8. Кол-во таймеров/разрядность: 1/8.

140
Приложение Б
Характеристики отечественных и зарубежных
однокристальных микроконтроллеров
В таблице Б.1 показано последовательное развитие отечественных ОмК
[6, 7]. Исходные опытные серии, выпущенные ещё в СССР, не были
продолжены в связи с экономической ситуацией в стране в конце 80-х – начала
90-х гг. прошлого столетия. Но первые строки таблицы показывают, что данное
направление в нашей стране развивалось в русле мировых воззрений и
тенденций.
Таблица Б.1
Характеристики отечественных БИС ОмК

(обрабатываемых
Число команд
Кбайт Адресуемая память,

Тактовая частота, МГц


Разрядность, бит

Таймер, бит

Ввод-вывод

Примеч.
Память
Тип

прерываний)

НТ8020 64 8 эл. 3106 RISC 16 3 двунапр- ЛНТ,


данны стираем оп/с (8) (3 хи2 Р.Белару
е, 16 ое ППЗУ шт.) однонапр- сь
адрес 256 х 8- UП = 5 В,
а байт; разряд-х IП = 1 мА
ПЗУ 4 порта; 1
Кбайт; двунапр-й
ОЗУ 256 7-разряд-й
байт порт
MZ9001-12 8 12 внутр-е разряд-ть «Мезон».
8-разр-е каналов UП = 5 В,
АЦП и датчиков UП АН =
ЦАП; и = 4,5–
ШИМ исполнит- – 13,5 В
х устр-в
16
К145ИК5 ОЗУ UП =
(К145ИК502) 72х4 минус 27
бит; В
ПЗУ

141
128х19
бит;
К145ИК13 ОЗУ
(К145ИК1301) 126х4
бит;
ПЗУ
256х23
бит;
Окончание табл. Б1
К145ИК18 ОЗУ UП =
(К145ИК1802) 72х4 минус 27
бит; В
ПЗУ
128х19
бит
К145ИК19 ОЗУ UП =
(К145ИК1907, 32х4 минус 27
К145ИК1908) бит; В
ПЗУ
128х20
бит
К145ИК1801 UП =
минус 27
В
К145ИК1808 UП = 27 В
К145ИК1809, UП = 27 В
К145ИК1810
К145ИК1901, UП = 27 В
К145ИК1902
К145ИК1916 UП = 9 В
К1011ВГ101 4 ПЗУ UП = 9 В
Кх8 1024х10
бит бит

Таблица Б.2 иллюстрирует возможности ОмК основных зарубежных


фирм – разработчиков данных изделий. Параметры, приведённые в таблице,
отражают как характеристики основных функциональных модулей БИС ОмК,
так и проявление в архитектуре изделий оригинальных структурных решений
отдельных производителей.

Таблица Б.2
Характеристики зарубежных БИС ОмК

142
1
Тип

SQ)
(SB)

8хС198
(SB, SP,
8хС251SA
8хС151SA

8хС196КВ
8
8
8
2

16
Разрядность ШД

16
16
МГцfT,

до 16
до 16
4

34
Кол-во линий ввода-вывода

6х8
4х8
4х8
5

5;
5;
5;
5;
IП мАUП В,

8
8
6
Внутреннее ПЗУ программ, Кбайт

8–16
8–16

143
ф. Intel
7

К
регистровое ОЗУ, байтВнутреннее

232
232
232

488–1
Адрес.
8

64 К
64 К
64 К

128–

пространство внешней памяти


256 К
9

Кол-во таймеров/ разрядность


2/16
2/16
3/16
3/16
10

выводовПрер-я: вектра/ приоритеты/ внеш.


5/2/2

16/16/3
11

 разрядностьАЦП: кол-во каналов 


нет
нет

8х10
Продолжение табл. Б2
1 2 3 4 5 6 7 8 9 10 11
8хС196КС 16 20 6х8 5; 16 488 64 К 2/16 16/16/3 8х10
8хС196КD 16 20 6х8 5; 32 1000 64 К 2/16 16/16/3 8х10
8хС196КR 16 16, 20 41– 5; 16–48 488–1,5 64 К 2/16 (6–8)
(KQ, JR, JQ, 56 К х10
KT, KS, JT,
JS, JV)
8хС196МС 16 20 50– 5; 16–32 488– 64 К 2/16 (8–14)
(MD, MH) 64 744 х10
8хС196СА 16 44– 5; 32–56 1000– 64 К – 2/16 (6–8)
(СВ) 56 1,5 К 1М х10
8хС196NT 16 25, 50 32– 5; 4–32 1000– 1М 2/16 (0–4)
(NR, NU) 56 512 х10
8хС296SA 16 50 32 5; 2 512–2 6М 2/16 нет
К
8748Н 11 27 ; 2 128 1/8 Синхр/
100 Асинхр
(11 .
МГ послед
ц) ов.
порт
ф. Motorola
M68HC05 8 (2–4) 5; до 32 до 768 64 К (1–8)
х8 х8
M68HC08 8 5; до 36 1024 64 К нет
M68HC11 8 5; до 32 1278 1М 1/16 (8–12)
х(8–10)
M68HC16 16 5; до 48 до 4 К 1М 1/16
M68300 32 3,3– flash до 0,5–10 4Г
5 64 К
ф. MicroChip
PIC16C5x 14 до 20 12– 2,5– 0,5–2 25–73 внешне 1/8
20 6,2; й нет
2 (4
МГ
ц)
PIC16C6x 14 до 20 13– 3–6; 1–4 36–192 внешне 1–3/? 3–12//
22 2 (4 й нет
МГ
ц)
PIC17Cхx 16 до 25 33 3– 2–8 232– внешне 4х? 11//
5,5; 454 й нет
2 (4
МГ
ц)
PIC17C44 33 ; 38 8 454 3/16 Синхр.
(33 /Асинх
МГ р.
ц); послед
1 ов.
мкА порт.
спя ШИМ
щ.
реж
им

144
ф. Texas Instruments (серия MSP430)
TSS400 8 2,6– 8 512 2/16 есть
5,5;
0,5
MSP430 16 2,5– 8 512 2/16 есть
5,5;
0,3

Продолжение табл. Б2
ф. Philips
8хС552 12–30 5х8 5; 8 256 (1– 15/2/ есть
68 2)/16
8хС562 12–30 5х8 5; 8 256 (1– 15/2/ есть
68 2)/16
ф. Zilog (семейство Z86)

Z86Exx 8 8–12 14– 3– 0,5–4 60–236 2/8 6//2 нет


32 5,5;
12
ф. Dallas Semiconductor (семейство MCS-51)
DS5000FP, 8 20; 256 64–128 6/?/? нет
DS5001FP, 25; 33 К
DS5002FP
DS80С310, 8 20, 256 64–128 6// нет
DS80С320, 25, 33 К
DS80С323
DS87С520, 8 33 256–1 64–128 6// нет
DS87С530 К К
ф. Atmel (семейство MCS–51)
АТ89Схххх 8 12–24 3–6; flash 1– 64–256 1–3/16 3–9// нет
15 8К
Современные микроконтроллеры
DS89C420 (совместимый с 8051 8-разрядными микроконтроллерами): память программ 16 Кбайт
Flash; 1 Кбайт SRAM, используемых командами MOVX; 256 байтов сверхоперативной RAM; 2
универсальных асинхронных приёмопередатчика; четыре двунаправленных порта I/O;
программируемый сторожевой таймер; имеется сброс по потере питания и прерывание; напряжение
питания 4,5–5,5 В; потребление в режимах активном/idle (ждущем) 100/15 мА; программирование
непосредственно в условиях применения; внутрисистемное программирование через
последовательный порт; выбор объема встроенной памяти программ от 0 до 16 Кбайт; возможность
обращения ко всему пространству внешней памяти; один тактовый цикл на каждый машинный цикл;
диапазон рабочих частот от 0 до 50 МГц; выполнение одноцикловых команд за 20 нс;
программируемый делитель тактовой частоты; автоматический аппаратный и программный выход из
режима; тринадцать источников прерываний (из них шесть внешних); пять уровней приоритета.
Фирма Siemens: развитие семейства MCS-51 (микроконтроллеры серии C500) на основе архитектуры
МК 8051, дополненной сложной периферией: 10-разрядные АЦП; 6-канальный 10-разрядный ШИМ
для управления электродвигателями постоянного тока; 29-канальный ШИМ; 8 DPTR; аппаратный
блок умножения 16х16 и деления 32/16; блок загрузчика программной памяти.
Фирма Atmel: в рамках семейства MCS-51 20-выводные микроконтроллеры AT89С2051/1051;
микроконтроллеры с каналом SPI, обеспечивающие возможность внутрисхемного программирования
FLASH памяти; микроконтроллер с резидентной памятью типа EEPROM, обеспечивающей хранение
оперативных данных при отключенном питании микросхемы.

145
Фирма Dallas Semiconductor: семейство MCS-51 серия DS5000. Их резидентная память программ
выполнена в виде NVRAM – оперативной памяти, энергонезависимость которой обеспечивается
литиевой батарейкой, встроенной непосредственно в корпус микросхемы (10-летняя гарантия на
сохранность информации). Временные характеристики полностью идентичны характеристикам
микроконтроллера 8051.
Группа микроконтроллеров DS8xC300/500, в которых типовой цикл выборки и выполнения команд
сокращён до 4-х тактов, а холостые выборки исключены: команды стали выполняться за 4 такта
тактового генератора, т. е. в 3 раза быстрее. Команды МК 8051, которые не имели холостых выборок,
в DS8xC300/500 «ускорены» в 1,5 раза.

Окончание табл. Б2
Фирма Intel: (родоначальник архитектуры семейства MCS-51) разработала архитектуру MCS-251:
24-разрядное линейное адресное пространство, обеспечивающее адресацию до 16 Мбайт памяти;
регистровая архитектура, допускающая обращение к регистрам как к байтам, словам и двойным
словам; страничный режим адресации для ускорения выборки команд из внешней программной
памяти; очередь инструкций; расширенный набор команд, включающий 16-битовые арифметические
и логические операции; расширенное адресное пространство стека (до 64 Кбайт); выполнение самой
быстрой команды за 2 такта.
Фирма Philips: MCS-51 от Philips входят микроконтроллеры, работающие при тактовой частоте до
40 МГц и напряжении питания от 1,8 В. Во всех этих микроконтроллерах используется стандартное
ядро MCS-51 (архитектура микроконтроллера 8051), дополненное набором периферии: 10-разрядные
АЦП; 8-разрядный ЦАП; широтно-импульсные модуляторы; массивы программируемых
таймеров/счетчиков; интерфейсы I2C, CAN; интерфейсы с процессорными шинами (Processor Bus
Interface); специализированную периферию для телевизионной, видео и аудио техники. Выпущены
микроконтроллеры MCS-51, обладающие функцией снижения электромагнитных помех (Lower EMI).
Стандартные микроконтроллеры групп 8xC51, 8xC52/54/58 и 8xC51Fx фирмы Intel переведены на
новую технологию: серия MCS-51XA. Её возможности: максимальная тактовая частота до 33 МГц;
диапазон напряжения питания от 2,7 до 5,5 В; количество аппаратных уровней прерываний до 4-х;
введена функция программируемого clock-out; два DPTR; потребляемая мощность снижена на 50 %.
Кроме того, фирма Philips выпустила семейство микроконтроллеров 51ХА: 16-разрядное АЛУ на базе
регистровой архитектуры; 24-разрядное адресное пространство, обеспечивающее адресацию до
16 Мбайт памяти программ или данных; восемь 16-разрядных регистров для выполнения
арифметических и логических операций; расширенный набор команд; аппаратная поддержка
мультизадачности; выполнение инструкций типа регистр-регистр за 100 нс; напряжение питания от
2,7 В. Архитектура MCS-51ХА обеспечивает увеличение быстродействия до 100 раз по сравнению с
традиционной архитектурой MCS-51.
Фирма Atmel: ATmega16L-8 – тактовая частота 0–8 МГц; напряжение питания 2,7–5,5 В; ATmega16-
16 – тактовая частота 0–16 МГц; напряжение питания 4,5–5,5 В; потребление тока не более 1,1 мА, в
ждущем режиме не более 0,35 мА и в спящем режиме не более 1 мкА. Возможность внешнего
программирования внутренней памяти 16 Кбайт Flash; 512 байт памяти EEPROM; внутреннее
статическое запоминающее устройство с произвольной выборкой 1 Кбайт; два 8-битовых и один 16-
битовый таймер–счётчик с возможностью перепрограммирования коэффициента счёта, сравнения и
предустановки; 8-миканальный АЦП; аналоговый компаратор; 32 программируемые линии ввода-
вывода.
Примечание. х = 0 – нет ПЗУ; х = 3 – масочное ПЗУ; х = 7 – УФ ППЗУ

146
СОДЕРЖАНИЕ
ВВЕДЕНИЕ.........................................................................................................................................3
1. ОДНОКРИСТАЛЬНЫЕ МИКРОПРОЦЕССОРНЫЕ УСТРОЙСТВА. АРХИТЕКТУРА
И ВИДЫ МИКРОЭВМ И МИКРОКОНТРОЛЛЕРОВ................................................................7
1.1. Архитектура процессоров......................................................................................................7
1.2. Виды микроЭВМ и микроконтроллеров............................................................................11
2. АППАРАТНАЯ ЧАСТЬ ОДНОКРИСТАЛЬНЫХ МП-СРЕДСТВ..........................................19
3. ОСОБЕННОСТИ ОБМЕНА ДАННЫМИ..................................................................................40
3.1. Синхронный последовательный обмен..............................................................................45
3.2. Протоколы для микроконтроллерных сетей......................................................................48
4. ПРОТОКОЛЫ ДЛЯ МИКРОКОНТРОЛЛЕРНЫХ СЕТЕЙ.....................................................55
4.1. Ввод-вывод аналоговых сигналов.......................................................................................57
4.1.1. Вывод аналоговых сигналов......................................................................................60
4.1.2. Однокристальные ведомые МП-устройства...........................................................61
4.2. МП-устройства с программируемой памятью...................................................................62
5. СЕМЕЙСТВО ОДНОКРИСТАЛЬНЫХ КОНТРОЛЛЕРОВ MCS-51......................................71
5.1. Организация памяти микроконтроллера 8xC51Fx70.........................................................77
5.2. Система команд микроконтроллеров семейства MCS-51.................................................80
5.2.1. Арифметические и логические инструкции.............................................................82
5.2.2. Команды передачи данных........................................................................................84
5.2.3. Булевые операции.......................................................................................................85
5.2.4. Инструкции переходов...............................................................................................85
6. АРХИТЕТУРА МИКРОКОНТРОЛЛЕРОВ PICMICRO...........................................................87
7. МИКРОКОНТРОЛЛЕРЫ СЕМЕЙСТВА AVR.......................................................................103
БИБЛИОГРАФИЧЕСКИЙ СПИСОК...........................................................................................121
ОПРЕДЕЛЕНИЯ, ОБОЗНАЧЕНИЯ И СОКРАЩЕНИЯ............................................................122
ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ......................................................................................................128
ПРИЛОЖЕНИЯ..............................................................................................................................131

147
Редактор Ю. Н. Чигвинцев
Компьютерная верстка – Е. В. Беспалова

ИД № 06039 от 12.10.2001 г.
Сводный темплан 2010 г.
Подписано в печать 04.10.10. Формат 60×84 1/16. Бумага офсетная.
Отпечатано на дупликаторе. Усл. печ. л. 8,75. Уч.-изд. л. 8,75.
Тираж 80 экз. Заказ 631.
_________________________________________________________
Издательство ОмГТУ. 644050, г. Омск, пр. Мира, 11; т. 23-02-12
Типография ОмГТУ

148