Состав семейства MCS-51
Состав семейства
MCS-51
В настоящее
время среди всех 8-разрядных микроконтроллеров
- семейство MCS-51 является несомненным
чемпионом по количеству разновидностей
и количеству компаний, выпускающих
его модификации. Оно получило свое
название от первого представителя
этого семейства - микроконтроллера 8051,
выпущенного в 1980 году на базе технологии
n-МОП. Удачный набор периферийных устройств,
возможность гибкого выбора внешней или
внутренней программной памяти и приемлемая
цена обеспечили этому микроконтроллеру
успех на рынке. С точки зрения технологии
микроконтроллер 8051 являлся для своего
времени очень сложным изделием - в кристалле
было использовано 128 тыс. транзисторов,
что в 4 раза превышало количество транзисторов
в 16-разрядном микропроцессоре 8086.
Важную роль
в достижении такой высокой популярности
семейства 8051 сыграла открытая политика
фирмы Intel, родоначальницы архитектуры,
направленная на широкое распространение
лицензий на ядро 8051 среди большого
количества ведущих полупроводниковых
компаний мира.
В результате на
сегодняшний день существует более
200 модификаций микроконтроллеров
семейства 8051, выпускаемых почти 20-ю
компаниями. Эти модификации включают
в себя кристаллы с широчайшим
спектром периферии: от простых 20-выводных
устройств с одним таймером и 1К программной
памяти до сложнейших 100-выводных кристаллов
с 10-разрядными АЦП, массивами таймеров-счетчиков,
аппаратными 16-разрядными умножителями
и 64К программной памяти на кристалле.
Каждый год появляются все новые варианты
представителей этого семейства. Основными
направлениями развития являются: увеличение
быстродействия (повышение тактовой частоты
и переработка архитектуры), снижение
напряжения питания и потребления, увеличение
объема ОЗУ и FLASH памяти на кристалле с
возможностью внутрисхемного программирования,
введение в состав периферии микроконтроллера
сложных устройств типа системы управления
приводами, CAN и USB интерфейсов и т.п.
Микросхемы для
этого семейства производятся целым
рядом фирм различных стран мира
таких как Philips, Siemens, Intel, Atmel, Dallas, Temic,
Oki, AMD, MHS, Gold Star, Winbond, Silicon Systems и ряд других.
Микроконтроллеры семейства MCS 51 выпускают
и российские заводы. Производство микроконтроллера
8051 осуществлялось в Киеве, Воронеже (1816ВЕ31/51,
1830ВЕ31/51), Минске (1834ВЕ31) и Новосибирске
(1850ВЕ31). В качестве примера, в таблице
1 приведены названия нескольких микросхем,
производимых зарубежными фирмами, в таблице
2 приведены микросхемы российского производства.
Таблица 1. Микросхемы,
производимые зарубежными фирмамиМикроконтроллер ОЗУ
AT89C1051 128 байт 1К байт - - 2 - - комп
AT89C2051 128 байт 2К байт - - 2 - - комп
I8051 128 байт 4К байт - - 2 - - -
I8031 128 байт - - - 2 - - -
I8Х52 256 байт 8К байт - - 3 - - -
AT89c52 256 байт 8К байт - - 3 - - -
AT89с8252 256 байт 8К байт 2K байт + 3 - - -
AT89c55 256 байт 20К байт - - 3 - - -
I8Х54 256 байт 16К байт - - 3 - - -
I8Х58 256 байт 32К байт - - 3 - - -
I8Х51FA 128 байт 8К байт - - 4 + - -
I8Х51FB 256 байт 16К байт - - 4 + - -
I8Х51FC 256 байт 32К байт - - 4 + - -
I8Х51GB 256 байт 8К байт - + 5 + + +
Примечание: вместо символа 'X' в названии микроконтроллера должны стоять символы:
0 - n-МОП без ПЗУ
3 - n-МОП с ПЗУ
7 - n-МОП с РПЗУ
0с - КМОП без ПЗУ
3с - КМОП с ПЗУ
7с - КМОП с РПЗУ
9с - КМОП с
FLASH
Таблица 2. Микросхемы
российского
КР1816ВЕ51 128 байт 4К байт - - - - -
КР1816ВЕ751 128 байт - 4К байт - - - -
КР1816ВЕ31 128 байт - - - - - -
КР1830ВЕ51 128 байт 4К байт - - - - -
КР1830ВЕ751 128 байт - 4К байт - - - -
КР1830ВЕ 31 128 байт - - - - - -
Архитектура микроконтроллеров
MCS-51
Архитектура семейства
MCS-51 в значительной мере предопределяется
ее назначением - построение компактных
и дешевых цифровых устройств. Все функции
микроЭВМ реализуются с помощью единственной
микросхемы. В состав семейства MCS-51 входит
целый ряд микросхем от самых простых
микроконтроллеров до достаточно сложных.
Микроконтроллеры семейства MCS-51 позволяют
выполнять как задачи управления различными
устройствами, так и реализовывать отдельные
узлы аналоговой схемы. Все микросхемы
этого семейства работают с одной и той
же системой команд, большинство из них
выполняется в одинаковых корпусах с совпадающей
цоколевкой (нумерация ножек для корпуса).
Это позволяет использовать для разработанного
устройства микросхемы разных фирм - производителей
(таких как Intel, Dallas, Atmel, Philips и т.д.) без переделки
принципиальной схемы устройства и программы.
Рис 1. Структурная
схема контроллера К1830ВЕ751
Структурная схема
контроллера представлена на рис.1.
и состоит из следующих основных
функциональных узлов: блока управления,
арифметико-логического
Блок управления
и синхронизации
Блок управления и синхронизации (Timing and Control) предназначен для выработки синхронизирующих и управляющих сигналов, обеспечивающих координацию совместной работы блоков ОЭВМ во всех допустимых режимах ее работы.В состав блока управления входят:
устройство формирования временных интервалов,
логика ввода-вывода,
регистр команд,
регистр управления потреблением электроэнергии,
дешифратор команд,
логика управления ЭВМ.
Устройство формирования
временных интервалов предназначено
для формирования и выдачи внутренних
синхросигналов фаз, тактов и циклов.
Количество машинных циклов определяет
продолжительность выполнения команд.
Практически все команды ОЭВМ выполняются
за один или два машинных цикла, кроме
команд умножения и деления, продолжительность
выполнения которых составляет четыре
машинных цикла. Обозначим частоту задающего
генератора через Fг. Тогда длительность
машинного цикла равна 12/Fг или составляет
12 периодов сигнала задающего генератора.
Логика ввода - вывода предназначена для
приема и выдачи сигналов, обеспечивающих
обмен информации с внешними устройствами
через порты ввода вывода Р0-Р3.
Регистр команд
предназначен для записи и хранения
8-ми разрядного кода операции выполняемой
команды. Код операции, с помощью
дешифратора команд и логики управления
ЭВМ, преобразуется в микропрограмму
выполнения команды.
Регистр управления
потреблением (PCON) позволяет останавливать
работу микроконтроллера для уменьшения
потребления электроэнергии и уменьшения
уровня помех от микроконтроллера. Еще
большего уменьшения потребления электроэнергии
и уменьшения помех можно добиться, остановив
задающий генератор микроконтроллера.
Этого можно достичь при помощи переключения
бит регистра управления потреблением
PCON. Для варианта изготовления по технологии
n-МОП (серия 1816 или иностранных микросхем,
в названии которых в середине отсутствует
буква 'c') регистр управления потреблением
PCON содержит только один бит, управляющий
скоростью передачи последовательного
порта SMOD, а биты управления потреблением
электроэнергией отсутствуют.
Арифметико-логическое устройство (ALU) представляет собой параллельное восьмиразрядное устройство, обеспечивающее выполнение арифметических и логических операций. АЛУ состоит из:
регистров аккумулятора, регистров временного хранения TMP1 и TMP2,
ПЗУ констант,
сумматора,
дополнительного регистра (регистра В),
аккумулятора (ACC),
регистра состояния
программ (PSW).
Регистр аккумулятор
и регистры временного хранения - восьмиразрядные
регистры, предназначенные для приема
и хранения операндов на время
выполнения операций над ними. Эти
регистры программно не доступны.
ПЗУ констант обеспечивает
выработку корректирующего кода
при двоично-десятичном представлении
данных, кода маски при битовых
операциях и кода констант.
Параллельный
восьмиразрядный сумматор представляет
собой схему комбинационного
типа с последовательным переносом,
предназначенную для выполнения арифметических
операций сложения, вычитания и логических
операций сложения, умножения, неравнозначности
и тождественности.
Регистр B - восьмиразрядный
регистр, используемый во время операций
умножения и деления. Для других
инструкций он может рассматриваться
как дополнительный сверхоперативный
регистр.
Аккумулятор - восьмиразрядный
регистр, предназначенный для приема
и хранения результата, полученного
при выполнении арифметико-логических
операций или операций сдвига
Блок последовательного интерфейса и прерываний (ПИП) предназначен для организации ввода - вывода последовательных потоков информации и организации системы прерывания программ. В состав блока входят:
буфер ПИП,
логика управления,
регистр управления,
буфер передатчика,
буфер приемника,
приемопередатчик последовательного порта,
регистр приоритетов прерываний,
регистр разрешения прерываний,
логика обработки
флагов прерываний и схема выработки
вектора.
Счетчик команд
(Program Counter) предназначен для формирования
текущего 16-разрядного адреса внутренней
памяти программ и 8/16-разрядного адреса
внешней памяти программ. В состав счетчика
команд входят 16-разрядные буфер РС, регистр
РС и схема инкремента (увеличения содержимого
на 1).
Память данных
(RAM) предназначена для временного хранения
информации, используемой в процессе выполнения
программы.
Порты P0, P1, P2, P3 являются
квазидвунаправленными портами
ввода - вывода и предназначены для
обеспечения обмена информацией
ОЭВМ с внешними устройствами, образуя
32 линии ввода- вывода.
Регистр состояния
программы (PSW) предназначен для хранения
информации о состоянии АЛУ при
выполнении программы.
Память программ
(EPROM) предназначена для хранения
программ и представляет собой постоянное
запоминающее устройство (ПЗУ). В разных
микросхемах применяются масочные, стираемые
ультрафиолетовым излучением или FLASH ПЗУ.
Регистр указателя
данных (DPTR) предназначен для хранения
16 - разрядного адреса внешней памяти
данных или памяти программ.
Указатель стека
(SP) представляет собой восьмиразрядный
регистр, предназначенный для организации
особой области памяти данных (стека),
в которой можно временно сохранить любую
ячейку памяти.
Система
команд микроконтроллеров MCS-51
Система команд
микроконтроллера предоставляет большие
возможности обработки данных, обеспечивает
реализацию логических, арифметических
операций, а также управление в режиме
реального времени.
В этой системе
команд реализована побитная, потетрадная
(4 бита), побайтовая (8 бит) и 16-разрядная
обработка данных. Микросхемы семейства
MCS-51 - это 8-разрядные микропроцессоры,
а это означает, что ПЗУ, ОЗУ, регистры
специального назначения, АЛУ и внешние
шины имеют байтовую организацию. Двухбайтовые
данные используются только регистром-указателем
(DPTR) и счетчиком команд (PC).
В машинном коде
команда занимает один, два или
три байта в зависимости от
типа адресации.
Команды выполняются
за один, два или четыре (умножение
и деление) машинных цикла.
Запись команд в машинных кодах для человека неудобна, кроме того, разные машинные команды выполняют одинаковые действия только над разными ячейками памяти. Поэтому для записи команд микропроцессоров была придумана система мнемонических обозначений. Для записи команды микропроцессора сначала ставится мнемоническое обозначение, затем указывается ячейка памяти – приёмник результата выполнения операции и наконец источник данных для выполнения операции. Например, в команде
E535
MOV A, 35h
символы MOV обозначают
операцию копирования, второй операнд
35 определяет, что данные необходимо
взять из 35 ячейки памяти, а первый операнд
A определяет, что результат необходимо
поместить в регистр – аккумулятор. При
этом старое значение регистра – аккумулятора
будет стёрто. Слева приведена машинная
команда микроконтроллера в шестнадцатеричной
записи, соответствующая мнемонической
записи команды.
Мнемоническое
обозначение команды отделяется
от операндов одним или
Если операция требует для выполнения двух источников и одного приёмника результата операции (например, команда сложения ADD или вычитания SUBB), то первый операнд является одновременно и источником и приёмником результата операции. Например, в команде
2535
ADD A, 35h
символы ADD обозначают
операцию сложения двух чисел, данные
будут взяты из 35 ячейки памяти и аккумулятора
а результат будет помещён в аккумулятор
вместо старого значения этого регистра.
В таблице 1 приведены
инструкции, влияющие на установку
флагов микроконтроллера.
Таблица 1
Мнемоника
Флаги
Мнемоника
Флаги
C
OV
AC
C
OV
AC
ADD
+
+
+
CLR C
0
ADDC
+
+
+
CPL C
+
SUBB
+
+
+
ANL C, bit
+
MUL
0
+
ANL C, /bit
DIV
0
+
ORL C, bit
+
DA
+
ORL C, /bit
+
RRC
+
MOV C, bit
+
RLC
+
CJNE
+
SETB C
1
Систему команд микроконтроллера условно можно разбить на пять групп:
арифметические команды
логические команды с байтовыми переменными
команды передачи данных
команды битового процессора
команды ветвления программ и передачи управления
Арифметические
команды
В наборе команд микроконтроллера имеются следующие арифметические операции:
сложение ADD,
сложение с учетом флага переноса ADDC,
вычитание с заемом SUBB,
инкрементирование (увеличение на 1) INC,
декрементирование (уменьшение на 1) DEC,
десятичная коррекция DA,
умножение MUL
деление DIV.
Действия производятся
над целыми числами без знака.
При операции умножения
содержимое аккумулятора A умножается
на содержимое регистра B, и результат
размещается следующим образом: младший
байт в регистре B, старший - в регистре
А.
В случае выполнения операции деления целое от деления помещается в аккумулятор A, остаток - в регистр В.
Логические команды
с байтовыми переменными.
Система команд рассматриваемого микроконтроллера позволяет реализовать логические операции
И ( ANL),
ИЛИ ( ORL),
ИСКЛЮЧАЮЩЕЕ ИЛИ
( XRL).
Логические операции
выполняются над аккумулятором
или непосредственно над
Существуют логические операции, которые выполняются только на аккумуляторе:
сброс всех восьми разрядов A ( CLR A);
инвертирование всех восьми разрядов A ( CPL A );
циклический сдвиг влево и вправо без учета флага переноса ( RR A; RL A);
циклический сдвиг влево и вправо с учетом флага переноса ( RRC A; RLC A);
обмен местами старшей и младшей тетрад внутри аккумулятора ( SWAP A).
Команды пересылки
данных.
Как было рассмотрено ранее, арифметические и логические команды могут быть выполнены только над содержимым регистра аккумулятора, поэтому исключительно важное значение в системе команд приобретают команды пересылки данных. С помощью этих команд можно скопировать содержимое любой ячейки памяти в регистр-аккумулятор или наоборот скопировать содержимое аккумулятора в любую ячейку памяти. Так как в микроконтроллере присутствует три независимых области памяти, то для обращения к ним введены различные команды:
копирование данных во внутреннем ОЗУ: MOV;
обмен данными аккумулятора с внутренним ОЗУ: XCH, XCHD
копирование из внешней памяти данных: MOVX
копирование данных
из памяти программ: MOVC
Примеры использования
команд пересылки данных:
Любая ячейка 256- байтового блока внутреннего ОЗУ данных может быть выбрана с использованием косвенно-регистровой адресации через регистры указатели R0 и R1 (выбранного банка рабочих регистров):
MOV A, @R0 ;Скопировать число из ячейки памяти с адресом, хранящемся в R0, в аккумулятор
MOV @R1, A
;Скопировать число из
Команды пересылки с прямой адресацией между ячейками памяти позволяют заносить содержимое порта в ячейку внутреннего ОЗУ или обмениваться содержимым ячеек внутреннего ОЗУ между собой без использования аккумулятора:
MOV 15, 25
;Скопировать содержимое 25-й ячейки
в 15-ю ячейку
Таблицы символов (кодов), записанные в ПЗУ программы могут быть скопированы в аккумулятор с помощью команд передачи данных с косвенной адресацией:
MOVC A, @A+DPTR
;Скопировать символ в
Ячейка адресного пространства 64 Кбайт внешнего ОЗУ также может быть выбрана с использованием косвенно-регистровой адресации через регистр указатель данных DPTR:
MOVX A, @DPTR
;Скопировать число из внешней
ячейки памяти с адресом, ;хранящемся
в DPTR, в аккумулятор
Содержимое аккумулятора может быть обменено с содержимым рабочих регистров выбранного банка:
XCH A, R0.
Кроме того, любой бит с прямой адресацией может быть скопирован в бит переноса и наоборот:
MOV C, AdrBit
Битовые команды.
Каждый бит из битового пространства внутренней памяти может быть установлен в 1, сброшен в 0, или инвертирован:
установить бит (записать логическую единицу) SETB;
сбросить бит (записать логический ноль) CLR;
проинвертировать значение бита (изменить на прямо противоположное) CPL;
бит может быть
записан во флаг переноса или считан из
флага переноса MOV.
Могут быть реализованы переходы:
если бит установлен (содержит логическую 1) JB;
если бит не установлен (содержит логический 0) JNB;
переход, если бит
установлен со сбросом этого бита
после выполнения команды (запись в
этот бит 0) JBC;
Между любым битом из битового пространства внутренней памяти и флагом переноса могут быть произведены логические операции "И" или "ИЛИ".
И ( ANL),
ИЛИ ( ORL),
Команды ветвления
и передачи управления.
Команды ветвления позволяют реализовывать условные операторы и операторы циклов. В микроконтроллерах семейства MCS-51 доступны следующие команды:
безусловный переход: LJMP, AJMP, SJMP
Вызов и возврат из подпрограммы: LCALL, ACALL, RET, RETI
проверка содержимого аккумулятора: JZ, JNZ, CJNE, JMP
проверка флага переноса С: JC, JNC
проверка содержимого
любого бита в битовом пространстве:
JB, JNB, JBC
Команды 16-разрядных
безусловных переходов и
LJMP Metka
;Переход к команде,
LCALL Podprogramma
;Вызов подпрограммы по адресу,
обозначенному меткой ‘
Команды 11-разрядных переходов и вызовов подпрограмм позволяют сократить объем программы, но при этом обеспечивают переходы только внутри программного модуля 2 Кбайт. Эти команды принципиально могут приводить к необнаруживаемым транслятором ошибкам, когда программный модуль размещается на двух соседних 2 Кбайтовых сегментах памяти.
AJMP Metka
;Переход к команде,
ACALL Podprogramma
;Вызов подпрограммы по адресу,
обозначенному меткой ‘
В системе команд имеются команды условных и безусловных переходов относительно начального адреса следующей команды в пределах от (РС)-127 до (РС)+127. Примеры команд:
SJMP Metka
;Переход к команде,
JB P3.5, TstNxtUsl ;Если на 6 выводе порта P3 нулевой потенциал,
ACALL Podprogramma ;то вызвать подпрограмму, обозначенную меткой ‘Podprogramma’
CJNE A, #5, TstNxtUsl
;Если в аккумуляторе
ACALL Podprogramma
;то вызвать подпрограмму, обозначенную
меткой ‘Podprogramma’
Команды проверки содержимого аккумулятора и флага переноса C могут быть использованы для реализации проверки различных условий. При этом содержимое не изменяется, то есть если требуется произвести несколько проверок одной и той же переменной, то повторно заносить значение этой переменной в аккумулятор не нужно. Например:
MOV A, 34 ;Если в переменной, хранящейся в ячейке внутренней памяти 34
JNB ACC_7, TstEQ5 ;число меньше нуля,
CALL Podprogramma ;то вызвать подпрограмму, обозначенную меткой ‘Podprogramma’
TstEQ5 ;-----------------------------

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