Intel MCS-51

Микроконтроллер из семейства MCS-51, Intel 8751H, с 4 Кб EPROM памяти программ (DIP корпус)

MCS-51 - семейство микроконтроллеров, разработанных фирмой Intel в 1980 году для использования в встраиваемых системах. Данные микроконтроллеры были весьма популярны в 90-х годах, впоследствии их вытеснили развитые аналоги фирм "Microchip Technology" и "Atmel". За счет успешной реализации микроконтроллера (встроенный УАПП, битовый процессор i8051) обилие имеющихся на рынке микроконтроллеров имеет i8051 совместимые процессоры, а за счет наличия большого количества аналогов изучения ядра MCS-51 является одним из первых шагов к изучению современных микропроцессоров в программах курсов высших учебных заведениях.

MCS-51 пришли на смену выпущенным в 1976 году MCS-48 и в отличие от последних имели уменьшенное время выполнения команд (в 2,5 - 10 раз в зависимости от условий эксплуатации), увеличенный объем встроенной памяти, дополнительные устройства периферии, дополнительные команды для программирования. За счет данных улучшений, микроконтроллеры стали удобнее в программировании, дешевле в эксплуатации. Наличие булевого процессора утвердила за данными устройствами отрасль автоматизации производства, поскольку для управления часто используются именно полярные сигналы - включить / выключить двигатель, зажечь / выключить индикатор т.д..

Конструктивно, MCS-51 является однокристальный микроконтроллер гарвардской архитектуры, выполненные по n-МОП или КМОП технологии. Включают в себя 8-битный микропроцессор i8051 с поддержкой булевых операций над отдельными битами, до 4096 байт встроенной памяти программ ( доступной только на чтение), до 256 байт встроенной памяти данных ( доступной на чтение и запись), поддержка адресного пространства в 64 Кб для памяти программ и 64 Кб для памяти данных, два-три 16-битные таймеры / счетчики, двусторонний УАПП, 32 линии двусторонних портов ввода-вывода, генератор тактовой частоты.


1. Характеристика микроконтроллера

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

В дальнейшем будет рассматриваться именно оригинальная версия микроконтроллера (если не оговорено иное), поскольку другие ОМЕО М не отличаются принципиально от оригинального MCS-51.

Ядро
  • 8-битовый АЛ П, 8-битовые регистры
  • Побитовая адресация части ОС П
  • Система команд из 111 инструкций
  • Архитектура системы команд: аккумулятор
Память
  • Гарвардская архитектура памяти
  • 8-битовая шина данных
  • 16-битная шина адреса. Возможность адресации до 64 Кб памяти программ и до 64 Кб памяти данных
  • 4096 байт встроенной памяти программ (дополнительные 60К достигаются за счет внешних микросхем памяти)
  • 128 байт встроенной памяти данных (дополнительные 64К достигаются за счет внешних микросхем памяти)
Периферия
  • 32 двусторонние однобитные линии ввода-вывода
  • Двусторонний последовательный УАП П
  • Два 16-битные таймеры / счетчики
  • Система из 5 прерываний, с 2 уровнями приоритетов
  • Встроенный тактовый генератор
  • Энергосберегающий режим (только в версиях на КМОП технологии)

2. Встроенные устройства

2.1. Порты ввода-вывода

Четыре 8-разрядные порты Р0 ... Р3 могут использоваться:

  1. Как 8-разрядные параллельные порты ввода / вывода информации;
  2. Как 32 одноразрядные линии ввода / вывода;
  3. При работе с внешней памятью программ и данных;
  4. В режиме альтернативных функций (8 линий порта Р3);
  5. При программировании и проверке внутренней памяти программ.

Последовательный порт может быть запрограммирован на один из четырех режимов приема / передачи путем программирования разрядов SM0 и SM1 регистра SCON.

  • Режим 0 - последовательный порт работает как восьмиразрядный регистр сдвига. Скорость (частота) приема / передачи в режиме 0 постоянна и составляет f_ {BQ} / 12 , Где f_ {BQ} - Частота синхронизации ОМЕОМ.
  • Режим 1 - прием / передача данных осуществляется в формате восьмиразрядного УАПП. Скорость зависит от частоты переполнения регистра счетчика
  • Режим 2 - режимы 9-разрядного УАПП с постоянной скоростью обмена. Скорость приема / передачи программно настраивается на одну из двух возможных величин: f_ {BQ} / 32 или f_ {BQ} / 64
  • Режим 3 - режимы 9-разрядного УАПП с переменной скоростью обмена. Скорость зависит от частоты переполнения регистра счетчика

2.2. Универсальный асинхронный приемо-передатчик (УАПП)

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

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


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

Всего в микроконтрлера есть 5 прерываний:

  1. IE0
  2. TF0
  3. IE1
  4. TF1
  5. TI + RI

Система прерываний MCS-51.png

Gnome-colors-gtk-edit.svg
Пожалуйста, помогите расширить или усовершенствовать этот раздел.
Дополнительная информация о том, что необходимо сделать, может быть на странице обсуждения.

3. Программистская модель

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

Gnome-colors-gtk-edit.svg
Пожалуйста, помогите расширить или усовершенствовать этот раздел.
Дополнительная информация о том, что необходимо сделать, может быть на странице обсуждения.

3.2. Таблица регистров специальных функций

Размещение регистров специальных функций в виртуальной памяти микроконтроллера
Обозначение Наименование Адрес Нач. значение Примечание
ACC Аккумулятор E0H 00H Этот регистр означает то же, что и A при программировании на ассемблере, однако обозначение А указывает на работу с аккумулятором, а обозначение ACC указывает на работу с байтом памяти. Соответственно, использование мнемоники A позволяет сократить длину инструкции.
B Регистр B F0H 00H Регистр используется микроконтроллером только в операциях умножения / деления. Во всех других операциях его можно использовать как общий регистр
PSW Регистр состояния программы D0H 00H Его аналог в х86 - регистр флажков FLAGS
SP Указатель стека 81H 07H
DPL Младший байт указателя данных 82H 00H Данные регистры формируют один 16-битный виртуальный регистр DPTR.
DPH Старший байт указателя данных 83Н 00H
P0 Порт 0 80H FFH Регистры-защелки портов ввода-вывода
P1 Порт 1 90H FFH
P2 Порт 2 A0H FFH
P3 Порт 3 B0H FFH
IP Регистр приоритетов прерываний B8H XXX00000b
IE Регистр разрешения прерываний A8H 0XX00000b
TMOD Регистр режимов таймера / счетчика 89H 00H
TCON Регистр управления таймера / счетчика 88H 00H
TH0 Таймер / счетчик 0 (старший байт) 8CH 00H
TL0 Таймер / счетчик 0 (младший байт) 8AH 00H
TH1 Таймер / счетчик 1 (старший байт) 8DH 00H
TL1 Таймер / счетчик 1 (младший байт) 8BH 00H
SCON Управление последовательным портом 98H 00H
SBUF Буфер последовательного порта 99H Неопределенно Этот регистр по DPTR, также виртуальным. При чтении вместо данного регистра подставляется буфер приемника, при записи - буфер передатчика. Данные буфера программно недоступны (чтобы программист не смог записать в буфер приемника и читать из буфера передатчика), однако SBUF - доступен.
PCON Управление энергопотреблением 87H n-МОП 0XXXXXXX

КМОП 0XXX0000

Gnome-colors-gtk-edit.svg
Пожалуйста, помогите расширить или усовершенствовать этот раздел.
Дополнительная информация о том, что необходимо сделать, может быть на странице обсуждения.

3.3. Система команд

Gnome-colors-gtk-edit.svg
Пожалуйста, помогите расширить или усовершенствовать этот раздел.
Дополнительная информация о том, что необходимо сделать, может быть на странице обсуждения.

3.4. Примеры программ

Gnome-colors-gtk-edit.svg
Пожалуйста, помогите расширить или усовершенствовать этот раздел.
Дополнительная информация о том, что необходимо сделать, может быть на странице обсуждения.

4. Применение

Открытка планетарного вездехода Nanokhod
  • Марсоход Nanokhod использует для управления микроконтроллер TEMIC 80C154, который представляет собой МК Intel 80C52 с увеличенным количеством памяти программ, который в свою очередь представляет собой 80С51 с увеличенным количеством памяти данных и дополнительным таймером. [1] [2] [3]
Gnome-colors-gtk-edit.svg
Пожалуйста, помогите расширить или усовершенствовать этот раздел.
Дополнительная информация о том, что необходимо сделать, может быть на странице обсуждения.

5. Семейство микроконтроллеров и аналоги

5.1. Различия между контроллерами в пределах семейства

Gnome-colors-gtk-edit.svg
Пожалуйста, помогите расширить или усовершенствовать этот раздел.
Дополнительная информация о том, что необходимо сделать, может быть на странице обсуждения.

5.2. Зарубежные микроконтроллеры, основанные на ядре 8051

Gnome-colors-gtk-edit.svg
Пожалуйста, помогите расширить или усовершенствовать этот раздел.
Дополнительная информация о том, что необходимо сделать, может быть на странице обсуждения.

5.3. Российский аналог - МК51

Gnome-colors-gtk-edit.svg
Пожалуйста, помогите расширить или усовершенствовать этот раздел.
Дополнительная информация о том, что необходимо сделать, может быть на странице обсуждения.

6. Компиляторы и эмуляторы MCS-51

Gnome-colors-gtk-edit.svg
Пожалуйста, помогите расширить или усовершенствовать этот раздел.
Дополнительная информация о том, что необходимо сделать, может быть на странице обсуждения.