Intel 8051

редактировать
KL Intel P8051.jpg Микроконтроллер Intel P8051

Intel MCS-51 (обычно называют 8051) представляет собой однокристальный микроконтроллер серии (MCU), разработанный Intel в 1980 году для использования в встраиваемых системах. Архитектором набора команд Intel MCS-51 был Джон Х. Уортон. Оригинальные версии Intel были популярны в 1980-х и начале 1990-х годов, а расширенные бинарно-совместимые производные остаются популярными и сегодня. Это пример компьютера со сложным набором команд (но он также обладает некоторыми особенностями архитектуры RISC, такими как большой набор регистров и окна регистров ) и имеет отдельные области памяти для программных инструкций и данных.

Первоначальное семейство Intel MCS-51 было разработано с использованием технологии металл-оксид-полупроводник ( NMOS ) N-типа, как и его предшественник Intel MCS-48, но более поздние версии, обозначенные буквой C в их названии (например, 80C51), используют дополнительный металл - оксидно-полупроводниковая ( CMOS ) технология и потребляют меньше энергии, чем их предшественники NMOS. Это сделало их более подходящими для устройств с батарейным питанием.

Семейство было продолжено в 1996 году с улучшенным 8-битным MCS-151 и семейством 8/ 16 / 32-битных MCS-251 двоично-совместимых микроконтроллеров. Хотя Intel больше не производит семейства MCS-51, MCS-151 и MCS-251, улучшенные бинарно-совместимые производные, выпускаемые многочисленными поставщиками, остаются популярными и сегодня. Некоторые производные интегрируют процессор цифровых сигналов (DSP). Помимо этих физических устройств, несколько компаний также предлагают производные MCS-51 в качестве IP-ядер для использования в конструкциях программируемых вентильных матриц (FPGA) или специализированных интегральных схем (ASIC).

СОДЕРЖАНИЕ
  • 1 Важные функции и приложения
    • 1.1 Производные функции
  • 2 Соглашения об именовании семейств
  • 3 Архитектура памяти
    • 3.1 Внутренняя RAM
    • 3.2 Регистры специальных функций
    • 3.3 Зарегистрируйте окна
    • 3.4 Битовые регистры
    • 3.5 Программная память
    • 3.6 Внешняя память данных
  • 4 регистра
  • 5 Микроархитектура
  • 6 Набор инструкций
  • 7 Программирование
  • 8 Связанные процессоры
    • 8.1 Продавцы производных финансовых инструментов
  • 9 Использование в качестве интеллектуальной собственности
  • 10 микроконтроллеров на базе 8051
  • 11 вариантов цифрового сигнального процессора (DSP)
  • 12 Усовершенствованный 8-битный микроконтроллер с двоичной совместимостью: семейство MCS-151
  • 13 8/16/32-битный двоичный совместимый микроконтроллер: семейство MCS-251
  • 14 См. Также
  • 15 Ссылки
  • 16 Дополнительная литература
  • 17 Внешние ссылки
Важные функции и приложения
i8051 микроархитектура i8051 распиновка

Архитектура 8051 предоставляет множество функций ( центральный процессор (ЦП), оперативная память (ОЗУ), постоянная память (ПЗУ), порты ввода / вывода (I / O), последовательный порт, управление прерываниями, таймеры ) в одном устройстве. пакет :

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

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

Производные функции

По состоянию на 2013 год многие крупные производители микросхем все еще разрабатывают новые производные, а крупные поставщики компиляторов, такие как IAR Systems, Keil и Altium Tasking, постоянно выпускают обновления.

Микроконтроллеры на базе MCS-51 обычно включают в себя один или два UART, два или три таймера, 128 или 256 байтов внутренней ОЗУ данных (16 байтов из которых имеют побитовую адресацию), до 128 байтов ввода / вывода, от 512 байтов до 64 КБ внутренней программной памяти, а иногда и некоторого количества расширенной оперативной памяти данных (ERAM), расположенной во внешнем пространстве данных. Внешняя RAM и ROM совместно используют шины данных и адреса. Исходное ядро ​​8051 работало с 12 тактовыми циклами на машинный цикл, при этом большинство инструкций выполнялось за один или два машинных цикла. Таким образом, с тактовой частотой 12 МГц 8051 может выполнять 1 миллион одноцикловых инструкций в секунду или 500000 двухтактных инструкций в секунду. В настоящее время широко используются усовершенствованные ядра 8051, которые работают с шестью, четырьмя, двумя или даже одной тактовой частотой за машинный цикл (обозначается «1T») и имеют тактовые частоты до 100 МГц, и, таким образом, способны к еще большему количеству инструкций в секунду. Все Silicon Labs, некоторые устройства Dallas (теперь часть Maxim Integrated ) и несколько устройств Atmel (теперь часть Microchip ) имеют одноцикловые ядра.

