Микроконтроллеры MCS–51: программная модель, структура, команды. Микроконтроллеры MCS–51. Cтруктурная схема, АЛУ, память данных Микроконтроллеры семейства mcs 51 имеют архитектуру типа

  • 06.11.2021

УДК 681.5, 681.325.5 (075.8)

ББК 32.973.202-018.2 я 73

Щербина А. Н. Вычислительные машины, системы и сети. Микроконтроллеры и микропроцессоры в системах управления: у чеб. пособие / А.Н. Щербина, П.А. Нечаев- СПб.: Из-во Политехн. ун-та, 2012.-226 с.

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

Рассмотрены фундаментальные вопросы логической организации микропроцессорных систем на примере базовой архитектуры микроконтроллерного семейства MCS-51 фирмы Intel. Описана технология программирования микроконтроллеров на языках Ассемблер и СИ.

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

Также соответствует содержанию государственного образовательного стандарта дисциплин «Микроконтроллеры и микропроцессоры в системах управления» и «Электронные устройства автоматики» бакалаврской, инженерной и магистерской подготовки по направлению 140400 «Электроэнергетика и электротехника».

Печатается по решению редакционно-издательского совета

Санкт-Петербургского государственного политехнического университета.

© Щербина А. Н., Нечаев П. А., 2012

© Санкт-Петербургский государственный

политехнический университет, 2012

ISBN 978-5-7422-3553-8


Введение.. 7

Глава 1. Архитектура семейства MCS51. 10

1.1 Общие характеристики 10

1.2 Структурная схема 11



1.3 Назначение выводов микроконтроллера 8051 15

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

1.4.1 Память программ (ПЗУ) 18

1.4.2 Память данных (ОЗУ) 19

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

1.4.4 Регистр флагов (PSW) 23

1.5 Устройство управления и синхронизации 26

1.6 Организация портов ввода-вывода 27

1.6.1 Общие сведения. 27

1.6.2 Альтернативные функции. 27

1.7. Таймеры / счетчики микроконтроллеров семейства 8051. 28

1.7.1. Структура таймеров-счетчиков. 28

1.7.2 Режимы работы таймеров-счетчиков. 30

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

1.8.1. Структура последовательного порта. 32

1.8.2. Регистр управления/статуса приемопередатчика SCON.. 34

1.8.3. Регистр управления мощностью PCON.. 36

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

1.9.1. Структура системы прерываний. 37

1.9.2 Выполнение подпрограммы прерывания. 40

Глава 2. Особенности микроконтроллера 80C51GB.. 42

2.1 Функциональные особенности 42

2.2 Порты I/O P0-P5 43

2.2.1 Функционирование портов ввода-вывода. 43

2.2.2 Запись в порт.. 46

2.3 Особенности системы прерываний 8XC51GB.. 49

Разрешение/запрещение прерываний. 50

Управление приоритетами прерываний. 51

Внешние прерывания. 54

2.3. Узел АЦП 56

2.4. Аппаратный сторожевой таймер 61

2.5. Обнаружение сбоя тактового генератора 63

2.6. Матрица программируемых счётчиков РСА 64

2.6.1. Структура PCA.. 64

2.6.2. Регистр режима счётчика РСА (CMOD) 66

2.6.3. Регистр управления счётчика РСА (CON) 67

2.6.4. Модули сравнения/фиксации. 68

2.7. Расширенный последовательный порт 76

2.8. Таймеры/счетчики 79

Расположение выводов микроконтроллеров группы 8XC51GB.. 86

Глава 3. Программирование MK 8051GB.. 89

3.1. Программная модель 89

3.2 Типы данных 93

3.3 Способы адресации данных 93

3.4 Система команд 95

3.4.1 Общая характеристика. 95

3.4.2 Типы команд. 96

3.4.3 Типы операндов. 97

3.4.4 Команды пересылки данных микроконтроллера. 98

3.4.5 Команды арифметических операций 8051. 101

3.4.6 Команды логических операций микроконтроллера 8051. 104

3.4.7 Команды операций над битами микроконтроллера 8051. 106

3.5 Отладка программ 111

Глава 4. Язык программирования ASM-51. 112

4.2 Запись текста программы 113

4.3 Алфавит языка. 114

4.4 Идентификаторы. 115

4.5 Числа 117

4.6 Директивы 118

4.7 Реализация подпрограмм на языке ASM51 122

4.7.1 Структура подпрограммы-процедуры на языке ASM51. 122

4.7.2 Передача переменных-параметров в подпрограмму. 123

4.7.3 Реализация подпрограмм-функций на языке ASM51. 123

4.7.4 Реализация подпрограмм обработки прерываний на языке ASM51. 124

4.8 Структурное программирование на языке ассемблера. 125

4.9 Особенности трансляции многомодульных программ.. 126

4.10 Использование сегментов 128

4.10.1 Разбиение памяти МК на сегменты.. 128

4.10.2 Абсолютные сегменты памяти. 129

4.10.2 Перемещаемые сегменты памяти. 131

Глава 5. Язык программирования С-51. 134

5.1 Общая характеристика языка 134

5.3 Структура программ С-51 136

5.3. Элементы языка программирования С-51 138

5.3.1. Символы.. 138

5.3.2. Лексические единицы, разделители и использование пробелов. 141

5.3.3 Идентификаторы.. 142

5.3.4 Ключевые слова. 143

5.3.5 Константы.. 143

5.4. Выражения в операторах языка 146

программирования C-51 146

5.5. Приоритеты выполнения операций 148

5.6. Операторы языка программирования C-51 149

5.6.1. Операторы объявления. 150

5.6.2 Исполняемые операторы.. 150

5.6.3 Оператор присваивания. 151

5.6.4 Условный оператор. 151

5.6.5 Структурный оператор {}. 152

5.6.6 Оператор цикла for. 152

5.6.7 Оператор цикла с проверкой условия до тела цикла while. 153

5.6.8 Оператор цикла с проверкой условия после тела цикла do while. 154

5.6.9 Оператор break. 155

5.6.10 Оператор continue. 155

5.6.11 Оператор выбора switch. 155

5.6.12 Оператор безусловного перехода goto. 157

5.6.13 Оператор выражение. 158

5.6.14 Оператор возврата из подпрограммы return. 158

5.6.15 Пустой оператор. 158

5.7. Объявление переменных в языке программирования C-51. 159

5.7.1. Объявление переменной. 159

5.7.3 Целые типы данных. 161

5.7.4 Числа с плавающей запятой. 162

5.7.5 Переменные перечислимого типа. 162

5.7.6. Объявление массивов в языке программирования C-51. 164

5.7.7. Структуры.. 165

5.7.8. Объединения (смеси) 166

5.8. Использование указателей в языке C-51 167

5.8.1. Объявление указателей. 167

5.8.2. Нетипизированные указатели. 168

5.8.3. Память зависимые указатели. 169

5.9. Объявление новых типов переменных 169

5.10. Инициализация данных 170

5.11. Использование подпрограмм в языке программирования С-51. 170

5.11.1. Определение подпрограмм.. 171

5.11.2. Параметры подпрограмм.. 173

5.11.3. Предварительное объявление подпрограмм.. 174

5.11.4 Вызов подпрограмм.. 176

5.11.5 Рекурсивный вызов подпрограмм.. 176

5.11.6 Подпрограммы обработки прерываний. 177

5.11.7 Области действия переменных и подпрограмм.. 178

5.12. Многомодульные программы 179

Глава 6. Подготовка программ в интегрированной среде разработки Keil μVision2. 182

6.1 Создание проекта на языке ASM-51 182

6.2 Пример создания проекта на языке C для учебного контроллера в интегрированной среде разработки Keil μVision2 188

Глава 7. Описание учебного контроллера.. 199

7.1. Структура контроллера 199

7.2. Адресное пространство 200

7.2.1. Распределение памяти. 200

7.2.2 Внешняя память. 201

7.2.3. Внутренняя память данных. 202

7.3. Распределение портов ввода-вывода 202

7.4. Последовательный порт………………………………...203

7.5. Работа с ЖКИ 205

7.6. Панели контроллера…………………………………………………213

ПРИЛОЖЕНИЕ П2 СТРУКТУРА ОТЧЁТА О ЛАБРОРАТОРНОЙ РАБОТЕ……..217

Приложение П3 Коды машинных команд. 217

Список литературы... 224


Введение

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

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

В настоящее время среди всех 8-разрядных микроконтроллеров семейство MCS-51 является несомненным лидером по количеству разновидностей и количеству компаний, выпускающих его модификации. Оно получило свое название от первого представителя этого семейства - микроконтроллера 8051. Удачный набор периферийных устройств, возможность гибкого выбора внешней или внутренней программной памяти и приемлемая цена обеспечили этому микроконтроллеру успех на рынке.

Достоинства семейства MCS-51:

· архитектура, являющаяся стандартом де-факто;

· чрезвычайная широта семейства и разнообразие возможностей;

· наличие высокопроизводительных и расширенных версий процессоров;

· значительное число свободно доступных программных и аппаратурных наработок;

· легкость аппаратного программирования, в т. ч. и внутрисхемного;

· дешевизна и доступность базовых чипов;

· наличие специализированных версий контроллеров для особых условий применения

· наличие версий контроллеров с пониженным уровнем электромагнитных помех;

