Mcs 51 программирование на си. Микроконтроллеры семейства mcs51. Устройство управления и синхронизации

У истоков производства микроконтроллеров стоит фирма Intel с семействами восьмиразрядных микроконтроллеров 8048 и 8051. Архитектура MCS-51 получила свое название от первого представителя этого семейства - микроконтроллера 8051, выпущенного в 1980 году на базе технологии HMOS. Удачный набор периферийных устройств, возможность гибкого выбора внешней или внутренней программной памяти и приемлемая цена обеспечили этому микроконтроллеру успех на рынке. С точки зрения технологии микроконтроллер 8051 являлся для своего времени очень сложным изделием - в кристалле было использовано 128 тыс. транзисторов, что в 4 раза превышало количество транзисторов в 16-разрядном микропроцессоре 8086.

Основными элементами базовой архитектуры являются:
- 8-разрядное АЛУ на основе аккумуляторной архитектуры;
- 4 банка регистров, по 8 в каждом;
- встроенная память программ 4Кбайт;
- внутреннее ОЗУ 128 байт;
- булевый процессор
-2 шестнадцатиразрядных таймера;
- контроллер последовательного канала (UART);
- контроллер обработки прерываний с двумя уровнями приоритетов;
- четыре 8-разрядных порта ввода/вывода, два из которых используются в качестве шины адреса/данных для доступа к внешней памяти программ и данных;
- встроенный тактовый генератор.

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

Следующим принципиальным шагом в развитии MCS-51 стал перевод технологии изготовления на CHMOS. Это позволило реализовать режимы Idle и Power Down, позволившие резко снизить энергопотребление кристалла и открывшие дорогу к применению микроконтроллера в энергозависимых приложениях, например, в автономных приборах с батарейным питанием.

И последним принципиальным этапом развития этого направления фирмой Intel в рамках 8-битной архитектуры стал выпуск микроконтроллеров 8xC51FA/FB/FC, которые для краткости часто обозначаются как 8xC51FX. Главной отличительной особенностью этой группы кристаллов является наличие у них массива программируемых счетчиков (PCA). Структурная схема PCA представлена на рис.2.

В состав PCA входят:

Таймер-счетчик обслуживает все пять модулей выборки и сравнения, которые могут быть запрограммированы на выполнение одной из следующих функций:

16-битная выборка значения таймера по положительному фронту внешнего сигнала;
16-битная выборка значения таймера по отрицательному фронту внешнего сигнала;
16-битная выборка значения таймера по любому фронту внешнего сигнала;
16-битный программный таймер;
16-битное устройство скоростного вывода (HSO);
8-битный ШИМ

Выполнение всех перечисленных функций происходит в PCA на аппаратном уровне и не загружает центральный процессор, что позволяет повысить общую пропускную способность системы, повысить точность измерений и отработки сигналов и снизить время реакции микроконтроллера на внешние события, что особенно важно для систем реального времени. Реализованный в 8xC51FX PCA оказался настолько удачным, что архитектура микроконтроллеров FX стала промышленным стандартом де-факто, а сам PCA многократно воспроизводился в различных модификациях микроконтроллеров разных фирм.

Изначально наиболее "узкими" местами архитектуры MCS-51 были 8-разрядное АЛУ на базе аккумулятора и относительно медленное выполнение инструкций (для выполнения самых быстрых инструкций требуется 12 периодов тактовой частоты). Это ограничивало применение микроконтроллеров семейства в приложениях, требующих повышенного быстродействия и сложных вычислений (16- и 32- битовых). Насущным стал вопрос принципиальной модернизации старой архитектуры. Проблема модернизации осложнялась тем, что к началу 90-х годов уже была создана масса наработок в области программного и аппаратного обеспечения, и одной из основных задач разработки новой архитектуры была реализация аппаратной и программной совместимости со старыми разработками на базе MCS-51. Для решения этой задачи была создана совместная группа из специалистов компаний Intel и Philips. В результате в 1995 г. появилось 2 существенно отличающихся семейства: MCS-251/151 у Intel и 51XA у Philips (на последнем мы остановимся ниже).

Основные характеристики архитектуры MSC-251:

24-разрядное линейное адресное пространство, обеспечивающее адресацию до 16M памяти (выпускаемые микроконтроллеры семейства MCS-251 имеют адресное пространство памяти объемом 256К);
Система команд микроконтроллеров семейства MCS-251 содержит все 111 команд, входящих в систему команд микроконтроллеров семейства MCS-51 ("старые" команды), и, кроме того, в нее входят 157 "новых" команд. Коды некоторых новых команд имеют формат 4 байт.
Перед использованием микроконтроллера его необходимо сконфигурировать, т.е. с помощью программатора "прожечь" конфигурационные байты, определяющие, какой из наборов инструкций станет активным после включения питания. Если установить набор инструкций MCS-51, то в этом случае MSC-251 будет совместим с MCS-51 на уровне двоичного кода. Такой режим называется Binary Mode. Однако расширенные инструкции в этом режиме также доступны через "форточку" - зарезервированный код инструкции 0A5h. Естественно, длина каждой расширенной инструкции увеличивается в таком случае на 1 байт. Если же изначально установить набор расширенных инструкций, то в этом случае программы, написанные для MCS-51 потребуют перекомпиляции на кросс-средствах для MCS-51, т.к. теперь уже стандартные инструкции будут доступны через ту же "форточку" 0A5h и длина их также увеличится на 1 байт. Такой режим называется Source Mode. Он позволяет с максимальной эффективностью использовать расширенные инструкции и достигнуть наибольшего быстродействия, но требует переработки программного обеспечения.
регистровая архитектура, допускающая обращение к регистрам как к байтам, словам и двойным словам;
страничный режим адресации для ускорения выборки инструкций из внешней программной памяти;
очередь инструкций;
расширенный набор команд, включающий 16-битовые арифметические и логические инструкции;
расширенное адресное пространство стека до 64К;
выполнение самой быстрой инструкции за 2 такта;
совместимость на уровне двоичного кода с программами для MCS-51.

Для пользователей, ориентированных на применение микроконтроллеров MCS-251 в качестве механической замены MCS-51 фирма Intel выпускает микроконтроллеры MCS-251 с уже запрограммированными битами конфигурации в состоянии Binary Mode. Такие микроконтроллеры получили индекс MCS-151.

Помимо самой Intel микроконтроллеры MCS-251 по ее лицензии выпускает компания Temic Semiconductors.

Универсальная последовательная шина (Universal Serial Bus или USB), распространяет технологию Plug-and-Play на внешние устройства ввода/вывода, применяемые на современных высокопроизводительных персональных компьютерах.

Для того, чтобы обеспечить возможность подключения разнообразных периферийных устройств, в стандарте USB определены четыре режима передачи: Управляющий, Изохронный, Импульсный и передача массивов. Каждое периферийное устройство должно поддерживать управляющий режим для передачи параметров конфигурации, команд и информации о состоянии устройства. Изохронная передача обеспечивает гарантированный доступ к шине, постоянную пропускную способность и устойчивость к ошибкам, этот режим передачи может применяться в устройствах аудиовывода и компьютерной телефонии. Импульсная передача предназначена для устройств ввода типа мыши, джойстика или клавиатуры, передающих информацию редко и небольшими порциями, но с ограниченным периодом обслуживания. Передача массивов позволяет устройствам типа сканеров, факсов или цифровых камер передавать большие массивы данных в персональный компьютер, как только освобождается канал шины.

Основные характеристики продукта

Полная совместимость со "Спецификацией Universal Serial Bus 1.0"
Встроенный USB transceiver Serial Bus Interface Engine (SIE)
Четыре очереди FIFO для передачи
Три 16-байтных очереди FIFO
Четыре очереди FIFO для приема
Три 16-байтных очереди FIFO
Одна настраиваемая очередь FIFO (до 1024 байт)
Автоматическое управление приемом/передачей в очередях FIFO
Операции остановки/возобновления
Три вектора прерывания шины USB
Цикл блокировки фазы
Скорости передачи данных: 12 Мбит/сек и 1,5 Мбит/сек
Режим с замедленным циклом
Внешнее адресное пространство емкостью 256 Кбайт
Энергосберегающие режимы: ожидание и отключение питания
Задаваемые пользователем параметры
Ожидание в реальном времени
1 Кбайт оперативной памяти на кристалле
Четыре порта ввода/вывода
Программируемый массив счетчиков (PCA)
Стандартный (MCS 51) микроконтроллер UART
Аппаратный сторожевой таймер
Три 16-разрядных таймера/счетчика с гибкими возможностями
Совместимость с набором команд микроконтроллеров архитектуры MCS 51 и MCS 251
Архитектура микроконтроллера MCS 251, основанная на регистрах
Рабочая частота 6 или 12 МГц

Контроллер 8x930Hx имеет дополнительные характеристики:

Концентратор USB
Возможности управления концентратором USB
Управление соединением
Обнаружение соединения/разрыва связи с устройством вывода
Управление питанием, включая остановку/возобновление
Обнаружение и восстановление сбоев шины
Поддержка полноскоростных и низкоскоростных устройств вывода
Выходной контакт для переключения питания порта
Входной контакт для обнаружения перегрузки

