Микропроцессорных устройств для встроенных применений. Их особенности и выполняемые функции”.
Микроконтроллер – вычислительно-управляющее устройство, предназначенное для выполнения функций контроля и управления периферийным оборудованием.
Уклон в сторону управления накладывает отпечаток на особенность архитектуры микроконтроллеров. Основной из этих особенностей является то, что наряду с процессорным ядром микроконтроллера имеют в своём составе подсистему ввода-вывода и, возможно, подсистему памяти. В последнем случае принято говорить об однокристальных микро-ЭВМ.
Рассмотрим особенности организации каждой из подсистем микроконтроллеров.
Процессорное ядро
Современные микроконтроллеры могут быть построены как по Гарвардской (MCS-51 Intel), так и по Фон Неймановской архитектуре (MCS-96 Intel, 80C166 Siemens). Все они имеют внешнюю системную магистраль для обмена данными с внешней памятью и дополнительными периферийными устройствами. Классические семейства микроконтроллеров (MCS-51) имеют, как правило, мультиплексные шины адреса/данных, что было обусловлено необходимостью минимизировать размер микросхемы. Однако современные быстродействующие микроконтроллеры используют уже демультиплексную шину, что ускоряет работу системы. Некоторые модели микроконтроллеров имеют возможность работать либо мультиплексной либо с демультиплексной шиной, в зависимости от требуемой конфигурации системы. В случае демультиплексной шины контроллер быстрее обменивается данными по магистрали. При работе с мультиплексной шиной, освободившиеся выводы используются как порты ввода-вывода. (MCS251 Intel, 80C166 Siemens).
Практически все микроконтроллеры выполняют только операции с фиксированной точкой. Существуют 8-разрядные (MCS-51 Intel, MC6805 Motorola),16-разрядные (MCS-96 Intel, 80C166 Siemens, MC6816 Motorola),32-разрядные(MC683 Motorola, MPC500 PowerPc) микроконтроллеры. Системы команд микроконтроллеров поддерживает, как правило, широкий набор методов адресации в т.ч. бытовую адресацию.
Подсистема памяти.
Существуют микроконтроллеры с аккумуляторной (MCS-51) и регистровой (MCS-96) организацией. Количество регистров и их разрядность зависит от конкретной модели. Зачастую микроконтроллеры имеют несколько банков регистров (MCS-48, MCS-51, 80C166).
Память данных определенного объема присутствует на простом микроконтроллере практически всегда. Она обменивается данными с процессорным ядром по внутренней магистрали микроконтроллера, которая может быть организована иначе, чем внешняя. Поэтому обмен данными с внутренней памятью данных, как правило, осуществляется быстрее, чем с внешней.
Варианты реализации внутренней памяти программ могут быть различными:
она может отсутствовать. В этом случае микроконтроллер выполняет программу, считывая команды из внешней памяти программ через системную магистраль.
Она может быть выполнена в виде масочного ПЗУ. В этом случае микроконтроллер не нуждается во внешней памяти программ. Однако в этом случае программа во внутреннюю память записывается однократно на этапе изготовления кристалла и не может быть изменена в дальнейшем. Как правило, программа, записанная во внутреннюю память, выполняется быстрее, чем из внешней памяти.
Она может быть выполнена в виде однократно программируемого ППЗУ. В этом случае пользователь сам может записать программу во внутреннюю память, но лишь однажды. Для записи программы, как правило, необходим специальный программатор. Однако существуют микроконтроллеры, способные программировать сами себя (MCS-96) (программатор реализован внутри кристалла).
Она может быть выполнена в виде ППЗУ с УФ стиранием. В этом случае память программ может быть многократно перепрограммирована с помощью программатора. Перед очередным программированием она должна быть очищена с помощью УФ излучения.
Она может быть выполнена в виде Flash – памяти. В этом случае память программ может быть многократно перепрограммирована в процессе работы системы.
Она может быть реализована в виде ОЗУ. В этом случае для загрузки программы после включения питания используется так называемый Boot Strep загрузчик. Это механизм, позволяющий после включения питание загрузить начальную программу функционирования по последовательному каналу связи, либо по системной магистрали.
Подсистема ввода-вывода.
Подсистем ввода-вывода состоит из набора разнообразных устройств, выполняющих специфические функции управления и контроля. К их числу наиболее часто относятся:
Порты ввода-вывода. Они могут быть либо однонаправленными ( выполняя функции входа или выхода соответственно), либо квази-двунаправленными. Такие порты могут выполнять функции как входа, так и выхода (в каждый конкретный момент времени либо вход, либо выход). Упрощенная структура квази - двунаправленного порта:
Если порт работает как выход, то один из выходных транзисторов открыт, а другой закрыт, в соответствии с уровнем выходного сигнала. Чтобы порт работал как вход необходимо записать в выходной триггер “1”, тогда транзистор Q2 будет закрыт, а сигнал управления блокирует открытие Q1. Таким образом, образуется высокоимпеданстный вход. Микроконтроллеры , поддерживающие бытовую адресацию способны управлять состоянием каждого вывода порта отдельно.
Таймеры/счетчики. Они представляют собой специализированные счетчики с коммутируемыми источниками синхронизации.
Обобщенная структурная схема таймера/счетчика.
Источником счетных импульсов может быть либо системный синхросигнал с фиксированной частотой (возможно предварительно деленной в заданное число раз), либо один из входов микроконтроллера. В первом случае устройство выполняет функции таймера, так как фактически считает интервалы времени постоянной длительности.
Во втором случае устройство выполняет функции счетчика событий (отрицательных или положительных перепадов) на входе микросхемы. Счет может производиться либо в одном, либо в обоих направлениях. В последнем случае направление счета определяется уровнем сигнала на соответствующем входе микросхемы. При переходе содержимого счетчика из наибольшего состояния в наименьшее и наоборот могут генерироваться соответствующие внутренние запросы на прерывание. Конкретные режимы работы и структура таймеров зависят от конкретной модели микроконтроллера.
3. Модули “Захват/Сравнение”. (Capture/Compare).
Эти модули, называемые ещё модулями быстрого ввода-вывода, предназначены для быстрой генерации события на выходе микросхемы, либо быстрой реакции на событие на её входе без участия процессора. Они имеют два основных режима работы: входной и выходной.
Структурная схема модуля в выходном режиме (Compare).
Таймер модуля считает импульсы, поступающие с постоянной частотой, соответствующей сигналу синхронизации (возможно деленной на предделителе). В регистр времени события предварительно записывается по команде определенное число. Компаратор сравнивает каждый момент времени содержимое таймера и содержимое регистра времени события. В момент, когда их содержимое становится равным друг другу, происходит заданное событие на соответствующем выходе микросхемы и выставляется запрос на прерывание. Таким образом, можно запрограммировать определённое выходное событие в заданное время и осуществить его без участия процессора. Этот режим используется в частности для генерации ШИМ.
Структурная схема модуля во входном режиме (Capture)
Таймер модуля считает импульсы системного синхросигнала, проходящие, возможно, через предделитель частоты. В момент, когда на соответствующем входе микросхемы происходит заданное событие, содержимое таймера фиксируется в регистре времени события и вырабатывается запрос на прерывание. Таким образом, запоминается время события, которое затем может быть считано процессором по соответствующей команде. Этот режим используется в частности для измерения частоты и длительности входного сигнала.
Широтно-импульсный модулятор. Встроенный ШИМ предназначен для генерации широтно - модулированного сигнала на выходе микросхемы без участия процессора.
Структурная схема блока ШИМ.
На таймер бока подается системный синхросигнал (возможно через предделитель). В регистр периода процессор записывает число, соответствующее периоду ШИМ. При совпадении содержимого этого регистра и таймера, последний сбрасывается в нулевое состояние и на соответствующем выходе микросхемы формируется положительный перепад. В регистре длительности процессор записывает число, соответствующее длительности импульса. При совпадении его содержимого с содержимым таймера, на выходе микросхемы формируется отрицательный перепад.
При такой организации возможная разрядность ШИМ зависит от частоты сигнала.
В некоторых моделях микроконтроллеров используются специализированные многоканальные модули ШИМ , в частности для управления приводом ( 80C196MC Intel).
5. Модуль последовательного ввода-вывода.
Модуль последовательного ввода-вывода используется для обмена данными между микроконтроллером и удаленным периферийным узлом. Данные передаются в последовательном коде, то есть биты передаются во временной последовательности друг за другом по одному каналу связи. Это даёт возможность использовать один канал связи вместо нескольких в случае параллельного кода. Однако при этом снижается быстродействие канала связи. Различают полудуплексные и дуплексные каналы последовательной связи. В случае полудуплексного канала данные передаются по одному и тому же каналу в обе стороны, но в каждый конкретный момент времени только в одну сторону.
В случае дуплексного канала данные передаются по двум каналам (в одну сторону - по одному, в другую - по другому). При этом появляется возможность передавать информацию в обе стороны одновременно.
По методу синхронизации различают синхронные и асинхронные каналы связи. При синхронном методе передачи каждый передаваемый бит данных синхронизируется импульсом в канале синхронизации.
При этом по каналу данных передаются только собственно данные. Такой метод передачи позволяет обеспечить скорость передачи порядка 1Mbit/сек. Однако, для его организации необходим дополнительный канал синхросигнала.
При асинхронном методе передачи канал синхронизации отсутствует. Это вызывает необходимость передавать по каналу данных дополнительную информацию для синхронизации приемной стороны.
Первым в посылке передается “СТАРТ – бит” нулевого уровня. Приняв его, приемная сторона подстраивает фазу своих синхросигналов в соответствии с моментом прихода СТАРТ – бита. После него один за другим следуют биты данных. В конце цепочки данных может следовать бит четности для проверки правильности приема. Заканчивается посылка СТОП – битом единичного уровня. Частота передачи, то есть время передачи одного бита заранее должны быть согласованы на передающей и приемной сторонах. Такой метод передачи позволяет обеспечить скорость передачи до 100 Kbit/сек.
Микроконтроллер может содержать либо отдельные синхронные и асинхронные порты ввода-вывода, либо универсальный порт, способный работать в обоих режимах.
6. Модуль АЦП.
Модуль АЦП предназначен для преобразования входной аналоговой информации в цифровую и передачи ее в процессор для дальнейшей обработки. Микроконтроллеры имеют, как правило, несколько каналов АЦП. Преобразование информации на том или ином канале инициализируются соответствующей командой.
Структурная схема блока АЦП.
Преобразования начинаются выбором требуемого канала, который осуществляется записью номера канала в специальный служебный регистр. Аналоговый мультиплексор пропускает на выход сигнал выбранного канала. После этого подается сигнал фиксации на устройство выборки – хранения. Оно фиксирует уровень выбранного аналогового сигнала на весь период преобразования. Затем подается сигнал начала преобразования. АЦП представляет собой, как правило, АЦП последовательных приближений. Время преобразования составляет обычно около 10m s. После окончания преобразования АЦП выдает сигнал готовности, по которому его выходная информация записывается в буферный регистр, с которого она затем может быть считана процессором по соответствующей команде. При этом вырабатывается запрос на прерывание. Некоторые микроконтроллеры имеют блоки АЦП, способные работать в автоматическом режиме, опрашивая несколько каналов последовательно без участи процессора(80C166, Intel).
Контроллер периферийных событий.
Этот контроллер предназначен для обеспечения некоторого блока событий в заданное время без участия процессора. Заданные события выполняются на микропрограммном уровне. Такими блоками событий могут быть:
передача блока информации из одного места памяти (или устройства ВВ) в другое;
последовательный опрос нескольких каналов АЦП;
передача информации по последовательному каналу связи.
Использование такого механизма обработки событий позволяет снизить загрузку процессора и распараллелить процесс обработки информации.
Конкретный набор устройств ВВ, их характеристики и возможные режимы работы зависят от модели микроконтроллера.
Лекция № 7
“Семейство MCS-51 фирмы Intel - как представитель 8-разрядных микроконтроллеров. Обобщенная архитектура семейства. Состав семейства. Типовая схема включения микроконтроллера.”
Семейство 8-разрядных микроконтроллеров MCS-51 было выпущено фирмой Intel в начале 80-х годов. Микроконтроллеры MCS-51 являются функционально завершенными однокристальными микроЭВМ Гарвардской архитектуры, содержащими все необходимые узлы для работы в автономном режиме, и предназначены для реализации различных цифровых алгоритмов управления. На сегодняшний день семейство MCS-51 содержит несколько десятков типов микросхем, отличающихся конкретной реализацией отдельных узлов и условиями эксплуатации. Все микросхемы семейства обладают аналогичной архитектурой и имеют целый ряд общих узлов.
Структурная схема микроконтроллера MCS-51.
Общими узлами всех микроконтроллеров семейства являются:
- 8-разрядный центральный процессор (ЦП), ориентированный на управление исполнительными устройствами. ЦП имеет встроенную схему 8-разрядногог аппаратного умножения и деления чисел. Наличие в наборе команд большого числа операций для работы с прямоадресуемыми битами дает возможность говорить о т.н. “булевом процессоре”;
- внутренняя память программ масочного или репрограммируемого типа, имеющая для различных кристаллов объем от 4 до 32 Кбайт; в некоторых версиях она отсутствует;
- не менее чем 128 байтное резидентное ОЗУ данных, которое используется для организации регистровых банков, стека и хранения пользовательских данных;
-не менее 32 двунаправленных интерфейсных линий (портов), индивидуально настраиваемых на ввод или вывод информации;
- два 16-битных многорежимных счетчика/таймера, используемых для подсчета внешних событий, организации временных задержек и тактирования коммуникационного порта;
- двунаправленный дуплексный последовательный коммуникационный порт, предназначенный для организации каналов связи между микроконтроллером и внешними устройствами;
- двухуровневая приоритетная система прерываний, поддерживающая не менее 5 векторов прерываний от внутренних и внешних источников;
- встроенный тактовый генератор.
Центральный процессор микроконтроллеров MCS-51 имеет следующие технические характеристики:
Разрядность АЛУ - 8 бит.
Число выполняемых команд - 111.
Длина команд - 1, 2, или 3 байта.
Число регистров общего назначения (РОН) - 32.
Число прямоадресуемых битовых переменных - 128.
Число прямоадресуемых битов в области
регистров специальных функций - 128.
Максимальный объем памяти программ - 64 Кбайта.
Максимальный объем памяти данных - 64 Кбайта.
Максимальный объем внутренней памяти данных - 256 байт.
Время выполнения команд при тактовой частоте 12 Мгц:
сложение - 1 мкс;
пересылки “регистр- внешняя память данных” - 2 мкс;
умножение/деление - 4 мкс;
Методы адресации операнда - регистровый, косвенный, прямой, непосредственный.
Различные микроконтроллеры семейства содержат широкий набор дополнительных средств для эффективной обработки асинхронных событий, измерения частот и временных интервалов, обработки аналоговых сигналов, управления двигателями, организации мультипроцессорных систем.
В частности, подсемейство 80XC51FX, в которое входит рад микросхем имеет следующие дополнительные возможности:
- 3 16-битных таймера счетчика.
- Программируемый частотный выход.
- Таймер/счетчик с возможностью прямого и обратного счета.
Типичным представителем данного подсемейства является микросхема 83C51FA.
Синхронизация микроконтроллера.
Базовым интервалом времени, на котором основана синхронизация работы всего микроконтроллера является машинный цикл. Машинный цикл имеет фиксированную длительность и содержит 6 состояний S1-S6, каждое из которых по длительности соответствует такту, и, в свою очередь, состоит из двух временных интервалов, определяемых фазами P1 и P2. Длительность фазы равна периоду следования внешнего сигнала синхронизации.
Таким образом каждый машинный цикл состоит из 12 периодов входного тактового сигнала и при частоте последнего 12 Мгц составляем 1 мкс. Дважды за один машинный цикл формируется сигнал ALE.
Входной тактовый сигнал вырабатывается либо встроенным тактовым генератором микроконтроллера при подключении к его выводам X1 и X2 кварцевого резонатора или LC-цепочки, либо внешним источником тактовых сигналов.
В случае LC-цепочки частота опорного синхросигнала определяется выражением
В случае внешнего тактового генератора его выход подключается ко входу X1, а вывод X2 подключается к общей шине.
Внешний интерфейс микроконтроллера.
Внешний интерфейс микроконтроллера предназначен для организации взаимодействия его с внешней памятью программ и данных и устройствами ввода-вывода. Обмен данными осуществляется по внешней мультиплексной магистрали микроконтроллера. Эта магистраль использует выводы порта P0 для выдачи младшего байта адреса и чтения/записи байта данных, а выводы порта P2 - для выдачи старшего байта адреса. Обращение к внешней памяти данных требует двух машинных циклов. Поэтому второй импульс ALE внутри машинного цикла при обращении к внешней памяти данных не генерируется.
Цикл чтения из внешней памяти данных.
По заднему фронту сигнала ALE младший байт адреса, поступающий с выводов порта P0 должен быть зафиксирован во внешнем регистре-защелке. Старший байт адреса держится на выводах порта P2 в течение всего цикла и не требует внешней фиксации. Данные считываются в фазе P1 состояния S3 текущего машинного цикла. К этому моменту они должны быть заведомо установлены на шине данных.
Цикл записи во внешнюю память данных.
При обращении к внутренней памяти данных сигналы RD и WR не вырабатываются. Однако сигнал ALE вырабатывается всегда.
Для обращения ко внешней памяти программ используется механизм отличный от механизма обращения к памяти данных. Для фиксации слов программы используется специальный сигнал PSEN. При этом сигналы ALE и PSEN вырабатываются дважды за машинный цикл. Если второй выбираемый байт в команде не используется то он игнорируется. При переходе к выполнению следующей команды он будет считан вторично.
Цикл чтения внешней памяти программ.
Так же, как и в случае памяти данных, младший байт адреса должен быть зафиксирован во внешнем регистре по заднему фронту сигнала ALE. Байты программы считываются в фазе P1 состояний S4 и S1 текущего машинного цикла. При обращении к внутренней памяти программ сигнал PSEN не генерируется.
Работа с внешней памятью программ разрешена лишь при низком уровне не входе EA. При этом микроконтроллер считает, что вся память программ расположена во внешней памяти. При высоком уровне сигнала на этом входе микроконтроллер реализует цикл обращения к внешней памяти программ лишь в случае, если требуемый адрес выходит за пределы внутреннего сегмента памяти программ. Если в микросхеме прошит бит секретности, то уровень сигнала на входе EA фиксируется при сбросе микроконтроллера во внутренней защелке и дальнейшее его изменение не влияет на работу системы.
Начальная установка микроконтроллера.
Начальная установка (аппаратный сброс) производится с целью запуска или перезапуска микроконтроллера после подачи на него напряжения питания. Сброс осуществляется подачей на вход RESET высокого уровня и удержания его в течение не менее двух машинных циклов. Этот сигнал может подаваться асинхронно по отношению к внутреннему тактированию. Вход RESET постоянно опрашивается микроконтроллером в момент S5P2 каждого машинного цикла. После сигнала сброса порты ввода-вывода находятся в неизменном состоянии в течение 19-ти периодов тактирования, после чего в промежутке между 19-м и 31-м тактом переводятся в начальное “единичное” состояние. При этом сигналы ALE и PSEN находятся в неактивном высоком состоянии. По сигналу сброса микроконтроллер устанавливает все служебные регистры в начальное состояние. На содержимое внутренней памяти данных сигнал RESET не влияет. При включении питания она устанавливается в произвольное состояние. Длительность сигнала RESET должна быть не меньше времени необходимого для запуска внутреннего генератора плюс 2 машинных цикла. В свою очередь время установки генератора зависит от частоты синхронизации и добротность кварцевого резонатора. При частоте 10 Мгц оно обычно составляет около 1 мкс.
Для автоматического рестарта микросхемы после подачи напряжения питания, к выводу RESET необходимо подключить RC-цепочку, обеспечивающую требуемую задержку, позволяющую генерировать одиночный импульс сброса.
После снятия сигнала RESET проходит от 1 до 2 тактовых периодов до их активизации. При этом микроконтроллер начинает выполнять программу с адреса 0000h внутренней либо внешней памяти программ (в зависимости от уровня сигнала EA).
Удержание выводов ALE и PSEN в активном (нулевом) состоянии при активном сигнале RESET приводит к переводу всех выводов микросхемы в высокоимпедансное состояние (режим “ONCE”). Этот режим используется для отладки системы.
Лекция № 8
“ Организация системы памяти микроконтроллера 8xC51Fx.”
Все микроконтроллеры семейства MCS-51 имеют Гарвардскую архитектуру, т.е. раздельное адресное пространство программ и данных. Такое разделение позволяет осуществлять доступ к памяти данных по 8-битным адресам, что способствует более быстрой обработке данных в ЦП. Тем не менее, возможно использование и 16-битных адресов данных.
Программная память доступна исключительно по чтению. Общий объем ее адресного пространства составляет 64 Кбайта. В различных версиях кристаллов может присутствовать до 32 Кбайт внутренней памяти программ. При обращении к этим областям памяти используются циклы обмена по внутренней магистрали микроконтроллера. При необходимости можно расширить память программ за счет внешнего ПЗУ.
Карта памяти программ.
После сигнала RESET микроконтроллер начинает выполнение программы с адреса 0000h либо внешней либо внутренней памяти программ, в зависимости от состояния сигнала EA.
Память данных доступна как по чтению, так и по записи. Общий объем ее адресного пространства составляет 64 Кбайта. Адрес может иметь размер 1 или 2 байта. Однобайтная адресация часто используется при страничной организации ОЗУ.
Карта памяти данных.
Внутренняя память данных может быть разделена на три условных блока - нижний, верхний и пространство Регистров Специальных Функций (SFR).
Карта внутренней памяти данных.
Внутренняя память данных всегда адресуется байтом, что подразумевает 256 байт адресного пространства. Однако, фактически можно обращаться к 384-м байтам. Прямая адресация ячейки с адресом свыше 7Fh осуществляет доступ к области регистров специальных функций, а косвенная - к верхней области внутренней памяти данных. Т.о. эти две области занимают одно и то же адресное пространство, хотя и разделены физически. Все байты в нижней 128-байтной половине внутренней памяти данных могут адресоваться как прямо, так и косвенно.
Первые 32 байта в нижней области внутреннего ОЗУ сгруппированы в 4 банка по 8 регистров. Инструкции программы могут оперировать с ними как с регистрами общего назначения R0-R7. Два бита регистра PSW определяют, какой из банков используется в текущий момент. Это позволяет более эффективно использовать память программ, поскольку регистровые инструкции короче, чем прямая адресация. Переключение регистровых банков эффективно заменяет операции сохранения регистров в стеке на время обработки прерывания.
Следующие за регистровыми банками 16 байт образуют блок побитно адресуемого пространства. Набор инструкций MCS-51 содержит широкий набор операций над битами, а 128 бит (16 байт по 8) в этом блоке могут быть прямо адресованы. Битовые адреса имеют значения от 00h до 7Fh.
Карта нижней области внутреннего ОЗУ.
7Fh
...
30h
Побайтно-адресуемая область внутреннего ОЗУ
Побитно-адресуемая область внутреннего ОЗУ
2Fh
7Fh
7Eh
7Dh
7Ch
7Bh
7Ah
79h
78h
2Eh
77h
76h
75h
74h
73h
72h
71h
70h
2Dh
6Fh
6Eh
6Dh
6Ch
6Bh
6Ah
69h
68h
2Ch
67h
66h
65h
64h
63h
62h
61h
60h
2Bh
5Fh
5Eh
5Dh
5Ch
5Bh
5Ah
59h
58h
2Ah
57h
56h
55h
54h
53h
52h
51h
50h
29h
4Fh
4Eh
4Dh
4Ch
4Bh
4Ah
49h
48h
28h
47h
46h
45h
44h
43h
42h
41h
40h
27h
3Fh
3Eh
3Dh
3Ch
3Bh
3Ah
39h
38h
26h
37h
36h
35h
34h
33h
32h
31h
30h
25h
2Fh
2Eh
2Dh
2Ch
2Bh
2Ah
29h
28h
24h
27h
26h
25h
24h
23h
22h
21h
20h
23h
1Fh
1Eh
1Dh
1Ch
1Bh
1Ah
19h
18h
22h
17h
16h
15h
14h
13h
12h
11h
10h
21h
0Fh
0Eh
0Dh
0Ch
0Bh
0Ah
09h
08h
20h
07h
06h
05h
04h
03h
02h
01h
00h
1Fh
...
18h
Регистровый банк 3
17h
...
10h
Регистровый банк 2
0Fh
...
08h
Регистровый банк 1
07h
...
00h
Регистровый банк 0
Для 16 адресов в пространстве SFR имеется возможность как битовой, так и байтовой адресации. Побитово-адресуемыми регистрами являются те, чей шестнадцатеричный адрес заканчивается на “0” или “8”. Битовые адреса в этой области располагаются со значения 80h по FFh.
Наиболее часто используемыми регистрами специальных функций являются:
- Аккумулятор (байтовый адрес 0E0h). Используется во всех арифметических и логических операциях в качестве операнда;
- Регистр B (байтовый адрес - 0F0h). Используется при операциях умножения и деления, а также как сверхоперативный регистр;
- Слово состояния программы PSW (байтовый адрес - 0D0h). Содержит информацию о состоянии программы;
- Указатель стека (байтовый адрес -081h). Используется для указания на вершину стека в операциях записи в стек и чтения из него. По аппаратному сбросу устанавливается в значение 07h (область стека в этом случае начинается с адреса 08h) и инкрементируется при каждой записи в стек. Запись в SP производится для предопределения положения стека во внутренней памяти данных микроконтроллера;
- Указатель данных DPTR (байтовые адреса 082h, 083h). Состоит из двух байт: старшего - DPH и младшего - DPL. Используется как 16-ти или 8-битовый указатель адреса при обращении к внешней памяти или выполнении команды перехода по косвенному адресу.
Слово состояния программы PSW.
Слово состояния программы PSW содержит ряд статусных битов, отражающих текущее состояние процессора.
Формат PSW.
PSW.7
PSW.6
PSW.5
PSW.4
PSW.3
PSW.2
PSW.1
PSW.0
CY
AC
F0
RS1
RS0
OV
-
P
Назначение отдельных битов PSW.
Бит
Назначение
CY
Флаг переноса.
AC
Флаг дополнительного переноса.
F0
Флаг пользователя 0.
RS1,
RS0
Биты выбора используемого регистрового банка:
00 - банк 0;
01 - банк 1;
10 - банк 2;
11 - банк 3.
OV
Флаг переполнения.
-
Зарезервирован. Доступен по чтению и записи.
P
Флаг четности
Бит переноса кроме арифметических, используется также и в булевых операциях. Биты RS0 и RS1 используются для выбора одного из 4-х регистровых банков. Бит четности отражает число установленных бит в аккумуляторе: P=1, если аккумулятор содержит нечетное число единиц, и P=0, если четное. Т.о., количество ненулевых битов в аккумуляторе плюс P является всегда четным числом. Два бита в PSW ни с чем не связаны и могут использоваться как флаги состояний.
Лекция № 9
“Система команд микроконтроллеров семейства MCS-51.”
Система команд MCS-51 поддерживает единый набор инструкций, который предназначен для выполнения 8-битовых алгоритмов управления исполнительными устройствами. Существует возможность использования быстрых методов адресации к внутреннему ОЗУ, осуществления битовых опреаций над небольшими структурами данных. Имеется развернутая система адресации однобитовых переменных, как самостоятельного типа данных, позволяющая использовать отдельные биты в логических и управляющих командах булевой алгебры.
Режимы адресации.
Набор команд MCS-51 поддерживает следующие режимы адресации:
Прямая адресация. Операнд определяется 8-битовым адресом в инструкции. Прямая адресация используется только для младшей половины внутренней памяти данных и регистров SFR.
Косвенная адресация. Инструкция адресует регистр, содержащий адрес операнда. Данный вид адресации используется для внешнего и внутреннего ОЗУ. Для указания 8-битовых адресов могут использоваться регистры R0 и R1 выбранного регистрового банка или указатель стека SP. Для 16-битовой адресации используется только регистр указателя данных DPTR.
Регистровые инструкции. Регистры R0-R7 текущего регистрового банка могут быть адресованы через конкретные инструкции, содержащие 3-хбитовое поле, указывающее номер регистра в самой инструкции. В этом случае сооответствующее поле адреса в команде отсутствует.
Операции с использованием специальных регистров. Некоторые инструкции используют индивидуальные регистры. Например операции с аккумулятором, DPTR, и т.д. В данном случае адрес операнда вообще не указывается в команде. Он предопределяется кодом операции.
Непосредственные константы. Константа может находиться прямо в команде за кодом операции.
Индексная адресация. Индексная адресация может использоваться только для доступа к программной памяти и только в режиме чтения. В этом режиме осуществляется просмотр таблиц в памяти программ. 16-битовый регистр (DPTR или программный счетчик) указывает базовый адрес требуемой таблицы, а аккумулятор указывает на точку входа в нее.