· широкая известность среди разработчиков старшего поколения, как в мире, так и в странах СНГ;

· поддержка архитектуры ведущими учебными заведениями мира.

И, наконец, главное преимущество: освоив базовый чип семейства, легко начнеть работать с такими вычислительными «монстрами», как микроконтроллеры Cygnal, Dallas Semiconductor, Analog Devices, Texas Instruments.

В состав семейства MCS-51 входит целый ряд микросхем от самых простых микроконтроллеров до достаточно сложных. На сегодняшний день существует более 200 модификаций микроконтроллеров семейства 8051, выпускаемых почти 20-ю компаниями. Каждый год появляются все новые варианты представителей этого семейства.

Основными направлениями развития являются:

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

· снижение напряжения питания и энергопотребления;

· увеличение объема ОЗУ и FLASH памяти на кристалле с возможностью внутрисхемного программирования;

· введение в состав периферии микроконтроллера сложных устройств типа системы управления приводами, CAN и USB интерфейсов и т.п.

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

Основными производителями разновидностей 51-го семейства в мире являются фирмы Philips, Siemens, Intel, Atmel, Dallas, Temic, Oki, AMD, MHS, Gold Star, Winbond, Silicon Systems и ряд других.

Характеристики аналогов микроконтроллеров семейства MCS-51 (Intel 8XC51FA, 8XC51GB, 80С152) с расширенными возможностями приведены в табл. В.1.

Таблица В.1

ОЗУ ПЗУ РСА АЦП WDT T/C Послед. Каналы Особенности
Atmel: AT89C2051
- - - - UART Flash 2 Кб
AT89C4051 - - - - UART Flash 4 Кб
AT89S4D12 128K - - - UART, SPI Flash 4 Кб
DALLAS Semiconductor: DS5000FP
- - - + UART Bootstrap loader
DS5001FP - - - + UART Bootstrap loader
DS8xC520 16K - - + 2xUART 2 DPTR
SIEMENS: C505C
16K - + + UART, CAN 8 DPTR
C515C 64K - + + UART+ SSC+CAN 4 ШИМ, 8 DPTR
Philips: *89C51RA+
- + - + UART 2 DPTR, 4 ур. прер., clock out, Flash 8K
P51XAG1x 8K - - + 2 UART
Intel: 8xC51RA
8K - + + UART 4 уровня IRQ, clock out
8XC196KC 64K 16K - + - UART 3 ШИМ
80C196KB 64K 8K - + - UART ШИМ

Глава 1. Архитектура семейства MCS51

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

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

Общие характеристики

Основные характеристики семейства:

· 8-разрядный центральный процессор (ЦП), ориентированный на управление исполнительными устройствами;

· ЦП имеет встроенную схему 8-разрядного аппаратного умножения и деления чисел;

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

· внутренняя (расположенная на кристалле) память программ масочного или репрограммируемого типа, имеющая для различных кристаллов объём от 4 до 32 Кб, в некоторых версиях она отсутствует;

· не менее чем 128 байтное резидентное ОЗУ данных, которое используется для организации, регистровых банков, стека и хранения пользовательских данных;

· не менее 32-х двунаправленных интерфейсных линий (портов), индивидуально настраиваемых на ввод или вывод информации;

· два 16-битных многорежимных счетчика/таймера, используемых для подсчёта внешних событий, организации временных задержек и тактирования коммуникационного порта;

· двунаправленный дуплексный асинхронный приемопередатчик (UART), предназначенный для организации каналов связи между микроконтроллером и внешними устройствами с широким диапазоном скоростей передачи информации. Имеются средства для аппаратно-программного объединения микроконтроллеров в связанную систему;

· двухуровневая приоритетная система прерываний, поддерживающая не менее 5 векторов прерываний от 4-х внутренних и 2-х внешних источников событий;

· встроенный тактовый генератор.

Структурная схема

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

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

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

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

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

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

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

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

Устройство формирования временных интервалов предназначено для формирования и выдачи внутренних синхросигналов фаз, тактов и циклов. Количество машинных циклов определяет продолжительность выполнения команд. Практически все команды ОЭВМ выполняются за один или два машинных цикла, кроме команд умножения и деления, продолжительность выполнения которых составляет четыре машинных цикла. Обозначим частоту задающего генератора через 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) представляет собой восьмиразрядный регистр, предназначенный для организации особой области памяти данных (стека), в которой можно временно сохранить любую ячейку памяти.

1.3 Назначение выводов микроконтроллера 8051 (рис. 1.2)

· U ss - потенциал общего провода ("земли");

· U cc - основное напряжение питания +5 В;

· X1,X2 - выводы для подключения кварцевого резонатора;

· RST - вход общего сброса микроконтроллера;

· PSEN - разрешение внешней памяти программ, выдается только при обращении к внешнему ПЗУ;

· ALE - строб адреса внешней памяти;

· ЕА - отключение внутренней программной память; уровень 0 на этом входе заставляет микроконтроллер выполнять программу только из внешнего ПЗУ; игнорируя внутреннее(если последнее имеется);

Рис. 1.2. Назначение выводов 8051.

· P1 - восьмибитный квазидвунаправленный порт ввода/вывода, каждый разряд порта может быть запрограммирован как на ввод, так и на вывод информации, независимо от состояния других разрядов;

· P2 - восьмибитный квазидвунаправленный порт, аналогичный Р1, выводы этого порта используются для выдачи адресной информации при обращении к внешней памяти программ или данных (если используется 16-битовая адресация последней). Кроме того, выводы порта используются при программировании для ввода в микроконтроллер старших разрядов адреса;

· РЗ - восьмибитный квазидвунаправленный порт, аналогичный Р1, выводы этого порта могут выполнять ряд альтернативных функций, которые используются при работе таймеров, порта последовательного ввода-вывода, контроллера прерываний, и внешней памяти программ и данных;

· P0 - мультиплексируемый восьмибитный двунаправленный порт ввода-вывода информации, через этот порт в разные моменты времени выводятся младший байт адреса и данные.

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

Вся серия MCS-51 имеет гарвардскую архитектуру, то есть раздельные адресные пространства памяти программ и данных. Структура памяти изображена на рис. 1.3.

Объем внутренней (резидентной) памяти программ (ROM, EPROM или OTP ROM), располагаемой на кристалле, в зависимости от типа микросхемы может составлять 0 (ROMless), 4К (базовый кристалл), 8К, 16К или 32К. При необходимости пользователь может расширять память программ установкой внешнего ПЗУ. Доступ к внутреннему или внешнему ПЗУ определяется значением сигнала на выводе ЕА (External Access):

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

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

Для кристаллов без ПЗУ(ROMless) вывод ЕА должен быть постоянно подключен к V ss .

Рис. 1.3. Организация памяти семейства MCS-51

Строб чтения внешнего ПЗУ - (Program Store Enable) генерируется при обращении к внешней памяти программ и является неактивным во время обращения к ПЗУ, расположенному на кристалле. Область нижних адресов памяти программ используется системой прерываний. Архитектура базовой микросхемы 8051обеспечивает поддержку пяти источников прерываний:

· двух внешних прерываний;

· двух прерываний от таймеров;

· прерывания от последовательного порта.

На рис. 1.4 изображена карта нижней области программной памяти.

Рис. 1.4. Карта нижней области программной памяти

Память программ (ПЗУ)

У микроконтроллеров семейства 8051, память программ и память данных являются самостоятельными и независимыми друг от друга устройствами, адресуемыми различными командами и управляющими сигналами.

Объем встроенной памяти программ, расположенной на кристалле микроконтроллера 8051 , равен 4 Кбайт (в семействе до 32). При обращении к внешней памяти программ все микроконтроллеры семейства 8051 всегда используют 16-разрадный адрес, что обеспечивает им доступ к 64 Кбайт ПЗУ. Микроконтроллер обращается к программной памяти при чтении кода операции и операндов (используя счетчик команд PC), а также при выполнении команд копирования байта из памяти программ в аккумулятор. При выполнении команд копирования данных адресация ячейки памяти программ, из которой будут прочитаны данные, может осуществляться с использованием как счетчика PC, так и специального двухбайтового регистра-указателя данных DPTR.

Память данных (ОЗУ)

Объем расположенной на кристалле памяти данных - 128 байт. Объем внешней памяти данных может достигать 64 Кбайт. Первые 32 байта организованы в четыре банка регистров общего назначения, обозначаемых соответственно банк 0 - банк 3. Каждый из них состоит из восьми регистров R0–R7. В любой момент программе доступен, при регистровой адресации, только один банк регистров, номер которого содержится в третьем и четвертом битах слова состояния программы PSW .

Адреса битовой области памяти микроконтроллера 8051

Таблица 1.1

Адрес байта (Hex) Адреса битов по разрядам
D7 D6 D5 D4 D3 D2 D1 D0
2F 7F 7E 7D 7C 7B 7A
2E
2D 6F 6E 6D 6C 6B 6A
2C
2B 5F 5E 5D 5C 5B 5A
2A
4F 4E 4D 4C 4B 4A
3F 3E 3D 3C 3B 3A
2F 2E 2D 2C 2B 2A
1F 1E 1D 1C 1B 1A
0F 0E 0D 0C 0B 0A
20h