Варианты 8051 могут включать в себя встроенные таймеры сброса с обнаружением обесточивания, встроенные генераторы, самопрограммируемую память программ флэш-ПЗУ, встроенное внешнее ОЗУ, дополнительное внутреннее хранилище программ, код загрузчика в ПЗУ, энергонезависимое хранилище данных ЭСППЗУ., I 2 C, SPI и хост-интерфейсы USB, шина CAN или LIN, радиомодули ZigBee или Bluetooth, генераторы ШИМ, аналоговые компараторы, аналого-цифровые и цифро-аналоговые преобразователи, часы реального времени, дополнительные счетчики и таймеры, в - средства отладки схем, больше источников прерываний, дополнительные режимы энергосбережения, больше / меньше параллельных портов и т. д. Intel изготовила версию с программированием маски, 8052AH-BASIC, с интерпретатором BASIC в ПЗУ, способную запускать пользовательские программы, загруженные в ОЗУ.

Микроконтроллеры на базе MCS-51 адаптированы к экстремальным условиям. Примерами высокотемпературных вариантов являются семейство Tekmos TK8H51 от −40  ° C до +250  ° C или Honeywell HT83C51 от −55  ° C до +225  ° C (с работой до 1 года при +300  ° C). Доступны радиационно-стойкие микроконтроллеры MCS-51 для использования в космических аппаратах; например, от Cobham (ранее Aeroflex ) как UT69RH051 или от НИИЭТ как 1830VE32 ( русский : 1830ВЕ32).

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

Соглашения об именах семей

8051 - это оригинальное название Intel с 4 КБ ПЗУ и 128 байт ОЗУ. Варианты, начинающиеся с 87, имеют программируемое пользователем ППЗУ, иногда стираемое УФ-излучением. Варианты с C в качестве третьего символа - это своего рода CMOS. 8031 и 8032 - это версии без ПЗУ, с ОЗУ 128 и 256 байт. Последняя цифра может указывать размер памяти, например, 8052 с 8 КБ ROM, 87C54 16 КБ EPROM и 87C58 с 32 КБ EPROM, все с 256 байтами RAM.

Архитектура памяти

MCS-51 имеет четыре различных типа памяти: внутреннее ОЗУ, регистры специальных функций, память программ и внешняя память данных. Для эффективного доступа к ним некоторые компиляторы используют целых 7 типов определений памяти: внутреннее ОЗУ, однобитный доступ к внутренней ОЗУ, регистры специальных функций, однобитовый доступ к выбранным (делимым на 8) регистрам специальных функций, ОЗУ программ, доступ к внешнему ОЗУ осуществляется с использованием косвенного доступа к регистру с использованием одного из стандартных 8-разрядных регистров, а регистр косвенного доступа к внешнему ОЗУ с использованием 16-разрядного регистра косвенного доступа.

Набор команд 8051 спроектирован как гарвардская архитектура с раздельной памятью (данные и инструкции); он может выполнять только код, извлеченный из памяти программ, и не имеет инструкций для записи в память программ. Однако шина, выходящая из ИС, имеет один адрес и путь данных и сильно напоминает шину архитектуры фон Неймана.

Большинство систем 8051 соблюдают набор инструкций и требуют настраиваемых функций для загрузки новых исполняемых программ, например, во флэш-память.

Внутренняя RAM

Внутреннее ОЗУ (IRAM) имеет 8-битное адресное пространство с адресами от 0 до 0xFF. IRAM от 0x00 до 0x7F содержит 128 напрямую адресуемых 1-байтовых регистров, к которым можно получить доступ с помощью 8-битного абсолютного адреса, который является частью инструкции. В качестве альтернативы, доступ к IRAM можно получить косвенно: адрес загружается в R0 или R1, а доступ к памяти осуществляется с использованием синтаксиса @ R0 или @ R1 или как память стека через указатель стека SP с помощью операций PUSH и POP; и * операции CALL и RET.

Исходный 8051 имеет только 128 байт IRAM. 8052 добавил IRAM от 0x80 до 0xFF, к которому можно получить доступ только косвенно (например, для использования в качестве пространства стека). Большинство клонов 8051 также имеют полные 256 байтов IRAM.

Вместо этого прямой доступ к адресам 80-FF IRAM отображается в регистры специальных функций (SFR), где расположены аккумуляторы A, B, бит переноса C и другие специальные регистры для управления, состояния и т. Д.

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