Четыре различных режима передачи данных USB обеспечиваются совместной работой трех элементов: Хост, Концентратор, Функциональное устройство. Хост контролирует передачу по шине содержательной и управляющей информации. Функциональные устройства расширяют хост-системы. Сюда включаются типичные виды работы с PC: ввод с клавиатуры или джойстика, вывод на монитор; а также более сложные виды деятельности, такие как цифровая телефония и передача изображений. Для управления функциональными устройствами спроектирован микроконтроллер Intel 8x930Ax. Наконец, концентраторы представляют собой точку расширения USB, с помощью которой обеспечивается доступ к другим функциональным устройствам. Микроконтроллер Intel 8x930Hx, в котором совмещены функции управления функциональным устройством и концентратором USB, является первым серийным концентратором USB, предназначенным для современных периферийных устройств PC.

Концентраторы USB играют существенную роль в расширении мира пользовател PC. С появлением периферийных устройств - клавиатур, мониторов, принтеров и других - снабженных встроенными концентраторами, подключить или отключить новое устройство так же просто, как вставить вилку в розетку. Новый уровень производительности и расширенные способы соединения USB могут привести к появлению устройств для рабочих и развлекательных приложений нового поколения. Дни встраиваемых карт, конфликтов IRQ и спутанных клубков проводов сочтены.

Кабель шины USB состоит всего из четырех проводов: Vbus, D+, D- и GND - чем достигается упрощение и единообразие соединения. Этой же цели служит единый стандартный коннектор для подключения периферийных устройств к шине USB. Данные по-разному передаются по кабелям D+ и D-: либо на полной скорости 12 Мбит/сек, либо на низкой скорости 1,5 Мбит/сек. Приемопередатчик встроен в кристалл, поэтому необходимость во внешних электронных цепях отсутствует. Исключение составляет терминальный нагрузочный резистор на обоих линиях D+ и D-, который необходим для определения типа устройства: высокоскоростное или низкоскоростное.

Обзор семейства
Семейство Intel 8x930 состоит из двух однокристальных контроллеров.

Контроллер Intel 8x930Ax представляет собой 8-разрядное устройство, которое основано на архитектуре микроконтоллера MCS 251 и предназначено для работы с периферийными устройствами, подключаемыми к шине USB. С другой стороны, в 8x930Hx использовано то же ядро микроконтроллера MCS 251 плюс расширенные возможности встроенного концентратора шины USB. Применение архитектуры MCS 251 в обоих контроллерах шины USB дает следующие преимущества:

Высокая производительность
Применение смешанных типов памяти и адресации
Низкое энергопотребление
Низкий уровень шума
Эффективная поддержка языков высокого уровня
Расширенный набор команд
Встроенные возможности

В качестве команд для 8x930Ax можно использовать инструкции как из набора для микроконтроллера MCS 51, так и из набора для микроконтроллера MCS 251. Такой подход сохраняет инвестиции пользователей в программное обеспечение и выжимает максимум производительности из приложений.

Микроконтроллеры 8x930 настолько насыщены различными встроенными средствами, что они выглядят мощнее, нежели просто микроконтроллеры. Массив программируемых счетчиков (PCA) придает гибкость приложениям, которым требуется сравнение или захват данных в реальном времени, высокоскоростной обмен данными или широтно-импульсная модуляция. Кроме того, в состав контроллера вошли расширенный последовательный порт, три 16-разрядных таймера/счетчика, аппаратный сторожевой таймер, четыре 8-разрядных порта ввода/вывода, а также предусмотрены два энергосберегающих режима: ожидание и отключение питания.

Контроллеры семейства 8x930Ax оснащены 1 Кбайт памяти и могут быть использованы в вариантах без постоянной памяти, либо с постоянной памятью емкостью 8 или 16 Кбайт. Они могут адресовать до 256 Кбайт внешней памяти для размещения команд и данных и 40 байт регистров общего назначения, которые располагаются в центральном процессоре как регистровый файл. В зависимости от используемой комбинации в регистровом файле могут располагаться 16 байтовых регистров, 16 двухбайтовых регистров и 10 четырехбайтовых регистров.

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

Оба контроллера 8x930 оснащены восемью очередями FIFO для поддержки внутренних устройств вывода: четыре очереди для передачи и четыре очереди для приема. Четыре очереди FIFO для приема/передачи поддерживают четыре оконечных функциональных устройства (от 0 до 3). Очередь 0 состоит из 16 байт и предназначена для передачи управляющей информации. Очередь 1 относитс к категории настраиваемых пользователем и имеет емкость до 1024 байт. Очереди 2 и 3 состоят из 16 байт каждая и могут использоваться для передачи информации в импульсном, изохронном и режиме передачи массивов. В случае использования контроллера 8x930Hx указанные очереди усиливаются парой очередей FIFO для входных устройств. Эти очереди в контроллере 8x930Hx поддерживаются дополнительным повторителем, который отвечает за повторную передачу потоков данных, генерируемых выходными устройствами.

Обзор архитектуры
Конструкционно реализацию USB в микроконтроллерах 8x930Ax и 8x930Hx можно разделить на четыре блока: очереди FIFO, блок интерфейса с функциональными устройствами, блок интерфейса с последовательной шиной и приемо-передатчик. Контроллер 8x930Hx имеет длополнительные блоки для управления функциями концентратора: блок интерфейса с концентратором и повторитель.

Очереди FIFO для приема и передачи на обоих контроллерах являются кольцевыми. Очереди поддерживают до двух раздельных наборов данных переменного размера и содержат регистры счетчика байтов, показывающие количество байтов в наборах данных. Очереди снабжены флажками, показывающими заполненность или пустоту очереди, а также способны повторять прием или передачу текущего набора данных. Блок интерфейса с функциональными устройствами (ИФУ) распределяет переданные или принятые данные USB в соответствии с типом передачи и состоянием очередей. Кроме того, блок ИФУ следит за состоянием транзакции, управляет очередями FIFO, при помощи запроса на прерывание сообщает о наступлении управляющих событий центральному процессору 8x930.

Блок интерфейса с последовательной шиной реализует протокол передачи USB: последовательно упорядочивает пакеты, осуществляет генерацию и распознавание сигнала, генерацию и проверку контрольных сумм, кодирование/декодирование данных по методу NRZI, побитовое заполнение, генерацию и распознавание идентификатора пакета (PID).

Интегрированный приемо-передатчик на микроконтроллерах USB согласован с простым четырех-жильным интерфейсом, определенным спецификаицей USB 1.0. Семейство контроллеров 8x930 имеет три прерывания, связанных с USB. Они происходят при каждом старте кадра, окончании приема/передачи данных на оконечные функциональные устройства, в случае глобальной приостановки или возобновления работы. В концентраторе 8x930Hx блок интерфейса с концентратором служит для управления и слежения за состоянием соединени с выходными портами. Повторитель отвечает за распространение сигналов повышающих и понижающих портов USB.

