Remkomplekty.ru

IT Новости из мира ПК
1 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Архитектура mcs 51

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


Рисунок 1. Структурная схема контроллера I8751

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

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

Блок управления и синхронизации

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

  • — устройство формирования временных интервалов,
  • — логика ввода-вывода,
  • — регистр команд,
  • — регистр управления потреблением электроэнергии,
  • — дешифратор команд, логика управления ЭВМ.

Устройство формирования временных интервалов предназначено для формирования и выдачи внутренних синхросигналов фаз, тактов и циклов. Количество машинных циклов определяет продолжительность выполнения команд. Практически все команды ОЭВМ выполняются за один или два машинных цикла, кроме команд умножения и деления, продолжительность выполнения которых составляет четыре машинных цикла. Обозначим частоту задающего генератора через Fг. Тогда длительность машинного цикла равна 12/Fг или составляет 12 периодов сигнала задающего генератора. Логика ввода — вывода предназначена для приема и выдачи сигналов, обеспечивающих обмен информации с внешними устройствами через порты ввода вывода Р0-Р3.

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

Регистр управления потреблением (PCON) позволяет останавливать работу микроконтроллера для уменьшения потребления электроэнергии и уменьшения уровня помех от микроконтроллера. Еще большего уменьшения потребления электроэнергии и уменьшения помех можно добиться, остановив задающий генератор микроконтроллера. Этого можно достичь при помощи переключения бит регистра управления потреблением PCON. Для варианта изготовления по технологии n-МОП (серия 1816 или иностранных микросхем, в названии которых в середине отсутствует буква ‘c’) регистр управления потреблением PCON содержит только один бит, управляющий скоростью передачи последовательного порта SMOD, а биты управления потреблением электроэнергией отсутствуют.

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

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

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

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

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

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

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

Блок последовательного интерфейса и прерываний (ПИП) предназначен для организации ввода-вывода последовательных потоков информации и организации системы прерывания программ. В состав блока входят:

  1. — буфер ПИП,
  2. — логика управления,
  3. — регистр управления,
  4. — буфер передатчика,
  5. — буфер приемника,
  6. — приемопередатчик последовательного порта,
  7. — регистр приоритетов прерываний,
  8. — регистр разрешения прерываний,
  9. — логика обработки флагов прерываний и схема выработки вектора.

Счетчик команд (Program Counter) предназначен для формирования текущего 16-разрядного адреса внутренней памяти программ и 8/16-разрядного адреса внешней памяти программ. В состав счетчика команд входят 16-разрядные буфер РС, регистр РС и схема инкремента (увеличения содержимого на 1).

Память данных (RAM) предназначена для временного хранения информации, используемой в процессе выполнения программы.

Порты P0, P1, P2, P3 являются квазидвунаправленными портами ввода — вывода и предназначены для обеспечения обмена информацией ОЭВМ с внешними устройствами, образуя 32 линии ввода- вывода.

Устройство таймеров В базовых моделях семейства имеются два программируемых 16-битных таймера/счетчика (T/C0 и T/C1), которые могут быть использованы как в качестве таймеров, так и в качестве счетчиков внешних событий

Регистр состояния программы (PSW) предназначен для хранения информации о состоянии АЛУ при выполнении программы.

Регистр указателя данных (DPTR) предназначен для хранения 16-разрядного адреса внешней памяти данных или памяти программ.

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

Архитектура микроконтроллеров семейства MCS-51 (стр. 1 )

АРХИТЕКТУРА МИКРОКОНТРОЛЛЕРОВ СЕМЕЙСТВА MCS-51

Конспект лекций по курсам

«Микропроцессоры в системах контроля», «Микропроцессорная техника»

«Микропроцессорные средства и системы»

для студентов всех форм обучения специальностей

072000 – Стандартизация и сертификация

210200 – Автоматизация технологических процессов

230104 – Системы автоматизированного проектирования

1. СТРУКТУРА МИКРОКОНТРОЛЛЕРА INTEL 8051. 3

1.1. Организация памяти. 5

1.2. Арифметико-логическое устройство. 6

1.3. Резидентная память программ и данных. 7