Регистры специальных функций (SFR) расположены в том же адресном пространстве, что и IRAM, по адресам от 0x80 до 0xFF, и доступ к ним осуществляется напрямую с использованием тех же инструкций, что и для нижней половины IRAM. К ним нельзя получить доступ косвенно через @ R0 или @ R1 или указатель стека SP; косвенный доступ к этим адресам вместо этого будет иметь доступ ко второй половине IRAM.

Регистры специальных функций (SFR) включают аккумуляторы A (или ACC, в E0) и B (в F0) и слово состояния программы (или PSW, в D0) сами по себе, а также 16-битный указатель данных DPTR (в 82 как DPL и 83 как DPH). В дополнение к ним, небольшое ядро ​​других регистров специальных функций - включая IE разрешения прерывания на A8 и IP приоритета прерывания на B8; порты ввода / вывода P0 (80), P1 (90), P2 (A0), P3 (B0); управление последовательным вводом / выводом SCON (98) и буфер SBUF (99); регистр управления CPU / питанием PCON (87); и регистры для таймеров 0 и 1 управления (TCON на 88) и режима работы (TMOD на 89), 16-битного таймера 0 (TL0 на 8A, TH0 на 8C) и таймера 1 (TL1 на 8B, TH1 на 8D) - присутствуют во всех версиях 8051. Остальные адреса зависят от версии; в частности, регистры таймера 2 для 8052: регистр управления T2CON (на C8), 16-битный захват / защелка (RCAP2L на CA, RCAP2H на CB) и таймер 2 (TL2 на CC и TH2 на CD), являются не входит в комплект 8051.

Зарегистрируйте окна

32 байта в IRAM из 0x00–0x1F содержат пространство для четырех восьмибайтовых окон регистров, которым сопоставляются 8 регистров R0 – R7. Текущее активное окно определяется двухбитным адресом, содержащимся в слове состояния программы.

Битовые регистры

16 байтов (128 бит) в ячейках IRAM 0x20–0x2F содержат пространство для 128 1-битных регистров, которые адресуются отдельно как битовые регистры 00-7F.

Остальные битовые регистры, адресованные как 80-FF, отображаются в 16 регистров специальных функций 80, 88, 90, 98,..., F0 и F8 (те, адреса которых кратны 8), и, следовательно, включают биты, содержащие аккумуляторы A, B и слово состояния программы PSW. Адрес окна регистров, являющийся битами 3 и 4 на PSW, сам адресуется как битовые регистры D3 и D4 соответственно; в то время как бит переноса C (или CY) в бите 7 PSW адресуется как битовый регистр D7.

Программная память

Программная память (PMEM, хотя и менее распространенная, чем IRAM и XRAM) составляет до 64 КБ постоянной памяти, начиная с адреса 0 в отдельном адресном пространстве. Он может быть встроенным или внешним, в зависимости от конкретной модели используемого чипа. Программная память предназначена только для чтения, хотя некоторые варианты 8051 используют встроенную флэш-память и предоставляют метод перепрограммирования памяти в системе или в приложении.

Помимо кода, можно хранить данные только для чтения, такие как таблицы поиска, в программной памяти, полученные с помощью инструкций или. Адрес вычисляется как сумма 8-битного аккумулятора и 16-битного регистра (PC или DPTR). MOVC A,@A+DPTRMOVC A,@A+PC

Специальные инструкции перехода и вызова ( AJMPи ACALL) немного уменьшают размер кода, который обращается к локальной (в пределах тех же 2 КБ) программной памяти.

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

Внешняя память данных

Внешняя память данных (XRAM) - это третье адресное пространство, также начинающееся с адреса 0 и обеспечивающее 16-битное адресное пространство. Он также может быть встроенным или внекристальным; что делает его «внешним», так это то, что к нему нужно обращаться с помощью MOVXинструкции (move external). Многие варианты 8051 включают стандартные 256 байтов IRAM плюс несколько килобайт XRAM на кристалле.

Первые 256 байт XRAM могут быть доступны с помощью,, и инструкции. Доступ ко всем 64 КБ можно получить с помощью и. 16-битный адрес требует, чтобы программист загрузил 16-битный индексный регистр. По этой причине доступ к ОЗУ с 16-битными адресами значительно медленнее. MOVX A,@R0MOVX A,@R1MOVX @R0,AMOVX @R1,AMOVX A,@DPTRMOVX @DPTR,A

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

Чтобы разрешить использование этой функции, некоторые 8051-совместимые микроконтроллеры с внутренней RAM размером более 256 байт или невозможностью доступа к внешней RAM обращаются к внутренней RAM, как если бы она была внешней, и имеют специальный функциональный регистр (например, PDATA), который позволяет им для установки верхнего адреса 256-байтовой страницы. Это имитирует режим MCS8051, который может вызывать старший байт адреса ОЗУ, устанавливая контакты ввода-вывода общего назначения.