Министерство общего и профессионального образования Российской Федерации Новосибирский Государственный Технический Университет В.Н. Веприк, В.А. Афанасьев, А.И. Дружинин, А.А. Земсков, А.Р. Исаев, О.В. Малявко МИКРОКОНТРОЛЛЕРЫ СЕМЕЙСТВА MCS-51 Учебное пособие по курсам "Микропроцессорные системы" и "Проектирование микропроцессорных систем" для студентов старших курсов факультета автоматики и вычислительной техники всех форм обучения Новосибирск 1997 В.Н. Веприк, В.А. Афанасьев, А.И. Дружинин, А.А. Земсков, А.Р. Исаев, О.В. Малявко. Микроконтроллеры семейства MCS-51: Учебное пособие. - Новосибирск. Предлагаемое Вашему вниманию учебное пособие содержит общее описание архитектуры, функциональных возможностей и системы команд семейства однокристальных микроконтроллеров (Embedded Microcontrollers) MCS-51, производимых фирмой INTEL. Во второй части пособия приводится описание учебного микропроцессорного контроллера УМПК- 51, предлагаемого студентам в качестве объекта исследования при выполнении цикла лабораторных работ. Материал пособия может использоваться при курсовом и дипломном проектировании, а также может быть полезным для инженеров - схемотехников, занимающихся разработкой и эксплуатацией электронной аппаратуры. Авторы выражают глубокую признательность АОЗТ "Новые технологии"- официальному дистрибьютору фирмы INTEL за предоставление материалов, на основе которых выполнена данная работа. Табл.15, ил.25, список лит. 12 назв. Рецензенты: Е.Д. Баран, Г.Г. Матушкин. Работа подготовлена на кафедре вычислительной техники Новосибирский государственный © технический университет 2 ВВЕДЕНИЕ. Семейство 8-разрядных однокристальных микроконтроллеров MCS-51 появилось на мировом рынке в начале восьмидесятых годов. Первые модификации кристаллов (около 7) были выполнены по высококачественной n-МОП (HMOS) технологии и являлись функционально завершенными однокристальными микроЭВМ гарвардской архитектуры, один из основных принципов которой состоит в логическом разделении адресных пространств памяти программ и данных. С развитием полупроводниковой технологии последующие версии микросхем MCS-51 стали изготавливать по более совершенной и низкопотребляющей КМОП (CHMOS) технологии (в активном режиме потребление кристаллов было доведено до 10 50 мА). Система команд MCS-51, ориентированная на реализацию различных цифровых алгоритмов управления, при сохранении некоторой внешней схожести с системой команд предыдущего семейства MCS-48, качественно расширилась, в ней появились принципиальные нововведения: битово-ориентированные операции и адресуемые в памяти данных битовые поля, что дало возможность говорить о реализации на кристалле битового процессора; реализовано исполнение команд умножения, деления и вычитания; усовершенствована работа со стеком; расширена группа команд передачи управления; Система команд стала выглядеть более симметричной, то есть менее зависимой от пересылок данных через аккумулятор. Функциональные возможности встроенных периферийных устройств также расширились за счет введения: двух 16-разрядных таймеров-счетчиков; аппаратного последовательного дуплексного порта; двухуровневой системы прерываний; четырех 8-битовых портов ввода-вывода. Принципиальные изменения в структуре временного цикла работы процессора привели к ускорению работы с внешней памятью программ и данных, а также реакций на внешние и внутренние прерывания. Суммарный размер адресного пространства внешней памяти программ и данных увеличился до 128 Кбайт. 16-разрядные регистры счетчика команд (Program Counter) и указателя данных (Data Pointer) позволили напрямую обращаться ко всему диапазону адресов, что дало разработчикам возможность реализации алгоритмов быстрой обработки крупных массивов данных. Все программно-доступные узлы микроконтроллера были сведены в специальную область памяти данных (Special Function Register), что позволило обращаться к ним почти так же, как и к обычным ячейкам резидентного ОЗУ. В более поздних модификациях кристаллов усовершенствование шло по пути наращивания дополнительных функциональных возможностей с сохранением полной программной совместимости с более ранними версиями. Особенностями последних модификаций микроконтроллеров семейства MCS-51 являются: полностью статический дизайн; 3- и 5-вольтовые версии кристаллов; широкий спектр встроенных периферийных устройств; максимальная тактовая частота - 24 мГц; для отдельных групп кристаллов - 33 мГц. В настоящее время в состав MCS-51 входит около 60 версий кристаллов, кроме того, имеется и доступна подробная фирменная документация (к сожалению, пока мало переведенная на русский язык). Для подготовки математического обеспечения микроконтроллеров MCS-51 используются в основном языки "ASM-51", "С", для которых существуют ряд достаточно хорошо зарекомендовавших себя компиляторов, библиотек стандартных подпрограмм и программных эмуляторов, производимых различными зарубежными и отечественными фирмами. 3 Несмотря на достаточную "древность" семейства (более 15 лет) и появление на мировом рынке за последние годы однокристальных микроконтроллеров большей производительности и усовершенствованной архитектуры - MCS-51, MCS-251, MCS-96, контроллеры MCS-51 еще достаточно долго будут широко использоваться в сравнительно простых встроенных системах управления . 4 1. СИСТЕМА ОБОЗНАЧЕНИЙ КОМПОНЕНТОВ ФИРМЫ INTEL И ФУНКЦИОНАЛЬНЫЙ СОСТАВ СЕМЕЙСТВА MCS-51 Для маркировки микросхем фирмой INTEL применяется система обозначений из нескольких полей: 1 2 3 4 Х ХХ ХХХХХХХХХХХХХХХ ХХХХХХ Первое поле содержит однобуквенный префикс, отражающий температурный диапазон микросхемы: А (Automotive), автомобильное исполнение для расширенного температурного диапазона (-40/+125 С) М (Military), исполнение по военным стандартам (-55/+125 С) Q или С (Commercial), "коммерческий" температурный диапазон (0/+70 С) с (160 8)- часовой динамической термотренировкой; L или Е (Extended), "расширенный" температурный диапазон (-40/+85 С) с (160 8)- часовой динамической термотренировкой; Т (Extended), "расширенный" температурный диапазон (-40/+85 С) без термотренировки; I (Industrial), исполнение по промышленным стандартам. Второе поле содержит одно- или двухбуквенный префикс, указывающий на вариант исполнения корпуса микросхемы (Package Type). Различных типов корпусов микросхем на сегодняшний день несколько десятков, поэтому в качестве примера приведем лишь некоторые обозначения: A Ceramic Pin Grid Array, (PGA); C Ceramic Dual In-Line Package, (CDIP); K Ceramic Quad Flatpack Package, (QFP); KD Plastic Quad Flatpack Package, Fine Pitch, Die Down, (PQFP); KU Plastic Quad Flatpack Package, Fine Pitch, Die Up, (PQFP); N Plastic Leaded Chip Carrier, (PLCC); P Plastic Dual In-Line Package, (PDIP); SM Single In-Line Leadless Memory Module, (SIMM); U Plastic Dual In-Line Package, Shrink Dip, (PDIPS); Z Zigzag In-Line Package, (ZIP). Третье поле может содержать до 15 цифровых и буквенных символов, указывающих на тип конкретного устройства, расположенного на кристалле. Четвертое поле может включать до шести цифровых и буквенных символов, отражающих различные особенности и варианты исполнения микросхем . Дополнительную информацию по типам корпусов и их конструктивному исполнению можно найти в книге: Packaging Order Number 240800. Применительно к описываемым микроконтроллерам семейства MCS-51, первый символ третьего поля традиционно (для фирмы Intel) равен "8". Второй символ третьего поля обычно указывает на тип встроенного ПЗУ: 0 масочное ПЗУ программ; кристалл без ПЗУ (для поздних версий кристаллов); 1 масочное ПЗУ программ (Standard ROM Code, Firmware); 3 масочное ПЗУ (для поздних версий кристаллов), (Customizable ROM Code); 7 УФРПЗУ или однократно-программируемое ПЗУ (EPROM or OTP ROM); 8 ЭСППЗУ (Flash - память на кристалле) Далее может следовать буква, указывающая на технологические особенности изготовления: отсутствие буквы технология HMOS, питание 5В; С технология СHMOS, питание 5В; L технология СHMOS, питание 3В; 5 Следующими символами третьего поля для микроконтроллеров семейства MCS-51 являются номера (например, 31,32,51,54,58,152) и от одной до четырех букв, которые отражают функциональные особенности кристаллов (например, объем ПЗУ, специфику группы кристаллов, наличие системы защиты памяти программ от несанкционированного доступа, возможность использования более совершенного алгоритма программирования "Quick Pulse" и тому подобное). В оригинальной технической документации фирмы Intel все микроконтроллеры семейства MCS-51 скомпонованы по группам ("Product Line"), каждая из которых объединяет наиболее близкие по своим функциональным возможностям и электрическим параметрам версии кристаллов. Поскольку наименования микросхем одной группы различаются незначительно, то для обозначения каждой отдельной группы применяется обобщенная символика, образованная из маркировки конкретных микросхем, путем замены различающихся символов на "Х". Таким образом, можно выделить следующие группы микроконтроллеров. 1. Группа 8Х5Х (8051 Product Line и 8052 Product Line): 8031АН, 8051АН, 8751Н, 8051АНР, 8751Н-8, 8751ВН, 8032АН, 8052АН, 8752ВН. 2. Группа 8ХС51 (80С51 Product Line): 80С31ВН, 80С51ВН, 87С51. 3. Группа 8ХС5Х (8ХС52/54/58 Product Line): 80С32, 80С52, 87С52, 80С54, 87С54, 80С58, 87С58. 4. Группа 8ХС51FX (8XC51FA/FB/FC Product Line): 80C51FA, 83C51FA, 87C51FA, 83C51FB, 87C51FB, 83C51FC, 87C51FC. 5. Группа 8ХL5X (8XL52/54/58 Product Line): 80L52, 87L52, 80L54, 87L54, 80L58, 87L58. 6. Группа 8XL51FX (8XL51FA/FB/FC Product Line): 80L51FA, 83L51FA, 87L51FA, 83L51FB, 87L51FB, 83L51FC, 87L51FC. 7. Группа 8ХС51RX (8XC51RA/RB/RC Product Line): 80C51RA, 83C51RA, 87C51RA, 83C51RB, 87C51RB, 83C51RC, 87C51RC. 8. Группа 8ХC51GB (8XC51GX Product Line): 80C51GB, 83C51GB, 87C51GB. 9. Группа 8ХС152JX (8XC152 Product Line): 80C152JA, 83C152JA, 80C152JB, 80C152JC, 83C152JC, 80C152JD. 10. Группа 8XC51SL (8XC51SL Product Line): 80C51SL-BG, 81C51SL-BG, 83C51SL-BG, 80C51-AH, 81C51SL-AH, 83C51SL-AH, 87C51SL- AH, 80C51SL-AL, 81C51SL-AL, 83C51SL-AL, 87C51SL-AL. Первая группа микроконтроллеров включает в себя младшие модели семейства, выполненные по n-МОП технологии и не рекомендуемые к использованию в новых разработках, все остальные группы выполнены по современной КМОП технологии. Микросхемы второй, третьей и четвертой групп являются на сегодняшний день классическими представителями семейства MCS-51. В пятую и шестую группы входят 3- вольтовые версии кристаллов (Low-Voltage). Кристаллы седьмой группы оснащены расширенным ОЗУ (Expanded RAM), объем которого равен 512 байт. Микросхемы восьмой, девятой и десятой групп представляют собой специализированные по применению микроконтроллеры (Application Specific). Многие современные приложения требуют высокопроизводительных управляющих микроконтроллеров, использующих расширенные возможности адресации, регистровую архитектуру, большой объем внутреннего ОЗУ и стека, а также эффективно поддерживающих программирование на языке высокого уровня. К таким микроконтроллерам относятся микроконтроллеры новой архитектуры (New Architecture) семейств MCS-5 и MCS-251, к производству которых компания Intel приступила в 1995 году. Функциональный состав и ключевые особенности микроконтроллера MCS-51/MCS-251 приведены в приложении. 6 2. ОСНОВНЫЕ ХАРАКТЕРИСТИКИ БАЗОВОЙ МОДЕЛИ СЕМЕЙСТВА МИКРОКОНТРОЛЛЕРОВ MCS-51. Базовой моделью семейства микроконтроллеров MCS-51 и основой для всех последующих модификаций является микроконтроллер I-8051. Его основные характеристики следующие: восьмиразрядный ЦП, оптимизированный для реализации функций управления; встроенный тактовый генератор; адресное пространство памяти программ - 64 К; адресное пространство памяти данных - 64 К; внутренняя память программ - 4 К; внутренняя память данных - 128 байт; дополнительные возможности по выполнению операций булевой алгебры (побитовые операции); 32 двунаправленные и индивидуально адресуемые линии ввода/вывода; 2 шестнадцатиразрядных многофункциональных таймера/счетчика; полнодуплексный асинхронный приемопередатчик; векторная система прерываний с двумя уровнями приоритета и шестью источниками событий . Структурная схема I-8051 показана на рис.1, назначение выводов микросхемы - на рис.2. External interrupts Interrupts 128 bytes T/C 0 counter 4K ROM control RAM T/C 1 inputs CPU BUS 4 I/O Serial OSC control Ports Port P0 P1 P2 P3 T D R D Address/Data Рис.1. Структурная схема I-8051 Вся серия MCS-51 имеет гарвардскую архитектуру, то есть раздельные адресные пространства памяти программ и данных. Организация памяти изображена на рис.3. Объем внутренней (резидентной) памяти программ (ROM, EPROM или OTP ROM), располагаемой на кристалле, в зависимости от типа микросхемы может составлять 0 (ROMless), 4К (базовый кристалл), 8К, 16К или 32К. При необходимости пользователь может расширять память программ установкой внешнего ПЗУ. Доступ к внутреннему или внешнему ПЗУ определяется значением сигнала на выводе ЕА (External Access): EA=Vcc (напряжение питания) - доступ к внутреннему ПЗУ; EA=Vss (потенциал земли) - доступ к внешнему ПЗУ. Для кристаллов без ПЗУ (ROMless) вывод ЕА должен быть постоянно подключен к Vss. Строб чтения внешнего ПЗУ - PS EN (Program Store Enable) генерируется при обращении к внешней памяти программ и является неактивным во время обращения к ПЗУ, расположенному на кристалле. 7 Область нижних адресов памяти программ используется системой прерываний, архитектура микросхемы 8051обеспечивает поддержку пяти источников прерываний: двух внешних прерываний; двух прерываний от таймеров; прерывания от последовательного порта. P1.0 1 40 Vcc P1.1 2 39 P0.0 (AD0) P1.2 3 38 P0.1 (AD1) P1.3 4 37 P0.2 (AD2) P1.4 5 36 P0.3 (AD3) P1.5 6 35 P0.4 (AD4) P1.6 7 34 P0.5 (AD5) P1.7 8 33 P0.6 (AD6) RESET 9 32 P0.7 (AD7) (R D) P3.0 10 31 EA/Vpp (T D) P3.1 11 30 ALE/PROG (INT0) P3.2 12 29 PSEN (INT1) P3.3 13 28 P2.7 (A15) (T0) P3.4 14 27 P2.6 (A14) (T1) P3.5 15 26 P2.5 (A13) (WR) P3.6 16 25 P2.4 (A12) (RD) P3.7 17 24 P2.3 (A11) XTAL2 18 23 P2.2 (A10) XTAL1 19 22 P2.1 (A9) Vss 20 21 P2.0 (A8) Рис.2. Назначение выводов I-8051 Память программ (Чтение) Память данных (Чтение/Запись) FFFFH Внешнее ПЗУ FFFFH Внешняя @DPTR RD память PSEN WR данных @PC MOVC EA=0 Внутренняя память @DPTR данных @PC Внешнее Внутреннее FFH upper 128 SFR MOVX ПЗУ ПЗУ 80H EA=0 0000H EA=1 lower 128 00H 0000H PSEN Рис.3. Организация памяти семейства MCS-51 8 На рис.4 изображена карта нижней области программной памяти. ROM Память программ 0033Н 002BН Serial Port 0023Н Вектора Timer1 001BН прерываний EINT1 0013Н Timer0 000BH EINT0 0003Н Стартовый адрес 0000H (Reset) Рис.4. Программная память Адреса векторов прерываний расположены с интервалом в 8 байт: - 0003Н внешнее прерывание 0 (External Interrupt 0) - вывод IN T 0 ; - 000BН прерывание от таймера 0 (по флагу переполнения таймера - T F 0); - 0013Н внешнее прерывание 1 (External Interrupt 1) - вывод IN T 1 ; - 001BH прерывание от таймера 1 (по флагу переполнения таймера - T F 1); - 0023H прерывание от последовательного порта (Serial Interrupt = Receive Interrupt or Transmit Interrupt); и так далее. Память данных отделена от памяти программ. В этой области возможна адресация 64К внешнего ОЗУ. При обращении к внешней памяти данных ЦП микроконтроллера генерирует соответствующие сигналы чтения (R D) или записи (W R), взаимодействие с внутренней памятью данных осуществляется на командном уровне, при этом сигналы R D и W R не вырабатываются. Внешняя память программ и внешняя память данных могут комбинироваться путем совмещения сигналов R D и PS EN по схеме "логического И" для получения строба внешней памяти (программ/данных). Нижние 128 байт внутренней памяти данных (lower 128) присутствуют на всех кристаллах MCS-51 и показаны на рис.5. Первые 32 байта представляют собой 4 банка (Register Bank) по 8 регистров (R7...R0). Регистры R0 и R1 в любом из банков могут использоваться в качестве регистров косвенного адреса. Следующие за регистровыми банками 16 байт образуют блок побитно-адресуемого пространства. Набор инструкций MCS-51 содержит широкий выбор операций над битами, а 128 бит в этом блоке адресуются прямо и адреса имею значения от 00Н до 7FH. Все байты в нижней 128-байтной половине памяти могут адресоваться как прямо, так и косвенно. Верхняя 128 байтная половина памяти ОЗУ (upper 128) в микросхеме I-8051 отсутствует, но имеется в версиях кристаллов с 256 байтами ОЗУ. В этом случае область "Upper 128" доступна только при косвенной адресации. Область SFR (Special Function Register) доступна только при прямой адресации. Размещение регистров специальных функций в пространстве SFR показано на рис.6. Они включают в себя регистры портов, таймеры, средства управления периферией и так далее. 9 7FH Побайтно-адресуемая область ОЗУ 30H (direct, indirect) 2FH 7FH 7EH 7DH 7CH 7BH 7AH 79H 78H 2EH 77H 76H 75H 74H 73H 72H 71H 70H Побитно-адресуемая область ОЗУ (direct) 21H 0FH 0EH 0DH 0CH 0BH 0AH 09H 08H 20H 07H 06H 05H 04H 03H 02H 01H 00H 1FH RB3 18H 17H RB2 10H 0FH RB1 08H 07H SP после RESET 00H RB0(R7+R0) Рис.5. Нижние 128 байт внутреннего ОЗУ. побитовая адресация 8 байт F8H FFH F0H B F7H E8H EFH E0H ACC E7H D8H DFH D0H PSW D7H C8H CFH C0H C7H B8H IP BFH B0H P3 B7H A8H IE AFH A0H P2 A7H 98H SCON SBUF 9FH 90H P1 97H 88H TCON TMOD TL0 TL1 TH0 TH1 8FH 80H P0 SP DPL DPH PCO 87H N 0/8 1/9 2/A 3/B 4/C 5/D 6/E 7/F Рис.6. Размещение регистров специальных функций в пространстве SFR. Для 16 адресов в пространстве SFR имеется возможность как байтовой, так и битовой адресации. Для побитно-адресуемых регистров шестнадцатеричный адрес заканчивается на "0Н" или на "8Н". Битовые адреса в этой области имеют значения от 80Н до FFH. Вся серия кристаллов семейства MCS-51 имеет базовый набор SFR, как и в микросхеме I- 8051, расположенный по тем же адресам. Однако в кристаллах, представляющих собой дальнейшее развитие семейства в область SFR, добавляются новые регистры для расширения 10