1.4. Аккумулятор и регистры общего назначения. 8

1.5. Регистр слова состояния программы и его флаги. 9

1.6. Регистры-указатели. 10

1.7. Регистры специальных функций. 11

1.8. Устройство управления и синхронизации. 11

1.9. Параллельные порты ввода/вывода информации. 12

1.10. Таймеры/счетчики. 13

1.11. Последовательный порт. 18

1.11.1. Регистр SBUF.. 18

1.11.2. Режимы работы последовательного порта. 18

1.11.3. Регистр SCON.. 19

1.11.4. Скорость приёма/передачи. 21

1.12. Система прерываний. 22

2. СИСТЕМА КОМАНД МИКРОКОНТРОЛЛЕРА INTEL 8051. 26

2.1. Общие сведения. 26

2.1.1. Типы команд. 27

2.1.2. Типы операндов. 28

2.1.3. Способы адресации данных. 30

2.1.4. Флаги результата. 31

2.1.5. Символическая адресация. 32

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

2.2.1. Структура информационных связей. 33

2.2.2. Обращение к аккумулятору. 33

2.2.3. Обращение к внешней памяти данных. 34

2.2.4. Обращение к памяти программ.. 34

2.2.5. Обращение к стеку. 35

2.3. Арифметические операции. 35

2.4. Логические операции. 39

2.5. Команды передачи управления. 43

2.5.1. Длинный переход. 43

2.5.2. Абсолютный переход. 43

2.5.3. Относительный переход. 44

2.5.4. Косвенный переход. 44

2.5.5. Условные переходы.. 44

2.5.6. Подпрограммы.. 47

2.6. Операции с битами. 48

Контрольные вопросы. 49

Приложение СИСТЕМА КОМАНД INTEL 8051. 51

ВВЕДЕНИЕ

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

Широкое распространение получили 8-разрядных однокристальные микроконтроллеры семейства MCS-51. Это семейство образовалось на основе микроконтроллера Intel 8051, получившего большую популярность у разработчиков микропроцессорных систем контроля благодаря удачно спроектированной архитектуры. Архитектура микроконтроллера это совокупность внутренних и внешних программно доступных аппаратных ресурсов и системы команд.

В последствии фирма Intel выпустила около 50 моделей на базе операционного ядра микроконтроллера Intel 8051. Одновременно многие другие фирмы, такие как Atmel, Philips начали производство своих микроконтроллеров разработанных в стандарте MCS-51. Существует также и отечественный аналог микроконтроллера Intel 8051 — микросхема К1816ВЕ51.

2. СТРУКТУРА МИКРОКОНТРОЛЛЕРА INTEL 8051

Микроконтроллер Intel 8051 выполнен на основе высокоуровневой n-МОП технологии. Его основные характеристики следующие:

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

· встроенный тактовый генератор (максимальная частота 12 МГц);

· адресное пространство памяти программ — 64 Кбайт;

· адресное пространство памяти данных — 64 Кбайт;

· внутренняя память программ — 4 Кбайт;

· внутренняя память данных — 128 байт;

· дополнительные возможности по выполнению операций булевой алгебры (побитовые операции);

· 32 двунаправленные и индивидуально адресуемые линии ввода/вывода;

· 2 шестнадцатиразрядных многофункциональных таймера/счетчика;

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

· векторная система прерываний с двумя уровнями приоритета и пятью источниками событий.

Рисунок 1 — Структурная схема микроконтроллера Intel 8051

Основу структурной схемы (рис. 1) образует внутренняя двунаправленная 8-разрядная шина, которая связывает между собой основные узлы и устройства микроконтроллера: резидентную память программ (RPM), резидентную память данных (RDM), арифметико-логическое устройство (ALU), блок регистров специальных функций, устройство управления (CU), параллельные порты ввода/вывода (P0-P3), а также программируемые таймеры и последовательный порт.

2.1. Организация памяти

Данный микроконтроллер имеет встроенную (резидентную) и внешнюю память программ и данных. Резидентная память программ (RPM) имеет объем 4 Кбайт, резидентная память данных (RDM) – 128 Байт.