Когда требуется ОЗУ больше 64 КБ, обычная система переключает банк ОЗУ с универсальным вводом-выводом, выбирающим старшие биты адреса. Некоторые компиляторы 8051 предусматривают автоматический доступ к выгружаемым данным.

Регистры

Единственный регистр 8051, который не отображается в память, - это 16-битный счетчик программ (ПК). Это указывает адрес следующей инструкции для выполнения. Инструкции относительного ветвления предоставляют 8-битное смещение со знаком, которое добавляется к ПК.

Доступ к восьми регистрам общего назначения R0 – R7 можно получить с помощью инструкций на один байт короче других. Они отображаются в IRAM между 0x00 и 0x1F. В любой момент времени используются только восемь байтов из этого диапазона, что определяется двумя битами выбора банка в PSW.

Ниже приведен частичный список регистров 8051, которые отображены в памяти в пространство регистров специальной функции:

Указатель стека, SP (0x81)
Это 8-битный регистр, используемый инструкциями вызова и возврата подпрограмм. Стек растет вверх; SP увеличивается до нажатия и уменьшается после выталкивания значения.
Указатель данных, DP (0x82–83)
Это 16-битный регистр, который используется для доступа к PMEM и XRAM.
Слово состояния программы, PSW (0xD0)
Он содержит важные флаги состояния по номеру бита:
  1. Четность, P. Задает четность ( исключающее ИЛИ бит) аккумулятора A.
  2. Определяется пользователем, UD. Может быть прочитан и записан программным обеспечением; аппаратное обеспечение не влияет иным образом.
  3. Флаг переполнения, О.В. Устанавливается, когда добавление приводит к переполнению со знаком.
  4. Регистр выбираем 0, RS0. Младший бит банка регистров. Устанавливается, когда используются банки 0x08 или 0x18.
  5. Зарегистрируйтесь, выберите 1, RS1. Старший бит банка регистров. Устанавливается, когда используются банки 0x10 или 0x18.
  6. Флаг 0, F0. Может быть прочитан и записан программным обеспечением; аппаратное обеспечение не влияет иным образом.
  7. Вспомогательная переноска, AC. Устанавливается, когда сложение производит перенос с бита 3 на бит 4.
  8. Бит переноса, C. Часто используется как общий регистр для битовых вычислений или «логический аккумулятор».
Аккумулятор, А (0xE0)
Этот регистр используется в большинстве инструкций.
Регистр B (0xF0)
Это используется как расширение аккумулятора для команд умножения и деления.

256 одиночных битов имеют прямую адресацию. Это 16 ячеек IRAM из 0x20–0x2F и 16 регистров специальных функций 0x80, 0x88, 0x90,..., 0xF8. К любому биту этих байтов можно получить прямой доступ с помощью множества логических операций и условных переходов.

Обратите внимание, что PSW не содержит общих отрицательных (N) или нулевых (Z) флагов. Для первого наиболее значимый бит аккумулятора может быть адресован напрямую, поскольку это SFR с побитовой адресацией. Для последнего есть явные инструкции для перехода к тому, равен ли аккумулятор нулю. Также существует операция сравнения и перехода по двум операндам.

Бит четности (P) часто используется для реализации последовательных режимов, которые включают проверку на четность. Для поддержки этого стандартные UART MCS51 могли передавать 9 бит.

Микроархитектура

Микроархитектура Intel MCS8051 является проприетарной, но опубликованные характеристики позволяют предположить, как она работает. Это многоцикловый процессор. MCS8051 использовал 12 тактов для большинства инструкций. Количество циклов на инструкцию (больше 8) предполагает, что у нее есть однобитовый арифметико-логический блок, который обрабатывает свои 8-битные данные по одному биту за раз. Это также может объяснить, почему он может экономично предоставлять однобитовые инструкции. Относительно большое количество циклов также, кажется, указывает на то, что он использует только один фронт своих часов. (Многие многоцикловые компьютеры используют свою логику с обеих сторон.)

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

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

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

Набор инструкций

Все инструкции имеют длину от 1 до 3 байтов и состоят из начального байта кода операции, за которым следуют до 2 байтов операндов.

1 / 4 из байт коды операции, х 0- х 3, используются для нерегулярных опкодов.

3 / 4 из опкода байт, х 4- х F, назначены 16 основных инструкций ALU с 12 возможными операндами. Наименьший значащий полубайт кода операции выбирает основной операнд следующим образом:

  • x 8– x F: Прямой регистр, R0 – R7.
  • x 6– x 7: Зарегистрируйте косвенный, @ R0 или @ R1.
  • x 5: Непосредственно в память, следующий байт указывает расположение IRAM или SFR.
  • x 4: Немедленно, следующий байт определяет 8-битную константу. Когда операнд является адресатом (,) или операция уже включает непосредственный источник (,), это вместо этого указывает, что используется аккумулятор.INC operandDEC operandMOV operand,#dataCJNE operand,#data,offset

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