Архитектура микроконтроллеров

Понимание архитектуры микроконтроллеров является ключевым при изучении языков программирования типа ассемблер. Структура ассемблера, формат его команд, адресация операндов и т. д. полностью определяются архитектурой. Целью изучения архитектуры является:

· выявление набора доступных для программирования регистров, их функционального назначения и структуры;

· понимание организации оперативной памяти и порядка ее использования;

· знакомство с типами данных;

· изучение формата машинных команд;

· выяснение организации обработки прерываний.

Архитектура семейства MCS-51 в значительной мере предопределяется ее назначением - построение компактных и дешевых цифровых устройств. Все функции МК реализуются с помощью единственной микросхемы. В состав семейства MCS-51 входит целый ряд микросхем от самых простых микроконтроллеров до достаточно сложных. Микроконтроллеры семейства MCS-51 позволяют выполнять как задачи управления различными устройствами, так и реализовывать отдельные узлы аналоговой схемы. Все микросхемы этого семейства работают с одной и той же системой команд, большинство из них выполняется в одинаковых корпусах с совпадающей цоколевкой (нумерация выводов для корпуса). Это позволяет использовать для разработанного устройства микросхемы разных фирм - производителей (таких какIntel, Dallas, Atmel, Philips и т.д.) без переделки принципиальной схемы устройства и программы.