В зависимости от модификации микроконтроллера RPM выполняется в виде масочного ПЗУ, однократно программируемого либо репрограммируемого ПЗУ.

При необходимости пользователь может расширять память программ установкой внешнего ПЗУ. Доступ к внутреннему или внешнему ПЗУ определяется значением сигнала на выводе ЕА (External Access):

Читать еще:  Процессорная архитектура x86 64

EA=VCC (напряжение питания) — доступ к внутреннему ПЗУ;

EA=VSS (потенциал земли) — доступ к внешнему ПЗУ.

Внешняя память программ и данных может составлять по 64 Кбайт и адресоваться с помощью портов P0 и P2. На рис.2 представлена карта памяти Intel 8051.

Рисунок 2 — Организация памяти Intel 8051

Строб чтения внешнего ПЗУ — (Program Store Enable) генерируется при обращении к внешней памяти программ и является неактивным во время обращения к ПЗУ, расположенному на кристалле.

Область нижних адресов памяти программ (рис. 3) используется системой прерываний. Архитектура микросхемы INTEL 8051 обеспечивает поддержку пяти источников прерываний. Адреса, по которым передается управление по прерыванию, называются векторами прерывания.

Рисунок 3 — Карта нижней области программной памяти

2.2. Арифметико-логическое устройство

8-битное арифметико-логическое устройство (ALU) может выполнять арифметические операции сложения, вычитания, умножения и деления; логические операции И, ИЛИ, исключающее ИЛИ, а также операции циклического сдвига, сброса, инвертирования и т. п. К входам подключены программно-недоступные регистры T1 и T2, предназначенные для временного хранения операндов, схема десятичной коррекции (DCU) и схема формирования признаков результата операции (PSW).

Простейшая операция сложения используется в ALU для инкрементирования содержимого регистров, продвижения регистра-указателя данных (RAR) и автоматического вычисления следующего адреса резидентной памяти программ. Простейшая операция вычитания используется в ALU для декрементирования регистров и сравнения переменных.

Простейшие операции автоматически образуют “тандемы” для выполнения таких операций, как, например, инкрементирование 16-битных регистровых пар. В ALU реализуется механизм каскадного выполнения простейших операций для реализации сложных команд. Так, например, при выполнении одной из команд условной передачи управления по результату сравнения в ALU трижды инкрементируется счётчик команд (PC), дважды производится чтение из RDM, выполняется арифметическое сравнение двух переменных, формируется 16-битный адрес перехода и принимается решение о том, делать или не делать переход по программе. Все перечисленные операции выполняются всего лишь за 2 мкс.

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

Таким образом, ALU может оперировать четырьмя типами информационных объектов: булевыми (1 бит), цифровыми (4 бита), байтными (8 бит) и адресными (16 бит). В ALU выполняется 51 различная операция пересылки или преобразования этих данных. Так как используется 11 режимов адресации (7 для данных и 4 для адресов), то путем комбинирования операции и режима адресации базовое число команд 111 расширяется до 255 из 256 возможных при однобайтном коде операции.

2.3. Резидентная память программ и данных

Резидентные (размещённые на кристалле) память программ (RPM) и память данных (RDM) физически и логически разделены, имеют различные механизмы адресации, работают под управлением различных сигналов и выполняют разные функции.

Память программ RPM имеет емкость 4 Кбайта и предназначена для хранения команд, констант, управляющих слов инициализации, таблиц перекодировки входных и выходных переменных и т. п. Память имеет 16-битную шину адреса, через которую обеспечивается доступ из программного счётчика PC или из регистра-указателя данных (DPTR). DPTR выполняет функции базового регистра при косвенных переходах по программе или используется в операциях с таблицами.

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

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

ПРОЦЕССОРНОЕ ЯДРО МК СЕМЕЙСТВА MCS-51

Центральный процессор МК семейства MCS-51 (далее CPU MCS-51) выполняет дей­ствия над 8-разрядными операндами. Программная модель CPU MCS-51 (рис. 4.35) со­держит шесть регистров. Все регистры, кроме счетчика команд PC, являются частью объединенного адресного пространства ОЗУ данных. Следовательно, для обращения к ним могут быть использованы как символьные имена этих регистров — АСС, В, PSW, SP, DPH, DPL, так и их абсолютные адреса — 0E0h, 0F0h, 0D0h, 81 h, 82h, 83h соответственно.

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

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

