Программирование
Микроконтроллеров MCS-51
Допущено Министерством образования Российской Федерации в качестве учебного пособия для студентов высших учебных заведений, обучающихся по направлению подготовки бакалавров и магистров «Проектирование и технология электронных средств»
Ульяновск 2000
УДК 681.32(075)
ББК 32.973.2я7
А65
Рецензенты: кафедра вычислительной техники и защиты информации Уфимского государственного авиационного технического университета (зав. кафедрой д-р техн. наук, профессор В.И.Васильев); кафедра радиотехники Ульяновского государственного технического университета (зав. кафедрой канд. техн. наук, профессор Н.А.Трефилов); канд. техн. наук, с.н.с. Г.П.Токмаков
Андреев Д.В.
А65 Программирование микроконтроллеров MCS-51: Учебное пособие. - Ульяновск: УлГТУ, 2000. - 88 с.
ISBN 5-89146-133-1
Приведены технические характеристики и функциональные возможности популярных микроконтроллеров семейства MCS-51, выпускаемых ведущими компаниями мира. Рассмотрены особенности программной модели микроконтроллера 8051, являющегося ядром MCS-51, и соответствующего машинно-ориентированного языка АСМ51. Описаны содержание основных этапов разработки прикладного программного обеспечения микроконтроллера 8051, а также технология применения специальных программных кросс-средств (кросс-ассемблера X8051 и кросс-редактора связей Link). Даны варианты типовых микроконтроллерных программ. Изложение сопровождается большим числом практических примеров.
|
|
УДК 681.32(075)
ББК 32.973.2я7
Учебное издание
АНДРЕЕВ Дмитрий Васильевич
ПРОГРАММИРОВАНИЕ МИКРОКОНТРОЛЛЕРОВ MCS-51
Учебное пособие
Редактор Н.А.Евдокимова
Изд. лиц. 020640 от 22.10.97. Подписано в печать 22.02.00. Формат 60х84/16.
Бумага писчая. Усл. печ. л. 5,12. Уч.-изд. л. 5,00. Тираж 200 экз. Заказ
Ульяновский государственный технический университет,
432027, Ульяновск, Сев. Венец, 32.
Типография УлГТУ, 432027, Ульяновск, Сев. Венец, 32.
ISBN 5-89146-133-1 © Д.В.Андреев, 2000
© Оформление. УлГТУ, 2000
ПРЕДИСЛОВИЕ
Эффективная автоматизация машин, приборов и технологического оборудования, которая является обязательным условием ускорения научно-технического прогресса, основана на широком применении средств микропроцессорной техники (МТ). Автоматизация с использованием микропроцессоров (МП) и микроконтроллеров (МК) быстро распространяется в самых разнообразных отраслях народного хозяйства, охватывает новые сферы.
Характерно, что создание микропроцессорных устройств и систем все в большей степени становится функцией специалистов в конкретной предметной области, а не профессиональных программистов и специалистов по вычислительной технике. Это вызывает большую потребность в инженерных кадрах, которые, кроме своей предметной области, дополнительно разбираются в микропроцессорной технике.
|
|
Как известно, МТ состоит из двух специфических частей: аппаратурных средств (АС) и прикладного программного обеспечения (ППО). При этом, рассматривая общий процесс проектирования МТ, можно отметить, что в большинстве случаев доля общей трудоемкости разработки ППО значительно превосходит трудоемкость разработки АС. Указанное обстоятельство объясняется тем, что разработка аппаратурной части МТ на базе типовых микропроцессорных БИС сводится (чаще всего) к выполнению стандартных операций в соответствии с рекомендациями, изложенными в технической документации на используемые БИС. Совсем по-другому выглядит инженерный труд при разработке ППО. Проектная работа носит здесь творческий характер, изобилует решениями, имеющими "волевую" или "вкусовую" окраску, и решениями, продиктованными конъюнктурными соображениями. В силу перечисленных обстоятельств именно при проектировании ППО разработчик сталкивается с наибольшим количеством проблем и от того, как они будут решены, зависит успех разработки МТ в целом. Таким образом, весьма актуальным представляется ориентация будущих инженеров на более глубокое изучение вопросов, связанных именно с программированием МТ, в частности языков программирования, средств автоматизации программирования (ассемблеров, компиляторов с языков высокого уровня, линкеров и др.), структурных особенностей микропроцессорной элементной базы.
Известны многочисленные книги, справочники, учебники и учебные пособия отдельно по программированию МП или МК и по средствам его автоматизации, причем вся эта литература издана, в основном, на рубеже 90-х годов. Отсюда следует необходимость создания литературы, в которой совместно, с единых методологических позиций рассматриваются особенности программирования современных микропроцессоров или микроконтроллеров и средства автоматизации их программирования.
Указанным требованиям в полной мере соответствует предлагаемое учебное пособие, основное внимание в котором уделено одним из наиболее популярных и перспективных микропроцессорных БИС - однокристальным микроконтроллерам семейства MCS-51.
Учебное пособие написано на основе курса лекций, читаемых автором в Ульяновском государственном техническом университете, а также на основе личного практического опыта, полученного при разработке и отладке ряда микропроцессорных устройств и систем.
Глава 1. | СОСТАВ СЕМЕЙСТВА MCS-51 |
Несмотря на появление 16- и 32-разрядных микроконтроллеров и микропроцессоров, наибольшая доля мирового микропроцессорного рынка остается за 8-разрядными МК. Согласно данным компании Semico Research Corp., в 1996 году общий мировой объем продаж микроконтроллеров всех типов составил 11,4 миллиарда долларов, при этом 5,56 миллиарда долларов (или 48,8%) пришлось на долю 8-разрядных кристаллов, что примерно в 2,5 раза больше объема продаж ближайшего конкурента - 16-разрядных микроконтроллеров (2,1 млрд. долл.). Прогнозы аналитических компаний на период до 2001 года показывают, что лидирующее положение 8-разрядных МК на мировом рынке сохранится.
Среди всех 8-разрядных микроконтроллеров семейство MCS-51 является несомненным чемпионом по количеству компаний, выпускающих его модификации. Важную роль в достижении такой высокой популярности сыграла открытая политика фирмы Intel, родоначальницы этого семейства, направленная на широкое распространение лицензий на ядро MCS-51 среди большого количества ведущих полупроводниковых компаний мира.
В результате на сегодняшний день существует более 200 модификаций микроконтроллеров семейства MCS-51, выпускаемых почти 20-ю компаниями. Эти модификации включают в себя кристаллы с широчайшим набором периферии: от простых 20-выводных МК с одним таймером и резидентной памятью программ (РПП) объемом 1 Кбайт до сложнейших 100-выводных кристаллов с 10-разрядными АЦП, массивами таймеров/счетчиков, аппаратными 16-разрядными умножителями и резидентной памятью программ до 64 Кбайт. Каждый год появляются все новые варианты представителей семейства MCS-51, основными направлениями развития которого являются: увеличение быстродействия (за счет повышения тактовой частоты и (или) переработки архитектуры), снижение напряжения питания и потребления, увеличение объема РПП и резидентной памяти данных (РПД), реализация РПП на основе FLASH технологии с возможностью внутрисхемного программирования, введение в состав периферии микроконтроллера сложных устройств: системы управления приводами, CAN и USB интерфейсов и т.п.
|
|
Основными производителями модификаций 51-го семейства в мире являются фирмы Philips, Siemens, Intel, Atmel, Dallas, Temic, Oki, AMD, MHS, Winbond, Silicon Systems и ряд других. В рамках данной главы невозможно рассказать о всех представителях семейства MCS-51 и всех компаниях-производителях микроконтроллеров указанного семейства. Все фирмы, о которых далее пойдет речь, имеют в России своих официальных дистрибьюторов, и, соответственно, микроконтроллеры этих фирм являются реальными кандидатами на применение в российских проектах.
Микроконтроллеры фирмы Intel
Фирма Intel является родоначальницей архитектуры семейства MCS-51, которое получило свое название от первого представителя этого семейства - микроконтроллера 8051, выпущенного в 1980 году на базе технологии n-МОП. Удачный набор периферийных устройств, возможность гибкого выбора внешней или внутренней программной памяти и приемлемая цена обеспечили этому микроконтроллеру успех на рынке. С точки зрения технологии микроконтроллер 8051 являлся для своего времени очень сложным изделием - в кристалле было использовано 128 тыс. транзисторов, что в 4 раза превышало количество транзисторов в 16-разрядном микропроцессоре 8086. Указанный микроконтроллер остается ядром семейства MCS-51 и по сей день.
|
|
Основными элементами базовой архитектуры семейства (архитектуры микроконтроллера 8051) являются:
- 8-разрядное АЛУ;
- 4 банка регистров, по 8 в каждом;
- внутренняя (резидентная) память программ 4 Кбайт, имеющая тип ROM или EPROM (8751);
- внутренняя (резидентная) память данных 128 байт;
- 21 регистр специальных функций;
- булевый процессор;
- два 16-разрядных таймера/счетчика;
- контроллер последовательного порта (UART);
- контроллер обработки прерываний с двумя уровнями приоритетов;
- четыре 8-разрядных порта ввода/вывода, два из которых используются в качестве шины адреса/данных для доступа к внешней памяти программ и данных;
- встроенный тактовый генератор.
Затем был выпущен микроконтроллер 8052, который отличался увеличенным объемом резидентной памяти программ и данных, введенным третьим таймером и соответственно расширенным контроллером прерываний.
Следующим принципиальным шагом в развитии MCS-51 стал перевод технологии изготовления на КМОП (модификация 8xC51). Это позволило реализовать режимы Idl (холостой ход) и Power Down (пониженное потребление), обеспечивающие резкое снижение энергопотребления кристалла и открывшие дорогу к применению микроконтроллера в энергозависимых приложениях, например, в автономных приборах с батарейным питанием.
И последним важным этапом развития МК 8051 фирмой Intel стал выпуск микроконтроллеров 8xC51FA/FB/FC и 8xC51RA/RB/RC, которые для краткости часто обозначаются как 8xC51Fx и 8xC51Rx. Главной отличительной особенностью этой группы кристаллов является наличие у них специализированного таймера/счетчика (РСА). Кроме того, микроконтроллеры 8xC51Rx дополнительно содержат сторожевой таймер (WDT). Рассмотрим архитектуру и функциональные возможности PCA более подробно.
В состав РСА входят:
- 16-разрядный таймер/счетчик;
- пять 16-разрядных модуля выборки и сравнения, каждый из которых связан со своей линией порта ввода/вывода микроконтроллера.
Таймер/счетчик обслуживает все пять модулей выборки и сравнения, которые могут быть запрограммированы на выполнение одной из следующих функций:
- 16-битовая выборка значения таймера по положительному фронту внешнего сигнала;
- 16-битовая выборка значения таймера по отрицательному фронту внешнего сигнала;
- 16-битовая выборка значения таймера по любому фронту внешнего сигнала;
- 16-битовый программируемый таймер;
- 16-битовое устройство скоростного вывода;
- 8-битовый ШИМ.
Выполнение всех перечисленных функций происходит в РСА на аппаратном уровне и не загружает центральный процессор. Указанное позволяет повысить общую пропускную способность, повысить точность измерений и обработки сигналов и снизить время реакции микроконтроллера на внешние события, что особенно важно для систем реального времени. Реализованный в 8xC51Fx (8xC51Rx) РСА оказался настолько
Обозначение | Макс. частота (МГц) | РПП ROM/EPROM (байт) | РПД (байт) | Таймеры/ счетчики | |
8051AH | ROM 4K | ||||
8751BH | EPROM 4K | ||||
8052AH | ROM 8K | ||||
8752BH | EPROM 8K | ||||
8xC51BH | 4K | ||||
8xC52 | 8K | ||||
8xC54 | 16K | ||||
8xC58 | 32K | ||||
8xC5x-L | 8…32K | ||||
8xC51FA | 8K | 3+PCA | |||
8xC51FB | 16K | 3+PCA | |||
8xC51FC | 32K | 3+PCA | |||
8xL51Fx | 8…32K | 3+PCA | |||
8xC51RA | 8K | 3+PCA+WDT | |||
8xC51RB | 16K | 3+PCA+WDT | |||
8xC51RC | 32К | 3+PCA+WDT | |||
8xC251SA | 8K | 1K | 3+PCA+WDT | ||
8xC251SB | 16K | 1K | 3+PCA+WDT | ||
8xC251SP | 8K | 3+PCA+WDT | |||
8xC251SQ | 16K | 3+PCA+WDT | |||
TSC8xC251A1 | 24K | 1K | 2+WDT | ||
8xC151SA | 8K | 3+PCA+WDT | |||
8xC151SB | 16K | 3+PCA+WDT |
удачным, что архитектура этих микроконтроллеров стала промышленным стандартом, а сам РСА многократно воспроизводился в различных модификациях МК 8051.
Некоторые характеристики ряда микроконтроллеров MCS-51, выпускаемых фирмой Intel, приведены в табл.1.1.
Изначально наиболее "узкими" местами архитектуры MCS-51 были 8-разрядное АЛУ на базе аккумулятора и относительно медленное выполнение команд (для выполнения самых быстрых команд требуется 12 пе-
Таблица 1.1
Линии ввода/вывода | Послед. каналы | АЦП, входы x разряды | Другая периферия, особенности | U пит. (В) | |
UART | - | - | 4,5…5,5 | ||
UART | - | - | 4,5…5,5 | ||
UART | - | - | 4,5…5,5 | ||
UART | - | - | 4,5…5,5 | ||
UART | - | - | 4,0…6,0 | ||
UART | - | - | 4,0…6,0 | ||
UART | - | - | 4,0…6,0 | ||
UART | - | - | 4,0…6,0 | ||
UART | - | Низковольтный вариант 8xC52/54/58 | 2,7…3,6 | ||
UART | - | - | 4,0…6,0 | ||
UART | - | 4 уровня IRQ, clock out | 4,0…6,0 | ||
UART | - | 4 уровня IRQ, clock out | 4,0…6,0 | ||
UART | - | Низковольтный вариант 8xC51Fx | 2,7…3,6 | ||
UART | - | 4 уровня IRQ, clock out | 4,0…6,0 | ||
UART | - | 4 уровня IRQ, clock out | 4,0…6,0 | ||
UART | - | 4 уровня IRQ, clock out | 4,0…6,0 | ||
UART | - | - | 4,5…5,5 | ||
UART | - | - | 4,5…5,5 | ||
UART | - | - | 4,5…5,5 | ||
UART | - | - | 4,5…5,5 | ||
UART | 4x8 | - | 4,5…5,5 | ||
UART | - | - | 4,5…5,5 | ||
UART | - | - | 4,5…5,5 |
риодов тактовой частоты (частоты синхронизации МК)). Это ограничивало применение микроконтроллеров семейства в приложениях, требующих повышенного быстродействия и сложных вычислений (16- и 32-битовых). Насущным стал вопрос принципиальной модернизации архитектуры MCS-51. Проблема модернизации осложнялась тем, что к началу 90-х годов уже была создана масса наработок в области программного и аппаратного обеспечения семейства MCS-51, в связи с чем одной из основных задач проектирования новой архитектуры была реализация аппаратной и программной совместимости с разработками на базе MCS-51.
Для решения указанной задачи была создана совместная группа из специалистов компаний Intel и Philips, но позднее пути этих двух фирм разошлись. В результате в 1995 году появилось два существенно отличающихся семейства: MCS-251/151 у Intel и MCS-51XA у Philips (см. подраздел 1.2).
Основные характеристики архитектуры MCS-251:
- 24-разрядное линейное адресное пространство, обеспечивающее адресацию до 16 Мбайт памяти;
- регистровая архитектура, допускающая обращение к регистрам как к байтам, словам и двойным словам;
- страничный режим адресации для ускорения выборки команд из внешней программной памяти;
- очередь инструкций;
- расширенный набор команд, включающий 16-битовые арифметические и логические операции;
- расширенное адресное пространство стека (до 64 Кбайт);
- выполнение самой быстрой команды за 2 такта.
Система команд MCS-251 включает два набора инструкций - первый набор является копией системы команд MCS-51, а второй состоит из расширенных инструкций, реализующих преимущества архитектуры MCS-251. Перед использованием микроконтроллера его необходимо сконфигурировать, т.е. с помощью программатора "прожечь" конфигурационные биты, определяющие, какой из наборов инструкций станет активным после включения питания. Если установить первый набор инструкций, то в этом случае МК семейства MCS-251 будет совместим с MCS-51 на уровне двоичного кода. Такой режим называется Binary Mode. Если же изначально установить набор расширенных инструкций (режим Source Mode), то тогда программы, написанные для MCS-51, потребуют перекомпиляции на кросс-средствах для MCS-251. Режим Source Mode позволяет с максимальной эффективностью использовать архитектуру MCS-251 и достигнуть наибольшего быстродействия.
Для пользователей, ориентированных на применение микроконтроллеров MCS-251 в качестве механической замены MCS-51, фирма Intel выпускает микроконтроллеры MCS-151, уже запрограммированные в состояние Binary Mode.
Некоторые характеристики ряда микроконтроллеров MCS-251/151 приведены в табл.1.1.
В настоящее время Intel, устремленная на рынок Pentium-процессоров, сворачивает производство кристаллов MCS-51. В целом для конкретного разработчика это может остаться и незамеченным, если только он не использует микроконтроллеры 8xC51GB и 80C152Jx, которые не имеют своих точных аналогов среди изделий других фирм. Что же касается всех остальных микроконтроллеров семейства MCS-51, то все они многократно растиражированы другими компаниями.