MCS-51 выполнен по Гарвардской архитектуре, где адресные пространства памяти программ и данных разделены.

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

Двусторонний обмен осуществляется с помощью внутренней 8-разрядной магистрали данных. Рассмотрим подробнее назначение каждого блока. По такой схеме построены практически все представители семейства MCS-51. Различные микросхемы этого семейства различаются только регистрами специального назначения (в том числе и количеством портов). Система команд всех контроллеров семейства MCS-51 содержит 111 базовых команд с форматом 1, 2 или 3 байта и не изменяется при переходе от одной микросхемы к другой. Это обеспечивает прекрасную переносимость программ с одной микросхемы на другую.

Блок управления и синхронизации (Timing and Control) предназначен для выработки синхронизирующих и управляющих сигналов, обеспечивающих координацию совместной работы блоков ОЭВМ во всех допустимых режимах ее работы. В состав блока управления входят:


  • устройство формирования временных интервалов,
  • комбинационная схема ввода-вывода,
  • регистр команд,
  • дешифратор команд.

Входные и выходные сигналы блока управления и синхронизации :

1 PSEN – разрешение программной памяти;

2 ALE – выходной сигнал разрешения фиксации адреса;

3 PROG – сигнал программирования;

4 EA – блокировка работы с внутренней памятью;

5 VPP – напряжение программирования;

6 RST – сигнал общего сброса.

Устройство формирования временных интервалов необходимо для синхронизации последовательности состояний ЦП, образующих машинный цикл, а также для правильной работы всех внутреннихзащелок и выходных буферов портов. Машинный цикл состоит из шести последовательныхсостояний (States) от S1 до S6, каждое из которых, в свою очередь, подразделяется на две фазы:

фазу 1 (Phase 1 - P1) и фазу 2 (Phase 2 - P2). Таким образом, машинный цикл может быть определен как последовательность временных интервалов S1P1, S1P2, S2P1,....,S6P2. Длительность фазы равна периоду следования тактовых импульсов, поэтому машинный цикл занимает 12 тактовых периодов.

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

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

Рис 2.3. Структурная схема однокристального микроконтроллера Intel 8051

(семейство MCS-51)

Арифметико-логическое устройство (ALU) представляет собой параллельное восьмиразрядное устройство, обеспечивающее выполнение арифметических и логических операций. АЛУ состоит из:

  • регистров временного хранения -TMP1 и TMP2,
  • ПЗУ констант,
  • сумматора,
  • дополнительного регистра - регистра В,
  • аккумулятора - ACC,
  • регистра слова состояния программ (регистр флагов)- PSW .

Регистры временного хранения TMP1, TMP2 - восьмиразрядные регистры, предназначенные для приема и хранения операндов на время выполнения операций над ними. Эти регистры программно не доступны.

ПЗУ констант обеспечивает выработку корректирующего кода при двоично-десятичном представлении данных, кода маски при битовых операциях и кода констант.

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

Регистр B - восьмиразрядный регистр, используемый во время операций умножения и деления. Для других инструкций он может рассматриваться как дополнительный сверхоперативный регистр.

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

Регистр состояния программ PSW (Programm Status Word) предназначен для хранения слова состояния выполняемых команд. При выполнении многих команд в ALU формируется ряд признаков операции (флагов), которые фиксируются в регистре слова состояния программы (PSW). В табл. 1 приводится перечень флагов PSW, даются их символические имена и описываются условия их формирования.

Блок прерываний и последовательного интерфейса - UART(Universal Asynchronous Receiver/Transmitter) предназначен для организации ввода - вывода последовательных потоков информации и организации системы прерывания программ.

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

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

Базовая версия MCS–51 Краткие сведения. Современные 8–разрядные микроконтроллеры (МК) обла­дают такими ресурсами управления в режиме реального времени, для получения которых раньше использовались дорогие многокристальные компоновки в виде отдельных плат микроЭВМ, A именно:

● имеют достаточную емкость памяти, физическое и логическое ее разделение на память программ и память данных (гарвардскую архитектуру) и систему команд, ориентированную на выполнение алгоритмов управления;

● включают в себя все устройства (процессор, ПЗУ, ОЗУ, порты ввода–вывода, систему прерываний, средства обработки битовой информации и др.), необ­ходимые для реализации микропроцессорной системы управления мини­мальной конфигурации. В 70–е годы прошлого столетия фирмой Intel разработан и освоен промыш­ленный выпуск семейства 8–разрядных микроконтроллеров MCS–48, объединен­ных рядом общих признаков (разрядностью, системой команд, набором основных функциональных блоков и др.). Базовая версия этого семейства включает в себя:

● 8–разрядный процессор;

● внутреннюю память программ (1/2/4К байт);

● внутреннюю память данных (64/128/256 байт);

● до 27 внутренних и 16 внешних линий ввода–вывода;

● один 8–разрядный таймер–счетчик;

● одноуровневую систему прерываний с двумя источниками запросов. В 1980 г. той же фирмой было разработано новое семейство восьмиразрядных микроконтроллеров MCS–51, которое совместимо с архитектурой семейства MCS–48, но обладает более широкими возможностями.

Архитектура семейства MCS–51 оказалась настолько удачной, что и по настоящее время является одним из стандартов 8–разрядных МК. Поэтому объектом изучения выбраны МК этого семейства, получившие широкое распространение в сравнительно простых си­стемах управления.

Для семейства MCS–51 разработаны различные средства подготовки программ (компиляторы, аппаратно–программные эмуляторы и др.) и имеется большое число библиотек стандартных подпрограмм. В состав семей­ства входят разнообразные модификации микросхем (версии кристаллов) микро­контроллеров. В статьях этого раздела достаточно подробно рассматривается базовая версия микроконтроллеров семейства MCS–51 (микросхеме 8051 соответствует отече­ственный аналог КP1816ВЕ51), наиболее простая в структурно–функциональном плане и с точки зрения понимания.

Последующие серии микросхем, сохраняя со­вместимость с базовой версией, отличаются от нее улучшенной технологией из­готовления, электрическими параметрами, дополнительными аппаратными сред­ствами и функциональными возможностями. Структурно–функциональным осо­бенностям последующих модификаций микросхем семейства MCS–51 посвящены следующие статьи.
Обобщенная структурная схема MCS–51. В состав МК, обобщенная струк­турная схема которого приведена на рис. 7.1.1, входят:

● 8–разрядный центральный процессор ЦП, состоящий из АЛУ , устройства уп­равления УУ и формирователя адреса ФА ;

● масочное ПЗУ емкостью 4К байта для хранения программ;

● ОЗУ емкостью 128 байт для хранения данных;

● четыре программируемых порта Р0–Р3 для ввода–вывода информации;

● блок последовательного интерфейса БПИ для обмена информацией с внеш­ними устройствами по двухпроводной линии;

● блок таймеров/счетчиков БT/C для поддержания режима реального времени;

● блок прерываний БП для организации прерываний исполняемых программ. Эти средства образуют резидентную часть микроконтроллера, размещенную непосредственно на кристалле. В состав МК входит большое число регистров, которые отнесены к отдельным функциональным блокам и на схеме не показаны.

На схеме также не показаны цепи управления. Двусторонний обмен информацией между блоками осуществляется по внутренней 8–разрядной шине данных ШД–8.

По внутренней 16–разрядной шине адреса ША–16 сформированный в ЦП адрес выводится в ПЗУ (12 разрядов адреса) и в ОЗУ (8 младших разрядов).

При ис­пользовании внешней памяти в порт Р0 выводятся 8 младших разрядов адреса и в порт P2 - 3 или 8 старших разрядов.

Для логического расширения интерфейса исполь­зуется совмещение функций линий портов. В качестве примера на рис. 7.1.1 пунктиром показаны линии порта Р3, выполняющие аль­тернативные функции передачи управляющих сигналов, о назначении которых будет сказано ниже. Для создания внутреннего тактового ге­нератора к выводам микросхемы МК подклю­чаются кварцевый резонатор и два конденса­тора (рис. 7.1.1). Вместо внутреннего тактово­го генератора для синхронизации можно ис­пользовать внешний источник колебаний. Условное графическое обозначение мик­росхемы МК приведено на рис. 7.1.2, обозна­чение и назначение выводов - в табл. 7.1.1. Рассмотрим функциональные блоки МК и принцип их работы. Арифметическо–логическое устройство. Арифметическо–логическое уст­ройство предназначено для выполнения арифметических (включая умножение и деление) и логических операций над восьмиразрядными операндами, A также операций логического сдвига, обнуления, установки и др. Структурная схема АЛУ приведена на рис. 7.1.3.