Регистр-указатель данных DPTR — 16-разрядный регистр (DPH — старший байт, DPL — младший байт). Основное назначение регистра DPTR — участие в формирова­нии адреса при чтении данных (не команд) из области памяти программ, а также при обмене с внешним ОЗУ данных. Система команд предусматривает возможность обра­щения к отдельным байтам (DPH или DPL) регистра DPTR, что позволяет использовать эти регистры для хранения промежуточных результатов вычислений или как источник одного из операндов, указывая во втором байте команды абсолютный адрес DPH или DPL. Сброс устанавливает все разряды DPTR в 0.

Программный счетчик PC- 16-разрядный регистр, содержит адрес текущей коман­ды либо адрес операнда, используемого в текущей команде. После сброса МК программ­ный счетчик автоматически устанавливается в «0». Поэтому в МК с процессорным ядром MCS-51 любая программа пользователя должна начинаться с адреса 0000h.

Указатель стека SP- 8-разрядный регистр, содержит адрес верхушки стека. Архи­тектура процессорного ядра MCS-51 предполагает размещение области стековой памя­ти только в области внутреннего ОЗУ данных. Поэтому глубина стека ограничена объе­мом резидентного ОЗУ. Вызов подпрограммы использует 2 ячейки стека, прерывание-4 ячейки. При сбросе МК указатель стека устанавливается в состояние 07h, назначая область стека в первый банк регистров (регистр R7 нулевого банка имеет адрес 07h, при загрузке в стек содержимое указателя SP увеличивается на 1).

Регистр признаков PSW- 8-разрядный регистр, содержит 7 флагов условий: пере­носа С, дополнительного переноса АС, переполнения OV, четности Р, два флага RS1 :RSO для выбора текущего банка регистров, свободно программируемый пользователем флаг FO. Обратите внимание: в регистре признаков отсутствуют флаги нулевого результата Z и отрицательного результата N. Однако, если флаг N в архитектуре MCS-51 действительно отсутствует, то признак нулевого состояния аккумулятора (и только аккумулятора!) фор­мируется, но не запоминается и в регистре признаков не отображается. Поэтому при составлении прикладной программы пользователя команды условного перехода по при­знаку Z (JZ и JNZ) должны быть выполнены сразу после команды действия над операн­дами, этот признак формирующей. Краткое описание логики установки «незнакомых» флагов:

Р-флаг четности. Устанавливается в «1», если число единиц в аккумуляторе не­четное. При четном числе единиц в АСС сбрасывается. Все попытки принудительно ус­тановить флаг Р в состояние, которое не соответствует текущему состоянию аккумулято­ра АСС, будут безуспешными.

RS1:RSO-биты выбора банка регистров. Во избежание нежелательного изменения других битов регистра признаков рекомендуется производить модификацию номера банка с использованием команд битового процессора. Распределение регистров общего на­значения приведено в табл. 4.5.

FO — флаг пользователя. Назначается пользователем по желанию. Изменение состоя­ния FO и ветвление по значению флага выполняются командами битового процессора.

Процессорное ядро MCS-51 может оперировать с тремя основными типами операн­дов: булевыми (1 бит), байтовыми (8 бит) и двухбайтовыми (16 бит). В операциях обмена тетрадами используется дополнительное представление информации полубайтами (4 бита). В МК с ядром MCS-51 используются следующие способы адресации:

• неявная (INH — Inherent);

• регистровая (REG — Register);

• непосредственная (IMM — Immediate);

• прямая (DIR — Direct);

• косвенная (IDIR — Indirect);

• относительная (REL — Relative).

К инструкциям с неявной адресацией относятся команды, которые не требуют для своего выполнения каких-либо операндов: RTI, NOP. Неявную адресацию имеют инструк­ции, которые содержат адрес операнда в коде команды, например, команда установки бита переноса SETB С или команды инкремента аккумулятора INC А и регистров INC Rn. Все команды с неявной адресацией имеют длину в 1 байт и состоят только из кода опера­ции. Обратите внимание: мнемоника команды содержит имя регистра в поле операнда (А, Rn). Но при кодировании команды это имя будет помещено в байт кода операции.