0 у:INC operand
Увеличивает указанный операнд. Немедленный режим (опкод 0x04) определяет аккумулятор,.INC A
1 год:DEC operand
Уменьшить указанный операнд. Немедленный режим (опкод 0x14) определяет аккумулятор,.DEC A
2 у:ADD A,operand
Добавьте операнд в аккумулятор A. Код операции 0x23 (, «повернуть влево», но на самом деле сдвиг влево ) можно рассматривать как.RL A ADD A,A
3 у:ADDC A,operand
Добавьте операнд и бит C в аккумулятор. Код операции 0x33 (, поворот влево через перенос) можно рассматривать как.RLC AADDC A,A
4 лет:ORL A,operand
Логическое ИЛИ - операнд в аккумуляторе. Две формы назначения этой операции в памяти и определяются кодами операции 0x43 и 0x42.ORL address,#dataORL address,A
5 лет:ANL A,operand
Логическое И операнд в аккумуляторе. Две формы назначения в памяти этой операции и определяются кодами операции 0x53 и 0x52.ANL address,#dataANL address,A
6 лет:XRL A,operand
Логическое ИСКЛЮЧАЮЩЕЕ ИЛИ для операнда в аккумуляторе. Две формы назначения в памяти этой операции и определяются кодами операции 0x63 и 0x62.XRL address,#dataXRL address,A
7 лет:MOV operand,#data
Сразу перейти к операнду. Немедленный режим (опкод 0x74) определяет аккумулятор,.MOV A,#data
8 лет:MOV address,operand
Переместите значение в регистр IRAM или SFR. Немедленный режим (код операции 0x84) не используется для этой операции, так как он дублирует код операции 0x75.
9 лет:SUBB A,operand
Вычтите операнд из аккумулятора. Эта операция заимствует, и нет вычитания без заимствования.
А у:MOV operand,address
Перенести значение из регистра IRAM или SFR. Немедленный режим (код операции 0xA4) не используется, так как немедленные служат только источниками. Прямой режим памяти (код операции 0xA5) не используется, так как он дублирует 0x85.
Б у:CJNE operand,#data,offset
Сравните операнд с непосредственным #dataи перейдите к PC + смещение, если оно не равно. Непосредственные и прямые режимы памяти (опкоды 0xB4 и 0xB5) сравнить операнд от аккумулятора,. Обратите внимание, что нет инструкции сравнения и перехода при равенстве.CJNE A,operand,offsetCJE
C y:XCH A,operand
Поменяйте местами аккумулятор и операнд. Немедленный режим (код операции 0xC4) не используется для этой операции.
D y:DJNZ operand,offset
Уменьшите значение операнда и перейдите к PC + смещение, если результат не равен нулю. Непосредственный режим (код операции 0xD4) и регистровый косвенный режим (0xD6, 0xD7) не используются.
E y:MOV A,operand
Перенести операнд в аккумулятор. Непосредственный режим не используется для этой операции (код операции 0xE4), так как дублирует код операции 0x74.
F y:MOV operand,A
Переместите аккумулятор к операнду. Немедленный режим (код операции 0xF4) не используется, так как он не будет иметь никакого эффекта.

Только ADD, ADDCи SUBBинструкции, установленные PSW флаги. В INC, DECи логические инструкции нет. В CJNEмодифицирует инструкции С бит только в заема, что результаты операнд1 - operand2.

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

8051/8052 нестандартные инструкции
Код операции х 0 х 1 х 2 х 3 х 4
0 у NOP LJMP addr16 RR A (повернуть вправо) INC A
1 год JBC bit,offset (переход, если бит установлен с очищенным) LCALL addr16 RRC A (повернуть вправо через перенос) DEC A
2 лет JB bit,offset (переход, если установлен бит) RET RL A (повернуть налево) ADD A,#data
3 лет JNB bit,offset (прыгать, если бит очищен) RETI RLC A (повернуть влево через перенос) ADDC A,#data
4 лет JC offset (прыгать, если набор для переноски) ORL address,A ORL address,#data ORL A,#data
5 лет JNC offset (прыгать, если несёт ясно) ANL address,A ANL address,#data ANL A,#data
6 лет JZ offset (прыгать, если ноль) XRL address,A XRL address,#data XRL A,#data
7 лет JNZ offset (прыгать, если не ноль) ORL C,bit JMP @A+DPTR MOV A,#data
8 лет SJMP offset (короткий прыжок) ANL C,bit MOVC A,@A+PC DIV AB
9 лет MOV DPTR,#data16 MOV bit,C MOVC A,@A+DPTR SUBB A,#data
А у ORL C,/bit MOV C,bit INC DPTR MUL AB
B y ANL C,/bit CPL bit CPL C CJNE A,#data,offset
C y PUSH address CLR bit CLR C SWAP A
D y POP address SETB bit SETB C DA A (десятичная корректировка)
E y MOVX A,@DPTR MOVX A,@R0 MOVX A,@R1 CLR A
F y MOVX @DPTR,A MOVX @R0,A MOVX @R1,A CPL A
A5
Неиспользованный
B5
CJNE A,address,offset
D6–7
XCHD A,@R0–1 обменять младший полубайт операндов.