В состав АЛУ входят

● параллельный восьмиразрядный сумматор SМ комбинационного типа с по­следовательным переносом, выполняющий арифметические (сложение и вы­читание) и логические (сложение, умножение, неравнозначность и тожде­ственность) операции;

аккумулятор A, обеспечивающий функции основного арифметического ре­гистра;

регистр В, используемый для реализации операций умножения и деления или как дополнительный сверхоперативный регистр, функции которого определя­ет пользователь;

регистры (программно недоступные) временного хранения РВХ1, РВХ2, предназначенные для приема и хранения операндов на время выполнения операции;

● ПЗУ констант ПЗУК, хранящее корректирующий код для двоично–десятичного представления данных, код маски при битовых операциях и код констант;

регистр слова состояния программы PSW, фиксирующий состояние АЛУ по­сле выполненной операции. В табл. 7.1.2 приведены сведения о назначении битов отдельных разрядов регистра PSW. Устройство управления. Устройство управления (УУ) центрального процес­сора предназначено для координации совместной работы всех узлов МК с по­мощью вырабатываемых синхроимпульсов и управляющих сигналов. В его состав входят (рис. 7.1.4):

узел синхронизации и управления УСУ, который формирует синхроимпульсы, задающие машинные циклы и их отдельные состояния (S) и фазы (Р), и в за­висимости от режима работы МК вырабатывает необходимый набор управля­ющих сигналов. На выполнение команды отводится один, два или четыре ма­шинных цикла.

Каждый машинный цикл имеет шесть состояний S1–S6, A каж­дое состояние включает в себя две фазы P1, P2, длительность которых составляет период колебаний тактового генератора T 0SC .

Длительность ма­шинного цикла равна 12T 0SC . Все машинные циклы одинаковые, начинаются с фазы S1P1 и заканчиваются фазой S6P2.

Помимо синхроимпульсов устрой­ство синхронизации в каждом машинном цикле формирует два (иногда один) сигнала стробирования младшего байта адреса ALE в виде положительного импульса в фазах S1P2–S2P1 и S4P2–S5P1. Временные диаграммы на рис. 7.1.5 иллюстрируют организацию машинных циклов;

● регистр команд РК, дешифратор команд ДК и ПЛМ, позволяющие в каждом машинном цикле сформировать набор микроопераций в соответствии с мик­ропрограммой выполняемой команды;

● логика ввода–вывода ЛВВ для приема и выдачи сигналов, обеспечивающих обмен информацией МК с внешними устройствами через порты Р0–Р3;

● регистр PCON, имеющий единственный задействованный бит SMOD в пози­ции PCON.7 для удвоения скорости передачи данных через последователь­ный порт. Остальные биты зарезервированы для дальнейшего использования.
Формирователь адреса. Формирователь адреса (ФА), или счетчик команд РС, предназначен для формирования текущего 16–разрядного адреса программной памяти и 8/16–разрядного адреса внешней памяти данных. В его состав входят (рис. 7.1.6):

● 16–разрядный буфер Б, осуществляющий связь между 8–разрядной шиной данных ШД и 16–разрядной внутренней шиной (ВШ) формирователя адреса;

● схема инкремента СИ для увеличения значения текущего адреса памяти программ на единицу;

● регистр для хранения текущего адреса команд РТА, поступающего из СИ;

● регистр указателя данных DPTR, состоящий из двух 8–разрядных регистров DPHи DPL. Он служит для хранения 16–разрядного адреса внешней памяти данных и может быть использован в качестве двух независимых программно доступных РОН;

● регистр формирователя адреса РФА для хранения исполнительного 16–раз­рядного адреса памяти программ или 8/16–разрядного адреса внешней памяти данных. Этот регистр используется также для передачи данных че­рез порт Р0 во внешние устройства при выполнении команд MOVX @Rm, A и MOVX @DPRT, A.

Память данных. Память данных предназначена для приема, хранения и выда­чи информации, используемой в процессе выполнения программы. Внутренняя (резидентная) память (рис. 7.1.7) данных состоит из ОЗУ ем­костью 128 байт, указателя стека SP, регистра адреса ОЗУ РА и дешифратора Дш. Указатель стека SP представляет собой 8–разрядный регистр, предназ­наченный для приема и хранения адре­са ячейки стека, к которой было после­днее обращение. После сброса в ука­зателе стека устанавливается адрес 07Н, что соответствует началу стека с адресом 08Н. Регистр адреса РА совместно с дешифратором Дш позволяет осуществить доступ к требуемой ячейке памяти, содержащей байт или бит информации.

В МК предусмотрена возможность увеличения объема памяти данных до 64 Кбайт путем подключения внешних запоминающих устройств. В качестве при­мера на рис. 7.1.8 показана страничная организация внешней памяти данных ВПД емкостью 2К байт с использованием команд типа MOVX @ Rm(m = 0; 1). При этом порт Р0 работает как мультиплексированная шина адрес/данные, три линии порта P2 используются для адресации страницы внешнего ОЗУ, A остальные пять линий могут быть задействованы в качестве линий ввода–вывода.
На рис. 7.1.9 приведены временные диаграммы циклов чтения и записи при работе МК с внешним ОЗУ. На диаграммах обозначено:

● РСН - старший байт счетчика команд PC;

● DPL, DPH - младший и старший байты регистра указателя данных DPTR, ко­торый используется в качестве регистра для косвенной адресации в коман­дах MOVX @DPTR,A и MOVX A,@DPTR;

● P2 SFR - защелки порта P2;

● Rm (m = 0, 1) - регистры, используемые в командах MOVX @Rm, A и MOVX A, @Rm в качестве регистров косвенного адреса;

● Z - высокоомное состояние;

● D - период, в течение которого данные из порта Р0 вводятся в микроконт­роллер. Память программ. Память программ предназначена для хранения программ, имеет свое (отдельно от памяти данных) адресное пространство и доступна толь­ко для чтения. В ее состав входит дешифратор Дш и ПЗУ (рис. 7.1.10). Для адресации памяти программ используется 16–разрядный счетчик РС, поэтому ее максимальная ем­кость составляет 64К байта. Внутренняя память про­грамм состоит из ПЗУ емкостью 4К байт и 12–разрядного дешифратора. Внешняя память подключается по схеме на рис. 7.1.11. Если на вывод ¯EA МК подается 0 В (как показано на рис. 7.1.11), внутренняя память программ отключается. Все обращения к памяти начинаются с адреса 0000h. При подключении вывода ¯ЕА к источнику питания обращение к внутренней памя­ти программ по адресам 0000h–FFFFh и к внешней памяти программ по адресам 0FFFh–FFFFhпроисходит автоматически.

Для чтения внешней памяти программ МК вырабатывается сигнал ¯PSEN. При работе с внутренней памятью сигнал чтения не ис­пользуется. При обращениях к внешней па­мяти программ всегда формируется 16–раз­рядный адрес. Младший байт адреса передается через порт Р0 в первой половине машинного цикла и фиксируется по срезу строба АLЕ в реги­стре Во второй половине цикла порт Р0 используется для ввода в МК байта данных из внешней памяти.

Старший байт адреса передается через порт P2 в течение всего времени обращения к памяти.

Временные диаграммы циклов чтения и записи при работе МК с внешним ОЗУ приведены на рис. 7.1.12.
На диаграммах обозначено:

● PCL OUT - выдача младшего байта счетчика команд PC;

● РСН OUT - выдача старшего байта счетчика команд PC;

● DPH - старший байт регистра указателя данных DPTR, который используется в качестве регистра для косвенной адресации в командах MOVX @DPTR,A и MOVX A,@DPTR;

● P2 SFR - защелки порта P2;

● INS IN - ввод байта инструкции (команды) из памяти программ;

● ADDR OUT - выдача младшего байта адреса внешней памяти данных из ре­гистров Rm (m = 0, 1) или из регистра DPL (младшего регистра DPTR). Порты ввода–вывода. Назначение портов. Порты Р0, P1, P2, Р3 пред­назначены для обмена информацией между МК и внешними устройствами, A так­же для выполнения следующих функций:

● через порт Р0 выводится младший байт адреса А7…A0; выводится из МК и вводится в МК байт данных при работе с внешней памятью программ и внеш­ней памятью данных (с разделением во времени);

● через порт P2 выводится старший байт адреса A15…А8 при работе с внеш­ней памятью программ и внешней памятью данных (только при использова­нии команд MOVX A,@DPTR и MOVX @DPTR,A);

● линии порта Р3 могут быть задействованы на выполнение альтернативных функций, если в фиксатор–защелку этой линии занесена 1, в противном слу­чае на выводе линии фиксируется 0. Альтернативные функции выводов порта P3 приведены в табл. 7.1.3.

Схемные особенности портов

На рис. 7.1.13 показаны схемы для од­ного канала каждого из портов МК, включающего в себя:

● защелку для фиксации принимаемого бита данных;

● выходной усилительный каскад (драйвер);

● узел связи с выходным каскадом (за исключением P2);

● цепь для передачи бита данных со стороны вывода порта, состоящую из бу­феров В2 и В3 (для порта Р4). Защелкой служит D–триггер, тактируемый внутренним сигналом «Запись в за­щелку». Бит данных с прямого выхода D–триггера может быть считан программно через буфер В1 сигналом «Чтение защелки» на линию внутренней шины данных (ШД) МК.

Выходной каскад порта Р0 представляет собой инвертор, особенности кото­рого проявляются в том, что нагрузочный транзистор VT2 открывается только при обращениях к внешней памяти (при передаче через порт адреса и данных). Во всех других режимах нагрузочный транзистор закрыт. Поэтому для использования Р0 (рис. 7.1.13, а) в качестве выходного порта общего назначения к его выводам необходимо подключить внешние нагрузочные резисторы. При записи 1 в защел­ку порта инверторный транзистор VT1 запирается и внешний вывод порта Р0.Х переводится в высокоомное состояние. В этом режиме вывод порта Р0.Х может служить входом. Если порт Р0 используется как порт ввода/вывода общего на­значения, каждый из его выводов Р0.Х может независимо от других работать как вход или как выход. Выходные каскады портов P1, P2, Р3 (рис. 7.1.13, б, в, г) выполнены по схемам инверторов с внутренним нагрузочным резистором, в качестве которого исполь­зован транзистор VT2.

Для уменьшения времени переключения при переходе выводов портов из состояния 0 в состояние 1 параллельно нагрузочному транзи­стору VT2 введен дополнительный транзистор VT3. Транзистор VT3 с помощью элементов в цепи затвора отпирается на время, равное двум периодам колеба­ний задающего кварцевого генератора (в течение фаз S1P1, S2P2 машинного цикла). Выходные каскады портов Р0, P2 (рис. 7.1.13, A, в) с помощью мультиплексора MX могут быть подключены либо к защелкам, либо к внутренним шинам «Адрес/ данные» и «Адрес». Выходной каскад порта P1 (рис. 7.1.13, 6) постоянно подклю­чен к защелке.

Если вывод порта Р3 является выходом и его защелка содержит 1, то его вы­ходным каскадом управляет аппаратно внутренний сигнал «Альтернативная функ­ция выхода», обеспечивающий выполнение соответствующей альтернативной функции, т.е. на внешнем выводе формируется один из сигналов ¯WR,¯RD или RxD. Если же вывод порта задействован на вход, то поступающий на него альтер­нативный сигнал (TxD, ¯INT0, ¯INT1, Т0, Т1) передается на внутреннюю линию «Аль­тернативная функция входа».

Режим записи в порт.

При выполнении команды записи в порт новое зна­чение записывается в защелку в фазе S6P2 и выводится непосредственно на вы­ходной контакт порта в фазе S1P1 следующего машинного цикла.

Режим чтения порта

Команды чтения портов считывают информацию не­посредственно с внешних контактов выводов порта или с выходов защелок. В первом случае бит данных с вывода порта считывается программно через буфер В2 сигналом «Чтение выводов» на линию внутренней шины данных (ШД) МК. Отметим, что сигналы «Запись в защелку», «Чтение защелки», «Чтение выво­дов» вырабатываются аппаратно при выполнении соответствующих команд.

Во втором случае реализуется так называемый режим «Чтение-Модифика­ция-Запись», в котором команда считывает сигнал состояния защелки, при не­обходимости модифицирует его и затем записывает обратно в защелку. Режим «Чтение-Модификация-Запись» реализуется при выполнении следующих команд: ANL, ORL, XRL, JBC; CPL; INC; DEC; DJNC; MOV PX,Y; CLR PX.Y; SETB PX,Y.

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

Опрос состояния системы прерываний производится в конце каждого машинного цикла в фазе S5P2 , за исключением команд RETI и любых команд с обращением к регистрам IE и IP. От момента фиксации запроса на прерывания до обслуживания прерывания требуется от 38 до 86 периодов частоты fOSC , в зависимости от фазы поступления запроса и числа машинных циклов команды, во время выполнения которой поступил запрос.

При реализации прерывания аппаратным способом выполняется команда LCALL addr16, обеспечивающая запоминание в стеке текущего состояния программного счетчика (запоминание адреса возврата), и переход к стартовому адресу addr16 соответствующей процедуры обслуживания. С каждым источником запроса прерываний связан свой

стартовый адрес (вектор прерывания):

Внешнее прерывание INT0.

Прерывание таймера/счетчика ТС0.

Внешнее прерывание INT1.

Прерывание таймера/счетчика ТС1.

Прерывание последовательного порта.

2.7. Методы адресации и система команд семейства MCS-51

Система команд семейства MCS-51 ориентирована на организацию гибкого ввода-вывода данных через универсальные порты P0...P3 и первичную обработку информации. Особое внимание уделено операциям с битами и передаче управления по их значению. Команды, выполняющие такие операции, составляют многочисленную группу и образуют вместе с соответствующими аппаратными средствами так называемый «булев процессор» в составе архитектуры MCS-51.

Система команд предоставляет программисту возможность использовать большинство операций с полным набором методов адресации и программно-доступных ресурсов аппаратуры.

2.7.1. Методы адресации

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

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

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

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

Ниже приведены основные методы адресации, используемые в системе команд семейства MCS-51.

Неявная адресация . В команде не содержится явных указаний об адресе участвующего в операции операнда или адресе, по которому помещается результат операции, но этот адрес подразумевается. В командах наиболее часто неявно адресуется аккумулятор как приемник результата операции. Например, результат сложения содержимого аккумулятора (A) и регистра R1 текущего банка данных командой ADD A,R1 записывается в неявно адресуемый аккумулятор. Вся указанная команда занимает в памяти один байт, в то время как адрес только аккумулятора (8Eh области SFR) содержит один байт.

Непосредственная адресация . В поле адреса команды содер-

жится не адрес операнда, а непосредственно сам операнд. На непосредственную адресацию указывает специальный символ # перед числом. Например, командой MOV A,#15h шестнадцатеричное число 15 (второй байт команды) загружается в аккумулятор. В системе команд непосредственная адресация обозначена как #data, где data – число

(data = 00h...FFh).

Прямая адресация . В поле адреса команды указан прямой адрес ячейки памяти данных, в которой находится или куда заносится операнд. Например, командой MOV A,15h содержимое ячейки DSEG с адресом 15h загружается в аккумулятор. Ячейка памяти имеет прямую адресацию, а аккумулятор - неявную. В зависимости от местонахождения адресуемого операнда, прямая адресация подразделяется на прямую регистровую и абсолютную.

Прямая регистровая адресация . В поле адреса команды указан прямой адрес регистра текущего регистрового банка. Регистров в каждом банке восемь, и для их адресации необходим трехбитовый прямой адрес. В мнемонике команд адресуемый регистр обозначен Rn, где n=0...7. Все поля команды умещаются в один байт. Такую адресацию называют короткой. Например, MOV R4,R1.

Прямая абсолютная адресация позволяет обратиться к любой ячейке DSEG и области SFR. Прямой адрес в этом случае занимает один байт, а команда – два байта. В системе команд байт прямого адреса обозначен словом direct (прямой) (direct = 00h…FFh). Например, команда MOV 80h,R2 (или MOV P0,R2) загружает содержимое регистра R2 текущего банка данных в порт Р0 (ячейка 80h области SFR). Если оба операнда имеют прямую абсолютную адресацию, то команда становится трехбайтовой (Например, MOV 80h,15h).

Косвенная адресация . В поле адреса указан адрес ячейки памяти, в которой находится прямой адрес операнда. В системе команд на косвенную адресацию указывает специальный символ @. Свойством

хранить прямой адрес обладают регистры R0 и R1 (@Ri, i = 0,1) каждого регистрового банка. Например, если содержимое регистра R1 текущего банка регистров равно 15h, то команда MOV A,@R1 выполнит то же действие, что и приведенная выше команда MOV A,15h – загрузит содержимое ячейки памяти DSEG с адресом 15h в аккумулятор. Однако команда MOV A,@R1 однобайтовая, но самое главное, здесь имеется возможность программным способом изменять адрес, изменяя содержимое регистра R1.

Относительная адресация . При относительной адресации прямой адрес формируется путем сложения базового адреса с адресным полем команды. В качестве базового адреса используется содержимое программного счетчика, а адресное поле команды представляет собой восьмиразрядное смещение rel (relative - относительный). Число rel интерпретируется командой как целое со знаком, представленное в дополнительном коде. Диапазон его представления - (-128...+127). При определении числа rel следует учесть, что программный счетчик указывает на следующую, подлежащую выполнению, команду. Относительная адресация широко используется в командах передачи управления, что позволяет создавать перемещаемые программные модули. Команды передачи управления с относительной адресацией позволяют организовать ветвление относительно текущего положения программного счетчика PC в обе стороны на (-128...+127) байт.

В программах на языке ассемблера в поле смещения можно указать метку, на которую необходимо перейти. В результате трансляции ассемблер вычислит величину смещения, если она не превышает (-128…+127). В противном случае будет выдано сообщение об ошибке.