Код операции команды с непосредственной адресацией размещается в первом бай­те. Сразу же за кодом операции следует 1 байт данных. Эти данные не могут быть изме­нены в ходе выполнения программы, так как они расположены непосредственно в памя­ти программ, т. е. в ПЗУ. Большинство команд с непосредственной адресацией имеют длину в 2 байта. Условное обозначение операнда в мнемонике команды — #d8:

Примеры.

ADD A,#d8 ; Запись команды сложения ADD с непосредственной адресацией в общем виде.

ADD А,#3 ; Сложить содержимое аккумулятора АСС с числом 3,

; результат записать в АСС.

ORLA,#Oah ;Выполнить операцию поразрядного ИЛИ над содержимым АСС и

; шестнадцатеричным числом OAh. Результат записать в АСС.

Читать еще:  Error c2143 синтаксическая ошибка отсутствие перед

Всего одна команда с непосредственной адресацией MOV DPTR,#d16 имеет трех­байтовый формат, поскольку выполняет загрузку данных в двухбайтовый регистр DPTR.

MOV DPTR,#3400h ; Загрузить в регистр-указатель число 3400h

В командах с регистровой адресацией один из операндов находится в одном из реги­стров общего назначения Rn = RO — R7 банка, номер которого определяется разрядами RSV.RSO регистра признаков PSW. Если команда производит действие над одним опе­рандом, то формат команды однобайтовый. Номер регистра Rn определяется тремя младшими битами байта кода операции.

Примеры.

MOV A,Rn ; Запись команды загрузки аккумулятора АСС из регистра Rn в общем виде.

MOV A.R5 ; Загрузить аккумулятор АСС операндом из регистра R5.

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

Примеры.

MOV ad.Rn ; Запись команды загрузки ячейки памяти с адресом ad из регистра Rn в общем

MOV30h,R5 ; Загрузить ячейку памяти с адресом З0h операндом из регистра R5.
MOV R7,#06 ; Загрузить в регистр R7 число 6.

Команды с прямой адресацией имеют длину 2 байта. Первый байт предназначен для кода команды, второй байт содержит адрес ячейки резидентной памяти данных, где хранится операнд. Так как МК с ядром MCS-51 имеют адресное пространство внутрен­ней памяти данных 00h — 0FFh, то в использовании двухбайтового формата адреса нет необходимости. Условное обозначение адреса в мнемонике команды — ad.

Примеры.

ADD A,ad ; Запись команды ADD с прямой адресацией в общем виде.

ADD A,31 h ; Сложить содержимое аккумулятора АСС с содержимым ячейки

; резидентной памяти с адресом 31п. Результат поместить в АСС.

MOV add,ads ; Переслать содержимое ячейки памяти с адресом ads в ячейку

; памяти с адресом add. Например: MOV 10h,21 h.

Команды с косвенной адресацией имеют длину 1 байт. В этом байте расположен код операции. Адрес операнда находится в регистре Ro или R1 текущего банка, если обмен или операция производится с внутренним ОЗУ данных. Обратите внимание, в качестве источника адреса операнда могут использоваться только регистры Ro и R1 (общее обо­значение Ri), но не могут использоваться регистры R2 — R7.

Примеры.

ADD A, @RO ;Сложить содержимое аккумулятора АСС с содержимым ячейки памяти,

; адрес которой находится в регистре RO.

DEC @R1 ;Уменьшить на 1 содержимое ячейки памяти, адрес которой находится

Косвенная адресация используется также для обращения к внешней памяти данных. Однако адрес ячейки внешней памяти должен быть двухбайтовым (см. рис. 4.3). Поэтому при использовании в качестве регистра-указателя RO или R1 старший байт адреса должен быть предварительно загружен в порт Р2. При обращении к внешней памяти данных в качестве регистра-указателя может быть также использован двухбайтовый регистр DPTR. Тогда предварительное формирование старшего байта адреса в Р2 не требуется. .