Код SJMPоперации (короткий переход) принимает байт-операнд относительного смещения со знаком и передает туда управление относительно адреса следующей инструкции. В AJMP/ ACALLопкодах объединить три наиболее значимых биты байта кода операции со следующим байтом, чтобы указать 11-битное назначение, который используется для замены 11 нижних бит регистра PC (верхние 5 бит регистра PC остаются нетронутыми). Для больших адресов, то LJMPи LCALLинструкции позволяют 16-битное назначение.

Одна из причин популярности 8051 - диапазон операций с отдельными битами. Биты всегда указываются по абсолютным адресам; не существует косвенной регистровой или индексированной адресации. Инструкции, которые работают с отдельными битами:

  • SETB bit,,: Установить, очистить или дополнить указанный битCLR bitCPL bit
  • JB bit,offset: Перейти, если установлен бит
  • JNB bit,offset: Перейти, если бит сброшен
  • JBC bit,offset: Переход, если бит установлен, и сброс бита
  • MOV C,bit,: Переместить указанный бит в бит переноса или наоборот.MOV bit,C
  • ORL C,bit,: Или бит (или его дополнение) к биту переносаORL C,/bit
  • ANL C,bit,: И бит (или его дополнение) к биту переносаANL C,/bit

В форме записывается битовый операнд address.number. Поскольку флаг переноса представляет собой бит 7 слова состояния программы с побитовой адресацией, команды, и являются более короткими эквивалентами, и. SETB CCLR CCPL CSETB PSW.7CLR PSW.7CPL PSW.7

Хотя для большинства инструкций требуется, чтобы один операнд был аккумулятором или непосредственной константой, код операции 0x85 работает MOVнепосредственно между двумя внутренними ячейками ОЗУ.

Программирование

Существуют различные компиляторы языков программирования высокого уровня для 8051. Для 8051 доступно несколько компиляторов C, большинство из которых позволяет программисту указать, где каждая переменная должна храниться в шести типах памяти, и предоставить доступ к конкретному оборудованию 8051. такие функции, как несколько банков регистров и инструкции по манипулированию битами. Есть много коммерческих компиляторов C. Компилятор C для малых устройств (SDCC) - популярный компилятор C. Другие языки высокого уровня, такие как C ++, Forth, BASIC, Object Pascal, Pascal, PL / M и Modula-2, доступны для 8051, но они менее широко используются, чем C и ассемблер.

Поскольку IRAM, XRAM и PMEM (только для чтения) имеют адрес 0, компиляторы C для архитектуры 8051 предоставляют специфичные для компилятора прагмы или другие расширения, чтобы указать, где должен храниться конкретный фрагмент данных (т. Е. Константы в PMEM или переменные, требующие быстрый доступ в IRAM). Поскольку данные могут находиться в одном из трех пространств памяти, обычно предоставляется механизм, позволяющий определить, к какой памяти относится указатель, либо путем ограничения типа указателя на включение пространства памяти, либо путем сохранения метаданных с указателем.

Связанные процессоры
Микроконтроллеры Intel 8031 Микроконтроллер Intel D87C51

Intel прекратила выпуск своей линейки продуктов MCS-51 в марте 2007 года; тем не менее, существует множество усовершенствованных продуктов 8051 или интеллектуальной собственности на микросхемы, которые регулярно добавляются другими поставщиками.

Предшественник 8051, 8048, использовался в клавиатуре первого IBM PC, где он преобразовывал нажатия клавиш в последовательный поток данных, который отправляется на основной блок компьютера. Intel 8049 выполнял аналогичную роль в Sinclair QL. 8048 и его производные до сих пор используются для базовых моделей клавиатур.

