Микроконтроллеры MCS–51. Cтруктурная схема, АЛУ, память данных. Микроконтроллеры MCS–51: программная модель, структура, команды Регистр слова состояния программы и его флаги
- Арифметические команды;
- Логические команды;
- Команды передачи данных;
- Команды битового процессора;
- Команды ветвления и передачи управления.
- Регистровая адресация
- Прямая адресация
- Косвенно-регистровая адресация
- Непосредственная адресация
- Косвенно-регистровая адресация по сумме базового и индексного регистров
Обозначение, символ | Назначение |
А | Аккумулятор |
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 | Абсолютный вызов подпрограммы | |
Команда ADD A, <байт-источник> | Сложение | AC, C, OV |
Команда ADDC A, <байт-источник> | Сложение с переносом | AC, C, OV |
Команда AJMP | Абсолютный переход | |
Команда ANL <байт-назначения>, <байт-источникa> | Логическое "И" | |
Команда ANL C, <байт-источникa> | Логическое "И" для переменных-битов | |
Команда CJNE <байт-назначения>, <байт-источник>, <смещение> | Сравнение и переход, если не равно | 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 | Длинный переход | |
Команда MOV <байт-назначения>, <байт-источника> | Переслать переменную-байт | |
Команда MOV <бит-назначения>, <бит-источника> | Переслать бит данных | C |
Команда MOV DPTR,#data16 | Загрузить указатель данных 16-битовой константой | |
Команда MOVC A,@A+( | Переслать байт из памяти программ | |
Команда MOVX <байт приемника>, <байт источника> | Переслать во внешнюю память (из внешней памяти) данных | |
Команда MUL AB | Умножение | C, OV |
Команда NOP | Нет операции | PC |
Команда ORL <байт-назначения>, <байт-источникa> | Логическое "ИЛИ" для перемнных-байтов | |
Команда ORL C, <бит источникa> | Логическое "ИЛИ" для переменных-битов | C |
Команда POP | Чтение из стека | |
Команда PUSH | Запись в стек | |
Команда RET | Возврат из подпрограммы | |
Команда RETI | Возврат из прерывания | |
Команда RL A | Сдвиг содержимого аккумулятора влево | |
Команда RLC A | Сдвиг содержимого аккумулятора влево через флаг переноса | |
Команда RR A | Сдвиг содержимого аккумулятора вправо | |
Команда RRC A | Сдвиг содержимого аккумулятора вправо через флаг переноса | C |
Команда SETB | Установить бит | C |
Команда SJMP <метка> | Короткий переход | |
Команда SUBB A, <байт источника> | Вычитание с заемом | AC, C, OV |
Команда SWAP A | Обмен тетрадами внутри аккумулятора | |
Команда XCH A, <байт> | Обмен содержимого аккумулятора с переменной-байтом | |
Команда XCHD A,@R1 | Обмен тетрадой | |
Команда XRL <байт-назначения>, <байт-источникa> | Логическое "ИСКЛЮЧАЮЩЕЕ ИЛИ" для перемнных-байтов |
УДК 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.
Базовая версия MCS–51 Краткие сведения. Современные 8–разрядные микроконтроллеры (МК) обладают такими ресурсами управления в режиме реального времени, для получения которых раньше использовались дорогие многокристальные компоновки в виде отдельных плат микроЭВМ, A именно:
● имеют достаточную емкость памяти, физическое и логическое ее разделение на память программ и память данных (гарвардскую архитектуру) и систему команд, ориентированную на выполнение алгоритмов управления;
● включают в себя все устройства (процессор, ПЗУ, ОЗУ, порты ввода–вывода, систему прерываний, средства обработки битовой информации и др.), необходимые для реализации микропроцессорной системы управления минимальной конфигурации. В 70–е годы прошлого столетия фирмой Intel разработан и освоен промышленный выпуск семейства 8–разрядных микроконтроллеров MCS–48, объединенных рядом общих признаков (разрядностью, системой команд, набором основных функциональных блоков и др.). Базовая версия этого семейства включает в себя:
● 8–разрядный процессор;
● внутреннюю память программ (1/2/4К байт);
● внутреннюю память данных (64/128/256 байт);
● до 27 внутренних и 16 внешних линий ввода–вывода;
● один 8–разрядный таймер–счетчик;
● одноуровневую систему прерываний с двумя источниками запросов. В 1980 г. той же фирмой было разработано новое семейство восьмиразрядных микроконтроллеров MCS–51, которое совместимо с архитектурой семейства MCS–48, но обладает более широкими возможностями.
Архитектура семейства MCS–51 оказалась настолько удачной, что и по настоящее время является одним из стандартов 8–разрядных МК. Поэтому объектом изучения выбраны МК этого семейства, получившие широкое распространение в сравнительно простых системах управления.
Для семейства MCS–51 разработаны различные средства подготовки программ (компиляторы, аппаратно–программные эмуляторы и др.) и имеется большое число библиотек стандартных подпрограмм. В состав семейства входят разнообразные модификации микросхем (версии кристаллов) микроконтроллеров. В статьях этого раздела достаточно подробно рассматривается базовая версия микроконтроллеров семейства MCS–51 (микросхеме 8051 соответствует отечественный аналог КP1816ВЕ51), наиболее простая в структурно–функциональном плане и с точки зрения понимания.
Последующие серии микросхем, сохраняя совместимость с базовой версией, отличаются от нее улучшенной технологией изготовления, электрическими параметрами, дополнительными аппаратными средствами и функциональными возможностями. Структурно–функциональным особенностям последующих модификаций микросхем семейства MCS–51 посвящены следующие статьи.
Обобщенная структурная схема MCS–51. В состав МК, обобщенная структурная схема которого приведена на рис. 7.1.1, входят:
● 8–разрядный центральный процессор ЦП, состоящий из АЛУ , устройства управления УУ и формирователя адреса ФА ;
● масочное ПЗУ емкостью 4К байта для хранения программ;
● ОЗУ емкостью 128 байт для хранения данных;
● четыре программируемых порта Р0–Р3 для ввода–вывода информации;
● блок последовательного интерфейса БПИ для обмена информацией с внешними устройствами по двухпроводной линии;
● блок таймеров/счетчиков БT/C для поддержания режима реального времени;
● блок прерываний БП для организации прерываний исполняемых программ. Эти средства образуют резидентную часть микроконтроллера, размещенную непосредственно на кристалле. В состав МК входит большое число регистров, которые отнесены к отдельным функциональным блокам и на схеме не показаны.
На схеме также не показаны цепи управления. Двусторонний обмен информацией между блоками осуществляется по внутренней 8–разрядной шине данных ШД–8.
По внутренней 16–разрядной шине адреса ША–16 сформированный в ЦП адрес выводится в ПЗУ (12 разрядов адреса) и в ОЗУ (8 младших разрядов).
При использовании внешней памяти в порт Р0 выводятся 8 младших разрядов адреса и в порт P2 - 3 или 8 старших разрядов.
Для логического расширения интерфейса используется совмещение функций линий портов. В качестве примера на рис. 7.1.1 пунктиром показаны линии порта Р3, выполняющие альтернативные
функции передачи управляющих сигналов, о назначении которых будет сказано ниже. Для создания внутреннего тактового генератора к выводам микросхемы МК подключаются кварцевый резонатор и два конденсатора (рис. 7.1.1). Вместо внутреннего тактового генератора для синхронизации можно использовать внешний источник колебаний. Условное графическое обозначение микросхемы МК приведено на рис. 7.1.2, обозначение и назначение выводов - в табл. 7.1.1. Рассмотрим функциональные блоки МК и принцип их работы. Арифметическо–логическое устройство. Арифметическо–логическое устройство предназначено для выполнения арифметических (включая умножение и деление) и логических операций над восьмиразрядными операндами, A также операций логического сдвига, обнуления, установки и др. Структурная схема АЛУ приведена на рис. 7.1.3.
В состав АЛУ входят
● параллельный восьмиразрядный сумматор SМ комбинационного типа с последовательным переносом, выполняющий арифметические (сложение и вычитание) и логические (сложение, умножение, неравнозначность и тождественность) операции;
● аккумулятор A, обеспечивающий функции основного арифметического регистра;
● регистр В, используемый для реализации операций умножения и деления или как дополнительный сверхоперативный регистр, функции которого определяет пользователь;
●регистры (программно недоступные) временного хранения РВХ1, РВХ2, предназначенные для приема и хранения операндов на время выполнения операции;
● ПЗУ констант ПЗУК, хранящее корректирующий код для двоично–десятичного представления данных, код маски при битовых операциях и код констант;
● регистр слова состояния программы
PSW, фиксирующий состояние АЛУ после выполненной операции. В табл. 7.1.2 приведены сведения о назначении битов отдельных разрядов регистра PSW. Устройство управления. Устройство управления (УУ) центрального процессора предназначено
для координации совместной работы всех узлов МК с помощью вырабатываемых синхроимпульсов и управляющих сигналов. В его состав входят (рис. 7.1.4):
● узел синхронизации и управления УСУ, который формирует синхроимпульсы, задающие машинные циклы и их отдельные состояния (S) и фазы (Р), и в зависимости от режима работы МК вырабатывает необходимый набор управляющих сигналов. На выполнение команды отводится один, два или четыре машинных цикла.
Каждый машинный цикл имеет шесть состояний S1–S6, A каждое состояние включает в себя две фазы P1, P2, длительность которых составляет период колебаний тактового генератора T 0SC .
Длительность машинного цикла равна 12T 0SC . Все машинные циклы одинаковые, начинаются с фазы S1P1 и заканчиваются фазой S6P2.
Помимо синхроимпульсов устройство синхронизации в каждом машинном цикле формирует два (иногда один) сигнала стробирования младшего байта адреса ALE в виде положительного импульса в фазах S1P2–S2P1 и S4P2–S5P1. Временные диаграммы на рис. 7.1.5 иллюстрируют организацию машинных циклов;
● регистр команд РК, дешифратор команд ДК и ПЛМ, позволяющие в каждом машинном цикле сформировать набор микроопераций в соответствии с микропрограммой выполняемой команды;
● логика ввода–вывода ЛВВ для приема и выдачи сигналов, обеспечивающих обмен информацией МК с внешними устройствами через порты Р0–Р3;
● регистр PCON, имеющий единственный задействованный бит SMOD в позиции PCON.7 для удвоения скорости передачи данных через последовательный порт. Остальные биты зарезервированы для дальнейшего использования.
Формирователь адреса. Формирователь адреса (ФА), или счетчик команд РС, предназначен
для формирования текущего 16–разрядного адреса программной памяти и 8/16–разрядного адреса внешней памяти данных. В его состав входят (рис. 7.1.6):
● 16–разрядный буфер Б, осуществляющий связь между 8–разрядной шиной данных ШД и 16–разрядной внутренней шиной (ВШ) формирователя адреса;
● схема инкремента СИ для увеличения значения текущего адреса памяти программ на единицу;
● регистр для хранения текущего адреса команд РТА, поступающего из СИ;
● регистр указателя данных DPTR, состоящий из двух 8–разрядных регистров DPHи DPL. Он служит для хранения 16–разрядного адреса внешней памяти данных и может быть использован в качестве двух независимых программно доступных РОН;
● регистр формирователя адреса РФА для хранения исполнительного 16–разрядного адреса памяти программ или 8/16–разрядного адреса внешней памяти данных. Этот регистр используется также для передачи данных через порт Р0 во внешние устройства при выполнении команд MOVX @Rm, A и MOVX @DPRT, A.
Память данных. Память данных предназначена для приема, хранения и выдачи информации, используемой в процессе выполнения программы. Внутренняя (резидентная) память (рис. 7.1.7) данных состоит из ОЗУ емкостью 128 байт, указателя стека SP, регистра адреса ОЗУ РА и дешифратора Дш. Указатель стека SP представляет собой 8–разрядный регистр, предназначенный для приема и хранения адреса ячейки стека, к которой было последнее обращение. После сброса в указателе стека устанавливается адрес 07Н, что соответствует началу стека с адресом 08Н. Регистр адреса РА совместно с дешифратором Дш позволяет осуществить доступ к требуемой ячейке памяти, содержащей байт или бит информации.
В МК предусмотрена возможность увеличения объема памяти данных до 64 Кбайт путем подключения внешних запоминающих устройств.
В качестве примера на рис. 7.1.8 показана страничная организация внешней памяти данных ВПД емкостью 2К байт с использованием команд типа MOVX @
Rm(m = 0; 1). При этом порт Р0 работает как мультиплексированная шина адрес/данные, три линии порта P2 используются для адресации страницы внешнего ОЗУ, A остальные пять линий могут быть задействованы в качестве линий ввода–вывода.
На рис. 7.1.9 приведены временные диаграммы циклов чтения и записи при работе МК с внешним ОЗУ. На диаграммах обозначено:
● РСН - старший байт счетчика команд PC;
● DPL, DPH - младший и старший байты регистра указателя данных DPTR, который используется в качестве регистра для косвенной адресации в командах MOVX @DPTR,A и MOVX A,@DPTR;
● P2 SFR - защелки порта P2;
● Rm (m = 0, 1) - регистры, используемые в командах MOVX @Rm, A и MOVX A, @Rm в качестве регистров косвенного адреса;
● Z - высокоомное состояние;
● D - период, в течение которого данные из порта Р0 вводятся в микроконтроллер. Память программ. Память программ предназначена для хранения программ, имеет свое (отдельно от памяти данных) адресное пространство и доступна только для чтения. В ее состав входит дешифратор Дш и ПЗУ (рис. 7.1.10). Для адресации памяти программ используется 16–разрядный счетчик РС, поэтому ее максимальная емкость составляет 64К байта. Внутренняя память программ состоит из ПЗУ емкостью 4К байт и 12–разрядного дешифратора. Внешняя память подключается по схеме на рис. 7.1.11. Если на вывод ¯EA МК подается 0 В (как показано на рис. 7.1.11), внутренняя память программ отключается. Все обращения к памяти начинаются с адреса 0000h. При подключении вывода ¯ЕА к источнику питания обращение к внутренней памяти программ по адресам 0000h–FFFFh и к внешней памяти программ по адресам 0FFFh–FFFFhпроисходит автоматически.
Для чтения внешней памяти программ МК вырабатывается сигнал ¯PSEN. При работе с внутренней памятью сигнал чтения не используется. При обращениях к внешней памяти программ всегда формируется 16–разрядный адрес. Младший байт адреса передается через порт Р0 в первой половине машинного цикла и фиксируется по срезу строба АLЕ в регистре Во второй половине цикла порт Р0 используется для ввода в МК байта данных из внешней памяти.
Старший байт адреса передается через порт P2 в течение всего времени обращения к памяти.
Временные диаграммы циклов чтения и записи при работе МК с внешним ОЗУ приведены на рис. 7.1.12.
На диаграммах обозначено:
● PCL OUT - выдача младшего байта счетчика команд PC;
● РСН OUT - выдача старшего байта счетчика команд PC;
● DPH - старший байт регистра указателя данных DPTR, который используется в качестве регистра для косвенной адресации в командах MOVX @DPTR,A и MOVX A,@DPTR;
● P2 SFR - защелки порта P2;
● INS IN - ввод байта инструкции (команды) из памяти программ;
● ADDR OUT - выдача младшего байта адреса внешней памяти данных из регистров Rm (m = 0, 1) или из регистра DPL (младшего регистра DPTR). Порты ввода–вывода. Назначение портов. Порты Р0, P1, P2, Р3 предназначены для обмена информацией между МК и внешними устройствами, A также для выполнения следующих функций:
● через порт Р0 выводится младший байт адреса А7…A0; выводится из МК и вводится в МК байт данных при работе с внешней памятью программ и внешней памятью данных (с разделением во времени);
● через порт P2 выводится старший байт адреса A15…А8 при работе с внешней памятью программ и внешней памятью данных (только при использовании команд MOVX A,@DPTR и MOVX @DPTR,A);
● линии порта Р3 могут быть задействованы на выполнение альтернативных функций, если в фиксатор–защелку этой линии занесена 1, в противном случае на выводе линии фиксируется 0. Альтернативные функции выводов порта P3 приведены в табл. 7.1.3.
Схемные особенности портов
На рис. 7.1.13 показаны схемы для одного канала каждого из портов МК, включающего в себя:
● защелку для фиксации принимаемого бита данных;
● выходной усилительный каскад (драйвер);
● узел связи с выходным каскадом (за исключением P2);
● цепь для передачи бита данных со стороны вывода порта, состоящую из буферов В2 и В3 (для порта Р4). Защелкой служит D–триггер, тактируемый внутренним сигналом «Запись в защелку». Бит данных с прямого выхода D–триггера может быть считан программно через буфер В1 сигналом «Чтение защелки» на линию внутренней шины данных (ШД) МК.
Выходной каскад порта Р0 представляет собой инвертор, особенности которого проявляются в том, что нагрузочный транзистор VT2 открывается только при обращениях к внешней памяти (при передаче через порт адреса и данных). Во всех других режимах нагрузочный транзистор закрыт. Поэтому для использования Р0 (рис. 7.1.13, а) в качестве выходного порта общего назначения к его выводам необходимо подключить внешние нагрузочные резисторы. При записи 1 в защелку порта инверторный транзистор VT1 запирается и внешний вывод порта Р0.Х переводится в высокоомное состояние. В этом режиме вывод порта Р0.Х может служить входом. Если порт Р0 используется как порт ввода/вывода общего назначения, каждый из его выводов Р0.Х может независимо от других работать как вход или как выход. Выходные каскады портов P1, P2, Р3 (рис. 7.1.13, б, в, г) выполнены по схемам инверторов с внутренним нагрузочным резистором, в качестве которого использован транзистор VT2.
Для уменьшения времени переключения при переходе выводов портов из состояния 0 в состояние 1 параллельно нагрузочному транзистору VT2 введен дополнительный транзистор VT3. Транзистор VT3 с помощью элементов в цепи затвора отпирается на время, равное двум периодам колебаний задающего кварцевого генератора (в течение фаз S1P1, S2P2 машинного цикла). Выходные каскады портов Р0, P2 (рис. 7.1.13, A, в) с помощью мультиплексора MX могут быть подключены либо к защелкам, либо к внутренним шинам «Адрес/ данные» и «Адрес». Выходной каскад порта P1 (рис. 7.1.13, 6) постоянно подключен к защелке.
Если вывод порта Р3 является выходом и его защелка содержит 1, то его выходным каскадом управляет аппаратно внутренний сигнал «Альтернативная функция выхода», обеспечивающий выполнение соответствующей альтернативной функции, т.е. на внешнем выводе формируется один из сигналов ¯WR,¯RD или RxD. Если же вывод порта задействован на вход, то поступающий на него альтернативный сигнал (TxD, ¯INT0, ¯INT1, Т0, Т1) передается на внутреннюю линию «Альтернативная функция входа».
Режим записи в порт.
При выполнении команды записи в порт новое значение записывается в защелку в фазе S6P2 и выводится непосредственно на выходной контакт порта в фазе S1P1 следующего машинного цикла.
Режим чтения порта
Команды чтения портов считывают информацию непосредственно с внешних контактов выводов порта или с выходов защелок. В первом случае бит данных с вывода порта считывается программно через буфер В2 сигналом «Чтение выводов» на линию внутренней шины данных (ШД) МК. Отметим, что сигналы «Запись в защелку», «Чтение защелки», «Чтение выводов» вырабатываются аппаратно при выполнении соответствующих команд.
Во втором случае реализуется так называемый режим «Чтение-Модификация-Запись», в котором команда считывает сигнал состояния защелки, при необходимости модифицирует его и затем записывает обратно в защелку. Режим «Чтение-Модификация-Запись» реализуется при выполнении следующих команд: ANL, ORL, XRL, JBC; CPL; INC; DEC; DJNC; MOV PX,Y; CLR PX.Y; SETB PX,Y.
Чтение информации с выходов защелок позволяет исключить ошибки при интерпретации логического уровня на выводе порта. Продолжение статьи читайте во .
ПЛАН ЛЕКЦИИ
1. Введение
2. Арифметические и логические инструкции
3. Команды передачи данных
4. Булевы операции
5. Инструкции переходов
1. Введение
Система команд MCS-51 поддерживает единый набор инструкций, который предназначен для выполнения 8-битовых алгоритмов управления исполнительными устройствами. Существует возможность использования быстрых методов адресации к внутреннему ОЗУ, осуществления битовых операций над небольшими структурами данных. Имеется развернутая система адресации однобитовых переменных как самостоятельного типа данных, позволяющая использовать отдельные биты в логических и управляющих командах булевой алгебры.
Режимы адресации : набор команд MCS-51 поддерживает следующие режимы адресации. Прямая адресация : операнд определяется 8-битовым адресом в инструкции. Прямая адресация используется только для младшей половины внутренней памяти данных и регистров SFR . Косвенная адресация : инструкция адресует регистр, содержащий адрес операнда. Данный вид адресации используется для внешнего и внутреннего ОЗУ. Для указания 8-битовых адресов могут использоваться регистры R0 и R1 выбранного регистрового банка или указатель стека SP . Для 16-битовой адресации используется только регистр указателя данных DPTR .
Регистровые инструкции : регистры R0–R7 текущего регистрового банка могут быть адресованы через конкретные инструкции, содержащие 3-битовое поле, указывающее номер регистра в самой инструкции. В этом случае соответствующее поле адреса в команде отсутствует. Операции с использованием специальных регистров : некоторые инструкции используют индивидуальные регистры (например, операции с аккумулятором, DPTR , и т. д.). В данном случае адрес операнда вообще не указывается в команде. Он предопределяется кодом операции.
Непосредственные константы : константа может находиться прямо в команде за кодом операции.
Индексная адресация : индексная адресация может использоваться только для доступа к программной памяти и только в режиме чтения. В этом режиме осуществляется просмотр таблиц в памяти программ. 16-битовый регистр (DPTR или программный счетчик) указывает базовый адрес требуемой таблицы, а аккумулятор указывает на точку входа в нее.
Набор команд имеет 42 мнемонических обозначения команд для конкретизации 33 функций этой системы. Синтаксис большинства команд ассемблерного языка состоит из мнемонического обозначения функции, вслед за которым идут операнды, указывающие методы адресации и типы данных. Различные типы данных или режимы адресации определяются установленными операндами, а не изменениями мнемонических обозначений.
Систему команд условно можно разбить на пять групп: арифметические команды; логические команды; команды передачи данных; команды битового процессора; команды ветвления и передачи управления. Обозначения и символы, используемые в системе команд, приведены далее.
Таблица. Обозначения и символы, используемые в системе команд
Обозначение, символ |
Назначение |
Аккумулятор |
|
Регистры текущего выбранного банка регистров |
|
Номер загружаемого регистра, указанного в команде |
|
direct |
Прямо адресуемый 8-битовый внутренний адрес ячейки данных, который может быть ячейкой внутреннего ОЗУ данных (0–127) или регистром специальных функций SFR (128–255) |
Косвенно адресуемая 8-битовая ячейка внутреннего ОЗУ данных |
|
8-битовое непосредственное данное, входящее в код операции (КОП) |
|
dataH |
Старшие биты (15–8) непосредственных 16-битовых данных |
dataL |
Младшие биты (7–0) непосредственных 16-битовых данных |
11-битовый адрес назначения |
|
addrL |
Младшие биты адреса назначения |
8-битовый байт смещения со знаком |
|
Бит с прямой адресацией, адрес которого содержит КОП, находящийся во внутреннем ОЗУ данных или регистре специальных функций SFR |
|
a15, a14...a0 |
Биты адреса назначения |
Содержимое элемента Х |
|
Содержимое по адресу, хранящемуся в элементе Х |
|
Разряд М элемента Х |
|
|
Операции: |
Мнемонические обозначения функций однозначно связаны с конкретными комбинациями способов адресации и типами данных. Всего в системе команд возможно 111 таких сочетаний.
2. Арифметические и логические инструкции
Как п ример арифметической команды , операция сложения может быть выполнена одной из нижеследующих команд.
ADD A ,7 F 16 – прибавить к содержимому регистра А число 7 F 16 и результат сохранить в регистре А;
ADD A ,@ R 0 – прибавить к содержимому регистра А число, адрес которого (@ – commercial at ) хранится в регистре R 0 (косвенная адресация), и результат сохранить в регистре А;
ADD A,R7 – прибавить к содержимому регистра А содержимое регистра R 7 и результат сохранить в регистре А;
ADD A,#127 – прибавить к содержимому регистра А число, адрес ячейки хранения которого 127 (# – символ номера), и результат сохранить в регист - ре А.
Все арифметические инструкции выполняются за один машинный цикл за исключением команды INC DPTR (смещение указателя данных DPTR на следующий байт), требующей два машинных цикла, а также операций умножения и деления, выполняемых за 4 машинных цикла. Любой байт во внутренней памяти данных может быть инкрементирован и декрементирован без использования аккумулятора.
Инструкция MUL AB производит умножение (multiplication – умножение) данных в аккумуляторе на данные, находящиеся в регистре B, помещая произведение в регистры A (младшая половина) и B (старшая половина).
Инструкция DIV AB делит (division – деление) содержимое аккумулятора на значение в регистре B, оставляя остаток в B, а частное – в аккумуляторе.
Инструкция DA A предназначена для двоично-десятичных арифметических операций (арифметические операции над числами, представленными в двоично-десятичном коде). Она не делает преобразования двоичного числа в двоично-десятичное , а лишь обеспечивает правильный результат при сложении двух двоично-десятичных чисел.
Пример логической команды : операция логического И может быть выполнена одной из следующих команд:
ANL A ,7 F 16 – логическое умножение содержимого регистра А на число 7 F 16 и результат сохраняется в регистре А;
ANL A ,@ R 1 – логическое умножение содержимого регистра А на число, адрес которого хранится в регистре R 1 (косвенная адресация), и результат сохранить в регистре А;
ANL A,R6 – логическое умножение содержимого регистра А на содержимое регистра R 6, и результат сохранить в регистре А;
ANL A,#53 – логическое умножение содержимого регистра А на число, адрес ячейки хранения которого 53 16 , и результат сохранить в регистре А.
Все логические операции над содержимым аккумулятора выполняются за один машинный цикл, остальные – за два. Логические операции могут производиться над любым из нижних 128 байтов внутренней памяти данных или над любым регистром SFR (регистров специальных функций) в режиме прямой адресации без использования аккумулятора.
Операции циклического сдвига RL A, RLC A и т. д. перемещают содержимое аккумулятора на один бит вправо или влево. В случае левого циклического сдвига младший бит перемещается в старшую позицию. В случае правого циклического сдвига происходит обратное .
Операция SWAP A осуществляет обмен младшей и старшей тетрад в аккумуляторе.
3. Команды передачи данных
Команда MOV dest,src позволяет пересылать данные между ячейками внутреннего ОЗУ или областью регистров специальных функций SFR без использования аккумулятора. При этом работа с верхней половиной внутреннего ОЗУ может осуществляться только в режиме косвенной адресации, а обращение к регистрам SFR – только в режиме прямой адресации.
Во всех микросхемах MCS-51 стек размещается непосредственно в резидентной памяти данных и увеличивается вверх. Инструкция PUSH вначале увеличивает значение в регистре указателя стека SP , а затем записывает в стек байт данных. Команды PUSH и POP используются только в режиме прямой адресации (записывая или восстанавливая байт), но стек является всегда доступным при косвенной адресации через регистр SP . Таким образом, стек может использовать и верхние 128 байт памяти данных. Эти же соображения исключают возможность использования стековых команд для адресации регистров SFR .
Инструкции передачи данных включают в себя 16-битовую операцию пересылки MOV DPTR,#data16 , которая используется для инициализации регистра указателя данных DPTR при просмотре таблиц в программной памяти или для доступа к внешней памяти данных.
Операция XCH A,byte применяется для обмена данными между аккумулятором и адресуемым байтом. Команда XCHD A,@Ri аналогична предыдущей , но выполняется только для младших тетрад , участвующих в обмене операндов.
Для доступа к внешней памяти данных используется только косвенная адресация. В случае однобайтных адресов используются регистры R0 или R1 текущего регистрового банка, а для 16-разрядных – регистр указателя данных DPTR . При любом методе доступа к внешней памяти данных аккумулятор играет роль источника либо приемника информации.
Для доступа к таблицам, размещённым в программной памяти, используются команды:
MOVC A,@A+DPTR ;
MOVC A,@A+PC .
В качестве базового адреса таблицы используется содержимое соответственно регистра указателя данных DPTR или PC (программного счётчика), а смещение берется из A . Эти команды используются исключительно для чтения данных из программной памяти, но не для записи в нее.
4. Булевы операции
Микросхемы MCS-51 содержат в своем составе «булевый» процессор. Внутреннее ОЗУ имеет 128 прямо адресуемых бит. Пространство регистров специальных функций SFR может также поддерживать до 128 битовых полей. Битовые инструкции осуществляют условные переходы, пересылки, сброс, инверсии, операции «И» и «ИЛИ». Все указанные биты доступны в режиме прямой адресации.
Бит переноса CF в регистре специальных функций «слово состояния программы PSW » используется как однобитный аккумулятор булевого процессора.
5. Инструкции переходов
Адреса операций переходов обозначаются на языке ассемблера меткой либо реальным значением в пространстве памяти программ. Адреса условных переходов ассемблируются в относительное смещение – знаковый байт, прибавляемый к программному счетчику PC в случае выполнения условия перехода. Границы таких переходов лежат в пределах между минус 128 и 127 относительно первого байта, следующего за инструкцией. В регистре специальных функций «слово состояния программы PSW » отсутствует флажок нуля, поэтому инструкции JZ и JNZ проверяют условие «равно нулю» как тестирование данных в аккумуляторе.
Существует три вида команды безусловного перехода: SJMP , LJMP и AJMP – различающиеся форматом адреса назначения. Инструкция SJMP кодирует адрес как относительное смещение, и занимает два байта. Дальность перехода ограничена диапазоном от минус 128 до 127 байт относительно инструкции, следующей за SJMP .
В инструкции LJMP используется адрес назначения в виде 16-битной константы. Длина команды составляет три байта. Адрес назначения может располагаться в любом месте памяти программ.
Команда AJMP использует 11-битную константу адреса. Команда состоит из двух байт. При выполнении этой инструкции младшие 11 бит адресного счетчика замещаются 11-битным адресом из команды. Пять старших бит программного счетчика PC остаются неизменными. Таким образом, переход может производиться внутри 2К-байтного блока, в котором располагается инструкция, следующая за командой AJMP .
Существует два вида команды вызовы подпрограммы: LCALL и ACALL . Инструкция LCALL использует 16-битный адрес вызываемой подпрограммы. В данном случае подпрограмма может быть расположена в любом месте памяти программ. Инструкция ACALL использует 11-битный адрес подпрограммы. В этом случае вызываемая подпрограмма должна быть расположена в одном 2К-байтном блоке с инструкцией, следующей за ACALL . Оба варианта команды кладут на стек адрес следующей команды и загружают в программный счетчик PC соответствующее новое значение.
Подпрограмма завершается инструкцией RET , позволяющей вернуться на инструкцию, следующую за командой CALL . Эта инструкция снимает со стека адрес возврата и загружает его в программный счетчик PC . Инструкция RETI используется для возврата из подпрограмм обработки прерываний. Единственное отличие RETI от RET состоит в том, что RETI информирует систему о том, что обработка прерывания завершилась. Если в момент выполнения RETI нет других прерываний, то она идентична RET .
Инструкция DJNZ предназначена для управления циклами. Для выполнения цикла N раз надо загрузить в счетчик байт со значением N и закрыть тело цикла командой DJNZ , указывающей на начало цикла.
Команда CJNE сравнивает два своих операнда как беззнаковые целые и производит переход по указанному в ней адресу, если сравниваемые операнды не равны. Если первый операнд меньше, чем второй, то бит переноса CF устанавливается в «1».
Все команды в ассемблированном виде занимают 1, 2 или 3 байта.
У истоков производства микроконтроллеров стоит фирма Intel с семействами восьмиразрядных микроконтроллеров 8048 и 8051. Архитектура MCS-51 получила свое название от первого представителя этого семейства - микроконтроллера 8051, выпущенного в 1980 году на базе технологии HMOS. Удачный набор периферийных устройств, возможность гибкого выбора внешней или внутренней программной памяти и приемлемая цена обеспечили этому микроконтроллеру успех на рынке. С точки зрения технологии микроконтроллер 8051 являлся для своего времени очень сложным изделием - в кристалле было использовано 128 тыс. транзисторов, что в 4 раза превышало количество транзисторов в 16-разрядном микропроцессоре 8086.
Основными элементами базовой
архитектуры являются:
- 8-разрядное АЛУ на основе аккумуляторной
архитектуры;
- 4 банка регистров, по 8 в каждом;
- встроенная память программ 4Кбайт;
- внутреннее ОЗУ 128 байт;
- булевый процессор
-2 шестнадцатиразрядных таймера;
- контроллер последовательного канала (UART);
- контроллер обработки прерываний с двумя
уровнями приоритетов;
- четыре 8-разрядных порта ввода/вывода, два из
которых используются в качестве шины
адреса/данных для доступа к внешней памяти
программ и данных;
- встроенный тактовый генератор.
Именно этот микроконтроллер наиболее хорошо известен разработчикам и является популярным средством управления в устройствах самого широкого круга. Имеется множество эмуляторов, отладчиков и программаторов микросхем 8051, поэтому с разработкой программного обеспечения нет никаких трудностей.
Следующим принципиальным шагом в развитии MCS-51 стал перевод технологии изготовления на CHMOS. Это позволило реализовать режимы Idle и Power Down, позволившие резко снизить энергопотребление кристалла и открывшие дорогу к применению микроконтроллера в энергозависимых приложениях, например, в автономных приборах с батарейным питанием.
И последним принципиальным этапом развития этого направления фирмой Intel в рамках 8-битной архитектуры стал выпуск микроконтроллеров 8xC51FA/FB/FC, которые для краткости часто обозначаются как 8xC51FX. Главной отличительной особенностью этой группы кристаллов является наличие у них массива программируемых счетчиков (PCA). Структурная схема PCA представлена на рис.2.
В состав PCA входят:
Таймер-счетчик обслуживает все пять модулей выборки и сравнения, которые могут быть запрограммированы на выполнение одной из следующих функций:
16-битная выборка значения таймера по положительному фронту внешнего сигнала; | |
16-битная выборка значения таймера по отрицательному фронту внешнего сигнала; | |
16-битная выборка значения таймера по любому фронту внешнего сигнала; | |
16-битный программный таймер; | |
16-битное устройство скоростного вывода (HSO); | |
8-битный ШИМ |
Выполнение всех перечисленных функций происходит в PCA на аппаратном уровне и не загружает центральный процессор, что позволяет повысить общую пропускную способность системы, повысить точность измерений и отработки сигналов и снизить время реакции микроконтроллера на внешние события, что особенно важно для систем реального времени. Реализованный в 8xC51FX PCA оказался настолько удачным, что архитектура микроконтроллеров FX стала промышленным стандартом де-факто, а сам PCA многократно воспроизводился в различных модификациях микроконтроллеров разных фирм.
Изначально наиболее "узкими" местами архитектуры MCS-51 были 8-разрядное АЛУ на базе аккумулятора и относительно медленное выполнение инструкций (для выполнения самых быстрых инструкций требуется 12 периодов тактовой частоты). Это ограничивало применение микроконтроллеров семейства в приложениях, требующих повышенного быстродействия и сложных вычислений (16- и 32- битовых). Насущным стал вопрос принципиальной модернизации старой архитектуры. Проблема модернизации осложнялась тем, что к началу 90-х годов уже была создана масса наработок в области программного и аппаратного обеспечения, и одной из основных задач разработки новой архитектуры была реализация аппаратной и программной совместимости со старыми разработками на базе MCS-51. Для решения этой задачи была создана совместная группа из специалистов компаний Intel и Philips. В результате в 1995 г. появилось 2 существенно отличающихся семейства: MCS-251/151 у Intel и 51XA у Philips (на последнем мы остановимся ниже).
Основные характеристики архитектуры MSC-251:
24-разрядное линейное адресное пространство, обеспечивающее адресацию до 16M памяти (выпускаемые микроконтроллеры семейства MCS-251 имеют адресное пространство памяти объемом 256К); | |
Система команд микроконтроллеров семейства MCS-251 содержит все 111 команд, входящих в систему команд микроконтроллеров семейства MCS-51 ("старые" команды), и, кроме того, в нее входят 157 "новых" команд. Коды некоторых новых команд имеют формат 4 байт. | |
Перед использованием микроконтроллера его необходимо сконфигурировать, т.е. с помощью программатора "прожечь" конфигурационные байты, определяющие, какой из наборов инструкций станет активным после включения питания. Если установить набор инструкций MCS-51, то в этом случае MSC-251 будет совместим с MCS-51 на уровне двоичного кода. Такой режим называется Binary Mode. Однако расширенные инструкции в этом режиме также доступны через "форточку" - зарезервированный код инструкции 0A5h. Естественно, длина каждой расширенной инструкции увеличивается в таком случае на 1 байт. Если же изначально установить набор расширенных инструкций, то в этом случае программы, написанные для MCS-51 потребуют перекомпиляции на кросс-средствах для MCS-51, т.к. теперь уже стандартные инструкции будут доступны через ту же "форточку" 0A5h и длина их также увеличится на 1 байт. Такой режим называется Source Mode. Он позволяет с максимальной эффективностью использовать расширенные инструкции и достигнуть наибольшего быстродействия, но требует переработки программного обеспечения. |
регистровая архитектура, допускающая обращение к регистрам как к байтам, словам и двойным словам; | |
страничный режим адресации для ускорения выборки инструкций из внешней программной памяти; | |
очередь инструкций; | |
расширенный набор команд, включающий 16-битовые арифметические и логические инструкции; | |
расширенное адресное пространство стека до 64К; | |
выполнение самой быстрой инструкции за 2 такта; | |
совместимость на уровне двоичного кода с программами для MCS-51. |
Для пользователей, ориентированных на применение микроконтроллеров MCS-251 в качестве механической замены MCS-51 фирма Intel выпускает микроконтроллеры MCS-251 с уже запрограммированными битами конфигурации в состоянии Binary Mode. Такие микроконтроллеры получили индекс MCS-151.
Помимо самой Intel микроконтроллеры MCS-251 по ее лицензии выпускает компания Temic Semiconductors.
Универсальная последовательная шина (Universal Serial Bus или USB), распространяет технологию Plug-and-Play на внешние устройства ввода/вывода, применяемые на современных высокопроизводительных персональных компьютерах.
Для того, чтобы обеспечить возможность подключения разнообразных периферийных устройств, в стандарте USB определены четыре режима передачи: Управляющий, Изохронный, Импульсный и передача массивов. Каждое периферийное устройство должно поддерживать управляющий режим для передачи параметров конфигурации, команд и информации о состоянии устройства. Изохронная передача обеспечивает гарантированный доступ к шине, постоянную пропускную способность и устойчивость к ошибкам, этот режим передачи может применяться в устройствах аудиовывода и компьютерной телефонии. Импульсная передача предназначена для устройств ввода типа мыши, джойстика или клавиатуры, передающих информацию редко и небольшими порциями, но с ограниченным периодом обслуживания. Передача массивов позволяет устройствам типа сканеров, факсов или цифровых камер передавать большие массивы данных в персональный компьютер, как только освобождается канал шины.
Основные характеристики продукта
|
|||||||||||||||||||||||||||||||||||||||
Четыре порта ввода/вывода | |||||||||||||||||||||||||||||||||||||||
Программируемый массив счетчиков (PCA) | |||||||||||||||||||||||||||||||||||||||
Стандартный (MCS 51) микроконтроллер UART | |||||||||||||||||||||||||||||||||||||||
Аппаратный сторожевой таймер | |||||||||||||||||||||||||||||||||||||||
Три 16-разрядных таймера/счетчика с гибкими возможностями | |||||||||||||||||||||||||||||||||||||||
Совместимость с набором команд микроконтроллеров архитектуры MCS 51 и MCS 251 | |||||||||||||||||||||||||||||||||||||||
Архитектура микроконтроллера MCS 251, основанная на регистрах | |||||||||||||||||||||||||||||||||||||||
Рабочая частота 6 или 12 МГц |
Контроллер 8x930Hx имеет дополнительные характеристики:
Концентратор USB | |||||||||||
Возможности управления
концентратором USB
|
|||||||||||
Выходной контакт для переключения питания порта | |||||||||||
Входной контакт для обнаружения перегрузки |
Четыре различных режима передачи данных USB обеспечиваются совместной работой трех элементов: Хост, Концентратор, Функциональное устройство. Хост контролирует передачу по шине содержательной и управляющей информации. Функциональные устройства расширяют хост-системы. Сюда включаются типичные виды работы с PC: ввод с клавиатуры или джойстика, вывод на монитор; а также более сложные виды деятельности, такие как цифровая телефония и передача изображений. Для управления функциональными устройствами спроектирован микроконтроллер Intel 8x930Ax. Наконец, концентраторы представляют собой точку расширения USB, с помощью которой обеспечивается доступ к другим функциональным устройствам. Микроконтроллер Intel 8x930Hx, в котором совмещены функции управления функциональным устройством и концентратором USB, является первым серийным концентратором USB, предназначенным для современных периферийных устройств PC.
Концентраторы USB играют существенную роль в расширении мира пользовател PC. С появлением периферийных устройств - клавиатур, мониторов, принтеров и других - снабженных встроенными концентраторами, подключить или отключить новое устройство так же просто, как вставить вилку в розетку. Новый уровень производительности и расширенные способы соединения USB могут привести к появлению устройств для рабочих и развлекательных приложений нового поколения. Дни встраиваемых карт, конфликтов IRQ и спутанных клубков проводов сочтены.
Кабель шины USB состоит всего из четырех проводов: Vbus, D+, D- и GND - чем достигается упрощение и единообразие соединения. Этой же цели служит единый стандартный коннектор для подключения периферийных устройств к шине USB. Данные по-разному передаются по кабелям D+ и D-: либо на полной скорости 12 Мбит/сек, либо на низкой скорости 1,5 Мбит/сек. Приемопередатчик встроен в кристалл, поэтому необходимость во внешних электронных цепях отсутствует. Исключение составляет терминальный нагрузочный резистор на обоих линиях D+ и D-, который необходим для определения типа устройства: высокоскоростное или низкоскоростное.
Обзор семейства
Семейство Intel 8x930 состоит из двух
однокристальных контроллеров.
Контроллер Intel 8x930Ax представляет собой 8-разрядное устройство, которое основано на архитектуре микроконтоллера MCS 251 и предназначено для работы с периферийными устройствами, подключаемыми к шине USB. С другой стороны, в 8x930Hx использовано то же ядро микроконтроллера MCS 251 плюс расширенные возможности встроенного концентратора шины USB. Применение архитектуры MCS 251 в обоих контроллерах шины USB дает следующие преимущества:
Высокая производительность | |
Применение смешанных типов памяти и адресации | |
Низкое энергопотребление | |
Низкий уровень шума | |
Эффективная поддержка языков высокого уровня | |
Расширенный набор команд | |
Встроенные возможности |
В качестве команд для 8x930Ax можно использовать инструкции как из набора для микроконтроллера MCS 51, так и из набора для микроконтроллера MCS 251. Такой подход сохраняет инвестиции пользователей в программное обеспечение и выжимает максимум производительности из приложений.
Микроконтроллеры 8x930 настолько насыщены различными встроенными средствами, что они выглядят мощнее, нежели просто микроконтроллеры. Массив программируемых счетчиков (PCA) придает гибкость приложениям, которым требуется сравнение или захват данных в реальном времени, высокоскоростной обмен данными или широтно-импульсная модуляция. Кроме того, в состав контроллера вошли расширенный последовательный порт, три 16-разрядных таймера/счетчика, аппаратный сторожевой таймер, четыре 8-разрядных порта ввода/вывода, а также предусмотрены два энергосберегающих режима: ожидание и отключение питания.
Контроллеры семейства 8x930Ax оснащены 1 Кбайт памяти и могут быть использованы в вариантах без постоянной памяти, либо с постоянной памятью емкостью 8 или 16 Кбайт. Они могут адресовать до 256 Кбайт внешней памяти для размещения команд и данных и 40 байт регистров общего назначения, которые располагаются в центральном процессоре как регистровый файл. В зависимости от используемой комбинации в регистровом файле могут располагаться 16 байтовых регистров, 16 двухбайтовых регистров и 10 четырехбайтовых регистров.
В контроллерах предусмотрен гибкий интерфейс с внешней памятью. Дл обращения к устройствам с медленной памятью имеется возможность добавлени трех циклов ожидания, а для генерации большего количества циклов - обращение к функции реального времени. Выборка внешних команд может повысить производительность за счет использования страничного режима, при котором данные перебрасываютс в старшем байте адреса.
Оба контроллера 8x930 оснащены восемью очередями FIFO для поддержки внутренних устройств вывода: четыре очереди для передачи и четыре очереди для приема. Четыре очереди FIFO для приема/передачи поддерживают четыре оконечных функциональных устройства (от 0 до 3). Очередь 0 состоит из 16 байт и предназначена для передачи управляющей информации. Очередь 1 относитс к категории настраиваемых пользователем и имеет емкость до 1024 байт. Очереди 2 и 3 состоят из 16 байт каждая и могут использоваться для передачи информации в импульсном, изохронном и режиме передачи массивов. В случае использования контроллера 8x930Hx указанные очереди усиливаются парой очередей FIFO для входных устройств. Эти очереди в контроллере 8x930Hx поддерживаются дополнительным повторителем, который отвечает за повторную передачу потоков данных, генерируемых выходными устройствами.
Обзор архитектуры
Конструкционно реализацию USB в
микроконтроллерах 8x930Ax и 8x930Hx можно разделить на
четыре блока: очереди FIFO, блок интерфейса с
функциональными устройствами, блок интерфейса с
последовательной шиной и приемо-передатчик.
Контроллер 8x930Hx имеет длополнительные блоки для
управления функциями концентратора: блок
интерфейса с концентратором и повторитель.
Очереди FIFO для приема и передачи на обоих контроллерах являются кольцевыми. Очереди поддерживают до двух раздельных наборов данных переменного размера и содержат регистры счетчика байтов, показывающие количество байтов в наборах данных. Очереди снабжены флажками, показывающими заполненность или пустоту очереди, а также способны повторять прием или передачу текущего набора данных. Блок интерфейса с функциональными устройствами (ИФУ) распределяет переданные или принятые данные USB в соответствии с типом передачи и состоянием очередей. Кроме того, блок ИФУ следит за состоянием транзакции, управляет очередями FIFO, при помощи запроса на прерывание сообщает о наступлении управляющих событий центральному процессору 8x930.
Блок интерфейса с последовательной шиной реализует протокол передачи USB: последовательно упорядочивает пакеты, осуществляет генерацию и распознавание сигнала, генерацию и проверку контрольных сумм, кодирование/декодирование данных по методу NRZI, побитовое заполнение, генерацию и распознавание идентификатора пакета (PID).
Интегрированный приемо-передатчик на микроконтроллерах USB согласован с простым четырех-жильным интерфейсом, определенным спецификаицей USB 1.0. Семейство контроллеров 8x930 имеет три прерывания, связанных с USB. Они происходят при каждом старте кадра, окончании приема/передачи данных на оконечные функциональные устройства, в случае глобальной приостановки или возобновления работы. В концентраторе 8x930Hx блок интерфейса с концентратором служит для управления и слежения за состоянием соединени с выходными портами. Повторитель отвечает за распространение сигналов повышающих и понижающих портов USB.