Примеры.

MQVX A, @RO ; Переслать в АСС содержимое ячейки внешней памяти данных,

; старший байт адреса которой находится в Р2, младший байт-

; врегистре RO текущего регистрового банка.

MOVXA,@DPTR ; Переслать в АСС содержимое ячейки внешней памяти данных,

; старший и младший байты адреса которой находятся в двух-

; байтовом регистре DPTR.

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

Примеры.

MOVC A, ©A+DPTR ; Переслать в АСС содержимое ячейки памяти программ, адрес

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

;операндом из аккумулятора. Эту же операцию можно ,

;интерпретировать, как чтение элемента с номером i, который
;задан в аккумуляторе, из таблицы с начальным адресом, который
; хранится в DPTR.

MOVCA,@A+PC ; Переслать в АСС содержимое ячейки из области памяти

; программ, адрес которой равен текущему значению счетчика

; команд PC плюс значение операнда в аккумуляторе.

Относительная адресация используется только в командах условных переходов, ко­торые используются для организации ветвления программ. Команды условных перехо­дов имеют двухбайтовый формат или трехбайтовый формат. В командах типа «перейти по флагу» первый байт содержит код операции, а второй — смещение адреса следующей команды относительно адреса текущей команды в целочисленном формате со знаком. Диапазон возможных кодов смещения: от -128 до +127. В командах типа «выполнить действие и перейти по его результату» первый байт содержит код операции, второй байт -операнд для выполнения действия, третий байт — смещение адреса.

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

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

Примеры.

JZ rel ; Перейти по метке rel, если значение аккумулятора АСС равно 0.

DJNZ ad,rel ; Вычесть 1 из содержимого ячейки памяти с адресом ad и перейти

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

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

Структурная схема микроконтроллера представлена на рис. 20.1 и состоит из следующих основных функциональных узлов:

q блока управления;

q арифметико-логического блока;

q блока таймеров/счетчиков;

q блока последовательного интерфейса и прерываний;

q программного счетчика, памяти данных и памяти программ.

Двусторонний обмен данными между элементами внутренней структуры микроконтроллера осуществляется с помощью внутренней 8-разрядной шины данных.

Рис. 20.1. Структурная схема микроконтроллера К1830ВЕ751

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

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

q устройство формирования временных интервалов;

q логика ввода-вывода;

q регистр команд;

q регистр управления потреблением электроэнергии;

q дешифратор команд, логика управления микроконтроллером.

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

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

Регистр управления потреблением(PCON) позволяет останавливать микроконтроллер для уменьшения потребления электроэнергии и уменьшения уровня помех. Еще большего уменьшения потребления электроэнергии и уменьшения помех можно добиться, остановив задающий генератор микроконтроллера при помощи переключения битов регистра управления потреблением PCON. В вариантах микросхемы, изготовленных по технологии n-МОП (серия 1816 или иностранных микросхем, в названии которых в середине отсутствует буква ‘c’), регистр управления потреблением PCON содержит только один бит, управляющий скоростью передачи последовательного порта SMOD, а биты управления потреблением электроэнергии отсутствуют.

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

q регистров временного хранения TMP1 и TMP2;

q арифметико-логического устройства;

q дополнительного регистра (регистра В);

q аккумулятора (ACC);

q регистра состояния программ (PSW).

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

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

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

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

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

Читать еще:  Архитектура olap систем

Блок последовательного интерфейса и прерыванийпредназначен для организации последовательного ввода-вывода информации и организации прерываний выполнения программы. В состав этого блока входят:

q логика управления;

q регистр управления;

q буфер передатчика;

q буфер приемника;

q приемопередатчик последовательного порта;

q регистр приоритетов прерываний;

q регистр разрешения прерываний;

q логика обработки флагов прерываний.

Счетчик командпредназначен для формирования текущего 16-разрядного адреса внутренней или внешней памяти программ. В состав счетчика команд входят 16-разрядные буфер счетчика команд, регистр счетчика команд и схема инкремента (увеличения содержимого на 1).

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

Порты P0, P1, P2, P3являются квазидвунаправленными портами ввода-вывода и предназначены для обеспечения обмена информацией между микроконтроллером и внешними устройствами, образуя 32 линии ввода- вывода.

Регистр состояния программы(PSW) предназначен для хранения информации о состоянии АЛУ при выполнении программы.

Память программпредназначена для хранения программного кода и представляет собой постоянное запоминающее устройство (ПЗУ). В разных микросхемах применяются масочные, стираемые ультрафиолетовым излучением или FLASH ПЗУ.

Регистр указателя данных(DPTR)предназначен для формирования 16-разрядного адреса внешней памяти данных или памяти программ при считывании таблиц констант.

Указатель стека(SP) представляет собой 8-разрядный регистр, предназначенный для организации особой области памяти данных (стека), в которой хранятся адреса возврата из подпрограмм, переменные и содержимое внутренних регистров микроконтроллера (в том числе регистры PSW и аккумулятор).

Система команд микроконтроллеров MCS‑51

Ни один из видов микропроцессоров не может рассматриваться отдельно от системы команд. Не является исключением и семейство микроконтроллеров MCS‑51. Система команд микроконтроллеров этого семейства предоставляет большие возможности обработки данных, обеспечивает реализацию логических, арифметических операций, а также управление устройствами в режиме реального времени.

В этой системе командреализована побитная, потетрадная (4 бита), побайтовая (8 бит) и 16-разрядная обработка данных. Микросхемы семейства MCS-51 — это 8-разрядные микропроцессоры, а это означает, что ПЗУ, ОЗУ, регистры специального назначения, АЛУ и внешние шины имеют байтовую организацию. Двухбайтовые данные используются только регистром-указателем(DTPR) и счетчиком команд (PC).

В машинном коде команда занимает один, два или три байта в зависимости от типа адресации.

Команды выполняются за один, два или четыре (умножение и деление) машинных цикла.

Запись команд в машинных кодах для человека неудобна. Кроме того, машинные команды, отличающиеся младшими битами или вторым байтом выполняют одинаковые действия над разными ячейками памяти. Поэтому для записи команд микропроцессоров была придумана система мнемонических обозначений. В записи команды микропроцессора сначала ставится мнемоническое обозначение кода операции, затем указывается ячейка памяти – приемник результата выполнения операции и, наконец, источник данных для выполнения операции. Например, в команде

символы MOV обозначают операцию копирования, второй операнд 35 определяет, что данные необходимо взять из ячейки памяти с шетнадцатеричным адресом 35, а первый операнд A определяет, что результат необходимо поместить в регистр-аккумулятор. При этом старое значение регистра-аккумулятора будет стерто. Слева приведена машинная команда микроконтроллера в шестнадцатеричной записи, соответствующая находящейся справа мнемонической записи команды.

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

Если операция требует для выполнения двух источников и одного приемника результата операции (например, команда сложения ADD или вычитания SUBB), то первый операнд является одновременно и источником и приемником результата операции. Например, в команде

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

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

Команды микроконтроллера условно можно разбить на пять групп:

q арифметические команды;

q логические команды с байтовыми переменными;

q команды передачи данных;

q команды битового процессора;

q команды ветвления программ и передачи управления ОЭВМ.

Арифметические команды

В наборе команд микроконтроллера имеются следующие арифметические операции:

q сложение — ADD;

q сложение с учетом флага переноса — ADDC;

q вычитание с заемом из флага переноса — SUBB;

q инкрементирование (увеличение на 1) — INC;

q декрементирование (уменьшение на 1) — DEC;

q десятичная коррекция — DA;

q умножение — MUL;

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

При операции умножения содержимое аккумулятора A умножается на содержимое регистра B, и результат размещается следующим образом: младший байт в регистре B, старший — в регистре А.

В случае выполнения операции деления целое от деления помещается в аккумулятор A, остаток — в регистр В.

Архитектура однокристального микроконтроллера

Структура микроконтроллера МК-51