Оставшееся адресное пространство может конфигурироваться разработчиком по своему усмотрению: в нем можно разместить стек, системные и пользовательские области данных. Обращение к ячейкам памяти данных возможно двумя способами. Первый способ - прямая адресация ячейки памяти. В этом случае адрес ячейки является операндом соответствующей команды. Второй способ - косвенная адресация с помощью регистров-указателей R0 или R1: перед выполнением соответствующей команды в один из них должен быть занесен адрес ячейки, к которой необходимо обратиться.

Для обращения к внешней памяти данных используется только косвенная адресация с помощью регистров R0 и R1 или с помощью 16-разрядного регистра-указателя DPTR.

Часть памяти данных представляет собой битовую область, в ней имеется возможность при помощи специальных битовых команд адресоваться к каждому разряду ячеек памяти. Адрес прямо адресуемых битов может быть записан также в виде (АдресБайта).(Разряд). Соответствие этих двух способов адресации можно определить по табл. 1.1.

В настоящее время различными фирмами выпускается множество модификаций и аналогов этого семейства, как фирмой Intel, так и другими производителями, тактовая частота и объем памятивозросли в десятки раз и продолжают повышаться. Дополняется и набор встроенных в БИС модулей, в большое число современных моделей встроен рези- дентный быстродействующий АЦП, имеющий до 12, а сейчас может быть и более разря- дов. Но в основе семейства МСS51 БИС 8051, 80С51, 8751, 87С51, 8031, 80С31 фирмы Intel, первые образцыкоторыхбыли выпущеныв 1980 году.

Микроконтроллеры семейства MCS51 выполнены по высококачественной n-МОП технологии (серия 8ХХХ, аналог - серия 1816 в России и Белоруссии) и k-МОП техноло- гии (серия 8ХСХХ, аналог - серия 1830). Второй символ, следующий за 8 означает: 0 – РПЗУ на кристалле нет, 7 – РПЗУ объемом 4К с ультрафиолетовым стиранием. Третий символ: 3 – ПЗУ накристалленет, 5 – если нетРПЗУ, то на кристалле масочное ПЗУ.

И так 80С51 – БИС по k-МОП технологии с масочным ПЗУ на кристалле, 8031 – БИС n-МОП без памяти программ (ПЗУ, РПЗУ) на кристалле, 8751 – БИС n-МОП с ре- зидентным (размещенным на кристалле) РПЗУ с ультрафиолетовым стиранием. Мы да- лее и будем рассматривать БИС 8751, делая, если нужно оговорки об отличиях других схем, приводя те параметры, которые были опубликованы для первых серийных БИС. Дополнительную информацию о всех современных модификациях Вы, при необходимо- сти, можете найти в фирменных справочниках и технической документации.

А. Общие характеристики и назначение выводов

Основу семейство MCS51 составляет пять модификаций МК (имеющих идентич- ные основные характеристики), основное различие между которыми состоит в реали- зации памяти программ и мощности потребления (см. таблицу 3.1). Микроконтоллер восьмиразрядный, т.е. имеет команды обработки восьмиразрядных слов, имеет Гарвард- скую архитектуру, тактовая частота у базовых образцов семейства составляет 12 МГц.

Таблица 3.1.

Микро- схемы

Внутренняя память про- грамм, байт

Тип памяти программ

Внутренняя память данных, байт

Тактовая частота, МГц

Ток потреб- ления, мА

МК 8051 и 80С51 содержат масочно-программируемое при изготовлении кристалла ПЗУ памяти программ емкостью 4096 байт и рассчитаны на применение в массовой продукции. МК 8751 содержит РПЗУ емкостью 4096 байт с ультрафиолетовым стиранием и удобна на этапе разработки системы при отладке программ, а также при производстве не- большими партиями или при создании систем, требующих в процессе эксплуатации пе-

риодической подстройки.

МК 8031 и 80С31 не содержат встроенной памяти программ. Они, как и описанные ранее модификации могут использовать до 64 Кбайт внешней памяти программ и эффек- тивно использоваться в системах, требующих существенно большего по объему (чем 4 Кбайт на кристалле) ПЗУ памяти программ.

Каждый МК семейства содержит резидентную память данных емкостью 128 байт с возможностью расширения общего объема оперативной памяти данных до 64 Кбайт за счет использования внешних ИС ОЗУ.

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

    память программ объемом 4 Кбайт (только 8751 и 87С51);

    память данных объемом 128 байт;

    четыре восьмиразрядных программируемых порта ввода-вывода;

    два 16-битовых многорежимных таймера/счетчика;

    систему автовекторных прерываний с пятью векторами и двумя программно управ- ляемыми уровнями приоритетов;

    последовательный интерфейс, включающий универсальный дуплексный приемопе- редатчик, способный функционировать в четырех режимах;

    тактовый генератор.

Система команд МК содержит 111 базовыхкомандс форматом1, 2, или 3 байта. Микроконтроллер имеет:

    32 регистра общего назначения РОН, организованных как четыре банка по восемь регистров с именами R0… R7, выбор того или иного банка определяется программой пу- тем установки соответствующих бит в регистре состояния программы PSW;

    128 программно-управляемых флагов (битовый процессор, см. далее);

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

1). Общий сброс. 2).Нормальное функционирование. 3).Режим пониженно- го энергопотребления и режимхолостого хода. 4). Режим программирования ре- зидентного РПЗУ, если оно есть.

Мы здесь основное внимание уделим первым двум режимам работы, подробное описаниесоставаи работыМКвовсех режимахприведено в приложенииП1.

РОН и зона битового процессора расположены в адресном пространстве рези- дентной ОЗУ с адресами от 0 до80h.

В верхней зоне адресов резидентной оперативной памяти расположены регистры спе- циальных функций (SFR, Special Function Registers). Их назначение приведено в табл. 3.2.

Таблица 3.2.

Обозначение

Наименование

Аккумулятор

Регистр В

Регистр состояния программы

Указатель стека

Указатель данных. 2 байта:

Младший байт

Старший байт

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

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

Регистр режимов таймера/счетчика

Регистр управления таймера/счетчика

Таймер/счетчик 0. Старший байт

Таймер/счетчик 0. Младший байт

Таймер/счетчик 1. Старший байт

Таймер/счетчик 1. Младший байт

Управление последовательным портом

Буфер последовательного порта

Управление потреблением

* - регистры, допускающие побитовую адресацию

Кратко рассмотрим функции регистров SFR, приведенных в таблице 3.2.

Аккумулятор АCC - регистр аккумулятора. Команды, предназначенные для рабо-

ты с аккумулятором, используют мнемонику "А", например, MOV А, Р2 . Мнемоника "АСС" используется, к примеру, при побитовой адресации аккумулятора. Так, символи- ческое имя пятого бита аккумулятора при использовании ассемблера А5М51 будет сле- дующим: АСС. 5. .

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

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

Таблица 3.3.

Обозначение

Таблица 3.4.

Обозна- чение

Назначение битов

Доступ к биту

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

Аппаратно или программно

Флаг дополнительного переноса. Аппаратно уста- навливается/сбрасывается во время выполнения инструкций сложения или вычитания для указания переноса или заема в бите 3 при образовании младшего полубайта результата (D0-D3).

Аппаратно или программно

Флаг 0. Флаг, определяемый пользователем.

Программно

Программно

Указатель банка рабочих регистров

Программно

Банк 0 с адресами (00Н - 07Н) Банк 1 с адресами (08Н – 0FН) Банк 2 с адресами (10Н - 17Н) Банк 3 с адресами (18Н – 1FН)

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

Аппаратно или программно

Резервный. Содержит триггер, доступный по запи- си и чтению, который можно использовать

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

Аппаратно или программно

Указатель стека - 8-битовый регистр, содержимое которого инкрементирует- ся перед записью данных в стек при выполнении команд PUSH и CALL. При начальном сбросе указатель стека устанавливается в 07Н, а область стека в ОЗУ данных начинается с адреса 08Н. При необходимости путем переопределения указателя стека область стека может быть расположена в любом месте внутреннего ОЗУ данных микроконтроллеры.

Указатель данных DPTR состоит из старшего байта (DPH) и младшего байта

(DPL). Содержит 16-битовый адрес при обращении к внешней памяти. Может использо-

ваться как 16-битовый регистр или как два независимых восьмибитовых регистра.

Порт0 - ПортЗ. Отдельными битами регистров специальных функций Р0, Р1, Р2, РЗ являются биты -"защелки" выводов портовР0, Р1, Р2, РЗ.

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

Регистры таймера. Регистровые пары (ТН0, ТL0) и (ТН1, TL1) образуют 16-

битовые счетные регистры соответственно таймера/счетчика 0 и таймера/счетчика 1.

Регистры управления. Регистры специальных функций IР, IЕ, ТМOD, ТСОN, SCON и РСОN содержат биты управления и биты состояния системы прерываний, тай-

меров/счетчиков и последовательного порта. Они будут подробно рассмотрены далее.

RxD TxD INT0 INT1 T0 T1 WR

P1.2 P1.3 P1.4 P1.5 P1.6 P1.7

RST BQ2 BQ 1 EA

P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7

P2.0 P2.1 P2.2 P2.3 P2.4 P2.5 P2.6 P2.7

P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7

МК при функционировании обеспечивает:

    минимальное время выполнения команд сложения-1 мкс;

    аппаратное умножение и деление с минимальным време- нем выполнения - 4 мкс.

В МК предусмотрена возможность задания частоты внутреннего генератора с помощью кварца, LС-цепочки или внешнего генератора.

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

Важнейшей и отличительной чертой архитек- туры семейства MCS51 является то, что АЛУ может наряду с выполнением операций над 8-разрядными типами данных манипулировать одноразрядными данными. Отдельные программно-доступные биты могут быть установлены, сброшены или заменены их дополнением, могут пересылаться, проверяться и

Рис.3.2. Внешние выводы

микроконтроллера

использоваться в логических вычислениях. Тогда как поддержка простых типов данных (при сущест-

вующей тенденции к увеличению длины слова) может с первого взгляда показаться ша- гом назад, этокачестводелает микроконтроллеры семействаMCS51 особенно удобными для применений, в которых используются контроллеры. Алгоритмы работы по- следних по своей предполагают наличие входных и выходных булевых переменных, которые сложно реализовать при помощи стандартных микропроцессоров. Все эти свой- ства в целом называются булевым процессором семейства MCS51. Благодаря такому мощному АЛУ набор инструкций микроконтроллеры семейства MCS51 одинаково хоро- шо подходит как для применений управления в реальном масштабе времени, так и для ал- горитмов с большим объемом данных.

Схемотехническое изображение микроконтроллера представлено на рис. 3.2. В ба- зовом варианте он упакован в 40-выводной DIP корпус. Рассмотрим назначение выводов.

Начнем с выводов питания «0 В» и «5 В» , по которым он получает основное пита- ние. Ток потребления приведен в табл. 3.1.

Вывод «RST» - сброс микроконтроллера. При подаче на этот вывод активного вы- сокого уровня запускается режим общего сброса и МК производит следующие действия:

Устанавливает счетчик команд PC и все регистры специальных функций, кроме защелок портов Р0-РЗ, указателя стека SP и регистра SBUF, в ноль;

    указатель стека принимает значение равное 07Н;

    запрещает все источники прерываний, работу таймеров-счетчиков и последовательного

    выбирает БАНК 0 ОЗУ, подготавливает порты Р0-РЗ для приема данных и опре-

деляет выводы ALE и РМЕ как входы для внешней синхронизации;

      в регистрах специальных функций PCON, IP и IE резервные биты при- нимают случайные значения, а все остальные биты сбрасываются в ноль;

      в регистре SBUF устанавливаются случайные значения.

      устанавливает фиксаторы-защелки портов Р0-РЗ в "1".

Состояния регистров микроконтроллера после сброса приведены в таблице 3.5.

Таблица 3.5.

Информация

Неопределенная

0ХХХ0000В для k-MOП 0XXXXXXXB для n-МОП

Вывод RST имеет и альтернативную функцию. Через него подается резервное питания для сохранения неизменным содержимого ОЗУ микроконтроллера при снятии основного.

Выводы BQ1, BQ2 предназначены для подключения кварцевого резонатора, оп- ределяющего тактовую частоту работы МК.

Вывод ЕА` (E xternal A dress внешний адрес) - предназначен для активизации ре- жима чтенияуправляющих кодов из внешней памяти программ, при подаче на этот вывод активного низкогоуровня. Вывод имеет иальтернативное назначение (функцию). На него подается напряжение программирования РПЗУ в режиме программирования.

Вывод PME (P rogram M emory E nable разрешение памяти программ ) - предна- значен для управления циклом чтения из памяти программ и автоматически активизиру- ется МК в каждом машинном цикле.

Вывод ALE (A dress L ength E nable разрешение младшего адреса) стробирует вы- вод младшей части адреса по порту Р0. Вывод используется и при программировании РПЗУ, при этом на него подается стробирующий процесс программирования импульс.

МК содержит четыре группы портов: Р0, Р1, Р2, и Р3. Это оставшиеся из 40-авыводов микроконтроллера. Эти порты могут служитьдля побитного ввода – вывода информации, но помимо этого каждый из них имеет свою специализацию. Обобщенная функциональная схе- ма порта представлена на рис. 3.3. Порт содержит выходные ключи на полевых транзисторах, подключенные к выводу, переключатель функций, защелку на D-триггере и логику управле- ния. Взащелку по внутреннейшине МК можетбытьзаписана единица илиноль. Эта инфор- мация через переключатель функций поступает на выходные ключи и вывод МК. В состоя- нии единицы оба транзистора N и N1 закрыты, но открыт N2. В состоянии нуля N открывает-

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

быть предварительно записана

От внутрен-

Управление Защелка

Переключатель функций

Vcc

Выходные

единица. При активизации линии «чтение защелки» на выходе ячейки «И», к которой подключенаэта линияпоявля-

ней шины МК D Q

Запись в защелку C Q

Чтение защелки

Вывод порта

ется состояние защелки, по- ступающее на внутреннюю шину МК, при активизации

«чтение вывода» - состояние внешнего вывода порта.

Порт Р0 – универсаль- ный двунаправленный порт

ввода-вывода. За этим портом

закреплена функция организа- ции внешних шин адресов и

Рис. 3.3. Функциональная схема порта микроконтроллера

данных для расширенияпамя- ти программ и памяти данных

микроконтроллера. Когда идет обращение к внешней памяти программ или выполняется ко- манда обращения к внешней памяти данных, на выводах порта устанавливается младшая часть адреса (А0…А7), которая стробируется высоким уровнем на выводе ALE. Затем, при записи в память данных, записываемая информация с внутренней шины МК поступает на выводы порта Р0. В операциях чтения, наоборот, информация с выводов порта поступает на внутреннюю ши- ну. Особенностью порта Р0 является отсутствие «подтягивающего» транзистора N2, обеспечи- вающего подачу питания на вывод. При записи в защелку порта единицы он просто переводит- ся в высокоимпедансное состояние, что необходимо для нормальной работы шины данных. При необходимости запитывать через вывод какие либо внешние устройства, следует преду- сматривать внешние резисторы от цепей питания на вывод порта.

Порт Р1 – универсальный двунаправленный порт ввода-вывода без альтернатив- ных функций.

Порт Р2 – универсальный двунаправленный портввода-вывода, в качестве альтер- нативной функции осуществляющий выдачу старшей части адреса (А8…А15) при обра- щении к внешней памяти.

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

Р3.0 RxD (R ead eX ternal D ate, читать внешние данные) – вход встроенного после- довательного приемо-передатчика.

Р3.1 ТxD (T ype eX ternal D ate, передавать внешние данные) – выход встроенного последовательного приемо-передатчика.

Р3.2 INT0` (INT errupt, прерывание) – вход внешнего прерывания 0.

Р3.3 INT1` – вход внешнего прерывания 1.

Р3.4 С/T0 – вход нулевого встроенного таймера/счетчика.

Р3.5 С/T1 – вход первого встроенного таймера/счетчика.

Р3.6 WR` (W rite, писать) – вывод управления циклом записи в памяти данных.

Р3.7 RD` (R ead, читать) – вывод управления циклом чтения из памяти данных.

Выводы портаР1, Р2 и Р3 способны в единице выдавать тококоло0.2мА и принимать в нуле ток 3 мА, выводы порта Р0 мощнее и способны в единице выдавать ток около 0.8мА и при- нимать в нуле ток 5 мА. Краткая информация о назначении выводов микроконтроллера приведе- на в таблице 3.6.

Таблица 3.6.

Обозначение

Назначение вывода

8-разрядныи двунаправленный порт Р1. Вход адреса А0-А7 при проверке внутреннего ПЗУ (РПЗУ)

вход/ выход

Сигнал общего сброса. Вывод резервного пита- ния ОЗУ от внешнего источника (для 1816)

8-разрядный двунаправленный порт P3 с допол- нительными функциями

вход/ выход

Последовательные данные приемника - RхD

Последовательные данные передатчика - ТхD

Вход внешнего прерывания 0- INТ0`

Вход внешнего прерывания 1-INT1`

Вход таймера/счетчика 0: - Т0

Вход таймера/счетчика 1: - Т1

Выход стробирующего сигнала при записи во внешнюю память данных: - WR`

Выход стробирующего сигнала при чтении из внешней памяти данных – RD`

Выводы для подключения кварцевого резонато- ра.

выход вход

Общий вывод

8-разрядный двунаправленный порт Р2. Выход адреса А8-А15 в режиме работы с внешней па- мятью. В режиме проверки внутреннего ПЗУ выводы Р2.0 - Р2.6 используются как вход адреса А8-А14. Вывод Р2.7 - разрешение чтения ПЗУ.

вход/ выход

Разрешение программной памяти

Выходной сигнал разрешения фиксации адреса. При программировании РПЗУ сигнал: PROG

вход/ выход

Блокировка работы с внутренней памятью. При программировании РПЗУ подается сигнал UРR

вход/ выход

8-разрядный двунаправленный порт Р0. Шина адреса/данных г работе с внешней памятью. Вы- ход данных D7-D0 в режиме проверки внутрен- него ПЗУ (РПЗУ).

вход/ выход

Вывод питания от источника напряжения +5В

Основой микроконтроллера (см. рис. 1) является 8–ми битовое Арифметическо–Логическое устройство (АЛУ). Память МК имеет Гарвардскую архитектуру, т.е. логически разделена: на память программ – ПП (внутреннюю или внешнюю), адресуемую 16–ти битовым счетчиком команд (СК) и память данных – внутреннюю (Резидентная память данных – РПД) 128 (или 256) байт, а также внешнюю (Внешняя память данных – ВПД) до 64 Кбайт. Физически память программ реализована на ПЗУ (доступна только по чтению), а память данных – на ОЗУ (возможна запись и чтение данных).

Прием и выдача внешних сигналов осуществляется через 4 восьмибитовых порта Р0..Р3. При обращении к внешней памяти программ (ВПП) или памяти данных (ВПД) порты Р0 и Р2 используются как мультиплексированная внешняя шина Адрес/Данные. Линии порта Р3 могут выполнять также альтернативные функции (см. табл. 1).

16–ти битовый регистр DPTR формирует адрес ВПД или базовый адрес Памяти программ в команде преобразования Аккумулятора. Регистр DPTR может также использоваться как два независимых 8–ми битовых регистра (DPL и DPH) для хранения операндов.

8–ми битовый внутренний регистр команд (РК) принимает код выполняемой команды; этот код дешифрируется схемой управления, которая генерирует управляющие сигналы (см. рис. 1).

Обращение к регистрам специальных функций – РСФ (SFR – на рис. 1 они обведены пунктирной линией) возможно только с использованием прямой байтовой адресации в диапазоне адресов от 128 (80h) и более.


Резидентная память данных (РПД) в первых моделях микроконтроллеров семейства MCS–51 имела объем 128 байт. Младшие 32 байта РПД являются одновременно и регистрами общего назначения – РОН (4 банка по 8 РОНов). Программа может обратиться к одному из 8–ми РОНов активного банка. Выбор активного банка РОНов осуществляется программированием двух бит в регистре состояния процессора – PSW.


Таблица 1 – Назначение выводов MCS–51

№ выв. Обозначение Назначение
1..8 Р1 8–ми битовый квазидвунаправленный порт ввода/вывода
9 RST

Сигнал сброса (активный уровень – высокий);

Сигнал RST обнуляет: PC и большинство Регистров Специальных Функций (SFR), запрещая все прерывания и работу таймеров; выбирает Банк РОНов 0; записывает в порты Р0_Р3 "все единицы", подготавливая их на ввод; записывает код 07H в указатель стека (SP);

10..17

8–ми битовый квазидвунаправленный порт ввода/вывода; после записи в соответствующий разряд "1" – выполняет дополнительные (альтернативные) функции:

Вход последовательного порта – RxD;

Выход последовательного порта – TxD;

Вход внешнего прерывания 0 – ~INT0;

Вход внешнего прерывания 1 – ~INT1;

Вход таймера/счетчика 0 – Т0;

Вход таймера/счетчика 1 – Т1;

Выход строб. сигнала при записи в ВПД – ~ WR;

Выход строб. сигнала при чтении из ВПД – ~ RD;

18, 19 X1, X2 Выводы для подключения кварцевого резонатора или LC–контура;
20 GND Общий вывод;
21..28 P2 8–ми битовый квазидвунаправленный порт ввода /вывода; или выход адреса A в режиме работы с внешней памятью (ВПП или ВПД);
29 PME Строб чтения Внешней Памяти Программ, выда–ется только при обращении к внешнему ПЗУ;
30 ALE Строб адреса Внешней памяти (ВПП или ВПД);
31 ЕА Отключение РПП, уровень "0" на этом входе пе–реводит МК на выборку команд только из ВПП ;
39..32 Р0 8–ми битовый двунаправленный порт ввода/ вывода; при обращении к Внешней Памяти выдает адреса A (которые записываются во внешний регистр по сигналу ALE), а затем обменивается байтом синхронно с сигналом ~PME (для команд) или ~WR,~RD (для данных в ВПД), при обращении к Внешней Памяти в регистр порта Р0 записываются все единицы, разрушая хранимую там информацию;
40 Ucc Вывод напряжения питания

Переключение банков РОНов упрощает выполнение подпрограмм и обработку прерываний, т.к. не нужно пересылать в стек содержимое РОНов основной программы при вызове подпрограммы (достаточно в подпрограмме перейти в другой активный банк РОНов).

Обращение к РПД возможно с использованием косвенной или прямой байтовой адресации (прямая байтовая адресация позволяет обратиться только к первым 128-ми байтам РПД).

Расширенная область РПД (у микроконтроллеров семейства MCS-52 и последующих семейств) с адреса 128 (80h) до 255 (FFh) может адресоваться только с использованием косвенного метода адресации.

Таблица 2 – Блок Регистров Специальных Функций (s f r)

Мнемо–код Наименование
0E0h * ACC Аккумулятор
0F0h * B Регистр расширитель аккумулятора
0D0h * PSW Слово состояния процессора
0B0h * P3 Порт 3
0A0h * P2 Порт 2
90h * P1 Порт 1
80h * P0 Порт 0
0B8h * IP Регистр приоритетов прерываний
0A8h * IE Регистр маски прерываний
99h SBUF Буфер последовательного приемо–передатчика
98h * SCON Регистр управления/статуса последовательного порта
89h TMOD Регистр режимов таймеров/счетчиков
88h * TCON Регистр управления/статуса таймеров/счетчиков
8Dh TH1 Таймер 1 (старший байт)
8Bh TL1 Таймер 1 (младший байт)
8Ch TH0 Таймер 0 (старший байт)
8Ah TL0 Таймер 0 (младший байт)
83h DPH Регистр–указатель данных (DPTR) (старший байт)
82h DPL Регистр–указатель данных (DPTR) (младший байт)
81h SP Регистр–указатель стека
87h PCON Регистр управления мощностью потребления

2. ПРОГРАММНАЯ МОДЕЛЬ MCS–51


ТИПЫ КОМАНД MCS–51

Почти половина команд выполняется за 1 машинный цикл (МЦ). При частоте кварцевого генератора 12 МГц время выполнения такой команды – 1 мкс. Остальные команды выполняются за 2 машинных цикла, т.е. за 2мкс. Только команды умножения (MUL) и деления (DIV) выполняются за 4 машинных цикла.

За время одного машинного цикла происходит два обращения к Памяти Программ (внутренней или внешней) для считывания двух байтов команды или одно обращение к Внешней Памяти Данных (ВПД).

3. МЕТОДЫ (СПОСОБЫ) АДРЕСАЦИИ MCS–51

1. РЕГИСТРОВАЯ АДРЕСАЦИЯ – 8–ми битовый операнд находится в РОНе выбранного (активного) банка регистров;

2 НЕПОСРЕДСТВЕННАЯ АДРЕСАЦИЯ (обозначается знаком – #) – операнд находится во втором (а для 16–ти битового операнда и в третьем) байте команды;

3 КОСВЕННАЯ АДРЕСАЦИЯ (обозначается знаком – @) – операнд находится в Памяти Данных (РПД или ВПД), а адрес ячейки памяти содержится в одном из РОНов косвенной адресации (R0 или R1); в командах PUSH и POP адрес содержится в указателе стека SP; регистр DPTR может содержать адрес ВПД объемом до 64К;

4 ПРЯМАЯ БАЙТОВАЯ АДРЕСАЦИЯ – (dir) – используется для обращения к ячейкам РПД (адреса 00h…7Fh) и к регистрам специальных функций SFR (адреса 80h…0FFh);

5 ПРЯМАЯ БИТОВАЯ АДРЕСАЦИЯ – (bit) – используется для обращения к отдельно адресуемым 128 битам, расположенным в ячейках РПД по адресам 20H…2FH и к отдельно адресуемым битам регистров специальных функций (см. табл. 3 и программную модель);

6 КОСВЕННАЯ ИНДЕКСНАЯ АДРЕСАЦИЯ (обозначается знаком – @)– упрощает просмотр таблиц в Памяти Программ, адрес ПП определяется по сумме базового регистра (PC или DPTR) и индексного регистра (Аккумулятора);

7 НЕЯВНАЯ (ВСТРОЕННАЯ) АДРЕСАЦИЯ – в коде команды содержится неявное (по умолчанию) указание на один из операндов (чаще всего на Аккумулятор).

4. ФОРМАТ СЛОВА СОСТОЯНИЯ ПРОЦЕССОРА (PSW)

C – флаг переноса (CARY) или заема, выполняет также функции "булевого Аккумулятора" в командах, оперирующих с битами;

AC – флаг вспомогательного (дополнительного) переноса – устанавливается в "1", если в команде сложения (ADD, ADDC) был перенос из младшей тетрады в старшую (т.е. из 3-го бита в 4-й бит);

F0 – флаг пользователя – устанавливается, сбрасывается и проверяется программно;

RS1 RS0 Банк Адрес (dir)
0 0 0 00h..07h
0 1 1 08h..0Fh
1 0 2 10h..17h
1 1 3 18h..1Fh

RS1,RS0 – Выбор банка регистров:

OV – Флаг арифметического переполнения; его значение определяется операцией "Исключающее ИЛИ" сигналов входного и выходного переносов старшего разряда АЛУ; единичное значение этого флага указывает на то, что результат арифметической операции в дополнительном коде вышел за допустимые пределы: –128…+127; при выполнении операции деления флаг OV сбрасывается, а в случае деления на ноль – устанавливается; при умножении флаг OV устанавливается, если результат больше 255 (0FFH);

Разряд PSW – Резервный, содержит триггер, доступный по записи или чтению;

P – флаг паритета – является дополнением количества единичных битов в аккумуляторе до четного; формируется комбинационной схемой (программно доcтупен только по чтению).

В микроконтроллерах MCS-51 отсутствует флаг "Z". Но в командах условного перехода (JZ, JNZ) проверяется комбинационной схемой текущее (нулевое или ненулевое) содержимое Аккумулятора.

Все команды пересылок и обмена операндов могут осуществляться через Аккумулятор (см. рис. 3). Причем пересылки из/в Внешней Памяти (Памяти Программ или Памяти Данных) могут осуществляться только через Аккумулятор.

Большинство пересылок могут осуществляться также через прямоадресуемый байт (dir). Существуют даже пересылки dir – dir (см. рис. 3).

Отсутствующие пересылки из РОНа в РОН могут быть реализованы как пересылки из РОНа в прямоадресуемый байт dir (с учетом того, что РОНы расположены в начальной области Резидентной Памяти Данных, ячейки которой могут адресоваться как dir).

Команды обмена XCH позволяют пересылать байты без разрушения обоих операндов.

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


Команда вычитание SUBB выполняется только с заемом (т.е. из результата вычитается и флаг Сary). Поэтому для выполнения команды вычитания без заема необходимо предварительно выполнить команду очистки флага С (CLRC).

Команда умножения однобайтовых операндов – MULAB – размещает двухбайтовый (16 бит) результат: младший байт – в Аккумулятор, старший байт – в регистр В.

Результат выполнения команды деления однобайтовых операндов – DIVAB – помещается: частное – а Аккумулятор, остаток – в регистр В.

Арифметическая команда INC добавляет к выбранному операнду единицу. Арифметическая команда DEC вычитает из выбранного операнда единицу. Команда десятичной коррекции Аккумулятора (DAA) помогает складывать двоично-десятичные числа (BCD-числа) без перевода их в шестнадцатеричный формат (hex-формат). Исходные операнды должны быть обязательно в BCD-формате, т.е. в каждой тетраде одного байта находятся только числа от 0 до 9 (там не могут быть шестнадцатеричные числа: A, B, C, D, E, F). Поэтому в одном байте могут находиться числа от 00 до 99 для упакованных BCD-чисел или числа от 0 до 9 для неупакованных BCD-чисел.

Команда DA A – десятичной коррекции выполняет действия над содержимым Аккумулятора после сложения BCD-чисел в процессоре (числа складывались по законам шестнадцатеричной арифметики) следующим образом (см. пример):

· если содержимое младшей тетрады Аккумулятора больше 9 или установлен флаг вспомогательного переноса (AС = 1), то к содержимому Аккумулятора добавляется 6 (т.е. недостающие шесть цифр в hex-формате);

· если после этого содержимое старшей тетрады Аккумулятора больше 9 или установлен флаг C, то число 6 добавляется к старшей тетраде Аккумулятора.

Команду десятичной коррекции DA A не применяют после команды инкремента (INC), потому что команда инкремента не влияет (не изменяет) на флаги С и АС.

Логические команды:

Логическое "И" – ANL,

Логическое "ИЛИ" – ORL,

Логическая команда "ИСКЛЮЧАЮЩЕЕ ИЛИ" – XRL– выполняются в Аккумуляторе (как и арифметические), но имеется возможность выполнить логические команды также и в прямоадресуемом байте (dir). При этом второй операнд может быть:

В Аккумуляторе или

Непосредственный операнд в команде.

Команды вращения (RR A, RL A) и команды вращения через флаг CARY (RRC A, RLC A) циклически сдвигают содержимое Аккумулятора на 1 бит.ресылки битовых операндов осуществляются только через флаг С.

Министерство общего и профессионального образования Российской Федерации Новосибирский Государственный Технический Университет В.Н. Веприк, В.А. Афанасьев, А.И. Дружинин, А.А. Земсков, А.Р. Исаев, О.В. Малявко МИКРОКОНТРОЛЛЕРЫ СЕМЕЙСТВА MCS-51 Учебное пособие по курсам "Микропроцессорные системы" и "Проектирование микропроцессорных систем" для студентов старших курсов факультета автоматики и вычислительной техники всех форм обучения Новосибирск 1997 В.Н. Веприк, В.А. Афанасьев, А.И. Дружинин, А.А. Земсков, А.Р. Исаев, О.В. Малявко. Микроконтроллеры семейства MCS-51: Учебное пособие. - Новосибирск. Предлагаемое Вашему вниманию учебное пособие содержит общее описание архитектуры, функциональных возможностей и системы команд семейства однокристальных микроконтроллеров (Embedded Microcontrollers) MCS-51, производимых фирмой INTEL. Во второй части пособия приводится описание учебного микропроцессорного контроллера УМПК- 51, предлагаемого студентам в качестве объекта исследования при выполнении цикла лабораторных работ. Материал пособия может использоваться при курсовом и дипломном проектировании, а также может быть полезным для инженеров - схемотехников, занимающихся разработкой и эксплуатацией электронной аппаратуры. Авторы выражают глубокую признательность АОЗТ "Новые технологии"- официальному дистрибьютору фирмы INTEL за предоставление материалов, на основе которых выполнена данная работа. Табл.15, ил.25, список лит. 12 назв. Рецензенты: Е.Д. Баран, Г.Г. Матушкин. Работа подготовлена на кафедре вычислительной техники Новосибирский государственный © технический университет 2 ВВЕДЕНИЕ. Семейство 8-разрядных однокристальных микроконтроллеров MCS-51 появилось на мировом рынке в начале восьмидесятых годов. Первые модификации кристаллов (около 7) были выполнены по высококачественной n-МОП (HMOS) технологии и являлись функционально завершенными однокристальными микроЭВМ гарвардской архитектуры, один из основных принципов которой состоит в логическом разделении адресных пространств памяти программ и данных. С развитием полупроводниковой технологии последующие версии микросхем MCS-51 стали изготавливать по более совершенной и низкопотребляющей КМОП (CHMOS) технологии (в активном режиме потребление кристаллов было доведено до 10 50 мА). Система команд MCS-51, ориентированная на реализацию различных цифровых алгоритмов управления, при сохранении некоторой внешней схожести с системой команд предыдущего семейства MCS-48, качественно расширилась, в ней появились принципиальные нововведения: битово-ориентированные операции и адресуемые в памяти данных битовые поля, что дало возможность говорить о реализации на кристалле битового процессора; реализовано исполнение команд умножения, деления и вычитания; усовершенствована работа со стеком; расширена группа команд передачи управления; Система команд стала выглядеть более симметричной, то есть менее зависимой от пересылок данных через аккумулятор. Функциональные возможности встроенных периферийных устройств также расширились за счет введения: двух 16-разрядных таймеров-счетчиков; аппаратного последовательного дуплексного порта; двухуровневой системы прерываний; четырех 8-битовых портов ввода-вывода. Принципиальные изменения в структуре временного цикла работы процессора привели к ускорению работы с внешней памятью программ и данных, а также реакций на внешние и внутренние прерывания. Суммарный размер адресного пространства внешней памяти программ и данных увеличился до 128 Кбайт. 16-разрядные регистры счетчика команд (Program Counter) и указателя данных (Data Pointer) позволили напрямую обращаться ко всему диапазону адресов, что дало разработчикам возможность реализации алгоритмов быстрой обработки крупных массивов данных. Все программно-доступные узлы микроконтроллера были сведены в специальную область памяти данных (Special Function Register), что позволило обращаться к ним почти так же, как и к обычным ячейкам резидентного ОЗУ. В более поздних модификациях кристаллов усовершенствование шло по пути наращивания дополнительных функциональных возможностей с сохранением полной программной совместимости с более ранними версиями. Особенностями последних модификаций микроконтроллеров семейства MCS-51 являются: полностью статический дизайн; 3- и 5-вольтовые версии кристаллов; широкий спектр встроенных периферийных устройств; максимальная тактовая частота - 24 мГц; для отдельных групп кристаллов - 33 мГц. В настоящее время в состав MCS-51 входит около 60 версий кристаллов, кроме того, имеется и доступна подробная фирменная документация (к сожалению, пока мало переведенная на русский язык). Для подготовки математического обеспечения микроконтроллеров MCS-51 используются в основном языки "ASM-51", "С", для которых существуют ряд достаточно хорошо зарекомендовавших себя компиляторов, библиотек стандартных подпрограмм и программных эмуляторов, производимых различными зарубежными и отечественными фирмами. 3 Несмотря на достаточную "древность" семейства (более 15 лет) и появление на мировом рынке за последние годы однокристальных микроконтроллеров большей производительности и усовершенствованной архитектуры - MCS-51, MCS-251, MCS-96, контроллеры MCS-51 еще достаточно долго будут широко использоваться в сравнительно простых встроенных системах управления . 4 1. СИСТЕМА ОБОЗНАЧЕНИЙ КОМПОНЕНТОВ ФИРМЫ INTEL И ФУНКЦИОНАЛЬНЫЙ СОСТАВ СЕМЕЙСТВА MCS-51 Для маркировки микросхем фирмой INTEL применяется система обозначений из нескольких полей: 1 2 3 4 Х ХХ ХХХХХХХХХХХХХХХ ХХХХХХ Первое поле содержит однобуквенный префикс, отражающий температурный диапазон микросхемы: А (Automotive), автомобильное исполнение для расширенного температурного диапазона (-40/+125 С) М (Military), исполнение по военным стандартам (-55/+125 С) Q или С (Commercial), "коммерческий" температурный диапазон (0/+70 С) с (160 8)- часовой динамической термотренировкой; L или Е (Extended), "расширенный" температурный диапазон (-40/+85 С) с (160 8)- часовой динамической термотренировкой; Т (Extended), "расширенный" температурный диапазон (-40/+85 С) без термотренировки; I (Industrial), исполнение по промышленным стандартам. Второе поле содержит одно- или двухбуквенный префикс, указывающий на вариант исполнения корпуса микросхемы (Package Type). Различных типов корпусов микросхем на сегодняшний день несколько десятков, поэтому в качестве примера приведем лишь некоторые обозначения: A Ceramic Pin Grid Array, (PGA); C Ceramic Dual In-Line Package, (CDIP); K Ceramic Quad Flatpack Package, (QFP); KD Plastic Quad Flatpack Package, Fine Pitch, Die Down, (PQFP); KU Plastic Quad Flatpack Package, Fine Pitch, Die Up, (PQFP); N Plastic Leaded Chip Carrier, (PLCC); P Plastic Dual In-Line Package, (PDIP); SM Single In-Line Leadless Memory Module, (SIMM); U Plastic Dual In-Line Package, Shrink Dip, (PDIPS); Z Zigzag In-Line Package, (ZIP). Третье поле может содержать до 15 цифровых и буквенных символов, указывающих на тип конкретного устройства, расположенного на кристалле. Четвертое поле может включать до шести цифровых и буквенных символов, отражающих различные особенности и варианты исполнения микросхем . Дополнительную информацию по типам корпусов и их конструктивному исполнению можно найти в книге: Packaging Order Number 240800. Применительно к описываемым микроконтроллерам семейства MCS-51, первый символ третьего поля традиционно (для фирмы Intel) равен "8". Второй символ третьего поля обычно указывает на тип встроенного ПЗУ: 0 масочное ПЗУ программ; кристалл без ПЗУ (для поздних версий кристаллов); 1 масочное ПЗУ программ (Standard ROM Code, Firmware); 3 масочное ПЗУ (для поздних версий кристаллов), (Customizable ROM Code); 7 УФРПЗУ или однократно-программируемое ПЗУ (EPROM or OTP ROM); 8 ЭСППЗУ (Flash - память на кристалле) Далее может следовать буква, указывающая на технологические особенности изготовления: отсутствие буквы технология HMOS, питание 5В; С технология СHMOS, питание 5В; L технология СHMOS, питание 3В; 5 Следующими символами третьего поля для микроконтроллеров семейства MCS-51 являются номера (например, 31,32,51,54,58,152) и от одной до четырех букв, которые отражают функциональные особенности кристаллов (например, объем ПЗУ, специфику группы кристаллов, наличие системы защиты памяти программ от несанкционированного доступа, возможность использования более совершенного алгоритма программирования "Quick Pulse" и тому подобное). В оригинальной технической документации фирмы Intel все микроконтроллеры семейства MCS-51 скомпонованы по группам ("Product Line"), каждая из которых объединяет наиболее близкие по своим функциональным возможностям и электрическим параметрам версии кристаллов. Поскольку наименования микросхем одной группы различаются незначительно, то для обозначения каждой отдельной группы применяется обобщенная символика, образованная из маркировки конкретных микросхем, путем замены различающихся символов на "Х". Таким образом, можно выделить следующие группы микроконтроллеров. 1. Группа 8Х5Х (8051 Product Line и 8052 Product Line): 8031АН, 8051АН, 8751Н, 8051АНР, 8751Н-8, 8751ВН, 8032АН, 8052АН, 8752ВН. 2. Группа 8ХС51 (80С51 Product Line): 80С31ВН, 80С51ВН, 87С51. 3. Группа 8ХС5Х (8ХС52/54/58 Product Line): 80С32, 80С52, 87С52, 80С54, 87С54, 80С58, 87С58. 4. Группа 8ХС51FX (8XC51FA/FB/FC Product Line): 80C51FA, 83C51FA, 87C51FA, 83C51FB, 87C51FB, 83C51FC, 87C51FC. 5. Группа 8ХL5X (8XL52/54/58 Product Line): 80L52, 87L52, 80L54, 87L54, 80L58, 87L58. 6. Группа 8XL51FX (8XL51FA/FB/FC Product Line): 80L51FA, 83L51FA, 87L51FA, 83L51FB, 87L51FB, 83L51FC, 87L51FC. 7. Группа 8ХС51RX (8XC51RA/RB/RC Product Line): 80C51RA, 83C51RA, 87C51RA, 83C51RB, 87C51RB, 83C51RC, 87C51RC. 8. Группа 8ХC51GB (8XC51GX Product Line): 80C51GB, 83C51GB, 87C51GB. 9. Группа 8ХС152JX (8XC152 Product Line): 80C152JA, 83C152JA, 80C152JB, 80C152JC, 83C152JC, 80C152JD. 10. Группа 8XC51SL (8XC51SL Product Line): 80C51SL-BG, 81C51SL-BG, 83C51SL-BG, 80C51-AH, 81C51SL-AH, 83C51SL-AH, 87C51SL- AH, 80C51SL-AL, 81C51SL-AL, 83C51SL-AL, 87C51SL-AL. Первая группа микроконтроллеров включает в себя младшие модели семейства, выполненные по n-МОП технологии и не рекомендуемые к использованию в новых разработках, все остальные группы выполнены по современной КМОП технологии. Микросхемы второй, третьей и четвертой групп являются на сегодняшний день классическими представителями семейства MCS-51. В пятую и шестую группы входят 3- вольтовые версии кристаллов (Low-Voltage). Кристаллы седьмой группы оснащены расширенным ОЗУ (Expanded RAM), объем которого равен 512 байт. Микросхемы восьмой, девятой и десятой групп представляют собой специализированные по применению микроконтроллеры (Application Specific). Многие современные приложения требуют высокопроизводительных управляющих микроконтроллеров, использующих расширенные возможности адресации, регистровую архитектуру, большой объем внутреннего ОЗУ и стека, а также эффективно поддерживающих программирование на языке высокого уровня. К таким микроконтроллерам относятся микроконтроллеры новой архитектуры (New Architecture) семейств MCS-5 и MCS-251, к производству которых компания Intel приступила в 1995 году. Функциональный состав и ключевые особенности микроконтроллера MCS-51/MCS-251 приведены в приложении. 6 2. ОСНОВНЫЕ ХАРАКТЕРИСТИКИ БАЗОВОЙ МОДЕЛИ СЕМЕЙСТВА МИКРОКОНТРОЛЛЕРОВ MCS-51. Базовой моделью семейства микроконтроллеров MCS-51 и основой для всех последующих модификаций является микроконтроллер I-8051. Его основные характеристики следующие: восьмиразрядный ЦП, оптимизированный для реализации функций управления; встроенный тактовый генератор; адресное пространство памяти программ - 64 К; адресное пространство памяти данных - 64 К; внутренняя память программ - 4 К; внутренняя память данных - 128 байт; дополнительные возможности по выполнению операций булевой алгебры (побитовые операции); 32 двунаправленные и индивидуально адресуемые линии ввода/вывода; 2 шестнадцатиразрядных многофункциональных таймера/счетчика; полнодуплексный асинхронный приемопередатчик; векторная система прерываний с двумя уровнями приоритета и шестью источниками событий . Структурная схема I-8051 показана на рис.1, назначение выводов микросхемы - на рис.2. External interrupts Interrupts 128 bytes T/C 0 counter 4K ROM control RAM T/C 1 inputs CPU BUS 4 I/O Serial OSC control Ports Port P0 P1 P2 P3 T D R D Address/Data Рис.1. Структурная схема I-8051 Вся серия MCS-51 имеет гарвардскую архитектуру, то есть раздельные адресные пространства памяти программ и данных. Организация памяти изображена на рис.3. Объем внутренней (резидентной) памяти программ (ROM, EPROM или OTP ROM), располагаемой на кристалле, в зависимости от типа микросхемы может составлять 0 (ROMless), 4К (базовый кристалл), 8К, 16К или 32К. При необходимости пользователь может расширять память программ установкой внешнего ПЗУ. Доступ к внутреннему или внешнему ПЗУ определяется значением сигнала на выводе ЕА (External Access): EA=Vcc (напряжение питания) - доступ к внутреннему ПЗУ; EA=Vss (потенциал земли) - доступ к внешнему ПЗУ. Для кристаллов без ПЗУ (ROMless) вывод ЕА должен быть постоянно подключен к Vss. Строб чтения внешнего ПЗУ - PS EN (Program Store Enable) генерируется при обращении к внешней памяти программ и является неактивным во время обращения к ПЗУ, расположенному на кристалле. 7 Область нижних адресов памяти программ используется системой прерываний, архитектура микросхемы 8051обеспечивает поддержку пяти источников прерываний: двух внешних прерываний; двух прерываний от таймеров; прерывания от последовательного порта. P1.0 1 40 Vcc P1.1 2 39 P0.0 (AD0) P1.2 3 38 P0.1 (AD1) P1.3 4 37 P0.2 (AD2) P1.4 5 36 P0.3 (AD3) P1.5 6 35 P0.4 (AD4) P1.6 7 34 P0.5 (AD5) P1.7 8 33 P0.6 (AD6) RESET 9 32 P0.7 (AD7) (R D) P3.0 10 31 EA/Vpp (T D) P3.1 11 30 ALE/PROG (INT0) P3.2 12 29 PSEN (INT1) P3.3 13 28 P2.7 (A15) (T0) P3.4 14 27 P2.6 (A14) (T1) P3.5 15 26 P2.5 (A13) (WR) P3.6 16 25 P2.4 (A12) (RD) P3.7 17 24 P2.3 (A11) XTAL2 18 23 P2.2 (A10) XTAL1 19 22 P2.1 (A9) Vss 20 21 P2.0 (A8) Рис.2. Назначение выводов I-8051 Память программ (Чтение) Память данных (Чтение/Запись) FFFFH Внешнее ПЗУ FFFFH Внешняя @DPTR RD память PSEN WR данных @PC MOVC EA=0 Внутренняя память @DPTR данных @PC Внешнее Внутреннее FFH upper 128 SFR MOVX ПЗУ ПЗУ 80H EA=0 0000H EA=1 lower 128 00H 0000H PSEN Рис.3. Организация памяти семейства MCS-51 8 На рис.4 изображена карта нижней области программной памяти. ROM Память программ 0033Н 002BН Serial Port 0023Н Вектора Timer1 001BН прерываний EINT1 0013Н Timer0 000BH EINT0 0003Н Стартовый адрес 0000H (Reset) Рис.4. Программная память Адреса векторов прерываний расположены с интервалом в 8 байт: - 0003Н внешнее прерывание 0 (External Interrupt 0) - вывод IN T 0 ; - 000BН прерывание от таймера 0 (по флагу переполнения таймера - T F 0); - 0013Н внешнее прерывание 1 (External Interrupt 1) - вывод IN T 1 ; - 001BH прерывание от таймера 1 (по флагу переполнения таймера - T F 1); - 0023H прерывание от последовательного порта (Serial Interrupt = Receive Interrupt or Transmit Interrupt); и так далее. Память данных отделена от памяти программ. В этой области возможна адресация 64К внешнего ОЗУ. При обращении к внешней памяти данных ЦП микроконтроллера генерирует соответствующие сигналы чтения (R D) или записи (W R), взаимодействие с внутренней памятью данных осуществляется на командном уровне, при этом сигналы R D и W R не вырабатываются. Внешняя память программ и внешняя память данных могут комбинироваться путем совмещения сигналов R D и PS EN по схеме "логического И" для получения строба внешней памяти (программ/данных). Нижние 128 байт внутренней памяти данных (lower 128) присутствуют на всех кристаллах MCS-51 и показаны на рис.5. Первые 32 байта представляют собой 4 банка (Register Bank) по 8 регистров (R7...R0). Регистры R0 и R1 в любом из банков могут использоваться в качестве регистров косвенного адреса. Следующие за регистровыми банками 16 байт образуют блок побитно-адресуемого пространства. Набор инструкций MCS-51 содержит широкий выбор операций над битами, а 128 бит в этом блоке адресуются прямо и адреса имею значения от 00Н до 7FH. Все байты в нижней 128-байтной половине памяти могут адресоваться как прямо, так и косвенно. Верхняя 128 байтная половина памяти ОЗУ (upper 128) в микросхеме I-8051 отсутствует, но имеется в версиях кристаллов с 256 байтами ОЗУ. В этом случае область "Upper 128" доступна только при косвенной адресации. Область SFR (Special Function Register) доступна только при прямой адресации. Размещение регистров специальных функций в пространстве SFR показано на рис.6. Они включают в себя регистры портов, таймеры, средства управления периферией и так далее. 9 7FH Побайтно-адресуемая область ОЗУ 30H (direct, indirect) 2FH 7FH 7EH 7DH 7CH 7BH 7AH 79H 78H 2EH 77H 76H 75H 74H 73H 72H 71H 70H Побитно-адресуемая область ОЗУ (direct) 21H 0FH 0EH 0DH 0CH 0BH 0AH 09H 08H 20H 07H 06H 05H 04H 03H 02H 01H 00H 1FH RB3 18H 17H RB2 10H 0FH RB1 08H 07H SP после RESET 00H RB0(R7+R0) Рис.5. Нижние 128 байт внутреннего ОЗУ. побитовая адресация 8 байт F8H FFH F0H B F7H E8H EFH E0H ACC E7H D8H DFH D0H PSW D7H C8H CFH C0H C7H B8H IP BFH B0H P3 B7H A8H IE AFH A0H P2 A7H 98H SCON SBUF 9FH 90H P1 97H 88H TCON TMOD TL0 TL1 TH0 TH1 8FH 80H P0 SP DPL DPH PCO 87H N 0/8 1/9 2/A 3/B 4/C 5/D 6/E 7/F Рис.6. Размещение регистров специальных функций в пространстве SFR. Для 16 адресов в пространстве SFR имеется возможность как байтовой, так и битовой адресации. Для побитно-адресуемых регистров шестнадцатеричный адрес заканчивается на "0Н" или на "8Н". Битовые адреса в этой области имеют значения от 80Н до FFH. Вся серия кристаллов семейства MCS-51 имеет базовый набор SFR, как и в микросхеме I- 8051, расположенный по тем же адресам. Однако в кристаллах, представляющих собой дальнейшее развитие семейства в область SFR, добавляются новые регистры для расширения 10

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

БИС семейства MCS-51 - 8-разрядная ОМЭВМ: ПЗУ, ОЗУ, регистры специального назначения, АЛУ и внешние шины имеют байтовую организацию. Двухбайтовые данные используются только регистром-указателем (DPTR) и счетчиком команд (РС). Следует отметить, что регистр-указатель данных может быть использован как двухбайтовый регистр DPTR или как два однобайтовых регистра специального назначения DPH и DPL. Счетчик команд всегда используется как двухбайтовый регистр.

Набор команд ОМЭВМ имеет 42 мнемонических обозначения команд для конкретизации 33 функций этой системы.

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

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

Существуют следующие типы адресации операндов-источников:

  • Косвенно-регистровая адресация по сумме базового и индексного регистров

Таблица обозначений и символов, используемых в системе команд

Обозначение, символ Назначение
А Аккумулятор
Rn Регистры текущего выбранного банка регистров
r Номер загружаемого регистра, указанного в команде
direct Прямо адресуемый 8-битовый внутренний адрес ячейка данных, который может быть ячейкой внутреннего ОЗУ данных (0-127) или SFR (128-255)
@Rr Косвенно адресуемая 8-битовая ячейка внутреннего ОЗУ данных
data8 8-битовое непосредственное данное, входящее в КОП
dataH Старшие биты (15-8) непосредственных 16-битовых данных
dataL Младшие биты (7-0) непосредственных 16-битовых данных
addr11 11-битовый адрес назначения
addrL Младшие биты адреса назначения
disp8 8-битовый байт смещения со знаком
bit Бит с прямой адресацией, адрес которого содержит КОП, находящийся во внутреннем ОЗУ данных или SFR
a15, a14...a0 Биты адреса назначения
(Х) Содержимое элемента Х
((Х)) Содержимое по адресу, хранящемуся в элементе Х
(Х)[M] Разряд М элемента Х

+
-
*
AND
OR
XOR
/X
Операции:
сложения
вычитания
умножения
деления
логического умножения (операция И)
логического сложения (операция ИЛИ)
сложения по модулю 2 (исключающее ИЛИ)
инверсия элемента Х

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

Мнемоника Функция Флаги
Команда ACALL Абсолютный вызов подпрограммы
Сложение AC, C, OV
Сложение с переносом AC, C, OV
Команда AJMP Абсолютный переход
Логическое "И"
Логическое "И" для переменных-битов C
Сравнение и переход, если не равно C
Команда CLR A Сброс аккумулятора
Команда CLR Сброс бита C, bit
Команда CPL A Инверсия аккумулятора
Команда CPL Инверсия бита C, bit
Команда DA A Десятичная коррекция аккумулятора для сложения AC, C
Команда DEC <байт> Декремент
Команда DIV AB Деление C, OV
Команда DJNZ <байт>, <смещение> Декремент и переход, если не равно нулю
Команда INC <байт> Инкремент
Команда INC DPTR Инкремент указателя данных
Команда JB , Переход, если бит установлен
Команда JBC , Переход, если бит установлен и сброс этого бита
Команда JC Переход, если перенос установлен
Команда JMP @A+DPTR Косвенный переход
Команда JNB , Переход, если бит не установлен
Команда JNC Переход, если перенос не установлен
Команда JNZ Переход, если содержимое аккумулятора не равно нулю
Команда JZ Переход, если содержимое аккумулятора равно 0
Команда LCALL Длинный вызов
Команда LJMP Длинный переход
Переслать переменную-байт
Переслать бит данных C
Команда MOV DPTR,#data16 Загрузить указатель данных 16-битовой константой
Команда MOVC A,@A+() Переслать байт из памяти программ
Переслать во внешнюю память (из внешней памяти) данных