8031 был уменьшенной версией оригинального 8051, которая не имела никакой внутренней памяти программы ( память только для чтения, ПЗУ). Чтобы использовать этот чип, необходимо было добавить внешнее ПЗУ, содержащее программу, которую 8031 ​​будет извлекать и выполнять. Микросхема 8051 может быть продана как 8031 ​​без ПЗУ, поскольку внутреннее ПЗУ 8051 отключено нормальным состоянием вывода EA в конструкции на основе 8031. Продавец может продать 8051 как 8031 ​​по любому количеству причин, таких как неправильный код в ПЗУ 8051 или просто переизбыток 8051 и недостаток 8031.

8052 была расширенная версия оригинального 8051, который показал 256 байт внутренней памяти вместо 128 байт, 8 Кбайт ПЗУ вместо 4 КБ, а третий 16-битный таймер. Большинство современных 8051-совместимых микроконтроллеров включают эти функции.

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

8751 был 8051 с 4 КБ EPROM вместо 4 КБ ПЗУ. Они были идентичны, за исключением энергонезависимой памяти. Эта деталь была доступна в керамическом корпусе с прозрачным кварцевым окном над кристаллом, чтобы УФ-свет можно было использовать для стирания EPROM. Связанные части: 8752 имел 8 КБ EPROM, 8754 имел 16 КБ EPROM, 8758 имел 32 КБ EPROM.

80C537 (ROM-менее) и 80C517 (8 KB ROM) является КМОП - версия, предназначенная для автомобильной промышленности. Улучшения в основном включают новые и улучшенные периферийные устройства. 80C5x7 имеет отказоустойчивые механизмы, средства обработки аналоговых сигналов, расширенные возможности таймера и 32-разрядное арифметическое периферийное устройство. Другие функции включают в себя:

  • 256-байтная встроенная оперативная память
  • 256 напрямую адресуемых бит
  • Внешняя память программ и данных с возможностью расширения до 64 КБ
  • 8-битный аналого-цифровой преобразователь с 12 мультиплексированными входами
  • Арифметическая периферия может выполнять операции умножения 16 × 16 → 32-бит, 32/16 → 16-битное деление, 32-битный сдвиг и 32-битные операции нормализации.
  • Восемь указателей данных вместо одного для косвенной адресации программ и внешней памяти данных
  • Расширенные возможности сторожевого пса
  • Девять портов ввода / вывода
  • Два полнодуплексных последовательных интерфейса с индивидуальными генераторами скорости передачи данных
  • Четыре системы прерывания уровня приоритета, 14 векторов прерывания
  • Три режима энергосбережения

Производные поставщики

Более 20 независимых производителей производят процессоры, совместимые с MCS-51.

Другие ИС или IP, совместимые с MCS-51, были разработаны компаниями Analog Devices, Integral Minsk, Кристалл Киев и НИИЭТ Воронеж.

Использование в качестве интеллектуальной собственности

Сегодня 8051 по-прежнему доступны в виде дискретных компонентов, но в основном они используются в качестве кремниевых ядер интеллектуальной собственности. Доступные в виде исходного кода на языке описания оборудования (например, VHDL или Verilog ) или в виде списков соединений FPGA, эти ядра обычно интегрируются во встроенные системы, в изделиях от USB-флэш-накопителей до стиральных машин и сложных систем беспроводной связи на кристалле. Разработчики используют кремниевые IP-ядра 8051 из-за меньшего размера и меньшей мощности по сравнению с 32-битными процессорами, такими как серия ARM Cortex-M, MIPS и BA22.

Современные ядра 8051 быстрее, чем предыдущие упакованные версии. Усовершенствования конструкции повысили производительность 8051 при сохранении совместимости с исходным набором инструкций MCS 51. Исходный Intel 8051 работал с 12 тактовыми циклами на машинный цикл, и большинство инструкций выполнялись за один или два машинных цикла. Типичная максимальная тактовая частота 12 МГц означала, что эти старые 8051 могли выполнять один миллион однократных инструкций или 500000 двухтактных инструкций в секунду. Напротив, усовершенствованные кремниевые IP-ядра 8051 теперь работают с одним тактовым циклом за машинный цикл и имеют тактовую частоту до 450 МГц. Это означает, что процессор, совместимый с 8051, теперь может выполнять 450 миллионов инструкций в секунду.