Архитектура однокристальных микроконтроллеров MCS -51, разработанная фирмой Intel, стала де-факто стандартной для этого типа микропроцессоров. Микропроцессоры, имеющие такую архитектуру, с определенными модификациями выпускаются различными фирмами. В нашей стране микроконтроллеры данной архитектуры относятся к семейству МК-51 и в настоящее время содержат следующие схемы: К1816ВЕ31, К1816ВЕ51, К1816ВЕ751, К1830ВЕ31, К1830ВЕ51. Все они являются функционально завершенными и содержат на кристалле все необходимые узлы для построения законченной системы управления минимальной конфигурации. Основные электрические характеристики этих схем представлены в табл. 14.1.

Все приведенные в табл. 14.1 м микроконтроллеры имеют емкость внутренней памяти данных в 128 бит и максимальную внешнюю тактовую частоту — 12 МГц.

Дальнейшее описание будет относиться к микросхеме К1816ВЕ51, если иное не оговорено особо.

Структурная схема МК-51 представлена на рис. 14.1.

  • арифметико-логический блок (АЛБ), включающий в себя:
    • 8-разрядное АЛУ ;

    • регистр-аккумулятор A и дополнительный регистр-аккумулятор B, использующиеся при выполнении операций умножения и деления;
    • битовое АЛУ ;
    • битовый аккумулятор, находящийся в разряде C слова состояния процессора PSW , который в байтовых арифметических операциях фиксирует сигнал переноса;

    Формат регистра PSW представлен в табл. 14.2.

    Организация памяти

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

    Память данных

    Память данных , расположенная на кристалле (внутренняя память данных ), имеет емкость 128 байт с адресами 00h-7Fh. Она может быть расширена до 64 Кбайт за счет подключения блоков внешней памяти данных.

    Помимо возможности использования ОЗУ в качестве массива оперативной памяти, отдельные ее области имеют самостоятельное значение . Часть ОЗУ применяется в качестве регистров общего назначения, часть имеет прямоадресуемый доступ к отдельным битам, образуя так называемую битовую память . В ОЗУ располагается также и область стека.

    Распределение адресного пространства ОЗУ показано на рис. 14.2.

    Младшие 32 байта внутреннего ОЗУ данных сгруппированы в 4 банка по 8 регистров общего назначения в каждом (БАНК 0-БАНК 3). Определение рабочего в данный момент банка, то есть банка регистров, к которому обращается программа при использовании имен R0-R7, осуще ствляется установкой битов RS0 и RS1 в регистре слова состояния PSW .

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

    ОЗУ данных с адресами 20h-2Fh образует область ячеек, к которым возможен побитный доступ . Система команд МК-51 содержит значительное количество инструкций, позволяющих работать с отдельными битами, используя при этом прямую адресацию. 128 бит , составляющие рассматриваемую область внутреннего ОЗУ данных , имеют адреса бит 00h-7Fh и предназначены для работы с такими инструкциями. Таким образом, к ячейке с адресом, например, 21h можно обратиться как к байту, используя ее прямой адрес 21h, а можно обратиться к ее отдельным битам с помощью команд, работающих с битовой информацией. При этом младший бит этого байта имеет адрес 08h, а старший — 0Fh.

    Ячейки памяти с адресами 30h-7Fh используются как обычная оперативная память .

    Во внутреннем ОЗУ данных размещается также область стека. Ее положение не фиксировано, а определяется значением указателя стека SP .

    Адресное пространство внутренней памяти данных с адресами 80h-FFh отведено под указание регистров специальных функций микропроцессора. Область регистров специальных функций содержит регистры-защелки портов ввода-вывода , регистры таймеров/счетчиков, регистры управления и т. п. Эти регистры допускают только прямую адресацию.

    Все ячейки внутреннего ОЗУ данных могут адресоваться с использованием прямой и косвенной адресации . Обращение к регистрам специальных функций допускается с применением только прямой адресации.

    К внешней памяти данных можно обращаться только на запись или чтение с помощью специальных команд. Эти команды осуществляют обмен информацией между внешней памятью данных и аккумулятором микроконтроллера и не влияют на внутреннюю память данных МК. Таким образом, в системе могут одновременно присутствовать внутренняя память данных с адресами 00h-0Fh и внешняя память данных с адресами 0000h-FFFFh.

Ссылка на основную публикацию
Adblock
detector