Базовая адресация представляет разновидность относительной адресации. Прямой адрес в этом случае формируется путем сложения адреса, указанного в команде, с содержимым базового регистра, в котором хранится базовый адрес. Функцию базового регистра в семействе MCS-51 выполняет регистр-указатель данных DPTR или программный счетчик PC. Этот тип адресации особенно удобен при обработке таблиц и массивов данных. В командах MOVC A,@A+DPTR и MOVC A,@A+PC 16-разрядный прямой адрес формируется как сумма содержимого регистров DPTR и A или PC и A.

Страничная адресация . При использовании страничной адресации память разбивается на ряд страниц одинаковой длины. Адресация страниц осуществляется отдельным регистром страниц, а адресация ячеек памяти внутри страницы – адресом, содержащимся в команде. Прямой адрес формируется конкатенацией (присоединением) адреса страниц и адреса ячейки памяти внутри страницы. В команде MOVX A,@Ri функцию регистра страниц выполняет порт P2 (старший байт адреса), а содержимое регистра Ri (младший байт адреса) задает адрес внутри страницы. При этом память разбивается на 256 страниц по 256 ячеек в каждой из них.

Стековая адресация используется в безадресных командах и представляет собой сочетание автоинкрементного и автодекрементного способов адресации, работающее по принципу LIFO (L ast I nput – F irst O utput)- «последним вошел – первым вышел». Стек располагается в DSEG и растет в сторону увеличения адреса. Адрес вершины стека содержится в указателе стека SP. При записи байта в стек сначала выполняется инкремент содержимого SP, а затем по этому адресу производится запись. При чтении байта из стека сначала выполняется чтение по адресу, на который указывает SP, а затем - декремент SP. При использовании стека необходимо учитывать, что глубина стека (максимальное число ячеек памяти, занятых под стек) аппаратными средствами не контролируется. При чрезмерном увеличении стека могут быть заняты не предназначенные для него ячейки памяти с потерей информации в них. Аппаратно стек используется для сохранения адреса возврата при обслуживании прерывания.

2.7.2. Система команд семейства MCS-51

Система команд представлена в таблицах П2.1...П2.6 приложения 2. В таблицах указаны наименование команды, ее мнемоника, двоичный код операции, влияние выполняемой команды на флаги C, OV, AC и P, длина команды в байтах (Б) и время выполнения в машинных циклах (Ц), а также содержание преобразования, выполняемого командой. В качестве разделителя адресных полей в командах используется запятая. Для улучшения читаемости можно добавить пробелы после запятой, если их поддерживает используемый ассемблер.

Все множество команд можно разбить на 5 групп: операции передачи данных, арифметические операции, логические операции, операции с битами и операции передачи управления.

Группа команд операций передачи данных (таблица П2.1 ) со-

держит команды MOV (передачи данных между DSEG и RSEG), MOVC (между CSEG и A), MOVX (между XSEG и A), команды обращения к стеку PUSH и POP, а также две команды обмена XCH и XCHD. Все команды передачи данных, у которых приемником является аккумулятор, устанавливают флаг паритета P содержимого аккумулятора, а команды с прямой адресацией, у которых приемником является регистр PSW, изменяют все флаги. Наиболее емкой является команда MOV, использующая четыре способа адресации: прямой регистровый (A, Rn, DPTR), прямой (direct), косвенный (@Ri), непосредственный (#data, #data16). Второй операнд команды является источником, первый – приемником. Для указания приемника служат три способа адресации (кроме непосредственного), а для указания источника все четыре. Трехбайтовая команда MOV direct,direct обеспечивает пересылку между двумя любыми ячейками памяти (DSEG и SFR), включая RSEG. Для обмена с RSEG предусмотрены специальные двух- и однобайтовые форматы:

Специальная команда MOV DPTR,#data16 позволяет загрузить 16-разрядный указатель DPTR значением data16.

Команда MOVC позволяет считывать информацию из программной памяти CSEG не в регистр команд устройства управления, а в аккумулятор операционного устройства. В команде используются два способа адресации: по базе DPTR и относительно PC. В обоих случаях целое без знака смещение (индекс) хранится в аккумуляторе. Приемником результата также служит аккумулятор. Команда позволяет выполнять быструю перекодировку по таблицам.

Обращение к внешней памяти осуществляется с помощью команды MOVX . Обмен производится по байтам между аккумулятором и внешним XSEG. Ячейка XSEG может быть адресована двумя способами: косвенно через 16-разрядный указатель DPTR и странично косвенно через 8-разрядный указатель Ri, i=0,1. В последнем случае регистром страниц служит регистр P2.

Безадресные команды PUSH и POP обеспечивают передачу дан-

ных между DSEG, RSEG и SFR.

Команда обмена XCH обеспечивает двухсторонний обмен байтами, а команда XCHD - младшими тетрадами байтовых операндов.

Группа команд арифметических операций (таблица П2.2 ) со-

держит команды сложения ADD, сложения с учетом переноса ADDC, вычитания с учетом заема SUBB, увеличения и уменьшения на единицу INC и DEC, десятичной коррекции сложения в двоично-десятичном (BCD) коде упакованного формата, умножения MUL и деления DIV. Операции выполняются над беззнаковыми целыми числами. В операциях сложения и вычитания первым операндом и приемником результата служит аккумулятор. Для определения второго операнда используется прямая регистровая, прямая абсолютная, непосредственная и косвенная адресации. Операции INC и DEC применимы к аккумулятору, прямо адресуемому регистру, прямо или косвенно адресуемой ячейке памяти. Кроме того, операция INC применима к содержимому 16разрядного регистра указателя DPTR.

В операциях целочисленного умножения и деления без знака участвуют аккумулятор и регистр B. При умножении 8-разрядное значение A умножается на 8-разрядное значение B, а 16-разрядный результат записывается в пару BA. При этом регистр B хранит старшую часть произведения. Флажок OV устанавливается, если произведение больше 255. При делении 8-разрядного значения A на 8-разрядное значение B частное записывается в A, а остаток в B. При попытке деления на 0 устанавливается флаг переполнения OV.

Команда десятичной коррекции аккумулятора DA размещается после команды сложения. Слагаемые необходимо представить в BCD коде. Коррекция выполняется стандартным способом.

Группа команд логических операций (таблица П2.3 ) содержит три типовые операции: ANL – логическое И, ORL – логическое ИЛИ, XRL – логическое исключающее ИЛИ. Источником первого операнда

служит либо аккумулятор A, либо прямо адресуемая ячейка памяти. Второй операнд задается одним из четырех основных методов адресации. В состав группы входят также одноместные операции над содержимым аккумулятора: CLR - очистки, CPL – инверсии, а также RL, RLC, RR и RRC – операции циклического и расширенного сдвигов вправо и влево. Сюда же включена операция обмена тетрад в аккумуляторе SWAP,которая может интерпретироваться как циклический сдвиг байта на четыре разряда.

Группа команд операций с битами (таблица П2.6 ) содержит ко-

манды SETB – установки бита в 1, CLR – сброса бита в 0, CPL – инверсии бита, ANL и ORL – логическое И и логическое ИЛИ содержимого флага C и прямо адресуемого бита, MOV – пересылка бита.

В битовых операциях флаг C исполняет роль булевого аккумулятора. В качестве операндов используется содержимое флага C или прямо адресуемого бита bit области BSEG. В операциях ANL и ORL можно использовать содержимое прямо адресуемого бита (bit) или инверсию содержимого (/bit).

В эту группу входят также команды условного перехода с относительным 8-разрядным смещением rel. Условный переход может быть осуществлен как при установленном (команда JB), так и при сброшенном (команда JNB) бите. Особо следует отметить команду JBC, которая при установленном бите реализует ветвление и одновременно с этим сбрасывает бит в 0.

Группа команд передачи управления (таблицы П2.4 и П2.5 ) со-

держит команды безусловного перехода AJMP, LJMP, SJMP, JMP, условного перехода JZ, JNZ, CJNE, вызова ACALL, LCALL, возврата RET, RETI и модификации с условным переходом DJNZ. Сюда же включена пустая команда NOP.

В командах передачи управления широко применяется относительная адресация, позволяющая создавать перемещаемые программные модули. В качестве относительного адреса выступает 8-разрядное смещение rel – байт со знаком, обеспечивающее переход на (–128… +127) байт относительно текущего положения PC. Для перехода в любую другую точку 64 Кбайтового адресного пространства может быть использован либо прямой addr16, либо косвенный @A+DPTR адрес. В последнем случае содержимое A интерпретируется как целое без знака. Вариант короткой прямой адресации addr11 внутри 2 Кбайтовой текущей страницы введен для совместимости с семейством MCS-48.

Все эти типы адресации применяются в командах перехода. В командах вызова используются только прямой addr16 и внутристраничный addr11 способы адресации. Во всех условных командах используется только относительная адресация.

Когда микроконтроллер опознает запрос на прерывание, он генерирует команду LCALL addr16 , что автоматически обеспечивает запоминание адреса возврата в стеке. Информация о состоянии программы (содержимое регистра PSW) автоматически не сохраняется. При этом

Понравилось? Лайкни нас на Facebook