Микроконтроллеры на базе 8051
Технология хранения кремния 89V54RD2
  • ВВЕРХУ: серии MC94F, MC95F, MC96F
  • Infineon: XC800
  • Maxim Integrated (ранее Dallas): серия DS80 и т. Д.
  • Mentor Graphics: M8051EW и т. Д., Разработанные для Mentor компанией SYNTILL8
  • Megawin: серии 74, 82, 84, 86, 87 и 89
  • Микрочип (ранее Atmel): AT89C51, AT89S51, AT83C5134 и т. Д.
  • NXP: серии NXP700 и NXP900
  • Сименс САБ 80532-Н
  • Silergy учета электроэнергии SoCs : 71M6511, 71M6513, 71M6531, 71M6533, 71M6534, 71M6542, 71M6543 энергии измерения SOCS : 78M6631, 78M6618, 78M6613, 78M6612
  • Silicon Labs: C8051 серии и серии EFM8
  • Технология хранения кремния : FlashFlex51 MCU (SST89E52RD2, SST89E54RD2, SST89E58RD2, SST89E516RD2SST89V52RD2, SST89V54RD2, SST89V58RD2, SST89V516RD2)
  • STC Micro: STC89C51RC, STC90C51RC, STC90C58AD, STC10F08XE, STC11F60XE, STC12C5410AD, STC12C5202AD, STC12C5A60S2, STC12C5628AD, STC15F100, STC15F204EA, STC15F2K60S2, STC15F4K60S2, STC15F101W, STC15F408AD, STC15W104, STC15W408S, STC15W201S, STC15W408AS, STC15W1K16S и серии STC15W4K56S4
  • Семейства RF SoC Texas Instruments CC111x, CC24xx и CC25xx
  • WCH ( Nanjing Qinheng Microelectronics ): CH551, CH552, CH554, CH546, CH547, CH548, CH558, CH559
Варианты цифрового сигнального процессора (DSP)

Существует несколько вариантов с дополнительным 16-битным процессором цифровых сигналов (DSP) (например, для кодирования / декодирования MP3 или Vorbis ) со скоростью до 675 миллионов инструкций в секунду (MIPS) и встроенным интерфейсом USB 2.0 или в качестве интеллектуальной собственности.

Улучшенный 8-битный микроконтроллер с двоичной совместимостью: семейство MCS-151

В 1996 году Intel анонсировала семейство MCS-151, вариант, работающий до 6 раз быстрее, полностью двоичный и совместимый с 8051 набором инструкций. В отличие от 8051 MCS-151 является конвейерным процессором с 16-битной внутренней кодовой шиной и в 6 раз больше. скорость. Семейство MCS-151 также было прекращено Intel, но широко доступно в бинарно-совместимых и частично улучшенных вариантах.

Микроконтроллер, совместимый с 8/16/32-битным двоичным кодом: семейство MCS-251

8/16/32-разрядный микроконтроллер 80251 с адресным пространством 16 МБ ( 24 бита ) и в 6 раз более быстрым циклом команд был представлен Intel в 1996 году. Он может работать как 8-битный 8051, имеет 24-битную линейную адресацию., 8-битный ALU, 8-битные инструкции, 16-битные инструкции, ограниченный набор 32-битных инструкций, 16 8-битных регистров, 16 16-битных регистров (8 16-битных регистров, которые не разделяют пространство с какими-либо 8-битных регистров и 8 16-битных регистров, которые содержат 2 8-битных регистра на 16-битный регистр) и 10 32-битных регистров (2 выделенных 32-битных регистра и 8 32-битных регистров, которые содержат 2 16-битных регистра). битовые регистры на 32-битный регистр).

Он содержит расширенные инструкции - см. Также руководство программиста - и более поздние варианты с более высокой производительностью, также доступные как интеллектуальная собственность (IP). Это 3-х ступенчатый конвейерный. Семейство MCS-251 также было прекращено Intel, но оно широко доступно в бинарно-совместимых и частично улучшенных вариантах от многих производителей.

Смотрите также
использованная литература
дальнейшее чтение
Книги
  • Мазиди; МакКинли; Мазиди (2012). Микроконтроллер 8051: системный подход. 648 стр. ISBN   978-0-13-508044-3.
  • Шульц, Томас (2008). C и 8051 (4-е изд.). 464 стр. ISBN   978-0-9783995-0-4.
  • Штайнер, Крейг (2005). Микроконтроллер 8051/8052: архитектура, язык ассемблера и аппаратный интерфейс. 348 стр. ISBN   978-1-58112-459-0.
  • Калькутт; Коуэн; Парчизаде (2000). 8051 Микроконтроллеры: оборудование, программное обеспечение и приложения. 329 стр. ISBN   978-0-340-67707-0.
  • Аксельсон, Ян (1994). Книга идей микроконтроллера: схемы, программы и приложения с микроконтроллером 8052-BASIC. 277 стр. ISBN   978-0-9650819-0-0.
  • Пейн, Уильям (19 декабря 1990 г.) [1990]. Встроенный контроллер FORTH для семейства 8051 (твердая обложка). Бостон: Academic Press. 528 стр. ISBN   978-0-12-547570-9.
Intel
внешние ссылки

СМИ, связанные с MCS-51 на Викискладе?

Последняя правка сделана 2023-04-04 03:40:55
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте