Text
                    А. В. Фрунзе
МИКРОКОНТРОЛЛЕРЫ?
Д-Скимен
ISBN 594929003-8
ЭТО ЖЕ ПРОСТО!
том 2
9
785949
290033

Содержание Приложение 1. Числа, кодирование и арифметические вычисления 9 Приложение 2. Классические микроконтроллеры (однокристальные микро-ЭВМ) семейств VCS-5I и MCS-52 37 Приложение 3. Микроконтроллеры групп 8XC51FX, 8XL51FX 99 Приложение 4. Х51-совместимые микроконтроллеры фирмы Atmel 143 Приложение 5. Воздействие средств поддержки разработки на рынок микроконтроллеров 193 Приложение 6. Модернизация систем на основе микроконтроллеров серии 8051 Приложение 7. Симулятор для семейства х51 ___ Приложение 8. 24-разрядные АЦП от Analog Devices — законченные системы аналого-цифрового преобразования для низкочастотных измерений 251 Приложение 9. Особенности отладки систем на основр микроконтроллеров семейства х51 245 Приложение 10. Семейство х51 микроконтроллеров фирмы Cygnal 351 Приложение 11. Микро конверторы (семейство ADuC8xx) — системы сбора данных на кристалле 367 Приложение 12. 24-разрядный АЦП с встроенным микроконтроллером семейства х51 от Burr-Brown (Texas Instruments) 383
КАЧЕСТВО/ИЗ первых рук Agilent, alliance, AMD, Analog devices, Asiliant Technologies, Cortologic, Cypress, Echelon, EM Marin, Fairchild, Fujitsu, Hitachi, IDT, Infineon, Inova semiconductors, Intel, International Rectifier, Intersil, Lattice, Legerity, Lite-On, LSI Logic, Macronix , Micron, Motorola, National Semiconductor, OKI Semiconductor, ON Semiconductor, Osram, Philips, Power innovations, Samsung, Silicon Laboratories, STMicroelectronics, Texas Instruments, Toshiba, Vishay, Xicor, Xilinx, Zilog, ZMD АОЗТ «Макро Петербург»: 195265, Санкт-Петербург, Гражданский пр. 111 тел. 531-1476,532-4729, 322-5304,322-5302, факс 327-8650; E-mail: sales@macro-peterburg.ru; Internet: http://www.macro-peterburg.ru
А.В. Фрунзе Микроконтроллеры? Это же просто! 2 том Москва ООО «ИДСКИМЕН» 2002
УДК ББК Ф93 621.316.544.1(075) 31.264.5я7 Ф93 Фрунзе А.В. Микроконтроллеры? Это же просто! Т. 2. — М.: ООО «ИД СКИМЕН», 2002. — 392 с., илл. ISBN 5-94929-003-8 (Т.2) ISBN 5-94929-001-1 Первая в отечественной литературе книга полностью и на доступном для начи- нающих уровне охватывает абсолютно все аспекты, связанные с использованием мик- роконтроллеров. На примере ставшего промышленным стандартом «де-факто» мик- роконтроллерного семейства х51 рассмотрены внутреннее устройство микроконт- роллера, его система команд, схемы его сопряжения с периферийными устройства- ми и программы, осуществляющие это сопряжение, техника написания и трансля- ции ассемблера программ, анализ сообщений компилятора об ошибках, техника за- несения программы в микроконтроллер и последующей отладки занесенных про- грамм. Рассмотрен ряд полезных программ (многобайтного умножения, деления, преобразования из одного представления в другое и т. д.). Отдельно даны четыре полностью законченных примера разработки. Приведено большое количество об- зорных и справочных материалов, охватывающих практически все микроконтрол- леры, программно и аппаратно совместимые с семейством х51, существующие на момент выпуска книги. Книга рассчитана на всех специалистов в области микроконтроллерной техни- ки, студентов, ее изучающих, а также на тех, кто желает самостоятельно разобраться в этой области. УДК 621.316.544.1(075) ББК 31.264.5я7 Вес права защищены. Никакие материалы данного издания нс могут быть воспроизведены в любой форме или любыми средствами, электронными или механическими, включая фотографи- рование, ксерокопирование или иные средства копирования или сохранения информации, без письменного разрешения издательства. ISBN 5-94929-003-8 (Т. 2) ISBN 5-94929-001-1 © ООО «ИД СКИМЕН», 2002 © А. В. Фрунзе, 2002 © В.Б. Стешенко, 2002
СЕМЕЙСТВО МИКРОКОНТРОЛЛЕРОВ ADuC8xx И МНОГОЕ ДРУГОЕ Рекомендовано к применению /.analog coj Сигнальные процессоры и □analog DEVICES Ключи, мультиплексоры Датчики температуры, ускорения и нам Интерфейсные микросхемы и http:,’.' www.khartrade.cwi ,ua ' • ........ . --АВТЭКС СПб.» тел.: +7{812|5б?‘72-б2 фа»с. ♦? {812) 5€7-?2-02 I Г.'з57. MdCKiu ул. Пгафгою man с:: :09Л 334 7.’41.334 9151 емче <С99; 334-9991 331-37?? Г Г!., i "Il • .-|I > ru. http www..-,uto> iL Хорько» ХАГ:-,.'.-! 38(0572)218-430 AUTEX Ltd. Эр.'ионзльныр прсдсгэвигсли AUTEX Ltd. KtMMt В АЛЫГРА» Я
ПРЕДИСЛОВИЕ Как я уже говорил в предисловии к первому тому, мне пришлось часть материалов, безусловно полезных и нужных большому количе- ству пользователей, вынести за пределы того, что там рассматрива- лось, в отдельные приложения. Таких приложений оказалось 12, и их суммарный объем даже превысил объем составивших первый том ос- новных восьми глав. Поэтому приложения оказались выделенными в отдельный, второй том. Знакомство с ними не является необходимым при первом чтении книги, но, конечно, окажется полезным для тех, кто решит идти дальше. При этом знакомиться с материалами прило- жений можно в любой последовательности, по мере появления инте- реса к приведенной там информации. Приложение 1 содержит описанные более подробно, чем первом томе, основы двоичного, восьмеричного, шестнадцатеричного и дво- ично-десятичного представления чисел, преобразования чисел из од- ного представления в другое. В нем уделено много внимания прави- лам двоичной арифметики, знаковому и беззнаковому представлению целых чисел, представлению отрицательных чисел в дополнительном коде. Материалы рассчитаны на новичков, не имевших возможности изучить эти вопросы в ВУЗе. Приложение 2 посвящено более подробному описанию аппарат- ных особенностей классических 1ШеГовских микроконтроллеров се- мейства MCS-51 и подсемейства MCS-52. Далее, в Приложении 3 я рас- сказал о микроконтроллерах 8xC51Fx и 8xC51GB, которые содержат ряд периферийных устройств, также уже ставших стандартными в микроконтроллерной технике, в частности, программируемая матри- ца счетчиков (РСА). Завершает Приложение 3 краткое описание 16- разрядных контроллеров семейства MCS-251, которые могут оказать- ся интересными для тех специалистов по х51, кому уже настоятельно необходимо «пересесть» на 16-разрядные МК, но неохота тратить много времени на изучение принципиально новой архитектуры. Приложение 4 полностью посвящено микроконтроллерам 51-го семейства фирмы Atmel. Ее агрессивная политика продвижения своей продукции в совокупности с превосходными ценовыми и техничес- кими характеристиками изделий привели к тому, что огромное коли- чество пользователей применяет именно ее микроконтроллеры. По- этому и для тех, кто делает самые первые шаги в микроконтроллер- ной технике, удобнее всего начать именно с А1шеГовских изделий. Приложение 5 — многоплановое. В первой его части анализиру- ется состояние отечественного рынка микроконтроллеров в 2000- 2001 гг., воздействие на него средств поддержки разработки и срав- нение степени воздействия средств поддержки разработки на микро- контроллерный рынок как в нашей стране, так и за рубежом. Во второй части дан подробный анализ х51-совместимой продукции, 4
выпускаемой фирмами Atmel, Analog Devices, Dallas, Infineon (он же Siemens), Intel, ISSI, Oki, Philips, SST, Temic, Triscend, MHS, LG, Winbond, Silicoh Systems и рядом других. Приложение 6 полностью посвящено вопросам модернизации систем на основе МК семейства х51. Не секрет, что во многих случа- ях служащим верой и правдой изделиям уже не хватает памяти и производительности. О том, что можно предпринять в данном слу- чае, вы узнаете из материала этого приложения. Приложение 7 посвящено описанию простого программного си- мулятора для х51, который верой и правдой служит автору настоя- щих строк уже несколько лет-. В приложении 8 описаны 24-разрядные АЦП семейства AD77xx фирмы Analog Devices, являющиеся одними из самых сложных, но в то же время гибких и интересных изделий. Поскольку в одном из примеров Главы 7 первого тома рассмотрен милливольтметр на AD7714, я счел необходимым в одном из приложений более подроб- но рассказать о микросхемах этого семейства. Приложение 9 посвящено практике отладки микроконтроллер- ных систем при помощи аппаратного эмулятора и программного симулятора. Попутно в нем рассказано обо всех применяемых в на- стоящее время средствах поддержки разработки - от программато- ров до плат развития (Evaluation Board). Приложение 10 посвящено новейшим х51-совместимым микро- контроллерам, производимым фирмой Cygnal. Главная особенность ее продукции — очень высокая производительность, сопоставимая с производительностью 16-разрядных микроконтроллеров. Поэтому для тех, кому не хватает быстродействия 51-х контроллеров, может оказаться интересным знакомство с этими изделиями. Как знать, мо- жет они удовлетворят вас, и вам не придется тратить время на осво- ение нового изделия. И наконец, два последних приложения посвящены очень интерес- ным изделиям микроконвертерам AduC8xx от Analog Devices и анало- гичным им MSC1210 Texas Instruments. Их даже трудно назвать микро- контроллерами в привычном смысле слова. Это многоразрядные АЦП, в которые для расширения пользовательских возможностей встроен выполненный на современном уровне микроконтроллер семейства х51, работа которого не ухудшает точностных характеристик преобразова- теля. Описанные микросхемы оказались чрезвычайно благожелательно встречены пользователями, и можно не сомневаться, что с течением времени круг подобных изделий будет расширяться. Так что, как видите, слухи о кончине славного 51-го семейства оказались явно преувеличенными, и сейчас оно фактически пережи- вает свое второе рождение. А у вас появилась возможность поближе познакомиться со всеми х51-совместимыми изделиями и выбрать из них то, что вам окажется по душе.
КОНСУЛЬТАЦИОННО-ТЕХНИЧЕСКИЙ ЦЕНТР по МИКРОКОНТРОЛЛЕРАМ 127030 Москва, 1-й Щемиловский пер., д.19 Тел.: (095) 973-1855, 978-7210, 978-7213 Факс:(095) 973-1864 Http: www.cec-mc.ru E-mail: info@cec-mc.ru РАЗРАБОТКА, ПРОИЗВОДСТВО • Полный комплекс разработки электронных изделий любой сложности с применением микропроцессоров, трассировка печатных плат, выпуск технической документации, изготовление опытных образцов, проведение механических и климатических испытаний. • Серийный выпуск электронных изделий на сертифицированном . производстве. • Комплексный подход от разработки до производства электронных изделий с поставкой комплектующих изделий. • Разработка н изготовление тестового оборудования. • Настройка н тестирование готовых устройств. • Монтаж электронных изделий любой сложности на современной автоматизированной линии ( SMD и BGA) с поставкой комплектующих. ОПТОВАЯ ПОСТАВКА ИМПОРТНЫХ ЭЛЕКТРОННЫХ КОМПОНЕНТОВ ПРОМЫШЛЕННОГО ПРИМЕНЕНИЯ • Микроконтроллеры н микропроцессоры • Средства разработки и отладки. • Микросхемы и модули памяти. • Индикаторы: ЖКИ и светодиодные; светодиоды. • Промышленные корпуса н шкафы. • Оптоэлектроника. • Электромеханические компоненты. • Аналоговые компоненты: о АЦП о ЦАП о Датчики • Дискретные компоненты: о Диоды о Транзисторы о MOSFET о IGBT о Тиристоры о Симисторы • Источники питания: о Трансформаторы о DC/DC конверторы о Батарейки о Аккумуляторы Оказание консультационных услуг на этапах эскизного проектирования, разработки и производства электронных изделий, с целью выбора современных схемотехнических решений и оптимального выбора элементной базы. Стоимостной анализ на всех этапах проводимых работ с целью снижения стоимости проекта за счет комплексного подхода и оптимальных решений.
Приложение 1 ЧИСЛА, КОДИРОВАНИЕ И АРИФМЕТИЧЕСКИЕ ВЫЧИСЛЕНИЯ 1. ДВОИЧНЫЕ ЧИСЛА Цифровые вычислительные машины работают с двоичными чис- лами. Двоичная система счисления или система с основанием 2 исполь- зует только цифры 0 и 1. Эти двоичные числа названы битами (от binary digit). Физически в цифровых электронных системах бит 0 представлен напряжением Low (низким), а бит 1 — напряжением High (высоким). Человек использует десятичную систему счисления. Десятичная система или система с основанием 10 содержит 10 цифр (от 0 до 9). Она также характеризуется значением позиции (или весом). В табл. 1 показано, например, что десятичное число 1327 равно одной тысяче, плюс три сотни, плюс два десятка, плюс семь единиц (1000 + 300 + + 20 + 7= 1327). Таблица 1 Значения позиций десятичных чисел Степень основания ю3 ю2 ю1 10° Значения позиций 1000 100 10 1 Десятичные Г1 3 2 7 [ 1000 + 300 + 20 + 7 = 132' Двоичная система обладает свойством уравновешивания. В табл. 2 приведены десятичные значения первых четырех двоичных позиций. Двоичное число 1001 (произносится: один, нуль, нуль, один) преоб- разовано, таким образом, в свой десятичный эквивалент 9. Бит еди- 7
ницы двоичного числа в табл. 2 называется младшим битом (МБ), бит восьмерки — старшим битом (СБ). Таблица 2 Значения позиций двоичных чисел Степень основания 23 22 21 2° Значения позиций 8 4 ' 2 1 Двоичное СБ1 0 0 МБ 1 Десятичное 8 + 0 + 0 + 1 = 9 В табл. 3 приведены десятичные числа от 0 до 15, а также их дво- ичные эквиваленты. Те, кто работает с ЭВМ, должны, по меньшей мере, запомнить эти двоичные числа. Таблица 3 Десятичные числа и их двоичные эквиваленты Десятичные Двоичные Десятичные Двоичные 10 1 8 4 2 1 10 1 8 4 2 1 0 0 8 10 0 0 1 1 9 10 0 1 2 1 0 1 0 10 10 3 1 1 1 1 10 11 4 1 0 0 1 2 ’110 0 5 1 0 1 1 4 110 1 6 1 10 1 4 1110 7 1 11 1 5 1111 Как преобразовать двоичное число 1011 ОНО (т. е. один, нуль, один, один, нуль, один, один, нуль) в его десятичный эквивалент? Процедура преобразования выполняется в соответствии с табл. 4. Десятичные значения каждой позиции записаны под каждым би- том, затем десятичные числа суммируются (128+32+16+4+2), что дает 182. Таблица 4 Двоично-десятичные преобразования Степень основания 27 26 25 24 23 22 2: - Значения позиций 128 64 32 16 8 4 2 1 Двоичное Десятичное 1 128 + 1 32 + 1 16 0 + 1 4 + 1 2 0 182 8
Обычно основание системы счисления указывается индексами. Таким образом, число 1011 01102 является двоичным (или с основа- нием 2), ачисло'18210 — десятичным: 1011 01102 = 18210. Как преобразовать десятичное число 155 в его двоичный эквива- лент? Процедура преобразования приведена на рис. 1. Рис. 1. Двоично-десятичные преобразования Десятичное 155 сначала делится на 2, что дает нам частное 77 и остаток 1. Этот остаток становится МБ двоичного числа и помещается на свою позицию (см. рис. 1). Затем частное (77) перемещается, как показывает стрелка, и становится следующим делимым. Затем каждое частное последовательно делится на 2 до тех пор, пока не получится частное, равное 0, и остаток, равный 1 (см. предпоследнюю строку на рис. 1). Последняя строка на рис. 1 дает нам результат 155] 0 = 100110112. Упражнения 1. Большинство людей в своей практической деятельности используют де- сятичную систему, цифровая ЭВМ использует систему. 2. В двоичной системе бит означает. 3. Число 100] 0 является числом. 4. Записать двоичное число один, один, нуль, нуль в цифровой форме. 5. Что означает сокращение МБ? 6. Преобразовать в десятичный код следующие двоичные числа: а) 0001; б) 0101; в) 1000; г) 1011; д) 1111; е) 0111. 7. Преобразовать в десятичный код следующие двоичные числа: а) 1000 0000; б) 0001 0000; в) ООН ООП; г) ОНО 0100; д) 0001 1111; е) 1111 1111. 8. Преобразовать в двоичный код следующие десятичные числа: а) 23; б) 39; в) 55; г) 48. 9
9.204,о =------2. 10. 1110 11102 = 10- Решения 1. Двоичную или основания 2. 2. Двоичную цифру (binary digit). 3. Десятичным (основания 10). 4. 1Ю02. 5. Младший бит. 6. Обратимся к табл. 3: а) 0001, = 110; б) 01012 = 51(у в) 10002 = 8lty г) 10112=11^ д) 11112=15^е) 01112=7io. 7. Следуем процедуре, приведенной в табл. 2: а) 1000 0000?=12810; б) 0001 OOOO2=16lo; в) ООП 00112=5110; г) ОНО 01002=100^ д) 0001 1111? = 31^ е) 11111111~2 = 25510. 8. См. рис. 1: а) 2310:2—11, остаток 1 (МБ) 11:2 = 5, остаток 1; 5:2 = 2, остаток 1; 2:2=1, остаток 0; 1:2 = 0, остаток 1 (СБ) б) 3910: 2 = 19, остаток 1 (МБ) 19:2 = 9, остаток 1; 9:2 = 4, остаток 1; 4:2 = 2, остаток 0; 2:2 = 1, остаток 0; 1:2 = 0, остаток 1 (СБ); 6) 5510:2 = 27, остаток 1 (МБ) 27: 2 = 13, остаток 1; 13:2 = 6, остаток 1; 6:2 = 3, остаток 0; 3:2=1, остаток 1; 1:2 = 0, остаток 1 (СБ); Обратимся к рис. 1: 20410 = 9. 1110 11102 = 2381о. г) 4810:2 = 24, остаток 0 (МБ); 24:2= 12, остаток 0; 12:2 = 6, остаток 0; 6:2 = 3, остаток 0; 3:2 = 1, остаток 1; 1:2 = 0, остаток 1 (СБ). 1100 11002. 10. Обратимся к табл. 2: 2. ШЕСТНАДЦАТЕРИЧНЫЕ ЧИСЛА Ячейка памяти типичной микро-ЭВМ может содержать, напри- мер, двоичное число 10011110. Такая длинная цепь нулей и единиц сложна для запоминания и неудобна для ввода с клавиатуры. Число 10011110 могло бы быть преобразовано в десятичное, что дало бы 158]0, но процесс преобразований занял бы много времени. Большая часть систем микроинформатики использует шестнадцатеричную форму записи, чтобы упростить запоминание и использование та- ких двоичных чисел, как 10011110. Шестнадцатеричная система счисления (hexadecimal) или систе- ма с основанием 16 использует 16 символов: от 0 до 9 и А, В, С, D, Е, F. 10
В табл. 5 приведены эквиваленты десятичных, двоичных и шестнад- цатеричных чисел. Таблица 5 Десятичные, шестнадцатеричные и двоичные эквиваленты Заметим, что каждый шестнадцатеричный символ может быть представлен единственным сочетанием четырех бит. Таким образом, представлением двоичного числа 10011110 в шестнадцатеричном коде является число 9Е. Это значит, что часть 1001 двоичного числа равна 9, а часть 1110 равна Е (конечно, в шестнадцатеричном коде). Следо- вательно, 100111102 = 9Е16. (Не следует забывать, что индексы озна- чают основание системы счисления). Так повелось, что в практике программирования шестнадцате- ричные числа выделяются не подстрочным индексом ]6, а буквой Н в конце числа. Иными словами, программисты обычно пишут 9ЕН, а не 9Е]6, хотя и то, и другое означают одно и то же. Еще одно прави- ло — если старший разряд шестнадцатеричного числа равен А, В, С, D, Е или Н, то при записи перед ними ставят 0. Например, правильно записать не ВН, a 0BH, не C83DH, a 0C83DH и т. д. Это делается для того, чтобы программы-ассемблеры различали числа от- имен меток или констант. Имя всегда должно начинаться с буквы, а число — с цифры. Как преобразовать двоичное число 1110102 в шестнадцатеричное? Надо начать с МБ и разделить на двоичное число на груцпы из 4 бит. Затем надо заменить каждую группу из 4 бит эквивалентной шест- 11
надцатеричной цифрой : 10102 = А16, 00112 = 316, следовательно, 1110102 = ЗА]6. Как преобразовать число 7F в двоичное? В этом случае каждая шестнадцатеричная цифра должна быть заменена своим двоичным эквивалентом из 4 бит. В примере двоичное число 0111 заменено шестнадцатеричной цифрой 7, а 1Ш2 заменяет F16, откуда 7F16 = 1111 01112. Шестнадцатеричная запись широко используется для представ- ления двоичных чисел, поэтому содержимое табл. 5 также необходи- мо запомнить. Таблица 6 Преобразование шестнадцатеричного числа в десятичное Степень шестнадцати 163 162 161 16» Значение позиции 4096 256 16 1 Шестнадца- теричное Десятичное 2 4096 X 2 8192 + С 256 X _12 3072 + 6 16 X 6 96 + Е 1 X 14 14 = И37410 Преобразуем шестнадцатеричное число 2С6Е16 в десятичное. Последовательность приведена в табл. 6. Значениями позиций пер- вых четырех шестнадцатеричных цифр являются соответственно слева направо 4096, 256, 16 и 1. Десятичное число содержит 14 (Е16) единиц, 6 чисел 16, 12 (С16) чисел 256 и 2 числа 4096. Каждая цифра умножается на соответствующий ей вес, получается сумма, которая и дает нам десятичное число 11374 (14x1 + 6x16 + 12x256 + 2x4096 = 11374). Преобразуем десятичное число 15797 в шестнадцатеричное. На рис. 2 показана последовательность действий. МР 15797ю 16 = 987 остаток 5ю = 5ю_ f 1 987 io: 16 = 61 остаток 11 ю = Вю_ f------1 61 ю: 16 = Зостаток 13ю = Dig _ f ’ Ср 3i0:1б = 0остатокЗю = 31б _ 15797ю= 3 D В 5 Рис. 2. Десятично - шестнадцатеричное преобразование Рис. 2. Десятично-шестнадцатеричное преобразование 12
В первой строке 1579710 разделено на 16, что дает частное 98710 и остаток 510, который преобразуется затем в свой шестнадцатеричный эквивалент (510 = 516) и становится цифрой младшего разряда (МР) шестнадцатеричного числа. Первое частное (987) становится дели- мым во второй строке и снова делится на 16, что дает частное 61 и остаток 1110 или шестнадцатеричное В. В третей строке 61 делится на 16, дает частное 3 и остаток 1310 или D16, а в четвертой строке дели- мое 3 делится на 16, дает частное 0 и остаток 310 или 316. Когда част- ное равно 0 (как в четвертой строке) преобразование заканчивается. Таким образом, 316 становится цифрой старшего разряда (СР) резуль- тата, т. е. 15797]0=3DB516. Упражнения 11. Шестнадцатеричная запись широко используется как сокращенная форма записи (двоичных, десятичных) чисел. 12. Шестнадцатеричная система имеет основание. 13. Записать следующие шестнадцатеричные числа в двоичной форме: а) С16; б) 61б; в) F16; г) Е16; д) 1А1б; е) 3D16; ж) А01б; з) 8В16; и) 45]6; к) D716. 14. Преобразовать следующие двоичные числа в шестнадцатеричный код: а) 10012; б) 11002; в) 11012; г) 11112; д) 1000 00002; е) 0111 11102; ж) 001 01012;з) 1101 10112. 15. Преобразовать следующие шестнадцатеричные числа в десятичный код: а) 7Е,,; б) DB.,; в) 12АЗ,,; г) 34CF.,. 16.21710 =--------16. 17. 4837310 =-----,6. Решения 11. Двоичных. 12. 16. 13. Используя таблицу 2.5 и процедуру, приведенную в разделе 9.2 получа- ем: а) С,6 = 1102,; б) 6,в = 01102; в) F16 = 11112; г) Е,6 = 11102; д) 1А,6 = 0001 1010у е) 3Dl6 = 0011 11012; ж) А016 = 1010 00002; з) 8В16 = 1000 10112; и) 45/6 = 0100 01012;к) D7,6 = 11010111,. 14. а) 11012 = 9ц^б) 11002 = С16; в) 11012= Dl6; г) И 112 = F^ д) 1000 00002 = 801(2 е) 0111 11102 = 7Е1(; ж) 001 01012 = 15^ з) 1101 1011, = DBI6. 15. а) 7Е1Ь = (16*7) + (1*14) = 12610; б) DBI6 = (16*13) + (1*11) = 219^ в) 12А31Ь + (4096*1) + (256*2) + (16*10) = (1 *3) = 4771010; г) 34CF1Ь = (4096*3) + (256*4) + (16*12) + (1*15) = 135910. 16. 21710 = D9I6 — действия следующие: 21710:16= 13, остаток 910 = 91ь (МР); 1310:16 = 0, остаток 13l0 = Dl6 (СР). 17. 4837310 :16 = 3023, остаток 510 = 5;б (МР); 13
3023 :16- 188, остаток 15l0 = Fl(j 188 : 16= 11, остаток 12]g - C]6; 11 : 16 = 0, остаток 1110 = Bl6 (CP). Таким образом, 4837310 = BCF5l(i. 3. ВОСЬМЕРИЧНЫЕ ЧИСЛА Восьмеричная запись, как и шестнадцатеричная, используется для представления двоичных чисел. Восьмеричная система содержит 8 цифр от 0 до 7 и является соответственно системой с основанием 8. В табл. 7 представлено несколько десятичных, восьмеричных и двоичных чисел. Преобразуем двоичное число 111110001002 в его восьмеричный эквивалент. Процедура действий в этом следующая. Начиная с МБ двоичного числа, делим его на группы из 3 бит. Затем, используя табл. 7, преобразуем каждую триаду (группу из 3 бит) в эквивалент- ную восьмеричную цифру. Таким образом, мы заменим двоичное число 111110001002 его восьмеричным эквивалентом 3704g : Двоичное число 011 111 000 100 Восьмеричное число 3 7 0 4 Таблица 7 Десятичные, восьмеричные и двоичные эквиваленты Преобразуем теперь восьмеричное число 65218 в его двоичный эквивалент. Каждая восьмеричная цифра заменяется двоичной три- адой и получится, что 65218 = 1101010100012: Восьмеричное число 6 5 2 1 Двоичное число ПО 101 010 001 Запишем восьмеричное число 23578 в десятичной форме. Клас- сическая процедура выполняется согласно табл. 8. Здесь 512, 64, 8 и 14
1 — веса первых восьмеричных позиций. Заметим, что в этом при- мере содержится 7 единиц, 5 восьмерок, 4 числа 64 и два числа 521. Мы их складываем и получаем результат: 2x512 + 4x64 + 5x8 + 7 = 1024 + 192 + 40 + 7= 126310. Таблица 8 Восьмерично-десятичное преобразование Степень восьми 83 82 81 8° Значение позиции 512 64 8 1 Восьмеричное число Десятичное число 2 512 X 12 1024 + 3 64 X 3 192 + 5 8 X 5 40 + 7 1 X 7 7 = 12б310 Еще один пример — преобразуем десятичное число 333610 в его восьмеричный эквивалент (рис. 3). В первую очередь 333610 разделено на 8, что дает частное 41710 и остаток О1о, причем 0I0 = 0g. Восьмерич- ный 0 становится значением МР восьмеричного числа. Первое част- ное (417) становится делимым и снова делится на 8 (вторая строка), что дает частное 5210 и остаток 110 = 18, который становится второй цифрой восьмеричного числа. В третьей строке частное (52) становится делимым, и деление его на 8 дает частное 610 и остаток 4]0 = 4g. В чет- вертой строке последнее частное 6 разделено на 8 с частным 0 и остат- ком 610 = 68. МР ЗЗЗбю: 8 = 417 остаток 0ю = _ f--------1 417ю-8 = 52остаток 1ю= 38 _ f------' 52ю: 8 = 6остаток4ю = 4в _ f СР 6ю: 8 = 0 остаток 6,о = 6а_ 3336ю= 6 4 10 Рис. 3. Десятично-восьмеричное преобразование Теперь счет закончен последним частным 0. Цифра 68 становит- ся значением СР восьмеричного числа, и мы можем видеть на рис. 3, что 333610 = 64108. Большинство микропроцессоров и микроконтроллеров обраба- тывают группы из 4, 8 или 16 бит. Отсюда следует, что обычно чаще используется шестнадцатеричная запись, чем восьмеричная. Однако 15
восьмеричная запись более удобна, когда группы бит делятся на 3 (например, группы из 12 бит). Упражнения 18. Для представления двоичных чисел в тексте документации 8-разряд - ного микропроцессора используют(шестнадцатеричную, восьме- ричную) систему. 19. Другим названием восьмеричной системы является. 20. Записать следующие восьмеричные числа в двоичном коде: а) 38; б) 78; в) 08; г) 76428; д) 10368; е) 2105g. 21. Записать следующие двоичные числа в восьмеричном коде: а) 1012; б) 1102; в) 0102; г) 111000101010-,; д) 10110001112; е) 1001101001012. 22. 67248 =------10. 23. 264810 =-----8. Решения 18. Шестнадцатеричную, при которой удобно представить двоичное число двумя 4-разрядными группами. 19. Система с основанием 8. 20. а) 38 = 0112; б) 78 = 1112; в) 08 = 0002; г) 7642& = 1111101000102; д) 10368 = 10000111102;е) 2105 8 = 100010001617. 21. а) 1012 = 58; б) 1102 = 68; в) 0102 = 28; г) 1110001010102 = 70528; д) 10110001112 = 13078; е) 1001101001012 = 46458. 22. Согласно табл. 8:67248 = (512*6) + (64*7) + (8*2) + (1*4) = 354010. 3. Согласно рис. 3 : 264810 : 8 = 331, остаток О (МР); 331: 8 = 41, остаток 3; 41: 8 = 5, остаток 1; 5:8 = 0, остаток 5 (СР); 262610 = 51308. 4. ДВОИЧНО-ДЕСЯТИЧНЫЕ ЧИСЛА Для удобства преобразования чистые двоичные числа представля- ются десятичными либо шестнадцатеричными. Однако ограничиться только этими формами представления чисел не удается. В калькулято- рах, магистралях и числовых приборах, когда на доступных пользовате- лю индикаторах и устройствах ввода обычно используют десятичные числа, для их представления используют специальный двоично-деся- тичный код (ДДК). В табл. 9 приведено несколько десятичных чисел и соответствующих им двоично-десятичных эквивалентов (система 8421). Здесь определяются веса позиций каждого из четырех бит ДДК (здесь мы не будем рассматривать другие ДДК, например 5421 и плюс 3). 16
Таблица 9 Двоично-десятичный код 8421 Десятичные числа Двоично-десятичные числа 8 4 2 1 0 0 0 0 0 1 0 0 0 1 2 0 0 1 0 3 0 0 1 1 4 0 1 0 0 5 0 1 0 1 6 0 1 1 0 7 0 1 1 1 8 1 0 0 0 9 1 0 0 1 Запишем десятичное число 369110 в ДДК 8421. Каждая десятичная цифра преобразуется прямо в свой двоично-десятичный эквивалент из 4 бит, и преобразования дают 3691]0 = ООП ОНО 1001 0001 ДДК: Десятичное число 3 6 9 1 Двоично-десятичное число ООП ОНО 1001 0001 Преобразуем теперь двоично-десятичное число 100000000111 0010 в его десятичный эквивалент. Каждая группа из 4 бит прямо пре- образуется в ее десятичный эквивалент, и тогда получаем 1000 0000 0111 0010 ДДК = 807210: Двоично-десятичное число 1000 0000 0111 0010 Десятичное число 8 0 7 2 Микропроцессоры и микроконтроллеры складывают чистые двоичные числа, но они обладают, однако, командами для преоб- разования результата своих сложений в двоично-десятичную за- пись. Полученные двоично-десятичные числа легко затем пред- ставить в десятичной записи, используя описанные выше простые процедуры. Упражнения 24. Запись ДДК является сокращением. 25. Наиболее общей записью двоично-десятичного кода является ДДК(5421,8421). 17
26. Записать следующие десятичные числа в ДДК 8421: а) 3910; б) 6510; в) 4О]о; г) 1710;д) 8210;е) 9910. 2.2 7. Записать следующие двоично-десятичные числа в десятичном коде: а) 1000 0000; б) 0000 0001; в) 1001 0010; г) 0111 ОНО; д) 0100 ООП; е) 0101 0101. Решения 24. Двоично-десятичного кода. 25. 8421. 26. Следуя процедуре, приведенной в разделе 9.4, получаем: а) 3910 = ООП 1OO1 ДДК; б) 6510 = ОНО O1O1 ДДК; в) 4О10 = 0100 0000 ДДК; г) 17,0 = 0001 0111 ДДК; д) 8210 = 1000 0010 ДДК; е) 9910 = 1001 1001 ДДК. 27. Следуя процедуре, приведенной в разделе 9.4, получаем: а) 1000 0000ДДК- 8010; б) ОООО ООО1 ДДК = 110; в) 1OO1 ОО1О ДДК = 9210; г) 0111 ОНО ДДК = 76t(y д) 0100 ООН ДДК =43 е) 0101 0101 ДДК = 5510. 5. ДВОИЧНАЯ АРИФМЕТИКА Сложение, вычитание или умножение двоичных чисел выполня- ется так же, как и в арифметике десятичных чисел. Большинство микропроцессоров и микроконтроллеров располагает лишь коман- дами сложения и вычитания двоичных чисел, и только некоторые, число которых не столь велико, выполняют команды умножения и деления (например, микропроцессоры Intel 8086/8088). На рис. 4, а представлены простые правила двоичного сложения. Два первых (слева) правила очевидны, третье показывает, что 1 + 1 = 10, т. е. наиболее значимая единица переносится в ближайший стар- ший разряд. Четвертое правило показывает, что 1 + 1 + 1 = 11.В этом случае первое, второе слагаемые и запоминаемое в результате сложе- ния в младшем разряде числа—единицы. Результатом является сум- ма 1 с переносом 1. Запоминание 1-е слагаемое 0 + 2-е слагаемое 0 Сумма 0 из менее значимой » позиции 0 1 1 + + + J_ 1 1 L 0 L 1 Перенос Перенос в следующую старшую а) позицию Ш 1 Переносы 1 1-е слагаемое 00111011 59 + + 2-е слагаемое 00101010 42 Сумма 011001012 Ю1ю Рис. 4. Двоичное сложение: а — правила; б — пример 18
Сложим двоичные числа 0011 10112 и 0010 10102 (операция пока- зана на рис. 4, б). Для большей ясности действия с десятичными эк- вивалентами обрабатываемых чисел показаны на рисунке справа. Суммой двух чисел ООП 10112 и 0010 10102 будет 0110 01012. На рис. 5, а приведены правила двоичного вычитания. Первые три аналогичны десятичному вычитанию. Последнее требует заема из более значимого предшествующего разряда (в этом случае вес 2). Уменьшаемым является двоичное число 10, вычитаемым — 1, раз- ностью — 1. Вычтем двоичное число ООП 10012 из 0101 01012. Этот пример приведен на рис. 5, б. Разряды весов 1, 2 и 4 этого двоичного вычита- ния просты для выполнения и относятся к первым трем правилам на рис. 5, а. В колонке веса 8 имеет место вычитание 1 из 0. Тогда 1 зани- мается из колонки веса 16. О 1 10 10 010010 t /// Уменьшаемое 0 1 1 10 01010101 85 Вычитаемое 0. 0. _L _1 00111001 57 Разность 0 1 0 1 00011100г 28ю а) 6} Рис. 5. Двоичное вычитание: a — правила; б — пример Единица вычитается из 102, что дает разность 1 согласно четвертому правилу 5, а. После этого заема в колонке веса 16 имеет место вычита- ние 1 из нового вычитаемого 0. Согласно четвертому правилу 1 должна быть занята из следующей, более значимой позиции (колонка веса 32), но в колонке 32 имеется 0; поэтому колонка 32 должна сделать заем из колонки веса 64, что и выполнено. Окончательно колонка 16 делает заем из колонки32, уменьшаемым в колонке 16 становится 102, вычитаемым 1, разностью 1. В колонке 32 имеем 1 - 1 = 0, в колонке 64: 0 - 0 = 0, в колонке 128:0 - 0 = 0. Таким образом, рис. 5, б иллюстрирует операцию вычитания ООП 10012 из 0101 01012 (справа эта задача решена в деся- тичной записи). Правила десятичного умножения: Множимые 0101 X X X X Множители 0 0 1 1 Произведения 0 0 0 1 Два первых правила не требуют никаких пояснений. В двух других множителем является 1: при двоичном умножении, когда множителем является 1, множимое становится результатом и представляет собой произведение. Когда множитель 0, произведение всегда равно 0. 19
Выполним умножение 11012 на 1012. Как и в случае умножения де- сятичных чисел, множимое сначала умножается на число, стоящее в младшем разряде (в рассматриваемом случае — бит в колонке веса 1). Множимое 1101 X Множитель 101 1 -е частичное произведение 1101 1 -е частичное произведение 0000 1 -е частичное произведение 1101 13 X _5 65ю Конечное произведение Ю000012 Рис. 6. Двоичное умножение Поскольку бит множителя в разряде веса 1 является 1, множимое копируется и составляет первое частичное произведение. Вторым би- том множителя является 0, тогда второе частичное произведение есть 0000 (заметим, что оно сдвинуто на одну позицию влево). Битом разря- да веса 4 множителя является 1, тогда для получения третьего частично- го произведения снова следует копирование множимого (заметим, что копирование завершается новым сдвигом на одну позицию влево). После этого выполняем сложение трех частичных произведений, что дает ре- зультат 10000012. Полученный результат 11012х1012 = 1000001, соответ- ствует произведению десятичных чисел 1310х510 = 6510. Упражнения 28. Выполнить следующие сложения двоичных чисел: а) 10102 б) 11012 в) 0101 1011, г) ООН 11112 4- 4- + + 01012 01012 0000 11112 0001 11112 29. Выполнить следующие вычитания двоичных чисел: а) 10102 б) 10102 в) ОНО 01102 г) 0111 10002 10002 01012 0000 1010-, ООП 1Н12. 30. Первое число при умножении называется. второе — множителем, а результат составляет. 31. Выполнить следующие умножения двоичных чисел: а) 10012 б) Н012 в) 11112 г) 11102 X X X X П2 10012 1012 11102. 20
Решения 28. См. рис. $:а) 1111,; б) 10010,; в) 01101010,; г) 0101 1110,. 29. См. рис. 5: а) ОНО,; 6) 0101,; в) 01001100,; г) ООП 1001,~ 30. Множимое. Произведение. 31. а) ПОП,; б) 111 0101,; в) 1001011; г) 11000100,. ДОПОЛНИТЕЛЬНЫЙ код Сам микропроцессор или микроконтроллер обрабатывает ин- формацию обычно в двоичном коде. Однако, если нужно использо- вать числа со знаком, очень часто программистами используются специальные (знаковые) формы представления чисел и преобразо- вание их в дополнительный код. Последнее, как будет показано ниже, позволяет упростить алгоритмы вычитания. 76543210 76543210 76543210 ГШ ТТГП ЕЛ Ш"Л] ЕПТТГТП 128 64 32 16 8 4 2 1 (+) 64 32 16 8 4 2 1 (-)'-,-’ Вес двоичной Бит Вес двоичной Бит Запись дополнительного позиции знака позиции знака *ода а) 6) в) Рис. 7. Изображение регистра МП (МК) или ячейки памяти: а — расположение двоичных позиций; б — идентификация положительных чисел нулем в знаковом бите; в— идентификация отрицательных чисел единицей в знаковом бите На рис. 7, а приведено обычное изображение регистра МП (МК) или ячейки внутреннего или внешнего ОЗУ. Такой регистр представ- ляют пространством из 8 бит данных. Позиции бит пронумерованы от 7 до 0, а веса двоичных позиций указаны в основании регистра, бит 7 имеет вес 128, бит 6 — 64 и т. д. На рис. 7, б и в показаны типовые структуры 8-разрядных регист- ров при использовании их для размещения чисел со знаком. В обоих случаях бит 7 является знаковым. Он указывает, является ли число по- ложительным (+) или отрицательным (-). Если знаковый бит — нуль, то число положительно, если единица — отрицательно. Оставшиеся ячейки памяти (с шестой по нулевую) содержат двоичное 7-разрядное число. Например, если регистр на рис. 7, б содержит 0100 0001, это соот- ветствует числу +6510 (64 + 1, знаковый бит положительный). Если в него записано 0111 1111, содержимым будет +12710 ( знаковый бит по- ложителен; 64 + 32 + 16 + 8 + 4 + 2 + 1 = 127), что является наибольшим положительным числом, которое может содержать 7-разрядный регистр. Нуль кодируется числом 0000 0000, т. е. он в рассматриваемом нами пред- ставлении чисел со знаком нуль — положительное число (его старший бит равен 0), восьмерка кодируется числом 0000 1000 и т. д. 21
Таблица 10 Представление десятичных чисел со знаком Десятичные Представление чисел со знаков Примечания +127 +8 +7 +6 + 5 +4 +3 +2 +1 +0 -1 -2 -3 -4 -5 -6 -7 -8 -128 0111 1111 0000 1111 0000 0111 0000 оно 0000 0101 0000 0100 0000 ООН 0000 0010 0000 0001 0000 0000 1111 1111 1111 1110 1111 1101 ни 1100 1111 1011 1111 1010 1111 1001 1111 1000 1000 1111 Положительные числа представлены в той xt форме, что и прямые двоичные числа Отрицательные числа представлены в форме дополнительного кода Рассмотрим, как можно осуществить это преобразование. На- пример, какой будет запись в рассматриваемом нами представле- нии отрицательных чисел числ"а -9? Преобразование осуществля- ется в четыре этапа. Полученный в ходе описанного преобразования результат (1111 0111) называется дополнительным кодом поло- жительного десятичного числа 9. Процесс преобразования в до- полнительный код состоит в инверсии всех бит числа (замене еди- ниц на нули и наоборот) и прибавлении к инвертированному результату единицы. Таким образом, мы для представления отри- цательных чисел используем представление равных им по моду- лю положительных чисел в дополнительном коде. В приведенном примере 9 кодируется как 0000 1001, дополнительным кодом числа 9 является 1111 0111, и именно этот код мы будем использовать для пред- ставления числа -9. Заметим, что в последнем случае знаковый бит — единица, что удовлетворяет выбранному нами критерию идентифи- кации отрицательных чисел. А каким будет десятичный эквивалент числа 1111 0000, записан- ного в форме дополнительного кода? Иными словами, как найти, 22
какому знаковому десятичному числу соответствует 1111 0000? Про- цедура преобразования в этом случае следующая: Десятичное число 9 Этап 1. Запись десятичного числа без знака (9) Двоичное число 0000 1001 Этап 2. Преобразование десятичного числа в двоичный код (0000 1001) Дополнение до 1 (обратный или инверсный код) 1111 0110 Этап 3. Получить обратный код двоичного числа заменой нулей единицами, а единиц,-нулями (1111 0110) Дополнение до 2 (дополнительный код) +1_ 1111 0111 Этап 4. Прибавить единицу к обратному коду. Здесь прибавить 1 к 1111 0110, что дает 1111 0111 Рис. 8. Преобразование десятичного числа в дополнительный код Как видите, процесс преобразования тот же самый — формиро- вание инверсного кода и добавление 1, т. е. те же процедуры, которые мы проводили при преобразовании двоичного числа в дополнитель- ный код. Однако следует отметить, что хотя в результате преобразо- вания мы получили положительное двоичное число 0001 0000 = 1610, исходная запись дополнительного кода (1111 0000) содержит едини- цу в старшем бите, что означает, что 1111 0000 = ~1610. Упражнения 32. Когда числа со знаком помещается в 8-разрядный регистр микро- процессора, старший (7-й) бит называется. 33. Установить, являются ли следующие знаковые числа с представле- нием в дополнительном коде положительными или отрицательными: а) 0111 0000; б) 1100 1111; в) 1000 1111; г) 0101 0101. 34. Используя табл. 10, представить в виде знаковых чисел с использо- ванием дополнительного кода следующих десятичных чисел со знаком: а) +1; б) +5; в) +127; г) -1; д) -2: е) -128. 35. Используя процедуру, приведенную в этом разделе, представить в виде знаковых чисел с использованием дополнительного кода следующих десятичных чисел со знаком : а) -10; б) -21; в) -34; г) -96. 36. Расположение бит в дополнительном коде(в ДДК, в дво- ичном коде) одинаково для положительных двоичных чисел. 37. Используя процедуру, приведенную в разделе 9.6, дать десятичные эквиваленты следующих знаковых чисел с дополнительным кодом: а) 1111 1011; 6) 0000 1111; в) 1000 1111; г) 0111 0111. Решения 32. Знаковым. 33. а) 0111 0000 положительно, так как знаковый бит 0; б) 11001111 от- рицательно, так как знаковый бит 1; 23
в) 1000 1111 отрицательно, так как знаковый бит 1; г) 0101 0101 поло- жительно, так как знаковый бит 0. 34. см. табл. 10: а) +1 = 0000 0001; б) +5 = 0000 0101; в)+127 =0111 1111; г)-1 = 11111111; д) -5= 11111110; е)-128 = 1000 0000. 35. В соответствии с рекомендациями раздела 9.6 имеем следующие ре- зультаты: а) этап 1 (преобразование десятичного числа в двоичный код): 10!0 = 000010102; этап 2 (получение обратного кода): 000010102а 1111 0101; этап 3 (добавление 1): 1111 0101 + 1 = 11111 ОНО (доп.код); б) этап Г. 2110 = 0001 01012; этап 2: 0001 01012 а 1110 1010; этап 3: 1110 1010 + 1 =1110 1011 (доп. код); в) этап 1: 34/0 = 0010 00102; этап 2: 0010 00102а 1101 1101; этап 3: 1101 1101 + 1 = 1101 1110 (доп. код); г) этап 1: 9610 = 0110 00002; этап 2: 011000002 и 1001 1111; этап 3:1001 1111 + 1 = 10100000 (доп.код). 36. В двоичном коде. 37. а) 1111 1011 (доп. код) =-510. обратный код 1Г11 1011 а 0000 0100 + 1 0000 0101 = 5; б) 00001111 (доп. код) = +15; в) 10001111 (доп. код) =-113 обратный код 10001111 а 0111 0000 + 1 0111 0001 = 113; г) 0111 0111 (доп. код) = +119. 7 . АРИФМЕТИКА В ДОПОЛНИТЕЛЬНОМ КОДЕ Для микропроцессоров и микроконтроллеров оказывается пред- почтительным применение знаковых чисел в соответствии с табл. 10 (для простоты далее будем говорить — в форме дополнительного кода), потому что среди них нет таких, которые были бы не в состоя- нии выполнить операции инверсии, инкрементирования (добавле- ния 1 к числу) и сложения двоичных чисел. В то же время многие микроконтроллеры, особенно ранних разработок, не имеют команд для прямого вычитания. Они могут только суммировать, и в них 24
операцию вычитания заменяют суммированием чисел в дополнитель- ном коде. Поясним, почему вычитание может быть заменено сложением чисел, представленных в дополнительном коде. Для начала сложим десятичные числа со знаком +5 и +3. Рассмотрим процедуру действий в случае одновременного сложения чисел в десятичном и в дополни- тельных кодах: 1-е число (+5) 0000 0101 4- + 2-е число (4-3) 0000 0011 (+8) 0000 1000. Согласно табл. 10, 4-5 представляется в виде 0000 0101, аналогич- но 4-3 — в виде 0000 ООП. Положительные числа 0000 0101 и 0000 0011 складываются, как обычные двоичные числа, давая сумму 0000 1000, которая в соответствии с табл. 10 равна 4-810. Следовательно, сложениедвух положительных знаковых чисел, представленных в со- ответствии с табл. 10, дает правильный результат. Это неудивитель- но, т. к. знаковому представлению положительных чисел соответству- ет его обычное двоичное представление. Пусть теперь надо сложить десятичные числа 4-7 и -3. Согласно табл. 10, числу 4-7 соответствует 0000 0111, а числу -3 соответствует 1111 1101. Сложим их как обычные двоичные числа, а результат сум- мирования также будем считать знаковым числом, использующим дополнительный код: 1-е число 1 (4-7) 0000 0101 4- 4- 2-е число (-3) 1111 1101 (4-4) 1 0000 0100 (пренебречь переполнением). Старший бит является переполнением 8-разрядного регистра, и им нужно пренебречь. Получаем сумму 0000 0100 или 4-410. Таким образом, сложение представленных с использованием дополнитель- ного кода двух знаковых чисел, одно из которых отрицательно, по- прежнему дало правильный результат. Но ведь это то же самое, что вычитание числа 3 из числа 7! Таким образом, мы заменили вычита- ние сложением знаковых чисел 4-7 и -3, получив в итоге (без учета переполнения) нужный результат. 25
Усложним задачу. Пусть теперь нам нужно вычесть из числа 3 число 8 (т. е. в отличие от предыдущего случая результат вычитания должен оказаться отрицательным). Давайте опять заменим вычита- ние сложением — сложим десятичные числа +3 и -8. Согласно все той же табл. 10, +3 должно быть представлено в виде 0000 0011, а -8 в виде 1111 1000. Эти представления сложим, как обычные двоичные числа, что даст 1111 1011 = -510: 1-е число 2-е число (+3) 0000 0011 + + (-8) 1111 1000 (-5) 1111 1011. Как видим, и в этом случае сложение представленных с исполь- зованием дополнительного кода двух знаковых чисел, одно из кото- рых положительно, а другое отрицательно, по-прежнему дало пра- вильный результат. С учетом предыдущего, можно сказать, что если складывать представленные в дополнительном коде два знаковых числа, из которых хотя бы одно положительно, то независимо от знака полученной суммы результат сложения окажется правильным. И в заключение сложим два отрицательных десятичных числа: -2 и -5. Согласно табл. 10, -2 = 1111 1110 и —5 = 1111 1011. Два числа 1111 1110 и 1111 1011 складываются, как обычные двоичные числа, что дает 11111 1001 : 1-е число 2-е число (-2) 11111110 + + (-5) 11111011 (-7) 111111001 (пренебречь переполнением). Старший бит результата по-прежнему является переполнением 8-разрядного регистра, и им пренебрегаем. Таким образом, суммой двух чисел 1111 1110 и 1111 1011 в дополнительном коде будет равна 1111 1001. Согласно табл. 10,суммаШ11001 — это ни что иное как-710. Таким образом, во всех рассмотренных случаях сложение пред- ставленных с использованием дополнительного кода двух знаковых чисел, независимо от того, положительные они или отрицательные, дает правильный результат, если сумма также рассматривается как число со знаком. А поскольку вычитание — это фактически сложе- 26
ние двух чисел, одно из которых (вычитаемое) отрицательно, то ока- зывается, что микроконтроллер вообще может обойтись без команд вычитания — их с успехом заменяют команды сложения знаковых чисел, представленных в дополнительном коде. Еще несколько примеров для закрепления сказанного. Вычтем де- сятичное число +5 из десятичного числа +8. Уменьшаемое (+8) в до полнительном коде равно 0000 1000. Поскольку мы собираемся за- менить вычитание сложением знаковых чисел в дополнительном коде, вместо вычитаемого (+5) мы должны взять равное ему по мо- дулю отрицательное число (-5). В дополнительном коде оно равно 1111 1011 (инвертируем 0000 0101 и добавляем к полученному ^.За- тем первое число 0000 1000 складывается со вторым 1111 1011 как с обычным числом, что дает 1 0000 ООП: 1-е число (+8) 0000 1000 - Дополнительный код + 2-е число (+5) 1111 1011 = 0000 0101 >- (+3)-----------------------------1 0000 0101 ' (пренебречь переполнением). Таким образом, чтобы заменить вычитание сложением, мы дол- жны заменить вычитаемое на равное ему по модулю число с проти- воположным знаком, сложить с уменьшаемым и отбросить перепол- нение, если оно возникнет. Преобразование вычитаемого в равное ему по модулю число с противоположным знаком осуществляется путем его инвертирования (замены входящих в его двоичное пред- ставление единичных бит на нулевые и наоборот) с последующим прибавлением к полученному в результате инвертирования числу единицы. Вычтем десятичное число +6 из десятичного числа +2: 1-е число (+2) 0000 0010 - Дополнительный код + 2-е число (+6) 1111 1010 ----= 0000 0110 --------->-------- (-4) 1111 1100 В соответствии с табл. 10, первое число +2 = 0000 0010, второе число +6 = 0000 ОНО, его дополнительный код (инверсия и добавле- ние 1) —11111010. Оба эти кода сложены затем, как обычные двоич- ные числа, что дает 11111100, а согласно табл. 10 11111100 = -410. 27
Упражнения 38. Сложить следующие десятичные числа со знаком, используя метод дополнительного кода: а) (+7) б) (+31) + + (+1) (+26). 39. Сложить следующие десятичные числа со зйаком, используя метод дополнительного кода: а) (+8) б) (+89) 4- + (-5) (-46). 40. Сложить следующие десятичные числа со знаком, используя метод дополнительного кода: а) (+1) б) (+20) + + (~6) (-60). 41. Сложить следующие десятичные числа со знаком, используя метод дополнительного кода: а) (-3) б) (-13) 4й 4- (-4) (-41). 42. Вычесть следующие десятичные числа со знаком, используя метод дополнительного кода: а) (+7) б) (+113) (+2) (+50). 43. Вычесть следующие десятичные числа со знаком, используя метод дополнительного кода: а) (+3) б) (+12) (+8) (+63). 28
Решения 38. Следовать процедуре, приведенной в разделе 7: а) (+7) + (+1) 0000 0111 6) (+31) 0001 1111 + + + 0000 0001 (+26) 0001 1010 (+8) 0000 1000 (доп. код); (+57) ООП 1001 (доп. код). 39. Следовать процедуре, приведенной в разделе 7: а) (+8) 00001000 б) (+89) 0101 1001 (-5) 1111 101 (-46) 1101 0010 (+3) 1 000 0011 (доп. код); (+43) 1 00101011 (доп. код). Пренебречь переполнением. Пренебречь переполнением. 40. Следовать процедуре, приведенной в разделе 7: а) (+1) 0000 0001 + + (-6) 1111 1010 б) (+20) 0001 1100 + + (-60) 1100 0100 (-5) 1111 1011 (доп. код); (-40) 1101 1000 (доп. код). 41. Следовать процедуре, приведенной в разделе 7: а) (-3) 11111101 б) (-13) 11110011 + + + + (-4) 11111100 (-41) 11010111 (-7) 1 1111 1001 (доп. код); (-54) 1 11001010 (доп. код). Пренебречь переполнением. Пренебречь переполнением. 42. Следовать процедуре, приведенной в разделе 7: а) (+7) 0000 0111 (+2) дополнительный 1111 1110 —;—— =0000 0010 ---------------------> ------------- (+5) код и сложить 1 0000 0101 (доп. код). Пренебречь переполнением. 29
б) (+113) 0111 0001 — (+50) дополнительный 11001110 = 0011 0010 (+5) код и сложить 1 0011 1110 (доп. код). Пренебречь переполнением. 43. Следовать процедуре, приведенной в разделе 7: а) (+3) 0000 0011 1111 1000 (+8) дополнительный ----- =00001000 (-5)-код и сложить б) (+12) (+63) ----- =0011 1111 (-51) дополнительный 11111011 (доп. код). 00001100 1100 0001 код и сложить 11001101 (доп. код). 8. ГРУППИРОВКИ БИТ Одна отдельная двоичная цифра называется битом, сгруппиро- ванных 4 бит составляют тетраду, 8 бит — байт. Входящий в состав микроконтроллера аккумулятор является очень важной частью всего МК. Обычно МК содержит 8-разрядный аккумулятор. Длина слова МК составляет тогда 8 бит, т. е. 1 байт со- ставляет слово. Микроконтроллер имеет длину слова в 4,8,16 и даже 32 бит. Таким образом, 16-разрядный МК имеет длину слова 2 байта или 16 бит. Слово — это одна группа обрабатываемых бит, единое выражение или одна команда микропроцессора. Восьмиразрядный микроконтроллер переносит и помещает все данные группами из 8 бит, которые передаются восемью параллельными проводниками, со- ставляющими ширину данных. На рис. 9, а приведено состояние, которое могла бы иметь па- мять 8-разрядного микропроцессора, такого, как Intel 8080/8085 (КР580ВМ80). Заметим, что каждая адресуемая позиция (назван- ная содержимым) составляет группу из 8 бит информации. Каж- дый байт называется запоминаемым словом, поскольку данный микропроцессор является 8-разрядным устройством. Каждое за- поминаемое слово имеет особое значение, когда оно извлечено и декодировано микропроцессором. Содержимое памяти на рис. 9, а 30
Рис. 9. Представление памяти микро-ЭВМ: а - типичное содержание; б - интерпретация содержимого МП может иметь один из следующих смыслов: 1) двоичное число; 2) двоичное число со знаком; 3) двоично-десятичное число; 4) буква алфавита; 5) команда; 6) адрес памяти; 7) адрес порта ввода или вывода. Рассмотрим верхнюю ячейку памяти на рис. 9, а, т. е. ячейку ОНО 01002. Ее содержимым является 1101 1011. Это двоичное слово могло бы быть интерпретировано как 1) двоичное число 1101 ЮН2 = 219]0; 2) двоичное число со знаком 1101 1011= -3710 (здесь подразуме- вается дополнительный код); 3) двоично-десятичное число — это невозможно, так как ни 1101, ни 1011 не представляет двоично-десятичный код; 31
4) буква алфавита — это не соответствует ни одной букве кода ASCII (ASCII — широко распространенны буквенно-цифровой код, см. раздел 9.9); 5) командой; 1101 1011 — команда INPUT («Ввести» для хорошо известного процессора Intel 8080/8085 (КР580ВМ80); 6) адрес ячейки памяти 1101 10112 = DBI6 =21910; 7) адрес порта ввода или вывода 1101 10112 = 21910 . Если оператор МП Intel 8085 включит счетчик команд с адреса 100jO (ОНО 01002), МП извлечет, затем декодирует слово в памяти 1101 1011 как команду «Ввести» (INPUT) данные. Затем он обратится к следующему адресу 10110 (0110 01012), где расположен адрес порта, откуда нужно взять вводимые данные. В итоге, программа выполня- ет следующие команды: 1) Ввести (INPUT) данные, приходящие из порта 1; 2) Поместить (STORE) эти данные в ячейку памяти 200; 3) Вывести (OUTPUT) эти данные в порт 10. Способ, по которому МП интерпретирует содержимое ячеек па- мяти, детализирован на рис. 9, б. Команды программы помещены в шесть верхних ячеек (100-105). Нижняя ячейка памяти (200IO) явля- ется местом размещения данных. В этом случае код ASCII для буквы А помещен в эту ячейку памяти. В итоге важно отметить, что биты сгруппированы в слова внутри микропроцессора. Эти слова памяти программы интерпретируются микропроцессором одно за другим последовательно. Программисту очень важно знать, как микропроцессор располагает и интерпретиру- ет данные. У каждого МП система команд уникальна, но у всех микро- процессоров доступ к ячейкам памяти осуществляется одинаково. Упражнения 44. Группа из 4 бит составляет тетраду, а группа из 8 бит —. 45. Длина является важной особенностью МП. Она соответ- ствует числу передаваемых, обрабатываемых бит одной сущности. 46. Обратиться к рис. 9, а. Байт данных, помещенный в какую-либо ячей- ку памяти, называется словом. 47. Дать список семи возможных толкований 8-разрядного слова в памяти. 48. Как на рис. 9, б МП интерпретирует слово 0000 0001 по адресу 10110? 49. Как на рис. 9, б МП интерпретирует слово 0011 0111 по адресу 10210? Решения 44. Байт. В некоторых случаях эта группа может составлять также слово. 45. Слова. 46. Данных. 32
47. Двоичное число, двоичное число со знаком (записанное в дополнитель- ном коде), двоично-десятичное число, буква алфавита, команда, адрес памя- ти, адрес порта ввода/вывода. 48. Он извлекает запомненное слово, ожидая, что оно ему укажет, из какого порта он должен взять данные. Это слово укажет ему, что речь идет о порте 1. 49. Он извлекает слово 0011 0111, ожидая новой команды. Это слово деко- дируется микропроцессором как команда Передать (MOVE) данные из акку- мулятора в ячейку памяти, адрес которой приводится в следующей ячейке памяти. 9. БУКВЕННО-ЦИФРОВОЙ КОД Когда микроконтроллер взаимодействует с телетайпом или ви- деотерминалом, необходимо прибегать к коду, который одновремен- но включает в себя числовые и алфавитные знаки. Такие коды назы- ваются буквенно-цифровыми. Наиболее распространен буквенно-цифровой код ASCII (произ- носится АСКИ два) — стандартный американский код обмена ин- формации. В табл. 11 приведена выдержка 7-разрядного кода ASCII. В этот список входят 7-разрядные коды цифр, прописных букв и знаков пунктуации. Полный код ASCII включает кодирование строчных букв и признаков команд. Таблица 11 Выдержка из алфавитно-цифрового кода ASCII Символ Код asci: Символ Код asci: Символ КОД ASCII Массив 010 0001 0 Oil 000( I 100 1001 । oio ооо: 1 он ООО: J 100 1010 « 010 ООН 2 011 ООН к 100 1011 # 010 001 3 он ooi: L 100 1100 $ 010 010! 4 Oil 010( M 100 1101 % 010 010 5 on oio: N 100 1110 & 010 011! Б Oil Oil! 0 100 1111 010 011 7 on on: p 101 0000 ( 010 100! 8 Oil 100( Q 101 0001 ) 010 100 9 on ioo: R 101 0010 * 010 101( А юс ooo: S 101 0011 + 010 101: В 100 00К T 101 0100 010 1101 С ioo ooi: u 101 0101 — ою ио: D 100 010( V 101 0110 010 ЦК Е ioo oio: w 101 0111 / 010 111. F 100 Oil! X 101 1000 G ioo on: Y 101 1001 Н 100 1001 Z 101 1010 33
Упражнения 50. Двоичный код, используемый обычно для кодирования цифр и букв, называется кодом. 51. Нуль в коде ASCII представляется как 0110000,9—как. 52. Если маскировать три старших разряда цифр от 0 до 9 в коде ASCH, что оставит маска в итоге? Решения 50. Буквенно-цифровым. 51. См. табл. 11: ОН 1001. 52. Останется четыре немаскированный бита, составляющих двоичный или двоично-десятичный эквивалент каждого числа (см. табл. 11). Дополнительные упражнения 53. Дать на память десятичные эквиваленты каждого из следующих дво- ичных чисел: а) 0000; б) 0010; в) ООН; г) 0111; д) 1001; е) 1100. 54. 0110 10012 =. 55- 60,о =--------. 56. Двоичное число 1001 1100 представляет собой число 9С в записи. 57. 8(6=----------. 58. 0101 11112 =. 59- АЕ,6 =--------. 60. 1011 поо2 =. 61. 3С16 =--------. 62. 9О]о =--------. 63. 71308 =. 64. 1001 0111 00102 =. 65. 578 =. 66.63,0=------------. 67. 9210 =________ДДК. 68. 1000 ОНО ДДК =. 69. Выполнить сложение следующих двоичных чисел: а) 1100 ООН + ООП 1100; 6) ОНО 1110 + 0011 1101. 70. 1101 10002 - ООН 00112 =. 71. 10012*11012 =. 72. Когда числа со знаком помещаются в регистр микропроцессора, 1 в стар- шем бите означает, что число(положительное, отрицательное). 73. Запись в дополнительном коде 1111 1110 представляет собой (отрицательное, положительное) число. 74. Записать следующие Десятичные числа со знаком в дополнительном коде: а) +12; б) - 12. 34
75. Записать следующие числа (в дополнительном коде) десятичными числами со знаком; а) 0111 0100; 6) 1101 1101. 76. Сложить следующие десятичные числа со знаком, используя метод дополнительного кода: а) (+13) 6) (+17) в) (-6) + + + (+8) (-8) (-14). 77. Вычесть следующие десятичные числа со знаком, используя метод дополнительного кода: а) (+ 13) 6) (+ 19) (+5) (+29). 78. Байт — это группа из бит. 79. Тетрада состоит из бит. 80. Наиболее широко распространена длина слова микропроцессора (8,32) бит. 81. См. рис. 9, а. На этом рисунке приведена функциональная схема (микропроцессора, микроконтроллера). 82. См. рис. 9, б. Как интерпретирует микропроцессор слово 1101 ООП по адресу 1О4]0? 83. Сокращение ASCII читается по русски. 84. Для вывода на видеотерминал используется специальный код Решения 53. я) 0; б) 2; в) 3; г) 7; д) 9; е) 12. 54. 1051(Г 55. 1111002. 56. Шестнадцатеричной. 57. 1000 110Ц. 58. 5FS6. 59. 10101110. 60. вс16. 61.601д. 62. 5А/6. 63. 111001 0110002. 64. 4562... 65. 47 66. 77s. 67.1001 ООЮддк. 35
68. 86/д. 69. а) 1111 11112,6) 10101011.,. 70. 1010 01012. ’ 71. 1110101,.' 72. Отрицательное. 73. Положительное. 74. а) 00001100; б) 1111 0100. 75. а) +116/0; 6) - 3511Г 76. а) 0001 0101 (бон. код); 6)11110110 (доп. код ); в) 11101100 (доп. код). 77. а) 00001000 (доп. код); 6) 11110110 (доп. код). 78. 8. 79. 4. 80. 8. 81. Микроконтроллера. 82. Он извлекает из памяти слово 1101 ООП, полагая, что это новая ко- манда. Слово 1101 ООП декодируется микропроцессором как команда «.ВЫВЕ- СТИ» данные, содержащиеся в аккумуляторе, в порт, адрес которого будет находиться в следующей ячейке памяти. 83. Американский стандартный код обмена информацией АСКИ два. 84. ASCII или буквенно-цифровой.
Приложение 2 КЛАССИЧЕСКИЕ МИКРОКОНТРОЛЛЕРЫ (ОДНОКРИСТАЛЬНЫЕ МИКРО-ЭВМ) СЕМЕЙСТВ MCS-51 И MCS-52 Первые микро-ЭВМ (серии 8048), едва появившись на западном рынке, сразу же завоевали симпатии разработчиков и потребителей. На них выполнялись десятки устройств — от счетчиков в такси до устройств управления технологическими процессами. Фирма IBM, разрабатывая свой знаменитый IBM-PC, встроила такую однокристальную микро- ЭВМ в клавиатуру, освободив, таким образом, центральный процессор от выполнения функций, связанных с ее обслуживанием. Вследствие этого в 80-х годах 20 столетия микро-ЭВМ этой серии стали наиболее массовыми из всех 8-разрядных микропроцессоров—за эти годы IBM- совместимых компьютеров было выпущено около 50 млн. штук, и вы- пуск их с каждым годом продолжал расти. Однако практически сразу были отмечены недостатки этих мик- ро-ЭВМ. Разработчики постоянно ощущали нехватку объема ПЗУ, как встроенного, так и внешнего. Мал был объем ОЗУ: из 64 байт у 8748 почти половину занимали системные ресурсы — регистры и стек. Глубина стека была явно недостаточной для многих задач, равно как и разрядность встроенного таймера-счетчика. Не хватало портов вво- да/вывода, отсутствовали простые аппаратные средства обмена ин- формацией между микро-ЭВМ и другими ЭВМ. Ощущалась нехват- ка многих команд, в первую очередь вычитания. Словом, всего было мало, как с точки зрения аппаратных средств, так и с точки зрения программных. Перед разработчиками фирмы Intel стояла нелегкая задача — существенно доработать микро-ЭВМ, не выходя за пределу 256 ко- манд и не увеличивая числа выводов ее корпуса. И они прекрасно справились с ней. Их новое детище — 8051 — на порядок превосхо- 37
дил 8048 по производительности. Он имел вдвое большее ОЗУ, вдвое большее количество регистров общего назначения, четыре порта ввода/вывода, два таймера-счетчика и две линии прерываний. Име- лись аппаратные средства для последовательного обмена инфор- мацией, был значительно увеличен объем ПЗУ, в том числе и внут- реннего (для тех моделей семейства, которые его имели). В модели с УФ-ПЗУ 8751 появилось новшество — бит защиты информации. Установка этого бита приводила к тому, что считать информацию из ПЗУ микро-ЭВМ становилось невозможным — свойство отнюдь не лишнее в условиях конкурентной борьбы. С появлением этих микро-ЭВМ семейство 8048 как бы отошло на второй план. Несмотря на продолжавшийся их выпуск и широкое использование в ранее разработанной аппаратуре, они почти сразу перестали служить основой для новых разработок (по крайней мере в тех странах, где микро-ЭВМ семейства 8051 были доступны разра- ботчикам и производителям). Этому способствовало и то, что цены на микро-ЭВМ обоих семейств мало отличались друг от друга. Уже в 90-х микро-ЭВМ семейства 8051 стали доступными и отечественным пользователям. Поэтому приводимая ниже информация посвящена микропроцессорам этого семейства, а также последовавшего за ним семейства 8052. Однокристальные микро-ЭВМ семейства 8051 ВВЕДЕНИЕ В заголовке настоящего раздела автор не случайно упомянул семейство 8051. Дело в том, что отечественная промышленность так и не смогла по-настоящему освоить выпуск микро-ЭВМ этого семейства. Автору доводилось держать в руках микросхемы КМ1816ВЕ51, не имеющие УФ-ПЗУ. По-видимому, эти микросхе- мы можно рассматривать как аналоги микро-ЭВМ 8051 с ПЗУ, про- граммируемым на заводе-изготовителе. При работе с ними необ- ходимо использовать внешнее ПЗУ. Аналогичным образом используется микросхема ВЕ31. Обе эти микросхемы есть как в серии 1816, так и в серии 1830. Микро-ЭВМ серии 1816 выполне- ны по п-МОП технологии, 1830 — по k-МОП. УФ-ПЗУ снабжена микросхема 1816ВЕ751 — аналог 8751. Однако ни автору настоя- щей статьи, ни его знакомым не доводилось видеть эту микросхе- му «живьем». Думается, что и для радиолюбителей она вряд ли окажется доступной — сейчас легче приобрести 8751 или 87С51 (последняя является К-МОП модификацией 8751). Поэтому даль- ше о рассматриваемых микро-ЭВМ мы будем говорить, что они 38
относятся к семейству 8051, указывая на различия между членами семейства в тех случаях, когда это будет необходимо. К сожалению, в распоряжении автора статьи не было детального описания на отечественные микро-ЭВМ, подобного тому, которое вы- пускается фирмой Intel. Поэтому основным документом, который использовался автором при подготовке материалов, был Intel Databook, и все, что сказано про микро-ЭВМ рассматриваемого се- мейства, безусловно справедливо для микро-ЭВМ этого семейства зарубежного производства. Что касается отечественных микро-ЭВМ, то автор не рискует категорически утверждать, что все, о чем гово- рится в настоящем приложении, распространяется и на них. Но ско- рее всего это именно так. Во всяком случае, на момент подготовки статьи у автора не было данных о расхождении отечественных и за- рубежных версий микро-ЭВМ. Все микро-ЭВМ семейства 8051 имеют следующие аппаратные особенности: • наличие 128 байт внутреннего ОЗУ; • наличие 4-х двунаправленных побитно настраиваемых 8-разряд- ных портов ввода/вывода; • наличие двух 16-разрядных таймеров-счетчиков; • встроенный тактовый генератор; • адресация 64К памяти программ и 64К памяти данных; • две линии запросов на прерывание от внешних устройств; • интерфейс для последовательного обмена информацией с дру- гими микро-ЭВМ или персональными компьютерами; • микро-ЭВМ 8751 снабжена УФ-ПЗУ объемом 4К. Функциональная схема микро-ЭВМ семейства 8051 приведена на рис. 1, назначение их выводов — на рис. 2. Кратко поясним приве- денные на последнем обозначения: Vss — потенциал земли; Vcc — основное напряжение +5 В; XI, Х2 — входы для подключения кварцевого резонатора; RST — вход общего сброса микро-ЭВМ; PSEN — разрешение внешней памяти программ; выдается толь- ко при обращении к внешнему ПЗУ; ALE — строб адреса внешней памяти; ЕА — отключение внутренней программной памяти; уровень 0 на этом входе заставляет микро-ЭВМ выполнять программу только внешнего ПЗУ, игнорируя внутреннее (если последнее имеется); Р1 — 8-битный квазидвунаправленный порт ввода/вывода; каж- дый разряд порта может быть запрограммирован как на ввод, так и на вывод, независимо от состояния других разрядов; 39
8 | Порт Р0~~| | Порт Р2 PSEN ALE ЁА RST РИС. 1 Доп - ОЗУ 8052 [ Per. В | [ Асе Цепи управ- ления и сброса Генератор Х1 Х2 Порт РО per. SFR Порт Р1 per. SFR Порт Р1 8' Порт Р2 per. SFR PCON SCON SBUF TMOD TCON ie| ip THO TLO TH1 TL1 Порт РЗ per. SFR DPTR P1.0 *—* 1* 40 oUcc P1.1 -4—* 2 39 > PO.O (ADO) P1.2 <—* 3 38 <—► P0.1 (AD1) P1.3 <—> 4 37 <—► P0.2(AD2) P1.4 -4—» 5 36 •r-> P0.3 (AD3) P1.5 * 6 35 *—► P0.4(AD4) P1.6-*—* 7 34 ♦-* P0.5 (AD5) P1.7 -*—• 8 33 4—► P0.6(AD6) RST ► 9 32 4—► P0.7 (AD7) (RXD) P3.0 -4—* to 31 * EA (TXD) P3.1 * 11 30 —► ALE (INTO) P3.2 *—> 12 29 —► PSEN (INTI) P3.3 •<—* 13 28 *—► P2.7 (A15) (TO) P3.4 *—* 14 27 4—► P2.6(A14) (T1)P3.5<—* 15 26 <-* P2.5(A13) (WR) P3.6 4 16 25 P2.4(A12) (RD) P3.7 -4—* 17 24 P2.3 (A11) X2O 18 23 4—► P2.2(A10) xt о 19 22 4—► P2.1 (A9) uss° 20 21 4—► P2.0(A8) Рис. 2 40
Р2 — 8-битный квазидвунаправленный порт, аналогичный Р1; кроме того, выводы порта используются для выдачи адресной ин- формации при обращении к внешней памяти программ или дан- ных (если используется 16-битовая адресация последней). Выво- ды порта используются при программировании 8751 для ввода в микро-ЭВМ старших разрядов адреса; РЗ — 8-битный квазидвунаправленный порт, аналогичный Р1; кроме того, выводы порта могут выполнять ряд альтернативных функций, которые описаны ниже. РО — 8-битный двунаправленный порт ввода/вывода инфор- мации; при работе с внешними ОЗУ и ПЗУ по линиям порта в режиме временного мультиплексирования выдается адрес внешней памяти, после чего осуществляется передача или при- ем данных. ОРГАНИЗАЦИЯ ОЗУ, ПЗУ, РЕГИСТРОВ МИКРО-ЭВМ Рассмотрим более подробно внутреннее устройство микро-ЭВМ (рис. 1). Память программ и данных, также как и у микро-ЭВМ семей- ства 8048, являются самостоятельными и независимыми друг от друга устройствами, адресуемыми различными командами и управляющи- ми сигналами. Объем памяти программ, расположенной на кристалле микро-ЭВМ 8051 и 8751, равен 4 кбайтам. При обращении к внешней памяти программ все микро-ЭВМ семейства 8051 всегда используют 16-разрядный адрес, что обеспечивает им доступ к 64К ПЗУ. Микро- ЭВМ обращается к программной памяти при чтении кода операции и операндов (используя счетчик команд PC), а также при выполнении команд переноса байта из памяти программ в аккумулятор. При вы- полнении команд переноса данных адресация ячейки памяти программ, из которой будут прочитаны данные, может осуществляться как с ис- пользованием счетчика PC, так и с использованием специального двух- байтового регистра-указателя данных DPTR. Память данных, расположенная на кристалле, имеет объем 128 байт. Первые 32 байта организованы в четыре банка регистров общего назначения, обозначаемых соответственно банк 0...3. Каждый банк состоит из 8 регистров R0...R7. В любой момент времени про- грамме доступен только один банк регистров, номер которого содер- жится в 3-м и 4-м битах слова состояния программы PSW (см. ниже). Оставшееся адресное пространство может конфигурировать- ся разработчиком по своему усмотрению — в нем располагаются стек, системные и пользовательские области данных. Обращение к ячейкам памяти данных возможно двумя способами. Первый способ — прямая адресация ячейки памяти. В этом случае адрес 41
ячейки является операндом соответствующей команды. Второй способ — косвенная адресация при помощи регистров R0 или R1. Перед выполнением соответствующей команды в один из этих регистров должен быть занесен адрес ячейки, к которой необхо- димо обратиться. К адресному пространству памяти данных примыкает адресное пространство регистров специальных функций SFR (табл. 1). Адре- са, по которым расположены эти регистры, приведены ниже. Отме- тим, что регистры занимают только часть 128-байтового адресного пространства. Те ячейки памяти с адресами 80H...0FFH, которые не заняты регистрами, физически отсутствуют на кристаллах микро- ЭВМ семейства 8051, и при обращении к ним можно прочитать лишь код команды возврата. Таблица 1 Блок регистров специальных функций Символ Адрес Наименование АСС 0E0H Аккумулятор (*) В 0F0H Регистр-расширитель аккумулятора (*) PSW 0D0H Слово состояния программы (*) Р0 080H ПортО (SRF Р0) (*) Р1 090H Порт 1 (SFRP1)(‘) Р2 0A0H Порт 2 (SFR Р2) (*) РЗ 0B0H Порт 3 (SFR РЗ) (*) SP 081H Регистр-указатель стека DPH 083H Старший байт регистра указателя данных DPTR DPL 082H Младший байт регистра указателя данных DPTR ТНО 08CH Старший байт таймера 0 TL0 08AH Младший байт таймера 0 ТН1 08DH Старший байт таймера 1 TL1 08BH Младший байт таймера 1 TMOD 089H Регистр режимов таймеров-счетчиков TCON 088H Регистр управления-статуса таймеров (*) IP 0B8H Регистр приоритетов (*) IE 0A8H Регистр маски прерываний (*) PCON 087H Регисто упоавления мощностью SCON 098H Регистр управления приемопередатчиком (*) SBUF 099H Буфер приемопередатчика Примечание. Регистры, имена которых отмечены знаком (*), допускают адресацию своих отдельных бит при выполнении команд из группы команд операций с битами. При обращении к внешней памяти данных микро-ЭВМ стано- вятся доступными 64К ОЗУ. Адресация упомянутых ячеек внешнего ОЗУ осуществляется методом косвенной адресации при помощи ре- гистров R0 и R1 или при помощи вышеупомянутого двухбайтового регистра DPTR. 42
Аккумулятор является источником операнда и местом фиксации результата при выполнении ряда операций. Только с использовани- ем аккумулятора могут быть выполнены операции сдвига, проверки на нуль и ряда других. Однако в отличие от большинства микропро- цессоров, система команд 8051 содержит большое количество команд пересылок, логических операций и переходов, не использующих ак- кумулятор. В этом отношении упомянутая система команд гораздо гибче, чем система команд микропроцессора 580ВМ80. При выполнении ряда команд в арифметическо-логическом уст- ройстве (АЛУ) формируются признаки операций — флаги, которые фиксируются в регистре PSW. Перечень флагов, их символические имена и условия их формирования приведены в табл. 2. Таблица 2 Формат слова состояния программы PSW Символ Позиция Имя и назначение р PSW.0 Флаг паритета. Устанавливается и сбрасывается аппаратурно в каждом цикле команды и фиксирует нечетное/четное число единичных бит в аккумуляторе — PSW.1 Не используется OV PSW.2 Флаг переполнения. Устанавливается и сбрасывается аппаратурно при выполнении арифметических операций RS0 RS1 PSW3 PSW4 Биты выбора используемого банка регистров. Могут быть изменены программным путем RS0 = 0 RS1 =0 банк 0 ООН—07Н RS0 - 1 RS1 =0 банк 1 08Н—0FH RS0 = 0 RS1 = 1 банк 2 ЮН—17Н RS0 = 1 RS1 = 1 банк 3 18Н—1FH F0 PSW.5 Флаг пользователя. Может быть установлен, сброшен или проверен программой пользователя АС PSW.6 Флаг вспомогательного переноса. Устанавливается и сбрасывается только аппаратными средствами при выполнении команд сложения и вычитания и сигнализирует о переносе или заеме в бите 3 аккумулятора С PSW.7 Флаг переноса. Устанавливается и сбрасывается как аппаратурно, так и программным путем Регистр-указатель стека SP в микро-ЭВМ рассматриваемого се- мейства — 8-битный. Он может адресовать любую область внутрен- ней памяти данных. В отличие от микропроцессора 580ВМ80, у се- мейства 8051 стек «растет вверх», т. е. перед выполнением команды PUSH или CALL содержимое SP инкрементируется, после чего произ- водится запись информации в стек. Соответственно при извлечении информации из стека регистр SP декрементируется после извлече- ния информации. 43
В процессе инициализации микро-ЭВМ после сигнала сброса или при включении питающего напряжения в SP заносится код 07Н. Это означает, что первый элемент данных будет располагаться в ячейке памяти с адресом 08Н. Регистр-указатель данных DPTR чаще всего используется для фиксации 16-битного адреса в операциях обращения к внешней па- мяти программ и данных. С точки зрения программиста он может выступать как в виде одного 16-битного регистра, так и в виде двух независимых регистров DPL и DPH. Две регистровые пары с именами THO, TL0 и ТН1, TL1 представ- ляют из себя регистры, обеспечивающие независимое функциони- рование двух программно-управляемых 16-битных таймеров-счет- чиков. Режимы таймеров-счетчиков задаются с использованием регистра TMOD, а управление ими осуществляется при помощи ре гистра TCON. Для управления режимами энергопотребления мик- ро-ЭВМ используется регистр PCON. Регистры IP и IE управляют ра- ботой системы прерываний микро-ЭВМ, а регистры SBUF и SCON — работой приемопередатчика последовательного порта. Описание тай- меров-счетчиков, системы прерываний и приемопередатчика после- довательного порта будет приведено ниже. ОРГАНИЗАЦИЯ ПОРТОВ ВВОДА/ВЫВОДА Все четыре порта 8051 — двунаправленные. Каждый из них содер- жит регистр-защелку (SFR P0...P3), выходную цепь и входной буфер. Выходные цепи Р0 и Р2 вместе с входным буфером Р0 использу- ются при обращении к внешней памяти. При этом на выходах Р0 млад- ший байт адреса внешней памяти мультиплексируется с вводимым/ выводимым байтом. Выходы Р2 содержат старший байт адреса внеш- ней памяти, если адрес 16-разрядный. При использовании 8-разряд- ного адреса на выводах Р2 присутствует информация из SFR Р2. Выводы порта РЗ помимо обычного ввода информации и выво- да ее из SFR могут выполнять альтернативные функции. Описание этих функций приведено в табл. 3. Альтернативные функции могут быть активированы только если в соответствующие биты SFR порта РЗ предварительно занесены еди- ницы. На рис. 3 приведены функциональные схемы регистров-защелок и буферов ввода/вывода каждого из четырех портов микро-ЭВМ. Каждый из битов регистра-защелки SFR является, по сути, D-тригге- ром, информация в который заносится с внутренней шины данных по сигналу «запись в SFR Pi» (i=0-3) от центрального процессорного элемента (CPU). С неинвертированного выхода D-триггера инфор- 44
Таблица 3 Альтернативные функции порта РЗ Вывод порта Обозначение Альтернативная функция РЗ.О RXD вход последовательного порта Р3.1 TXD выход последовательного порта Р3.2 INTO внешнее прерывание 0 РЗ.З INT1 внешнее прерывание 1 Р3.4 ТО вход таймера-счетчика 0 Р3.5 Т1 вход таймера-счетчика 1 Р3.6 WR строб записи во внешнюю память данных Р3.7 RD строб чтения из внешней памяти данных Рис. 3 мация может быть выведена на внутреннюю шину по сигналу «чте- ние SFR Pi» от CPU, а с вывода микросхемы («из внешнего мира») — по сигналу «чтение выводов Pi». Одни команды активируют сигнал «чтение SFR Pi», другие — «чтение выводов Pi». Подробнее об этом будет сказано ниже. Как следует из рис. 3, выходные цепи РО и Р2 коммутируются сиг- налами CNTR, что обеспечивает вывод адресной информации и дан- 45
ных при обращении к внешней памяти. При обращении к внешней памяти в SFR РО автоматически заносятся единицы во все биты. Ин- формация в SFR Р2 при этом остается неизменной. Отметим также, что для того, чтобы выводы порта РЗ выполняли альтернативные фун- кции, необходимо в SFR РЗ также занести единицы во все биты. Выходы триггеров SFR портов Р1...РЗ выполнены на полевых тран- зисторах, имеющих внутреннюю нагрузку, в то время как выходы триг- геров SFR РО выполнены на транзисторах с открытым стоком. Каждая линия любого из портов может независимо использоваться как для ввода информации, так и для вывода (для линий портов РО и Р2 это справед- ливо тогда, когда они не используются для обращения к внешней памя- ти). Для использования любой линии портов Р1...РЗ в качестве входной необходимо в соответствующий разряд SFR занести 1. При этом выход- ной полевой транзистор отключается. Внутренний нагрузочный резис- тор как бы «подтягивает» потенциал вывода к напряжению питания, в то время как внешняя нагрузка может сделать его нулевым. Выводы порта РО имеют иную структуру. Нагрузочный полевой транзистор линии порта включен только тогда, когда порт выводит единицу при обращении к внешней памяти. В остальных случаях нагрузочный транзистор отключен. Таким образом, при работе в ре- жиме обычного ввода/вывода информации (как, например, порт Р1) выводы порта РО представляют из себя транзисторы с открытым сто- ком. Запись единицы в соответствующий бит SFR отключает и вто- рой транзистор. Это приводит к тому, что вывод оказывается под плавающим потенциалом. Это позволяет использовать линии порта РО как выводы с высокоимпедансным состоянием. Поскольку выводы Р1-РЗ имеют внутреннюю нагрузку, то при переводе их в режим ввода они являются источниками тока для вы- хода микросхемы или транзистора, нагруженного на этот вывод. Поэтому порты Р1-РЗ получили название «квазидвунаправленные», в отличие от «истинно двунаправленного» порта РО, переводимого в режиме ввода информации в высокоимпедансное состояние. Каждый из выводов портов Р1-РЗ может быть нагружен на четы- ре ТТЛШ-входа (микросхемы серии К555). Они не требуют внешней нагрузки, но если в качестве выходов к этим выводам подключены ненагруженные выводы с открытым коллектором ими стоком, вре- мя установления сигнала может затянуться. Выводы порта РО при обращении к внешней памяти могут быть нагружены на восемь ТТЛШ-входов. При использовании в качестве обычного порта каж- дый из выводов должен быть подключен к шине питания через рези- стор номиналом 10...20 кОм. При использовании РО в качестве шины адреса/данных необходимость в этом отпадает. 46
Во время выполнения команд, изменяющих SFR портов, новые значения защелкиваются в триггеры SFR в самом последнем цикле выполнения команды. Но на выводах микро-ЭВМ данные появля- ются только в начале выполнения следующей команды. Если это изменение представляет из себя перепад из 0 в 1 линий портов Р1-РЗ, то в начальный момент выполнения команды включа- ется дополнительный нагрузочный транзистор в нагрузке транзис- тора выходного каскада порта. Дополнительная нагрузка в состоя- нии обеспечить ток переключения в 100 раз больший, чем номинальная, что резко повышает скорость переключения. В п-МОП версии обычная нагрузка обеспечивает ток через закоро- ченный транзистор выходного буфера на уровне 0,25 мА. Дополнитель- ная нагрузка обеспечивает ток при закороченном транзисторе до 30 мА. В k-МОП версии нагрузка выходного буфера состоит из трех по- левых транзисторов. При установке на затворе транзистора едини- цы n-канальный полевой транзистор открывается, закрываясь при установке на затворе нуля, р-канальный полевой транзистор работа- ет в противофазе с ним. При своем открывании n-канальный тран- зистор открывает через специальный инвертор дополнительный р- канальный транзистор. Отметим, что если на выводе микро-ЭВМ присутствовала 1, а внешняя нагрузка переключилась в ноль, то дополнительный нагру- зочный транзистор может закрыться, и порт перейдет в высокоим- педансное состояние. Но при снятии причины, приведшей к этому переключению, основной р-канальный полевой транзистор, быстро- действие которого велико и сопоставимо с быстродействием п-ка- нального, восстановит исходный потенциал. Обращение к портам ввода/вывода возможно с использованием команд, оперирующих с байтом, отдельным битом и произвольной комбинацией бит. При этом в тех случаях, когда порт является одно- временно операндом и местом назначения результата, автоматичес- ки реализуется специальный режим «чтение-модификация-запись». Этот режим обращения предполагает ввод сигналов не с внешних выводов порта, а из его регистра-защелки SFR, что позволяет исклю- чить неправильное считывание ранее выведенной информации. Причиной, по которой оказалось необходимым осуществить ко- манды типа «чтение-модификация-запись», является необходимость исключить неправильное считывание уровня сигнала на выводе мик- ро-ЭВМ. Предположим, например, что линия X порта Y соединяется с базой мощного транзистора, и выходной сигнал на ней предназна- чен для его управления. Когда в данный бит записана 1, то транзис- тор включается. Если для проверки состояния исполнительного ме- 47
ханизма, управляемого мощным транзистором, прикладной про- грамме требуется прочитать состояние выходного сигнала в том же бите порта, то считывание сигнала с внешнего вывода порта, а не из D-триггера SFR порта приведет к неправильному результату. Еди- ничный сигнал на базе транзистора имеет относительно низкий уро- вень и будет интерпретирован CPU микро-ЭВМ как 0. Команды типа «чтение-модификация-запись» реализуют считывание из регистра SFR, а не с внешнего вывода порта, что обеспечивает получение пра- вильного значения 1. Механизм «чтение-модификация-запись» реализован в командах ANL; ORL; XRL; JBC; CPL; INC; DEC; DJNZ; MOV PX.Y.C; CLR PX.Y; SETB PX. Y. В настоящем разделе мы только перечислили команды. Более подробно о них будет сказано позже. РАБОТА С ВНЕШНЕЙ ПАМЯТЬЮ Если используется 16-битовый адрес, старшие 8 бит выводятся через порт Р2, где они сохраняются в течение всего цикла обращения к внешней памяти. Отметим, что выходные буферы порта Р2 имеют внутреннюю нагрузку, несколько отличную от Р1 и РЗ, благодаря чему в SFR Р2 при выводе адресной информации вовсе не обязательно за- щелкивать все единицы. Добавим также, что при выводе адресной информации информация из SFR Р2, хоть и не присутствует на вы- водах микро-ЭВМ, но и не теряется, восстанавливаясь на выводах после окончания обращений к внешней памяти (если в процессе этих обращений SFR Р2 не был модифицирован). Если при обращении к внешней памяти данных используется 8-битный адрес, то на выводах порта остается та же информация, ко- торая там была до начала обращения к внешней памяти. Это позволя- ет организовать постраничную адресацию внешней памяти данных. Во время обращения к внешней памяти CPU записывает 0FFH в SFR Р0, уничтожая, таким образом, хранимую там информацию. Следовательно, использовать для записи порт Р0 при работе с внеш- ней памятью надо с известной долей осторожности. Обращение к внешней памяти программ возможно в двух слу- чаях: сигнал ЕА активен, т. е. имеет нулевой уровень или программ- ный счетчик PC содержит число больше 0FFFH. Когда CPU работает с внешней памятью программ, все линии Р2 используются для вывода старшего байта адреса и не могут быть ис- пользованы для обычного ввода/вывода информации. При этом, как отмечалось выше, в SFR Р2 может быть занесена любая информа- ция — адресная информация, выводимая через Р2, не зависит от со- стояния его SFR. 48
УСТРОЙСТВО УПРАВЛЕНИЯ И СИНХРОНИЗАЦИИ К выводам XI и Х2 микро-ЭВМ подключается кварцевый резо- натор. Об устройстве встроенного тактового генератора микро-ЭВМ будет рассказано ниже, при описании режимов энергопотребления. Пока отметим только то, что вырабатываемые им сигналы синхро- низуют всю работу микро-ЭВМ. Устройство управления микро-ЭВМ формирует машинный цикл фиксированной длительности, равной 12 периодам резонатора или шести состояниям управляющего устройства (S1...S6). Каждое состоя- ние содержит две фазы сигналов резонатора (Р1 и Р2). В фазе Р1,как правило, выполняется операция в АЛУ, а в фазе Р2 выполняется меж- регистровая передача. Весь машинный цикл состоит из 12 фаз, начи- ная от S1P1 и кончая S6P2 (рис. 4). Этот рисунок иллюстрирует работу управляющего устройства при выполнении команд различной степе- ни сложности — от однобайтовых, выполняющихся за один машин- ный цикл, до двухбайтовых, работающих с внешней памятью. Отме- тим, что заштрихованные сигналы являются внутренними, недоступными разработчику. Единственными внешними, наблюдае- мыми сигналами являются сигналы кварцевого резонатора и сигналы ALE. Последние формируются дважды за один машинный цикл в фа- S5 P1IP2 S6 S1 S2 S3 S4 P1IP2 P1IP2 лплг Чтеь не вто эого байт а ком; нды Чтений след /ющих КОПов (отбрас ^вается) 1тение КОПа (тени* КОПа 1тени( КОПа пени* КОПа Чтени^ след лощих КОПов (отбрас Чтений следующего КОПа (о -6pact 1вается) S5 P1IP2 S4 S1 S2 S3 Чте ние КОПа сл( дующей кок анды Чт« ние КОПа сл« дующей кок анды г1вается) Обращение |Нет А1Ё| к внешней памяти данных S6 S1 P1IP2 P1IP2 SP1IP2 Ж Чтение КОПа следующей к >манды Чтение КОПа следую щей к >манды Рис. 4 зах S1P2-S2P1 и S4P2-S5P1. Они используются процессором микро-ЭВМ для защелкивания младшего байта адреса при обращении к внешней памяти. Отметим только, что при обращении к внешней памяти дан- ных сигнал ALE, вырабатываемый в фазе S1P2-S2P1 второго машин- ного цикла, отсутствует, т. к. в этот момент происходит передача дан- 49
ных через линии порта РО, и защелкивание этой информации в реги- стре-защелке младшего байта адреса приведет к сбою системы. Количество машинных циклов и тактов, необходимое микро- ЭВМ для выполнения каждой команды, будет дано при описании системы команд. Сейчас отметим только, что микро-ЭВМ оперирует с 13 различными типами команд, имеющими длину от 1 до 3 байт и выполняющимися за 1...2 машинных цикла (за исключением двух однобайтовых команд умножения и деления, выполняющихся за 4 цикла). Таким образом, при работе на частоте 12 МГц подавляющее большинство команд выполняется микро-ЭВМ за 1...2 мкс, в связи с чем микро-ЭВМ рассматриваемого семейства превосходят по произ- водительности системы на микропроцессоре 580ВМ80. На рис. 5—8 приведены временные диаграммы работы микро-ЭВМ с внешней памятью программ и данных и с портами ввода/вывода. При обращении к внешней памяти данных используются коман- ды, выполняющиеся за два машинных цикла. В первом машинном цикле сигнал ALE возникает в момент S1P2 (на рис. 5, 6 не показаны) 1--------------1 PCLOUT (если нет обращния Данные действительны к внешней памяти) PCHOR DPHOR PCH OR Р2 SFR Р2 SFR OUT Р2 SFR S4 S5 S6 S1 S2 S3 S4 S5 Рис. 5 J PCLOUT (если нет обращния к внешней памяти) DPLOR Rl OUT DATA OUT PCL эит PCH OR DPH OR PCH OR P2SFR P2 SFR OUT P2SFR РИС. 6 50
Рис. 7 S2 S4 S5 S6 S1 S2 I S3 S4 S5 P1IP2 P1IP2 P1IP2 P1IP2 P1IP2 P1IP2 P1 |P2 P1IP2 лпппЖ Данные действительны: Для P0,P1,P2,P3 Для P0,P1,P2,P3 Для RST MOV. PORT, SRC OLD DATA NEW DATA Сдвиг__________|_J I_____________kJ последовательного | j Данные действительны: I I порта 1реж. и) на входе RXD в буфере Рис. 8 и в момент S4P2 (первые из показанных на временных диаграммах рис. 5, 6). По спаду этих сигналов во внешний регистр-защелку дол- жна быть занесена адресная информация, выводимая по линиям пор- та О (DPL OR RI OUT — вывод младшего байта из регистра DPTR, либо байта из регистра R0 или R1). При обращении к внешней памя- ти с использованием регистра DPTR на линиях порта 2 при этом по- является старший байт из регистра DPTR (DPH). Если происходит обращение к внешней памяти данных с использованием регистров R0 или R1, то на линиях порта появляется информация из его SFR (Р2 SFR OUT). В момент S1P1 второго машинного цикла активизи- руется сигнал RD или WR. При этом в режиме чтения линии порта переходят в высокоимпедансное состояние (FLOAT), и к моменту S3P1, когда микро-ЭВМ считывает данные, они должны быть уста- новившимися (DATA SAMPLED). В режиме записи в течение всего времени действия сигнала WR на линиях портов сохраняется выво- 51
димая информация. В момент S1P1 второго машинного цикла как при чтении (рис. 5), так и при записи (рис. 6) сигнал ALE отсутству- ет, так как по линиям порта РО идет обмен данными между микро- ЭВМ и внешним ОЗУ, а не выводится адресная информация. При обращении к внешней памяти программ (равно как и во всех остальных случаях, за исключением вышеупомянутых случаев об- мена информацией с внешним ОЗУ) сигнал ALE формируется как в момент S1P2, так и в момент S4P2 без пропусков. Поскольку при об- ращении к внешней памяти программ всегда используется двухбай- товый счетчик команд PC, то его младший байт выводится по лини- ям порта РО (PCL OUT на рис. 7) и фиксируется во внешнем регистре-защелке по спаду ALE, а старший байт выводится по лини- ям порта Р2 (PCH OUT). Роль строб-сигнала чтения в этом случае играет сигнал PSEN. Временные диаграммы работы портов при вводе и выводе ин- формации приведены на рис. 8. При вводе информации через порты РО-РЗ данные должны быть установившимися к моменту S5P1 и со- храняться неизменными до момента S5P2. При выводе информации из портов новые данные (NEW DATA) появляются на выводах мик- ро-ЭВМ в момент S1P1 цикла, следующего за циклом, в котором осу- ществлялась команда вывода. Временные зависимости, относящие- ся к последовательному порту (SERIAL PORT), будут описаны ниже. ТАЙМЕРЫ-СЧЕТЧИКИ _ Два программируемых 16-битных таймера-счетчика (Т /СО и Т /С1) могут быть использованы как в качестве таймеров, так в качестве счет- чиков внешних событий. При работе в качестве таймера содержимое соответствующего Т /С инкрементируется в каждом машинном цик- ле, т. е. через каждые 12 периодов резонатора. При работе в качестве счетчика содержимое Т /С инкрементируется под воздействием пе- рехода из 1 в 0 внешнего входного сигнала, подаваемого на соответ- ствующий (ТО, Т1) вывод 8051. Опрос значения внешнего входного сигнала выполняется в момент времени S5P2 каждого машинного цикла. Содержимое счетчика будет увеличено на 1 в том случае, если в предыдущем цикле был считан входной сигнал высокого уровня (1), а в следующем — сигнал низкого уровня (0). Новое (инкремен- тированное) значение счетчика будет сформировано в момент S3P1 в цикле, следующем за тем, в котором был обнаружен переход сигна- ла из 1 в 0. Так как на распознавание перехода требуется два машин- ных цикла, то максимальная частота подсчета входных сигналов равна 1/24 частоты резонатора. На длительность периода входных сигна- 52
лов ограничений сверху нет. Для гарантированного прочтения вход - ного считываемого сигнала он должен удерживать значение 1 как минимум в течение одного машинного цикла 8051. Для управления режимами работы Т /С и для организации взаи- модействия таймеров с системой прерывания используются два ре- гистра специальных функций (Т MOD и Т CON), описание которых приводится в табл. 4 и 5 соответственно. Как следует из описания управляющих бит TMOD, для обоих Т /С режимы работы 0, 1 и 2 одинаковы. Режимы 3 для Т /СО и Т/Cl различны. Рассмотрим кратко работу Т /С во всех четырех режимах. Регистр режима работы таймер/счетчика TMOD Таблица 4 Символ Позиция Имя и назначение GATE TMOD.7 для Т/С1, и TMOD.3 для Т/СО Управление блокировкой. Если бит установлен, то таймер- счетчик “х" разрешен до тех пор, пока на входе INTx высокий уровень, и бит управления TRx установлен. Если бит сброшен, то Т/С разрешается, как только бит управления устанавливается С/Т TMOD.6 для Т/С1, и TMOD.2 для Т /СО Бит выбора режима таймера или счетчика событий. Если бит сброшен, то работает таймер от внутреннего источника сигналов синхронизации. Если бит установлен, то работает счетчик от внешних сигналов на входе Тх М1 TMOD.5 для Т/С1, и TMOD.1 для Т/СО Режим работы (см. примечание) МО TMOD.4 для Т/С1, и TMOD.O для Т /СО Примечание к таблице 4 М1 МО Режим работы 0 0 Таймер 8048. TLx работает как 5-битный предделитель 0 1 16-битный таймер-счетчик. ТНх и TLx включены последовательно 1 0 8-битный автоперезагружаемый таймер-счетчик. ТНх хранит значение, которое должно быть перезагружено в TLx каждый раз по переполнению 1 1 Таймер-счетчик 1 останавливается. Таймер-счетчик 0: TLO работает как 8-битный таймер-счетчик, и его режим определяется управляющими битами таймера 0. ТНО работает только как 8- битный таймер, и его режим определяется управляющими битами таймера 1 53
Таблица 5 Регистр управления/статуса таймера TCON Имя и назначение Позиция Описание TF1 TCON.7 Флаг переполнения таймера 1. Устанавливается аппаратурно при переполнении таймера/счетчика. Сбрасывается при обслуживании прерывания аппаратурно TR1 TCON.6 Бит управления таймера 1. Устанавливается/сбрасывается программой для пуска/останова TF0 TCON.5 Флаг переполнения таймера 0. Устанавливается аппаратурно. Сбрасывается при обслуживании прерывания TR0 TCON.4 Бит управления таймера 0. Устанавливается/сбрасывается программой для пуска/останова таймера/счетчика IE1 TCON.3 Флаг фронта прерывания 1. Устанавливается аппаратурно, когда детектируется срез внешнего сигнала INT1 . Сбрасывается при обслуживании прерывания IT1 TCON.2 Бит управления типом прерывания 1. Устанавливается/сбрасывается программно для спецификации запроса INT1 (срез/низкий уровень) IE0 TCON.1 Флаг фронта прерывания 0. Устанавливается по срезу сигнала INTO .Сбрасывается при обслуживании прерывания IT1 TCON.O Бит управления типом прерывания 0. Устанавливается/сбрасывается прграммно для спецификации запроса INTO (срез/низкий уровень) Режим 0. Перевод любого Т /С в режим 0 делает его похожим на таймер 8048 (8-битный счетчик), на вход которого подключен 5-бит- ный предделитель частоты на 32. Работу Т /С в режиме 0 на примере Т /С 1 иллюстрирует рис. 9, а. В этом режиме таймерный регистр име- ет разрядность 13 бит. При переходе из состояния «все единицы» в со- стояние «все нули» устанавливается флаг прерывания от таймера TF1. Входной синхросигнал таймера 1 разрешен (поступает на вход Т /С1), когда управляющий бит TR1 установлен в 1 и либо управляющий бит GATE (блокировка) равен 0, либо на внешний вывод запроса преры- вания INT1 поступает уровень 1. Отметим попутно, что установка бита GATE в 1 позволяет ис- пользовать таймер для измерения длительности импульсного сигна- ла, подаваемого на вход запроса прерывания. Режим 1. Работа любого Т /С в режиме 1 такая же, как и в режиме 0, за исключением того, что таймерный регистр имеет разрядность 16 бит. Режим 2. В режиме 2 работа организована таким образом, что пе- реполнение (переход из состояния «все единицы» в состояние «все 54
Рис. 9 нули») 8-битного счетчика ТЫ приводит не только к установке фла- га TF1 (рис. 9, б), но и автоматически перезагружает в ТЫ содержи- мое старшего байта (ТН1) таймерного регистра, которое предвари- тельно было задано программным путем. Перегрузка оставляет содержимое ТН1 неизменным. В режиме 2 Т /СО иТ /С1 также рабо- тают совершенно одинаково. _ Режим 3. В режиме 3 Т /СО и Т /С1 работают по-разному. Т/С1 сохраняет неизменным свое текущее содержимое. Иными словами, эффект такой же, как и при сбросе управляющего бита TR1 в нуль. Работу Т /СО в режиме 3 иллюстрирует рис. 9, в. В режиме 3 TL0 и ТНО функционируют как два независимых 8-битных счетчика. Ра- боту TL0 определяют управляющие биты Т/СО (С/Т, GATE, TRO), входной сигнал INTO и флаг переполнения TF0. Работу ТНО, кото- рый может выполнять только функции таймера (подсчет машинных циклов микро-ЭВМ), определяет управляющий бит TR1. При этом ТНО использует флаг переполнения TF1. 55
Режим 3 используется в тех случаях применения 8051, когда тре- буется наличие дополнительного 8-битного таймера или счетчика событий. Можно считать, что в этом режиме 8051 имеет в своем составе три таймера/счетчика. Если Т /СО используется в режиме 3, Т /С1 может быть выключен, переведен в режим 0,1 или 2 или мо- жет быть использован последовательным портом в качестве гене- ратора частоты передачи. СИСТЕМА ПРЕРЫВАНИЙ Упрощенная схема прерываний 8051 показана на рис. 10. Рис. 10 Внешние прерывания INTO и INT1 могут быть вызваны либо уровнем, либо переходом сигнала из 1 в 0 на входах 8051, в зависимо- сти от значений управляющих бит IT0 и IT1 в регистре TCON. От внешних прерываний устанавливаются флаги IE0 и IE1 в регистре TCON, которые инициируют вызов соответствующей программы обслуживания прерывания. Сброс этих флагов выполняется аппара- турно только в том случае, если прерывание было вызвано по пере- ходу (срезу) сигнала. Если же прерывание вызвано уровнем входно- го сигнала, то сбросом флага IE должна управлять соответствующая подпрограмма обслуживания прерывания путем воздей ствия на ис- точник прерывания с целью снятия им запроса. Флаги запросов прерывания от таймеров TF0 и TF1 сбрасывают- ся автоматически при передаче управления подпрограмме обслужи- вания. Флаги запросов прерывания RI и TI устанавливаются блоком управления приемопередатчика аппаратно, но сбрасываться долж- ны программным путем. Прерывания могут быть вызваны или отменены программой, так как все перечисленные флаги программно-доступны и могут быть ус- 56
тановлены/сброшены программой с тем же результатом, как если бы они были установлены/сброшены аппаратными средствами. В блоке регистров специальных функций есть два регистра, пред- назначенных для управления режимом прерываний и уровнями приоритета. Форматы этих регистров, имеющих символические име- на IF и IP, описаны в табл. 6 и 7 соответственно. Возможность про- граммной установки/сброса любого управляющего бита в этих двух регистрах делает систему прерываний 8051 исключительно гибкой. Регистр масок прерывания (IE) Таблица 6 Символ Позиция Имя и назначение ЕА IE.7 Снятие блокировки прерывания. Сбрасывается программно для запрета всех прерываний независимо от состояний IE.4...IE.0 — IE.6 Не используется — IE.5 Не используется ES IE.4 Бит разрешения прерывания от приемопередатчика. Установка/сброс программой для разрешения/запрета прерываний от флагов TI или RI ЕТ1 IE.3 Бит разрешения прерывания от таймера 1. Установка/сброс программой для разрешения/запрета прерываний от таймера "1 ЕХ1 IE.2 Бит разрешения внешнего прерывания 1. Установка/сброс программой для разрешения/запрета прерывания 1 ЕТО IE.1 Бит разрешения прерывания от таймера 0. Установка/сброс программой для разрешения/запрета прерываний от таймера 0 ЕХО IE.0 Бит разрешения внешнего прерывания 0. Установка/сброс программой для разрешения/запрета прерывания 0 Таблица 7 Регистр приоритетов прерываний IP Символ Позиция Имя и назначение — IP.7-IP.5 Не используются PS IP.4 Бит приоритета приемопередатчика. Установка/сброс программой для присваивания прерыванию от приемопередатчика высшего/низшего приоритета РТ1 IP.3 Бит приоритета таймера 1. Установка/сброс программой для присваивания прерыванию от таймера 1 высшего/низшего приоритета РХ1 IP.2 Бит приоритета внешнего прерывания 1. Установка/сброс программой для присваивания высшего/низшего приоритета внешнему прерыванию INT1 РТО IP.1 Бит приоритета таймера 0. Установка/сброс программой для присваивания прерыванию от таймера 0 высшего/низшего приоритета РХО IP.0 Бит приоритета внешнего прерывания 0. Установка/сброс программой для присваивания высшего/низшего приоритета внешнему прерыванию INTO 57
Флаги прерываний опрашиваются в момент S5P2 каждого машин- ного цикла. Ранжирование прерываний по уровню приоритета вы- полняется в течение следующего машинного цикла. Система преры- ваний сформирует аппаратный вызов (LCALL) соответствующей подпрограммы обслуживания, если она не заблокирована одним из следующих условий : 1)в данный момент обслуживается запрос прерывания равного или высокого уровня приоритета; 2) текущий машинный цикл — не последний в цикле выполняе- мой команды; 3) выполняется команда RETI или любая команда, связанная с обращением к регистрам IE или IP. Отметим, что если флаг прерывания был установлен, но по од- ному из перечисленных выше условий не получил обслуживания и к моменту окончания блокировки уже был сброшен, то запрос преры- вания теряется и нигде не запоминается. По аппаратно-сформированному коду LCALL система прерыва- ния помещает в стек только содержимое счетчика команд (PC) и заг- ружает в счетчик команд адрес вектора соответствующей подпрограм- мы обслуживания. По адресу вектора должна быть расположена команда безусловной передачи управления (JMP) к начальному адре- су подпрограммы обслуживания прерывания. Подпрограмма обслу- живания в случае необходимости должна начинаться командами за- писи в стек (PUSH) слова состояния программы (PSW), аккумулятора, расширителя, указателя данных и т. д. и должна заканчиваться коман- дами восстановления из стека (POP). Подпрограммы обслуживания прерывания должны завершаться командой RETI, по которой в счет- чик команд перезагружается из стека сохраненный адрес возврата в основную программу, Команда RET также возвращает управление пре- рванной основной программе, но при этом не снимает блокировку пре- рываний, что приводит к необходимости иметь программный меха- низм анализа окончания процедуры обслуживания данного прерывания. ПОСЛЕДОВАТЕЛЬНЫЙ ИНТЕРФЕЙС Через универсальный асинхронный приемопередатчик осуществ- ляется прием и передача информации, представленной последова- тельным кодом (младшими битами вперед), в полном дуплексном режиме обмена. В состав приемопередатчика, называемого часто пос- ледовательным портом, входят принимающий и передающий сдви- гающие регистры, а также специальный буферный регистр (SBUF) приемопередатчика. Запись байта в буфер приводит к автоматичес- 58
кой переписи байта в сдвигающий регистр передатчика и иницииру- ет начало передачи байта. Наличие буферного регистра приемника позволяет совмещать операцию чтения ранее принятого байта с при- емом очередного байта. Но если к моменту окончания приема байта предыдущий байт не был считан из SBUF, то он будет потерян. Последовательный порт 8051 может работать в четырех различ- ных режимах. Режим 0. В этом режиме информация и передается, и принимается через внешний вывод входа приемника (RXD). Принимаются или пе- редаются 8 бит данных. Через внешний вывод выхода передатчика (TXD) выдаются импульсы сдвига, которые сопровождают каждый бит. Частота передачи бита информации равна 1/12 частоты резонатора. Режим 1. В этом режиме передаются через TXD или принимают- ся из RXD 10 бит информации: старт-бит (0), 8 бит данных и стоп - бит (1). При приеме информации в бит RB8 регистра управления- статуса приемопередатчика SCON заносится стоп-бит. Скорость приема/передачи — величина переменная и задается таймером. Режим 2. В этом режиме через TXD передаются или из RXD при- нимаются 11 бит информации: старт-бит, 8 бит данных, програм- мируемый девятый бит и стоп-бит. При передаче девятый бит дан- ных может принимать значение 0 или 1, либо, например, для повышения достоверности передачи путем контроля по четности в него может быть помещено значение признака паритета из слова состояния программы (PSW.0). При приеме девятый бит данных помещается в бит RB8 SCON, а стоп-бит, в отличие от режима 1, теряется. Частота приема/передачи выбирается программой и мо- жет быть равна либо 1/32, либо 1/64 частоты резонатора в зависи- мости от управляющего бита SMOD. Режим 3. Режим 3 совпадает с режимом 2 во всех деталях, за ис- ключением частоты приема/передачи, которая является величиной переменной и задается таймером. Во всех случаях передача инициализируется инструкцией, в ко- торой данные перемещаются в SBUF. Прием инициализируется при обнаружении перепада из 1 в 0 на входе приемника. При этом в ре- жиме 0 этот переход должен сопровождаться выполнением условий RI=0 и REN=1 (табл. 8), а для остальных режимов REN=1. Управление режимом работы приемопередатчика осуществляет- ся через специальный регистр с символическим именем SCON. Этот регистр содержит не только управляющие биты, определяющие ре- жим работы последовательного порта, но и девятый бит принима- емых или передаваемых данных (RB8 и ТВ8) и биты прерывания при- емопередатчика (RI и TI). 59
Функциональное назначение бит регистра управления/статуса приемопередатчика приводится в табл. 8. Таблица 8 Регистр управления/статуса SCON Символ Позиция Имя и назначение SM0 SM1 SCON.7 SCON.6 Биты управления режимом работы приемопередатчика. Устанавливаются/сбрасываются программно (см. примечание) SM2 SCON.5 Бит управления режимом приемопередатчика. Устанавливается программно для запрета приема сообщения, в котором девятый бит имеет значение 0 REN SCON.4 Бит разрешения приема. Устанавливается/сбрасывается программно для разрешения/запрета приема последовательных данных ТВ8 SCON.3 Передача бита 8. Устанавливается/сбрасывается программно для задания девятого передаваемого бита в режиме 9-битового передатчика R.B8 SCON.2 Прием бита 8. Устанавливается/сбрасывается аппаратурно для фиксации девятого принимаемого бита в режиме 9-битового приемника TI SCON.1 Флаг прерывания передатчика. Устанавливается аппаратурно при окончании передачи байта. Сбрасывается программно после обслуживания прерывания R! SCON.O Флаг прерывания приемника. Устанавливается аппаратурно при приеме байта. Сбрасывается программно после обслуживания прерывания Примечание к таблице 8 SM0 SM1 Режим работы приемопередатчика 0 0 Сдвигающий регистр расширения ввода/вывода 0 1 8-битовый приемопередатчик. Изменяемая скорость передачи ! 0 9-битовый приемопередатчик. Фиксированная скорость передачи L 1 9-битовый приемопередатчик. Изменяемая скорость передачи Прикладная программа путем загрузки в старшие биты регистра SCON 2- битного кода определяет режим работы приемопередатчи- ка. Во всех четырех режимах работы передача инициализируется любой командой, в которой буферный регистр SBUF указан как по- лучатель байта. Как уже отмечалось, прием в режиме 0 осуществля- ется при условии, что RI=0 и REN=1, в остальных режимах REN=1. В бите ТВ8 программно устанавливается значение девятого бита данных, который будет передан в режиме 2 или 3. В бите RB8 фикси- 60
руется в режимах 2 и 3 девятый принимаемый бит данных. В режиме 1 в бит RB8 заносцтся стоп-бит. В режиме 0 бит RB8 не используется. Флаг прерывания передатчика TI устанавливается аппаратно в кон- це периода передачи стоп-бита во всех режимах. Соответствующая подпрограмма обслуживания прерывания должна сбрасывать бит TI. Флаг прерывания приемника RI устанавливается аппаратно в кон- це периода приема восьмого бита данных в режиме 0 и в середине периода приема стоп-бита в режимах 1, 2 и 3. Подпрограмма обслу- живания прерывания должна сбрасывать бит RI. Скорость приема/передачи, т. е. частота работы приемопередат- чика в различных режимах, определяется различными способами. В режиме 0 частота передачи зависит только от резонансной час- тоты кварцевого резонатора fpe3: f = f 3/12. За машинный цикл пос- ледовательный порт передает один бит информации. В режимах 1,2 и 3 скорость приема/передачи зависит от значения управляющего бита SMOD в регистре специальных функций PCON (табл. 9). Таблица 9 Регистр управления мощностью PCON Символ Позиция Наименование и функция SMOD PCON.7 Удвоенная скорость передачи. Если бит установлен в 1, то скорость передачи вдвое больше, чем при SMOD=0. По сбросу SMOD=0. — PCON.6 Не используется — PCON.5 Не используется — PCON.4 Не используется GF1 GF0 PCON.3 PCON.2 Флаги, специфицируемые пользователем (флаги общего назначения) PD PCON.1 Бит пониженной мощности. При установке бита в 1 микро- ЭВМ переходит в режим пониженной потребляемой мощности IDL PCON.O Бит холостого хода. Если бит установлен в 1, то микро-ЭВМ переходит в режим холостого хода Примечание. При одновременной записи 1 в PD и IDL бит PD имеет преимущество. Сброс содержимого PCON выполняется путем загрузки в него кода 0XXX0000 В режиме 2 частота передачи определяется значением SMOD. При SMOD=0 частота передачи равна (l/64)fpe3, а при SMOD=1 равна (l/32)f 3, или в общем виде f = (2SMOD)/(64xfpe3). В режимах 1 и 3 в формировании частоты передачи кроме управ- ляющего бита SMOD принимает участие таймер 1. При этом частота 61
передачи зависит от частоты переполнения fOVLT1 и определяется сле- дующим образом: f=(2sMOD)x(fOVLT1 /32). Прерывание от таймера 1 в этом случае должно быть заблокиро- вано. Сам же таймер может работать при этом как в режиме таймера, так и в режиме счетчика. Номер режима (0, 1, 2) роли не играет. Однако наиболее типичным является его использование в режи- ме таймера с автоперезагрузкой (старшая тетрада TMOD=0010B). При этом частота передачи определяется выражением: f = (2 SMOD) х ( fpe3) / {32 х 12 X [256 - (ТН1)]}. В табл. 10 приводится описание способов настройки Т /С1 для по- лучения типовых частот передачи данных через приемопередатчик. От- метим, что скорость приема и передачи могут отличаться друг от друга. Таблица 10 Настройка таймера 1 для управления частотой работы приемопередатчика Частота приема/передачи (BAUD RATE) Частота резонатора, МГц SMOD Таймер/счетчик 1 СЛГ Режим (MODE) Переза- гружаемое число Режим 0, макс: 1 МГц 12 X X X X Режим 2, макс: 375 кГц 12 1 X X X Режим 1,3: 62,2 кГц 12 1 0 2 0FFH 19,2 кГц 11,059 1 0 2 0FDH 9,6 кГц 11,059 0 0 2 0FDH 4,8 кГц 11,059 0 0 2 0FAH 2,4 кГц 11,059 0 0 2 0Е4Н 1,2 кГц 11,059 0 0 2 0Е8Н 137,5 Гц 11,059 0 0 2 1DH 110 Гц 6 0 0 2 72Н 110 Гц 12 0 0 1 0FEEBN Предельно низких частот приемопередачи можно достичь при использовании таймера в режиме 1 (16-битовый таймер) и разреше- нии прерываний от таймера (старший полубайт TMOD = 0001В). Перезагрузка 16-битового таймера должна осуществляться программ- ным путем. Перечислим особенности работы приемопередатчика в различ- ных режимах. На рис. 11 показаны упрощенная структурная схема приемопе- редатчика и временная диаграмма его работы в режиме 0. Данные 62
Передача S6| S2S4S6I S2S4S6I S2S4S6I S2S4S6] S2S4S6I S2S4S6I S2S4S6I S2S4S6I S2S4S6I S2S4 S5 S1S3S5 S1S3S5 S1S3S5 S1S3S5 S1S3S5 S1 S3S5 S1 S3S5 S1S3S5 S1S3S5 S1S3S5 ale J]_JlJLJLJlJULJLJLJULJLJlJT_n_JLJULJOL Запись в П S6P2 SBUF—1 l±=- Посылка _________ Сдвиг RXD TXD Прием Сброс Rl J"l Рис. 11 передаются и принимаются через вывод RXD. Через вывод TXD вы- даются синхросигналы сдвига. Передаются/принимаются 8 бит, младшим битом вперед, частота обмена — фиксированная, равная 1/12 частоте резонатора. Передача начинается любой командой, по которой в SBUF посту- пает байт данных. В момент времени S6P2 устройство управления 8051 по сигналу «Запись в буфер» записывает байт в сдвигающий регистр 63
передатчика, устанавливает триггер девятого бита и запускает блок управления передачей, который через один машинный цикл выраба- тывает внутренний разрешающий сигнал «Посылка». При этом в мо- мент S6P2 каждого машинного цикла содержимое сдвигающего реги- стра сдвигается вправо (младшими битами вперед) и поступает на выход RXD. В освобождающиеся старшие биты сдвигающего регист- ра передатчика записываются нули. При получении от детектора нуля сигнала «Передатчик пуст» блок управления передатчиком снимает сигнал «Посылка» и устанавливает флаг TI (момент S1P1 десятого ма- шинного цикла после поступления сигнала «Запись в буфер»). Прием начинается при условии REN=1 и Rl=0. В момент S6P2 следующего машинного цикла блок управления приемником фор- мирует разрешающий сигнал «Прием», по которому на выход TXD передаются синхросигналы сдвига и в сдвигающем регистре прием- ника начинают формироваться значения бит данных, которые счи- тываются с входа RXD в моменты S5P2 каждого машинного цикла. В момент S1P1 десятого машинного цикла после сигнала «Запись в SCON» блок управления приемником переписывает содержимое сдвигающего регистра в буфер, снимает разрешающий сигнал «При- ем» и устанавливает флаг RI. На рис. 12 показаны структурная схема и временные диаграммы работы приемопередатчика при приеме и передаче данных в режи- ме 1. Через выход TXD приемопередатчик передает, а со входа RXD принимает 10 бит: старт-бит (0), 8 бит данных и стоп-бит (1). При приеме стоп-бит поступает в бит RB8 регистра SCON. Передача инициируется любой командой, в которой получателем байта является регистр SBUF. Генерируемый при этом управляющий сигнал «Запись в буфер» загружает 1 в девятый бит сдвигающего ре- гистра передатчика, запускает блок управления передачей и в момент времени S1P1 формирует разрешающий сигнал «Посылка». По это- му сигналу на вывод TXD сначала поступает старт-бит, а затем (по внутреннему разрешающему сигналу «Данные») биты данных. Каж- дый период передачи бита равен 16 тактам внутреннего счетчика-де- лителя на 16. Прием начинается при обнаружении перехода сигнала на входе RXD из состояния 1 в состояние 0. Для этого под управлением внут- реннего счетчика вход RXD опрашивается 16 раз за период представ- ления бита. Как только переход из 1 в 0 на входе RXD обнаружен, в сдвигающий регистр приемника загружается код 1FFH, внутренний счетчик по модулю 16 немедленно сбрасывается и перезапускается для выравнивания его переходов с границами периодов представле- ния принимаемых бит. Таким образом, каждый период представле- 64
Опрос входного сигнала Передача тх_П_____________П_____П_____П_____П_____П—Л___Л___________п_____п_.....п_ п_ я Запись в П SBUF----11--------------------------------------------------------------------- Посылка S1P1| Данные__________I |______________ сдвиг_______________п_____п_____п___п п п п п п______________________________________ Пересброс Прием ях“Х-Л______п___1Ш1______л___п___п____п___п___л_____п.. п п I / оо X DI X~D2~X~P3 Х~Р4 X р5 х D6 Х~Р7~У _____пппппппппп RI_________________________________________________________________________________________________________Г“ б) Рис. 12 ния бита делится на 16 периодов внутреннего счетчика. В состояниях 7,8 и 9 счетчика в каждом периоде представления бита производится опрос сигнала на входе RXD. Считанное значение принимаемого бита — это то, которое было получено по меньшей мере дважды из трех замеров (мажоритарное голосование по принципу «два из трех»). 65
Если значение, принятое в первом такте, не равно 0, то блок управле- ния приемом вновь возвращается к поиску переходов из 1 в 0. Этот механизм обеспечивает подавление ложных (сбойных) старт-бит. Ис- тинный старт-бит сдвигается в регистре приемника, и продолжается прием остальных бит посылки. Блок управления приемом сформи- рует сигнал «Загрузка буфера», установит RB8 и флаг RI только в том случае, если в последнем такте сдвига выполняются два условия: бит RI=0 и либо SM2=0, либо принятый стоп-бит равен 1. Если хотя бы одно из этих двух условий не выполняется, то принятая последова- тельность бит теряется. В это время вне зависимости от того, выпол- няются указанные условия или нет, блок управления приемником вновь начинает отыскивать переход из 1 в 0 на входе RXD. В режимах 2 и 3 через вывод TXD приемопередатчик передает или с вывода RXD принимает 11 бит: старт-бит (0), 8 бит данных, програм- мируемый девятый бит и стоп-бит (1). На временных диаграммах (рис. 13) показана работа приемопередатчика при передаче и приеме дан- ных в режимах 2 и 3. Как видно из них, в этих режимах прием данных ничем не отличается от приема в режиме 1 за исключением того, что в бит RB8 в этих режимах заносится не стоп-бит, а девятый бит данных. Естественно, это никак не изменяет временные диаграммы в режимах 2 и 3 в сравнении с режимом 1. Необходимо также отметить, что несколь- ко изменяются условия окончания цикла приема: блок управления при- емником сформирует управляющий сигнал «Загрузка буфера», загру- зит RB8 и установит флаг RI только в том случае, если в последнем такте сдвига выполняются два условия: бит RI=0 и либо SM2=0, либо значе- ние принятого девятого бита данных равно 1. При передаче данных в режимах 2 и 3 отличие от режима 1 состо- ит в том, что передаются не 8, а 9 бит данных, и вследствие этого цикл передачи оказывается на 1 полный период работы счетчика-де- лителя на 16 длиннее. Кроме того, как отмечалось выше, скорость обмена в режиме 2, в отличие от режимов 1 и 3, фиксирована и равна 1/32 или 1/64 от величины f . РАБОТА ПРИЕМОПЕРЕДАТЧИКА В МУЛЬТИМИКРОПРОЦЕССОРНЫХ СИСТЕМАХ Описание приемопередатчика микро-ЭВМ семейства 8051 будет неполным, если не упомянуть еще об одной возможности, предус- мотренной разработчиками фирмы Intel. Речь идет о работе приемо- передатчика в системах децентрализованного управления. Такие си- стемы используются для управления и регулирования в топологически распределенных объектах (в прокатных станах, в под- вижном составе железных дорог и метрополитена, в сборочных кон- 66
Передача тх ZE _п__п___п__п___п__п___п___п__п п п п п Запись bSBUF' Посылка —► | S1P1[ данные I I сдвиг______п__п___п__п___п___п__п___п__п__________ 1X0 \ / DO X 01 X 02 X ОЗ X 04 X 05 X~D6~X D6 X РВВ/ Стоп-биг Старт-бит ।-------- TI_____________________________________I Разреш_______. . стоп-бита J I Пересброс Прием RXZE-ll—П_ЛШ1__Л_Л__П__П—Л—П—П—П—п_ RXD I бит /00 X 01 Х~02~Х 03 X 04 X 05 Х~06~Х 07 X ВВВ/Птпп. бит вхоХ__________шшл-l_ сдвиг__________п___п__п___п___п__п п___п п п 6) Рис. 13 вейерах и линиях гибких автоматизированных производств). При этом возникает задача обмена информацией между множеством мик- роконтроллеров, объединенных в локальную вычислительно-управ- ляющую сеть. Как правило, локальные сети на основе 8051 имеют 67
магистральную архитектуру с раздельным моноканалом (коаксиаль - ный кабель, витая пара, оптическое волокно), по которому осуще- ствляется обмен информацией между микро-ЭВМ. В регистре специальных функций SCON микро-ЭВМ имеется уп- равляющий бит SM2, который в режимах 2 и 3 приемопередатчика позволяет относительно простыми средствами реализовать межпро- цессорный обмен информацией в локальных управляющих сетях. Механизм межпроцессорного обмена информацией через после- довательный порт 8051 построен на том, что в режимах 2 и 3 про- граммируемый девятый бит данных при приеме фиксируется в бите RB8. Приемопередатчик может быть запрограммирован таким обра- зом, что при получении стоп-бита прерывание от приемника будет возможно только при условии RB8=]. Это выполняется установкой управляющего бита SM2 в регистре SCON. Поясним процесс межпроцессорного обмена информацией на примере. Пусть ведущей микро-ЭВМ требуется передать блок дан- ных некоторой (или нескольким) ведомым. С этой целью ведущая микро-ЭВМ в протокольном режиме «широковещательной» переда- чи всем ведомым выдает в моноканал байт-идентификатор абонента (код адреса микро-ЭВМ-получателя), который отличается от байтов данных только тем, что в его девятом бите содержится 1. Программа реализации протокола сетевого обмена информацией должна быть построена таким образом, чтобы при получении байта-идентифика- тора (RB8=1) во всех ведомых микро-ЭВМ произошли прерывания прикладных программ и вызов подпрограммы сравнения байта-иден- тификатора с кодом собственного сетевого адреса. Адресуемая мик- ро-ЭВМ сбрасывает свой управляющий бит SM2 и готовится к при- ему блока данных. Остальные ведомые микро-ЭВМ, адрес которых не совпал с кодом байта-идентификатора, оставляют неизменным состояние SM2=1 и передают управление основной программе. При SM2M информационные байты, передаваемые по моноканалу и по- ступающие в приемопередатчик ведомых микро-ЭВМ, прерывания не вызывают, т. е. игнорируются. В режиме 1 приемопередатчиком автономной микро-ЭВМ управ- ляющий бит SM2 используется для контроля истинности стоп-бита (при SM2=1 прерывание не произойдет до тех пор, пока не будет по- лучено истинное (единичное) значение стоп-бита). В режиме 0 бит SM2 не используется и должен быть сброшен. ПОШАГОВЫЙ РЕЖИМ ОТЛАДКИ АППАРАТНЫХ СРЕДСТВ И ПРОГРАММ Отладка прикладной программы может оказаться наиболее слож- ной задачей разработчика. Относительно высокая стоимость аппа- 68
ратных и программных отладчиков приводит к тому, что в распоря- жении разработчика на этапе отладки имеется в наличии лишь «ме- тод внимательного всматривания». Особую ценность в этом случае приобретает возможность пошагового (покомандного) выполнения отлаживаемой программы. В отличие от микро-ЭВМ семейства 8048, у микро-ЭВМ семей- ства 8051 отсутствует вывод, подачей на который соответствующего сигнала можно перевести микро-ЭВМ в режим ожидания. Тем не менее, пошаговый режим выполнения программы может быть легко реализован. Структура прерываний 8051 позволяет реализовать по- шаговый режим работы с очень незначительными программными доработками. Как ранее отмечено, запрос прерывания не будет об- служен до тех пор, пока не завершится обработка прерывания с при- оритетом равного или более высокого уровня, и пока после команды возврата из подпрограммы обслуживания прерывания RETI не вы- полниться хотя бы одна какая-либо команда. Таким образом, однаж- ды вызванная программа прерывания не может быть вызвана по- вторно, пока она не будет завершена. Реализовать это свойство микро-ЭВМ для организации пошаго- вого режима выполнения программы можно следующим образом. Необходимо запрограммировать одно из внешних прерываний (ска- жем, INTO) на срабатывание по уровню входного сигнала. Програм- ма обслуживания прерывания должна заканчиваться следующими командами: JMB РЗ.2,$ ;ждать, пока INTO не станет единичным JB Р3.2,$ ;ждать, пока INTO не станет равным нулю RETI ; вернуться из прерывания и выполнить ;хотя бы одну команду ; (символом $ обозначено текущее содер- жимое счетчика команд) Теперь если на выводе INTO, являющемся также выводом Р3.2, установится нулевой уровень сигнала, процессор начнет выполне- ние программы обслуживания внешнего прерывания 0 и останется в ней до тех пор, пока на INTO не появится единичный уровень, а вслед за ним и нулевой. Затем он выполнит команду возврата RETI, вер- нется к прерваной программе, выполнит одну команду и немедлен- но вызовет программу обслуживания внешнего прерывания 0 для ожидания следующего положительного импульса на входе Р3.2. Та- ким образом, при каждом импульсе на входе Р3.2 микро-ЭВМ вы- полняет одну команду анализируемой прикладной программы. 69
СБРОС МИКРО-ЭВМ В отличие от микро-ЭВМ семейства 8048, сброс микро-ЭВМ се- мейства 8051 осуществляется единичным уровнем сигнала. Этот сиг- нал должен быть приложен к выводу RST. Сброс достигается удержанием вывода RST вверху в течение, по крайней мере, двух машинных циклов (24 периодов колебаний) при работающем генераторе. CPU отвечает выработкой внутреннего сброса, алгоритм которого описан ниже (см. рис. 14). I S5 I S6 I S1 I S2 ! S3 I S4 I S5 I S6 ! S1 ! S2 I S3 I S4 I S5 I S6 I S1 I S2 I S3 I S4 I ппшшшшшт PSEN —| РО ALE Внутр, сигнал — сброса А1Е“[ 19 периодов Колеб. кв. генератора 11 периодов Колеб. кв. генератора Рис. 14 Внешний сигнал сброса асинхронен в отношении внутренних сигналов микро-ЭВМ. Вывод RST опрашивается в течение состоя- ния 5 фазы 2 каждого машинного цикла. Поскольку выводы портов сохраняют свое текущее состояние в течение 19 периодов колебаний после обнаружения единицы на выводе RST, длительность сигнала сброса должна быть большей 19 периодов колебаний после сигнала внешнего сброса. Пока вывод RST имеет единичный уровень, выво- ды ALE и PSEN превращаются во входы, и потенциал на них мед- ленно ползет вверх. После возврата RST в нулевой уровень требуется от 1 до 2 ма- шинных циклов, чтобы ALE и PSEN начали синхронизироваться. Поэтому другие устройства нежелательно синхронизировать этими сигналами, если предполагается использовать сигнал сброса. Подача на выводы ALE и PSEN сигнала нулевого уровня в момент сброса может перевести микро-ЭВМ в неопределенное состояние. Алгоритм внутреннего сброса записывает нули во все регистры специальных функций кроме регистров-защелок портов ввода/вы- вода, указателя стека и SBUF. В защелках портов при инициализа- ции установлено 0FFH, в указателе стека — 07Н, а содержимое SBUF неопределено. В табл. 11 приведен список регистров специальных функций и их значений после прохождения сигнала сброса. 70
Таблица 11 Состояние регистров SFR после сброса Наименование регистра Значение после сброса PC оооон ACC ООН В ООН PSW ООН SP 07Н DPTR оооон P0...P3 OFFH IP хххооооов IE оххооооов TMOD ООН TCON ООН THO ООН TLO ООН TH1 ООН TL1 ООН SCON ООН SBUF ххххххххв PCON (п-МОП) охххххххв PCON (к-МОП) охххоооов Примечание. X — значение бита неопределено Сброс не оказывает воздействия на состояние ячеек внутреннего ОЗУ микро-ЭВМ. Однако необходимо учитывать, что их состояние после включения питающего напряжения неопределено. СБРОС ПО ВКЛЮЧЕНИИ ПИТАНИЯ Если подача питающего напряжения не сопровождается досто- верным сбросом ( т. е. удержанием единичного уровня на входе RST в течение 24 периодов резонатора), то микро-ЭВМ может начать вы- полнение программы до того, как в регистры специальных функций будут занесены значения, приведенные в табл. 11. При этом нельзя гарантировать корректность выполнения программы. Следователь- но, микро-ЭВМ должна иметь цепи, обеспечивающие автоматичес- кое формирование сигнала сброса при включении питания. Для микро-ЭВМ, выполненных по n-МОП технологии, при вклю- чении питания автоматическое формирование сигнала сброса может быть достигнуто соединением вывода RST с шиной питания через емкость 10 мкФ и с общим проводом через резистор 8,2 кОм . Для устройств к-МОП этот резистор не требуется, хотя его присутствие не повредит. Фактически, у к-МОП микро-ЭВМ этот резистор нахо- дится внутри, удерживая вход триггера Шмитта схемы сброса под 71
потенциалом земли. Значение емкости для к-МОП версий микро- ЭВМ можно снизить до 1 мкФ. При включении питании подобная цепь удерживает высокий уро- вень на входе RST в течение времени, которое зависит от значения ем- кости и уровня, до которого она заряжена. Для гарантии достоверного сброса этот единичный уровень должен сохраняться дольше, чем ге- нератор выработает 2 машинных цикла. Практика показывает, что при включении питания питающее напряжение достигает своего номиналь- ного значения как правило в течение примерно 10 мс. Время запуска генератора зависит от его частоты. Для резонатора с частотой 10 МГц оно составляет обычно 1 мс, а для 1-МГц резонатора оно составит 10 мс. Следовательно, постоянная времени RC-цепи, соединенной с выводом RST, должна в несколько раз превосходить указанные временные ин- тервалы и составлять 40...80 мс. В приведенной схеме резкое падение питающего напряжения вызывает мгновенное понижение напряжения на выводе RST ниже 0. Однако микро-ЭВМ снабжена внутренними ограничительными ди- одами, и эти броски напряжения не выводят ее из строя. Отметим также, что пока не запустится генератор микро-ЭВМ и не выполнится описанный выше алгоритм сброса, выводы портов РО-РЗ будут находиться в неопределенном состоянии. РЕЖИМЫ РАБОТЫ МИКРО-ЭВМ С ПОНИЖЕННЫМ ЭНЕРГОПОТРЕБЛЕНИЕМ Во многих вариантах использования микро-ЭВМ энергопотреб- ление является одним из основных параметров. В этих случаях целе- сообразно использовать к-МОП версии микро-ЭВМ. В этих версиях предусмотрены дополнительные возможности снижения потребле- ния, отсутствующие в стандартных n-МОП изделиях. Ранее выпускались и n-МОП версии микро-ЭВМ, имевшие ре- жимы работы с пониженным энергопотреблением. В настоящее вре- мя их выпуск почти повсеместно прекращен. Однако периодически они все-же будут попадать в руки радиолюбителей. Поэтому трудно гарантировать наличие или отсутствие этих режимов в тех или иных конкретных n-МОП изделиях. МАЛОПОТРЕБЛЯЮЩИЕ РЕЖИМЫ к-МОП ВЕРСИЙ Версии к-МОП имеют два режима с пониженным потреблением — режим холостого хода и режим выключенного напряжения питания. Иногда в литературе второй режим называют режимом пони- женного энергопотребления. С точки зрения автора это вряд ли кор- ректно, т. к. режим холостого хода тоже характеризуется понижен- 72
ным энергопотреблением в сравнении с обычным режимом работы микро-ЭВМ. Дословно второй режим, называемый в англоязычной литературе режимбм «Power Down Mode», можно перевести так, как указано нами выше. Этот перевод корректнее отражает суть режи- ма — в нем допустимо вообще отключить от микро-ЭВМ питающее напряжение, подаваемое на вход Vcc ( 40-й вывод корпуса микро- ЭВМ ). Для сохранения содержимого внутреннего ОЗУ его нужно запитать от резервного источника. При этом резервное питающее напряжение подается через вход RESET (вывод 9). На рис. 15 схема- тически показано, как реализуются эти режимы. В режиме холостого хода (IDL=1) генератор микро-ЭВМ работает, подавая вырабатываемые тактовые сигналы на схему прерываний, последовательный порт и на таймеры-счетчики. Все регис- тры сохраняют свое значение, на выво- дах всех портов удерживается то логи- ческое состояние, которое было на них в момент перехода в режим холостого Рис-15 хода. Однако синхросигнал генератора, синхронизирующий CPU, отключается. В режиме выключенного напряжения питания (PD=1) генератор останавливается. Прекращается тактирование не только CPU, но и последовательного порта, таймеров-счетчиков, схемы прерываний. Как и в режиме холостого хода, состояние регистров, резидентного ОЗУ и выводов портов остается неизменным. Режимы холостого хода и выключенного питания активируются при установке соответствующих битов в специальном функциональ- ном регистре — регистре управления мощностью PCON. Адрес это- го регистра — 87Н. Описание этого регистра было приведено в табл. 9. Отметим следующие особенности этого регистра. Если одновременно установлены в единицы биты IDL и PD, то бит PD имеет преимущество — микро-ЭВМ переходит в режим вык- люченного напряжения питания. Содержимое регистра PCON после сброса — (0XXX0000). В n-МОП версиях микро-ЭВМ регистр PCON содержит, как пра- вило, только SMOD. Остальные 4 бита присутствуют только в к-МОП устройствах. Пользовательские программы никогда не должны за- носить 1 в незанятые биты (PCON4...PCON6), т. к. они могут исполь- зоваться в последующих версиях микро-ЭВМ. Последнее распространяется на все регистры и все адреса в обла- сти регистров специальных функций, которые не заняты регистра- 73
ми. Разработчики предполагают их использование в новых издели- ях. Однако для достижения совместимости уже разработанного про- граммного обеспечения с новыми изделиями дополнительные воз- можности последних будут включаться установкой в единицы битов в соответствующих регистрах. Поэтому пользовательская про- грамма, устанавливающая в единицы неиспользуемые биты, будет нормально работать на микро-ЭВМ, имеющихся в наличии сегодня, но вовсе не обязательно будет работать на новых микро-ЭВМ, не- смотря на их полную программную совместимость с семейством 8051. Режим холостого хода В режим холостого хода микро-ЭВМ переводится любой командой, устанавливающей в 1 бит PCON.0. Эта команда оказывается последней в цепочке выполняемых команд — в режиме холостого хода выполне- ние программы приостанавливается, т. к. на CPU перестает подаваться сигнал с тактового генератора. Однако содержимое внутреннего ОЗУ и регистров специальных функций остается неизменным, выводы пор- тов удерживают значения, которые были на них до перехода в режим холостого хода. На таймеры-счетчики, приемопередатчик и схему пре- рывания продолжают поступать тактовые сигналы. На выводах ALE и PSEN устанавливаются сигналы единичного уровня. Состояние выводов портов зависит от типа ОЗУ, с которым мик- ро-ЭВМ обменивалась информацией перед переходом в режим хо- лостого хода. При работе с внутренним ОЗУ на выводах портов при- сутствуют данные из соответствующих SFR (естественно, если порт в режиме вывода информации). При работе с внешним ОЗУ выводы порта 0 переходят в высокоимпедансное состояние, а на выводах порта 2 сохраняется адресная информация. На выводах портов 1 и 3 при- сутствуют данные из SFR портов. Прекратить холостой ход возможно двумя способами. Вызов любо- го из прерываний приведет к аппаратному стиранию PCON.O, прекра- щающему холостой ход. Прерывание будет обслужено, и следующей после RETI выполняемой командой будет та команда, которая идет за командой, приведшей к переходу микро-ЭВМ в режим холостого хода. Флаги GF0 и GF1 могут использоваться для индикации того, про- изошло ли прерывание во время нормальной работы или во время холостого хода. Например, команда, запускающая холостой ход, мо- жет также устанавливать один или оба флага. Когда холостой ход пре- кращен прерыванием, сервисная программа прерывания может про- верять состояние флагов. Другой способ прекращения холостого хода — с помощью ап- паратного сброса. Поскольку синхрогенератор продолжает рабо- 74
тать, аппаратный сброс должен поддерживаться в активном состо- янии только в течение двух машинных циклов (24 периодов коле- баний). Сигнал сброса стирает бит PCON.O. В этот момент CPU возоб- новляет выполнение программы с того места, где оно было останов- лено; таким образом, следующая команда — та, что идет за коман- дой, вызвавшей холостой ход. Как показано на рис. 14, перед началом отработки алгоритма внутреннего запуска могут иметь место 2 или 3 машинных цикла выполнения программы. Встроенное в микросхе- му устройство в это время препятствует доступу к внутреннему ОЗУ, но доступ к выводам порта не ограничен. Чтобы исключить возмож- ность появления неопределенных выходных сигналов на выводах порта, команда, следующая за вызывающей холостой ход, не должна быть командой, записывающей информацию в SFR порта или во внешнее ОЗУ данных. Напомним, что после аппаратного сброса содержимое SFR пере- определяется (см. табл. 11). Режим выключенного режима питания Команда, устанавливающая в 1 бит PCON.1 переводит микро- ЭВМ в режим выключенного напряжения питания. В этом режи- ме генератор микро-ЭВМ останавливается. С остановкой синхро- генератора прекращает функционирование не только CPU, но и таймеры-счетчики, приемопередатчик, схема прерываний. При на- личии основного или резервного источника питающего напряже- ния встроенное ОЗУ и регистры SFR сохраняют свое содержимое. Состояние портов не отличается от состояния при переходе в ре- жим холостого хода (см. выше). Однако в отличие от режима хо- лостого хода на выводах ALE и PSEN устанавливаются сигналы пулевого уровня. Единственный способ выйти из этого режима — аппаратный сброс. Он переопределяет содержимое всех SFR, как указано в табл. 11, но не меняет содержимого встроенного ОЗУ. В рассматриваемом режиме Vcc может снижаться вплоть до 2 В. Следует, однако, позаботиться, чтобы Vcc снижалось не раньше пе- рехода в режим выключенного напряжения питания и возвращалось на свой нормальный рабочий уровень до выхода из этого режима. Сброс, возвращающий микро-ЭВМ в обычный режим, не должен по- даваться раньше, чем Vcc достигнет своего нормального рабочего уровня, и должен поддерживаться в активном состоянии достаточно долго, чтобы генератор успел перестартовать и стабилизироваться (обычно не менее 10 мс). 75
ВЕРСИИ СО СТИРАЕМЫМ УФ-ПЗУ Существует несколько различных версий микро-ЭВМ с УФ-ПЗУ, различающихся алгоритмами программирования и программирую- щими напряжениями. Как правило, n-МОП микро-ЭВМ программи- руются при напряжении программирования на входе Vpp от 21 до 25 В. При этом для записи каждого байта используется один 50-мил- лисекундный импульс. Общее время программирования составляет примерно 4 минуты. Большинство к-МОП версий микро-ЭВМ использует более быст- рый алгоритм программирования «Quick-Pulse». Эти устройства про- граммируются при подаче на вход Vpp напряжения 12,75 В с использо- ванием последовательности из 25 100-микросекундных импульсов для записи одного байта программы. В результате общее время программи- рования составляет примерно 13 с. Подробно процедуры программирования и проверки каждого из ус- тройств приведены в их технических условиях. Здесь мы рассмотрим только стандартный режим программирования n-МОП микросхем 50- миллисекундными импульсами. При программировании микро-ЭВМ должна работать на понижен- ной частоте (4...6 МГц) из-за необходимости мультиплексирования на внутренней шине адресной и кодовой информации. Схема подключе- А0...А7 — 8 бит 25 26 ITTL____28 Рис. 16 Р1.0 -Р1.7 Р2.0 -Р2.3 Р2.4 Р2.5 Р2.6 Р2.7 ния микро-ЭВМ к программатору при- ведена на рис. 16. Адрес ячейки ПЗУ, в которую должен быть загружен байт прикладной программы, подается на выводы порта 1 и Р2.0-Р2.3 порта 2. Коды команд 31 +21В -J 1. -is в 9______1 TTL При этом загружаемый байт по- ступает в микро-ЭВМ через выводы порта 0. Выводы Р2.4...Р2.6 и PSEN должны быть заземлены, а на выво- ды Р2.7 и RESET необходимо подать уровень логической 1. На входе ЕА поддерживается уровень +5 В, но в момент загрузки байта он должен быть подключен к источнику напряжения с уровнем +21 В. В это вре- мя уровень на входе ALE в течение не менее чем 50 мс должен быть нулевым. После этого напряжение на входе ЕА должно возвратиться к уровню +5 В. Источник +21 В должен быть хорошо стабилизирован, т. к. снижение напряжения программирования под нагрузкой приво- дит к сбою программирования, а превышение напряжения более чем на 1 В может привести к необратимому повреждению микросхемы. Бит защиты, будучи установлен, делает невозможным доступ к внутреннему ПЗУ микро-ЭВМ для любых попыток прочесть его со- 76
держимое извне. Процедура записи бита защиты такая же, как и про- цедура занесения программы во внутреннее ПЗУ. Разница состоит в том, что на вывод Р2.6 должен быть подан уровень логической 1. Сиг- налы на выводах портов Р0,Р1 и Р2.0-Р2.3 при записи бита защиты могут быть произвольными. Первоначально разработчиками микро-ЭВМ семейства 8051 предполагалось, что установленный бит защиты можно сбросить только путем полного стирания информации из внутреннего ПЗУ под воздействием УФ-излучения. Однако техническому совершен- ству специалистов в области программного пиратства нет преде- ла — некоторым из них удавалось стереть узконаправленным УФ- пучком только бит защиты, не повредив при этом информацию в ПЗУ. Подобные сообщения побудили разработчиков усложнить систему защиты информации в микро-ЭВМ, сделав ее трехступен- чатой. Описание системы защиты информации в новых версиях микро-ЭВМ будет дано ниже. Если бит защиты не установлен, содержимое внутреннего ПЗУ может быть прочитано с целью проверки правильности загрузки при- кладной программы. Подобная верификация может проводиться как по ходу программирования ПЗУ, так и после программирования. Схе- ма подачи адресной информации не отличается от описанной для режима программирования ПЗУ, с той лишь разницей, что на вывод Р2.7 необходимо подавать нулевой уровень, используемый в каче- стве строб-сигнала чтения. Реакция ПЗУ микро-ЭВМ на свет Принято закрывать окно микро-ЭВМ непрозрачной наклейкой при использовании ее в реальных устройствах. Это необходимо не столько для того, чтобы защитить матрицу ПЗУ, сколько для того, чтобы защитить внутреннее ОЗУ и другие элементы внутренней структуры микро-ЭВМ. Попадание света на кремниевую подложку или на кристалл иногда приводит к сбоям в работе микро-ЭВМ вслед- ствие ионизации кремния. Стирание содержимого внутреннего ПЗУ микро-ЭВМ осуществ- ляется помещением ее под источник УФ-излучения с длиной волны менее 400 нм. Если кварцевая лампа имеет мощность 12 мВт на квад- ратный сантиметр, а расстояние между источником света и микро- ЭВМ 1...2 см, то выдержка 10...15 минут обеспечивает световую дозу, достаточную для надежного стирания информации из ПЗУ. Однако не стоит передерживать микро-ЭВМ под лучами УФтисточника — даже полутора-двухкратное превышение указанной дозы иногда при- водит к выходу микросхемы из строя. 77
Так как в спектре солнечного излучения и люминисцентных ламп содержится излучение с длиной волны менее 400 нм, то пребывание микро-ЭВМ под воздействием этих источников света дольше установ- ленного предела (около недели при солнечном освещении и около трех лет под люминисцентными лампами) может привести к искажению содержимого внутреннего ПЗУ. В этом случае также рекомендуется заклеивать входное окно микросхемы непрозрачным экраном. ВСТРОЕННЫЙ ТАКТОВЫЙ ГЕНЕРАТОР Встроенный тактовый генератор для n-МОП версий микро-ЭВМ представляет собой обычный инвертор, предназначенный для исполь- зования в качестве элемента с положительным реактивным сопротив- лением в цепи обратной связи. Роль реактивного сопротивления играет кристалл кварца или керамический резонатор. Упрощенная схема так- тового генератора n-МОП версии микро-ЭВМ приведена на рис. 17. Значения емкостей С1 и С2 существенной роли не играют. При использовании кварцевого резонатора рекомендуемые номиналы — 30 пФ. При использовании керамического резонатора значения емкостей рекомендуется увеличить до 47 пФ. Частотные характеристики емкостей и их температурный диапазон определяются требова- ниями к разрабатываемой системе. В ряде случаев разработчики используют рис 17 внешний тактовый генератор, сигналами кото- рого необходимо синхронизовать микро-ЭВМ. При этом внутренний генератор отключается. Для реализации этого режима вход XI микро-ЭВМ (вывод 19) необходимо заземлить, по- дав синхросигнал с внешнего генератора на вход Х2 (вывод 18). Для повышения помехоустойчивости вывод Х2 при этом рекомендуется соединить с общим проводом через резистор номиналом 10...20 кОм. Рис. 18 ТАКТОВЫЕ ГЕНЕРАТОРЫ К-МОП ВЕРСИЙ Схема встроенного генератора к-МОП мик- ро-ЭВМ показана на рис. 18. В целом он похож на генератор n-МОП микро-ЭВМ, но имеет ряд отличий от последнего. Первое отличие в том, что к-МОП микро- ЭВМ способны отключать свой генератор про- граммным путем (записью 1 в бит PD регистра PCON). Другое отличие состоит в том, что сиг- нал внешнего синхрогенератора должен быть 78
подан на вход XI ( вход Х2 не используется ), тогда как в версиях п- МОП — на Х2 при заземленном XI. Генератор можно использовать с теми же внешними компонен- тами, как в версиях n-МОП. Обычно, если элементом обратной свя- зи является кристалл кварца, то Cl = С2 = 30 пФ, а если используется керамический резонатор — С1=С2 =47 пФ. Однокристальные микро-ЭВМ семейства 8052 ВВЕДЕНИЕ Создав удачную микро-ЭВМ 8051, разработчики не остановились на достигнутом и начали поиски вариантов ее усовершенствования. При этом им было необходимо не просто расширить функциональ- ные возможности микро-ЭВМ и повысить ее производительность, но и выполнить ее программно-совместимой с семейством 8051. Последнее означает, что все программы, написанные для 8051, и все варианты ее аппаратного использования должны без каких-либо до- работок выполняться на новой микро-ЭВМ. Отмеченные требования предопределили пути совершенствова- ния рассматриваемого семейства. Этим требованиям удовлетворяет увеличение памяти программ на кристалле вплоть до 64 кбайт, вве- дение дополнительных регистров специальных функций и новых ре- жимов работы, повышение защищенности программ от нелегаль- ного копирования, использование линий порта 1 в альтернативных режимах (подобно линиям порта 3, как было описано ранее). Оказа- лось возможным расширить систему прерываний и сделать ее более гибкой. Возможно также создать специальные трехвольтовые мало- потребляющие версии микро-ЭВМ, функционирующйе при напря- жении питания от 3 до 3,6 В, что делает их незаменимыми в аппара- туре с автономным питанием (литиевая батарея или три обычных 1-, 2-вольтовых аккумулятора). Желательно также расширить объем внутренней памяти данных, хотя последнее отнюдь не так просто реализовать, как вышеупомянутые доработки. В результате этих доработок появились микро-ЭВМ семейства 8052. Правда, это семейство вряд ли можно рассматривать как само- стоятельное — для этих микро-ЭВМ справедливо абсолютно все, что ранее было сказано относительно 8051. Но в то же время эти микро- ЭВМ образуют самостоятельное «подсемейство» в семействе 8051, так как между собой они различаются лишь наличием или отсутствием внутренней памяти программ и объемом этой памяти, а их новые (в сравнении с 8051 ) функциональные возможности достаточно вели- 79
ки. Рассмотрению отличий микро-ЭВМ семейства 8052 от 8051 по- священ настоящий раздел. СОСТАВ СЕМЕЙСТВА В состав рассматриваемого семейства входят микро-ЭВМ 80С52, 80С54, 80С58 с масочно программируемым ПЗУ объемом 8, 16 и 32 кбайт соответственно, их УФ-стираемые версии 87С52, 87С54 и 87С58, а также микро-ЭВМ 80С32, не имеющая внутреннего ПЗУ. Между собой они различаются исполнением корпуса, диапазоном до- пустимых температур, предельно допустимой тактовой частотой и рядом других параметров, что отражается в буквенно-цифровой ин- формации после обозначения типа микро-ЭВМ. Эту информацию можно получить в фирменных руководствах производителей мик- ро-ЭВМ рассматриваемого семейства. Основными отличиями микро-ЭВМ семейства 8052 являются: • встроенное ОЗУ объемом 256 байт; • дополнительные специальные функциональные регистры; • таймер 2, имеющий следующие режимы работы; • режим защелки; • таймер/счетчик, допускающий счет как на увеличение, так и на уменьшение; • генератор скорости передачи в бодах. • программируемый последовательный интерфейс с: • детектированием ошибок передачи; • автоматическим распознаванием адреса; • 6 источников прерываний; • расширенный режим снижения потребляемой мощности; • флаг отключения питания; • режим ONCE. Микро-ЭВМ 8052 используют стандартный набор команд 8051, ее выводы взаимно-однозначно соответствуют выводам микро-ЭВМ семейства 8051. Отличие заключается в том, что выводы Р1.0 и Р1.1 могут выполнять альтернативные функции помимо ввода/вывода информации. Вывод Р1.0 играет роль внешнего входа для счетчика таймера 2, а вывод Р1.1 управляет перезагрузкой/защелкиванием информации в регистры таймера 2. ВНУТРЕННЯЯ ПАМЯТЬ ДАННЫХ Микро-ЭВМ семейства 8052 имеют 256 байт внутреннего ОЗУ. Младшие 128 байт аналогичны внутреннему ОЗУ семейства 8051. Старшие 128 байт занимают адресное пространство, параллельное пространству специальных функциональных регистров. Это озна- 80
чает, что они имеют те же адреса, что и регистры, но физически они являются независимыми от SFR и расположены в другой части крис- талла микросхемы'. При выполнении команды обращения к внутреннему ОЗУ с ад- ресами выше 7FH CPU по режиму адресации, использованному в команде, узнает, к чему именно это обращение: к старшим 128 бай- там ОЗУ или к пространству SFR. Команды с прямой адресацией обес- печивают доступ к пространству SFR. Например, команда MOV ОАОН, #data; (прямая адресация) обращается к SFR, расположенному по адресу ОАОН (т. е. к Р2). Команда с косвенной адресацией обращается к старшим 128 байтам ОЗУ, например MOV @R0, #data; (косвенная ад- ресация), где R0 содержит ОАОН, обращается к байту с адресом ОАОН в пространстве старших 128 байт ОЗУ. Отметим, что работа стека организована с применением косвенной адресации (адрес использу- емой под стек ячейки памяти размещен в регистре SP), так что стар- шие 128 байт данных ОЗУ прекрасно подходят для размещения в них стека микро-ЭВМ. ПРОСТРАНСТВО СПЕЦИАЛЬНЫХ ФУНКЦИОНАЛЬНЫХ РЕГИСТРОВ Карта встроенной матрицы памяти, называемая пространством специальных функциональных регистров (SFR), дана в табл. 12. Отметим, что несмотря на ее более полное использование в сравнении с семейством 8051 по-прежнему не все адреса заняты реально существующими регистрами. Ячейки, соответствующие незанятым адресам, физически отсутствуют на кристалле микро- схемы. Чтение при обращении к этим адресам возвращает случай- ные данные, запись в такие ячейки также даст неопределенный результат. Пользовательские программы не должны записывать единицы в эти незанятые позиции, т. к. они будут использованы в новых разра- ботках. Разработчики микро-ЭВМ гарантируют, что нулевые значе- ния этих битов всегда будут означать отключение вновь введенных функций. Последнее означает, что программы, рассчитанные на ис- пользование в микро-ЭВМ, не имеющих этих новых функций, бу- дут корректно работать и в новых изделиях, если они не активируют упомянутые биты. В противном случае корректная работа старых программ в новых микро-ЭВМ не гарантируется. Как видно из табл. 12, она дополнилась рядом дополнительных регистров — регистрами второго таймера T2CON, T2MOD (в них со- держатся биты управления и статуса таймера), RCAP2H и RCAP2L (регистры защелки/перезагрузки таймера), регистрами приемопере- датчика SADDR и SADEN и дополнительным регистром системы 81
Таблица 12 Специальные функциональные регистры 8052 0F8H OFOH В 0Е8Н ОЕОН АСС 0D8H 0D0H PSW 0С8Н T2CON T2MOD RCAP2L RCAP2H TL2 ТН2 ОСОН 0В8Н IP SADEN ОВОН РЗ IPH 0А8Н IE SADDR ОАОН Р2 098Н SCON SBUF 090Н Р1 088Н TCON TMOD TL0 TL1 ТНО ТН1 080Н РО SP DPL DPH PCON прерываний IPH. Ниже мы подробно опишем отличия в функцио- нировании микро-ЭВМ семейства 8052 от 8051 и то, как при этом используются упомянутые регистры. ТАЙМЕР 2 Таймер 2 — это 16-битный таймер/счетчик, способный рабо- тать и как таймер, и как счетчик событий. Выбор производится би- том С/Т2 в SFR T2CON (табл. 13). Таймер может работать в трех различных режимах — режиме защелки, режиме автоперезагрузки (при этом направление счета может быть как вверх, так и вниз, т. е. на увеличение или уменьшение содержимого TL2,TH2) и в режиме генератора скорости передачи в бодах. Режимы выбираются бита- ми в T2CON, как показано в табл. 14. Таймер 2 состоит из двух 8-битных регистров, ТН2 и TL2. В ре- жиме таймера его 16-разрядный регистр TL2, ТН2 инкрементирует- ся в каждом машинном цикле. Так как каждый машинный цикл со- стоит из 12 периодов колебаний, скорость счета равна 1/12 частоты генератора. По сути дела в этом режиме происходит подсчет тайме- ром выполненных машинных циклов. В режиме счетчика регистр инкрементируется в ответ на перепад из 1 в 0 на соответствующем контакте внешнего ввода Р1.0. В этом 82
Таблица 13 Регистр управления таймера-счетчика 2 T2CON Бит Обозначение Функция T2CON.7 TF2 Флаг переполнения таймера/счетчика 2. Сброс его осуществляется программным путем. Флаг не устанавливается, если либо RCLK, либо TCLK (см.ниже) установлены в единицы T2CON.6 EXF2 Внешний флаг таймера-счетчика 2. Устанавливается при защелкивании информации в таймерных регистрах или при перезагрузке, происходящих под воздействием перехода из 1 в 0 на выводе Р1.1 и при EXEN2=1. Сбрасывается только программным путем. При разрешенном прерывании от таймера 2 вызывает подпрограмму обработки прерывания (если бит T2MOD.0=0) T2CON.5 RCLK Выбор таймера 2 для задания скорости работы приемника в режимах "! и 3. При RCLK=1 используется таймер 2, иначе — таймер 1 T2CON.4 TCLK Выбор таймера 2 для задания скорости работы передатчика в режимах 1 и 3. При ТС1_К=1 используется таймер 2, иначе — таймер 1 T2CON.3 EXEN2 Разрешение работы от внешнего сигнала. При EXEN2=1 перепад из 1 в 0 на входе Р1.1 вызывает защелкивание информации или перезагрузку таймера-счетчика 2. При EXEN2=0 таймер-счетчик игнорирует сигналы на входе Р1.1 T2CON.2 TR2 Запуск/остановка таймера TR2=1 запускает таймер/счетчик 2 T2CON.1 С/Т2 Бит выбора режима работы таймера-счетчика 2. При установке бита в 1 таймер-счетчик функционирует как счетчик перепадов из 1 в 0 на входе Р1.0. При установке бита в 0 работает таймер T2CON.O CP/RL2 Выбор защелки/перезагрузки. Если бит установлен в 1,то при EXEN2=1 перепад из 1 в 0 на Р1.1 вызовет защелкивание содержимого TL2, ТН2 в RCAP2L, RCAP2H. При нулевом бите таймер-счетчик работает в режиме автоперезагрузки при переполнении счетчика или при обнаружении перепада из 1 в 0 на Р 1.1 (последнее при EXEN2=1) Примечание. При сбросе все биты регистра T2CON устанавливаются в О Таблица 14 Режимы работы таймера-счетчика 2 RCLK и TCLK CP/RL2 TR2 Режим 0 и 0 0 1 16-бит. таймер-счетчик с перезагрузкой 0 и 0 1 1 16-бит. таймер-счетчик с защелкиванием информации Хотя бы один установлен в 1 любое 1 Генератор приемопередатчика Любое любое 0 Выключен 83
режиме внешний ввод анализируется в момент S5P2 каждого машин- ного цикла. Когда анализ показывает наличие единичного уровня в одном цикле и нулевого в следующем, содержимое счетчика инкре- ментируется. Новое значение счетчика появляется в регистре в мо- мент S3P1 цикла, следующего за тем, в котором переход был обнару- жен. Так как обнаружение этого перехода занимает 2 машинных цикла (24 периода колебаний), то максимальная скорость счета составляет 1/24 частоты генератора. Для гарантии того, что заданный уровень идентифицирован микро-ЭВМ перед тем, как он изменится, он дол- жен удерживаться по крайней мере в течение 1-го полного машин- ного цикла. Режим защелки В режиме защелки есть два режима, выбираемых битом EXEN2 в T2CON. Если EXEN2 = 0, то таймер 2 — это 16-битный таймер или счетчик, при переполнении которого устанавливается бит TF2 в T2CON. Этот бит затем может использоваться для вызова прерыва- ния. Если EXEN2 = 1, то таймер 2 продолжает делать то же самое, но с тем дополнением, что перепад из 1 в 0 на внешнем вводе Р 1.1 вызы- вает защелкивание текущих значений ТН2 и TL2 в RCAP2H и RCAP2L соответственно. Кроме того, этот перепад вызывает установку в 1 бита EXF2 в T2CON. Бит EXF2, как и TF2, может вызвать прерывание. Ре- жим защелки иллюстрирует рис. 19, а. Режим автоперезагрузки Если таймер 2 работает в режиме 16-битного таймера-счетчика с автоперезагрузкой, то он может быть настроен на счет вверх или вниз (увеличение или уменьшение содержимого регистров TL2, ТН2). Этот режим вызывается установкой в 1 бита DCEN (Down Counter Enable), расположенного в T2MOD (см. табл. 15). При сбросе бит DCEN уста- навливается в 0, так что таймер 2 по умолчанию считает вверх. Когда DCEN установлен, таймер 2 может считать вверх или вниз в зависи- мости от значения на выводе Р1.1. На рис. 19, б показан таймер 2, считающий на увеличение при DCEN = 0. В этом режиме имеются два подрежима, выбираемых би- том EXEN2 в T2CON. Если EXEN2 = О, то таймер 2 считает вверх до OFFFFH и затем устанавливает в 1 бит переполнения TF2. Перепол- нение вызывает также перезагрузку регистров таймера 16-битным значением в RCAP2H и RCAP2L. Значения RCAP2H и RCAP2L пред- варительно должны быть установлены программно. Если EXEN2 =1, 16-битная перезагрузка может срабатывать как от переполнения, так и от перепада из 1 в 0 на внешнем входе Р1.1. Этот перепад также 84
а) MUX Рис. 19 Регистр режима таймера 2 T2MOD Таблица 15 Адрес Имя Функция T2MOD.7 Не используется T2MOD.6 Не используется T2MOD.5 Не используется T2MOD.4 Не используется T2MOD.3 Не используется T2MOD.2 Не используется T2M0D.1 Т2ОЕ При установке бита на выводе Р1.1 формируется последовательность прямоугольных импульсов со скважностью 50% T2MOD.O DCEN При установке бита таймер 2 конфигурируется на счет как вверх, так вниз, в зависимости от сигнала на выводе Р1.1 Биты регистра T2M0D не адресуются непосредственно командами работы с битами По сбросу T2MOD.O и T2MOD.1 устанавливаются в 0, значение остальных бит не определено 85
устанавливает в 1 бит EXF2. Оба бита — TF2 и EXF2 могут вызвать прерывание, если оно разрешено. Установка бита DCEN в 1 переводит таймер 2 в режим счета вверх и вниз, как показано на рис. 19, в. В этом режиме вывод Р 1.1 управля- ет направлением счета. Единичный уровень на Р 1.1 заставляет тай- мер 2 считать вверх. Таймер переполняется по достижении значения 0FFFFH и устанавливает в 1 бит TF2. Это переполнение также вызо- вет перезагрузку 16-битного значения из RCAP2H и RCAP2L в реги- стры таймера ТН2 и TL2 соответственно. Нулевой уровень на Р 1.1 заставляет таймер 2 считать вниз. Те- перь таймер «антипереполняется», когда ТН2 и TL2 равны значе- ниям, хранящимся в RCAP2H и RCAP2L. Антипереполнение ус- танавливает бит TF2 в 1 и вызывает перезагрузку 0FFFFH в регистры таймера. Бит EXF2 переключается всякий раз при переполнении или ан- типереполнении таймера. Этот бит можно при необходимости ис- пользовать как 17-й бит таймера-счетчика. В этом режиме EXF2 не является флагом прерывания, и его установка в 1 не вызывает соот- ветствующей подпрограммы. Генератор скорости передачи в бодах Таймер 2 превращается в генератор скорости передачи в бодах ус- тановкой в 1 битов TCLK и/или RCLK в T2CON (табл. 14). Отметим, что скорости в бодах для передачи и приема могут отличаться. Это достигается, например, при использовании таймера 2 для приема, а таймера 1 — для передачи (или наоборот). Установка RCLK и/или TCLK переводит таймер 2 в режим генератора скорости передачи в бодах, как показано на рис. 20. Рис. 20 86
Режим генератора скорости передачи в бодах имеет сходство с ре- жимом автоперезагрузки в том, что переполнение содержимого ре- гистров таймера-счетчика TL2 и ТН2 вызывает перезагрузку регист- ров TL2 и ТН2 16-битным значением из регистров RCAP2H и RCAP2L, предварительно установленным программно. Скорости передачи в бодах в режимах 1 и 3 определяются следу- ющим образом: Скорость в реж.1 и 3 = = (скорость переполнения таймера 2)/16 При этом таймер может работать как в режиме таймера, так и в режиме счетчика. В большинстве случаев выбирают режим таймера (С/ Т2 =0). Обратим внимание читателей на одну особенность рабо- ты таймера-счетчика 2 при использовании его в качестве генератора скорости передачи в бодах. Обычно, как таймер, он инкрементирует свое содержимое в каждом машинном цикле с частотой, равной 1/12 частоты генератора). Однако, как генератор скорости передачи в бо- дах, он инкрементирует свое значение в 6 раз быстрее с частотой, рав- ной 1/2 частоты генератора). Формула скорости передачи в бодах в зависимости от значений RCAP2L, RCAP2H выглядит следующим образом: _ „ Частота генератора Скорость в реж. 1 и 3 = —=--------------------=г, 4 • [65536- (RCAP2H, RCAP2L)] где (RCAP2H, RCAP2L) — содержимое RCAP2H и RCAP2L, взятое как 16-битное целое число без знака. Отметим, что переполнение ТН2 не устанавливает TF2 и не вызывает прерывания. Кроме того, если EXEN2=1, то перепад из1в0вР1.1 установит в 1 флаг EXF2, но не вызовет перезагрузки из RCAP2H, RCAP2L в ТН2, TL2. Таким обра- зом, когда таймер 2 используется как генератор скорости передачи в бодах, вход Р1.1 может использоваться при необходимости как вход дополнительного внешнего прерывания. Следует отметить, что при работе таймера-счетчика 2 в «таймер- ном» режиме генератора скорости передачи в бодах нельзя пытаться считывать или записывать в ТН2 или TL2. В этом случае таймер ин- крементируется 6 раз в течение каждого машинного цикла, и резуль- таты чтения или записи будут неопределенными. Регистры RCAP2 можно читать, но нельзя в них записывать, т. к. запись может отме- нить ближайшую по времени перезагрузку и вызвать ошибки при- ема или передачи. Таймер должен быть отключен (TR2=0) перед об- 87
ращением к регистрам таймера ТН2, TL2 или к регистрам RCAP2H, RCAP2L. Вывод программируемого сигнала меандра Вывод Р1.0 можно запрограммировать на использование в каче- стве генератора меандра (генератора прямоугольных импульсов с 50%-й скважностью). У микро-ЭВМ семейства 8052 этот вывод, по- мимо основной своей функции — функции ввода/вывода — может выполнять еще две дополнительные. Как упоминалось выше, он иг- рает роль внешнего счетного входа для таймера-счетчика 2. Кроме того, он может быть источником прямоугольных импульсов с 50%-й скважностью и частотой в диапазоне от 61 Гц до 4 МГц при тактовой частоте генератора микро-ЭВМ 16 МГц. Для использования вывода Р1.0 в этом режиме бит С/Т2 (T2CON.1) должен быть сброшен в 0, а бит Т2ОЕ (T2MOD.1) установлен в едини- цу. Бит TR2 (T2CON.2) запускает и останавливает таймер. Выходная частота генератора меандра зависит от частоты генера- тора микро-ЭВМ и значения, загруженного в регистры защелок (RCAP2H, TCAP2L) таймера 2, следующим образом: тт _ Л Частота генератора микро-ЭВМ Частота меандра на вых. Р1.0 = —р------------------, 4-[_65536-(RCAP2H,RCAP2L)J ’ где (RCAP2H,RCAP2L) — двухбайтовое содержимое этой регистро- вой пары, взятое как целое без знака. В описываемом режиме переполнение таймера-счетчика 2 не вы- зовет прерывания. Это похоже на режим использования таймера 2 как генератора скорости передачи в бодах. Можно использовать тай- мер 2 как генератор скорости передачи в бодах и как генератор меан- дра одновременно. Отметим, однако, что частоты передачи в бодах и генератора меандра нельзя определять независимо друг от друга, т. к. обе они используют RCAP2H и RCAP2L. Использование таймера 2 в режиме генератора меандра также иллюстрируется рис. 20. СИСТЕМА ПРЕРЫВАНИЙ Систему прерываний микро-ЭВМ семейства 8052 образуют опи- санные ранее пять прерываний микро-ЭВМ семейства 8051 и допол- нительное прерывание от таймера 2 с вектором 2ВН. Кроме того, се- мейство 8052 дополнено еще одним регистром прерываний IPH, позволяющим увеличить количество возможных приоритетов для каждого из шести прерываний до четырех. 88
Прерывание таймера 2 формируется логикой И битов TF2 и EXF2 в регистре T2CON. Оба этих флага должны сбрасываться программ- ным путем, аппаратного сброса они не имеют. Подпрограмма пре- рывания должна самостоятельно определить, какой из этих флагов установлен, и сбросить его, выполняя после этого действия, предус- мотренные в качестве реакции микро-ЭВМ на вызов прерывания. Структура прерываний 8052 приведена на рис. 21. 1бит1Т0 Детектор перепада 2 1бит1Т1 Детектор перепада 4 БитТ! Бит RI БитТГ2 Бит EXF2 03 Н* ОВН 13Н 1ВН 23 Н 2ВНи Рис. 21 Дополнительный регистр приоритетов прерываний IPH содер- жит 6 бит в соответствии с шестью источниками прерываний мик- ро-ЭВМ (см. табл. 16). Каждый из этих битов является старшим би- том приоритета соответствующего прерывания. Младший бит приоритета этого прерывания находится в регистре IP (см. в описа- нии регистра в предыдущем разделе). Таким образом, уровень каж- Таблица 16 Дополнительный регистр приоритетов прерываний IPH Адрес Символ Функция IPH.7 Зарезервирован IPH.6 Зарезервирован IPH.5 РТ2Н Старший бит приоритета таймера 2 IPH.4 PSH Старший бит приоритета приемопередатчика IPH.3 РТ1Н Старший бит приоритета таймера 1 IPH.2 РХ1Н Старший бит приоритета внешнего прерывания 1 IPH.1 РТОН Старший бит приоритета таймера 0 IPH.0 РХОН Старший бит приоритета внешнего прерывания 0 По сбросу младшие 6 бит устанавливаются в 0, состояние старших — неопределено. 89
дого из прерываний определяется состоянием двух битов. Очевидно, что при помощи двух бит можно закодировать четыре различных числа — 00В, OlB, 10В и ИВ, что дает нам соответственно четыре уровня приоритета для каждого из источников 0, 1, 2 и 3 , причем нулевой уровень соответствует низшему приоритету, а третий — высшему. УНИВЕРСАЛЬНЫЙ АСИНХРОННЫЙ ПРИЕМОПЕРЕДАТЧИК Приемопередатчик микро-ЭВМ семейства 8052 в целом иденти- чен приемопередатчику 8051 — те же четыре режима работы, разли- чающиеся количеством передаваемых бит информации, скоростью передачи, условиями установки флагов прерывания RI или TI после приема или передачи байта информации. Другими словами, все, что было ранее сказано про приемопередатчик микро-ЭВМ 8051, спра- ведливо и для 8052. Но последний имеет и ряд отличий от своих пред- шественников. Первое отличие приемопередатчика 8052 от 8051 мы уже описали — возможность работы приемопередатчика в режимах 1 и 3 не только от таймера 1, но и от таймера 2. Благодаря этой возможности разработчик при необходимости может использовать различающиеся между собой скорости приема и передачи без перенастройки таймеров. Следующим отличием приемопередатчика 8052 является нали- чие в нем устройства детектирования ошибок формата (Framing Error Detection). Это устройство позволяет последовательному порту про- верять правильность стоп-битов в режимах 1, 2 или 3. Потеря стоп- бита может возникнуть, например, из-за шумов на линиях передачи или из-за одновременной передачи информации двумя процессора- ми мультимикропроцессорной системы. Если бит остановки потерян, устанавливается бит ошибки фор- мата (FE). Этот бит может быть проверен программно после каждо- го приема для обнаружеция ошибок связи. Будучи однажды установ- лен, бит ошибки формата может быть сброшен только программным путем. Если после установки бита ошибки формата он не был сбро- шен программно, а затем в результате следующего цикла обмена информацией получен байт данных с правильным стоп-битом, сброса бита ошибки формата не произойдет. FE бит расположен в SCON и делит один адрес с SM0. Бит управ- ления SMOD0 в регистре PCON (PCON.6) определяет, к какому биту обращается микропроцессор — к SM0 или к FE. Если SMOD0 = 0, то обращение к SM0. Если SMOD0 =1 — к FE. И наконец, третьим отличием приемопередатчика 8052 от 8051 яв- ляется автоматическое распознавание адреса. Автоматическое распоз- 90
навание адреса уменьшает время, требуемое микро-ЭВМ на обслужи- вание последовательного порта. Поскольку в этом случае CPU не пре- рывается при получении адресного байта, отличного от своего соб- ственного адреса, издержки CPU на сравнение адресов исключаются. Эта особенность микро-ЭВМ используется как правило в одном из 9- битовых режимов. При этом флаг прерывания от приемника (RI) ус- танавливается только тогда, когда полученный адресный байт совпа- дает с индивидуальным или с широковещательным адресом. Это отличие приемопередатчика 8052 можно использовать в мультимикропроцессорных системах следующим образом. Когда ве- дущий процессор хочет передать блок данных одному или несколь- ким подчиненным процессорам системы, он сначала посылает адрес- ный байт, который идентифицирует нужный подчиненный компонент. Напомним, что в адресном байте 9-й бит установлен в 1, тогда как в байте данных 9-й бит установлен в 0. Во всех подчиненных процессорах их биты SM2 должны быть установлены в 1, т. е. они мо- гут быть прерваны при приеме адресного байта. Способность автома- тического распознавания адреса позволяет обеспечить прерывание только того подчиненного компонента, к которому адресуется веду- щий процессор. В этом режиме сравнение адресов происходит аппа- ратно, а не программно. (В последовательном порте 80С51 адресный байт прерывает все подчиненные процессоры для сравнения адресов). Подчиненный процессор-получатель затем стирает свой бит SM2 и готовится к приему байтов данных. На остальные процессоры эти байты данных никак не действуют, и они продолжают выполнять свои программы до получения ими адресных байтов, соответствующих их заданным адресам. Так же, как в 9-битовых режимах 2 и 3, автоматическое распозна- вание адреса функционирует и в 8-битовом режиме 1. Однако в ре- жиме 1 место 9-го бита данных занимает в RB8 стоп-бит. Если SM2 установлен, то флаг RI устанавливается только в случае, когда полу- ченный байт соответсвует заданному или широковещательному ад- ресам и сопровождается правильным стоп-битом. Установка SM2 никак не проявляется в режиме 0. Ведущий процессор может избирательно связываться и с груп- пами подчиненных процессоров. Адресация ко всем подчиненным сразу или к какой-либо группе из них возможна при использовании адресов, хранящихся в двух специальных функциональных регист- рах SADDR и SADEN. Индивидуальные адреса подчиненных процессоров хранятся обычно в SADDR. SADEN — это масочный байт, определяющий не- значащие биты для формирования заданного адреса. Эти незнача- 91
щие биты придают гибкость определяемому пользователем прото- колу для формирования адреса выбранного подчиненного процес- сора. Далее дан пример того, как можно использовать адреса, храня- щиеся в SADDR и в SADEN для того, чтобы селективно адресовать разные подчиненные процессоры. Предположим, что в нашей системе имеется один ведущий про- цессор и два подчиненных, регистры SADDR и SADEN которых со- держат следующую информацию: Подчиненный процессор 1: SADDR =1111 0001 В SADEN = 1111 1010 В Заданный адрес = 1111 ОХОХ В Подчиненный процессор 2: SADDR = 1111 0011 В SADEN =1111 1001 В Заданный адрес =1111 0ХХ1 В Биты SADEN выбраны так, чтобы иметь возможность адресо- ваться к каждому подчиненному процессору отдельно. Заметим, что бит 0 — незначащий для заданного адреса подчиненного процессо- ра 1, но бит 0 равен 1 для заданного адреса подчиненного процессо- ра 2. Таким образом, для избирательной связи именно с первым под- чиненным процессором ведущий процессор должен послать адрес, в котором бит 0 равен 0 (например, 1111 0000). Аналогично, бит 1 равен 0 для заданного адреса подчиненного процессора 1, но он же — незначащий для заданного адреса подчиненного процессора 2. Так что для связи именно с подчиненным процессором 2 должен ис- пользоваться бит 1, равный 1 (например, 1111 0111). Наконец, чтобы ведущий процессор связался с обоими подчи- ненными одновременно, в передаваемом адресе бит 0 должен быть равен 1, и бит 1 должен быть равен 0. Отметим, однако, что бит 2 — незначащий для обоих процессоров одновременно. Это позволяет двумя разными адресами выбирать оба подчиненных процессора (11110001 или 1111 0101). Если в систему добавился еще и третий подчиненный процессор, нужно потребовать, чтобы бит 2 его задан- ного адреса был равен 0. Тогда адрес 1111 0101 может использоваться для связи с процессорами 1 и 2, а адрес 11110001 —- со всеми тремя процессорами одновременно. Для индивидуальной адресации тре- 92
тьего процессора при этом придется использовать третий и последу- ющие биты адреса. Ведущий процессор может также связываться со всеми подчи- ненными одновременно с помощью широковещательного адреса. Он формируется логикой ИЛИ регистров SADDR и SADEN, при этом нули в SADEN по-прежнему определяют незначащие биты в адрес- ном байте. Это также дает дополнительные возможности в выборе широковещательного адреса, но в большинстве применений широ- ковещательным адресом выбирают 0FFH. SADDR и SADEN расположены по адресам 0А9Н и 0В9Н соответ- ственно. При сбросе регистры SADDR и SADEN устанавливаются в ООН,что определяет заданный и широковещательный адреса как ХХХХ ХХХХ (все биты неопределенные). Это гарантирует совместимость сверху вниз последовательного порта 8052 со своим предшественни- ком 8051, не имеющим автоматического распознавания адреса. РЕЖИМ ПОНИЖЕННОГО ЭНЕРГОПОТРЕБЛЕНИЯ Микро-ЭВМ 8052 может выходить из режима пониженного энер- гопотребления как при аппаратном сбросе, так и при внешнем пре- рывании. Сброс переопределяет все регистры специальных функций, но не меняет содержимого внутреннего ОЗУ. Внешнее прерывание позволяет как регистрам (кроме бита PD в PCON), так и встроенно- му ОЗУ сохранять свои значения. Чтобы обеспечить правильный выход из этого режима, сброс или внешнее прерывание не должны подаваться прежде, чем Vcc восстановит свой нормальный рабочий уровень, и должны удерживаться достаточно долго, чтобы генератор перестартовал и стабилизировался (обычно менее 10 мс). При использовании для вывода из режима пониженного энерго- потребления внешних прерываний INTO или INT1 схема прерыва- ний должна быть конфигурирована на срабатывание по уровню со- ответствующего сигнала. Удержание вывода при нулевом потенциале перестартует генератор, а перевод вывода в единичный уровень за- вершит выход. После выполнения команды RETI в подпрограмме обслуживания прерывания следующей будет выполняться та коман- да, которая идет после той, что перевела микро-ЭВМ в режим пони- женного энергопотребления. ФЛАГ ОТКЛЮЧЕНИЯ ПИТАНИЯ Флаг отключения питания (POF), расположенный в PCON.4, уста- навливается аппаратно, когда Vss повышается от 0 до примерно 5 В. POF может также быть установлен или стерт программно. Это позволяет пользователю различать сбросы «холодного» и «теплого» стартов. 93
Сброс «холодного» старта совпадает с подачей на микро-ЭВМ напряжения питания. Сброс «теплого» старта происходит без отклю- чения питания, например, при выходе из режима пониженного энер- гопотребления. Сразу же после сброса пользовательская программа может про- верить состояние бита POF. POF = 1 означает холодный старт. Про- грамма затем стирает POF и начинает свои задачи. POF = 0 сразу пос- ле сброса означает теплый старт. Для того, чтобы флаг POF удерживался в сброшенном состоянии, необходимо, чтобы напряжение питания не опускалось ниже 3 В. СПЕЦИАЛЬНЫЙ РЕЖИМ ЭМУЛЯЦИИ ONCE Данный режим позволяет выполнять тестирование и отладку си- стем, использующих микро-ЭВМ семейства 8052 без удаления пос- ледних из платы. Для активизации режима эмуляции необходимо выполнить следующую последовательность действий: • при высоких логических уровнях на RST и PSEN подать уровень логического 0 на вывод ALE; • удержать ALE в логического 0 при деактивации сигнала сброса на RST (подаче на RST уровня логического 0), после чего пере- стать удерживать ALE в состоянии логического 0. Во время нахождения микросхемы в режиме эмуляции выводы порта РО переходят в высокоимпедансное состояние, а выводы пор- тов Р1-РЗ и выводы ALE, PSEN находятся в состоянии 1, которое обеспечивается с помощью внутренних высокоомных резисторов. Тракт генератора остается активным. В то время, когда микросхема находится в режиме эмуляции, для управления системой можно ис- пользовать внешний эмулятор или тестовый процессор. Нормаль- ная работа схемы возобновляется после подачи нормального сиг- нала сброса на вход RST. ЗАЩИТА ВНУТРЕННЕЙ ПАМЯТИ ПРОГРАММ Микросхемы семейства 8052 содержат два механизма защиты внутренней памяти программ от несанкционированного доступа из- вне: проверку зашифрованного содержимого памяти программ и биты защиты памяти программ. Шифровальная таблица Микро-ЭВМ семейства 8052 имеют 64-байтную шифровальную таблицу, располагающуюся во внутреннем ПЗУ и программируемую пользователем или предприятием-изготовителем. Эта таблица (или область памяти) может использоваться для шифрования байтов внут- 94
ренней памяти программ, выбираемых внешними средствами из ПЗУ во время проверки,его содержимого. Всякий раз, когда в режиме проверки адресуется байт внутренне- го ПЗУ, 6 бит адреса используется для адресации шифровальной таб- лицы. Появляющийся на внешних выводах микросхемы байт явля- ется результатом выполнении операции «ИСКЛЮЧАЮЩЕЕ ИЛИ-HE» над байтом, выбранным из ПЗУ программ, и байтом, выб- ранным из шифровальной таблицы. Зная содержимое шифроваль- ной таблицы, можно выполнить дешифрацию и получить истинное содержимое внутренней памяти программ. Незапрограммированные байты шифровальной таблицы содер- жат 0FFH. Таким образом, если шифровальную таблицу оставить незапрограммированной, то в режиме проверки внутреннего ПЗУ будет считываться истинное значение его содержимого. Заметим, что незапрограммированные байты ПЗУ внутренней памяти программ также содержат 0FFH. Необходимо иметь ввиду следующее обстоятельство. Если байт программной памяти содержит 0FFH, то результатом операции «ИС- КЛЮЧАЮЩЕЕ ИЛИ-HE» над ним и байтом шифровальной табли- цы даст в результате значение байта шифровальной таблицы (ана- логично тому, что такая операция над байтом ПЗУ и байтом таблицы, содержащим 0FFH, даст значение байта из ПЗУ). Следовательно, если пользователь оставит незапрограммированным большой фрагмент памяти программ (хотя бы в 2...3 раза больший объема шифроваль- ной таблицы), то определить ее содержимое становится несложно — повторяющийся несколько раз фрагмент из 64 байт и есть искомое содержимое. Поэтому незанятые пользовательской программой бай- ты ПЗУ должны заполняться какой-либо информацией. Некоторые из типов микро-ЭВМ семейства 8051, выпускаемые фирмами Intel, AMD (8751ВН, 8752ВН), а также отечественные мик- ро-ЭВМ КМ1830ВЕ751 и КМ1830ВЕ753 также содержат шифроваль- ную таблицу, но объем ее ограничен 32 байтами. Микро-ЭВМ 87С51 последних модификаций содержит шифровальную таблицу объемом 64 байта. Более подробно об этом смотрите в описании на конкрет- ную микро-ЭВМ. Биты защиты памяти программ Кодирование шифровальной таблицы, хотя и создает проблёмы Для нелегального копирования ПЗУ защищенной микро-ЭВМ, тем не менее не в состоянии сделать содержимое ПЗУ абсолютно недо- ступным. Для разработчиков микро-ЭВМ оказалась неприятным сюрпризом возможность считать информацию из защищенного 95
внутреннего ПЗУ путем выполнения программы из внешнего ПЗУ, содержащей команды чтения байта ПЗУ (MOVC) с последующим вы- водом содержимого через, например, порт 1. С целью предотвраще- ния подобных способов нелегального копирования система защиты памяти программ дополнилась еще одной ступенью. Она состоит в том, что кроме шифровальной таблицы микро-ЭВМ семейства 8052 содержат на кристалле один, два или три (в зависимости от модифи- кации) бита защиты внутреннего ПЗУ, каждый из которых может быть запрограммирован (3) или оставлен незапрограммированным (Н) для получения следующих дополнительных свойств: Таблица 17 Биты защиты внутреннего ПЗУ Бит1 Бит2 БитЗ Дополнительные свойства Н Н н нет дополнительных свойств 3 Н н команда, выбранная из внешней памяти, не имеет доступа к внутренней памяти программ (актуально для команды MOVC); дальнейшее программирование невозможно 3 3 н команда, выбранная из внешней памяти, не имеет доступа к внутренней памяти программ (актуально для MOVC); дальнейшее программирование невозможно; режим проверки внутренней памяти программ запрещен 3 3 3 то же, что и в предыдущем случае, но невозможно выполнение программ из внешнего ПЗУ Другие комбинации битов защиты памяти неопределены Если бит 1 запрограммирован, логический уровень на выводе ЕА опрашивается и фиксируется во внутренней защелке во время сбро- са. Если питание микросхемы включается без формирования сигна- ла сброса, запоминается случайное значение и сохраняется до акти- визации сигнала сброса. Для правильной работы микросхемы необходимо, чтобы значение логического уровня на выводе ЕА со- впадало с состоянием защелки. ПРОГРАММИРОВАНИЕ МИКРО-ЭВМ СЕМЕЙСТВА 8052 Микросхемы семейства 8052 программируются с помощью спе- циального алгоритма («Алгоритм программирования укорочен- ными импульсами»), отличающегося от более ранних модифика- ций величиной программирующего напряжения U, а также длительностью и количеством программирующих импульсов на выводе ALE/ PROG. 96
В табл. 18 показаны логические уровни на выводах микросхем при программировании памяти программ, шифровальной таблицы и бит защиты памйти. Таблица 18 Режимы программирования УФ ПЗУ 87С52 Режим RST PS- EN ALE/ PROG ЕА/ Upp P2.7 P2.6 P3,7 P3.6 РЗ.З Программирование памяти программ 1 0 "LT U 1 0 1 1 1 Проверка памяти программ 1 0 1 1 0 0 1 1 0 Программирование шифровальной таблицы 0...3FH 1 0 “U” u 1 0 1 0 1 Программирование Бита 1 защиты памяти программ 1 0 “U” и 1 1 1 1 1 Программирование Бита 2 защиты памяти программ 1 0 “U” и 1 1 0 0 1 Программирование Бита 3 защиты памяти программ 1 0 ТГ- и 0 1 0 1 1 Примечания. 1. «1» — высокий логический уровень 2. «О» — низкий логический уровень 3.11 = 12,75 В+ 0,25 В 4. Ucc = 5 В + 10 % во время программирования и проверки Ток программирования от источника U не превышает 50 мА На вывод ALE/PROG подаются 25 программирующих импульсов, в то время как U удерживается на уровне 12,75 ±0,25 В. Каждый программирующий импульс подается низким логическим уровнем в течение 100 ± 10 мкс и высоким логическим уровнем — как минимум 10 мкс. Программирование и верификация памяти программ осуществ- ляется, как видно из табл. 18, аналогично 8751, за исключением вели- чины U и структуры сигнала на входе ALE/ PROG . Для программирования шифровальной таблицы используется тот же алгоритм, что и для программирования УФ-ПЗУ программ, но выводы микросхемы должны находиться в состояниях, приведен- ных в табл. 18 для режима «Программирование шифровальной таб- лицы». При этом шифровальная таблица расположена в адресном пространстве от 0 до 3FH (0 соответствует 1FH для 32-байтной вер- сии). Не следует забывать, что после того, как шифровальная табли- ца запрограммирована, в режиме проверки из микросхемы будут счи- тываться только зашифрованные данные. 97
Для программирования битов защиты памяти программ исполь- зуется тот же алгоритм, что и для программирования УФ ПЗУ про- грамм и ячеек шифровальной таблицы, но выводы микросхемы дол-; жны находиться в состояниях, приведенных в табл. 18 для режимов «Программирование Бита п защиты памяти программ». После того,; как один из бит защиты памяти программ запрограммирован, даль- нейшее программирование внутренней памяти программ и шифро- вальной таблицы становится невозможным. Однако при этом дру- гой бит защиты памяти может быть запрограммирован. Необходимо отметить, что вход EA/Vpp очень чувствителен к превышениям максимально допустимого напряжения программи- рования, равного 13 В. Даже «иголки» .выше указанного уровня мо- гут привести к необратимому отказу микросхем.
Приложение 3 МИКРОКОНТРОЛЛЕРЫ ГРУПП 51FX, 51GB И СЕМЕЙСТВА MCS251 ФИРМЫ INTEL МИКРОКОНТРОЛЛЕРЫ ГРУПП 8XC51FX, 8XL51FX В Приложении 2 мы подробно рассмотрели однокристальные микро- ЭВМ семейств MCS-51, MCS-52 фирмы Intel. Однако жизнь не стоит на месте, и разработчики Intel предложили нам более совершенные из- делия, ставшие доступными отечественным радиолюбителям и про- фессионалам благодаря снятию различных ограничений и снижению цен на эти изделия до уровня 10...20 долларов за штуку. Ниже автор предлагает читателям поближе познакомиться с микроконтроллера- ми групп 8xC51Fx, 8xL51Fx все той же фирмы Intel. Микроконтроллеры упомянутых групп принадлежат к широ- ко распространенному семейству MCS-51. Они являются одними из наиболее совершенных изделий этого семейства и обладают широкими функциональными возможностями. Автор предпо- лагает, что читатели знакомы с микроконтроллерами 8x51х, 8хС51х, 8хС52х, являющимися предшественниками рассматрива- емых микроконтроллеров, поэтому здесь описываются только от- личия контроллеров 8xC51Fx, 8xL51Fx от своих предшественни- ков. К группе 8xC51Fx относятся микроконтроллеры 80C51FA, 83C51FA, 87C51FA, 83C51FB, 87C51FB, 83C51FC, 87C51FC. В группу 8xL51Fx входят 80L51FA, 83L51FA, 87L51FA, 83L51FB, 87L51FB, 83L51FC, 87L51FC. Обе группы полностью совместимы архитектур- но и по расположению выводов с базовой моделью MCS51 и имеют следующие отличия от нее: 99
• объем внутреннего ПЗУ — 8, 16 и 32 кбайт; • объем внутреннего ОЗУ — 256 байт; • три 16-битовых таймера/счетчика; • программируемый частотный вывод; • таймер/счетчик с возможностью прямого и обратного счета; • семь векторов прерываний, 4-уровневая структура прерываний; • дуплексный программируемый последовательный порт, поддер- живающий автоматическое распознавание адреса и аппаратное определение ошибки типа «потеря стоп-бита»; • режим ONCE — эмуляция без выпаивания кристалла; • улучшенный алгоритм программирования «быстрыми импуль- сами»; • трехуровневая система защиты внутреннего ПЗУ; • два режима уменьшенного энергопотребления (Idle и Power Down); • CHMOS-технология, увеличенная тактовая частота (до 16..,24МГц); • 3-вольтовое питание для микроконтроллеров группы 8xL51Fx; • наличие массива программируемых счетчиков, реализующих режимы: • сравнения/защелки; • программируемого таймера; • высокоскоростного выхода; • широтно-импульсного модулятора; • сторожевого таймера. Первые одиннадцать пунктов отличительных особенностей не яв- ляются принципиально новыми и реализованы в некоторых преды- дущих микроконтроллерах — в частности, в семействе MCS-52. Но- выми являются повышенная тактовая частота, 3-вольтовое питание и массив программируемых счетчиков. Рассмотрим эти отличия бо- лее подробно. ПОВЫШЕННАЯ ТАКТОВАЯ ЧАСТОТА Приведенная ниже табл. 1 дает информацию о наличии кристал- лов с разными тактовыми частотами в группе 8xC51Fx (8xL51Fx не имеют подобного разнообразия в диапазоне рабочих частот, и все функционируют на частотах от 3,5 до 16 МГц). Кристаллы, промаркированные индексом «3», работают на час- тоте 24 МГц только при использовании внутренних ПЗУ и ОЗУ. При использовании внешнего ПЗУ или ОЗУ (или и того, и другого) пре- дельная верхняя частота не должна превышать 20 МГц. 100
Таблица 1 “Кристалл 8xC51Fx без доп. индекса 3,5...12 МГц 8xC51Fx-1 3,5...16 МГц 8xC51Fx-2 0,5...12 МГц 8xC51Fx-3 3,5...24 МГц Г 30С51FA + + + — 83С51FA + + + — 87C51FA + + — + h 33C51FB + + — + 87C51FB + + — + 83C51FC + + — + 87C51FC + + — + ПОНИЖЕННОЕ НАПРЯЖЕНИЕ ПИТАНИЯ Микроконтроллеры группы 8xL51Fx функционируют на такто- вых частотах от 3,5 до 16 МГц при питающем напряжении от 2,7 до 3,6 В. Между собой кристаллы различаются также объемом внутрен- него ПЗУ: у кристаллов с индексом «А» объем ПЗУ — 8 кбайт, с ин- дексом «В» — 16 кбайт, с индексом «С» — 32 кбайт. Аналогичное деление по объему ПЗУ и у микроконтроллеров группы 8xC51Fx. Микроконтроллеры 80C51FA и 80L51FA не имеют внутреннего ПЗУ. Кроме того, у 80C51FA, 80L51FA, 83C51FA и 83L51FA отсутствует ре- жим программируемого частотного выхода у таймера/счетчика 2, си- стема прерываний только двухуровневая, нет асинхронного сброса портов и нет системы защиты программной памяти. МАССИВ ПРОГРАММИРУЕМЫХ СЧЕТЧИКОВ Одним из наиболее существенных отличий микроконтроллеров семейства 8xC51Fx (8xL51Fx) является наличие массива програм- мируемых счетчиков (РСА). РСА обеспечивает более широкие воз- можности с меньшим отвлечением центрального процессорного устройства (ЦПУ), чем стандартный таймер-счетчик. К преимуще- ствам РСА можно также отнести более простое его программиро- вание и более высокую точность. К примеру, РСА может обеспечить лучшее временное разрешение, чем таймеры 0,1 или 2, т. к. счетчик РСА может работать втрое быстрее этих таймеров. РСА также может выполнять большое количество задач, выполнение которых с исполь- зованием таймеров требует дополнительных аппаратных затрат (на- пример, определение фазового сдвига между импульсами или гене- рацию ШИМ-сигнала). РСА состоит из 16-битного таймера-счетчика и пяти 16-битных модулей сравнения-защелки (рис. 1). Таймер-счетчик РСА служит в качестве базового таймера для функционирования всех пяти модулей сравнения-защелки; ни один из других таймеров-счетчиков микрокон- 101
троллера не может использоваться с этой целью. Вход таймера-счет- чика РСА может быть запрограммирован на счет сигналов от следую- щих источников: • выход делителя на 12 тактового генератора микроконтроллера; • выход делителя на 4 тактового генератора микроконтроллера; • сигнал переполнения таймера 0; • внешний входной сигнал на выводе ЕС1 (Р1.2). Любой из модулей сравнения-защелки может быть запрограм- мирован для работы в следующих режимах: • защелкивания по фронту и/или спаду импульса; • программируемого таймера; • высокоскоростного выхода; • широтно-импульсного модулятора. Модуль 4 может быть также запрограммирован как стороже- вой таймер (Watchdog Timer). При работе модуля сравне- ния-защелки в режиме защелки, ’ бис программируемого таймера или высокоскоростного выхода мо- дуль может сформировать сиг- нал прерывания. Сигналы от Рис. 1 всех пяти модулей сравнения-за- щелки и сигнал переполнения таймера РСА разделяют один вектор прерывания. Иными словами, если прерывания разрешены, то и сигнал переполнения таймера РСА, и сигнал от любого из модулей вызывает одну и ту же подпрограмму прерываний, которая должна сама идентифицировать источник, выз- вавший ее. Для работы с внешними устройствами таймер-счетчик РСА и модули сравнения-защелки используют выводы Р1 порта микро- ЭВМ. Эти выводы перечислены ниже (табл. 2). Если какой-либо вы- вод порта не используется при работе РСА или РСА, порт может ис- пользоваться стандартным образом. ТАЙМЕР-СЧЕТЧИК РСА РСА имеет 16-битный таймер-счетчик (рис. 2), состоящий из ре- гистров СН и CL (соответственно старший и младший байты). Эти регистры могут быть прочитаны и записаны в любое время. Чтение полного 16-битного значения таймера-счетчика РСА (далее для про- стоты таймера РСА) требует использования одного из РСА-моду- лей в режиме защелкивания. 102
Таблица 2 Связь компонентов РСА и внешних выводов микро-ЭВМ Компонент РСА Внешний вывод 16-битный счетчик P1.2/ECI 16-битный модуль 0 Р1.3/СЕХ0 16-битный модуль 1 Р1.4/СЕХ1 16-битный модуль 2 Р1.5/СЕХ2 16-битный модуль 3 Р1.6/СЕХЗ 16-битный модуль 4 Р1.7/СЕХ4 Рис. 2 Как отмечалось выше, пользователь может выбрать четыре ва- рианта входных сигналов таймера РСА. 1. Частота тактового генератора, деленная на 12. При этом таймер РСА инкрементируется один раз в каждом машинном цикле. Если тактовая частота равна 16 МГц, таймер инкрементируется каждые 750 нс; 2. Частота тактового генератора, деленная на 4. Таймер РСД инкрементируется трижды в каждом машинном цикле, т. е. каждые 250 нс при тактовой частоте генератора 16 МГц; 3. Переполнение таймера/счетчика 0(Т/С0). Таймер РСА инкрементируется каждый раз, когда происходит переполнение Т /СО. Этот режим дает возможность программно за- давать частоту входного сигнала таймера РСА; 4. Входной сигнал. Таймер РСА инкрементируется с переходом из 1 в 0 на выходе ECI (вывод Р1.2 микроконтроллера). Максималь- но допустимая частота сигнала на этом входе — частота тактового генератора, деленного на 8. Выбор входного сигнала осуществляется битами CPS0 и CPS1 в регистре CMOD. В этом регистре также находится бит ECF, который разрешает прерывание при переполнении таймера РСА. Кроме того, 103
Таблица Регистр режима счетчика РСА CMOD Символ Позиция Имя и назначение CIDL CMOD. 7 Установка этого бита в 1 прекращает счет таймера РСА в режиме Idle. При нулевом значении CIDL счет в режиме Idle не прекращается WDTE CMOD.6 Бит управления сторожевым таймером. Установка его в 1 разрешает функционирование сторожевого таймера, установка в 0 — запрещает — CMOD.5 Зарезервировано для дальнейшего использования — CMOD.4 Зарезервировано для дальнейшего использования — CMOD.3 Зарезервировано для дальнейшего использования CPS1 CMOD.2 Выбор источника тактирования РСА, старший бит CPS0 CMOD.1 Выбор источника тактирования РСА, младший бит ECF CMOD.O Бит разрешения прерывания по переполнению таймера- счетчика РСА7. При ECF=1 разрешена установка бита CF регистра CCON, при ECF=0 — запрещена Адрес регистра CMOD — 0D9H, значение по сбросу — ООхххОООЬ установка в 1 бита CIDL дает возможность выключать таймер РСА в режиме Idle, что дает снижение энергопотребления в упомянутом режиме на 30 %. В табл. 3 приводятся имена и назначения битов ре- гистра CMOD. Еще 2 бита, относящихся к таймеру-счетчику РСА, находятся в регистре CCON (описание регистра приведено в табл. 4). Бит CF ус- танавливается аппаратно при переполнении таймера-счетчика. Ус- Таблица 4 Регистр управления РСА CCON Символ Позиция Имя и назначение CF CCON.7 Флаг переполнения счетчика РСА. Устанавливается аппаратно и вызывает прерывание при ECF=1. Может быть установлен также и программно. Сброс только программным путем CR CCON. 6 Бит управления включением счетчика РСА. Установка его в 1 разрешает функционирование счетчика, установка в 0 — запрещает — CCON.5 Зарезервировано для дальнейшего использования CCF4 CCON.4 Флаг прерывания модуля 4 РСА. Устанавливается аппаратно по равенству и фиксации значения. Очищается программно CCF3 CCON.3 Флаг прерывания модуля 3 РСА CCF2 CCON.2 Флаг прерывания модуля 2 РСА CCF1 CCON.1 Флаг прерывания модуля 1 РСА CCF0 CCON.O Флаг прерывания модуля 0 РСА Адрес регистра CMOD — 0D8H, значение по сбросу — 00x00000b 104
-гановка или сброс бита CR соответственно устанавливает или вык- лючает счетчик. , МОДУЛИ СРАВНЕНИЯ-ЗАЩЕЛКИ Каждый из пяти модулей сравнения-защелки может функцио- нировать в шести различных режимах: • 16-битовый регистр-защелка с управлением по фронту импульса; • 16-битовый регистр-защелка с управлением по спаду импуль- са; • 16-битовый регистр-защелка с управлением как по фронту, так и по спаду импульса; • .16-битовый программный таймер; • 16-битный высокоскоростной выход; • 8-битовый широтно-импульсный модулятор (ШИМ). Дополнительно модуль 4 может использоваться как строжевой таймер. Каждый модуль может быть запрограммирован на выпол- нение любой из функций независимо от остальных. Каждый из модулей имеет регистр ССАРМп (п=0...4), с помощью которого осуществляется выбор режима его функционирования. Бит ECCFn в этом регистре разрешает прерывание от модуля РСА, если его флаг прерывания (CCFn) был установлен. Эти флаги (CCF0-CCF4) находятся в регистре CCON и устанавливаются при описанных ниже условиях функционирования модуля в режиме защелки, программи- руемого таймера или режиме высокоскоростного выхода. Таблица 5 Регистр модуля сравнения-защелки п ССАРМп Символ Позиция Имя и назначение — ССАРМп.7 Зарезервировано для дальнейшего использования ЕСОМп ССАРМп.6 Флаг разрешения компаратора РСА (функция сравнения) САРРп ССАРМп.5 Бит разрешения сравнения по положительному фронту (перепаду из 0 в 1) CAPNn ССАРМп.4 Бит разрешения сравнения по спаду МАТп ССАРМп.З При установке этого бита в 1 равенство счетчика РСА и соответствующего регистра сравнения-защелки устанавливает флаг прерывания CCF TOGn ССАРМп.2 При установке этого бита в 1 равенство счетчика РСА и соот- ветствующего регистра сравнения-защелки изменяет уровень (с 0 на 1 или наоборот) на соответствующем выводе СЕХп PWMn ССАРМп.1 При установке этого бита на вывод СЕХп выдается широтно- модулированный сигнал ECCFn ССАРМп.О Разрешение прерывания по флагу CCF Адреса регистров с ODAH (ССАРМО) по ODEH (ССАРМ4), значение по сбросу — хОООООООЬ 105
Каждый модуль имеет, кроме того, пару собственных 8-битньц регистров сравнения-защелки (ССАРпН и CCAPnL). В этих регистр рах запоминаются показания таймера РСА в момент прихода сигна- ла на защелкивание информации или содержатся данные для срав- нения с показаниями таймера-счетчика. В ШИМ-режиме старший байт ССАРпН управляет скважностью импульсов. Режим защелки РСА Осуществлять защелкивание информации можно как положи- тельным, так и отрицательным перепадом импульса, что делает РСА весьма гибким инструментом для измерения периода следования сигналов, ширины импульса, скважности и фазовых задержек меж- ду импульсами, приходящими по пяти входным цепям. Установка битов САРРп и/или CAPNn в регистре ССАРМп выбирает, каким пе- репадом будет осуществляться защелкивание информации — фронтом и/или спадом импульса в модуле п. | Прерывание от РСА [ CCFn Защелкивание I СЕХп ' Вывод БИС ЕССРп Регистр ССАРМп ССАРпН jCCAPnl] П = 0,1, 2,3, 4 X безразлично I X | 0 | САРРп | CAPNn Рис. 3 Управление защелкиванием информации осуществляется им- пульсами на внешних выводах СЕХ0-СЕХ4. Когда надежно выде- лен перепад сигнала (фронт или спад), происходит аппаратная заг- рузка 16-битного значения счетчика РСА (CH,CL) в регистры ССАРпН, CCAPnL соответствующего модуля сравнения-защелки. Результирующее значение этих регистров отражает значение счет- чика РСА в момент выделения перепада сигнала на внешнем выво- де СЕХп. При защелкивании устанавливается в один связанный с соот- ветствующим модулем флаг CCFn в регистре CCON. Если при этом установлен флаг ECCFn в регистре ССАРМп, то формируется вызов прерывания от РСА (естественно, если оно не замаскировано). Так 106
как аппаратно этот флаг не сбрасывается после того, как подпрог- рамма обработки прерывания вызвана, его нужно сбросить про- граммным путем в ходе выполнения этой подпрограммы. Входе этой подпрограммы 16-битовое значение, записанное в ССАРпН, CCAPnL должно быть переписано в ОЗУ микроконтрол- лера до того, как придет новый фронт или спад, вызывающий следу- ющее защелкивание информации в упомянутых регистрах. Если это- го не сделать, новая информация записывается поверх имеющейся, и последняя теряется. . Время, необходимое для вышеупомянутых действий, ограниче- но тактовой частотой микроконтроллера. Запоминание двух 8-би- товых регистров и сброс флага требует 9 машинных циклов (сюда входит и вызов прерывающей программы). Таким образом, для так- товой частоты 12 МГц защелкивание не может быть чаще, чем один раз в 10 мкс. Режим программируемого таймера В большинстве применений программируемый таймер исполь- зуется для вызова прерывающей программы, которая должна вы- полняться с постоянным заданным интервалом. Пользователь осу- ществляет предварительную загрузку 16-битового значения в Рис. 4 ССАРпН, CCAPnL. В режиме, когда на вход модуля подан сигнал с частотой, равной частоте задающего генератора, деленной на 4, срав- нение производится трижды в течение каждого машинного цикла. Для разрешения сравнения необходимо установить в 1 бит ЕСОМп в регистре ССАРМп. Для функционирования модуля в упомянутом режиме также не- обходимо установить в 1 бит МАТп в ССАРМп. Когда наступает со- 107
впадение информации в CCAPnH, CCAPnL с содержимым CH, CL, вырабатывается сигнал совпадения и устанавливается флаг CCFn. Если при этом установлен бит ECCFn, то будет вызвана прерывающая про- грамма (естественно, если прерывание от РСА не запрещено). Флаг CCFn должен быть сброшен программно до того, как произойдет но- вое совпадение информации в таймере и регистрах модуля сравне- ния-защелки. Если подпрограмма прерывания заносит новое значе- ние в CCAPnH, CCAPnL, флаг ЕСОМп автоматически сбрасывается, как только информация заносится в CCAPnL. Запись в CCAPnH снова устанавливает этот бит в 1, разрешая, таким образом, работу компа- ратора. По этой причине пользовательская программа должна внача- ле заносить информацию в CCAPnL, а затем в CCAPnH, а не наобо- рот, чтобы исключить вызов прерывания в тот момент, когда новое значение информации окончательно не занесено в CCAPnL, CCAPnH. Режим высокоскоростного выхода В режиме высокоскоростного выхода происходит переключение вывода CEXn с 1 в 0 и наоборот в момент совпадения информации в регистрах таймера РСА СН и CL и в регистрах модуля сравнения- защелки CCAPnH, CCAPnL. Для реализации этого режима необхо- димо установить в 1 биты ЕСОМп, МАТп и TOGn в регистре ССАРМп. Предварительно установив вывод СЕХп в 0 или в 1, пользователь выбирает, каким перепадом на нем будет сопровождаться равенство информации в CH, CL и CCAPnH, CCAPnL. Помимо перепада на выводе СЕХп, пользователь может также вызвать подпрограмму пре- рывания для выполнения определенных функций микроконтролле- ром при вышеупомянутом совпадении значений в регистрах. С этой целью должен быть установлен флаг ECCFn и разрешено прерыва- ние от РСА. Рис. 5 108
В этом режиме возможно более точное фиксирование равенства информации в таймере РСА и в модуле сравнения-защелки, чем при программной установке внешнего вывода в ходе выполнения подпрограммы прерывания, определившей факт совпадения ин- формации. Иными словами, в этом режиме не сказывается ско- рость отработки программы прерывания. Эта подпрограмма нуж- на в том случае, когда пользователь хочет изменить информацию в CCAPnH, CCAPnL. Если эту информацию не менять, то следую- щий сигнал появится только тогда, когда таймер РСА досчитает до своего максимума и начнет счет сначала. При частоте сигнала 16 МГц частота повторения сигналов в режиме быстрого отклика равна 30,5 Гц. Режим сторожевого таймера Функцию сторожевого таймера может выполнять только модуль 4 сравнения-защелки. Если в сторожевом таймере нет необходимости, модуль можно использовать аналогично остальным модулям. Сторожевой таймер представляет из себя цепь, которая вызыва- ет автоматический сброс, если система не пришлет таймеру регуляр- ный сигнал, подтверждающий нормальное функционирование. Эту цепь используют устройства, которые работают с электрическими шумами, бросками питающего напряжения, электростатическим раз- рядом и т. д. или требующие повышенной способности к самовос- становлению системы. В этом режиме в тот момент, когда содержимое таймера РСА рав- но значению в ССАР4Н, CCAP4L, генерируется внутренний сигнал сброса. Для задания этого режима нужно установить в 1 бит WDTE в регистре CMOD. При этом модуль 4 сравнения-защелки должен быть сконфигурирован либо на функционирование в режиме программи- руемого таймера, либо в режиме высокоскоростного выхода. Рис. 6 109
Сброс при работающем сторожевом таймере не произойдет в еле' дующих трех случаях: ц • при периодическом изменении значения в ССАР4Н, CCAP4L та- ким образом, чтобы вновь записанное значение до новой записи не могло совпасть с CH, CL; • при периодическом изменении CH, CL с тем же результатом; • при установке в 0 бита WDTE перед сбросом и повторной уста- новка его в 1 после того, как значения CH, CL сравнялись с ССАР4Н, CCAP4L. Первые два случая — более подходящие для таких систем, кото- рые критичны к зависанию, т. к. в этих случаях сторожевой таймер не отключается. При этом второй вариант не рекомендуется, если таймер РСА используется еще каким-либо модулем сравнения-защел- ки. Таким образом, первый случай наиболее применим для практи- ческой реализации. Режим широтно-импульсного модулятора Любой из пяти модулей РСА может быть запрограммирован в режим ШИМ. Выход ШИМ может быть использован для преоб- разования цифровых данных в аналоговый сигнал с минималь- ными дополнительными аппаратными затратами. Частота моду- ляции зависит от скорости счета таймера РСА. С 16 МГц кварцевым резонатором максимальная частота сигнала ШИМ не превышает 15,6 кГц. Для работы в режиме ШИМ биты ЕСОМп и PWMn в регистре ССАРМп должны быть установлены. РСА вырабатывает 8-битный ШИМ-сигнал путем сравнения содержимого CCAPnL и CL. Если CL<CCAPnL, то на внешнем выводе соответствующего модуля срав- нения-защелки будет сигнал с нулевым уровнем, если CL>CCAPnL, то с единичным. Значение, записанное в CCAPnL задает скважность формируемого сигнала. Для изменения значения CCAPnL без сбоев пользователь должен занести требуемое значение в ССАРпН. Это значение аппа- ратно заносится в CCAPnL в момент, когда CL меняет свое значение с FFH на 0, что соответствует началу нового выходного цикла. В ССАРпН можно занести любое целое число от 0 до 255, при этом скважность меняется от 100 до 0,4 %. Нулевая скважность обес- печивается путем прямой записи информации в SFR соответствую- щего порта. Значение ССАРпН, при котором достигается требуемая скважность, определяется соотношением ССАРпН= 256(1 - скважность), (*) 110
Регистр CCApMn Рис. 7 где ССАРпН — ближайшее целое число к значению в правой части выражения (*), скважность представляет собой величину в диапазо- не от 0 до 1. На рис. 8 приведены зависимости сигналов на выходе микро- контроллера при работе РСА в режиме ШИМ и при различных зна- чениях информации в ССАРпН. Скважинность ССАРпН 100% 00 90% 25 50% 128 10% 230 0,4% 255 Выходной сигнал микроконтроллера Рис. 8 МИКРОКОНТРОЛЛЕРЫ ГРУППЫ 8XC51GB ФИРМЫ INTEL Выше мы познакомили читателей с микроконтроллерами групп 8xC51Fx, 8xL51Fx фирмы Intel, являющимися одними из самых со- вершенных изделий в семействе MCS-51. Теперь речь пойдет о пос- ледней ее группе контроллеров этого семейства — 8xC51GB. Пожа- луй, именно при создании этих контроллеров разработчики Intel пришли к выводу, что простое наращивание аппаратных ресурсов у вновь разрабатываемых изделий без существенной доработки архи- тектуры семейства не приносит пользователям ощутимого выигры- 111
ша, особенно в вопросах повышения производительности и расши- рения возможностей. В связи с этим и появились микроконтролле- ры семейства MCS-2 51. Многие пользователи с эн тузиазмом воспри- няли его появление. Но, по мнению автора, и 8xC51GB — наиболее необычный член семейства MCS-51 — все же интересен в силу чрез- вычайно широких по меркам микроконтроллеров аппаратных воз- можностей, о которых будет рассказано ниже. В состав группы входят следующие изделия: 80C51GB, 83C51GB, 87C51GB, 80C51GB-1, 83C51GB-1, 87C51GB-1. На момент подготов- ки материала все эти изделия выпускались в 68-выводном корпусе PLCC и маркировались с префиксом N (N80C51GB). Кристаллы вы- полнены по CHMOS Ш-Е технологии фирмы Intel. Версии с програм- мируемым внутренним ПЗУ не имеют прозрачного окна в корпусе, т. е. относятся к разряду однократно программируемых. Это несколь- ко ограничивает круг их потребителей в силу того, что при отладке не удается работать методом проб и ошибок с многократным пере- программированием кристалла, а обязательно приходится исполь- зовать соответствующий эмулятор. Первые три из перечисленных выше контроллеров работают при частоте тактового сигнала в диапазоне от 3,5 до 12 МГц. Вто- рые три контроллера, имеющие единичку в конце маркировки, ра- ботоспособны при частоте от 3,5 до 16 МГц. Все упомянутые кон- троллеры — 5-вольтовые, низковольтных версий выпущено не было. Характерные отличительные особенности группы 8xC51GB сле- дующие: • объем резидентной программной памяти — 8,16 или 32 кбайта; • объем резидентной памяти данных - 256 Байт; • 48 линий ввода/вывода (6 8-битных портов), из которых 40 снаб- жены триггерами Шмитта во входной цепи; • три 16-битных таймера-счетчика, при этом третий может допол- нительно работать в следующих режимах: • программируемого частотного выхода; • таймера-счетчика с возможностью прямого и обратного счета; • два массива программируемых счетчиков (РСА и РСА1), работа- ющих в следующих режимах: • сравнения/защелкивания; • программируемого таймера; • высокоскоростного выхода; • широтно-импульсного модулятора; • 15 векторов прерываний; • 4-уровневая структура прерываний; 112
. дуплексный программируемый последовательный порт, поддер- живающий: . автоматическое распознавание адреса; . детектирование ошибок формата ( потерю стоп-бита); . 8-битный 8-канальный АЦП; • два режима уменьшенного энергопотребления; • тестовый режим эмуляции «ONCE»; • программирование по улучшенному алгоритму «быстрых пуль- саций»; • 3-уровневая система защиты памяти программ; • расширенный последовательный порт; • специализированный аппаратный сторожевой таймер; • система распознавания сбоя тактового генератора. Большинство из перечисленных особенностей относится ко все- му семейству MCS-51, в связи с чем мы не будем подробно на них останавливаться. Кроме того, выше, при анализе микроконтролле- ров семейства 8xC51Fx, 8xL51Fx, нами был подробно описан массив программируемых счетчиков, в связи с чем он также будет рассмот- рен нами только с точки зрения его отличий от имеющегося в 8xX51Fx. Предметом нашего знакомства будут те из особенностей 8xC51GB, которых нет больше ни у одной из групп MCS-51. Отметим, что 80C51GB и 80C51GB-1 не имеют внутренней памя- ти программ. 83C51GB и 87C51GB имеют по 8 кбайт масочно про- граммируемого и перепрограммируемого ПЗУ соответственно. У 83C51GB-1 и 87C51GB-1 объем (опять-таки соответственно) масоч- ного и перепрограммируемого ПЗУ составляет 16 и 32 кбайта. РАСПОЛОЖЕНИЕ И НАЗНАЧЕНИЕ ВЫВОДОВ Расположение и назначение выводов приведены в табл. 6. Большинство из упомянутых выводов знакомы тем, кто уже имел дело с микроконтроллерами MCS-51. Новыми являются выводы пор- тов Р4, Р5 со своими альтернативными функциями (они приведены после «слэша») и сигналы, связанные с АЦП (Avref, Avss, COMPREF, АСН0...АСН7, TRIGIN). Эти сигналы будут рассмотрены ниже при описании соответствующих устройств. Порт РО аналогичен соответствующим портам более ранних мик- росхем и выполняет те же функции. У 8xC51GB появились два новых порта — Р4 и Р5. Все порты Р1-Р5 являются 8-битовыми квазидвунап- равленными портами ввода/вывода, с мощным внутренним резисто- ром, обеспечивающим быстрое установление на выходах уровня логи- ческой единицы при переключении. Резистор подключается к выходному каскаду на два периода тактового генератора для перевода вывода в ука- 113
Таблица 6 занное состояние, а затем от- NN выводов Назначение ключается. Выводы портов 65...4 P0.0...P0.7/AD0...AD7 Р1—Р5, находящиеся в со- стоянии логической едини- 5 Р4.0 / SEPCLK 6 Р4.1 / SEPIO 7 P4.2/ECI1 цы, имеют высокий потен- 8...12 Р4.3...Р4.7 / С1ЕХ0...С1ЕХ4 циал за счет внутреннего 13 Vcc резистора и могут использо- ваться в этом состоянии как входы. В отличие от порта Р0, входные линии портов Р1 - Р5 14,15 Р5.0, Р5.1 16...20 Р5.2...Р5.6/ INT2 ...INT6 21 Р5.7 22 Р1.0/Т2 23 Р1.1 /Т2ЕХ снабжены входными тригге- 24 P1.2/ECI рами Шмитта. Почти все вы- воды портов имеют альтер- нативное назначение (см. табл. 7). При сбросе выводы 25... 29 Р1.3...Р1.7 / СЕХ0...СЕХ4 30 RESET 31 РЗ.О / RxD 32 Р3.1 /TxD 33,34 P3.2, РЗ.З / INTO , INTI порта РЗ устанавливаются в 35,36 P3.4, P3.5 / TO, T1 состояние логической едини- 37 P3.6 / WR цы, выводы остальных пор- 38 P3.7 / RD тов — в нулевое состояние. 39 Avref Вход RESET — сброс. Низкий уровень на данном 40 Avss 41 COMPREF 42...4Э ACH7...ACH0 входе в течение двух машин- 50 TRIGIN ных циклов при работаю- 51 Vss щем тактовом генераторе приводит к сбросу контрол- лера. Выводы портов будут приведены в исходное со- стояние в тот момент, когда 52,52 XTAL1.XTAL2 54 PSEN 55 ALE / PROG 56 ЁА/VPP 57-64 P2.0...P2.7 / A8...A15 напряжение на этом входе снизится до 0,3—0,4 В. Про- цедура сброса длится 5 машинных циклов (60 периодов тактового ге- нератора). Необходимо обратить внимание на то, что полярность сиг- налов сброса для микроконтроллеров группы 8xC81GB обратная по отношению к другим членам семейства MCS-51. Причины этой ин- версии автору неизвестны. Внутренний резистор соединяет этот вход с общим проводом. Внешний конденсатор RC-цепочки должен соеди- нять вход RESET с Vss. Вход ALE/ PROG полностью аналогичен соответствующему вхо- ду других членов семейства MCS-51. Отметим, что в 8x051GB пользователь имеет возможность запретить выдачу сигнала ALE путем установки в 0 младшего бита из регистра SFR, расположен1 114
Таблица 7 Вывод порта Альт.функц. Наименование альтернативной функции Р0.0-Р0.7 AD0-AD7 Мультиплексированная шина адрес/данные Р1.0 Т2 Вход тактирования Т/С2, частотный выход Р1.1 Т2ЕХ Управление Т/С2 Р1.2 ECI Внешнее тактирование РСА Р1.3 СЕХО Модуль 0 РСА. Вход защелки, выход сравнения, PWM Р1.4 СЕХ1 Модуль 1 РСА. Вход защелки, выход сравнения, PWM Р1.5 СЕХ2 Модуль 2 РСА. Вход защелки, выход сравнения, PWM Р1.6 СЕХЗ Модуль 3 РСА. Вход защелки, выход сравнения, PWM Р1.7 СЕХ4 Модуль 4 РСА. Вход защелки, выход сравнения, PWM Р2.0-Р2.7 А8-А15 Старший байт адреса внешней памяти РЗ.О RXD Вход последовательного порта Р3.1 TXD Выход последовательного порта Р3.2 INTO Внешнее прерывание 0 РЗ.З INTI Внешнее прерывание 1 Р3.4 ТО Вход тактирования Т/СО Р3.5 Т1 Вход тактирования Т/С1 Р3.6 WR Строб записи во внешнюю память данных Р3.7 RD Строб чтения из внешней памяти данных Р4.0 SEPCLK Выход частоты для SEP Р4.1 SEPDAT Вход/выход данных SEP Р4.2 ECU Внешнее тактирование РСА1 Р4.3 C1EX0 Модуль 0 РСА1. Вход защелки, выход сравнения, PWM Р4.4 C1EX1 Модуль 0 РСА1. Вход защелки, выход сравнения, PWM Р4.5 C1EX2 Модуль 2 РСА1. Вход защелки, выход сравнения, PWM Р4.6 C1EX3 Модуль 3 РСА1. Вход защелки, выход сравнения, PWM Р4.7 C1EX4 Модуль 4 РСА1. Вход защелки, выход сравнения, PWM Р5.0 — Р5.1 — Р3.2 INT2 Внешнее прерывание 2 РЗ.З INT3 Внешнее прерывание 3 Р3.2 INT4 Внешнее прерывание 4 РЗ.З INT5 Внешнее прерывание 5 Р3.2 INT6 Внешнее прерывание 6 РЗ.З INT7 Внешнее прерывание 7 ного по адресу 8ЕН. При этом ALE выдается только в момент дей- ствия команд MOVC или MOVX, а в остальных случаях на этом выводе удерживается единичный уровень. Если вы работаете только с внут- ренней памятью программ и данных, на выходе ALE вообще не бу- дет никаких сигналов. Вход EA/Vpp служит для разрешения выборки команд из внутрен- ней памяти программ, если таковая имеется на кристалле, и вход соеди- нен с общим проводом. При подаче на него единичного уровня выпол- 115
няется программа из внешней памяти программ. Однако последнее воз- можно только до того момента, пока не установлены биты защиты внут- ренней памяти программ, о чем будет сказано ниже. На этот вывод по- дается напряжение программирования Vpp=12,75 В при программировании внутреннего ПЗУ микросхем 87C51GB, 87C51GB-1. ОТЛИЧИЯ КРИСТАЛЛОВ 8XC51GB ОТ ОСТАЛЬНЫХ ЧЛЕНОВ СЕМЕЙСТВА MCS-51 Итак, перечислим наиболее существенные отличия 8xC5l GB. Это: • запрет выдачи сигнала ALE по адресу 8ЕН; * порт расширения последовательных каналов SEP; • 8-канальный АЦП; • два дополнительных 8-битных порта Р4 и Р5; • пять дополнительных внешних прерываний INT2... INT6; • наличие 15 векторов прерываний; • аппаратный сторожевой таймер; • возможность определения сбоя тактового генератора; * два массива программируемых счетчиков — РСАиРСА!. 8xC51GB имеет режим холостого хода (XX) и пониженного энер- гопотребления (МП). В табл. 8 показано состояние выводов микро- контроллеров при переводе их в эти режимы. Таблица 8 Режим ПЗУ ALE PSEN PORTO PORT1 PORT2 PORT3 PORT4.5 XX внут. 1 1 данные данные данные данные , данные XX внеш. 1 1 неопр. данные адрес данные данные МП внут. 0 0 данные данные данные данные данные МП внеш. 0 0 неопр. данные данные данные данные УЗЕЛ АЦП АЦП микроконтроллера 8xC51GB имеет 8 аналоговых входов (вы- воды АСН0...АСН7), вход внешнего запуска TRIGIN, выводы питания и земли аналоговой части (AVref и AVss), развязанные гальванически с соответствующими выводами цифровой части, а также вывод опор- ного напряжения сравнения COMPREF. Внутренние цепи содержат 8- канальный мультиплексор, 256-элементную резистивную линейку, компаратор, устройство выборки/хранения, 8 регистров результата, ре- гистр последовательного приближения, регистр результата сравнения. Функциональная схема АЦП приведена на рис. 9. Фактически в пространстве SFR имеется 10 дополнительных ре- гистров. Регистры AD0...AD7 (84Н, 94Н, 0А4Н, 0В4Н, 0С4Н, 0D4H, 0Е4Н, 0F4H) содержат результаты преобразования по каждому из 8 каналов. Значение каждого регистра обновляется по завершению пре- 116
образования в соответствующем канале, начиная с канала 0. Регистр результатов сравнения АСМР (0С7Н) содержит 8 флагов, отражающих результаты сравне- ния значения аналоговых входов АСН0-АСН7 со входом COMPREF (табл. 9). Соответствующий флаг устанавливается в 1 в том случае, если входное напряжение на этом аналоговом входе превышает COMPREF, в противном случае флаг сбрасывается. Регистр ACON (097Н) содержит флаг прерывания АЦП AIF, бит разрешения преобразования АСЕ, два бита выбора канала ACS0 и ACS1, биты режима входа AIM и режима запуска ATM (табл. 10). Рис. 9 Таблица 9 Бит Позиция Функция СЫРО АСМР. 7 Флаг сравнения канала 0. 1 при UachO > Ucompref СМР1 АСМР.6 Флаг сравнения канала 1. 1 при Uachl > Ucompref СМР2 АСМР.5 Флаг сравнения канала 2.1 при Uach2 > Ucompref СМРЗ АСМР.4 Флаг сравнения канала 3. 1 при Uach3 > Ucompref СМР4 АСМР.З Флаг сравнения канала 4. 1 при Uach4 > Ucompref СМРЙ АСМР.2, Флаг сравнения канала 5.1 при Uach5 > Ucompref СМР6 АСМР.1 Флаг сравнения канала 6.1 при Uach6 > Ucompref СМР7 АСМР.О Флаг сравнения канала 7. 1 при Uach7 > Ucompref Таблица 10 Бит Позиция Функция — ACON.7 Зарезервирован —- ACON.6 Зарезервирован AIF ACON.5 Флаг прерывания. Устанавливается в 1 по окончании преобразования в 7 канапе. Будет вызывать прерывание в случае разрешения прерывания от АЦП АСЕ ACON.4 Бит разрешения преобразования. При сбросе в 0 преобразование прекращается ACS1 ACON.3 ACS1=0, ACS0=0 — канал АСНО; ACS1=0, АС30'1 — канал АСН1 ACS1=1, ACS0=0 —канал АСН2; ACSI=1, ACS0=1 —канал АСНЗ ACS0 ACON.2 AIM ACON.1 Бит режима входа АЦП: 0 — режим сканирования, 1 — режим выбора канала ATM ACON.O Бит режима запуска АЦП: 0 — режим внутреннего запуска, 1 — режим внешнего запуска 117
Режим сравнения АЦП Этот режим всегда активен и используется для сравнения напря- жений на входах АСН0-АСН7 с опорным напряжением, подаваемым на вход COMPREF контроллера. При всяком запуске аналого-циф- рового преобразователя состояние каждого бита регистра АСМР ус- танавливается в новое состояние, начиная с канала 0, независимо от типа установленного режима опроса каналов. Режим позволяет быс- тро осуществить сравнение типа больше-меньше двух аналоговых сигналов аппаратным методом, что может существенно сократить и упростить выполняемую программу. При отсутствии необходимос- ти использовать режим сравнения на вход COMPFER можно подать любое напряжение от Vcc до Vss. Режим запуска АЦП Запуск преобразователя возможен как от внутреннего, так и от внешнего источника. Для реализации внутреннего запуска бит ATM регистра ACON должен быть установлен в 1. В этом режиме в цик- ле, следующем за тем, в котором бит АСЕ был установлен в 1, начи- нается преобразование с канала 0. После завершения преобразова- ния в седьмом канале устанавливается флаг прерывания AIF. Если прерывание от АЦП разрешено, установка флага в 1 вызывает пре- рывание по вектору АЦП. Новый цикл преобразования начинается после завершения предыдущего. Установка бита АСЕ в 0 завершает преобразование. В режиме внешнего запуска преобразование начинается при наличии нулевого уровня на входе TRIGIN. На этом входе нет схе- мы фиксации перепада, и его состояние определяется путем опро- са в каждом машинном цикле. Другими словами, для запуска пре- образования нулевой уровень на входе TRIGIN должен иметь длительность более одного машинного цикла. После запуска цик- ла преобразования до его завершения состояние входа TRIGIN иг- норируется, и преобразование осуществляется также, как и в пре- дыдущем случае, до завершения преобразования в седьмом канале. После завершения цикла преобразования АЦП переходит в состо- яние останова до нового импульса на входе TRIGIN или до внут- реннего запуска битом АСЕ. Режим входа АЦП Установка бита AIM в 0 переводит АЦП в так называемый режим сканирования. При этом преобразование осуществляется в порядке АСНО, АСН1,..., АСН7. Результаты преобразования помещаются со- ответственно в регистры ADO, AD1,..., AD7. 118
При установке бита AIM в 1 после старта АЦП производятся 4 последовательных преобразования сигнала в канале, номер которого определяется состоянием битов ACS0 и ACS1 регистра ACON. Резуль- таты этих 4-х измерений сигнала в выбранном канале записываются в регистры AD0-AD3. После этого АЦП производит опрос каналов АСН4-АСН7, как и в режиме сканирования, результаты преобразо- вания заносятся в AD4-AD7. Использование АЦП с меньшим количеством каналов Имеется несколько вариантов использования АЦП с меньшим, чем исходные 8, числом каналов. Если время преобразования не кри- тично, то можно просто дождаться прерывания после завершения преобразования в седьмом канале и считать результаты только из выбранных каналов. Если важно получить результат сразу после за- вершения преобразования в выбранном канале, то In)el предлагает производить отсчет нужного временного интервала с использова- нием таймера и его прерываний. Еще один рекомендуемый спо- соб — периодический опрос состояния соответствующего регистра результата. Его изменение дает информацию о том, что произошло новое преобразование (правда, этот способ годится только в том случае, если измеряемое напряжение непостоянно). Использование режима выбора канала не уменьшает время преобразования, а лишь увеличивает количество измерений в выбранном канале за один цикл. АЦП в режиме микропотребления В состав АЦП 8xC51GB входит цепь, ограничивающая энерго- потребление узла в режимах снижения потребления до значения тока утечки. Для нормального функционирования этой цепи на вывод AVref микроконтроллера нужно подать потенциал Vcc. В течение ре- жима пониженного потребления в этом случае напряжение питания можно уменьшать до минимального значения. МАССИВЫ ПРОГРАММИРУЕМЫХ СЧЕТЧИКОВ В состав микроконтроллера 8xC51GB входит массив програм- мируемых счетчиков (РСА), аналогичный тому, который рассмат- ривался нами при знакомстве с микроконтроллерами 8xC51Fx. Од- нако у 8xC51GB есть еще и второй аналогичный массив программируемых счетчиков (РСА1), практически не отличающий- ся от первого. Отличия РСА1 от РСА заключаются в следующем: • модуль 4 РСА1 не поддерживает режим сторожевого таймера; • внешними выводами РСА1 являются выводы Р4.2-Р4.7 (табл. 7); 119
Таблица 11 РСА РСА1 SFR-регистры CCON C1CON CMIOD С1MIOD CCAPMI0 C1CAPMI0 ССАРМП C1CAPMI1 CCAPMI2 C1CAPMI2 CCAPMI3 C1CAPMI3 CCAPMI4 C1CAPMI4 CL CL1 CCAP0L C1CAP0L CCAP1L C1CAP1L CCAP2L C1CAP2L CCAP3L C1CAP3L CCAP4L C1CAP4L СН СН1 ССАРОН С1САР0Н . ССАР1Н С1САР1Н ССАР2Н С1САР2Н ССАРЗН С1САРЗН ССАР4Н С1САР4Н Биты: ECI ECI1 СЕХО С1ЕХ0 СЕХ1 С1ЕХ1 СЕХ2 С1ЕХ2 СЕХЗ С1ЕХЗ СЕХ4 С1ЕХ4 CCF0 C1CF0 CCF1 C1CF1 CCF2 C1CF2 CCF3 C1CF3 CCF4 C1CF4 CR CR1 CF CF1 • названия всех регистров РСА1 и их битов содержат в имени единицу (табл. И); • в регистре управления РСА1 С ICON в пятой пози- ции имеется дополнитель- ный бит CRE (битовый адрес 0EDH). При установке его в единицу разрешение работы РСА1 происходит при совме- стной установке битов CR и CR1. СИСТЕМА ПРЕРЫВАНИЙ 8XC51GB Микроконтроллеры 8XC51GB поддерживают 15 векторов прерываний (табл. 12). Младшие пять векторов аналогичны имею- щимся во всех контроллерах семейства MCS-51. Шестой вектор обслуживает третий таймер/счетчик (он появил- ся только начиная с кристал- лов семейства MCS-52). Седьмой вектор, имеющийся только в 8XC51FX, 8XL51FX и 8XC51GB, поддерживает программируемую матрицу счетчиков (РСА). Последний дополнительно располагает прерывания- ми от шести внешних входов (INT2-INT6), второй матрицы програм- мируемых счетчиков, АЦП и расширенного последовательного порта. Во всех контроллерах семейства MCS-51 каждое прерывание может быть запрещено установкой в низкий уровень соответству- ющего бита в регистре IE. Естественно, это справедливо и для 8XC51GB. Однако поскольку он содержит вдвое больше источни- ков прерывания, то для их разрешения/запрещения используется дополнительный регистр IEA (табл. 13). Как и в предыдущем слу- чае, установка бита в единицу приводит к разрешению соответ- ствующего прерывания, сброс в ноль запрещает его. Адрес регис- тра IEA — 0А7Н. 120
Таблица 12 Адрес Флаг-источник Аппарат- ный сброс Назначение 0003Н IE0 нет(уров.)/ да(фронт) Внешнее событие на входе INTO ооовн TF0 да Переполнение Т /СО 0013Н IE1 нет(уров.)/ да(фронт) Внешнее событие на входе INT1 001 вн TF1 да Переполнение Т /С1 0023Н RI+TI да Прием/передача по послед, каналу 002ВН TF2+EXF2 нет Прерывание от Т /С2 0033Н CF,CCFn(n=0-4) нет Прерывание от РСА 003ВН AIF нет Прерывание от АЦП 0043Н C1F,C1CFn(n=0-4) нет Прерывание от РСА1 004ВН SEPIF нет Прерывание от расшир.послед.порта 0053Н IE2 да Внешнее событие на входе INT2 005ВН IE3 да Внешнее событие на входе INT3 0063Н IE4 да Внешнее событие на входе INT4 006ВН IE5 да Внешнее событие на входе INT5 0073Н IE6 да Внешнее событие на входе INT6 Таблица 13 Бит Позиция Что разрешает/загфещает EAD IEA.7 Прерывание от АЦП ЕХ6 IEA.6 Внешнее прерывание — вход INT6 ЕХ5 IEA.5 Внешнее прерывание — вход INT5 ЕХ4 IEA.4 Внешнее прерывание — вход INT4 ЕХЗ IEA.3 Внешнее прерывание — вход INT3 ЕХ2 IEA.2 Внешнее прерывание — вход INT2 ЕС1 IEA.1 Прерывание от РСА1 ESEP IEA.0 Прерывание от SEP Отметим, что все прерывания, в том числе и описанные в табл. 13, могут быть одновременно запрещены установкой в ноль бита ЕА (IE.7) — старшего бита регистра IE. Каждое прерывание может иметь свой собственный приоритет — от уровня 0 (низшего) до уровня 3 (высшего). Уровень приоритета оп- ределяется состоянием битов в регистровых парах IP, IPH и IPA, IPHA. Первая из упомянутых идентична имеющейся в более ранних контрол- лерах и подробно была описана при рассмотрении группы 8XC51FX. Вторая пара (адреса регистров соответственно 0В8Н и 0В6Н) имеется только у 8XC51GB и обслуживает прерывания, которые есть только у этих контроллеров. В табл. 14 приведено соответствие между битами регистров и прерываниями, уровень которых они определяют. 121
Таблица 14 Мл. бит Позиция Ст. бит Позиция Регулируемое прерывание PAD IPA.7 PADH IPHA.7 Прерывание от АЦП РХ6 IPA.6 РХ6Н IPHA.6 Внешнее прерывание — вход INT6 РХ5 IPA.5 РХ5Н IPHA.5 Внешнее прерывание — вход INT5 РХ4 IPA.4 РХ4Н IPHA.4 Внешнее прерывание — вход INT4 РХЗ IPA.3 РХЗН IPHA.3 Внешнее прерывание — вход INT3 РХ2 IPA.2 РХ2Н IPHA.2 Внешнее прерывание — вход INT2 РС1 IPA.1 РС1Н IPHA.1 Прерывание от РСА1 PSEP IPA.0 PSEPH IPHA.0 Прерывание от SEP В табл. 15 приведено соответствие между уровнями приорите- тов и состоянием битов в регистровых парах IP, IPH и IPA, IPHA. Таблица 15 IPH.x (IPHA.X) IP.x (IPA.X) Уровень приоритета прерывания 0 0 0 0 1 1 1 0 2 1 1 3 Прерывания с низким приоритетом могут быть в свою очередь прерваны только событием более высокого приоритета (но не рав- ного). Соответственно прерывание с высшим приоритетом прерва- но быть не может. Если процессор одновременно получил запросы на два или более прерывания с одинаковым приоритетом, то очеред- ность их обработки определяется специальной последовательностью опроса флагов прерывания. У 8XC51GB эта последовательность выг- лядит следующим образом (табл. 16). Таблица 16 1 (высший) IE0 2 SEPIF 3 IE2 4 TFO 5 C1F, C1CFn 6 IE3 7 IE1 8 AIF 9 IE4 10 TF1 11 CF.CCFn 12 IE5 13 Rl.TI 14 TF2.EXF2 Внешние прерывания INTO и INT1 микроконтроллера 8XC51GB полностью соответствуют аналогичным прерывани- ям всех микроконтроллеров семейства MCS-51 и могут в зависимости от состо- яния битов IT0 и IT1 регистра TCON фиксироваться как по уровню, так и по перепаду из 1 в 0. Внешние выводы INT2 и INT3 мо- гут реагировать как на положительный, так и на отрицательный фронт сигнала. Микросхема имеет регистр EXICON (0С6Н), содержащий биты IT2 и IT3, оп- 122
ределяющие активный фронт сигнала на выводах P5.2(INT2) и Р5.3( INT3 ). При установке бита ITn в 0 прерывание инициируется по отрицательному фронту, при ITn = 1 — по положительному. Внешние события INT4 - INT6 фиксируются только по положитель- ному фронту на выводах Р5.4( INT4 )-Р5.6( INT6). Все внешние прерывания генерируют соответствующие аппарат- но устанавливаемые флаги. Для событий INTO, INTI — это биты IE0 и IE1 регистра TCON. Флаги IE2...IE6 находятся в регистре EXICON. Сброс их осуществляется аппаратно в момент перехода процессора на подпрограмму обработки соответствующего прерывания. За время машинного цикла опрос выводов внешних прерываний осуществляется лишь однажды. Поэтому для того, чтобы прерывание было зарегистрировано, длительность его активного уровня должна превышать один машинный цикл (12 периодов тактового генератора). В табл. 17 приведено назначение битов регистра EXICON. Таблица 17 Бит Позиция Функция — EXICON.7 Зарезервировано IE6 EXICON.6 Флаг прерывания INT6 IE5 EXICON.5 Флаг прерывания INT5 IE4 EXICON.4 Флаг прерывания INT4 IE3 EXICON.3 Флаг прерывания INT3 IE2 EXICON.2 Флаг прерывания INT2 IT3 EXICON. 1 Бит управления INT3 . При 1ТЗ=0 активный фронт прерывания — отрицательный; при 1ТЗ=1 активный фронт прерывания — положительный IT2 EXICON.O Бит управления INT2 . При 1Т2=0 активный фронт прерывания — отрицательный. При 1Т2=1 активный фронт прерывания — положительный РАСШИРЕННЫЙ ПОСЛЕДОВАТЕЛЬНЫЙ ПОРТ Расширенный последовательный порт (SEP) располагает аппарат- ными средствами для реализации шины FC-bus, де-факто являющейся стандартом последовательного обмена. SEP допускает функционирова- ние в четырех различных режимах, имеет три различных источника так- тирования. Под его нужды задействовано два вывода микросхемы: Р4.1 — ввод/вывод данных и Р4.0 — для вывода тактирующего сигна- ла. Передаваемый или принимаемый пакет состоит из восьми бит дан- ных. При этом используется восемь тактов работы SEP. В отсутствие принимаемой или передаваемой информации тактовый сигнал и дан- ные неактивны. 123
За SEP закреплены три SFR-регистра — SEPCON (0D7H), SEPDAT (0Е7Н) и SEPSTAT (0F7H). Регистры адресуются только побайтно. На- значение бит в регистрах SEPCON и SEPSTAT приведено в табл. 18 и 19 соответственно. Таблица 18 Бит Позиция Функция — SEPCON.7 Зарезервирован — SEPCON.6 Зарезервирован SEPE SEPCON.5 Разрешение SEP SEPREN SEPCON.4 Разрешение приема в SEP CLKPOL SEPCON.3 Полярность тактирования SEP CLKPH SEPCON.2 Фаза тактирования SEP SEPS1 SEPCON. 1 Бит 1 выбора скорости SEP SEPSO SEPCON.0 Бит 0 выбора скорости SEP CLKPOL CLKPH Режим SEP 0 0 SEPMODEO 0 1 SEPMODE1 (только передача) 1 0 SEPMODE2 1 1 SEPMODE3 (только передача) SEPS SEPS2 Скорость SEP 0 0 Fosc/12 0 1 Fosc/24 1 0 Fosc/48 1 1 Fosc/96 Таблица 19 Бит Позиция Функция — SEPSTAT.7 Зарезервирован — SEPSTAT.6 Зарезервирован — SEPSTAT.5 Зарезервирован — SEPSTAT.4 Зарезервирован — SEPSTAT.3 Зарезервирован SEPFWR SEPSTAT.2 Флагошибки записи SEP SEPFRD SEPSTAT. 1 Флаг ошибки чтения SEP SEPIF SEPSTAT.O Флаг прерывания SEP На рис. 10 приведены отличительные особенности режимов рабо- ты SEP — активные уровни сигнала тактирования и фронты, исполь- зуемые для приема или передачи. Как следует из табл. 18, режим работы SEP определяется состоянием битов CLKPOL и CLKPH, расположенных в регистре SEPCON. Для приема или передачи байта пользователь должен установить режим работы порта (биты CLKPOL и CLKPH), скорость передачи 124
(SEPS1 и SEPSO), а также ус- тановить в 1 бит SEPE. Про- цесс передачи начинается сразу после загрузки байта в регистр SEPDATA. Прием SEPMODEO Тактовый импульс SEPMODE1 SEPMODE2 — Тактовый импульс инициируется установкой в импу Г I г 1 Г“I Г I Г I 1 бита SEPREN в случае, кот- зермооез да регистр SEPDATA пуст и Защелкиваии<3 | | | | | нет передачи. После приема --------.---,---------г— „ Л сгппгхт Данные J 07 I D6 I D5 I D4 | ОЗ I 8 битов SEPREN аппаратно 1----1--J---1——I------1— сбрасывается. Завершение Рис 10 приема или передачи при- водит к установке в 1 бита SEPIF. Сброс этого бита возможен только программным путем. Если пользователь совершит попытку записать или прочитать информацию в регистр SEPDATA в момент передачи или приема, устанавливается соответствующий бит ошибки. Флаг SEPFWR ус- танавливается при наличии такой попытки в процессе передачи байта, a SEPFRD — в процессе приема. Прерывания, связанные с установкой этих битов отсутствуют, вследствие чего пользователь должен контролировать их состояние самостоятельно. Естествен - но, сброс этих флагов может быть осуществлен только программ- ным путем. АППАРАТНЫЙ СТОРОЖЕВОЙ ТАЙМЕР Аппаратный сторожевой таймер (HWDT) производит сброс мик- роконтроллера при своем переполнении, таким образом являясь сред- ством борьбы с зависанием системы (зацикливанием программы). На выполнение аналогичной функции может быть настроен и тай- мер-счетчик модуля 4 РСА, но такое его применение ограничивает возможности пользователя, в связи с чем в 8ХС51GB появился само- стоятельный WDT, не требующий использования РСА. Аппаратный сторожевой таймер состоит из 14-битного счетчи- ка, инкрементируемого в каждом машинном цикле, и SFR-регистра WDTRST (0А6Н). Таймер всегда активен и при работающем такто- вом генераторе непрерывно увеличивает содержимое счетчика. Средств остановки таймера нет. Если программа пользователя не за- писывает в WDTRST никакой информации, то через каждые 16384 машинных цикла HWDT формирует сигнал RESET, который сбра- сывает микроконтроллер. При этом счетчик обнуляется. Для предуп- реждения срабатывания HWDT пользовательская программа с про- межутком не реже 16383 машинных циклов должна заносить в 125
регистр WDTRST последовательно два байта — 01ЕН и 0А6Н. От- метим, что в WDTRST можно только записывать информацию, сред- ства чтения его содержимого отсутствуют. Не рекомендуется производить упомянутый перезапуск сторо- жевого таймера при помощи подпрограммы обработки прерывания от одного из таймеров-счетчиков, поскольку прерывания могут об- рабатываться и при зависшей основной программе. Лучшее место для расположения команд обнуления сторожевого таймера — цик- лически выполняемый программный фрагмент, период повторения которого меньше, чем время срабатывания HWDT. Когда 8XC51GB переводится в режим микропотребления, проис- ходит останов внутреннего тактового генератора. HWDT при этом также останавливается. Вывод контроллера из режима микропотреб- ления, как и у всех его предшественников, может быть осуществлен двояко — сбросом или вызовом внешнего прерывания, разрешенно- го перед переводом 8XC51GB в упомянутый режим. Первый способ обнуляет HWDT. Во втором случае при старте тактового генератора содержимое счетчика HWDT продолжит увеличиваться. Но посколь- ку для устойчивого запуска тактового генератора необходимо время порядка двух десятков его периодов, рекомендуется длительность импульса внешнего прерывания, выводящего контроллер из режи- ма микропотребления, делать не меньшей упомянутого времени. Программа обработки прерывания начнет выполняться только пос- ле перехода уровня сигнала внешнего прерывания в единицу, когда частота генерации стабилизируется. Тогда же и начнется инкремен- тирование счетчика HWDT, т. е. пока сигнал прерывания имеет ну- левой уровень, HWDT не работает. В режиме холостого хода тактовый генератор контроллера не от- ключается. Вследствие этого содержимое счетчика HWDT непрерыв- но увеличивается, и для предотвращения пересброса необходимо использовать таймерное прерывание, по которому будет происхо- дить выход из этого режима, обнуление счетчика сторожевого тай- мера и возврат в режим Idle. Ниже приводится фрагмент кода, использующего прерывание от таймера/счетчика Т/СО для периодического сброса HWDT. Правда, как отмечалось выше, использование таймерного прерывания — не луч- шее место для обнуления счетчика, и подобную процедуру лучше встроить в периодически выполняемую часть программы, например, опрос клавиатуры или отображение информации. Поэтому приводи- мый фрагмент желательно рассматривать как демонстрационный при- мер, а не как подпрограмму, которую нужно использовать в ваших программах без каких-либо изменений. 126
; ПРОЦЕДУРА ИНИЦИАЛИЗАЦИИ Т/СО ТС0_INIT:SETB EA ; РАЗРЕШАЕМ ПРЕРЫВАНИЯ SETB ETO ;В ТОМ ЧИСЛЕ ОТ Т/СО MOV TMOD,ЙО1Н ОСТАНАВЛИВАЕМ РЕЖИМ 16-БИТ. ТАЙМЕРА MOV TL0.#07FH ;ЗАГРУЖАЕМ 0С17FH=0FFFH-03Е80Н,ЧТО MOV THO,#OC1H ;ОБЕСПЕЧИТ СБРОС ЧЕРЕЗ 16000(03Е80Н) ТАКТОВ SETB TRO ;ЗАПУСКАЕМ ТАЙМЕР RET ОБРАБОТЧИК ПРЕРЫВАНИЙ ОТ Т/СО ORG OOOBH ;АДРЕС ВЕКТОРА ПРЕРЫВАНИЯ CLR TRO ПРИОСТАНОВИМ ТАЙМЕР MOV WDTC0N,#O1EH ;СБРОСИМ HWDT MOV WDTCON,#OE1H MOV TLO,#07FH ;СНОВА ЗАГРУЖАЕМ OC17FH MOV ТН0.Ж1Н SETB TRO ;ПЕРЕЗАПУСКАЕМ ТАЙМЕР RETI ОБНАРУЖЕНИЕ СБОЯ ТАКТОВОГО ГЕНЕРАТОРА Цепь обнаружения сбоя тактового генератора (OFD) предназ- начена для осуществления сброса микроконтроллера, если часто- та тактового генератора окажется ниже предела, задаваемого тех- ническими условиями. Если после сброса тактовая частота по-прежнему останется за пределом допустимых значений, мик- росхема так и останется в этом состоянии. Отметим, что превы- шение частоты сверх установленных границ не приводит к сбросу контроллера. Цепь OFD всегда включается после сброса или при выходе мик- росхемы из режима микропотребления. Для ее отключения необхо- димо записать последовательно 0Е1Н и 01ЕН в регистр OSCR (0А5Н). Это необходимо сделать, в частности, перед переходом в режим мик- ропотребления, поскольку в нем тактовый генератор отключен. Раз- решить работу цепи заново можно лишь пересбросом или выходом из режима микропотребления по внешнему прерыванию. Состояние OFD может быть определено путем чтения регистра OSCR. При OSCR=OFFH обнаружение сбоев разрешено, при OSCR=0FEH — запрещено. 127
МИКРОКОНТРОЛЛЕРЫ СЕМЕЙСТВА MCS-251 В начале 1995 г. Intel сообщила о выпуске первого микроконт- роллера нового семейства MCS-251 — 8xC251SB. Казалось бы, что это вполне ординарное событие — Intel практически ежемесячно со- общает о выпуске какого-либо нового изделия. Тем более, что речь идет не о процессоре для компьютера, а о микроконтроллере, объем продаж которого на несколько порядков ниже, чем у Pentium’a. Од- нако 8хС251 SB — изделие неординарное. Его появление ознаменова- ло качественный скачок в архитектуре микроконтроллеров всемир- но известного семейства MCS-51. За более чем десятилетнюю историю своего существования мик- роконтроллеры семейства MCS-51 завоевали широчайшую известность и популярность. Архитектурным особенностям этих контроллеров посвящены тысячи книг, изданных во всех развитых странах мира. Сотни разработчиков создали на основе этих контроллеров десятки тысяч различных устройств, выпущенных миллионными тиражами. У этих разработчиков накоплено большое количество программато- ров, эмуляторов, ассемблеров — всего того, что необходимо для раз- работки новых устройств на этих микроконтроллерах. И эта развитая сеть потребителей MCS-51, несомненно, являлась одним из тех дости- жений Intel, которым она по праву могла гордиться. Однако столь широкая известность и популярность MCS-51 имел и оборотную сторону, где не так все гладко и хорошо. Начиная с опре- деленного момента резервы совершенствования этих микроконтрол- леров оказались практически исчерпанными. Тактовая частота была доведена до 20...24 МГц. Внутреннее ОЗУ расширилось до максималь- ного значения, доступного для косвенной адресации с использовани- ем однобайтового регистра. Объем программной памяти достиг 32 кбайт, на кристалле появился массив программируемых счетчиков, затем второй. Число портов ввода/вывода выросло с четырех до шес- ти. Но все эти совершенствования лишь несколько расширили функ- циональные возможности контроллеров, не внеся в архитектуру ни- каких кардинальных новшеств, позволяющих использовать эти изделия для решения более широкого круга задач. К тому же и система команд начала накладывать свои ограниче- ния на возможности совершенствования процессоров. Из 256 возмож- ных кодов операций команд использовалось 255, и не использован- ным оставался только один код — 0А5Н. Расширение системы команд было довольно сложным делом. Новые команды должны использо- вать уже использованные существующими командами коды, но вмес- 128
те с предваряющим их кодом 0А5Н. Последний должен информиро- вать декодер команд о том, что декодируемая команда принадлежит к новому набору. Йапомним, что у создателей процессора Z80, также расширявших систему команд в сравнении с прототипом, был деся- ток неиспользованных основной системой команд кодов, что обеспе- чивало им гораздо более широкие возможности для расширения. В системе команд было заложено ограниченное количество регистров общего назначения (РОН), причем все они были одно- байтными. Двубайтовых и более длинных регистров, а также ко- манд обращения к ним не только не существовало, но и не плани- ровалось при разработке первых контроллеров семейства. Их появление уже превратилось из пожелания в настоятельную не- обходимость, но в рамках существующей архитектуры сделать это было невозможно. Фактически возможности MCS-51 казались уже исчерпанными, и вырисовывалась необходимость прекратить поддержку этого се- мейства и переориентировать потребителей на более мощные мик- роконтроллеры MCS-96. Это казалось тем более правильным, т. к. Intel в тот момент продолжала доминировать на рынке 16-разряд- ных микроконтроллеров, а на рынке 8-разрядных она в тот момент вынуждена была уступить пальму первенства фирме Motorola. В те- чение какого-то промежутка времени нужно было бы еще произво- дить микроконтроллеры семейства MCS-51. Но они бы предназнача- лись не для новых разработок, а для замены контроллеров, вышедших из строя, а также для использования в изделиях, уже разработанных, но не вытесненных из производства новыми модификациями. В те- чение двух-трех лет разработчики систем на MCS-51, повздыхав, ос- воили бы новую архитектуру, приобрели бы новые аппаратные и про- граммные средства и возможно превратились бы в пользователей другого 1ШеГовского семейства. Однако для Intel давно уже стало правилом поддерживать свои разработки до тех пор, пока пользователи безболезненно не завер- шат переход на новую архитектуру. На этом пути она создавала раз- личные вариации — вспомним, например, overdrive-процессоры для персональных компьютеров. Поэтому разработчики микроконтрол- леров (или руководство фирмы — автор не знаком с информацией, относящейся к начальному периоду разработки) поставили задачу создать принципиально новый контроллер, сохранив практически 100%-ю совместимость с MCS-51. И, надо сказать, справились с этой задачей они блестяще. Сама по себе идея, как сделать совершенно новое изделие и при этом сохранить 100%-ю совместимость с ранней разработкой уже 129
не нова для Intel и не раз была ей успешно применена. Вспомним историю появления процессора 80286. На определенном этапе воз- можности процессора 8086 были исчерпаны, и внесение в него но- вых свойств (расширение адресного пространства, кольца защи- ты) оказалось невозможным. Для выхода из создавшегося тупика было предложено следующее решение. Новый микропроцессор имел два режима работы — реальный и защищенный. В первом режиме он функционировал совершенно идентично процессору 8086 и был способен выполнить без перетрансляции любую про- грамму, написанную для своего предшественника. Во втором ре- жиме он приобретал качественно новые свойства. Фактически в одном корпусе мирно сосуществовали два процессора, и переклю- чение от первого ко второму осуществлялось программным пу- тем. По сути дела предстояло сделать то же самое и с семейством MCS-51. В одном из режимов новый микроконтроллер должен ос- таться на 100% совместимым с предшественником, а во втором, освободившись от оков, — обеспечить рост производительности не менее чем на порядок и столь же существенное расширение воз- можностей. И действительно, микроконтроллеры семейства MCS-251 выполне- ны совместимыми по выводам с MCS-51 и могут выполнять програм- мы, написанные и оттранслированные в коды MCS-51 без каких-либо изменений. Однако по своим возможностям микроконтроллеры ново- го семейства превосходят своих предшественников примерно так же, как микропроцессор 80286 превосходил 8086. По оценкам Intel, был обес- печен прирост производительности на порядок в сравнении с MCS-51. Доступное адресное пространство расширено до 16 Мбайт, расширен также и набор внутренних регистров. В систему команд включено боль- шое количество новых инструкций. Все это делает подобное сравнение вполне правомерным. Рассмотрим основные отличия микроконтроллеров MCS-251 от их предшественников. Микроконтроллер 8xC251SB имеет конвейерную архитектуру, благодаря чему большая часть команд выполняется за один машин- ный цикл (два периода тактового генератора). Расширенный набор внутренних регистров и способов адресации позволили существен- но расширить систему команд и сделать ее более гибкой — арифме- тические и логические операции, команды пересылки данных могут теперь оперировать с парами одиночных, двойных и счетверенных регистров. Именно эти причины обеспечили прирост производитель- ности у 8xC251SB на порядок в сравнении с 8хС51, работающим с той же частотой тактового генератора. 130
8xC251SB может функционировать в двух различных режи- мах — обычном (binary mode по терминологии Intel) и расширен- ном (source mode). Переключение из режима в режим осуществля- ется путем программирования аппаратным программатором соответствующего бита в одном из байтов конфигурации (байты конфигурации отсутствуют у MCS-51). Как отмечалось выше, в обычном режиме 8xC251SB может выполнять все программы, на- писанные для MCS-51 без какой-либо перетрансляции. При этом ему доступно большинство из команд расширенного набора, кото- рые отсутствуют в MCS-51. Этот режим необходим для обеспече- ния совместимости снизу вверх семейств MCS-51 и MCS-251. Од- нако в этом режиме производительность 8xC251SB ниже, чем в расширенном режиме, хотя существенно превышает производи- тельность микроконтроллеров семейства MCS-51. Расширенный режим несовместим по кодам с обычным режимом, хотя мнемони- ки команд MCS-51 остались неизменными. Вследствие этого ны- нешние ассемблеры непригодны для написания программ, исполь- зующих 8xC251SB в расширенном режиме. ОРГАНИЗАЦИЯ ПАМЯТИ Адресное пространство, доступное микроконтроллерам семейства MCS-251, расширено до 16 Мбайт, лено на 64-килобайтные регионы. Для 8xC251SB доступны только 4 из возможных 256 регионов — ре- гионы с номерами 00:, 01:, FE: и FF:. Под память данных может ис- пользоваться адресное пространство любого из этих регионов, чего нельзя сказать о памяти программ. Ее нельзя размещать в регионе 00:. Допускается совместное использова- ние адресного пространства регио- нов 01:, FE: и FF: как памятью про- грамм, так и памятью данных. Внутреннее ПЗУ 8хС251 SB занима- ет младшие 16 кбайт адресного пространства региона FF:. На эту область проецируется память про- грамм микроконтроллера при рабо- те в обычном режиме (напомним, что у MCS-51 память программ и Оно несегментировано, но поде- Внешняя память * 48 кБ FR4000H - FRFFFFH FRFFFFH Внутренняя память программ (ПЗУ, ППЗУ) -16 кБ FROOOOH - FR3FFFH FROOOOH Внешняя память - 64 кБ FROOOOH - FRFFFFH FE1FFFFH FROOOOH Регионы 02. FD : зэреаерниршаны FROOOOH Внешняя память - 64 кБ OI.'OOOOH - 0VFFFFH 01:FFFFH OkOOOOH Внешняя память - 63 кБ 00:04204 - OO:FFFFH OOrFFFFH 00:0420H Внутренняя память -1 кБ 00:0020Н - 00:041 FH 00:041 FH Побитно адресуемые - 96 Б 00.0020Н - 00:007FH 00:0020H Регистровый файл - 32 Б 00:00004-00:001 FH 00:0000н 16 - мегабайтное адресное пространство Рис. 11. Адресное пространство микроконтроллера 8хС251 SB 131
память данных имеют непересекающиеся адресные пространства раз- мером до 64 кбайт каждое). 16 - мегабайтное адресное пространство 64 - байтовый регистровый файл Рис. 12. Проецирование ресурсов микроконтроллеров семейства MCS-51 на адресное пространство микроконтроллера 8хС251 SB Внутреннее ОЗУ данных микроконтроллера 8хС2518В имеет объем 1 кбайт и расположено по адресам 00:0020Н—00:041FH. Ниж- ние 32 байта адресного пространства занимают 4 банка регистров общего назначения R0-R7, которые оставлены для совместимости с 8хС51. Неиспользуемая внутренним ОЗУ часть региона 00: может быть отдана под внешнее ОЗУ, Intel рекомендует там размещать стек для тех приложений, которые разрабатывались с использованием языка высокого уровня, активно использующего стек. Отметим, что любая ячейка региона 00: может быть адресована как с использова- нием прямой, так и косвенной адресации. К ячейкам других регио- нов можно обращаться только с использованием косвенной адре- сации. На верхние 8 кбайт региона 00: можно спроецировать старшие 8 кбайт внутренней программной памяти (из адресов FF:2000H...FF:3FFFH) и прямо к Ней адресоваться, что удобно при использовании таблиц преобразования. Это проецирование осуще- ствляется путем установки в 1 соответствующего бита в одном из конфигурационных байтов. Регионы 01: и FE: рекомендуется использовать в качестве внешней памяти программ и данных. Эту часть адресного пространства можно использовать как для раздельного использования данными и програм- мами, так и для совместного использования. В первом случае при об- ращении к памяти данных используются управляющие сигналы RD и WR , а при обращении к памяти программ —• сигнал PSEN. Это 132
Регистровый файл 56 57 58 53 60 1°’ 62 63 Регистры с номерами 32...55 зарезервированы 24 25 26 27 28 29 30 31 16 17 18 19 20 21 22 23 8 9 1G 11 12 13 14 15 БанкО...3, per. 0...7 Двухбайтовые регистры WR24 WR26 WR28 WR30 WR16 WP.18 WR20 WR22 WR8 WR10 WR12 WR14 WR0 WR2 WR4 WR6 Байтовые регистры R10 - регистр В R11 - аккумулятор R8 R9 R10 R11 R12 R13 R14 R15 R0 R1 R2 R3 R4 R5 R6 R7 Четырехбайтовые регистры DR56 = DPX DR60 = SPX DR24 DR28 DR16 DR20 DR8 DR12 DRO DR4 Рис. 13. Регистровый файл микроконтроллеров 8xC251SB аналогично тому, как используют внешнюю память программ и дан- ных микроконтроллеры семейства MCS-51. Во втором случае сигнал RD программируется на использование в качестве 17-го адресного вывода, что обеспечивает адресацию 128-килобайтного непрерывного адресного пространства. При этом сигнал PSEN используется в каче- стве строба обращения к ОЗУ, а сигнал WR — в качестве сигнала за- писи. Объем в 128 кбайт — предельный для внешней памяти 8xC251SB, т. к. в целях совместимости по выводам с семейством MCS-51 количе- ство адресных выводов у 8xC251SB оставлено_равным 16 (если не учи- тывать упомянутого использования сигнала RD в качестве семнадца- того адресного вывода). Микроконтроллеры семейства MCS-51 при обращении к внеш- ней памяти используют мультиплексируемую шину адреса/дан- ных — адрес выводится по линиям портов 0 и 2, младшие 8 бит адреса запоминаются по спаду сигнала ALE в регистре-защелке, После чего происходит обмен данными через выводы порта 0. С Целью ускорения обмена информацией между микроконтролле- ром и внешней памятью в 8xC251SB предусмотрен так называе- мый режим страничного обмена. В этом режиме в регистре-за- щелке запоминаются не младшие 8 адресных сигналов, выводимых Через порт 0, а старшие, выводимые через порт 2. Обмен данными Производится при этом через выводы порта 2. Вывод информа- ции в регистр-защелку производится только в том случае, если 133
содержимое старшего байта адреса изменилось, т.е. произошло обращение к другой странице ОЗУ, в остальное время 8xC251SB не тратит время на демультиплексирование и считывает данные из ОЗУ за 1 такт. Таким образом, преимущественное размещение данных в пределах одной страницы и использование страничного режима может существенно повысить производительность систе- мы, работающей с внешним ОЗУ. И последнее, что необходимо отметить при рассмотрении органи- зации памяти 8xC251SB — его возможность работать как с быстрой, так и с медленной внешней памятью. При работе на высоких такто^ вых частотах длительность импульсов RD, WR и ALE может оказать- ся недостаточной для уверенного функционирования модуля внеш- него ОЗУ. В этом случае необходимо удлинить эти импульсы путем добавления дополнительного такта ожидания в циклы обращения к внешней памяти. Достигается это путем установки в единицы соот- ветствующих бит в одном из конфигурационных байтов. ОРГАНИЗАЦИЯ РЕГИСТРОВОГО ПРОСТРАНСТВА В 8xC251SB имеются все те же регистры специальных функций (SFR), какие имелись в микроконтроллере 8xC51FA. Однако простран- ство SFR у 8xC251SB физически отделено от пространства внутрен- него ОЗУ и не входит в его состав. Правда, при работе в обычном режиме оно проецируется на внутреннее ОЗУ в адреса 00:0080Н - OOrOOFFH, благодаря чему при обращении в этом режиме к ячейкам из этого диапазона адресов мы попадаем в пространство SFR, как у микроконтроллеров семейства MCS-51. В расширенном режиме эти пространства разделены и адресуются по-разному. В отличие от MCS-51, все регистры пространства SFR побитно ад- ресуемы. Кроме того, в нем появились новые регистры: SPX (расши- ренный указатель стека), DPX (расширенный указатель данных), PSW1 (второе слово состояния программ). Необходимость в расширенных указателях очевидна — регистр SP обеспечивал стек емкостью всего 255 байт, а указатель DPTR адресовал всщо 64 кбайта адресного про- странства. Регистр SPX — двухбайтовый, что дает возможность де- лать стек глубиной вплоть до 64 кбайт. Регистр DPX (также как и программный счетчик PC у 8xC251SB) — трехбайтовые, что необходимо для адресации ко всему 16-мегабайт- ному адресному пространству нового микроконтроллера. По сбросу в DPX заносится значение 010000Н (в PC- 0FF0000H). Как отмечалось выше, все адресное пространство 8xC251SB доступно при использова- нии косвенной адресации, поэтому при помощи DPX мы можем обес- печить доступ к ячейкам любых регионов. Отметим, что при исполь- 134
зовании DPTR в расширенном режиме мы можем работать только с ячейками региона 0J:. При работе в обычном режиме оба регистра ра- ботают идентично. Следующее существенное отличие семейства MCS-251 — наличие так называемого внутреннего регистрового файла. Восьми регистров общего назначения (РОН), имевшихся в MCS-51, оказывается явно недостаточно, даже если принять во внимание наличие четырех бан- ков этих регистров. Поэтому Intel разместила на кристалле дополни- тельный блок из 64 ячеек ОЗУ, физически отличный от общего внут- реннего ОЗУ и от SFR. В 8xC251SB задействовано 40 из этих ячеек. Младшие 8 ячеек проецируются на регистры общего назначения R0-R7 выбранного банка РОН. Это оставлено для лучшей программ- ной совместимости MCS -251 с М CS- 51. Следующие 24 регистра, име- ющие обозначение R8-R31, могут использоваться как однобайтовые (с R8 до R15 включительно), двухбайтовые (WR8, WR10 и так до WR30) и четырехбайтовые (DR8, DR12,..., DR28). Позиции с 32-й по 55-ю регистрового файла в 8xC251SB не используются. Еще 8 регис- тров (с R56 по R63) организованы в два четырехбайтных регистра DR56 и DR60, в которых размещаются DPX и SPX соответственно. Отметим, что R0-R7 также могут быть организованы в четыре двух- байтных или в два четырехбайтных регистра. Кроме того, аккумуля- тор проецируется на RI 1, а регистр В — на R10. Однобайтовые, двухбайтовые и четырехбайтовые регистры ис- пользуются в качестве операндов в командах перемещения, арифме- тических и логических операциях. В частности, они могут использо- ваться в операциях с косвенной адресацией для адресации ко всему допустимому адресному пространству наряду с DPTR и DPX или в качестве операнда-источника и операнда-приемника в командах MUL и DIV (эти команды теперь оперируют не только с регистрами А и В, но и с любыми парами однобайтовых и двухбайтовых регистров). Поскольку микроконтроллеры семейства MCS-251 имеют таймер- счетчик 2, программируемую матрицу счетчиков, расширенную схе- му приоритетов прерываний и еще ряд аппаратных особенностей, характерных для микроконтроллеров 8xC51Fx и 8хС32/52/54/58, в их пространстве SFR присутствуют все регистры, обеспечивающие фун- кционирование этих аппаратных средств — T2CON, T2MOD, CH, CL, CMOD, IPH и т. д. СИСТЕМА КОМАНД Код операции в системе команд микроконтроллеров семейства MCS-51 представлен одним байтом, что ограничивает допустимое ко- личество команд числом 256. У MCS-51 задействовано 255 значений ко- 't 35
дов операции из этих 256, поэтому для расширения набора команд есть только один вариант — использовать оставшийся код (0А5Н) для пре- фиксирования вновь вводимых команд. Когда 8xC251SB функциони- рует в обычном режиме, все коды операций, за исключением 0А5Н, он выполняет также, как и любой микроконтроллер семейства MCS-51. Однако в отличие от последних, 8xC251SB в этом режиме доступны так- же команды его расширенного набора. Если при извлечении из ПЗУ кода операции 8хС251 SB встречает код 0А5Н, он извлекает следующий код и декодирует его с использованием микропрограммного устройства рас- ширенного набора команд. Например, код 08Н в обычном режиме бу- дет воспринят как команда INC R0, а комбинация 0А508Н — как коман- да расширенного набора JSLE re I. При работе в расширенном режиме есть существенные отличия в кодах операций в сравнении с обычным режимом. Кодом 0А5Н пре- фиксируются команды MCS-51, использующие регистры общего на- значения R0-R7. Остальные команды MCS-51 и команды расширен- ного набора MCS-251 используют однобайтовые коды операций. Это сделано для повышения производительности 8xC251SB в расширен- ном режиме — его новые более мощные и гибкие команды требуют меньше времени на декодирование, чем старые команды MCS-51. Од- нако для использования этого режима нужны новые трансляторы. Табл. 20 демонстрирует различие в формировании кодов операций для обычного и расширенного режима. Таблица 20 Команда Код в обычном режиме Код в расширенном режиме INCA 04Н 04Н INC@R1 07Н 0А507Н INC R0 08Н 0А508Н JSLE rel 0А508Н 08Н ADD A,direct 25Н 25Н ADD A, RO 28Н 0А528Н JLE rel 0А528Н 28Н В табл. 21 приведен полный набор команд микроконтроллера 8xC251SB. Помимо мнемоник команд в ней приведено число так- тов, необходимых микроконтроллерам 8xC51Fx и 8xC251SB для вы- полнения этих команд (для 8xC251SB количество тактов соответ- ствует чтению команд из внутреннего ПЗУ и работе в расширенном режиме). 136
Таблица 21 Команда Операнды 8xC51xx 8xC251SB Арифметические команды: ADD A,Rn 6 2 ADD A,direct 6 1 add ,@Ri 6 2 ADD A,#data8 6 1 ADD Rm,Rm — 1 ADD WRj.WRj — 2 ADD Rm,#data8 — 2 ADD WRj,#data16 — 3 ADD Rm,dir — 2 ADD Rj.dir — 3 ADD Rm.dirx — 2 ADD WRj.dirx — 3 ADD Rm,@WRj — 2 ADD Rm,@DRk — 3 ADDC A,Rn 6 2 ADDC A,direct 6 1 ADDC A,@Ri 6 2 ADDC A,#data8 6 1 SUBB A,Rn 6 2 SUBB A,dire ct 6 1 SUBB A,@Ri 6 2 SUBB A,#data8 6 1 SUB Rm, Rm — 1 SUB WRj.WRj -2 SUB Rm,#data8 — 2 SUB WRj,#data16 — 3 SUB Rm,dir — 2 SUB WRj.dir — 3 SUB Rm.dirx — 2 SUB WRj.dirx — 3 SUB Rm,@WRj — 2 SUB Rm,@DRk —3 INC A 6 1 INC Rn 6 2 INC direct 6 2 INC @Ri 6 3 INC Rm,#short8 — 1 INC WRj,#short8 -1 INC DPTR 12 1 DEC A 6 1 DEC Rn 6 2 DEC direct 6 2 DEC @Ri 6 3 DEC Rm,#short8 — 1 DEC WRj,#short8 -1 MUL AB 24 5 MUL Rm, Rm — 5 137
Продолжение таблицы 21 Команда Операнды 8xC51xx 8xC251SB MUL WRj.WRj — 11 DIV АВ 24 10 DIV Rm,Rm — 10 DIV WRj.WRj — 20 DA А 6 1 Логические команды и сдвиги: ANL A.Rn 6 2 ANL A, direct 6 1 ANL A,@Ri 6 2 ANL A,#data8 6 1 ANL direct, A 6 2 ANL direct, #data8 12 2 ANL Rm, Rm — 1 ANL WRj.WRj — 2 ANL Rm,#data8 — 2 ANL WRj,#data16 — 3 ANL Rm,dir — 2 ANL WRj.dir — 3 ANL Rm.dirx — 2 ANL WRj.dirx — 3 ANL Rm,@WRj — 2 ANL Rm,(a>DRk — 3 ORL A,Rn 6 2 ORL A,direct 6 1 ORL A,@Ri 6 2 ORL A,#data8 6 1 ORL direct,A 6 2 ORL direct,#data8 12 2 ORL Rm,Rm — 1 ORL WRj.WRj — 2 ORL Rm,#data8 — 2 ORL WRj,#data16 — 3 ORL Rm,dir — 2 ORL WRj.dir — 3 ORL Rm.dirx — 2 ORL WRj.dirx — 3 ORL Rm,(a>WRj — 2 ORL Rm,@DRk — 3 XRL A,Rn 6 2 XRL A,direct 6 1 XRL A,@Ri 6 2 XRL A,#data8 6 1 XRL direct,A 6 2 XRL direct, #data8 12 2 XRL Rm, Rm — 1 XRL WRj.WRj — 2 XRL Rm,#data8 — 2 XRL WRj,#data16 — 3 138
Продолжение таблицы 21 команда Операнды 8xC51xx 8xC251SB 'CLR A 6 1 GPL A 6 1 ' RL A 6 1 RL Rm — 1 "RL WRj — 1 ^RLC A 6 1 'RLC Rm — 1 rRLC WRj — 1 r-RR A 6 1 RR Rm — 1 RR WRj — 1 Г RRC A 6 1 RRC Rm — 1 RRC WRj — 1 Г Sl.L Rm — 1 SLL WRj — 1 SRA Rm — 1 SRA WRj — 1 SRL Rm — 1 SRL WRj — 1 Команды перемещения: MOV A.Rn 6 2 MOV A,direct 6 1 MOV A,@Ri 6 2 MOV A,#data8 6 1 MOV Rn,A 6 2 MOV Rn,direct 12 2 MOV Rn,#data8 6 2 MOV direct,A 6 2 MOV direct,direct 12 3 MOV direct, #data8 6 2 MOV direct,Rn 12 3 MOV direct,@Ri 12 3 MOV @Ri,A 6 3 MOV @Ri,direct 12 3 MOV @Ri,#data8 6 3 MOV DPTR,#data16 12 2 MOV Rm, Rm — 1 MOV WRj.WRj — 1 MOV Rm,#data8 — 2 MOV WRj,#data16 — 3 MOV Rm,dir — 2 MOV WRj.dir — 3 MOV Rm.dirx — 2 MOV WRj.dirx — 3 MOV Rm,@WRj — 2 MOV Rm,@DRk — 3 MOV dir,Rm — 2 139
Продолжение таблицы 2 Команда Операнды 8xC51xx 8xC251SB CLR A 6 1 MOV WRj,dir — 3 MOV Rm,dirx — 2 MOV WRj,dirx — 3 MOV Rm,©WRj — 2 MOV Rm,@DRk — 3 MOV dir,Rm — 2 MOV dir,WRj — 3 MOV dirx,Rm — 2 MOV dirx,WRj — 3 MOV @ WRj,Rm — 3 MOV @DRk,Rm — 4 MOV Rm,@WRj+dis — 5 MOV WRj,@WRj+dis — 6 MOV Rm,@DRk+dis — 6 MOV WRj,@DRk+dis — 7 MOV @WRj+dis,Rm — 6 MOV @WRj+dis,WRj — 8 MOV @DRk+dis,Rm — 7 MOV @DRk+dis,WRj — 9 MOVC A,@A+DPTR 12 5 MOVC A,@A+PC 12 6 MOVX A,@Ri 12 4 MOVX A,@DPTR 12 4 MOVX @Ri,A 12 5 MOVX @DPTR,A 12 5 PUSH #data8 — 3 PUSH #data16 — 5 PUSH direct B/W 12 3 PUSH dirx B/W — 3 PUSH Rm — 3 PUSH WRj — 5 POP direct 12 3 POP dirx — 3 POP Rm — 2 POP WRj — 5 XCH A,Rn 6 3 XCH A,direct 6 3 XCH A,@Ri 6 4 Команды манипуляции с битами: CLR C 6 1 CLR bit 6 2 CLR bit dir — 3 CLR bit dirx — 4 SETB C 6 1 SETB bit 6 2 SETB bit_dir — 3 SETB bit dirx — 4 140
Продолжение таблицы 21 " Команда Операнды 8xC51xx 8XC251SB "CPL С 6 1 CPL bit — 2 CPL bit dir — 3 CPL bit dirx — 4 ANL C.bit 12 1 ANL C,bit dir — 2 ANL C.bit dirx — 3 ANL/ C,/bit 12 1 ANL/ C,/bit dir — 2 ANL/ C,/bit dirx — 3 ORL C.bit 12 4 ORL C,bit dir — 2 ORL C.bit dirx — 3 ORL/ C,/bit 12 1 ORL/ C,/bit dir — 2 ORL/ C,/bit dirx — 3 MOV C.bit 6 1 MOV C.bit dir — 2 MOV C.bit dirx — 3 MOV bit.C 12 2 MOV bit dir.C — 3 MOV bit dirx.C — 4 JC rel 12 1 JNC rel 12 1 JB bit,ref 12 2 JB bit,relx — 3 JNB bit,rel 12 2 JNB bit, relx — 3 JBC bit,rel 12 2 JBC bit,relx — 3 Команды переходов, возвратов и вызовов подпрограмм: ACALL addrl 1 12 6 ECALL addr24 — 12 ECALL @DRk — 12 LCALL addrl 6 12 6 ERET — 8 RET 12 6 RETI 12 8 AJMP addrl 1 12 3 EJMP addr24 — 4 EJMP @DRk — 5 LJMP addrl 6 12 4 SJMP rel 12 3 JMP A,@DPTR 12 4 JZ rel 12 2 JNZ rel 12 2 CJNE A,direct,rel 12 3 CJNE A,#data,rel 12 2 141
Окончание таблицы 21 Команда Операнды 8xC51xx 8xC251SB CJNE Rn,#data,rel 12 3 CJNE @Ri,#data,rel 12 3 DJNZ Rn.rel 12 3 DJNZ direct,rel 12 3 NOP 6 1 ПЕРИФЕРИЙНЫЕ УСТРОЙСТВА В состав 8xC251SB входят три таймера-счетчика, последователь- ный порт и массив программируемых счетчиков, включающий в себя пять модулей сравнения-защелки. Эти периферийные устройства идентичны имеющимся в 8xC51Fx. Кроме того, у 8xC251SB имеется аппаратный сторожевой таймер (WatchDog Timer) в дополнение к программному, реализуемому с помощью четвертого модуля масси- ва программируемых счетчиков. Аппаратный сторожевой таймер снабжен 14-разрядным счетчиком, инкрементируемым через каждые 6 машинных циклов. При переполнении его происходит внутренний сброс, позволяющий предотвратить длительное зависание системы при воздействии сильных помех или сбоев питающего напряжения. Порты ввода/вывода РО-РЗ по выводам и функциям также иден- тичны имеющимся у 8xC51Fx, за исключением Р3.7 — как описано выше, этот вывод может быть запрограммирован не только для ис- пользования в качестве сигнала RD, но й как адресный вывод А16. Система прерываний 8xC251SB в основном также идентична си- стеме прерываний 8xC51Fx. Различие состоит в том, что прерывание от массива программируемых счетчиков имеет внутри уровня самый низкий (7-й) приоритет, а прерывания от последовательного порта и от таймера 2 — соответственно 5-й и 6-й. В состав схемы прерыва- ния добавлено немаскируемое программное прерывание TRAP, име- ющее наивысший приоритет. В табл. 22 приведена основная инфор- мация по системе прерываний 8xC251SB. Таблица 22 Источник Флаг Аппар. сброс Адр. вектора Приоритет INTO IE0 нет(уровень) да(срез) FF:0003H 1 (высш.) Таймер 0 TFO да FF:OOOBH 2 INTI IE1 нет(уровень) да(срез) FF:0013H 3 Таймер 1 TF1 Да FF:OO1BH 4 Поел, порт RI.TI нет FF:0023H 5 Таймер 2 TF2, EXF2 нет FF.-002BH 6 РСА CF, CCFn п=0-4 нет FF:0033H 7 (низш.) TRAP — — FF:007BH —
Приложение 4 Х51-СОВМЕСТИМЫЕ МИКРОКОНТРОЛЛЕРЫ ФИРМЫ ATMEL Пожалуй, наиболее заметным событием в конце 90-х годов на рынке микроконтроллеров, совместимых с MCS-51, является успешное его завоевание фирмой Atmel. Благодаря фантастически низкой стоимо- сти ее изделий, Atmel к 1997 г. вошла в тройку основных поставщи- ков контроллеров упомянутого семейства. В конце 1997 г. 87С51 от Intel стоил около 20$, в то время как его Atmel-аналог АТ89С51 мож- но было приобрести всего за 5...6$. За счет чего же Atmel удалось так резко удешевить свои изделия? Ответ становится очевиден при первом же взгляде на ее контроллеры. В них нет кварцевого, окошка, через которое виден кристалл микро- схемы. В то время как прототип имел ПЗУ, стираемое УФ-лучами, что требовало дорогостоящего совмещения различных микроэлектронных технологий и отнюдь не дешевого корпуса с прозрачным для ультра- фиолета стеклом из кварца, АТ89С51 (равно как и другие контролле- ры Atmel) снабжен электрически перепрограммируемым ПЗУ. Техно- логические достижения фирмы позволили формировать и контроллер, и ПЗУ в одном цикле. При этом количество циклов программирова- ния заметно выше, чем у УФ-стираемых контроллеров. Да и само сти- рание осуществляется программатором автоматически, что исключа- ет возможность повреждения ПЗУ излишней дозой излучения. Отсутствие УФ-прозрачного окна в корпусе заметно снижает и его сто- имость. Благодаря всему этому новые изделия пришлись по душе по- требителю. Правда, необходимо отметить, что алгоритмы записи/стирания электрически перепрограммируемых ПЗУ несколько сложнее, чем у 143
их предшественников, в силу чего не все программаторы позволяют работать с ними. Однако это ограничение для многих не помеха — программаторы, изготовленные в 1996 г. и позже, в основной своей массе справляются с контроллерами Atmel. Ну а те, кто не имеет ни доступа к ним, ни средств для его приобретения, могут попытаться создать его самостоятельно, как это они не раз делали в прошлом, или модифицировать имеющийся под новую задачу. К тому же, если вы делаете партию своих изделий в количестве, превышающем де- сять-двенадцать штук, то выигрыш в цене за счет использования АТ89хх компенсирует приобретение нового программатора. Прини- мая во внимание все вышесказанное, пользователь начали перехо- дить на изделия Atmel. Семейство х51-совместимых контроллеров от Atmel уже насчи- тывает несколько десятков моделей. Помимо уже упоминавшего- ся АТ89С51, к ним относятся его малопотребляющий аналог AT89LV51, также характеризующийся 4-кбайтным ПЗУ, и их 8- кбайтные аналоги АТ89С52 и AT89LV52. В состав семейства вхо- дят не имеющие аналогов АТ89С1051 и АТ89С2051, снабженные 1- и 2-кбайтным ПЗУ соответственно и размещенные в 20-вывод- ном (!) корпусе. Последнее удалось достичь за счет отказа от вы- вода наружу линий портов РО и Р2, часто не используемых потре- бителями. Кроме того, часть выводов порта Р1 этих контроллеров имеет повышенную нагрузочную способность и может напрямую управлять светодиодами. АТ89С55 и AT89LV55 снабжено ПЗУ не совсем стандартного объе- ма — 20 кбайт. Также нестандартный объем имеет AT89S53 —- 12 кбайт. Кроме того, в нем появился еще один последовательный порт и дополнительные регистры SFR, в том числе чрезвычайно удоб- ный DPTR1. И, наконец, AT89S8252 и AT89LS8252 имеют на крис- талле 2 кбайта энергонезависимого ОЗУ, доступного по командам MOVX. Все контроллеры выпускаются для работы в обычном и расши- ренном температурных диапазонах, как в DIP-, так и в PLCC- и TQFP- корпусах, некоторые модификации работоспособны вплоть до час- тоты 33 МГц и имеют сторожевой таймер. АТ89С51/52 И AT89LV51/52 Это стандартные микроконтроллеры, практически полностью аналогичные классическим 8хС51/52 и 8xL51/52. Основные их харак- теристики приведены в табл. 1, цоколевка — на рис. 1. Ниже приводятся отличия микроконтроллеров фирмы Atmel от их Intel-прототипов. 145 144
Продолжение таблицы 1 Тип ПЗУ, кбайт ОЗУ, байт Таймеры- счетчики Преры* вания Порты в/в Тактовая частота, МГц Рабочее напряжение Температурный диапазон, °C Корпус АТ89С51-20JC 4 128 2*16 бит 6 1S, 4Р 20 4...6 0...70 44J АТ89С51-20РС 4 128 2*16 бит 6 1S, 4Р 20 4...6 0...70 40Р6 АТ89С51-20QC 4 128 2*16 бит 6 1S, 4Р 20 4...6 0...70 44Q AT89C51-20AI 4 128 2*16 бит 6 1S, 4Р 20 4...6 -40...+85 44А АТ89С51-20JI 4 128 2*16 бит 6 1S, 4Р 20 4...6 -40...+85 44J AT89C51-20PI 4 128 2*16 бит 6 1S, 4Р 20 4...6 -40...+85 40Р6 АТ89С51-20Q1 4 128 2*16 бит 6 1S, 4Р 20 4...6 -40...+85 44Q АТ89С51-24АС 4 128 2*16 бит 6 1S, 4Р 24 4...6 0...70 44А АТ89С51-24JC 4 128 2*16 бит 6 1S, 4Р 24 4...6 0...70 44J АТ89С51-24РС 4 128 2*16 бит 6 1S, 4Р 24 4...6 0...70 40Р6 AT89C51-24QC 4 128 2*16 бит 6 1S, 4Р 24 4...6 0...70 44Q AT89C51-24AI 4 128 2*16 бит 6 1S, 4Р 24 4...6 -40...+85 44А AT89C51-24JI 4 128 2*16 бит 6 1S, 4Р 24 4...6 -40...+85 44J AT89C51-24PI 4 128 2*16 бит 6 1S, 4Р 24 4...6 -40...+85 40Р6 АТ89С51-24Q1 4 128 2*16 бит 6 1S, 4Р 24 4...6 -40...+85 44Q AT89LV51-12AC 4 128 2*16 бит 6 1S, 4Р 12 2,7...6 0...70 44А AT89LV51-12JC 4 128 2*16 бит 6 1S, 4Р 12 2,7...6 0...70 44J AT89LV51-12PC 4 128 2*16 бит 6 1S, 4Р 12 2,7...6 0...70 40Р6 AT89LV51-12AI 4 128 2*16 бит 6 1S, 4Р 12 2,7...6 0...70 44А AT89LV51-12JI 4 128 2*16 бит 6 1S, 4Р 12 2,7...6 -40...+85 44J AT89LV51-12PI 4 128 2*16 бит 6 1S, 4Р 12 2,7...6 0...70 40Р6 АТ89С52-12АС 8 256 3*16 бит 8 1S, 4Р 12 4...6 0...70 44А AT89C52-12JC 8 256 3*16 бит 8 i s, 4Р 12 4...6 -40..+85 44J АТ89С52-12РС 8 256 3*16 бит 8 1S, 4Р 12 4...6 -40...+85 40Р6 AT89C52-12QC 8 256 3*16 бит 8 i S, 4Р 12 4...6 -40...+85 44Q АТ89С52-12AI 8 256 3*16 бит 8 1S, 4Р 12 4...6 -40...+85 44А АТ89С52-12JI 8 256 3*16 бит 8 1S, 4Р 12 4...6 -40...+85 44J AT89C52-12PI 8 256 3*16 бит 8 1S, 4Р 12 4...6 -40...+85 40Р6 АТ89С52-12QI 8 256 3*16 бит 8 1S, 4Р 12 4...6 -40...+85 44Q Продолжение таблицы 1 Тип ПЗУ, кбайт ОЗУ, байт Таймеры- счетчики Преры- вания Порты в/в Тактовая частота, МГц Рабочее напряжение, В Температурный диапазон, °C Корпус AT89C52-12JA 8 256 3*16 бит 8 1S, 4Р 12 4...6 -40..+125 44J АТ89С52-12РА 8 256 3*16 бит 8 1S, 4Р 12 4...6 -40...+125 40Р6 АТ89С52-12QA 8 256 3*16 бит 8 1S, 4Р 12 4...6 -40..+125 44Q AT89C52-12DM 8 256 3*16 бит 8 1S, 4Р 12 4,5...5,5 -55..+125 40D6 AT89C52-12LM 8 256 3*16 бит 8 1S, 4Р 12 4,5...5,5 -55...+125 44L AT89C52-12DM/883 8 256 3*16 бит 8 1S, 4Р 12 4,5...5,5 -55...+125 40D6 АТ89С52-12LM/883 8 256 3*16 бит 8 1S, 4Р 12 4,5...5,5 -55...+125 44L АТ89С52-16АС 8 256 3*16 бит 8 1S, 4Р 16 4...6 0...70 44А AT89C52-16JC 8 256 3*16 бит 8 1S, 4Р 16 4...6 0...70 44J АТ89С52-16РС 8 256 3*16 бит 8 1S, 4Р 16 4...6 0...70 40Р6 AT89C52-16QC 8 256 3*16 бит 8 1S, 4Р 16 4...6 0...70 44Q AT89C52-16AI 8 256 3*16 бит 8 1S, 4Р 16 4...6 -40...+85 44А AT89C52-16JI 8 256 3*16 бит 8 1S, 4Р 16 4...6 -40...+85 44J AT89C52-16PI 8 256 3*16 бит 8 1S, 4Р 16 4...6 -40..+85 40 Р6 AT89C52-16QI 8 256 3*16 бит 8 1S, 4Р 16 4...6 -40...+85 44Q АТ89С52-16АА 8 256 3*16 бит 8 1S, 4Р 16 4...6 -40..+125 44А AT89C52-16JA 8 256 3*16 бит 8 1S, 4Р 16 4...6 -40..+125 44J АТ89С52-16РА 8 256 3*16 бит 8 1S, 4Р 16 4...6 —40...+125 40Р6 AT89C52-16QA 8 256 3*16 бит 8 1S, 4Р 16 4...6 -40...+125 44Q АТ89С52-20АС 8 256 3*16 бит 8 1S, 4Р 20 4...6 0...70 44А AT89C52-20JC 8 256 3*16 бит 8 1S, 4Р 20 4...6 0...70 44J АТ89С52-20РС 8 256 3*16 бит 8 1S, 4Р 20 4...6 0...70 40 Р6 AT89C52-20QC 8 256 3*16 бит 8 1S, 4Р 20 4...6 0...70 44Q AT89C52-20AI 8 256 3*16 бит 8 1S, 4Р 20 4...6 -40...+85 44А AT89C52-20JI 8 256 3*16 бит 8 1S, 4Р 20 4...6 -40..+85 44J AT89C52-20PI 8 256 3*16 бит 8 1S, 4Р 20 4...6 -40...+85 40Р6 AT89C52-20QI 8 256 3*16 бит 8 1S, 4Р 20 4...6 -40...+85 44Q АТ89С52-24АС 8 256 3*16 бит 8 1S, 4Р 24 4...6 0...70 44А AT89C52-24JC 8 256 3*16 бит 8 1S, 4Р 24 4...6 0...70 44J AT89C52-24QC 8 256 3*16 бит 8 1S, 4Р 24 4...6 0...70 40Р6
Окончание таблицы 1 Корпус 0 < 44J I 40Р6 1 0 !44А I 5 '40Р6 I < 1 W; 1 9d0r Л Z о. £ о. ф с о z” о СО ГО с го о о 10 СО + ..+85 I 10 со + ...+85 I О О О I S8+” | S8+” 10 СО + 2 г[ О О о со Ь- !-•« О о О ф >s о ч 1 О О О т т ф Ф т о 10 пряжение, В со со со со со СО СО СО со со со <13 го Г4-. Г4-. 0- Z Tj" см см' см ё л 0 S го астата, МГц I ’Т см см см см см см р“ СМ СМ CN CN см № №“ № № Т“ № S3 я 3 0_ 0- 0_ 0_ CL 0_ 0. 0_ 0_ п 0- 5. ’’Г ’’Г ’’Г "Г ’’Г 0 СО (f) СО СО СО СО (f) СО со со со и» т №* V" V" 3 а. 8. с кинва со СО со со со со со со со со со 3 а S s н н I ±и £ ит | § ю ю Ю ю ю ю ю ю ю СР ю 2 со со со со со со со со со со со Л ф т— 4“' Т“ J-— о с*) со со со СО со со со со 0) со > н ’S со (О СО со СО со со со со (О со го ю 10 10 ю 10 10 in 10 10 10 ш V со СМ см CN см см см см см см см см пзу. I кбайт СО со СО со со со со со со со со С S 24QC 1 IVVZ 24JI | 1 law 24QI 1 I ovzt- о см о 0_ см < см см CL см 1 — 1 1 1 1 см см см (М (М см [АТ89С52 IAT89C52 |АТ89С52 IAT89C52 (АТ89С52 IAT89LV5 [AT89LV5 IAT89LV5 10 СП со 1- < ю 3j CD со 1- < IAT89LV5 ГО 2 го 2 2 js се 2 со *£ о 2 ° Р 2 и е 3 Я о 3 о. о О. Q- о £ й. и- « о о ® о I— о----1 >s 1S 148
V. ГО О (ADC) (ADI) !(AD2) РО 3 (AD3) i (AD4) LADd) i(AD5) ;ло>7- ,';;р_____ A’. A,‘PROG P EN -"2.1 '4)5) i(A14i i (A13) ₽24'A)?> (Al)} P _(A10) (A3) F J (A3) Рис. 1. Цоколевка микроконтроллеров AT89C51/52 и AT89LV51/52 В первую очередь необходимо отметить более высокую нагру- зочную способность их выводов, позволяющую соединять с каж- дым из них до 6 стандартных TTL-входов. Максимальный вход- ной ток может достигать 10 мА, при этом суммарный ток через выводы порта 0 не должен превышать 26 мА, а через выводы ос- тальных портов— 15 мА. Максимальный суммарный ток через все выводы не должен быть более 71 мА. Напряжения на входах относительно общего провода должны лежать в диапазоне от -1 до +7 В, максимальное рабочее напряжение — 6,6 В. В режиме Power Down допустимо снижение напряжения до 2 В. Потребле- ние АТ89С51/52 на частоте 12 МГц при напряжении питания 6 В не превышает 20 мА, в режиме Idle — 5 мА, в режиме Power Down — 100 мкА при напряжении 6 В и 40 мкА при 3 В. Зависи- мость потребляемого тока от напряжения питания и частоты для AT89LV51/52 приведена на рис. 2. В микроконтроллерах 8хС51 сигнал ALE генерируется с постоян- ной частотой, в 6 раз меньшей частоты осциллятора, исчезая лишь при обращении к внешней памяти данных. В АТ89С51/52 возможно программно запретить выдачу этого сигнала, установив в единицу бит 0 SFR-регистра, находящегося по адресу 8Е. При этом сигнал ALE будет появляться лишь при выполнении команд MOVX, MOVC (либо при работе с внешней памятью программ, если она имеется в вашей сис- теме). В остальных случаях на выводе будет присутствовать напря- жение высокого уровня. На AT89LV51/52 возможность подавления вывода сигнала ALE не распространяется. Также следует отметить отсутствие у рассматриваемых контрол- леров фирмы Atmel регистра IPH, и как следствие этого, наличие всего лишь двухприоритетной, а не четырехприоритетной системы пре- рываний. Однако как показывает практика, для подавляющего боль- шинства пользователей это не является большой потерей. 149
Е.МГц Ice, мкА б) Ucc, В в) Рис. 2. Зависимость потребляемого тока для AT89LV51/52 от напряжения питания и частоты в активном режиме (а), режиме Idle (6) и Power Down (в) ПРОГРАММИРОВАНИЕ АТ89С51/52 И AT89LV51/52 Контроллеры АТ89С51/52 выпус- каются рассчитанными на програм- мирование 5- или 12-вольтовыми импульсами. У первых из них вторая строчка маркировки на корпусе за- канчивается на «-5», у вторых дефис с цифрой во второй строчке отсутству- ют. Сигнатурные байты для первых следующие: (ОЗОН) — 1ЕН, (031Н) —- 51Н, (032Н) — 05Н. Вторые отлича- ются содержимым байта: (032Н) — в нем записано не 05Н, a 0FFH. AT89LV51/52 выпускаются только в расчете на программирование 12- вольтовыми импульсами. Их сигна- туры: (ОЗОН) — 1ЕН, (031Н) — 61Н, (032Н) — 0FFH. Изначально контроллеры постав- ляются потребителю с очищенным ПЗУ, т. е. все его ячейки содержат 0FFH. В этом случае контроллер сразу готов к занесению в него информации. Иначе перед программированием необходи- мо осуществить цикл стирания. Для этого на его выводы необходимо подать сигналы в соответствии с табл. 2 и сте- реть информацию отрицательным им- пульсом длительностью не менее 10 мс, приложенным к выводу ALE/ PROG. Цикл записи осуществляется следу- ющим образом. На соответствующие входы портов Р1 и Р2 подается адрес- ная информация, на входы Р0 — байт данных. Сигналы на остальных входах должны соответствовать табл. 2. Час- тота осциллятора не должна быть ниже 4 МГц (напомним, что изделия Atmel полностью статические, поэтому в обычном режиме нижнее значение ра- бочей частоты не оговаривается). 150
Таблица 2 Программирование АТ89С51/52 и AT89LV51/52 режим RST PSEN ALE/PROG ЕА /Vpp Р2.6 Р2.7 Р3.6 Р3.7 Стирание Н L IT Н/12 В(‘) L L Н Программи- оование ПЗУ н L Н/12 В(‘) L Н Н н Верификация ПЗУ Н' L н Н L L Н н Чтение сигнатурных байтов н L н Н L L L L Установка бита защиты 1 н L “"LT" Н/12 В(‘) Н Н Н Н Установка бита защиты 2 н L ТГ Н/12 В(*) Н Н L L Установка бита защиты 3 н L “"LT" Н/12 В(‘) Н L L L Примечания. (*) — 12 В подается для 12-вольтовых версий контроллеров, иначе необходимо 5 В Н — высокий логический уровень, L — низкий На рис. 3 и 4 приведены временные диаграммы сигналов циклов программирования и верификации как для 5-, так и для 12-вольто- вых версий контроллеров. Отметим, что для корректной верифика- ции выводы порта РО должны быть соединены с проводом питания через резисторы номиналом 10 кОм. Естественно, при установлен- ных битах защиты верификация невозможна. Допустимые длитель- ности импульсов и задержек приведены в табл. 3, схема включения микроконтроллеров при программировании — на рис. 5. twc Рис. 3. Программирование и верификация 12-вольтовых версий АТ89С51/52 и AT89LV51/52 151
Рис. 4. Программирование и верификация 5-вольтовых версий АТ89С51/52 и AT89LV51/52 Отметим, что при программировании 12-вольтовых версий на- пряжение Vpp должно быть в диапазоне 11,5... 12,5 В, при этом ток, потребляемый контроллером по этому входу, не превышает 1 мА. Импульс программирования на входе ALE/ PROG не програм- мирует ПЗУ непосредственно, а лишь запускает внутреннюю схе- му программирования. Процесс занесения 1 байта занимает при- мерно 1,5 мс. Для того, чтобы программирующее устройство могло Таблица 3 Временные характеристики циклов программирования и верификации Символ Параметр Минимум Максимум Ед. изм VDD(*) Напряжение программирования 11,5 12,5 В |рр(*) Ток программирования 1,0 мА 1/tcLCL Частота генерации 4 24 МГц tAVGL Время предустановки адреса 48‘tciC! tGHAX Время задержки адреса 48‘tciCL tDVGL Время предустановки данных 48‘tcLCL Ighdx Время задержки данных 48‘tcLCL Iehsh Время задержки установки Vpp относительно вывода Р2.7 48*tcLCL UhGL Время задержки сигнала PROG 10 МКС IghslC) Время задержки снятия Vpp 10 мкс tGLGH Длительность PROG 1 110 мкс Iavqv Задержка считываемых данных относительно адреса 48‘tciCL Ielqv Задержка данных относительно ENABLE 48*tcLCL ^EHQV Удержание данных 0 48*tcLCL Ighbl Задержка установления BUSY 1,0 мкс twc Длительность внутреннего цикла записи 2,0 мс Примечание. (*) — 12 В подается для 12-вольтовых версий контроллеров, иначе — 5 В 152
В соответствии с табл.2 А0...А7 Адрес (0000H-1FFFH) А8...А12 XTAL1 Р1 vcc Р2.0-Р2.4 Р2.6 1 РО Р2.7 Р3.6 > ALE Р3.7 ОЭ XTAL2 о ЁА СП го RST Р1 Р2.0-Р2.4 Р2.6 Р2.7 Р3.6 > Р3.7 00 XTAL2 о ЁА PSEN +5 В PGM DATA PROG U|h/Upp UlH A0...A7 Адрес (OOOOH-1FFFH) A8...A12 В соответствии с табл. 2 RST XTAL1 GND PSEN PO +5 В Верефицированные данные (выводы шины соединить с Ucc через резисторы сопротивлением Юком) UlH UlH рис. 5. Схема включения микроконтроллеров АТ89С51/52 и AT89LV51/52 при программировании точно определить момент, когда закончился внутренний цикл про- граммирования, Atmel предусмотрела так называемые режимы DATA Polling и Ready/Busy. Программирование и верификация 12-вольтовых версий АТ89С51/52 и AT89LV51/52. В первом случае после подачи импульса программирования на вход PROG реко- мендуется считывать содержимое старшего бита записываемого байта (линия Р0.7) и сравнивать с тем, что было подано на запись. До тех пор, пока цикл внутренней записи не закончится, верифи- кация бита Р0.7 будет давать ложный результат, и только после завершения записи считанное значение будет соответствовать за- писывавшемуся. Еще одним индикатором окончания цикла внутренней записи может быть чтение состояния вывода Р3.4 микроконтроллера после импульса программирования. До тех пор, пока уровень сигнала на этом выходе будет низким, контроллер не готов к верифика- ции и записи следующего байта. Высокий уровень сигнала инди- цирует завершение внутреннего цикла записи и разрешает вери- фикацию. В остальном контроллеры АТ89С51/52 и AT89LV51/52 аналогич- ны своим Intel-прототипам. АТ89С1051 Этот контроллер, полностью программно совместимый с семей- ством MCS-51, выпускается в 20-выводном DIP-корпусе (рис. 6). Пос- леднее оказалось возможным вследствие отказа от использования линий портов РО и Р2 (а также Р3.6, о чем будет сказано ниже). АТ89С1051 содержит 1 кбайт электрически перепрограммируемого ПЗУ, 15 линий ввода/вывода, 64 байта внутреннего ОЗУ, один тай- 153
мер-счетчик, три вектора прерываний и аналоговый компаратор. Под- держиваются режимы Idle и Power Down. Кроме того, выводы пор- тов — сильноточные, допускающие прохождение через них тока вплоть до 20 мА, что позволяет их ис- RST 1 4 > 20 Vcc РЗ.О 2 < > 19 Р1.7 Р3.1 3 < > 18 Р1.6 XTAL2 4 4 О > 17 Р1.5 XTAL1 5 < q > 16 Р1.4 (INT0)P3.2 6 4 и> > 15 Р1.3 (TNTT) Р3.2 7 4 о о > 14 Р1.2 (ТО)Р3.4 8 < > 13 Р1.1 (AIN1) Р3.5 9 4 > 12 P1.0(A!N0) GND 10 4 >11 Р3.7 Рис. 6. Цоколевка АТ89С1051 пользовать для непосредственного уп- равления светодиодными индикаторами (правда, суммарный ток через все линии порта не должен превышать 80 мА). Допустимый диапазон питающих напряжений — от 2,7 до 6 В, потребляе- мый ток — не более 15 мА в активном режиме, 5 мА в режиме Idle и 100 мкА в режиме Power Down. Зависимость по- требляемого тока от напряжения пита- 1сс. мА <СС. мА б) Рис. 7. Зависимость потребляемого тока для АТ89С1051 от напряжения питания и частоты в активном режиме (а), режиме Idle (б) и Power Down (в) 154
ния и частоты для АТ89С1051 приведена на рис. 7. Основные характеристики контроллеров этого типа приведены в табл. 4. Выводы портов Р1.2-Р1.7 имеют внутренние нагрузоч- ные резисторы. Р1.0иР1.1 не имеют их и используются со- ответственно как положитель- ный (AINO) и отрицательный (AIN1) входы встроенного прецизионного аналогового компаратора. Выход компара- тора соединен с линией Р3.6, не выведенный наружу мик- роконтроллера. Линии порта Р3.2-Р3.4 выполняют альтер- нативные функции: Р3.2 — INTO, РЗ.З — INT1, Р3.4 — ТО. Линии порта РЗ также снабжены внутренними на- грузочными резисторами. Из стандартного для кон- троллеров семейства MCS-51 набора регистров SFR в АТ89С1051 присутствуют ак- кумулятор, регистры В, PSW, IP, IE, TCON, TMOD, TL0, ТНО, SP, PCON, DPTR, Pl и РЗ. Инструкции LCALL, LJMP, ACALL, AJMP, SJMP, JMP@A+DPTR, CJNE, DJNZ, JB, JNB, JC, JNC, JBC, JZ, JNZ не должны в качестве адресов перехода (вызова подпрограмм) использовать адреса свыше 3FFH, т. к. кон- троллер не имеет средств вы- явления подобных ошибок. АТ89С1051 имеет всего два бита защиты — LB1 иЬВ2. Ус- тановка LB1 запрещает «доп- О с О. О 2а* |20РЗ | |20S | I20P3 | [20S | I20P3 I О о 04 I20P3 I [20S | >х S.8 Ф л с с О О S8+" | S8+" О О ..+85 | i S8+" S л О О 1'“'» I'*»» О О Ф S н и о о 7 7 о О 7 т ф 3 X ф ф ® 56 о 5. со со СО СО со СО СО со VO с л л о о о о а. х сч N сч 04 ’Т м- актовая астота, МГц 04 04 04 04 хГ н т Т“ т- V С\| 04 С4 04 3 н о. - О ® п п п п п п 0. п. С X 04 04 см 04 04 04 04 04 Прерыва- ния со со со со со со СО СО 3 s 3 3 £ 3 3 3 3 £ ф ± ю ю ю ю ю ю ю СО S Ьг со со со со со со со со ГО Т * •г— ♦ ♦ ♦ Н о ОЗУ, байт 16* S S S S S S 3 ПЗУ, кбайт т- О 1051-12РС | 1051-12SC I 1051-12PI | 1051-12SI I 10512-24 PC | 10512-4SC | 10512-4PI | 10512-4SI | 2 О О О о О О О (5 Е 68J О со 68J 68J 68' Г89 68J С» со н < < < < < < < < Примечание. 20РЗ — 20-выводный PDIP с шагом 0,3 дюйма 20S — 20-вь!водный SOIC с шагом 0,3 дюйма 155
рограммирование» контроллера. Установка обоих битов защищает его от несанкционированного считывания содержимого ПЗУ. Сня- тие битов защиты осуществляется при стирании ПЗУ. ПРОГРАММИРОВАНИЕ АТ89С1051 Программирование АТ89С1051 имеет существенные отличия от аналогов семейства MCS-51, определяемые ограниченным числом его выводов. Вследствие этого отсутствует возможность задавать извне ад- рес программируемого байта. Адресация осуществляется при помо- щи внутреннего счетчика, сбрасываемого в 0 при сбросе контроллера. Инкрементирование счетчика осуществляется положительным им- пульсом на входе XTAL1. Поэтому при программировании необходи- ROY/BSY PROG В соответ- ствии с табл.5 Импульс инкремен- тирования Рис. 8. Схема включения микро- контроллеров АТ891051 при программировании мо внешнее тактирование, осуществля- емое по входу XTAL2. Схема включения микроконтроллеров АТ89С1051 при программировании приведена на рис. 8. Последовательность подачи сигна- лов программирования приведена ниже. 1. Подать напряжение питания. Ус- тановить RST и XTAL1 в низкий уро- вень, выждать не менее 10 мс. 2. Установить RST и Р3.2 в единицу. 3. Установить на выводах РЗ.З, Р3.4, Р3.5, Р3.7 сигналы в соответствии с табл. 5, определяющие выбранный режим. 4. Установить на выводах порта Р1 байт данных, соответствующий адресу 0. 5. Подать на вход RST напряжение 12 В. 6. Подать отрицательный импульс программирования на вход Р3.2. Этим импульсом запускается внутренняя схема программирования. Процесс занесения байта в ПЗУ занима- ет примерно 1,2 мс. 7. Для верификации подать на вход RST напряжение 5 В. Устано- вить на выводах РЗ.З, Р3.4, Р3.5, Р3.7 сигналы в соответствии с табл. 5. Прочитать данные по выводам порта 1. 8. Подать положительный импульс на вход XTAL1 для инкремен- тирования счетчика адреса. 9. Установить на выводах порта Р1 байт данных, соответствую- щий следующему адресу. Повторять действия по гш. 5—8 до завер- шения программирования всего программного массива. 156
Таблица 5 режим RST P3.2/PROG РЗ.З Р3.4 Р3.5 Р3.7 Стирание 12 В TJ- (*) н н L L Программирование ПЗУ 12 В ТГ L L Н Н Верификация ПЗУ Н Н L L Н Н Чтение сигнатурных байтов Н н L L L L Установка бита защиты 1 12 В ТГ Н Н Н Н Установка бита защиты 2 12 В ТГ н Н L L Примечания. (*) — импульс стирания должен иметь длительность не менее 10 мс; Н — высокий логический уровень, L — низкий tiHIH Занят у Готов twC I tBHIH P3.t---------------------------- (RDY/BSY) XTAL1____________________.________ (импульс инкрементирования адреса) Рис. 9. Временные диаграммы цикла программирования и верификации АТ89С1051 Таблица 6 Временные характеристики циклов программирования и верификации АТ89С1051 Символ Параметр Минимум Максимум Ед. изм L.VPP Напряжение программирования 11,5 12,5 В Le Ток программирования 0,25 мА fova Время предустановки данных 1,0 МКС tGHDX Время задержки данных 1,0 мкс Iehsh Время задержки установки Vpp относительно вывода Р3.4 1,0 мкс . tsHGL Время задержки сигнала PROG 10 мкс Ighsl Время задержки снятия Vop 10 мкс . tcLGH Длительность PROG 1 110 мкс Ielqv Задержка данных относительно ENABLE 1,0 мкс . IehQZ Удержание данных 0 1,0 мкс . IqHBL Задержка установления BUSY 0,05 мкс twc Длительность внутреннего цикла записи 2,0 мс . Ibhih Задержка инкрементирующего импульса 1,0 мкс IlHIL Длительность инкрементирующего импульса 0,2 мкс 157
10. Установить XTAL1 и RST в низкий уровень. Выключить пи- тание. АТ89С1051 имеет режимы DATA Polling и Ready/Busy. В первом случае после подачи импульса программирования на вход PROG ре- комендуется считывать содержимое старшего бита записываемого бай- та (линия Р 1.7) и сравнивать с тем, что было подано на запись. До тех пор, пока цикл внутренней записи не закончится, верификация бита Р1.7 будет давать ложный результат, и только после завершения запи- си считанное значение будет соответствовать записывавшемуся. Еще одним индикатором окончания цикла внутренней записи может быть чтение состояния вывода Р3.1 микроконтроллера после импульса программирования. До тех пор, пока уровень сигнала на этом выходе будет низким, контроллер не готов к верификации и записи следующего байта. Высокий уровень сигнала индицирует за- вершение внутреннего цикла записи и разрешает верификацию. Если не установлены биты защиты, то возможно прочитать со- держимое внутреннего ПЗУ микроконтроллера. Это осуществляется при следующей последовательности шагов. 1. Подать напряжение питания. Установить RST и XTAL1 в низ- кий уровень, выждать не менее 10 мс. 2. Установить RST и Р3.2 в единицу. 3. Установить на выводах РЗ.З, Р3.4, Р3.5, Р3.7 сигналы в соответ- ствии с табл. 5, определяющие режим верификации. 4. Прочитать с выводов порта Р1 байт данных, соответствующий адресу 0. 5. Подать положительный импульс на вход XTAL1 для инкремен- тирования счетчика адреса. 6. Повторить действия по пп. 4, 5 до завершения чтения всего содержимого ПЗУ. 10. Установить XTAL1 и RST в низкий уровень. Выключить пи- тание. При чтении сигнатурных байтов ячейка 000Н содержит 1ЕН (про- изводитель — Atmel), ячейка 001Н — ПН (код АТ89С1051). АТ89С2051 Этот контроллер, полностью программно совместимый с семей- ством MCS-51, также выпускается в 20-выводном DIP-корпусе. По выводам он полностью совместим с АТ89С1051. АТ89С2051 содер- жит 2 кбайта электрически перепрограммируемого ПЗУ, 15 линий ввода/вывода, 128 байт внутреннего ОЗУ, 2 таймера-счетчика, 6 век- торов прерываний и аналоговый компаратор. Таймеры-счетчики 158
полностью идентичны таковым у jvfCS-51. АТ89С2051 имеет также стандартный для MCS-51 после- довательный порт. Поддержива- ются режимы Idle и Power Down. Кроме того, выводы портов — сильноточные, допускающие прохождение через них тока вплоть до 20 мА. Это позволяет их использовать для непосред- ственного управления светоди- одными индикаторами (правда, суммарный ток через все линии порта не должен превышать 80 мА). Допустимый диапазон питаю- щих напряжений — от 2,7 до 6 В, потребляемый ток — не более 15 мА в активном режиме, 5 мА в режиме Idle и 100 мкА в режиме Power Down. Зависимость потреб- ляемого тока от напряжения пита- ния для АТ89С2051 аналогична АТ89С1051. Основные характери- стики контроллеров этого типа приведены в табл. 7. Выводы портов Р1.2-Р1.7 имеют внутренние нагрузочные резисторы. Р1.0 и Р1.1 не имеют их и используются соответствен- но как положительный (AIN0) и отрицательный (AIN1) входы встроенного прецизионного ана- логового компаратора. Выход компаратора соединен с линией Р3.6, не выводимой наружу мик- роконтроллера. Линии порта Р3.0-Р3.5 выполняют альтерна- тивные функции: РЗ.О — RxD, Р3.1—TxD,P3.2— INTO, РЗ.З — INTI, Р3.4 — ТО, Р3.5 — Т1. Ли- пз 3- s £ .03 | Корпус 20РЗ I I SOS I20P3 I |20S | |20РЗ I ^20S I 20РЗ | i20S | Температурный диапазон, °C О О I-40...+85 I I-40...+85 I О о О о —40...+85 I —40...+85 I Рабочее напряжение, В СО См' со см' СО см СО см' со CD со О СО о СО о_ Тактовая частота, МГц CXI см см см Я Si я Si Порты в/в СО CL CXI со CL СМ со CL см со CL СМ со CL СМ СО CL СМ со CL СМ со CL см Преры- вания со СО со со со СО со со Таймеры- счетчики 2*16 бит | 2*16 бит | |2*16бит |2*16бит [2*16 бит 3 ю со см 2*16 бит | 2*16 бит | ОЗУ, байт СО CXI СО см СО см СО см СО см со см СО см СО см ПЗУ, кбайт CXI см см см см см см см Тип м/с IAT89C2051-12PC | IAT89C2051-12SC | IAT89C2051-12PI [AT89C2051-12SI IAT89C2051-24PC ] IAT89C2051-24SC | IAT89C2051-24PI ] IAT89C2051-24SI I Примечание. 20РЗ — 20-выводный PDIP с шагом 0,3 дюйма 20S — 20-выводный SOIC с шагом 0,3 дюйма 159
нии порта РЗ также снабжены внутренними нагрузочными резне* торами. Из стандартного для контроллеров семейства MCS-51 набора ре* гистров SFR в АТ89С2051 присутствуют аккумулятор, регистры В, PSW, IP, IE, TCON, TMOD, TLO, THO, SP, PCON, DPTR, Pl и РЗ, име- ющиеся в AT89C1051, а также SCON, SBUF, ТЫ и TH1. Инструкции LCALL, LJMP, ACALL, AJMP, SJMP, JMP@A+DPTR, CJNE, DJNZ, JB, JNB, JC, JNC, JBC, JZ, JNZ не должны в качестве адресов перехода (вызова подпрог- рамм) использовать адреса свыше 7FFH — контроллер не имеет средств выявления подобных ошибок. АТ89С2051 также имеет только два бита защиты, LB1 и LB2. Ус- тановка LB1 запрещает «допрограммирование» контроллера. Уста- новка обоих битов защищает его от несанкционированного считы- вания содержимого ПЗУ. Снятие битов защиты осуществляется при стирании ПЗУ. Программирование и верификация АТ89С2051 практически пол- ностью идентичны аналогичным операциям у АТ89С1051. Различие состоит лишь в том, что объем внутреннего ПЗУ этого контроллера составляет не 1, а 2 кбайта, в связи с чем при программировании и верификации необходимо выполнить не 1024, а 2048 соответствую- щих циклов. Кроме того, при чтении сигнатурных байтов ячейка 000Н содержит 1ЕН (производитель — Atmel), ячейка 001Н — 21Н (код АТ89С2051). АТ89С55 и AT89LV55 Это стандартные микроконтроллеры, практически полностью аналогичные классическим 8хС54 и 8xL54. Отличием их, помимо Flash-памяти вместо УФ-стираемого ПЗУ, является несколько необыч- ный его объем (20 кбайт). Основные характеристики контроллеров приведены в табл. 8, цоколевка аналогична АТ89С51. Необходимо отметить более высокую, чему MCS-51, нагрузочную способность выводов AT89C55/AT89LV55, позволяющую соединять с каждым из них до 6 стандартных TTL-входов. Максимальный вход- ной ток может достигать 10 мА, при этом суммарный ток через выво- ды порта 0 не должен превышать 26 мА, а через выводы остальных портов — 15 мА. Максимальный суммарный ток через все выводы не должен быть более 71 мА. Напряжения на входах относительно обще- го провода должны лежать в диапазоне от -1 до +7 В, максимальное рабочее напряжение — 6,6 В. В режиме Power Down допустимо его сни- жение до 2 В. Потребление АТ89С55 на частоте 12 МГц при напряже- нии питания 6 В не превышает 20 мА, в режиме Idle — 5 мА, в режиме Power Down — 100 мкА при напряжении 6 В и 40 мкА при 3 В. Зависи- 160
Таблица 8 161
Окончание таблицы 8 и Е (О (О О. < 0 0 О о о >х Ji f?x со СО со о. м СО си со ф га + Е Е О о о 5 S г-- Г'-~ Г'-~ О го о ® ч о о о 7 CQ Ф S X ф ф ф £ о со со со со СО со Ю Е Ф Я 0- X cxi cxi CXI CXI cxi CXI Д’ 2 К - ф « ш н ° р L и ф ф CXI CXI CXI CXI CXI CXI V" V" т- 3 □_ D_ D_ D_ Q_ D_ °- м хП о со СО со СО СО СО С CQ 5“ V" V" т- Ф m _п о. Ф е О- S С I со со со СО СО СО 3 5 °- * к к X X к X ю ю ю со со со со со со со со со J— О со со со со сэ со со со (О (О (0 (О й я и) Ю со со СО со О 10 С XI CXI CXI CXI CXI CXI > и м ю (—1 о ГО го го о С ж С XI CXI CXI CXI CXI CXI о о о <г Г.1.. "0 LL С XI CXI CXI CXI CXI CXI Х““ со СО СО со СО со 1.0 со со со ю со .о > 1 1 1 1 _| СП СП СП СП СТ) СП Е со со со со П) со X н н |— Н— < <1. <1. < сб 2 сб _ 2 2 d 2 о. о Ъ — Ф Q О 0> О о СО CL О мость потребляемого тока от, напряжения питания и часа о( ты для AT89LV55 аналогична приведеной на рис. 2 для AT89LV51/52. В микроконтроллерах 8хС51 сигнал ALE генерируется с по- стоянной частотой, в 6 рая меньшей частоты осциллято- ра, исчезая лишь при обраще- нии к внешней памяти дан- ных. В АТ89С55 возможно программно запретить выдачу этого сигнала, установив в 1 бит 0 SFR-регистра, находяще- гося по адресу 8Е. При э юм сигнал ALE будет появляч ься лишь при выполнении команд MOVX, MOVC (либо при рабочее внешней памятью программ, если она имеется в вашей сис- теме). В остальных случаях на выводе будет присутствовать напряжение высокого уровня. В отличие от AT89LV51/52., возможность подавления вы- вода сигнала ALE распроо ра- няется и на AT89LV55. ПРОГРАММИРОВАНИЕ АТ89С55 И AT89LV55 Контроллеры АТ89С55 рассчитаны на программ и ро вание 5- или 12-вольтовыми импульсами. У первых из них вторая строчка маркировки на корпусе заканчивается на «-5», у вторых дефис с цифрой во второй строчке отсутствуют. Сигнатурные байты для пер- вых следующие: (ОЗОН) — 1ЕН, (031Н) — 55Н, (032Н) — 162
05Н. Вторые отличаются содержимым байта (032Н) — в нем записа- ло не 05Н, a OFFH. AT89LV51/52 пока выпускаются только в расчете да программирование 12-вольтовыми импульсами. Их сигнатуры: (ОЗОН) — 1ЕН, (031Н) — 65Н, (032Н) — 0FFH. Изначально контроллеры поставляются потребителю с очищен- ным ПЗУ, т. е. все его ячейки содержат 0FFH. В этом случае контрол- лер сразу готов к занесению в него информации. Иначе перед про- граммированием необходимо осуществить цикл стирания. Осуществляется это аналогично тому, как это описано выше для АТ89С51/52 и AT89LV51/52. Занесение в ПЗУ микроконтроллеров программного кода в це- лом осуществляется также аналогично АТ89С51/52 и AT89LV51/52. На соответствующие входы портов Р1 и Р2 подается адресная ин- формация, на входы РО — байт данных. Сигналы на остальных входах должны соответствовать табл. 2. Частота осциллятора не должна быть ниже 4 МГц (напомним, что изделия Atmel полностью статические, поэтому в обычном режиме нижнее значение рабочей частоты не оговаривается). Но есть и одно существенное отличие АТ89С55 и AT89LV55 от Intel- прототипов. Поскольку рассматриваемые контроллеры Atmel имеют ПЗУ объемом больше 16 кбайт, то их адресная шина насчитывает 15 линий — от АО до А14. При обращении к внешней памяти программ младший байт адреса выводится через порт РО и должен фиксироваться регистром-защелкой в момент спада из 1 в 0 сигнала ALE. Старшие 7 адресных линий выводятся через Р2.0-Р2.6. Логично предположить, что при программировании адресная информация должна поступать в мик- роконтроллер через те же линии портов РО и Р2. Но поскольку при про- граммировании вывод Р2.6 задействован, через него нельзя ввести в кон- троллер адресную линию А14, подобно тому, как это осуществлено у Intel 87С58. Поэтому разработчики Atmel предусмотрели подачу А14 при программировании через младший разряд порта РЗ (РЗ.О). Временные диаграммы сигналов циклов программирования и ве- рификации как для 5-, так и для 12-вольтовых версий контроллеров идентичны рассмотренным выше для АТ89С51/52 и AT89LV51/52. На- помним, что для корректной верификации выводы порта РО должны быть соединены с проводом питания через резисторы номиналом 10 кОм. Естественно, при установленных битах защиты верификация и чтение содержимого ПЗУ невозможно. Допустимые длительности импульсов и задержек должны быть такими, как указано в табл. 3. При программировании 12-вольтовых версий напряжение Vpp должно быть в диапазоне 11,5...12,5 В, при этом ток, потребляемый контроллером по этому входу не превышает 0,9 мА. 163
Контроллеры также имеют режимы DATA Polling и Ready/Busy, подробно рассмотренные при описании АТ89С51/52 и AT89LV51/52, Также, как и последние, они имеют двухуровневую систему приори- тетов прерываний. Иных отличий от Intel-прототипов они не имеют. AT89S53 Эти микроконтроллеры имеют ряд существенных отличий от предшественников, о чем свидетельствует доселе не появлявшаяся в обозначении буква S. Она говорит о том, что в их состав включено новое устройство — SPI (Serial Peripheral Interface — последователь- ный периферийный интерфейс, который может использоваться для программной загрузки). Объем ПЗУ также не совсем обычен —* 12 кбайт. Основные характеристики контроллеров приведены в табл. 9, цоколевка аналогична АТ89С51. Нагрузочная способность выводов аналогична АТ89С55/ AT89LV55. Напряжения на входах относительно общего провода дол- жны лежать в диапазоне от -1 до +7 В, максимальное рабочее напря- жение — 6,6 В. В режиме Power Down допустимо его снижение до 2 В. Потребление AT89S53 на частоте 16 МГц при напряжении питания 6 В не превышает 25 мА, в режиме Idle — 6,5 мА, в режиме Power Down — 100 мкА при напряжении 6 В и 40 мкА при 3 В. Зависимость потребляемого тока от напряжения питания и частоты для AT89S55 аналогична приведенной на рис. 2. В микроконтроллерах AT89S53 сигнал ALE, как и в АТ89С51, воз- можно программно запретить, установив в 1 бит 0 SFR-регистра, нахо- дящегося по адресу 8Е. При этом сигнал ALE будет появляться лишь при выполнении команд MOVX, MOVC (либо при работе с внешней памя- тью программ, если она имеется в вашей системе). В остальных случаях на выводе будет присутствовать напряжение высокого уровня. Выводы порта РЗ выполняют те же альтернативные функции, что и у MCS-51. Под выполнение альтернативных функций также задей- ствованы и 6 из 8 выводов порта Р1. Выводы Р1.0 и Р1.1, каки у 87С52, обслуживают третий таймер-счетчик. Выводы с Р1.4 по Р1.7 обеспечи- вают работу SPI. Вывод Р 1.4 является сигналом выбора подчиненного устройства, с которым задающий контроллер будет вести обмен. Как будет показано ниже, обмен по SPI-интерфейсу осуществляется в со- ответствии с логикой «ведущий-ведомый» или «master-slave», как при- нято в англоязычной литературе. Если AT89S53 работает в режиме ве- домого (slave), то установка ведущим (master) на его входе Р1.4 низкого уровня сообщает ему о том, что обмен будет осуществлен именно с ним. Единичный уровень выключает его из процесса обмена. Естествен- но, что ведущий контроллер должен располагать соответствующими 164
Таблица 2 2 » * IA г* со 115 со со со со со со со со QQQQQQQQQQQQ юююююююююююю О о О сосососососососососососо 2’5 О со 5П15|сь1о|б со со со со со со со со 165
аппаратными средствами, управляющими выбором ведомого (напри- мер, дешифратором на адресных линиях). При работе AT89S53 в режиме ведущего данные выводятся через линию Р1.5. По этой же линии ведомый принимает информацию. Поэтому альтернативная функция Р1.5 носит название MOS1 — master data out, slave data in. Pl.6 выполняет обратные функции — работает на прием у ведущего и на передачу у ведомого. Его наиме- нование — MISO (master data in, slave data out). И наконец, Pl.7 ис- пользуется для тактирования обмена. Тактовые сигналы вырабаты- ваются ведущим устройством и от него передаются всем ведомым. У ведущего Р1.7 является выходом тактирования, а у ведомых — вхо- дом. Подробнее алгоритм работы SPI описывается ниже. AT89S53 имеет аппаратный сторожевой таймер. Будучи разрешен- ным, он через заданный установками в соответствующем регистре WCON временной промежуток (от 16 до 2048 мс) генерирует сигнал пересброса микроконтроллера. Избежать пересброса можно, если до этого момента сбросить соответствующим сигналом в 0 содержимое счетчика сторожевого таймера. Обычно для этого разработчики вклю- чают в основной цикл программы последовательность команд, об- нуляющую счетчик таймера. «Зависание» программы останавлива- ет выдачу этих команд, и через заданный промежуток времени после этой неприятности контроллер пересбрасывается и вновь начинает нормально функционировать. 0F8H 0FFH 0F0H В 00000000 0F7H 0Е8Н 0EFH ОЕОН АСС 000000000 0Е7Н 0D8H 0DFH 0D0H PSW 00000000 SPCR 000001XX 0D7H 0С8Н T2CON 00000000 T2MOD ххххххоо RCAP2L 00000000 RCAP2H 00000000 TL2 00000000 ТН2 00000000 0CFH ОСОН 0С7Н 0В8Н IP ххоооооо 0BFH ОВОН РЗ 11111111 0В7Н 0А8Н IE 0X000000 SPSR оохххххх 0AFH ОАОН Р2 11111111 0А7Н 098Н SCON 00000000 SBUF хххххххх 09FH 090Н Р1 11111111 WMCON 00000010 097Н 088Н TCON 00000000 TMOD 00000000 TL0 00000000 TL1 00000000 тно 00000000 ТН1 00000000 08FH 080Н Р0 11111111 SP 00000111 DP0L 00000000 DP0H 00000000 DP1L 00000000 DP1H 00000000 SPDR хххххххх PCON охххоооо 087Н Рис. 10. Регистровое пространство контроллеров AT89S53 166
Регистровое пространство AT89S53 расширено в сравнении с предшественниками (см. рис. 10). Появились три регистра, обслу- живающие SPI — SPCR (0D5H), SPSR (ОААН) и SPDR (086Н). Сто- рожевой таймер обслуживается регистром WCON (096Н). И нако- нец, добавлен еще один указатель DPTR (DP1L и DP1H, находящиеся по адресам 084Н и 085Н соответственно). Переключение с основной регистровой пары на дополнительную и обратно осуществляется би- том DPS в регистре WCON. Регистры управления SPCR (SPI Control Register) и статуса SPSR (SPI Status Register) описаны в табл. 10 и 11. Таблица 10 Регистр управления SPCR Символ Позиция Имя и назначение SPIE SPCR.7 Разрешение прерывания от SPI - SPI Interrupt Enable. Вместе с битом ES в регистре IE этот бит разрешает прерывание от SPL Если оба они установлены в 1, то прерывание от SPI разрешено, если хоть одит из них сброшен в 0 — запрещено. SPE SPCR, 6 SPE SPCR.6 — Бит включения SPI в рабочий режим (SPI Enable). Его установка в 1 соединяет выводы #SS, MOSI, MISO и SCK с выводами Р1.4, Р1.5, Р1.6 и Р1.7 соответственно. Установка бита в 0 отключает канал SPI. DORD SPCR.5 Порядок передачи битов по каналу SPI (Data Order). Если DORD установлен в 1, то вначале выдается младший бит (LSB), в противном случае — старший бит (MSB). MSTR SPCR.4 Выбор ведущего/ведомого. Установка бита в 1 сообщает контроллеру, что он выполняет роль ведущего. Нулевое значение бита переводит контроллер в режим ведомого. CPOL SPCR.3 Полярность сигнала тактирования. Значение ясно из рис. 11, 12. СРНА SPCR.2 Фазировка сигнала тактирования. Значение ясно из рис. 11, 12. SPR1 SPCR.1 Эти два бита устанавливают частоту тактирования SPR0 SPCR.0 в= SPI (она устанавливается только для ведущего контроллера). Соотношение между значениями битов и частотой тактирования определяются из таблицы: SPR1 SPR0 SCK=Fosc, деленное на . 0 0 4 0 1 16 1 0 64 1 1 128 Примечание. Значение регистра при сбросе — 000001ХХВ Последовательный периферийный интерфейс предназначен Для быстрого синхронного обмена информацией между контрол- лером и периферией или между двумя контроллерами. Обмен может быть полностью дуплексным и осуществляется, как описа- 167
Таблица 11 Регистр статуса SPSR Символ Позиция Имя и назначение SPIF SPSR.7 Флаг прерывания SPL Устанавливается у ведущего аппаратурно при завершении передачи, если SPIE=1 и ES=1. Сбрасывается при чтении регистра SPSR WCOL SPSR.6 Флаг ошибки при записи данных. Устанавливается в случае, когда данные заносятся в регистр SPDR с момент передачи. Благодаря буферизации SPDR ошибки при передачи не происходит, но данные не будут переданы. Сбрасывается при чтении регистра SPSR — SPSR.5 Не используется — SPSR.4 Не используется — SPSR.3 Не используется — SPSR.2 Не используется — SPSR.1 Не используется — SPSR.O Не используется Примечание. Значение регистра при сбросе — ООХХХХХХВ но выше, с использованием трех линий. Максимальная частота, на которой осуществляется передача, равна четверти частоты ос- циллятора, т. е. для 24-мегагерцовой версии контроллера она рав- на 6 МГц. Возможна установка четырех различных скоростей об- мена. Передача может осуществляться как младшим битом вперед, так и старшим. Завершение передачи сопровождается установкой в 1 соответствующего флага. На рис. 11 приведена блок-схема SPI-интерфейса микроконтрол- лера, а схема соединений узлов SPI двух различных устройств дана на рис. 12. Запись в регистр данных SPI (SPDR) ведущего запускает его тактовый генератор, разрешая прохождение сигналов через дели- тель частоты. Данные из регистра, бит за битом, поступают на вы- вод MOSI ведущего, соединенный с одноименным входом ведомого. Каждый импульс тактовой частоты SCK, вырабатываемый ведущим, сопровождается передачей бита. Ведомый принимает бит со своего входа MOSI и заносит его в свой сдвиговый регистр. Одновременно с этим через выход MISO он бит за битом передает ведущему содер- жимое своего регистра сдвига, который последний принимает по од- ноименному входу. Таким образом, после прохождения восьми им- пульсов тактового генератора содержимое сдвиговых регистров ведущего и ведомого обменяется местами. Завершение передачи ус- тановит флаг SPIF у ведущего, и при взведенных SPIE и ES вызовет соответствующее прерывание. 168
Если к одному ведущему подключено несколько ведомых, то пе- ред началом обмена первый должен установить в 0 вход SS (Р1.4) того ведомого, который должен принимать информацию. У невыбранных ведомых при этом и MOSI, и MISO оказываются подключенными к линии как входы, чтобы на линиях не было конфликтов данных. Формат передаваемых данных при различных комбинациях би- тов СРНА и CPOL приведен на рис. 13, 14. Рис. 11. Блок-схема SPI-интерфейса микроконтроллера MSB Ведущий LSB MSB Ведомый LSB Рис. 12. Схема соединений узлов SPI двух различных устройств Регистр управления сторожевым таймером описан в табл. 12. Сторожевой таймер выключен после сброса и в режиме Power Down. Запуск его осуществляется установкой в 1 бита WDTEN, пос- ле чего программа должна его периодически сбрасывать, записывая 1 169
Рис. 13. Формат передаваемых данных при СРНА=О Тактовый цикл SCK(CPOL=1) (к ведомому) ' MOSI (от ведущего) MISO (от ведомого) dSB Рис. 14. Формат передаваемых данных при СРНА=1 Регистр управления WCON Таблица 12 Символ Позиция Имя и назначение PS2 PS1 PS0 WCON.7 WCON.6 WCON.5 Эти три бита устанавливают время пересброса контроллера сигналом от WDT. Соотношение между значениями битов и временем пересброса: PS2 PS1 PSO Время пересброса, мс: 0 0 0 16 0 0 1 32 0 1 0 64 0 1 1 128 1 0 0 256 1 0 1 512 1 1 0 1024 1 1 1 2048 — WCON.4 Не используется — WCON.3 Не используется DPS WCON.2 Бит выбора указателя DPTR. Если DPS=O, то активен основной указатель DPTR, расположенный в адресах 082Н, 083Н. Установка бита в 1 делает активным дополнительный указатель DPTR1 (084Н, 085Н) WDTRST WCON.1 Бит сброса содержимого счетчика сторожевого таймера. Его установка в 1 программой пользователя сбрасывает счетчик. Устанавливается в 0 автоматически в следующем цикле после установки его в 1. Бит только для записи WDTEN WCON.0 Бит включения/выключения сторожевого таймера (0 — выключен) Примечание. Значение регистра при сбросе — 00000010В 170
Б WDTRST. Отметим, что приведенные в табл. 12 расчетные перио- ды пересброса могут отличаться от реальных на 25...30 % как в ту, так й в другу» стороны. ПРОГРАММИРОВАНИЕ AT89S53 Микроконтроллеры AT89S53 допускают программирование как с использованием 12-вольтового интерфейса, так и 5-вольтового. Од- нако если у АТ89С51/52/55 для достижения подобной гибкости при- шлось изготавливать различные версии изделий, допускающих ра- боту только с одним из интерфейсов, то каждый из AT89S53 содержит в себе обе эти возможности. Режим параллельного программирова- ния идентичен тому, который предусмотрен для АТ89С51/52/55, ис- пользует 12-вольтовый сигнал Vpp. Пятивольтовая загрузка, делаю- щая возможным перепрограммирование микроконтроллера в аппаратуре пользователя, использует для этого интерфейс SPI. В табл. 13 описаны сигналы программирования и верификации параллельного режима программирования AT89S53. Режим последовательного программирования реализуется следую- щим образом. На вход сброса подается сигнал высокого уровня. После этого по каналу SPI должна быть передана команда разрешения про- граммирования (см. табл. 14). Отметим, что в этом режиме действует автоматическое предварительное стирание информации. Перед про- граммированием какого-либо байта не надо стирать все содержимое ПЗУ — программируемый байт очищается сам перед записью. На- помним, что на параллельное программирование это, увы, не рас- пространяется. Режим стирания очищает все содержимое ПЗУ, когда в него нужно занести новую программу, а не просто модифицировать от- дельные коды. Частота SCK при программировании не должна превышать 1/40 частоты кварцевого резонатора. Перед выдачей команды разреше- ния программирования необходима задержка не менее 10 мс. Алгоритм программирования и верификации в рассматриваемом случае должен выглядеть так: 1. Подать напряжение питания. Установить вывод RST в 1. Если тактирование осуществляется внешним источником, подать такто- вый сигнал (4...24 МГц) на XTAL1 и выдержать паузу 10 мс. 2. Разрешить последовательное программирование посылкой ко- манда разрешения программирования. Частота тактирования на SCK должна быть в 40 и более раз ниже тактовой частоты на XTAL1. 3. Программирование внутренней памяти программ осуществ- ляется побайтно. 171
го г- _____ П Режим Ьст — — рограммирование AT89S53 Таблица 13 PSEN ALE/PROG ЕА /Vpp 12 В Р2.6 Н Р2.7 L Р3.6 L Р3.7 L выводы данных Р0.0-Р0.7 X адресные выводы Р2.0-Р2,5,Р1.0-Р1.7 Стирание Н L “XT Параллельное про- граммирование ПЗУ Верификация ПЗУ Н н L L н 12 В 12 В L Н н Н прогр.данные адрес ячейки (чтение сигнатуры Atmel Чтение сигнатуры н L н 12 В L L L н 11 Н L прогр.данные считывается 1 ЕН адрес ячейки ЗОН AT89S53 L н 12 В L L L L считывается 53Н 31Н ~ ~— Установка бита защиты 1 н L ХГ н L н L Р0=011ХХХХХВ X защиты 2 Установка бита н н L ТГ 12 В н L н L Р0=101ХХХХХВ X — защиты 3 1—| L U 12 В н L н L Р0=110ХХХХХВ |х ' -’ежим и L н 12 В н Н L L считать Р0.2 (бит 1), Р0.1 (бит X последовательного 1рограммирования Разрешить н п н X X X X X X X последовательное программирование Запретить 12 В L н L н Р0.0=0 X г 1 юсл едо вател ь ное рограммирование Чтение раяр /яапр 2В ь 1 - Н э0.0=1 < — [г П н ослед, программ 1 н 1 2 В F 1 1 с читать РО.О ) < э менее 10 мс " Р^^ения/запрещения последовательного программир ования должны иметь длительность Команды последовательного программирования Таблица 14 Команда Байт 1 Байт 2 Байт 3 Производимая операция Разрешение программирования 10101100В 01010011 в ххххххххВ Разрешает программирование после RST=1 Стирание ПЗУ 10101100В хххххЮОВ ххххххххВ Очищает все 12 кбайт ПЗУ Программирование А12 А11 А10 А9 А8 А13 10В мл. байт адреса байт данных Программирует байт по выбр. адресу Чтение А12_А11_А10_А9_А8_А13_01 В мл. байт адреса ххххххххВ Разрешает чтение байта на выводе MISO Программирование битов защиты 10101100В LB1_LB2_LB3_xx111B ххххххххВ LB1 =LB2=LB3=0 для установки битов Примечание. Для индикации окончания программирования байта использовать режим DATA Polling. Типичное время программирования байта —2,5 мс, «х» — неопределено я о о J2 » о я о 2 (а Я 2 н Я Я й Я я к о со со л> Я я я л> Я я р я §« 2 2 я S. Я о О СО Га Я § я я о л> О Я и Я Я гъ я Я О со я м 5 к м я о л> § со о to S г> Я М & о о я о со я § СО о я о я о 173
AT89S53 А8...А13 В соответствии с табл. 13 ВО1г=ЦС1 3...12 МГц -у С2 Р1 VCC Р2.О-Р2.5 Р2.6 Р2.7 Р3.6 XTAL2 XTAL1 GND +5 В PGM DATA ALE «--PROG EA RST <— PSEN —| а) AT89S53 А0...А7 (0000H-27FFH) А8...А13 В соответствии с табл.13 В01г=ЦС1 3...12 МГц Т С2 Р1 Р2.0-Р2.5 Р2.6 Р2.7 Р3.6 Р3.7 XTAL2 Усс РО ALE Верифицируемые данные (выводы шины соединить с Ucc через резисторы сопротивлением 10 кОм) XTAL1 GND RST PSEN Uih б) Рис. 15. Программирование и верификация AT89S53 в режиме параллельного программирования AT89S53 Вход команд № Выход данных Тактовые » импульсы Усс P1.5/M0SI P1.6/MIS0 P1.7/SCK XTAL2 XTAL1 RST GND О+2,7...6 В BQ1 r=kC1 =F-i 3..,12МГц Т 02^ *—Uih •— Рис. 16. Программирование и верификация AT89S53 в режиме последовательного программирования 174
Таблица 16 Временные характеристики циклов программирования и верификации Символ Параметр Минимум Максимум Ед. изм Vpp Напряжение программирования 11,5 12,5 В |рр Ток программирования 1,0 мА 1 /tcLCL Частота генерации 4 24 МГц. tAVGL Время предустановки адреса 48*tcici tGHAX Время задержки адреса 48*tCLCL tDVGL Время предустановки данных 48*tciCl tGHDX Время задержки данных 48*tcLCL Iehsh Время задержки установки Vpp относительно вывода Р2.7 48*tcLCL tsHGL Время задержки сигнала PROG 10 МКС tGLGH Длительность PROG 1 110 мкс Iavqv Задержка считываемых данных относительно адреса 48*tcLCL Ielqv Задержка данных относительно ENABLE 48*tcLCL Iehqz Удержание данных 0 48*tcLCL tGHBL Задержка установления BUSY 1,0 мкс twc Длительность внутреннего цикла записи 2,0 мс гораздо чаще самой программы. Энергонезависимая внешняя память данных, размещенная на кристалле, позволяет хранить константы, таб- лицы и другие данные, которые должны допускать возможность опе- ративного изменения в процессе работы без потери их при выключе- нии питания. Параметры AT89S8252/AT89LS8252 приведены в табл. 17, цоколевка аналогична АТ89С51. Нагрузочная способность выводов аналогична АТ89С51/ AT89LV51. Напряжения на входах относительно общего провода дол- жны лежать в диапазоне от -1 до +7 В; максимальное рабочее напря- жение — 6,6 В. В режиме Power Down допустимо его снижение до 2 В. Потребление AT89S8252 на частоте 16 МГц при напряжении питания 6 В не превышает 25 мА, в режиме Idle — 6,5 мА, в режиме Power Down— 100 мкА при напряжении 6 В и 40 мкА при 3 В. Зависимость потребляемого тока от напряжения питания и частоты для AT89LS8252 аналогична приведеной на рис. 2. В микроконтроллерах AT89S8252 и AT89LS8252 сигнал ALE, как и в АТ89С51, можно программно запретить, установив в 1 бит 0 SFR- регистра, находящегося по адресу 8Е. Выводы порта РЗ выполняют те же альтернативные функции, что и у AT89S53. AT89S8252 и AT89LS8252 также снабжены SPI-интерфейсом, выполняющим все описанные выше функции. Они имеют аппаратный сторожевой тай- мер, работающий идентично таймеру AT89S53. 175
Таблица 17 176
Регистровое пространство AT89S8252 и AT89LS8252 также, как у AT89S53 расширено в сравнении с предшественниками. В нем есть регистры, обслуживающие SPI и сторожевой таймер — SPCR (0D5H), SPSR (ОААН), SPDR (086Н) и WMCON (096Н). Добавлен еще один указатель DPTR (DP1L и DP1H, находящиеся по адресам 084Н иО85Н соответственно). Переключение с основной регистровой пары на до- полнительную и обратно осуществляется битом DPS в регистре WMCON. Поскольку в этом регистре находятся также биты управле- ния Flash-памятью данных, его название несколько изменено в срав- нении с AT89S53 — WMCON вместо WCON. Регистр управления сторожевым таймером и Flash-памятью дан- ных описан в табл. 18. Таблица 18 Регистр управления WMCON Символ Позиция Имя и назначение PS2 PS1 PS0 WMCON.7 WMCON.6 WMCON.5 Эти три бита устанавливают время пересброса контроллера сигналом от WDT. Соотношение между значениями битов и временем пересброса: PS2 PS1 PS0 Время пересброса, мс: 0 0 0 16 0 0 1 32 0 1 0 64 0 1 1 128 1 0 0 256 1 0 1 512 1 1 0 1024 1 1 1 2048 EEMWE WIMCON.4 WMCON.3 Разрешение доступа к находящейся на кристалле по адресам 000H-7FFH Flash-памяти данных. Когда бит установлен в 1, и адрес лежит в вышеуказанных пределах, инструкции MOVX обеспечивают обращение к Flash-памяти данных, при нулевом значении (вне зависимости от адреса) — к внешней памяти данных DPS WMCON.2 Бит выбора указателя DPTR. Если DPS=0, то активен основной указатель DPTR, расположенный в адресах 082Н, 083Н. Установка бита в 1 делает активным дополнительный указатель DPTR1 (084Н, 085Н) WDTRST WMCON.1 Бит сброса содержимого счетчика сторожевого таймера. RDY/BSY Его установка в 1 программой пользователя сбрасывает счетчик. Устанавливается в 0 автоматически в следующем цикле после установки его в 1. Бит только для записи. Также используется как флаг, индицирующий завершение программирования ячейки Flash-памяти данных программой пользователя. Пока запись не завершена, он установлен в 0, как только Байт записан, флаг устанавливается в 1 WDTEN WMCON.O Бит включения/выключения сторожевого таймера (0 — выключен) Примечание. Значение регистра при сбросе — 00000010В 177
Для обращения к Flash-памяти данных необходимо установить в 1 бит EEMEN в регистре WMCON. В адресном пространстве внеш- ней памяти Flash-памятью данных занимает область от 0000Н до 07FFH. При обращении к ней и установленном бите EEMEN произ-; водится запись или считывание из Flash-памяти. Для обращении к обычной внешней памяти данных, расположенной в этих же адресах (если таковая имеется) необходимо предварительно занулить EEMEN. Перед записью байта во Flash-память данных необходимо устано- вить в 1 бит EEMWE регистра WMCON. Если после какого-либо мо- мента ваша программа не должна больше записывать данные во Flash- память, рекомендуется сбросить этот бит, а не держать его постоянно во взведенном состоянии. Запись байта занимает примерно 2,5 мс. Пока запись не закончена, флаг RDY/ BSY в регистре WMCON сброшен. Его установка, т. е. единичное значение бита RDY/ BSY свидетельствует о завершении текущего цикла записи и готовности к следующему. Кроме того, если запись во Flash-память данных не завершена, попытка считать байт по записываемому адресу дает значение, ком- плементарное записываемому. Как только запись окончена, считы- вание дает правильное значение. ОСОБЕННОСТИ ПРОГРАММИРОВАНИЯ AT89S8252 И AT89LS8252 Подобно AT89S53, AT89S8252 и AT89LS8252 допускают как па- раллельное (12-вольтовое) программирование, так и последователь- ное (5-вольтовое), ориентирование на перепрограммирование ПЗУ в аппаратуре пользователя. Но есть и отличие. Последние имеют два массива Flash-памяти — внутренняя память программ и внешняя с точки зрения системы команд, но находящаяся внутри кристалла, память данных. Оба режима программирования допускают занесе- ние информации как в тот, так и в другой массив. Но если при после- довательном программировании эти массивы находятся в разных адресных пространствах и для каждого из них предусмотрен свой набор команд чтения/записи (см. табл. 20), то при параллельном про- граммировании их адресное пространство едино. При этом память команд занимает адреса с 0000Н по 1FFFH, а Flash-память данных — с 2000Н по 27FFH. Таким образом, в последнем режиме пользова- тель как-бы имеет контроллер с 10-килобайтной внутренней памя- тью, подлежащей программированию, при этом первые 8 кбайт со- держат коды программ и таблицы констант, а последние 2 кбайта — оперативные данные, которые могут изменяться самим контролле- ром в процессе его работы. Соответственно, если необходимо пред- варительное занесение информации во Flash-память данных (вместе 178
с программированием ПЗУ контроллера), эти данные должны быть внесены в загружаемый в программатор файл в соответствующие адреса, и диапазон программируемых адресов устанавливается от 0000Н до 27FFH (10 кбайт). Возможно отдельное программирование Flash-памяти данных в программаторе — загружаемый в него файл должен содержать только байты памяти данных, а диапазон устанав- ливаемых адресов — лежать от 2000Н до 27FFH. Напомним, что при последовательном программировании нет необходимости стирать пе- ред записью предварительно заносившуюся в контроллер информа- цию, в то время как при параллельном необходима предварительная очистка содержимого Flash-памяти. В табл. 19 описаны сигналы программирования и верификации параллельного режима программирования AT89S53. Режим последовательного программирования реализуется как и для AT89S53. На вход сброса подается сигнал высокого уровня. После это- го по каналу SPI должна быть передана команда разрешения програм- мирования (см. табл. 20). Напомним, что в этом режиме перед про- граммированием какого-либо байта не надо стирать все содержимое ПЗУ — программируемый байт очищается перед записью сам. ОЧЕРЕДНЫЕ ДОСТИЖЕНИЯ ФИРМЫ ATMEL В ОБЛАСТИ МИКРОКОНТРОЛЛЕРОВ СЕМЕЙСТВА Х51 Микроконтроллеры фирмы Atmel [1, 2] семейства х51 являются в настоящее время, пожалуй, наиболее популярными микроконтрол- лерами среди отечественных разработчиков. Еще до появления первых микроконтроллеров семейства х51 фир- мы Atmel, это семейство уже занимало лидирующие позиции на отече- ственном и зарубежном рынке. Это обусловлено целым рядом причин. Во-первых, семейство х51 «de facto» является всемирным промышлен- ным стандартом и широко распространено во всем мире. Во-вторых, к тому времени было опубликовано достаточно много разнообразной научно-технической литературы (статей, рекомендаций по применению, книг) по аппаратной реализации этих микроконтроллеров, их програм- мированию и применению, как зарубежных, так и отечественных авто- ров. В третьих, за время существования этого семейства для него было разработано очень большое количество качественного и доступного про- граммного обеспечения: компиляторов (ASM51, C++, PL/M51, Fort51 и т. п.), дизассемблеров, программных отладчиков, эмуляторов и т. п. В четвертых, у большинства разработчиков, занимающихся микрокон- троллерной техникой, уже имелся достаточно большой опыт общения с этим семейством микроконтроллеров, изучены многие особенности 179
Таблица 19 Программирование AT89S538252 Режим RST PSEN ALE/PROG ЕА /Vpp Р2.6 Р2.7 Р3.6 Р3.7 выводы данных Р0.0-Р0.7 адресные выводы Р2.0— Р2.5, Р1 0~Р1 7 С1 Ирыние Н L 12В Н L L L X X Параллельное программирование Flash(10 кбайт); н L "~1 Г" 12В L Н н Н прогр. данные адрес ячейки Верификация Flash (10 кбайт) н L н 12В L L н Н прогр. данные адрес ячейки Чтение сигнатуры Atmel н L н 12В L L L L считывается 1ЕН ЗОН Чтение сигнатуры AT89S8252(AT89LS8252) н L н 12В L L L L считывается 72Н(82Н) 31Н Установка бита защиты 1 н L TJT" 12В Н L Н L Р0=011ХХХХХВ х Установка бита защиты 2 н L Т f" 12В Н L н L PQ-101XXXXXB х Установка бита защиты 3 н L “UT* 12В н L н L Р0=110ХХХХХВ х Чтение битов защиты н L н 12В н Н L L считать Р0.2 (бит 1), Р0.1 (бит 2), РО.О (бит 3) lx Режим поел ед о ват ел ьно го программирования н Н н X X X X X X X Разрешить последовательное программирование н L г* 12В L н L н Р0.0=0 X Запретить последовательное программирование н L г* 12В L н L н Р0.0=1 X Чтение разр./запр. послед.программ. н L н 12 В н н L н считать РО.О X менее 10Нмс ” разрешения/запРе^™я последовательного программирования должны иметь длительность не Таблица 20 Команды последовательного программирования Команда Байт 1 Байт 2 Байт 3 Производимая операция Разрешение программирования 10101100В 01010011В ххххххххВ Разрешает программирование после RST=1 Стирание ПЗУ 10101100В хххххЮОВ ххххххххВ Очищает все 8 кбайт ПЗУ и 2 кбайта ОЗУ Программирование Flash- памяти программ А12_А11 _А10_А9_А8_010В мл.байт адреса байт данных Программирует байт ПЗУ по выбр. адресу Чтение Flash-памяти программ А12_А11_А10_А9_А8_001 В мл.байт адреса ххххххххВ Разрешает чтение байта из ПЗУ на выводе MISO Программирование Flash- памяти данных 00_А10_А9_А8_110В мл.байт адреса байт данных Программирует байт ОЗУ по выбр. адресу Чтение Flash-памяти данных 00_А10_А9_А8_101В мп.байт адреса ххххххххВ Разрешает чтение из ОЗУ байта на выводе MISO Программирование битов защиты; 10101100В LB1_LB2_LB3_xx111В ххххххххВ LB1=LB2=LB3=0 для установки битов Примечание. Для индикации окончания программирования байта использовать режим DATA Polling. Типичное время программирования байта 2,5 мс, «х» — не определено я п> 2 3 2 4J я о 0=1 о я я В в Я я 2 2 я Е 2 я 4J я о 2 я я о я о я о я я о я я о' Е о о <_п од S я в я 2 я о л я л to о 2 о 2 о 2 я о я о 2 Е и 2 я я о я о я § я я я я я о 2 2 я о в в Е и 2 я я о я о я о я я я л о 2 2 я 2 я я о я о я о я я о л to я о и я Е я 2 2 §я !£ о °° и Л о т-' я я о о я о о я Е о я о я о § л о> я 2 о> я< 2 я я о о § я р о .я я я и о 2 я 2 Е и в § я л о я о to я я to 2 я н я 5 о 2 2 я to в о> я я и to о о> я я о я л в я С х СЛ я Я О to 9х В я с Е а § я * 2 О я и
Flash) AT89S(LS) 53/8252 и AT89S4D12. Появление этого поколения мик- роконтроллеров значительно облегчило жизнь разработчиков на этапе написания и отладки программного обеспечения за счет наличия встро- енной Flash памяти программ с достаточно простой процедурой про- граммирования. Кроме того, использование микроконтроллеров АТ89 позволило получить более высокие результаты при создании микро- контроллерных систем в плане снижения энергопотребления (за счет полностью статической структуры микроконтроллеров) и сокращения аппаратных затрат (за счет наличия встроенной Flash памяти различно- го объема и отсутствия необходимости в дополнительных логических элементах для организации внешней подсистемы памяти программ). Вышеперечисленные преимущества сделали первое поколение семей- ства АТ89 неимоверно популярным (особенно первые две группы). За последние несколько лет фирма Atmel создала достаточно много новых интересных микроконтроллеров семейства х51 — так называе- мое второе поколение. На сегодняшний день семейство представлено двеннадцатью группами, включающими около 70 микроконтроллеров! Прежде чем ознакомиться с каждой из групп, необходимо озна- комиться с принятой терминологией, основными сокращениями и понятиями. Многие из микроконтроллеров фирмы Atmel оснащены встроен- ной Flash памятью программ — IROM (Internal ROM) и встроенной основной оперативной памятью — IRAM (Internal RAM). Некоторые современные микроконтроллеры второго поколения имеют кроме IRAM еще и встроенную дополнительную оперативную память — XRAM (Extended RAM), что безусловно делает эти микросхемы еще более мощными и привлекательными. Кроме того, некоторые микро- контроллеры имеют встроенную Flash память данных — IDROM (Internal Data ROM), которая может использоваться для хранения на- страиваемых параметров, сетевых адресов и другой информации. Практически все микроконтроллеры со стандартным или расши- ренным набором линий ввода/вывода (или портов) обладают воз- можностью работы с внешней памятью программ или данных. В при- веденных ниже таблицах в графе ЕМ (External Memory) плюсом отмечена такая возможность. Если в этой колонке проставлен «ми- нус» — микроконтроллер не может работать с внешней памятью. Как правило, это связано с уменьшенным (ограниченным) количеством линий ввода/вывода вследствие исполнения микросхем в маловы- водном корпусе. Микроконтроллеры семейства х51 в стандартной конфигурации (в стандартных корпусах) обеспечивают работу с внешней памятью объемом до 64К. Микроконтроллеры, у которых в соответствующей колонке проставлен другой меньший объем памя- 182
ти имеют уменьшенное количество линий ввода/вывода. Если объем адресуемой памяти больше 64К, микроконтроллеры имеют расши- ренную шину адреса или аппаратный диспетчер памяти. Различные микроконтроллеры имеют различное количество пор- тов ввода/вывода, и соответственно, различное количество линий ввода/вывода—I/O (Input/Output Lines). Микроконтроллеры семей- ства х51 в стандартной конфигурации имеют 4 порта или 32 линии ввода/вывода. У других микроконтроллеров количество линий мо- жет отличаться в большую или меньшую сторону. Все микроконтроллеры семейства х51 имеют встроенных после- довательный порт — SP (Serial Port). Наличие плюса в одноименной колонке означает наличие стандар- тного последовательного порта. Некоторые микроконтроллеры в со- ответствующей колонке имеют вместо плюса букву «Е» (Enhanced) — с расширенными возможностями, например, с автоматическим обна- ружением ошибки фрейма, автоматическим определением адреса, с специализированным генератором скорости передачи и т.д. Все микроконтроллеры семейства х51 имеют несколько таймеров/ счетчиков общего назначения Т/С (Timer / Counter) и источников пре- рывания IS (Interrupt Source). Количество этих периферийных уст- ройств указано в соответствующих колонках. В некоторых микрокон- троллерах имеется также встроенный аппаратно реализованный последовательный периферийный интерфейс — SPI (Serial Peripheral Interface). Для выхода из возможных состояний «зависания» микро- контроллера служит аппаратно реализованный сторожевой таймер WDT (Watchdog Timer), включаемый в состав периферийных узлов многих микроконтроллеров второго поколения. В некоторых микро- контроллерах, выпускаемых в малых корпусах с сокращенным набо- ром линий ввода/вывода (Small Footprint), имеется встроенный анало- говый компаратор — AC (Analog Comparator). Некоторые современные микроконтроллеры оснащаются двумя регистрами-указателями дан- ных DPTR (Data Pointer Register), что позволяет создавать для них бо- лее эффективное программное обеспечение. Большинство микроконтроллеров первого поколения програм- мировались на специальных параллельных программаторах. Мно- гие микроконтроллеры второго поколения позволяют производить программирование непосредственно в изделии через специальный узел — ISP (In-System Programmable Flash). При этом процедура про- граммирования предполагает подачу на микроконтроллер некоторых управляющих сигналов. Некоторые последние версии микроконтрол- леров имеют так называемую загрузочную программу (Boot), упро- щающую режим программирования. 183
В последнее время, наряду с перепрограммируемыми Flash-мик- ропроцессорами, фирма Atmel выпускает также так называемые одно- кратно программируемые Flash-микропроцессоры (без возможности стирания Flash памяти) — OTP (One-Time Programmable), микроконт- роллеры с масочным ПЗУ (ROM), запрограммированным на этапе производства и микроконтроллеры без встроенной памяти программ (ROMless), обеспечивая тем самым все потребности рынка. Рассмотрим современное состояние семейства х51 микроконтрол- леров. Первая группа микроконтроллеров — перепрограммируемые микроконтроллеры с Flash-памятью программ в стандартном кор- пусе (см. табл. 21) практически не изменилась, за исключением того, что в нее включены микроконтроллеры AT89C55WD AT89C51RC, со- держащие 20К и 32К Flash-памяти программ, аппаратно реализован- ный WDT, оснащенные два DPTR и работающие на частотах до 33 МГц. По оценкам экспертов, наибольшей популярностью в этой группе пользуется стандартный АТ89С52 микроконтроллер. Таблица 21 Перепрограммируемые Flash микроконтроллеры в стандартном корпусе Тип IROM, К IRAM, Ь 5 ш g SERIAL I т/с со £L CO WDT DPTR Vcc, V < s о о Fmax, MHz Корпус АТ89С51 4 128 + 32 + 2 6 — — 1 4—6 20 24 DIP40, PLCC44, PQFP44 AT89LV51 4 128 + 32 + 2 6 — — 1 2,7—6 20 12 DIP40, PLCC44, PQFP44 АТ89С52 8 256 + 32 + 3 8 — — 1 4—6 25 24 DIP40, PLCC44, PQFP44 AT89LV52 8 256 + 32 + 3 8 — — 1 2,7—6 25 12 DIP40, PLCC44, PQFP44 AT89LV55 20 256 + 32 + 3 8 — — 1 2,7—6 25 12 DIP40, PLCC44, PQFP44 AT89C55WD 20 256 + 32 + 3 8 — + 2 4—5,5 25 33 DIP40, PLCC44, PQFP44 АТ89С51RC 32 512 + 32 + 3 8 — + 2 4—5,5 30 33 DIP40, PLCC44, PQFP44 184
Вторая группа микроконтроллеров в малогабаритном корпусе с усеченным набором портов приведена в табл. 22. Наиболее популя- рен в этой группе микроконтроллер АТ89С2051, обеспечивающий наилучшее соотношение цена/качество. Третья группа микроконтроллеров с внутрисистемным программи- рованием ( табл. 23), пожалуй, является наиболее интересной для ши- рокого круга разработчиков. В эту группу входят и известные читателю микроконтроллеры первого поколения AT89S53 и AT89S8252 (и их ана- логи с пониженным напряжением питания AT89LS53 и AT89LS8252), и аналоги микроконтроллеров первой группы АТ89С51/52 с добавленной возможностью внутрисистемного программирования — AT89(L)S51/ 52, и ряд новых малоизвестных микроконтроллеров T89C51RB2/RC2/ RD2/IC2/AC2. Главными отличиями этих новых микроконтроллеров (Т89С51ххх) являются два DPTR, встроенный аппаратный WDT, встро- енный режим ISP, большой объем Flash памяти программ, наличие у части из них дополнительной оперативной памяти данных XRAM (+1 кбайт), встроенного последовательного порта с дополнительны- ми возможностями. Кроме того, все они оснащены так называемым Х2 режимом ускорения (машинный цикл содержит 6 тактов, а не 12, Таблица 22 Перепрограммируемые Flash микроконтроллеры в малогабаритном корпусе ТИП IROM, К | IRAM, b 2 ш о SERIAL | т/с СО о. со WDT FUNCTION DPTR > о о > < S о о Fmax, MHz Корпус AT89C1051U 1 64 — 15 + 2 6 — — АС 1 2,7-6,0 15 24 DIP20, SOIC20 АТ89С2051 2 128 — 15 + 2 6 — — АС 1 2,7-6,0 15 24 DIP20, SOIC20 АТ89С4051 4 128 — 15 + 2 6 — — АС 1 2,7-6,0 15 24 DIP20, SOIC20 как у стандартного семейства х51). Это позволяет им на тактовой час- тоте 20 МГц работать также быстро, как стандартные микроконтрол- леры работали бы на частоте 40 МГц. В то же время, они могут рабо- тать и в стандартном режиме (12 тактов/цикл) на частотах до 40 Мгц. Микроконтроллеры RC2 и RD2 имеют дополнительную загрузочную память с программой загрузки Boot, что значительно упрощает про- граммирование. Микроконтроллер RD2 в увеличенном корпусе имеет 185
Внутрисистемно программируемые Flash микроконтроллеры О Е О. О DIP40.PLCC44.PQFP44 DIP40.PLCC44.PQFP44 DIP40.PLCC44.PQFP44 DIP40.PLCC44.PQFP44 DIP40,PLCC44,PQFP44 2 LL a CL 3 О _J CL О CL О DIP40,PLCC44,PQFP44 SOIC28.PLCC32 3 LL a CL 3 О _J CL o’ CL O DIP40,PLCC44,PQFP44 DIP40,PLCC44,PQFP44 PLCC68VPQFP64 3 LL О 3 Q CL PLCC44.VQFP44 hjIAI ‘XBiuj CO co 33 CD 33 04 33 04 1П О О О co co 40 40 а ‘ээд 1П in о 4,0...5,5 2,7...4,0 О CD О О cd" 04" 4.0...6.0 О cd" 04’ 3,3 1П CD in" co in h- 04’ 4,5...5,5 2,7...3,6 in in in" in’ in о co’ in CD in" co" in h- 04’ in in in MldQ 04 04 04 04 04 04 04 04 04 04 04 04 04 NOIJLONHd 1 I I I I | X2 X2, Boot X2, Boot X2, I2C, Boot X2, Boot, ADC8‘1 0 ЮМ + + + + + + + I + + + + + A|UO dSI . / Ids + « * « + + + + + + + k + « SI CD 00 00 CD CD CD CD I о о r- о V“ T— 0/1 04 co co CO CO CO CO I co co co CO co iHOd iviaas + + + + + + + I LU LU LU + LU 0/1 04 CO 04 CO 04 CO 04 CO 04 CO 04 CO 04 CO 1П 04 CO 04 CO 04 CO 48 32 34 1Л13 + + + + + + + I + + + + + Я ‘WOMUI 1 I I I I 04 04 co I I 04 I 04 q ‘iaivhx / iaivhi I 128 | 256 CD 1П 04 I 256 CD 1П 04 256 256 256 256/1024 256/1024 256/1024 256/1024 256 Я ‘IAIOMI 00 00 04 04 00 00 CD 04 CO 3 32 32 Тип AT89S51 AT89S52 AT89LS52 AT89S53 AT89LS53 AT89S8252 AT89LS825 2 AT89S4D12 T89C51RB2 T89C51RC2 T89C51RD2 T89C51IC2 T89C51AC2 дополнительный пятый порт, т. е. количество линий ввода/вывода равно 48. Микросхема IC2 имеет встроенный аппаратный интерфейс 12С, микросхема АС2 — встроенный восьмиканальный десятиразряд- ный аналого-цифровой преобразователь — ADC (Analog to Digital Convertor). Все перечисленные новшества в совокупности со встроен- ной Flash памятью программ делают эти микроконтроллеры незаме- нимыми для многих изделий. В четвертую группу семейства входят однократно программиру- емые Flash-микроконтроллеры (табл. 24), имеющие меньшую сто- имость, чем перепрограммируемые и более высокую надежность (за счет невозможности случайного изменения содержимого памяти Таблица 24 Однократно программируемые Flash микроконтроллеры Тип OTP, К I IRAM/ XRAM, b I s Ш о SERIAL PORT О CL (0 WDT FUNCTION DPTR Vcc, В Fmax, МГц Корпус T87C5101 16 256/ 256 16K 18 E 3 6 2 4,5- 5,5 66 DIL24, SO24, TSSOP24 22 SO28 T87C5111 4 256 16- 22 E 2 8 + + X2, ADC 8*10 1 2,7- 5,5 33 SSOP16, SO24.DIL24 программ). Следует обратить внимание читателя на кристаллы TS87C51U2, имеющий два независимых расширенных последователь- ных порта, и TS87C52X2, способные работать на частотах до 66 МГц. Пятая группа микроконтроллеров (табл. 25) представлена двумя представителями. Первый из которых — Т87С5101 — способен ра- ботать на частотах до 66 МГц. Второй — Т87С5111 — имеет встроен- ный восьмиканальный десятиразрядный ADC в корпусе SSOP16. Шестая и седьмая группы микроконтроллеров (табл. 26 и 27) пред- ставлена уже знакомыми читателю кристаллами, снабжаемыми ма- сочными ПЗУ программ. Кроме того, фирма Atmel выпускает ряд вышеописанных мик- роконтроллеров вообще без встроенной памяти программ (табл. 28). Девятая группа микроконтроллеров включает так называемые микроконтроллеры семейства С251(табл. 29). По сравнению с обычными х51 контроллерами, С251 имеют расширенное адрес- ное пространство внешней памяти до 256К, 8/16 битную архитек- туру, увеличенное IRAM — 1К. Периферия микроконтроллеров 186 187
Таблица 25 Однократно программируемые Flash микроконтроллеры в малогабаритном корпусе Тип | ОТР.К | IRAM/ XRAM, Ь 2 ш о SERIAL PORT I э/± EL СО I WDT L FUNCTION DPTR CQ о" о > Fmax, МГц Корпус Т87С510Т 16 256/256 16К 18 Е 3 6 — — — 2 4,5- 5,5 66 DIL24, SO24, TSSOP24 22 SO28 Т87С5111 4 256 16- 22 Е 2 8 + 4- Х2, AD С 8*1 0 1 2,7- 5,5 33 SSOP16, SO24, DIL24 дополнена SSLC интерфейсом (Synchronous Serial Link Controller), обеспечивающим работу по PC, MicroWire и SPI протоколам, ап- паратную поддержку реализации клавиатуры и специальный ге- нератор скорости для последовательного канала. Еще раз подчер- кнем, что эти микроконтроллеры совместимы с х51 как по разводке выводов, так и на уровне программного обеспечения (Software). Микроконтроллеры С251 имеют 16 или 32 битное расширенное ALU (арифметико-логическое устройство), в систему прерываний добавлено немаскируемое прерывание NMI (Non Maskable Interrupt), а также вход готовности WAIT (Real-Time Wait States Input). Эти микроконтроллеры применяются в высокоскоростных модемах, ISDN терминалах, DVD ROM и плеерах, принтерах, ска- нерах и другой технике. Одна из последних разработок фирмы Atmel — микроконтрол- леры, оснащенные модным сегодня аппаратным CAN интерфейсом (версии 2.0А, 2.0В), также ожидает своих потребителей и поклон- ников. Не менее интересна и другая новинка (табл. 31) — микроконт- роллеры семейства х51 со встроенным MP3 считывателем-декодером с поддержкой частот от 16 до 48 кГц. Микросхема обеспечивает раз- дельный цифровой амплитудный контроль правого и левого кана- лов, 31-ступенчатое управление амплитудно-частотной характерис- тикой воспроизведения на низких, средних и высоких частотах, некоторые музыкальные эффекты, индикаторы. Кроме музыкальных узлов, микросхема имеет большой набор интерфейсов USB, MultiMediaCard, SPI,IDE/ATAPI, двухканальный десятиразрядный ADC, стандартный последовательный порт с выделенным генерато- 188
Таблица 26 Микроконтроллеры с масочным ПЗУ Тип I ROM, К I IRAM, b I IDROM, К I s ш о SERIAL PORT I Т/С I К (О | ±ам ] FUNCTION I DPTR I Vcc, В Fmax, МГц Корпус TS83C51RB2 16 256/ 1024 + 32 Е 3 10 + + Х2 2 4,5— 5,5 2,7— 3,6 40 D1P40, PLCC44, PQFP44 TS83C51RC2 32 256/ 1024 + 32 Е 3 10 + + Х2, Boot 2 4,5— 5,5 2,7— 3,6 40 DIP40, PLCC44, PQFP44 TS83C51RD2 64 256/ 1024 2 + 32 Е 3 7 * + Х2, Boot 2 4,5— 5,5 3,0— 5,5 40 33 №40, PLCC44, PQFP44 TS83C51U2 16 256 32 2Е 3 7 Х2 2 4,5— 5,5 2,7— 3,6 2x3 0 №40, PLCC44, VQFP44, CQFP44, CDIL40 Т83С5112 8 256 — + 40 Е 2 8 — + ADC 8*10 1 4,0— 5,5 33 PLCC52, LQFP48 TS80C52X2 8 256 — + 32 Е 3 6 — — Х2 2 4,5— 5,5 2,7— 5,5 2x3 0 . DIL40, PLCC44, VQFP44 TS80C54X2 16 256 32 Е 3 6 + Х2 2 4,5— 5,5 2,7— 5,5 40 30 PDIL40, PLCC44, VQFP44, CQFP44, CDIL40 TS80C58X2 32 256 32 Е 3 6 + Х2 2 40 30 PDIL40, PLCC44, VQFP44, CQFP44, CDIL40 ром скорости, 2Wire контроллер, ISP. Еще одна новинка — специализированная двенадцатая группа микроконтроллеров со встроенным декодером Smart Card. Ожидает- ся, что эти микроконтроллеры найдут широкое применение в ряде кассовых аппаратов, весов, системах охранной сигнализации. Описанные выше микроконтроллеры второго поколения се- мейства х51 показывают современные тенденции развития и рос- та этого семейства. Надеюсь, что приведенная информация буде 189
Таблица 27 Микроконтроллеры с масочным ПЗУ в малогабаритном корпусе Тип ROM, К IRAM / XRAM, b 2 ш О SERIAL PORT Т/С S2 О. СО WDT FUNCTION DPTR со о о > Fmax, МГц I о Е О. О Т83С5101 16 256/ 256 16К 18/22 Е 3 6 — — — 2 4,5- 5,5 66 DIL24, SO24, TSSOP24 Т83С5102 8 256/ 256 8К 18/22 Е 3 6 — — — 2 4,5- 5,5 66 DIL24, SO24, TSSOP24 Т83С5111 4 256 16/22 Е 2 8 4- + Х2, ADC 8*10 1 2,7- 5,5 33 SSOP16, SO24, DIL24 Таблица 8 Микроконтроллеры без встроенной памяти программ Тип IRAM / XRAM, b IlDROM, К | 2 ш о SERIAL PORT I О со Е СО WDT I FUNCTION DPTR I СО о" о > Fmax, МГц Корпус TS80C51RA2 256/ 256 — + 32 Е 3 7 — + Х2 2 4,5-5,5 2,7-5,5 2x3 0 PDIL40, PLCC44, VQFP44 TS80C51RD2 256/ 1024 2 + 32 Е 3 7 — + Х2, Boot 2 4,5-5,5 3,0-5,5 40 33 DIP40, PLCC44, PQFP44 Т80С5112 256 — + 40 Е 2 8 — + ADC 8*10 1 4,0-5,5 33 PLCC52, LQFP48 TS80C51U2 256 + 32 2Е 3 7 + Х2 2 4,5-5,5 2,7-3,6 2x3 0 DIP40, PLCC44, VQFP44, CQFP44, CDIL40 TS80C31X2 128 — + 32 Е 2 5 — — Х2 2 4,5-5,5 2,7-5,5 2x3 0 DIL40, PLCC44, VQFP44 TS80C32X2 256 — + 32 Е 3 6 •— — Х2 2 4,5-5,5 2,7-5,5 2x3 0 DIL40, PLCC44, VQFP44 полезна многим специалистам в области микроконтроллерной техники и еще больше поднимет интерес к замечательной продук- ции фирмы Atmel. 190
Таблица 29 Микроконтроллеры с архитектурой С251 Тип IROM, К IRAM, b 2 ш О SERIAL PORT о о. со WDT Vcc, V/lcc, mA/Fmax, МГц Корпус TSC80251G2D — 1К 256 К 32 + 3 + + 2,7-5,5 В/11мА/ 16 МГц 4,5-5,5 В/35 мА / 24 МГц DIP40, PLCC44, PQFP44 TSC83251G2D 32 1К 256 К 32 + 3 + TSC87251G2D 32 1К 256 К 32 + 3 + + Таблица 30 Микроконтроллеры с CAN интерфейсом Тип IROM, К IRAM/ XRAM, b IDROM, К s ш о SERIAL PORT т/с со Q. СО WDT DPTR СО о о > Fmax, МГц Корпус Т89С51СС01 32 256/ 1К 2 + 34 + 3 14 Е 2 5/3 40 PLCC44, VQFP44, CA-BGA64 Т89С51СС02 16 256/ 256 2 + 16/ 20 + 3 14 Е 2 5/3 40 PLCC28, SOIC28 Таблица 31 Микроконтроллеры со встроенным декодером MP3 Тип ROM, К IRAM, b s LU о SERIAL PORT T/c I (O cl co WDT co о о > | Fmax, МГц | Корпус AT83C51SND1A 64 (ROM) 230 4 + 32 + 2 8 + + 5/3 40 PLCC84, TQFP80 AT89C51SND1A 64 (Boot Flash) Рассмотренные нами х51-совместимые контроллеры фирмы Atmel завоевали в последние годы широкую популярность как бла- годаря удивительно низким ценам, так и вследствие их прекрасных характеристик. Мы убедились, что в составе рассмотренного семей- 191
Таблица 32 Микроконтроллеры со встроенным декодером Smart Card Тип Code Memory, к XRAM,b s Ш о SERIAL PORT I I o/i i w 0. w WDT DPTR | Vcc, В Fmax, МГц Корпус Т83С5121 16 (ROM) 256 14 E 2 2,85—5,4 16 PLCC52, SSOP24 Т85С5121 16(RAM) Т89С5121 16 (Flash) + 16 (RAM) ства есть и стандартные контроллеры, являющиеся практически пол- ными аналогами классических изделий Intel, и контроллеры, упако- ванные в малогабаритный 20-выводный корпус, и изделия с распо- ложенной на кристалле 2-килобайтной Flash-памятью данных, внешней с точки зрения системы команд. Подобная гибкость в соче- тании с высокими тактовыми частотами, низким энергопотреблени- ем и хорошей устойчивостью к снижению питающего напряжения делает контроллеры Atmel прекрасной базой для разработок наших соотечественников, которые давно ориентированны на использова- ние семейства MCS-51, имеют программные и аппаратные средства поддержки разработки, а также весьма значительный объем нарабо- танного программного обеспечения. И в завершение нельзя не отметить следующее. Помимо х51-со- вместимых изделий, в последние два года Atmel выпустила совер- шенно уникальные RISC-контроллеры семейства AVR. Эти контрол- леры, имеющие очень много общих аппаратных черт с семейством АТ89, обеспечивают на порядок более высокую производительность при более низком энергопотреблении. Atmel и ряд других фирм сво- бодно распространяют не только техническую информацию об этих изделиях, но и макроассемблеры, Си-компиляторы, кросс-средства (симуляторы). Автор предполагает, что AVR являются прекрасной основой для новых разработок и рекомендует читателям ознакомить- ся с этими интересными изделиями.
Приложение 5________ ВОЗДЕЙСТВИЕ СРЕДСТВ ПОДДЕРЖКИ РАЗРАБОТКИ НА РЫНОК МИКРОКОНТРОЛЛЕРОВ Один из непростых вопросов, который регулярно беспокоит прак- тически любого разработчика — какой микроконтроллер (МК) ис- пользовать в качестве ядра создаваемой системы? Вопрос выбора кон- троллера имеет принципиальное значение, поскольку его результат во многом предопределяет не только совокупность возможных тех- нических характеристик будущей системы, но и весь спектр потен- циальных проблем, связанных с процессом разработки, производ- ства, реализации и возможных доработок в будущем. В этом разделе мы попытались проанализировать отношение отечественных разра- ботчиков встраиваемых систем к различным семействам микрокон- троллеров, полагая, что знакомство со своеобразным рейтингом по- пулярности для кого-то будет просто интересно, а кому-то, возможно, и поможет в практической работе. Наиболее общей и объективной характеристикой, отражающей сравнительную популярность различных семейств МК, могло бы слу- жить распределение разрабатываемых устройств, в которых приме- нены соответствующие микроконтроллеры. К сожалению, в настоя- щее время в нашей стране не существует какого-либо исследовательского центра, который располагал бы достоверной и полной статистикой рынка встраиваемых систем. В западных инфор- мационных источниках можно найти данные, отражающие объемы продаж микроконтроллеров различных семейств. Однако подобная информация не позволяет судить о популярности семейств среди разработчиков, поскольку не отражает тиражность различных изде- лий, да и характеризует она прежде всего тенденции западного рын- ка. Достоверных данных по объемам продаж микроконтроллеров на 193
отечественном рынке, по понятным причинам, найти не удалось. В этих условиях мы решили воспользоваться собственной статисти- кой и опытом, накопленными за одиннадцать лет присутствия на отечественном рынке в качестве разработчиков и производителей ин- струментальных средств. В качестве оценки распределения в современных отечественных встраиваемых системах долей применения микроконтроллеров раз- личных семейств, мы решили использовать распределение соответ- ствующих инструментальных средств, приобретаемых отечествен- ными разработчиками. Можно ли судить о популярности того или иного семейства, исходя из сравнительных характеристик числа про- даж соответствующих инструментальных средств, и более того, по- лученных по данным только одного участника рынка? На оба вопро- са, как нам кажется, можно дать положительный ответ, исходя из нижеследующих соображений: 1. Когда нет или недоступна статистика по интересующему воп- росу, вполне допустим подход, когда соответствующая оценка стро- ится по косвенным параметрам. 2. Само по себе количество проданных инструментальных средств не позволяет говорить о точном количестве производимых с его по- мощью изделий. Но поскольку производительность труда владель- цев различных инструментальных средств приблизительно одина- кова, связь количества проданных инструментальных средств с числом разработок вполне очевидна. 3. Не все разработчики используют инструментальные средства, и не все владельцы инструментальных средств приобрели их в фир- ме «Фитон», следовательно наши абсолютные числа не отражают об- щего количества разработчиков. Но учитывая то обстоятельство, что среди наших потребителей присутствуют представители всех регио- нов, всех форм собственности и практически всех уровней профес- сионального мастерства, можно обоснованно считать, что наша ста- тистика отражает качественные тенденции. Сразу оговоримся, что говоря о популярности того или иного се- мейства мы далеки от того, чтобы отождествлять эту популярность с превосходством технических характеристик. Далее, в сферу нашего рассмотрения не попали микроконтроллеры с 4- и 32-разрядными ядрами. В нашей статистике не представлены данные по ряду 8- и 16- разрядных семейств. Причин здесь несколько. Для некоторых из этих семейств мы не располагаем инструментальными средствами, соот- ветственно нет и данных. Мы не стали включать в наш рейтинг мик- роконтроллеры семейства AVR фирмы Atmel, поскольку доступны- ми эти кристаллы стали относительно недавно. Тем не менее, по ряду 194
причин, учитывая их объективно привлекательные технические ха- рактеристики и растущий интерес к ним разработчиков, с уверенно- стью можно предположить, что уже в ближайшем будущем это се- мейство займет свое место в верхних строчках нашего рейтинга. Итак, статистика продаж инструментальных средств для различ- ных семейств за период времени с января 1997 по январь 2002 гг., представлена на рис. 1. При построении диаграммы учитывались только продажи внутрисхемных эмуляторов, отладчиков и программ- ных симуляторов для соответствующих семейств. Продажи оценоч- ных плат (плат развития) в расчет не принимались. 1997... 1999 гг. □ 8051 BMCS-48 □ PICmicro □Zilog HMCS-196 a Motorola 2000...2001 гг. Рис, 1 Вряд ли кого-либо удивит, что несомненным лидером оказалось семейство 8051. На наш взгляд объяснением этому есть ряд причин: 1. Появившись одним из первых и обладая удачной архитекту- рой и удобной системой команд, семейство 8051 стало своеобразной классикой. Большинству разработчиков со стажем оно хорошо изве- стно по отечественному клону микроконтроллера 8051. 2. Благодаря разумной и дальновидной политике фирмы Intel, разрешившей клонирование своих кристаллов, последующий ее уход с рынка 8-разрядных микроконтроллеров не привел к каким-либо потерям для потребителя. Исключения составляют разве что 8хС51GB и 80C152Jx — эти кристаллы не имеют своих точных аналогов среди изделий других фирм. Большое количество производителей — Atmel, Analog Devices, Dallas, Maxim, Infineon (бывший Siemens), ISSI, Oki, Philips, Signal, SST, Temic, Triscend, Texas Instruments, MHS, LG, Winbond, WSI, Silicon Systems и ряд других — не только продолжили 195
начатое, но и наполнил рынок большим количеством микроконтрол- леров с функциональными характеристиками и набором периферий- ных устройств на любой вкус. 3. Популярность семейства во всем мире привела к появлению большого количества фирм-производителей соответствующих кросс- средств и инструментальных средств, в том числе и отечественных. 4. Большое количество конкурирующих производителей неизбеж- но приводит к снижению цен и а кристаллы, в результате чего по по- казателю «функциональные характеристики/цена» микроконтролле- ры семейства 8051 никому явно не уступают. 5. Большое количество производителей и наличие их представи- телей и дистрибьюторов в России делают микроконтроллеры 51-го семейства легко и широко доступными. В различной отечественной периодической литературе описанию этих МК было посвящено много строк. Однако наиболее интересные, на наш взгляд, изделия освещены крайне плохо. К тому же многие раз- работчики плохо представляют, сколь широк и интересен спектр пред- ложений по 51-м контроллерам у Philips, Atmel, Winbond, Dallas, Maxim, Siemens, Triscend, SST, STMicroelectronics и некоторых других фирм. Приводимая ниже информация должна восполнить этот пробел. Хотелось бы повторить еще раз. Приведенные характеристики некоторых представителей семейства 8051 не следует воспринимать как свидетельство определенной его исключительности или, наобо- рот, безнадежного отставания микроконтроллеров других семейств. По крайней мере мы так не считаем. Практически в любом семействе есть множество микроконтроллеров, обладающих не менее привле- кательными характеристиками. Более подробно остановиться на ха- рактеристиках МК этого семейства мы решили, в основном, но двум причинам. Во-первых, чтобы частично восполнить информацион- ный вакуум. Во-вторых, чтобы развеять или опровергнуть те слухи о «закате» и «умирании» семейства, которые иногда циркулируют в среде разработчиков. Говоря о популярности различных семейств микроконтроллеров, нелишне будет сравнить значимость различных факторов, влияю- щих на популярность среди отечественных и зарубежных разработ- чиков. Так, по данным исследовательского центра Harbor Research, Inc., полученным в результате анкетирования, значимость факторов, влияющих на выбор семейства микроконтроллеров для новой раз- работки, представлена следующим образом (рис. 2). Что в первую очередь бросается в глаза (и отличает систему при- оритетов отечественного разработчика) — это отсутствие фактора «доступность» и сравнительно низкая зависимость от имеющихся ин- 196
□ Цена Рис. 2. □ Прежний опыт Технические х-ки □ Имеющиеся инструментальные средства □ Прочее___________ струментальных средств. В наших условиях фактор «доступность» пока еще продолжает играть очень заметную роль. Да и фактор «име- ющиеся инструментальные средства» имеет гораздо большее значе- ние, особенно если в это понятие включать и кросс-средства. Не сек- рет, что большинство отечественных разработок пока не могут похвастать большими тиражами, и поэтому доля стоимости инстру- ментальных и кросс-средств в удельной себестоимости единицы из- делия в подобных малотиражных изделиях оказывается большей, что и служит определенным тормозом в освоении новых семейств с од- ной стороны и повышает популярность тех семейств, для которых кросс-средства и/или инструментальные средства более доступны по цене. Отсюда и тот успех, которого смогла добиться фирма Microchip, в частности и на нашем рынке. А вот как по данным того же исследования, влияют различные факторы на выбор конкретного микроконтроллера (рис. 3). Столь низкое значение фактора «инструментальные средства» легко объяснимо с учетом данных того же исследования, показыва- ющих степень оснащенности инструментальными средствами об- следованных разработчиков (напомним — западных). На диаграм- ме приведены данные по испытываемой в процессе новой разработки потребности обследованных разработчиков в различных инструмен- тальных средствах (рис. 4). По нашим данным, отечественные разработчики пока еще суще- ственно отстают по степени оснащенности от своих западных кол- лег, но очевидно, что по мере развития рынка в нашей стране неиз- бежно будет происходить сближение основных тенденций. И наконец, 197
Я Цена Рис. 3. □ Прежний опыт □ Технические х-ки Я Имеющиеся инструментальные средства □ Прочее □ Ничего Оценочная плата в Анализатор эффективности ®Компилятор S Эмулятор И Симулятор й Ассемблер Рис. 4. последняя тенденция, отмеченная в уже цитированном исследова- нии, — быстрый рост популярности инструментальных средств, объе- диняемых так называемыми интегрированными средами разработ- ки. (Integrated Development Environment (IDE)). Интересно, что аналогичная тенденция наблюдается и среди наших разработчиков, что отнюдь не удивительно, учитывая те удобства и преимущества, которые предоставляют современные инструментальные средства разработчику. А теперь — обещанная информация по малоосвещепным в оте- чественной литературе микроконтроллерам семейства х51. 198
МИКРОКОНТРОЛЛЕРЫ ФИРМЫ PHILIPS SEMICONDUCTORSB Philips SemiconductorsB — лидер по количеству выпускаемых ею модификаций семейства 8051 (их у нее более 100). В состав семейства 8051 от PhilipsB входят микроконтроллеры в корпусах от 14 до 80 выводов, с тактовыми частотами до 40 МГц и напряжением питания от 1>8 В. Основные элементы периферии Philips: • 10-разрядные АЦП; • широтно-импульсные модуляторы; • массивы программируемых счетчиков-таймеров; • интерфейсы PC, CAN, UART; • интерфейсы с процессорными шинами; • EEPROM и Flash на кристалле; • Flash с режимами самопрограммирования (IAP) и последова- тельного программирования (ISP); • поддержка до 16 Мбайт линейного адресного пространства про- граммной памяти; • специализированная периферия для телевизионной, видео- и аудиотехники. И по сей день наиболее популярными разновидностями семей- ства 8051 фирмы Philips являются микроконтроллеры групп 80С51, 80С52/54/58, 80C51FA/FB/FC. Основные архитектурные решения этих кристаллов были заложены фирмой Intel еще в 80-е годы, но здесь мы хотим обратить ваше пристальное внимание на фирмен- ные особенности микроконтроллеров от Philips, выделяющих их из общего ряда стандартных микросхем этого семейства. За последние годы фирма Philips осуществила перевод стандартных микроконт- роллеров групп 80С51, 80С52/54/58 и 80C51FX на новое ядро, кото- рое она назвала 80С51+. Кроме того, фирма Philips выпустила группу микроконтроллеров, названную RX+. По сути это дальнейшее раз- витие группы FX, в которой расширен объем внутреннеого ОЗУ (512 байт, 1 кбайт) и программной памяти (до 64К). Группа RX+ обладает также всеми возможностями, предоставляемыми техно- логией нового ядра. Основные отличительные особенности микроконтроллеров с яд- ром 80С51+ следующие: • использование Flash-памяти объемом от 4 до 64К в качестве внут- ренней памяти программ; • максимальная тактовая частота увеличена до 33 МГц; • минимальная частота доведена до 0, т. е. тактовая частота может быть отключена без разрушения данных в регистрах и оператив- ной памяти; • расширен диапазон напряжения питания от 2,7 до 5,5 В; 199
• количество аппаратных уровней прерываний увеличено до че- тырех; • во все кристаллы введена функция программируемого clock-ou^ • UART заменен на улучшенный (enhanced); • добавлена функция снижения электромагнитных помех (Lower EMI); • третий таймер введен во все кристаллы, начиная с базового ва- рианта 80С51; • добавлен второй DPTR; • потребление энергии для питания микроконтроллера снижено на 50 %. В сочетании с 3-вольтовым питанием это может дать экономию до 75% по сравнению с предыдущими образцами; • снижена цена на 30 %. Фактически такие новые возможности дают второе рождение ста- рым кристаллам. Проблема для разработчика, однако, состоит в том, что маркировка микроконтроллеров после модернизации не измени- лась, из-за чего возможна путаница между старыми и новыми модифи- кацими. Для разъяснения этого вопроса обращайтесь к дистрибьюто- рам, адреса которых вы можете найти в фирме «Фитон». Основные характеристики микроконтроллеров на базе ядра 80С51+ со стандарт- ным 12 тактовым циклом приведены в табл. 1. Здесь и далее символ «х» в обозначении микроконтроллера заменяет одну из следующих цифр: 0, 3,7,9. Эти цифры обозначают тип внутренней программной памяти: 3 — масочная; 7 — однократно программируемая (OTP EPROM); 9 — многократно программируемая Flash (МТР Flash). 0 — внутренняя память программ отсутствует. Обращаем особое внимание разработчиков на микроконтролле- ры 89C51RC+, 89C51RD+. В них реализована функция внутрисхем- ного программирования ISP (In-System Programming) и режим заг- рузчика (Boot loader). Для этого в состав микроконтроллера введено масочное ПЗУ (Boot ROM) размером 1 кбайт, в котором прошиты процедуры программирования Flash-памяти и подпрограмма ее заг- рузки по последовательному каналу. Пользователь может написать и собственный загрузчик, разместив его в любом месте Flash-памя- ти. После снятия сигнала RESET управление микроконтроллером передается инструкции, адрес которой предварительно заносится в регистр BOOT VECTOR, размещенный в области Flash-памяти. На- бор подпрограмм Boot ROM и параметры их вызова подробно опи- саны в технической документации фирмы Philips, которую можно получить на сайте http://www.semiconductors.philips.com/products/ standard/ microcontrollers. СВ св Особенности периферии Flash Flash Flash Flash ШИМ ШИМ . ШИМ ШИМ, Watchdog ШИМ, Watchdog Flash, ШИМ, Watchdog Clach 11 11ИМ I Watchdog I \л/о+/-Нг1пл AI !П 8 каналов х 10 бит, ШИМ ХЛ/еНг-ПЯлл Al !П 8 каналов х 10 бит, ШИМ □ тгосспГ Rl I.Q J Interface „л * — LOG, Q — QFP, S — SSOP.SOIC xr -т ’Т ч 3 Д L о о о о о о + S' 4 4 4 4 3; Ч Й О -* H H . . - Э pi о о о о о <2 « 0 о а о □ о D40, L44, Q44 D40, L44, Q44 D40, L44, Q44 D40, L44, Q44 D40, L44, Q44 D40, L44, Q44 t t 3 f с о” 5 0 3 0 0 О о 5 I® I s » О I1* ю m m m ш Ь S ? id in in io in ш ° 5 S CQ и К 2 ш г- г- ь-_ ь- Р S’ s с4 сч с4 сч см сх 52 I = 2,7..5,5 2,7..5,5 2,7..5,5 2,7..5,5 2,7..5,5 2,7..5,5 о in .о S'- о +I ю .о О +I ю 5+10% н d 3 J— 1— ь । ® с Ettctoicto: о I <<<<<3 Ore 0 D D Э D - Ф с * □E oE oE oE oE DC < < < < <t < В D Э D D D | UART о CXI Ё < э О СХ| э UART (В Г~Я 1 s ге Ц ? S^OoifXlCXlOJOJC X ХОШсОСОСОСОСОС <л С й з п Iе-» и m (XI CXI <N <N OJ £J o co co co co co co (XI со со со СО ю hi 0. о- s — £7 со со СО СО СО Л 2 г- Q. |>S ® ® L2 о <<<<<£< oooooo CL 0- CL CL 0- CL + + + + + + со со со со со со 3+РСА со со СЧ R I-— ° If >S S ” й 8 X) СО СО со exj CXI CXJ SSKSSSS 1024 256 512 256 О? о о ш о о о. о - X. X _ - о Si Н ° £ и у; у: (о Si Lr >s I I S ® C s Й: « 1 1 £ £ £ g ID- xf CO CO p у: * й$££^£Й со 64К/64К £ СО £ СО £ со 1 ’ p Si 0 L co co co co co га F, t co co co co co z 2 I 7 со со со со со со СО £о со со со СО СО со СО со со со со ВС S I Ф ге I — « о ю о ф т ге о R I ° Обозначение 80C31 80032 8x051 8x052 . 8x054 8x058 8x051 FA 8x051 FB 8x051 FC 8x051 RA+ 8x051RB+ 8x051 RC+ + 0 Ct ю О X со 870552 8x0554 со ш о X со 201 200
Фирма Philips продолжает выпускать ряд кристаллов, которые не были переведены на новую технологию. Перечень таких микроконт- роллеров и их основные характеристики приведены в табл. 2. Обра- щаем ваше внимание на то, что фирма Philips не рекомендует ис- пользовать эти микросхемы в новых разработках. Вместо них предлагается применять перспективные микроконтроллеры с улуч- шенными функциональными характеристиками. Альтернативные варианты приведены в колонке «Рекомендуемая замена». ВЫСОКОСКОРОСТНЫЕ МИКРОКОНТРОЛЛЕРЫ PHILIPS В конце 1999 г. фирма Philips сделала новый шаг в развитии микроконтроллеров семейства 8051, выпустив микроконтроллеры 89C51RB2, 89C51RC2, 89C51RD2. Главной их особенностью являет- ся сокращенное в два раза по сравнению с классическими 51 -ми кон- троллерами время машинного цикла. Вместо обычных 12 тактов но- вые микроконтроллеры выполняют машинный цикл за 6 тактов. В результате время выполнения самой быстрой инструкции сократи- лось до 300 нс на 20 МГц, что эквивалентно 40 МГц у стандартного 51-го кристалла. При этом микроконтроллеры имеют однократно- программируемый конфигурационный бит, управляющий пере- ключением ядра в стандартный 12-тактный режим работы. Уста- новка этого бита возможна с помощью программатора. В 12-тактном режиме эти МК полностью идентичны микроконтрол- лерам 89C51RB+, 89C51RC+, 89C51RD+. Функциональные характе- ристики и разводка их корпусов также полностью аналогичны са- мым популярным кристаллам семейства 8051 —89C51FA/FB/FC/FD и 89C51RB+/RC+/RD+, что обеспечивает возможность быстрой и дешевой модернизации существующих микроконтроллерных сис- тем путем простой замены старого изделия на новое без каких-либо изменений в аппаратуре. За прошедшее с 1999 г. время группа высокоскоростных микро- контроллеров фирмы Philips существенно расширилась. Теперь прак- тически для любого приложения, в котором использовался традици- онный микроконтроллер семейства 8051 можно подобрать его высокоскоростной аналог. Перечень 6-тактных микроконтроллеров и их основные технические характеристики представлены в табл. 3. ВЫСОКОСКОРОСТНЫЕ МИКРОКОНТРОЛЛЕРЫ PHILIPS С МАЛЫМ КОЛИЧЕСТВОМ выводов В 1999 г. Philips анонсировала новую группу микроконтроллеров семейства 8051, получившей название LPC ( сокращение от английс- кого «Low Pin Count» — малое количество выводов). Первым предста- 202
Микроконтроллеры Philips j a 80C5 .Корпус ^Рекомен- дуемая )замена 89С66Х 09C66x 87C591 87C591 89C66X ( X Ф CD CO i 87LPC764 87LPC767 87LPC762 87LPC764 87LPC767 040, j L44, Q44| D40. ! Ш, 044j 040, L44, Q44 D40, L44, Q44 о <3 a< D40, j L44, Q44j 024, L28, S24I D28, L28, S28 D24, L28, S24[ D24, L28, S24 D24, L28, S24 Другая периферия,] особенности ! L [ ’Уменьшенное EMI Уменьшенное EMI [ 4 аналоговых [ компаратора, OFD ШИМ 2x8 UPl,4 аналоговых компаратора, OFD I Уменьшенное EMI | Нагрузочная способность выводов — 10 мА ШИМ 8 биг Нагрузочная способность выводов —10 мА Нагрузочная [ способность j выводов—10 мА ШИМ 8 бит •deed, /Ht/oxa ‘LltW 1 J О X CD 1 1 I CO X LO i s co X CD [Послед, i каналы j 1 UART,(2C ' ] UART.PC j , J <: I— Ct D UARTJ'C о 5 I о СЧ I о p Линии ввода/ вывода см co CM co co CM co Й О) T— CM CD CD CM Таймеры/ | счетчики J 3+ Watchdog 3+- = Watchdog 1 3+PCA+ Watchdog 3+PCA+ Watchdog CM CM I 1 (16-бит) 1 1 (16-бит) uo CD v- 1(16-бит) 1(16-бит) RAM, байт CM ID CM LD CD Ю CM s CM 8 CM 8 CM s 3 3 3 CD ROM/ EPROM, .байт it CO v~ it CM CO it X it 00 it co it <4 it CM it it CM it CM Макс, частота, МГц о CM О см Ф co t— CM s to CD О CD № CD «г X гм о а- s О х r j 8xC524 co to о X co to ID % co (D to О X co CM to CO о X co s 8 CO co X co cn О co 8 У co LD § co CM ID О X co 203
вителем этой группы стал микроконтроллер 87LPC764. Он был ори- ентирован на применение в системах, требующих высокой интегра- ции функций при общей низкой стоимости изделий. В этом микро- контроллере использовано новое скоростное 6-тактное ядро, позволяющее выполнять инструкцию за 300 нс на 20 Мгц. Интерес- ными новинками в архитектуре 87LPC764 также являлись: встроен- ный в кристалл RC-'генератор, высокая нагрузочная способность вы- водов (до 20 мА на каждый), два аналоговых компаратора, два последовательных канала (UART и I2C), встроенная схема сброса, не требующая внешних компонентов, компактный 20-выводной корпус. Из 20 выводов пользователь может использовать для своих целей 18, и только два предназначены для подключения цепей питания. Пере- чень и основные характеристики микроконтроллеров этой группы приведены в табл. 4. Недавно фирма Philips анонсировала выпуск новой группы мик- роконтроллеров с малым количеством выводов — семейство LPC900. Основные характеристики новой группы: • новое ядро, совместимое по системе команд с 8051, но выполня- ющее машинный цикл за 2 такта, т. е. в 6 раз быстрее стандартно- го микроконтроллера; • пониженное напряжение питания (2,4...3,6 В) с возможностью прямого подключения 5-вольтовой логики; • Flash-память объемом 8 кбайт; • EEPROM объемом 512 байт; • RAM объемом 768 байт; • последовательные каналы: UART, I2C, SPI; • два 16-битных таймера; • часы реального времени; • схема выборки и сравнения с 32-кратным умножителем частоты; • два аналоговых компаратора. Все это лишний раз подтверждает вывод о том, что семей- ство 8051 обречено на долгую и активную жизнь в будущих раз- работках. МИКРОКОНТРОЛЛЕРЫ PHILIPS С РАСШИРЕННЫМ АДРЕСНЫМ ПРОСТРАНСТВОМ По мере усложнения задач, для решения которых применялись микроконтроллеры семейства 8051, разработчики все чаще и чаще начали сталкиваться с проблемой ограниченного объема адресного пространства программной памяти микроконтроллера. Как извест- но, для микроконтроллера с 16-разрядным программным счетчиком максимальный размер адресуемой памяти составляет 64 К. При пре- 205
Высокоскоростные микроконтроллеры Philips с малым количеством выводов 4 О > Е Q. О DIP-14, TSSOP-14 DIP-16. TSSOP-16 DIP-20, SO-20, TSSQP-20 DIP-20, SO-20, I TSSQP-20 DIP-20, SO-20 02-OS ‘oz-djg DIP-20, SO-20 С Т Напряжение питания, В «о ю «О IO см см" id id см" ID LD См" ID ID cm" in ID см ID ID гм" Другая периферия, особенности два аналогов ы> компаратора, RC-генератор на кристалле, сброс по напряжению питания, WDT I To же , что и 87C764 плюс АЦП 4 канала х Тоже , что и 87С764 плюс АЦП 4 канала х ~ 1 ши 1 iVI То же , что и 87С764 плюс ЩП 4 канала х Я fitAT ЕЛ 1 1 Л П Послед, каналы UART, l2C UART, l2C UART, l2C о CM, Ct s UART, l2C UART, l2C UART, 12С Линии ввода/ вывода СМ со co № СО № СО № СО Таймеры/ счетчики СМ 1см СМ CM см см I см RAM, байт о [со N Iе4 со см N X) 30 о ОТР/ , flash, байт 1 IZ/ ’ ь 1см £ см ; 2 x 2 s > Г Макс, частота МГ ц 9П О [см 3 £ £ . £ Обозначе- ние 87LPC760 С [со а £ <- Ш Q со а 2 S 5 и j °- <о CC О Q. co ш О а. СО 87LPC769 вЬццении кодом этого объема разработчикам приходится идти на уХИщрения, применяя банкированную модель памяти. Банкирован- ная модель означает,1 что вся память программ разбивается на куски, называемыми банками. Объем каждого банка не должен превышать 64 кбайта. Если подпрограмма, расположенная в одном банке, долж- на вызывать подпрограмму из другого банка, то такой вызов осуще- ствляется через специальную процедуру, которая осуществляет кор- ректное переключение текущего банка. Каждый вызов и возврат из такой подпрограммы приводит к выполнению значительной части кода, связанного с переключением банка. Кроме того, приходится дуб- лировать участки кода, отвечающие за обслуживание прерываний. Все это приводит к существенному разрастанию объема непроизво- дительного кода, к снижению быстродействия и общей удельной эф- фективности системы. Ясно, что подобную проблему можно было бы устранить, если уве- личить разрядность программного счетчика (PC), т. е. перейти от бан- кированного адресного пространства к линейному. Но как это сделать, находясь в жестких рамках стандартной архитектуры семейства 8051? Фирма Philips предложила свое решение этой проблемы, разрабо- тав новое ядро 51МХ. Основные отличительные особенности архитек- туры 51МХ от классического ядра 8051 заключаются в следующем: • разрядность программного счетчика увеличена до 23 разрядов, что обеспечивает прямой доступ к 8 Мбайт программной памя- ти; • разрядность указателя стека расширена до 16 бит, снято ограни- чение на размещение стека только во внутренней памяти данных, характерное для стандартного ядра 8051. Такое решение суще- ственно повышает эффективность кода при использовании ком- пиляторов языка высокого уровня; • добавлен расширенный указатель на память XDATA, 23-битный размер этого указателя обеспечивает быстрый доступ к 8 Мбайт памяти данных; • изменена логика работы двух инструкций: AJMP, ACALL. Эти ко- манды, доставшиеся семейству 8051 в наследство от своего пред- шественника семейства MCS-48, работали с абсолютными адре- сами в пределах 2К, что препятствовало их реальному использованию в перемещаемых сегментах кода, в том числе во всех программах, написанных на языке высокого уровня. В ядре 51МХ коды этих инструкций выполняют функции длинного пе- рехода и длинного вызова, обеспечивая передачу управления в любую точку 8-мегабайтного адресного пространства программ- ного кода. 206 207
П 51 MX I i Classic ' 1 80C51 On-chip and/or Off-chip Code Memory Interna! Data Memory ((DATA & EDATA) External Data Memory 0-64KB (XDATA) 64KB-BMB (HDATA* Рис. 5 Структурная схема модели памяти нового ядра представлена на рис. 5. Важнейшими достоинствами новой архитектуры является ее пол- ная программная и аппаратная совместимость со стандартным ядром 8051. Это свойство очень важно при переходе с классических микрокон- троллеров семейства 8051 на кристаллы с ядром 51МХ, т. к. оно позво- ляет использовать все наработки программного и аппаратного обеспе- чения, накопленные за долгие годы существования семейства 8051. В настоящее время выпускаются два представителя группы 51МХ. Их основные характеристики представлены в табл. 5. Таблица 5 Обозначение Макс, частота, МГц ОТР байт RAM, байт Таймер ы/счетчики Линии ввода/ вывода Послед, каналы Другая периферия, особенности Напряжение питания, В j Корпус 87С51МВ2 24 64К 2К 4 34 2 UART, SPI РСА, аналогичный RX+, WDT, аналогичный 66х. 2,7..5,5 LCC-44 87С51МС2 24 96К ЗК 4 34 2 UART, SPI 2,7..5,5 LCC-44 208
МИКРОКОНТРОЛЛЕРЫ PHILIPS СЕМЕЙСТВА 80С51ХА Помимо ядра 51К1Х, фирма Philips предложила еще одно ориги- нальное решение по развитию архитектуры семейства 8051, выпус- тив подсемейство микроконтроллеров с индексом 51ХА, что букваль- но переводится как «расширенная архитектура 51». В этом варианте разработчики Philips решили отказаться от достижения совместимо- сти кодов инструкций нового микроконтроллера с существующим ядром семейства 8051. Такое решение, с одной стороны, сделало не- возможным прямую подмену микроконтроллера семейства 8051 на 51ХА, но с другой стороны, развязало руки разработчикам для кар- динальной переработки архитектуры на основе полноценного 16-раз- рядного ядра. Основные характеристики семейства 8051 ХА: • 16-разрядное АЛУ на базе регистровой архитектуры; • 24-разрядное адресное пространство (16 М,айт памяти) для па- мяти программ и данных; • восемь 16-разрядных регистров для выполнения арифметичес- ких и логических операций; • расширенный набор инструкций; • аппаратная поддержка мультизадачности; • выполнение инструкций типа регистр-регистр за 100 нс; • напряжение питания — от 2,7 В. Что же позволяет отнести этот совершенно оригинальный мик- роконтроллер к семейству 8051? Как мы уже упоминали, программ- ное обеспечение 8051 напрямую непереносимо на ХА. Однако, каж- дой инструкции 8051 обязательно соответсвует ее аналог среди инструкций ХА. Существует специальная программа-транслятор исходного текста на ассемблере 8051 в исходный текст для ассемб- лера ХА. Это позволяет говорить о совместимости ХА с 8051 по исходному тексту. Кроме того, в ХА реализована такая же струк- тура памяти, как и в 8051, что оставляет неизменными способы обращения к памяти программ, данных, регистрам специального назначения, применявшиеся в программах для семейства 8051, и обеспечивает совместимость с микроконтроллерами 8051 на уров- не аппаратуры. По расчетам Philips, архитектура ХА обеспечивает увеличение быстродействия до 100 раз по сравнению с традиционной архитек- турой 8051. Микроконтроллеры семейства 80С51ХА представлены в табл. 6. 209
Ч' ''Т о и и о о о 2^ ''ф 3 о о о о о § СО г- о о -J 5 о о о o/udo)] < X ю О О W (б со о >з ф 5 ф о 3 а ф О О. о £ о а S q tn , 'Jo co 'HOBBUBHtf +. UWBI J _7 со со ОТ ОТ от Ср со от от со 2 о о 6 6 т 7 7 ф in in co co + + о о 77 in co + о 7 in co + 0 7 Условные обозначения корпусов: D — DIP L — ICC n про 0 ' “ ,L LCC- Q — QFP, S — SSOP, SOIC 8 m ‘иинвхии и? эинэжкбивц О Ь со” с -.0,0 3.0..5.5 4,5..5,5 [ 4,5..5,5 2,7..5,5 in in in in o 6 co” co” in in” 04” 3,3..5,5 шэоннэдоэо [ ‘кидвфидвц KejXdtf Контроллер динамической памяти ШИМ6х8ЬД UPI, АЦП 8x10 hit 8 DMA, DRAM controller (32MB), A Chin яьгенея tfauaon t- i— < < D D 1 CN CN 2 UART 2 UART 2 UART UART, SPI, CAN 2.0 VI 1 G lavn J E E c D 4 4 SCC Btfoaiqg /Btfoaa ИИНИ1Г 04 04 co co ЕЧ cn cnIcn о CO COlcO cc 04 |o co ё 04 CO ияиыэьэ )_ l_ /ndawnej. Q 1 + + - CO CO 0 iom+z там+е 1ам+£ 1ам+£ l ПЛЛл-Г* 2+WDT 3+WDT+ PCA z —L 5 & + N ±ивд ‘WVH - 2 $ Ш Ю ц- X X X 8 > <- CN & co I in 1^ £ 04 ; "4 0 1 ±иед ‘WOMd3 /woa g £ $ 32K 64K 32K 32K hjW 1 ‘BlOlOBh 'OXBiAl ООО I ” co co co ООО о co CO CO co g Io c CO co £ * * x эинэненсодо | g 1 S Ю Ю L а. a. cl P51XAG39 P51XAG49 P51XAC37 P51XAH30 P51XAS3x P51XASCC МИКРОКОНТРОЛЛЕРЫ ФИРМЫ ATMEL Главный козырь фирмы Atmel — Flash-технология. Владея ею в совершенстве, Atmel строит свою политику на внедрении Flash в наиболее популярные микросхемы, использовавшие до того техно- логию EPROM — это и микросхемы памяти, и программируемая логика, и микроконтроллеры. Тот факт, что в качестве первого кан- дидата на прорыв на рынок микроконтроллеров, где господствова- ли такие монстры как Philips, Siemens, Intel, Motorola, Mitsubishi и др. фирма Atmel избрала микроконтроллер 8051, свидетельствует об исключительно высокой популярности этого кристалла на рын- ке. Atmel — самая молодая и самая агрессивная компания среди всех выпускающих микроконтроллеры 51-го семейства. Она смогла пред- ложить невероятно низкие цены на свою продукцию и быстро за- воевала высокую популярность на рынке микроконтроллеров. На- чиная с 1995 г., компания ежегодно удваивает объемы продаж своих микроконтроллеров 51-го семейства. Среди оригинальных разра- боток Atmel: • 20-выводные микроконтроллеры 89С4051/89С2051/1051/105 Ш, открывшие дорогу микроконтроллерам 51-го семейства в сферу «однодолларовых» приложений»; • микроконтроллеры с каналом SPI, обеспечивающие возмож- ность внутрисхемного программирования Flash. Это может быть очень удобно в производстве, когда программирование микро- схем осуществляется уже после их монтажа; • внутренняя память данных на базе EEPROM, обеспечивающая хранение оперативных данных при отключенном питании мик- росхемы. В 2001 г. Atmel поглотила одного из ведущих игроков на рынке семейства 8051 — фирму Temic. После такого слияния номенклатура микроконтроллеров семейства 8051, выпускаемых фирмой, в одно- часье расширилась в несколько раз, что вывело Atmel в число лиде- ров этого направления. Несколько слов об особенностях микроконтроллеров фирмы Temic, вошедших в общий список фирмы Atmel. Российскому разра- ботчику мы рекомендуем в первую очередь обратить внимание на микроконтроллеры T89C51RB2/RC2/RD2. Эти кристаллы могут ра- ботать как в режиме 6-тактного машинного цикла, так и стандартно- го 12-тактного. Причем в отличие от аналогичных микроконтролле- ров фирмы Philips переключение из одного режима в другой происходит под управлением программы «на ходу». Другой особен- ностью этих микроконтроллеров является возможность программи- рования Flash «изнутри» с помощью встроенного загрузчика (режим 210 211
ТАР), а также через механизм внутрисхемного программирования (ICP). Эти режимы практически полностью аналогичны режимам, реализованным в микросхемах фирмы Philips. Перечень и основные характеристики микроконтроллеров фир- мы Atmel представлены d табл. 7. Более подробная информация на- ходится на web-site фирмы Atmel: http://www.atmel.com. МИКРОКОНТРОЛЛЕРЫ ФИРМЫ DALLAS SEMICONDUCTORB-MAXIM Фирма Dallas Semiconductor хорошо известна всем специалистам в области микроконтроллеров в первую очередь благодаря своим оригинальным техническим решениям, придавшим в свое время новые грани и возможности популярному семейству 8051. В 2001 г. фирма была поглощена фирмой Maxim. Думаю, что скоро мы уви- дим новые интересные разработки, продолжающие традиции Dallas Semiconductor, но уже под другой маркой. Soft Microcontrollers Фирма Dallas Semiconductor в первую очередь получила извес- тность среди производителей семейства 8051 своей серией DS5000, которая еще называется Soft Microcontrollers. Оригинальность ре- шения заключается в том, что для увеличения объема памяти ис- пользуется ОЗУ большой емкости (128 кбайт), а его энергонезави- симость обеспечивается литиевой батарейкой, встроенной непосредственно в корпус микросхемы. Фирма дает 10-летнюю га- рантию на сохранность информации в ОЗУ МК. Эти микроконт- роллеры выполнены на базе стандартного ядра 8051, поэтому его временные характеристики полностью идентичны характеристи- кам оригинального 8051 от Intel. Высокоскоростные микроконтроллеры Фирма Dallas Semiconductors первой попыталась усовершенство- вать архитектуру семейства 8051. Явным слабым местом базовой архитектуры является, как уже упоминалось, неэффективная диаг- рамма выборки, дешифрирования и выполнения инструкций. На- пример, команда MOV A, Rx выбирается и выполняется 51-м микро- контроллером за 6 тактов, а следующие б тактов происходит холостая выборка инструкции по следующему адресу. В результате на такую инструкцию микроконтроллер затрачивает 12 периодов тактового генератора. Специалисты Dallas Semiconductor перерабо- тали ядро микроконтроллера таким образом, что типовой цикл выборки команд сократился до четырех тактов, а холостые выбор- ки были исключены. Таким образом, команда MOV A, Rx, например, 212
основные характеристики микроконтроллеров фирмы Atme? oAudox Ю40, 044,1.44 " 1 [040, 046, <_44 | 3 5 0 0 8 Q О о' 0 !040, Q44, L44 | Оч С)" 0 8 о" 3 8 7 ;Q44, l44 I [040, L44, 044, L68, 064 j 3 8 Ю40. Q44.L44 | [D40. Q44.L44 | [D40, Q44, 1.44 j 8 o' 8 8 3 }D40, Q44. L44 1 О iD20, S20 j О OJ <Л о Q 1 vv ’‘wo 'CMl! |D40tQ44. L44 ] 8 Q jD40,Q44. L44 | |D40, Q44,',.44 | [D40, Q44, l44 | 1040,044,^44 j Ю40, L44, 044 } Ю40. L44, 044 | 1 ?fOd w 'otai Эо ‘носвиеиИ •ииэх tn + т П + 7 7 in '+ 0 7 СП + 7 7 4? О 1 + О 7 ш -4. О 7 +' о 7 <2 + о 7 >П CC •4- d> 6 sc LO 04 4 uo to Ю v- "+ m + 0 'O’ ? tn 0 7 in 0 7 tn 7 CO A- 7 liO 7 s 7 + to >n +’ ° 7 in CO + 7 7 ¥ 7 in -f- g ‘винехиц эиножкс1иен <£» 04 ю' ю о СО о со о со 04’ 1 'С to' (П Oi tn IO -П 0 cr> OJ --> 04' 04' 5 <£> Г-, s 04 n <0 Г- LO 04 ib 04’ '2 04 n ИХЭОН -HGQO3O ‘вийафийэи KejAdn iADCWbx8ch | Q E О e J I 1Я1гене>| tfairoou 0) 5 5 <0 F- СЕ < <л Ее СЕ СЕ < 0 <л < £ СЯ Cl <л < 0 CL СЕ 0 |uart, SPI. IT) 1 <□. < Ct < H- cr < £ < 2 0 & < < h- CE < 0 1 < Z? £ CE Z? E 0 < DE О < § 0 < I £ Э O' 0 & < вУоана /вИоаа ииниц 04 04 04 СО 04 О 04 OJ 04 СО 04 Tj- 04 OJ co co 04 04 04 in m in co 04 CO 04 04 CO O? ияинханз /»чс1аииех Q Л 0 Q $ + Ё $ + ё со 0 Б $ + и О [3+WDT+PCA 1 I VOd UGM +e! 1- 1 »- co 04 f CO CO 04 CM 04 О + 0 5: 04 Б + cn 5 Q S co хивд ‘деонаээ ЗЕ 04 ЗЕ 3E J-иед ‘мун О 04 со 04 о OJ УЗ 8 04 04 ЗЕ 04 04 S 04 04 в 04 7 CO 04 in to to CO to ro> OJ co co 04 CO ro> n CO to Ю <O tn CM 8 CD 04 in хивд ‘wwedaodu яхвивц СО го го "я Z со го го he 04 ГО и. X со х: ГО го ЗЕ со го Го ЗЕ 04 го ГО LL ЗЕ 7л го ЗЕ со го X 04 СО 'го _го X 04 co "w ra ЗЕ 04 ”5 ro ro ¥ ”ro ro z co ro 0 « ro co ro ¥ x: ro ro CO c ro ro 54 04 CT "ro ro u. ro ro i OTP Flash 4K j co c ro ro 6 iOTPF’-ashZOK 1 IOTP Flash 32K i 1 OTP Flash 4К J 1 OTP Flash 8K J 0 ro 5 ЬЕ co £1. О * <C> S О CE Q. | EPROM 32K i njw ‘SOXMBX (9) г^еюхзвн •оявдо 04 00 г> хГ 8 со со 04 04 о 04 О о S' 0 S' 04 s o’ O' CO co OJ 04 0! xf 7 7 7 7 co <x> to CD О o’ o' CO 0 S' 0 аин -эьенЕодо Я СО <Л о> со < со о> 5 8 со <с й со со <£ 04 04 СО СП СО 04 07 и> со <С СО СЛ CD < Q (Л о> СО <£ ffi СЕ 8 СО О СЕ U7 О СО Q П О CO b- < ITO Q co c CE 8 0 CO 8 CO < IO <7> CO 1AT89C55WD i 0 CE 8 co <0 < o> < tn § <5j co < <O О О o> co < 0 8 <7> CO <c in О 3 <7> <C co co IAT87F55WD J О or n CO CO co 8 8 i- 1 CO (Л 213
2 1 Е X X I о oAudoji см ф со о о 3 ID40.L44.Q44 1 О о 3 S. О ® О 3 ф 04 СП см" 9 СМ О о Ф со 8 ID40.L44.Q44 1 3 о О 8 со 3 8 о 3 о о 3 С5 8 |D40, L44, Q44. L68, Q64 1 ф см сл ф Q со см сл со S 1 >га ‘fr?s ‘9i-5| 8 о 3 О 3 [D40, L44.Q44 I 8 о Q со а ф" со 8 8 см D ф S е со м- а? см (Л со 8 СЛ (Л 8 со О CL С Эо ‘HOEBUBMtf ииэх Ф ф о 1 S ® + о' ® + 1 ® + ф + С> 1 + о“ ф со 1 to со + Ф СО + ф со о 5 ф + о ф + о' 1 ю ® + о ф ф + о 1 ф +• о т ф со 1 ф ф 4 о ф + о 1 Ф 1 ф ф + о 1 Ф О 1 ф СО + 1 ф + 1 Ф Ф + О 1 Ф + ф + О 1 ф ф ф + СЭ 1 g ‘кинвхии эинэжксШвн й Ф_ см 1*0 см' г- й ф' ф см' to to' Й ю <М ю ю’ ф ф ф см' й ф см' ф ф_ ф' ф ф* ф_ ф' см' ф ф‘ о ф о ф ф ф ф ф ф ф илэоннэдоэо ‘видэфидэи BBjXdtf "о со X ф о о О < ф J3 о О < "б 03 X О О < х: о X хэ о О О < X ф о О < ф X JO о о a < 'о ф X хэ о о a < от £ сл _ ф о о о ‘t: о ® S о го £ СЛ ф о о 3 ‘t: о 5 9-- 0 д О сл CL о нививя -Иэиооц СО £ 3 £ СК Э СК 3 СК СК < 7J CL <73 СК £ < ё а СО £ < СК < < 5 < сл < >~ ск 3 £Е D ь- ск < D £ 3 ё н QK Z о СЛ СК < a г сл СК D о о о q 5 К Ф о ‘С а> го О с со £ сл < СК D СЛ сл CD CL LL С etj'osiAB/Btj'oBa ИИНИЦ о см см см со см й см см О см см см ф со ф СО см см со см s СО О м- ТГ м- о 6 о имиыэкэ /lAdOWMBl о + О 5 ё + О Q $ + О + ё $ + О ё § со о CL ё см Q 5 ё + о ё л Q $ + < О ё $ СО < О + ё $ СО < О ё § СО < О •>• О £ СО ё $ <м О + ё + О + О со О ё $ о ё СО О ё $ СО 1 ё $ см ё $ Q_- 0 ±ивд ‘|Л1оаазэ X о 1ивд ‘WVH СО со £ см о Ф со см ф со ф со СМ со со ю см ф см о ф см со ф со со см СО Ф ф о со ф см см см ф о о хивд ‘wwsdjodu Я1ИИВЦ зе со О ЗЕ го S о СК ш ЗЕ го S О СК Ш зе см S О СЕ О, ш ЗЕ со S О СЕ Ш ЗЕ со S О СЕ Ш ЗЕ О ЗЕ со О СЕ "и га 5 ЗЕ см S О СК "to § ЗЕ 5 О ОС <л га S со S О СК и го S ЗЕ to 5 о СК "и § ЗЕ со 5 О СК га ЗЕ см 2 О СК и го S ЗЕ хг со S О СК "и § ЗЕ ф 3 О СК 05 га ф о СК W го 5 ЗЕ S о СК "и го U5 (Л ф О СК и W ф 5 О СК <л СП ф 5 о СК сл сл ф 5 о СК W СЛ ф 5 О СК сл сл СВ 5 о СК и га и. ЗЕ со о: сл га ЗЕ со S О СК "w го 2 ЗЕ со J < СК ЗЕ со о: сл га Q. О ЗЕ о: S Ф аз я ТтJW ‘ao-wei (э) Zl/B±oi3Bh зяв|Л| со о о СО о о СО o’ о со о о Ф О о СО о о о о СО о о о о о о о о о СО о СО о S О о О о о о о О о см о о о со со со ю о ф _0 г эинэьвнЕодо 3 со а ф О СО СП m СЕ К О СО сл о СК 3 аэ н о СЕ 8 ® сл о 8 СО 8 со X 8 о ф сл X со ф о ф сл X 8 о со СЛ ф о СО со ф о СО ф сл S СК в ф (Л О СК ф о ф СЛ о СК 8 ф (Л о ф О СО со о 8 СО ф ф о СО ф см X О ф <л X см СО о о ф сл 8 о ф со 3 СК ф о о ф со Q СК 8 о ф со см ф О СО 8 О ф о (Я ® о О О 8 СП ф ф О со ф 8 ф 8 СП ф со о 5 214
Таблица 8 Обозначе- ние NVRAM, байт RAM, байт Таймеры/ счетчики Линии ввода/ вывода Послед, каналы Другая периферия, особенности Корпус 0S5000FP 32К 128 2+ WDT 32 UART Bootstrap loader, 48-bit encryption key Q80 DS5001FP 128К 128 2+ WDT 32 UART Bootstrap loader Q80 DS5002FP 128К 128 2+ WDT 32 UART Bootstrap loader, 64-bit encryption key Q80 Условные обозначения корпусов: Q — QFP стала выполняться в 3 раза быстрее. Команды 8051, которые не име- ли холостых выборок, в новом микроконтроллере «ускорились» в 1,5 раза. Новое семейство микроконтроллеров получило название High-Speed Microcontroller. В 2000 г. Dallas Semiconductor представила первый микроконт- роллер DS89C420 новой группы, получившей название Ultra High Speed. Как следует из названия новой группы, ее главная особен- ность заключается в еще более высокой скорости выполнения ко- манд. Каждая инструкция в микроконтроллере DS89C420 выпол- няется в 12 раз быстрее, чем в стандартном кристалле семейства 8051. При максимальной тактовой частоте 50 МГц быстродействие DS89C420 достигает 50 миллионов операций в секунду на корот- ких инструкциях. Еще одной важной особенностью микроконтрол- лера является наличие 16 Кбайт Flash с возможностью последова- тельного внутрисхемного программирования(15Р) и самопрограммирования из приложения (IAP). Для удобства рабо- ты с памятью данных указатель DPTR получил режимы работы в автоинкременте и автодекременте. Микроконтроллеры семейства High-Speed и Ultra High Speed и их основные характеристики приведены в табл. 9. Более подробную информацию можно найти на сайте: http://dbserv.maxim-ic.com/ Microcontrollers, cfm. КОНФИГУРИРУЕМЫЕ МИКРОКОНТРОЛЛЕРЫ ФИРМЫ TRISCEND Фирма Triscend Corporation была организована в 1998 г. специа- листами, отпочковавшимися от фирмы Xilinx — одного из лидеров рынка программируемых матриц. В качестве первого проекта в сво- ей деятельности фирма Triscend предложила идею создания «конфи- гурируемого процессора». Суть идеи проста. Специалисты Triscend, 215
Основные характеристики микроконтроллеров семейства High-Speed и Ultra High Speed oAudo)j D40, L44, г>лл D40, L44, Q44 Q44 D40, L44, Г\АА СЧ 3 L68, Q80 L68, Q64 D40, L44, Q44 Эо ‘носвиеиН имэх со со + о т —40...+85 —40...+85 -40...+125 -40...+85 -40.. .+85 СО со + о т CO co + о T Q ‘винвхии эинэжкдиен 4,5...5,5 4,5...5,5 со со со" со" СО сч" Tt 4,5...5,5 4,5...5,5 4,5...5,5 4,5...5,5 июоннэдооо ‘иис10фис1эи BBjAdtf 2 DPTR 2 DPTR I ZUriK 2 DPTR 2 DPTR, Real-time clock, batterv back ud 2 DPTR, Real-time dock, battery back up, ШИМ x 4 канала 2 DPTR, поддержка IrDA, decrement DPRT 2 DPTR, decrement DPRT •dced/ntfoxa ‘uhv 1 1 I I I 8x10— bit— I I нивнея 'Нэигзоц UART 2xUART 1 Ovl 1Л Г>Т 2xUART 2xUART 2xUART 2xCAN, 2xUART 2xUART BtfoBiqe/BtfoBB ииниц сч со сч с со с 4 04 CO 04 co CO CO ОЧ co ияиыэнз /пдэиив! со 3+WDT 3+WDT Гз+WDT 3+WDT 3+WDT 3+WDT 3+WDT со ю СО сс Ю СТ О co 04 О X» О co CO o> О co ±ивд ‘WOHda/WOH 1 1 1 co £ X) I IbK Flash hJIAI ‘BJ.OJ.OBb -ЗЯВП о о о о о сч co co О о О О D cf- D О о - о со М сч о 04 c 3 о о О V эинэнвнсодо с С J С о с о 0 с } с з о О о о со 0 0? 3 Q о c x ь co c CO о о c 5 с 0 с а с э с 3 С ' о 0 G 2 С 0 0 c 3 c J о 3 имея большой опыт в разработке и поставке программируемых мат- риц большой емкости, подметили, что среди потребителей матриц фирмы Xilinx значительную долю составляют клиенты, которые со- здают свои системы на основе всего трех основных компонентов: мик- роконтроллера, памяти и программируемой матрицы. Поэтому они решили, что если в состав программируемой матрицы ввести ядро популярного микроконтроллера и память, то системы можно будет создавать на одном единственном кристалле. В качестве ядра базово- го процессора было выбрано ядро микроконтроллера 8051. Так по- явилось семейство конфигурируемых микроконтроллеров Е5, пред- ставленное в табл. 10. Таблица 10 Основные характеристики конфигурационных микроконтроллеров МКЕ5 Наименование Количество конфигури- руемых ячеек Встроенное ОЗУ Линий ввода/вывода Корпус TE505S08 512 8К х 8 123 Q100, Q208 TE512S16 1152 16Кх8 187 Q100, Q208 TE520S40 2048 40К х 8 251 Q208, В420 TE532S64 3200 64К х 8 315 Q208, В420 Условные обозначения корпусов: Q — QFP, В — BGA Фирма Triscend поставляет также пакет разработки FastChip. Он содержит в своем составе графический редактор, компилятор и си- мулятор и обеспечивает полный цикл разработки микроконтролле- ра необходимой конфигурации. Входящая в состав пакета библиоте- ка периферийных устройств позволяет пользователю расширить возможности базового ядра системы путем добавления таймеров, последовательных каналов, каналов прямого доступа, дешифраторов, мультиплексоров, регистров и многих других устройств, необходи- мых в конечном изделии. Микроконтроллеры семейства 8051 фирмы Winbond Заметный вклад в развитие микроконтроллеров семейства 8051 вне- сла тайванская фирма Winbond. Она была основана в 1987 г., располо- жена в тайванской Кремниевой долине и является одним из технологи- чесиких лидеров Тайваня, с очень высокими темпами развития. 216 217
Стандартные микроконтроллеры семейства 8051 фирмы Winbond Фирма Winbond выпускает целый ряд микроконтроллеров со стандартной архитектурой семейства 8051. Эти микроконтроллеры полностью совместимы с аналогами, выпускаемыми фирмами Intel, Philips, Atmel. При этом они имеют дополнительные оригинальные особенности, выделяющие их из стандартного ряда микроконтрол- леров. К ним относятся: • повышенная максимальная тактовая частота (до 40 МГц); • дополнительный 4-битовый порт ввода/вывода (Port Р4), дос- тупный только в корпусах L44, Q44; • дополнительные внешние входы прерываний. Особый интерес для российского разработчика могут представ- лять микроконтроллеры с Flash-памятью. Номенклатура микрокон- троллеров с Flash-памятью способна удовлетворить любые потреб- ности разработчиков — в состав семейства входят кристаллы с объемом Flash от 4 до 64 кбайт. Номенклатура стандартных микроконтроллеров семейства 8051, выпускаемых фирмой Winbond, представлена в табл. 11. Микроконтроллеры с расширенным диапазоном напряжения питания В последние годы наметилась мощная тенденция перевода мик- роконтроллерных систем на пониженные напряжения питания. Идя в ногу со временем, Winbond выпускает микроконтроллеры, допус- кающие работу в очень широком диапазоне питающих напряже- ний — от 1,8 до 5,5 В. Особый интерес опять-таки представляют кри- сталлы с Flash-памятью. Они обладают пока еще довольно редкой на сегодняшний день возможностью запитывать микроконтроллер с Flash-памятью от источника 2,4 В. Семейство высокоскоростных микроконтроллеров Turbo-51 В 2001 г. фирма Winbond приступила к выпуску семейства высо- коскоростных микроконтроллеров, которое она назвала Turbo-51. В основе его лежат микроконтроллеры, которые по выводам и системе команд совместимы со стандартными, но скорость выполнения ин- струкций в них увеличена в среднем в 2,5 раза. Увеличение произво- дительности достигнуто за счет переработки ядра классического 51- го микроконтроллера. Целью переработки являлось удаление из машинного цикла микроконтроллера лишних тактов и холостых 218
Основные характеристики МК 8051 фирмы Winbond Корпуса S о 3 D40,L44,Q44 J 8 3 3 3 О' -J 3 5 о 3 1 3 о 3 'D40,L44.Q44 | D40.L44.Q44 |D40,L44,Q44 I |D40,L44,Q44 j 8 3 3 о |D4O,L44,Q44 j 8 4 8 1 Ж)‘Ж1'0К1! о о 5 3 Дополнитель-1 5 X периферия i 'I/O Port, WDT 1 ll/о Port, WDT 1 il/o Port, WDT 1 ll/о Port, WDT 1 ! dSI M°d oTil CL 22 о CL О CL CO G CL О 12B bytes EEPROM, 2 5 a. о CL О [I/O Port J ll/O Port Il/O Port, WDT 1 ! ‘spod o/l S 1 Мбайт 1 внешней § го -С о. ф S >з 5 3 f ф ь со СО СМ СО СО co co CO CM CO co CO CO CM 00 5 ч X О Й d о & CD CD CD CD CD Ф co X с; 03 03 3 & см ю со см со см со CM CO M co co CO CM CO CM co о CM co ?M co CD CO Объем тамяти 1 данных, >3 й <О <о со со co <0 CM s GO CD CD to CM Ю Ю см см CM CM LO CM CM CM LD CM CM Объем 1 памяти । программ, кбайт со CD CM co 3 CM CO co Ю CM co 3 Тип I памяти о а с S S й о. "ей го LL "w го "S ГО u_ '§5 ro "a> ro Lb ro LL I hd co 1 co 1 (O co 1 co 1 1 Напряж. | питания, ш [4.5..-5.S 1 UO ID Ю ю LD ш [4.5.. .5.5 1 LO uq I4.5...5.5 ID ID CD ’d- 4.5...5.5 | 9'S'"S>j I4.5...5.5 j I4.5..5.S । ю ID ю M.5...5.5 । (0 LO ID 4.5.. .6.5 j I го о 5 Й 2 Й 03 о О ш со cq co m CD ffi co Cl p CO 4“ О CD ф S S Й X 3 X со О со В о ас Я W78E51 ю ш СО Ю Ш co ID Ш co ID UJ CD В Ш CO 1 ID О co O ID CO CO 1 ID О co В uo О ОС! В Ю О CO 2 co О CO В 3 s 219
выборок. В результате длина машинного цикла семейства Turbo-51 составляет 4 такта, что в три раза меньше, чем у стандартного 8051 of Intel. В целом новое ядро, хотя и является оригинальной разработ- кой, но по своим характеристикам аналогично ядру высокоскорост- ных микроконтроллеров фирмы Dallas. Помимо увеличенной производительности, микроконтроллеры семейства Turbo-51 обладают еще целым рядом дополнительных воз- можностей по сравнению со стандартными 51 ми микроконтролле- рами: * добавлен второй DPTR, который упрощает реализацию блоч- ных пересылок в памяти XDATA; * введена возможность формирования от 2 до 9 циклов ожидания при обращении к внешней памяти данных, что обеспечивает со- пряжение микроконтроллера с любой, даже самой медленной пе- риферией; * объем памяти данных типа XDATA на кристалле (on-chip data 5ИАМ)увеличен до 1 кбайт: • добавлен второй Uz\RT; » в систему команд добавлена очень полезная инструкция DEC DPTR (код А5), упрощающая работу с указателями; * максимальная тактовая частота составляет 40 МГц, в отличие от 12 МГц у стандартного микроконтроллера; * программная память реализована на базе высокоскоростной Flash-памяти, что делает эти микроконтроллеры особенно при- влекательными для российских разработчиков. Номенклатура микроконтроллеров семейства Turbo- 51 представ- лена в табл.12. Микроконтроллеры фирмы SST Молодая калифорнийская фирма SST (Silicon Storage Technology) также выбрала ядро микроконтроллера 8051 для внедрения своей уникальной патентованой технологии перепрограммируемой памя- ти, которую сама фирма назвала SuperFlash. Суть этой технологии заключается в том, что она позволяет создавать ячеки памяти Flash на одном транзисторе, что пока недоступно никому другому. Для потребителя преимущество этой технологии проявляется в низкой стоимости микросхем и в рекордно малом времени программиро- вания SuperFlash. Микроконтроллеры фирмы SST с ядром 8051 представлены в табл. 13 (подробная информация — на сайте http://www.ssti.com). Они полностью совместимы со стандартными кристаллами типа 8052, однако имеют уникальную особенность, на которую мы хоте- 220
Таблица 12 Корпуса L D40,L44,Q44 | IL44.Q44 j D40.L44.Q44 | [040X44,044 ID40,L44,Q44 |D40,L44,Q44 | 'D40,L44,Q44 ! |D40,L44,Q44 ! 8 ! 0 a |D40,L44,Q44 I D40X44.Q44 |D40,L44,Q44 Дополнительная периферия СО 3 £L О I/O Port, WDT | I/O Port, WDT | I/O Port, WDT j I/O Port, WDT I Q S' a. О I/O Port. WDT I I/O Port, WDT I I/O Port, WDT j I/O Port, WDT, P1 interrupt I/O Port, WDT, | UART, P1 Interrupt Таймеры, счетчики L . _ со СО СО CO CO CO CM CO CO CM CO Линии ввода/ вывода СМ со СМ со со со см со CD 00 CM co CD CO CM co CD CO CM co CD CO CM co R CM co CD CO CM co CD CO CM co CD CO CD CO Объем памяти данных, i байт cd ю СМ со ю см 00 СМ CD D CM co Ю CM CD Ю CM x CM uo + X 00 CM CD ID CM CD ID CM Ю CM CD ID CM Объем памяти программ, кБайт I I хг co CD CM co s •=r co CD xf CO Тип памяти программ I I JZ У) ГО XL m ПЗ ПЗ JZ w я ro X co X co f X 0) 1 X Ю f X СЛ i Напряж. i питания, 8 ID id” to Ю LD id id Ю D ID ID ID id uro” Ю ID ID ID ID ID IO ID” ID ID X. cm” со со xt см” xf CM” xf cm” xt cm” xf cm” 00 CO T— CO 00 Частота , МГц СМ я а Я s я я xf CM xf CM Я rot- CM Я Наимено- вание см со _J со § со 3 со 5 т— D Ш со 5 CM ID Ш _J 00 s LU co 5 co ID Ш _J co $ CD Ю LU co i r— ID co I CM ID CO i a co 0 co co 5 W78L.E812 | Корпус i D40, L44, Q44 D40, L44, Q44 D40, L44, Q44 I Темп. 'Диапазон, L c -40...+80 -40...+80 । -40...+80 Напряжение питания, В I 3...5 3...S 3...5 Другая периферия, особенности Программировние Rash из программы Программировние Flash из программы П рогра мм и-ровн ие Flash из программы, второй DPTR Послед. I каналы | UART I UART UART, SPI Линии ввода/ вывода Г । 32 32 I 32 Таймеры/1 счетчики | 3+WDT I 3+WDT j 1QM+C RAM, байт I 256 I 256J 1512 I CD ID CM CD ID CM 1K Flash X см j 36К | CD | 20K I co 73K | Макс. । частота, ! МГц й 33 i 0 Обозначе- ние | TSO681SS I Г 8SO681SS | О) D 00 СО со 3 0 00 CO CO I SST89F58 I SST89C564 221
ли бы обратить ваше внимание. Изюминкой этих приборов явля- ется возможность программировать Flash-память непосредственно; из программы пользователя без подачи каких-либо внешних напря- жений и сигналов. Для этого в состав микроконтроллеров введены дополнительные регистры специального назначения (SFR), через ко- торые программист может управлять процессом стирания, записи, верификации Flash-памяти уже в процессе выполнения програм- мы (на run-time). Такой подход открывает широкие возможности для создания гибких микроконтроллерных систем, которые могут самообновляться уже в процессе эксплуатации, а также использо- вать Flash-память для хранения оперативных данных при возмож- ных отключениях питания. МИКРОКОНТРОЛЛЕРЫ ФИРМЫ INFINEON TECHNOLOGIES (SIEMENS) Фирма Siemens внесла несомненное своеобразие в развитие семейства 8051. Девиз ее можно, пожалуй, сформулировакть сле- дующим образом: «Самые сложные в мире микроконтроллеры 51-го семейства». Действительно, наряду с выпуском стандарт- ных кристаллов, совместимых с 8051 и 8052, Siemens разработала совершенно оригинальные модификации, нашедшие свое широ- кое применение в качестве индустриальных high-end микрокон- троллеров. Отделение полупроводников фирмы Siemens в пос- ледние годы развивалось настолько бурно, что в апреле 1999 г. было принято решение организовать на базе этого отделения са- мостоятельную компанию, которая получила название Infineon Technologies. Среди наиболее любопытных периферийных разработок Siemens: • 10-разрядные АЦП; • 6-канальный 10-разрядный ШИМ для управления электродви- гателями постоянного тока; • 29-канальный ШИМ; • блок из 8-ми DPTR; • аппаратный блок умножения 16x16 и деления 32/16; • блок загрузчика программной памяти (Bootstrap). Совершенствуя технологию производства, фирма Siemens пе- ревела все свои микроконтроллеры 51-го семейства, первоначально использовавшие лицензионное ядро фирмы Intel, на свое собствен- ное ядро, после чего 51-е семейство Siemens сменило свое название и стало семейством С500 (табл. 14). Перевод на новую технологию 222
Таблица 14 оЛибоя D40, L44, Q44 d 8 Q44 Q44 Q100 L44, Q44 о co 0 О co 0 Q100 | D52, L44] D52, L44 Эо ‘HOtBUBMtf •UW9J_ in со + о т tn co + 7 -40..+85 ш CN V о 7 -40..+110 |-40...+125 | tn CN V d 7 -40...+110 -40..+110 -40...+110 tn co + d 7 | -40...+85 g ‘иинвхии эинежидивн tn in in CN in in in CN 4,25...5,5 ш in in CN 4,25...5,5 | 4,25...5,5 | 4,25...5,5 tn in in CN tn in in CN tn in in CN tn in in CN tn in in CN июоннэдооо ‘иибэфибэи BBjAdtf ОТР версия 8 DPTR, 4 уровня прерываний 6 канальный ШИМ для двигателя пост, тока, ОТР О. D co 29 ШИМ, 8 DPTR.yMH. 16x16, дел.32/16, Bootstrap OTP версия s 3 Xt 4 ШИМ, 8 DPTR 21 ШИМ, 8 DPTR, умножитель 16x16, дел. 32/16 I I •dcBd/iqtfoxa ‘uhv 1 | О X со 00 X co О ^x in I I о ccT X co О X co О ^x CN I I 1яиенвя •Нэиэоц ir < < t— о: < I UART, CAN Ё < X CN о 0 0 UART+ SSC i— BL < UART+ SSC+CAN cE < X CN CD 0 USB+SSC Btfoaiaa/Btfoaa иинии CN CO CN CO CN СО 3 О CO CN CO CN CO CD tn in CO CD CN CO CN CO ияиыэьз /1чдэи1ив1 co 3+ Watchdog 4+ Watchdog 3+ Watchdog 5+ Watchdog CN co 3+ Watchdog 3+ Watchdog 4+ Watchdog CN 2+ Watchdog хивд ‘|/yva CD in CN CN in CN Ю CN in CO CN CO co CD tn CN cd CN CN in CD in CN 256...1280 О CO CN О CO CN CD in CN CD in CN хивд ‘woHda/woa CO CD СО CD I in CN CD cd CN CO cd xf CD CN CO xf CO hjiai ‘BlOlOBh ’OMB|fl о xj О CN о О CN CD CN CN xf <N О xf <N CN CN эинэквнводо 0 О in О CN tn О 0 о ш о О in о tn О CD О tn О 2 in О < CO tn О s tn in О О tn in О E ° О xf tn О S О Условные обозначения корпусов: D — DIP, L — LCC, Q — QFP, S — SSOP, SOIC 223
позволил повысить тактовые частоты микроконтроллеров, но, в це- лом, ядро осталось прежним. Все временные характеристики пери- ферии и циклограммы шины адреса/данных полностью соответ- ствуют характеристикам микроконтроллера 8051 фирмы Intel. Более подробную информацию вы сможете найти на web-site: http:// www.infineon.com.
Приложение 6________ МОДЕРНИЗАЦИЯ СИСТЕМ НА ОСНОВЕ МИКРОКОНТРОЛЛЕРОВ СЕРИИ 8051 Удачный набор периферийных устройств, возможность гибкого вы- бора внешней или внутренней программной памяти, приемлемая цена и доступность инструментальных средств отладки разного уров- ня — все это стало ключевыми факторами успеха микроконтролле- ров серии 8051 на мировом рынке. Иногда приходится слышать о том, что микроконтроллеры семей- ства MCS-51 — это «прошлый век», они повсеместно снимаются с про- изводства, и ориентироваться на них не стоит. На самом деле только фирма Intel прекратила производство 51-х контроллеров. Образовав- шуюся нишу заполнили фирмы с не менее известными именами: Philips, Infineon, AMD, Atmel, Oki, SST, MHS, ISSI, LG и т. д. Одни из них просто копируют прототип с учетом возможностей современной технологии. Другие же выпускают микроконтроллеры собственной разработки с си- стемой команд «базовой архитектуры» и более развитой, чем у прото- типа, периферией, отвечающей современным потребностям. Кстати, и в России в Воронеже начинается выпуск микроконтроллера серии 8051, выполненного на современном технологическом уровне. Помимо задач разработки и внедрения новых устройств появляют- ся проблемы с модернизацией ранее созданных систем, базирующихся на микроконтроллерах семейства 8051. Чаще всего микроконтроллер перестает справляться с поставленной задачей вследствие нехватки про- изводительности, и приходится принимать решение о замене всей сис- темы на более современную. Но не стоит забывать и о возможности повышения производительности уже имеющихся систем. Речь идет как о простейших устройствах управления — регуляторах, контроллерах бытовой техники, интеллектуальных периферийных модулях, так и о 225
сложных локальных и распределенных комплексах промышленной ав- томатики, таких как системы учета энергоресурсов, корпоративного контроля доступа, управления микроклиматом и др. О микроконтроллерах семейства 8051, способных изменить в луч- шую сторону показатели производительности разных систем, и пой- дет дальше речь. ВРЕМЯ ВЫПОЛНЕНИЯ КОМАНД В БАЗОВОЙ АРХИТЕКТУРЕ Время выполнения команд жестко привязано к внутреннему ге- нератору микроконтроллера, частота которого определяется внешним кварцевым резонатором, подключаемым к соответствующим выво- дам корпуса. Внутренний генератор формирует сигналы синхрони- зации для всей аппаратуры микроконтроллера. На основе сигналов генератора формируется машинный цикл. Когда-то давно разработчики микроконтроллера 8031 сделали ма- шинный цикл равным двенадцати тактам генератора. Очевидно, этот выбор сделан не случайно. В многотактовом машинном цикле выпол- няется целый ряд действий, связанных с выборкой кода, выполнением операций и регистровыми пересылками, что позволяет выполнять большую часть команд за один цикл. Для каждой команды набор вы- полняемых в машинном цикле действий индивидуальный. Длительность машинного цикла при тактовой частоте 12 МГц со- ставляет одну микросекунду. Один миллион операций в секунду —- такова была производительность «базового» микроконтроллера при выполнении одноцикловых команд. Для большого количества при- кладных задач этого было вполне достаточно. Но любой разработчик, и тем более человек, занимающийся модернизацией устройств на мик- роконтроллерах, должен правильно оценивать «миллионы» операций в секунду современных кристаллов и временные характеристики сиг- налов доступа к внешней памяти представителей 51-го семейства. Большую часть команд микроконтроллер семейства MCS-51 вы- полняет за один цикл. Для некоторых команд машинный цикл в 12 тактов избыточен и, следовательно, при выполнении холостых так- тов ничего не происходит. Например, команда MOV A, Rx выбирается и выполняется 51-м микроконтроллером за 6 тактов, а следующие 6 тактов происходит холостая выборка инструкции по следующему адресу. В результате на 6-тактовую инструкцию микроконтроллер затрачивает 12 тактов. Для 85 команд требуется два машинных цикла и тоже с холостыми тактами (команды умножения и деления выпол- няются за 4 машинных цикла). Если бы разработчики микроконтроллера уменьшили количество тактов в машинном цикле, то это привело бы к уменьшению време- 226
ни холостой работы. Оборотной стороной такого улучшения явилась бы такая схемотехническая реализация устройства управления кон- троллера, которая оказалась бы просто невозможной для размеще- ния на одном кристалле. Ведь с точки зрения технологии 8051 являл- ся для своего времени очень сложным изделием — кристалл содержал 128 тыс. транзисторов. Такой аргумент был очень весомым лет 15 назад, в эпоху появле- ния первых микроконтроллеров, и вследствие этого MCS-51 были сделаны именно такими, какими они есть. Поэтому мы до сих пор пользуемся «базовой архитектурой» с не очень эффективной диаг- раммой выборки, дешифрирования и выполнения инструкций и с небольшой скоростью обмена с внешней памятью. ВРЕМЕННЫЕ ХАРАКТЕРИСТИКИ СИГНАЛОВ УПРАВЛЕНИЯ ВНЕШНЕЙ ПАМЯТЬЮ На сегодняшний день в разрабатываемых устройствах применя- ются микроконтроллеры с внутренней памятью программ, и в боль- шинстве случаев работают они с внешней памятью данных. В разра- ботках предыдущих лет и память программ была внешней. Использование внешней памяти очень существенно сказывается на производительности таких систем. Хотя на сегодняшний день существуют различные последователь- ные интерфейсы (I2C, SPI и CAN), самым популярным способом под- ключения дополнительных устройств к микроконтроллеру до сих пор остается такой: регистры, дешифраторы и периферийных контрол- леры «врезаются» в адресное пространство памяти данных. При этом микроконтроллер обращается к таким устройствам как к ячейкам памяти. В подавляющем большинстве случаев «врезанные» устрой- ства способны обмениваться с контроллером на значительно более высоких скоростях, чем даже память. Получается, что «тормозит» систему микроконтроллер, а не периферия. В дальнейшем под дос- тупом к памяти будем понимать обращение к «врезанным» перифе- рийным устройствам. Напомним что, при работе с внешней памятью данных выдача младших разрядов адресов А0-А7 осуществляется через порт РО. При этом адрес фиксируется во внешнем регистре по сигналу ALE. Стар- шие разряды адресов А8-А15 выдаются через порт Р2. Чтение и вы- дача данных стробируются сигналами RD и WR . Чтение кодов ко- манд из внешней памяти производится по сигналу PSEN. Предварительную оценку временных характеристик интерфейса микроконтроллер-память несложно сделать, опираясь на теоретичес- кие значения длительностей сигналов управления внешней памятью, 227
приведенных в переводных или отечественных изданиях, посвящевр» ных семейству 8051: • строб адреса — ALE генерируется с частотой 1/6 частоты резоэ натора; • длительность сигнала ALE — 2 такта; • длительность сигналов RD и WR — 1/2 машинного цикла (в тактов); • длительность сигнала PSEN — 1/4 (3 такта) машинного цикла. Так, при использовании кварцевого резонатора частотой 24 МГц максимальная длительность сигналов PSEN, RD и WR равна соот- ветственно 167, 250 и 250 нс. Предельная скорость обмена с внешне^ памятью данных — 1 Мбайт в секунду, так как все команды MOVX вы полняются за два машинных цикла (делим 24 МГц на 24 такта и по- лучаем 1 МГц). Это — пиковая скорость обмена с памятью. На са- мом деле она существенно меньше, так как микроконтроллер, помимо работы с памятью, выполняет и другие участки программы, напри- мер, вычисляя адрес следующей ячейки. Фирмы-производители указывают в технической документации на микроконтроллер несколько значений для каждого сигнала (минималь- ное, максимальное, типичное), либо дают расчетную формулу, по ко- торой легко считаются необходимые длительности сигналов и задер- жки. Реальные сигналы отличаются от теоретических, и это надо иметь в виду при анализе резервов быстродействия микросхем памяти. Современные микросхемы ПЗУ и ОЗУ легко вписываются в ука- занные времена, а их технические параметры позволяют вести об- мен со значительно большей интенсивностью. Те микросхемы ПЗУ и ОЗУ, которые применялись несколько лет назад, имели худшие параметры, но в ряде случаев и у них оставался некоторый запас по быстродействию. Микросхемы памяти данных можно заменить на более быстродей- ствующие путем их простой физической замены, без каких-либо до- полнительных перерезаний дорожек или использования переходных адаптеров. Цоколевка микросхем останется прежней. Содержание па- мяти программ переносится в более быстродействующие микросхемы или в память микроконтроллера с помощью программаторов. Более того, современные микроконтроллеры имеют режим внутрисхемного программирования. ОТ ЧЕГО ЗАВИСИТ СКОРОСТЬ ВЫПОЛНЕНИЯ ПРОГРАММ Помимо аппаратных ограничений, определяющих максимальную скорость выполнения команд, разработчику следует обратить вни- 228
мание на такую многогранную проблему, как выбор языка програм - мирования и степень проработанности реализуемого алгоритма ра- боты устройства. Использование языка высокого уровня ускоряет процесс напи- сания программной части проекта и упрощает ее отладку при нали- чии соответствующих инструментальных средств. Но, как правило, программы, написанные на языке высокого уровня, медленнее рабо- тают по сравнению с программами на ассемблере. Например, обмен с внешней памятью данных, реализованный на языке Си, выполняется достаточно медленно. Имеется в виду, конеч- но, не разовая запись или чтение, а отрезок времени между двумя обращениями к памяти. В данном случае скорость обмена с памятью определяется скорее разработчиком компилятора, а именно тем, ка- кой код получается в результате компиляции. Разработка программ- ного обеспечения на ассемблере — процесс достаточно трудоемкий и длительный, хотя и обеспечивает наибольшую пропускную спо- собность канала микроконтроллер-память. Ниже приведен текст программы на языке высокого уровня (Си) фирмы IAR. Программа заполняет 32768 ячеек внешней памяти дан- ных значением из порта Р1. #i nc iude < i о51.h> «define MAXSIZE 32768 xdata char none[MAXSlZE]; void main() { data unsigned int i; for (i = 0; i < MAXSIZE: i++) nonc[i ] = P1; } В результате компиляции получается следующий код (код соот- ветствует командам Си): \ 0000 Е4 CLR A \ 0001 F500 MOV SLOCBO main,A \ 0003 F500 MOV SLOCBD main+1,A \ 0005 ?0001: \ 0005 Е500 MOV A, SLOCBO mai n \ 0007 СЗ CLR c \ 0008 9480 SUBB A, #128 \ 000А 5019 JNC 70000 229
\ 000С 20002: 15 none[i ] = Р1 \ 000С Е500 MOV A,SLOCBD ma i n+1 \ 000Е 2400 ADD A,#L0W(none) \ 0010 F582 MOV DPL.A \ 0012 Е500 MOV A, SLOCBD mai n \ 0014 3400 ADDC A,#HIGH(none) \ 0016 F583 MOV DPH.A \ 0018 Е590 MOV A, 144 \ 001А F0 MOVX WPTR.A \ 001В 0500 INC SLOCBD ma i n+1 \ 001D Е500 MOV A,SLOCBD main+1 \ 001F 7002 JNZ $+4 \ 0021 0500 INC SLOCBD ma i n 16 U } \ 0023 80Е0 SJMP 20001 \ 0025 20000: \ 0025 22 RET Компилятор фирмы IAR, в отличие от компилятора KEIL, изме- няет код приведенной выше программы всего на несколько байт при разных размерах пересылаемого массива. Характерной особенностью полученного кода является то, как вычисляется адрес следующей ячей- ки памяти данных. К адресу начала массива, расположенному во внешней памяти данных, прибавляется текущее значение счетчика записываемых в цикле байт. В табл. 1 приведены времена выполнения этой программы при разном количестве записываемых в память данных байт и при исполь- зовании компиляторов фирм IAR и KEIL. Обратите внимание на то, что компилятор IAR хуже справляется с нечетными массивами. Длина записываемого во внешнюю память данных массива. Время записи массива Длина кода, полученного с помощью компилятора фирмы KEIL, кардинально изменяется в сторону увеличения при записи большо- го массива в память данных, что влечет за собой рост временных зат- рат. Это видно из табл. 1. В табл. 1, содержащей результат компиляции программы для раз- ных длин пересылаемых массивов, хорошо видна разница в длине кода и в его содержании. Отличия объясняются разной организацией про- верки переполнения счетчика пересылаемых байт для массивов до 32К 230
Таблица 1 Байт IAR (Мкс) KEIL (мкс) 1 26 Т = 26 21 Т-21 4 98 Т = 25 75 Т= 19 16 362 Т = 23 291 Т= 18 64 1 418 Т = 22 1155 Т= 18 256 5 129 Т = 20 4 103 Т= 16 1024 20 490 Т= 20 16 402 Т= 16 1025 22 562 Т = 22 16 421 Т= 16 4096 81 937 Т = 20 65 598 Т= 16 16384 327 725 Т = 20 262 381 Т='16 20480 409 654 Т = 20 327 976 Т= 16 32767 720 951 Т = 22 524 742 Т= 16 32768 655 441 Т-20 1 572 897 Т = 48 49152 983 158 Т = 20 2 359 328 Т = 48 65535 1 441 915 Т = 22 3 145 709 Т = 48 Т— Время затраченное на пересылку одного байта во внешнюю память данных (получается в результате деления значения времени, затраченного на пересылку, на количество пересылаемых байт). Чем меньше значение Т, тем эффективней обмен с внешней памятью данных. Значения получены при использовании микроконтроллера с машинным циклом 12 тактов и с тактовой частотой 12 МГц. и более 32К. Сгенерированный компилятором фирмы KEIL код для за- писи в внешнюю память данных массива более 32К содержит еще и вызов подпрограммы сравнения ACALL ?C?SLCMP, что вносит допол- нительные временные затраты. Цикл, состоящий из большего количе- ства команд, выполняется медленнее, чем более короткий, отсюда и уве- личение затрат на пересылку одного байта (Т=48). Организованный таким образом доступ (см. тест программы на Си) на запись во внешнюю память данных при использовании ком- пилятора фирмы KEIL целесообразен для массивов до 32К. Компи- лятор IAR лучше применять при пересылках массивов объемом бо- лее 32 К, выигрыш во времени оказывается более, чем в два раза по сравнению с KEIL. Листинг результата компиляции приведенного примера програм- мы с помощью компилятора фирмы KEIL можно просмотреть в табл. 2. Аналогичная программка, реализованная с помощью ассембле- ра, может иметь постоянный коэффициент затрат, и при этом весь- ма небольшой. Дилемму выбора между языком и скоростью можно решить раз- ными путями — например, использованием компилятора языка вы- сокого уровня, поддерживающим ассемблерные вставки. Тогда тело 231
Таблица 2 Keil 32767 Keil 32768 0000 Е4 CLR А 0001 F500 MOV i,A 0003 F500 MOV I+01H.A 0005 7C0001: ; SOURCE LINE # 14 0005 7400 MOV A,#LOW none 0007 2500 ADD AJ+01H 0009 F582 MOV DPL.A 000B E500 MOV A,i GOOD 3400 ADDC A,#HIGH none 000F F583 MOV DPH,A 0011 E590 MOV A,P1 0013 F0 MOVX @DPTR,A 0014 0500 INC I+01H 0016 E500 MOV AJ+01H 0018 7002 JNZ 7C0005 001A0500 INC i 001С 7C0005: 001CE500 MOV A.I+01H 001E B4FFE4 CJNE A,#0FFH,7C0001 0021 E500 MOV A,i 0023 B47FDF CJNE A,#07FH,?C0001 ; SOURCE LINE # 16 0026 7C0004: 0026 22 RET 0000 E4 CLR A " 0001 F500 MOV I,A 0003 F500 MOV I+01H.A 0005 7C0001: 0005 AE00 MOV R6,i 0007 AFOO MOV R7.I+01H 0009 E4 CLR A 000A FC MOV R4,A 000B FD MOV R5,A 000C FB MOV R3,A 000D 7A80 MOV R2,#080H 000FF9 MOV R1,A i 0010 F8 MOV R0,A 0011 D3 SETB C 0012 1100 ACALL ?C?SLCMP 0014 4019 JC 7C0004 ; SOURCE LINE #14 0016 7400 MOV A,#LOW none 0018 2500 ADD A.I+01H 001AF582 MOV DPL,A 001CE500 MOV A.i 001E 3400 ADDC A,#HIGH none 0020 F583 MOV DPH.A 0022 E590 MOV A,P1 0024 F0 MOVX @DPTR,A 0025 0500 INC i+01H 0027 E500 MOV A,i+01H 0029 7002 JNZ 7C0005 002B 0500 INC i 002D 7C0005: 002D80D6 SJMP 7C0001 ; SOURCE LINE # 16 002F 7C0004: 002F 22 RET программы, написанное на языке высокого уровня, будет выполнять- ся медленно (условно медленно), а доступ к памяти останется на уров- не ассемблера. Правила написания программ с ассемблерными встав- ками у каждого компилятора свои. В большей степени вопрос о том, достаточна ли производитель- ность микроконтроллера для решения поставленной задачи, зависит от квалификации и творческих способностей разработчика. В свою очередь, без профессиональных средств отладки серьезный проект выполнить сложно. СРЕДСТВА ДЛЯ ОЦЕНКИ ПРОИЗВОДИТЕЛЬНОСТИ МИКРОКОНТРОЛЛЕРА Оценить производительность микроконтроллера или сравнить производительность микроконтроллеров с разным машинным цик- лом можно с помощью профессиональных отладочных средств. Ма- 232
кетные платы для этого собирать не надо. Для наших целей подойдут л современный программный симулятор, и внутрисхемный эмулятор. Говоря о целесообразности использования профессиональных инструментальных средств отладки, можно приводить множество аргументов. Мы сознательно не стали этого делать, поскольку счита- ем, что любой профессиональный разработчик или инженер-при- кладник, только встающий на стезю разработки микропроцессорной системы, в состоянии самостоятельно сделать выводы при наличии необходимой информации. Приведем лишь одно соображение. За- падные разработчики микроконтроллерных систем, которых трудно заподозрить в отсутствии прагматизма или в неумении считать день- ги, давно и интенсивно используют в своей работе профессиональ- ные инструментальные средства. При этом большинство разрабо- ток, особенно сложных систем, ведется с применением языков высокого уровня. Об этом стоит задуматься. Программный симулятор Если доступен исходный текст программы, то возможности модер- низируемой системы легко оценить с помощью программного отлад- чика-симулятора. Отладчик-симулятор должен обеспечивать привязку к реальному времени (хотя в нем все процессы происходят в виртуаль- ном мире) и должен иметь встроенный анализатор эффективности —- Performance Analyzer. Анализатор предназначен для построения диаг- раммы распределения времени выполнения программы, т. е. выясне- ния вклада каждой процедуры программы в общее время выполнения, что позволяет анализировать критические участки с целью их оптими- зации или выявления функций, которые не вызываются ни разу («мер- твый код»). Для работы с Performance Analyzer исходные тексты про- граммы необходимо подготовить. Описание подготовительных действий индивидуально для каждого языка программирования и при- водится в документации используемого средства отладки. Другими словами, анализатор эффективности вычисляет для каж- дой подпрограммы ее долю в общем времени выполнения програм- мы, а также подсчитывает время, затраченное на полное выполнение программы. Performance Analyzer работает вне зависимости от того, в каком режиме выполняется программа — пошаговом или непре- рывном. Это удобно для анализа распределения времени не по всей программе, а по какому-либо ее фрагменту. В любой момент Performance Analyzer может быть сброшен (счетчики времени для всех функций становятся равными нулю). В случае использования небольшой программы для определения времени ее выполнения помимо анализатора эффективности мож- 233
но воспользоваться окном «Время выполнения» или функцией поша- гового выполнения без захода в подпрограммы. Оба способа работа- ют и в симуляторах, и в эмуляторах. На сайте фирмы «Фитон» (http:// www.phyton.ru) находится демо-версия профессионального симуля- тора — PDS-51 из пакета Project-51/SA позволяющая работать с кодом до 2К, поддерживающая несколько языков высокого уровня и микро- контроллеры с машинным циклом разной длины. Пакет Project-51/SA поддерживает компиляторы фирм KEIL и IAR, о которых шла речь в предыдущем разделе, и поставляется с ассемблером МСА-51. В окне «Время выполнения» симулятора РПБ-51отображается ин- формация о времени выполнения программы (имеется в виду модель-, ное время) и частоте кварцевого генератора процессора. Подсчет време- ни выполняется на основе значений тактовой частоты процессора. В строках окна показывается модельное время, прошедшее с момента пос- леднего сброса таймера, и время, отсчитываемое по «локальному» счет- чику, который сбрасывается каждый раз при запуске отлаживаемой про- граммы. Например, после выполнения одной машинной инструкции в этой строке будет отображено время, затраченное на ее выполнение, после выполнения одного оператора Си — суммарное время выполне- ния инструкций, из которых состоит этот оператор и т. п. Отображает- ся частота тактового генератора процессора и количество сгенерирован- ных за время выполнения программы сигналов PSEN, RD, WR . Выполнение шага программы без захода в подпрограммы (под- программа выполняется целиком как один шаг) обеспечивает допол- нительную возможность по тестированию микроконтроллера с точ- ки зрения производительности и интенсивности обмена с памятью. Всегда можно определить время выполнения подпрограммы. Перечисленные выше функции являются некоторой частью сер- висных возможностей, реализованных в высокоуровневом отладчи- ке-симуляторе PDS-51. Использование встроенного в симулятор Си- подобного языка для моделирования внешней среды открывает дополнительные перспективы для тех, кто занимается модернизаци- ей и разработкой систем на основе микроконтроллеров. Всю систему можно «нарисовать» на экране компьютера, описать внешние по от- ношению к контроллеру аналоговые и цифровые сигналы и довести программу на полученном виртуальном макете. Внутрисхемный эмулятор Внутрисхемный эмулятор, в отличие от симулятора, работает в реальном времени и позволяет вести отладку программ в модернизи- руемой или создаваемой системе в полном объеме. Стыковка внутри- схемного эмулятора с системой производится при помощи эмуляци- 234
онного кабеля со специальной эмуляционной головкой. Последняя вставляется вместо; микроконтроллера в систему. Если микроконтрол- лер невозможно удалить из отлаживаемой системы, то использование эмулятора возможно только только тогда, когда микроконтроллер имеет отладочный режим, при котором все его выводы находятся в третьем состоянии. В этом случае для подключения эмулятора исполь- зуют специальный адаптер-клипсу, который подключается непосред- ственно к выводам эмулируемого микроконтроллера. Внутрисхемный эмулятор PICE-51 (пакет Project-51/ЕА) имеет ап- паратных! трассировщик, который позволяет посмотреть историю выполнения программы и те самые холостые выборки, о которых упо- миналось в предыдущем разделе. Помимо окна «Время выполнения» и функции пошагового выполнения без захода в подпрограммы, внут- рисхемный эмулятор снабжен очень мощным средством отладки под названием процессор точек останова. Это аппаратный компаратор, спо- собный сравнивать состояния шин адреса, данных и внешних сигна- лов в любом цикле при обращении к любой области памяти со значе- ниями, введенными пользователем. При совпадении значений возможен останов программы или запуск трассировщика. Допустим, необходимо выявить момент, когда программа начнет производить запись в старшую половину внешней памяти данных. С помощью про- цессора точек останова это сделать очень просто. Достаточно указать в старшем разряде адреса 1, в остальных разрядах — 0 и определить в каком цикле проверять состояние шины адреса. Более сложное использование процессора точек останова подра- зумевает логическое взаимодействие нескольких точек останова, оп- ределенных пользователем. Внутрисхемный эмулятор дороже, чем программный симулятор, но предоставляемый программной оболочкой сервис и аппаратные возможности делают его незаменимым в проектах любой сложности при работе с сигналами в реальном времени. В конечном итоге, при использовании профессионального эмулятора вы потратите на раз- работку или модернизацию системы на порядок меньше времени, чем при работе без него. А время — это деньги. ПУТИ ПОВЫШЕНИЯ ПРОИЗВОДИТЕЛЬНОСТИ СИСТЕМ НА ОСНОВЕ МИКРОКОНТРОЛЛЕРОВ 8051 По истечении некоторого времени ранее разработанные системы на микроконтроллерах находятся на пределе своих возможностей по при- чине расширения возлагаемых на них задач. Для модернизации таких устройств существует несколько путей. Один из них — замена микро- контроллера на аналогичный с более высокой тактовой частотой. При 235
этом повысится скорость выполнения команд контроллером и скорость обмена с памятью. Как показано выше, скорее всего память и перифе- рийные устройства смогут работать на более высокочастотной шине. На сегодня тактовая частота типичного микроконтроллера повысилась до 33 МГц — это 2,75 миллионов операций в секунду, что в 2,75 раза больше, чем у старых контроллеров, работавших на частоте 12 МГц. Сле- довательно, и производительность модернизируемой системы увели- чится, оставаясь достаточной еще довольно продолжительное время. Но, к сожалению, не все так просто. И дело даже не в том, что возможна нестыковка старой системы и нового процессора по логи- ческим уровням при большой нагрузке на шины. Большинство сис- тем используют внутренние таймеры, последовательные порты, ШИМ-генераторы, WD-таймеры микроконтроллера, которые настра- иваются программно. И простое увеличение его тактовой частоты приведет, например, к уменьшению промежутка времени между пре- рываниями от таймеров. Часы, реализованные таким способом, пой- дут в 2,75 раза быстрее, а связь через последовательный порт с ком- пьютером работать не будет. Разрешить возникший конфликт сможет: только программист, исправив в программе настройки таймеров. А это не всегда возможно. Иногда просто дорого. Выход, конечно, есть. Существует несколько фирм, которые раз- работали микроконтроллеры семейства MCS-51 с укороченным ма- шинным циклом. В таком микроконтроллере машинный цикл вы- полняется за 6 тактов или даже еще быстрее, за 4 такта. Другими словами, при той же тактовой частоте производительность микро- контроллера с машинным циклом 6 тактов должна вырасти в 2 раза, а у четырехтактового — почти в 3 раза по сравнении с базовой архи- тектурой. Замена старого микроконтроллера на современный с уко- роченным машинным циклом в большинстве случаев позволяет уве- личить производительность системы без модернизации программ. Привязка ко времени остается как у исходного процессора (тайме- ры-счетчики остались прежними), а команды выполняются быстрее, и скорость обмена с памятью возрастает. Сравнивать пиковую производительность микроконтроллеров на одной тактовой частоте смысла не имеет. Микроконтроллер с укоро- ченным вдвое машинным циклом будет выполнять программу в два раза быстрее. Это касается и работы с внешней памятью. Б микро- контроллерах фирмы Dallas Semiconductor для большинства команд используется еще более короткий машинный цикл — 4 такта (неко- торые команды выполняются за 8 тактов). Следовательно, произво- дительность у них выше до 3 раз по отношению к микроконтролле- ру с «базовой» архитектурой. 236
Интересно посмотреть, насколько изменится производительность системы, в которой старый микроконтроллер заменен на современ- ный, например, от фирмы Dallas Semiconductor. Временная диаграм- ма доступа к внешней памяти данных у контроллеров Dallas Semiconductor изменена (увеличена на некоторое количество тактов, чтобы микроконтроллер мог работать с медленной памятью). Оче- видно, что чем чаще происходит обмен с внешней памятью, тем мед- ленней работает вся система. И максимальная производительность достигается на тех участках кода, где нет доступа к памяти. Вслед- ствие этого, для каждой системы коэффициент полезности при за- мене микроконтроллера па новый оказывается индивидуален. Такой эксперимент проще всего проделать с помощью эмулято- ра, который поддерживает микроконтроллеры с укороченным цик- лом команд. Эмулятор, о котором упоминалось ранее, PICE-51 с со- ответствующими адаптерами, поддерживает микроконтроллеры с 6-тактным и 4-тактным машинным циклом. МИКРОКОНТРОЛЛЕРЫ С УКОРОЧЕННЫМ ЦИКЛОМ КОМАНД Микроконтроллеры 89С51 фирмы Philips В конце 1999 г. фирма Philips сделала новый шаг в развитии мик- роконтроллеров семейства 8051, выпустив микроконтроллеры 89C51RB2, 89C51RC2, 89C51RD2. Главной их особенностью является сокращенное в два раза по сравнению с «базовой архитектурой» вре- мя машинного цикла. Вместо обычных 12 тактов новые микроконт- роллеры выполняют машинный цикл за 6 тактов. В результате вре- мя выполнения самой быстрой инструкции сократилось до 300 нс на 20 МГц, что эквивалентно частоте 40 МГц у стандартного 51-го кри- сталла. При этом микроконтроллеры имеют однократно программи- руемый конфигурационный бит, управляющий переключением ядра в стандартный 12-тактный режим работы. Установка этого бита воз- можна с помощью программатора. В 12-тактном режиме эти микроконтроллеры полностью идентич- ны микроконтроллерам 89C51RB+, 89C51RC+, 89C51RD+. Функцио- нальные характеристики и разводка корпусов новых микроконтрол- леров также полностью аналогичны самым популярным кристаллам семейства 8051 — 89C51FA/FB/FC/FD и 89C51RB+/RC+/RD+. Это обес- печивает возможность быстрой и дешевой модернизации существую- щих микроконтроллерных систем путем простой замены старого мик- роконтроллера на новый без каких-либо изменений в аппаратуре. Краткие технические характеристики этих микроконтроллеров пред- ставлены в табл. 3. 237
Таблица з МК Макс. Тактовая частота, МГц (машинный цикл) FLASH- память, кбайт RAM, байт Таймеры/ счетчики Число линий ввода/вывода 89C51RB2 33 (12 тактов) 20 (6 тактов) 16 512 3+PCA+WDT 32 89C51RC2 33 (12 тактов) 20 (6 тактов) 32 512 3+PCA+WDT 32 89C51RD2 33 (12 тактов) 20 (6 тактов) 64 1024 3+PCA+WDT 32 Примечание. Все модификации имеют универсальный асинхронный последователь- ный приемопередатчик (UART. Напряжение питания всех микроконтроллеров — 4,5...5,5 В Принятые сокращения: РСА WDT DTPR СО Boot louder ISP ШИМ NxM — массив программируемых счетчиков; — сторожевой таймер; — регистр указателя адреса данных; — выход тактового сигнала; — начальный загрузчик; — внутрисхемное программирование; — широтно-импульсный модулятор: N выходов с разрешением М разрядов каждый. Сигналы работы с внешней памятью программ и данных в мик- роконтроллерах 89C51Rx2 имеют следующие значения: Таблица 3 Сигнал Минимальная длительность сигнала (Тактовая частота 33 МГц , машинный цикл — 12 тактов). Формула расчета. Минимальная длительность сигнала (Тактовая частота 20 МГц , машинный цикл — 6 тактов). Формула расчета. ALE 21 нс 2Tclc - 40 10 нс Tele-40 PSEN 45 нс ЗТс!с - 45 30 нс 1,5Тс1с-45 RD 82 нс 6Tclc - 100 50 нс 3Tclc - 100 WR 82 нс 6Тс!с-100 50 нс ЗТс1с-100 Примечание. Tele — период тактовой частоты (наносекунд) Максимальная длительность сигналов определяется по тем же формулам, надо только отбросить вычитаемое. Типичное значение длительностей сигналов находится между ми- нимальным и максимальным значениями. Обычно фирмы-произво- дители микроконтроллеров не указывают типичное значение, так как оно зависит от многих факторов (напряжения питания, температуры, втекающих и вытекающих токов и т. д.). Поэтому ориентироваться при разработке новых систем следует на указанное в табл. 4 значение. А при модернизации устройств можно посчитать максимальные дли- 238
Таблица 5 "Другая периферия, особенности Корпус (тип, число выводов) ''Boot loader, ISP, 2 DPTR, 4 уровня прерываний, СО, удвоенная скорость выполнения инструкций DIP40, LCC44, QFP44 'Boot loader, ISP, 2 DPTR, 4 уровня прерываний, СО, удвоенная скорость выполнения инструкций DIP40, LCC44, QFP44 Boot loader, ISP, 2 DPTR, 4 уровня прерываний, СО, удвоенная скорость выполнения инструкций DIP40, LCC44, QFP44 тельности сигналов. И если временные характеристики установлен- ных микросхем памяти соответствуют посчитанным или несколько лучше, то, скорее всего интерфейс микроконтроллер-память будет нормально работать. Иначе микросхемы памяти данных придется за- менить на более быстродействующие, а содержимое памяти программ переписать в память микроконтроллера. Информация по микроконтроллерам находится на сайте фир- мы Philips: http://www.semiconductors.philips.com/handbook/ category_7.html. Микроконтроллеры 89С66Х фирмы Philips Микроконтроллеры серии 89С66Х имеют увеличенный объем RAM на кристалле и характерный набор функциональных характе- ристик: сокращенное в два раза по сравнению с «базовой архитекту- рой» время машинного цикла, начальный загрузчик, внутрисхемное программирование, два DPTR, четыре уровня прерываний, массив программируемых счетчиков, сторожевой таймер, программируемый ШИМ, контроль за напряжением питания. В микроконтроллерах реализована возможность отключения сиг- нала ALE с целью уменьшения уровня электромагнитного излучения. Микроконтроллеры фирмы Temic Semiconductors Фирма Temic Semiconductors выпускает микроконтроллеры семей- ства 8051 с префиксом Х2. В 12-тактном режиме эти микроконтролле- ры полностью идентичны микроконтроллерам с базовой архитектурой. Но они легко переводятся в режим с укороченным машинным циклом в 6 тактов. Для этого достаточно установить бит CKCON.O дополни- тельного регистра CKCON. Установка и сброс бита возможны в любой момент в ходе выполнения программы. Большинство команд при той же тактовой частоте выполняется в два раза быстрее, а при обращении к внешней памяти мы сбрасываем бит CKCON.O и получаем стандарт- 239
Таблица 6 Микроконтрол- лер FLASH- память, Кбайт RAM, байт Тактовая частота, МГц Машинный цикл 6 тактов Тактовая частота, МГц Машинный цикл 12 тактов Темпера- турный диапазон, °C Корпус Р89С660НВА 16 512 0...20 0...33 0...+70 PLCC44 P89C660HFA 16 512 0...20 0...33 -40...+85 PLCC44 P89C660HBBD 16 512 0...20 0...33 0...+70 LQFP44 Р89С662НВА 32 1024 0...20 0...33 0...+70 PLCC44 P89C662HFA 32 1024 0...20 0...33 -40...+85 PLCC44 P89C662HBBD 32 1024 0...20 0...33 0...+70 LQFP44 P89C662HFBD 32 1024 0...20 0...33 -40...+85 LQFP44 Р89С664НВА 64 2048 0...20 0...33 0...+70 PLCC44 P89C664HFA 64 2048 0...20 0...33 -40... +85 PLCC44 P89C664HBBD 64 2048 0...20 0...33 0...+70 LQFP44 P89C664HFBD 64 2048 0...20 0...33 —40.. .+85 LQFP44 Примечание. Все модификации имеют универсальный асинхронный последовательный приемопередатчик UART. Напряжение питания всех микроконтроллеров — 4,5...5,5 В ные длительности сигналов RD, WR , PSEN. При включении и после аппаратного сброса разряд регистра CKCON.O всегда очищен, и микро- контроллер стартует со стандартным машинным циклом. Микроконтроллеры фирмы Temic: Таблица 7 ROMIess ROM ОТР TS80C31X2 TS80C52X2 TS87C52X2 TS80C32X2 TS80C54X2 TS87C54X2 TS80C51RA2 TS80C58X2 TS87C58X2 TS80C51RD2 TS83C51RB2 TS87C51RB2 TS80C51U2 TS83C51RC2 TS87C51RC2 TS83C51RD2 TS87C51RD2 TS83C51U2 TS87C51U2 Примечание. ROMIess — без памяти программ на кристалле ROM — масочная память программ ОТР — однократно программируемая память программ Temic Semiconductors, находящийся в полной собственности фили- ал компании Atmel Corporation (Nasdaq ATML), объявил о доступности Flash-микроконтроллера T89C51RD2. Микроконтроллер сохраняет все особенности Temic TS8xC51Rx2 с 256 байтами внутреннего ОЗУ (RAM) плюс 1024 байта СОЗУ (сверхоперативного ОЗУ, XRAM), программи- руемый массив счетчиков (Programmable Counter Array, РСА), аппарат- ный сторожевой таймер (Watchdog timer), режимы управления питани- ем, а также использует преимущество быстродействующего ядра. 240
Микроконтроллеры фирмы Dallas Semiconductor Фирма Dallas Semiconductor усовершенствовала архитектуру се- мейства 8051. Явным слабым местом базовой архитектуры являлась, как уже упоминалось, неэффективная диаграмма выборки, дешиф- рирования и выполнения инструкций. Специалисты Dallas Semiconductor переработали ядро микроконтроллера таким образом, что типовой цикл выборки команд сократился до 4-х тактов, а холо- стые выборки были исключены. Таким образом, команда MOV A, Rx стала выполняться за 4 такта тактового генератора, т. е. в 3 раза быс- трее. Команды 8051, которые не имели холостых выборок, в новом микроконтроллере «ускорились» в 1,5 раза. Новое семейство микроконтроллеров получило название High- Speed Microcontroller. Важным его достоинством явилось то, что для перевода традиционной микроконтроллерной системы на High-Speed Microcontroller достаточно вытащить из платы микро- контроллер 8051, и взамен него установить микросхему от Dalias Semiconductor. Конечно, в конкретных случаях проблемы перехо- да могут иметь место. Микроконтроллеры семейства High-Speed приведены в табл. 8. Таблица 8 МК ROM/EPROM, кбайт RAM, байт Последо- вательные каналы Другая периферия, особенности Корпус (тип, число выводов) DS80C310 — 256 UART 2 DPTR DIP40, LCC44, QFP44 DS80C320 — 256 2 UART 2 DPTR DIP40, LCC44, QFP44 DS80C323 — 256 2 UART 2 DPTR QFP44 DS8XC520 16 1280 2 UART 2 DPTR DIP40, LCC44, QFP44 DS87C530 16 1280 2 UART 2 DPTR , RTC, Battery back up LCC52 DS87C550 8 1280 2 UART 2 DPTR , RTC, Battery back up, ШИМ 4x8 LCC68, QFP80 Примечание. Максимальная тактовая частота МК DS80C323WDT — 20 МГц, осталь- ных— 33 МГц. Все модификации, кроме DS80C310, содержат три таймера/счетчика и сторожевой таймер (WDT), DS80C310 — только три счетчика/таймера. Число линий ввода/вывода DS87C550 — 55, всех остальных модификаций — 32. МК DS87C550 содержит восьмиканапьный десятиразрядный АЦП. Напряжение питания DS80C323 — 2,7...5,5, остальных — 4,5...5,5 В. Рабочий интервал температур DS8xC520 — от -40 до +125 °C, остальных МК — от -40 до +85 °C. Принятые сокращения: UART — универсальный асинхронный последовательный приемопередатчик; DTPR — регистр указателя адреса данных; RTC — таймер реального времени; Battery back up — батарейная поддержка; ШИМ — широтно-импульсный модулятор. 241
Реализованный в микроконтроллерах DS8XC520 и DS87C530 но-> вый режим управления потреблением (РММ - Power Management Mode) позволяет программно выбирать длительность машинного цикла. Возможен выбор длительности машинного цикла в 64 такта и в 1024 такта с соответствующим снижением потребления. Для еще большего снижения потребления микроконтроллеры могут тактироваться от встроенного аппаратного кольцевого генератора (Дестабилизирован- ная частота около 4 МГц) с делением частоты на 64 или на 1024. У перечисленных кристаллов существует возможность опреде- лять цикл доступа к внешней памяти в тактах генератора. Длитель- ность обращения к памяти устанавливается тремя младшими бита-, ми регистра CKCON (8ЕН). Таблица 9 CKCON2 CKCON1 CKCON0 Такты генера- тора Время цикла обращения к памяти. Тактовая частота 12 МГц 0 0 0 2 167 нс 0 0 1 4 333 нс (устанавливается после Reset) 0 1 0 8 667 нс 0 1 1 12 1000 нс 1 0 0 16 1333 нс 1 0 1 20 1667 нс 1 1 0 24 2000 нс 1 1 1 28 2333нс Корпорация Dallas Semiconductor выпустила новый высокоско- ростной микроконтроллер — DS89C420, который является улуч- шенным аналогом DS87C520. DS89C420 имеет высокопроизводи- тельное (1 цикл за такт) ядро процессора. Микроконтроллер совместим с 87С52 контактно и программно. DS89C420 является наиболее скоростным в сравнении с другими микроконтроллера- ми стандарта 8051: одна инструкция за такт при максимальной ча- стоте в 50 МГц. При обработке 50 миллионов команд в секунду, DS89C420 работает в 50 раз быстрее, чем обычный микроконтрол- лер архитектуры 8051. Таблица 10 Обозначение Корпус Макс, тактовая частота, МГц Температурный диапазон, °C DS89C420-MNS 40-pin PDIP 50 -40 до +85 DS89C420-QNS 44-pin PLCC 50 -40 до +85 DS89C420-ENS 44-pin TQFP 50 -40 до +85 242
Микроконтроллеры фирмы Winbond Фирма Winbond выпускает микроконтроллеры W77xxx — Turbo MCS-51. Машинной цикл в них укорочен до 4 тактов, как и у микро- контроллеров фирмы Dallas Semiconductor. Таблица 9 М икроконтроллер Максимальная тактовая частота 6 тактов/12 тактов Напряжение питания В. Корпуса W77C32 25/40 4,5...5,5 D40,P44,Q44 W77C58 25/40 4,5...5,5 D40,P44,Q44 W77E58 25/40 4,5-5,5 D40,P44,Q44 W77E468 25/40 4,5-5,5 Q100 W77LE58 25 2,7-5,5 D40,P44,Q44 Информация о микроконтроллерах Winbond находится на сайте фирмы: http://www.winbond.com. ПРЕИМУЩЕСТВА ЧАСТИЧНОЙ МОДЕРНИЗАЦИИ (ПУТЕМ ЗАМЕНЫ МИКРОКОНТРОЛЛЕРА НА СОВРЕМЕННЫЙ) ПЕРЕД ПОЛНОЙ МОДЕРНИЗАЦИЕЙ СИСТЕМЫ Наиболее важная особенность семейства 8051 — программная совместимость на уровне двоичного кода всех входящих в него мик- роконтроллеров. Это позволяет разработчикам систем заменять одни микроконтроллеры семейства другими, более производительными, без потери наработок своего программного обеспечения. Используя встроенные периферийные устройства микроконтрол- леров, иногда можно исключить некоторые блоки старой аппарату- ры. В современных микроконтроллерах реализованы некоторые уст- ройства, которые раньше приходилось делать внешними на различной элементной базе. Например, сторожевой таймер или ге- нератор с широтно-импульсной модуляцией, аналого-цифровой и цифро-аналоговый преобразователь, аналоговый компаратор. Это касается и энергонезависимой памяти EEPROM, и всевозможных интерфейсов: CAN, I2C, SPI, USB. Использование встроенных пери- ферийных устройств позволяет увеличить надежность системы, уменьшить потребление энергии и уровень электромагнитного из- лучения. Перенос программы во внутреннюю память микроконтроллера, помимо более надежной работы, позволит защититься от несанкци- онированного доступа к памяти программ. Впоследствии, для заме- ны или коррекции программы в памяти микроконтроллера его не 243
придется даже вынимать из колодки. Достаточно подключить не- сколько проводов от программатора (программатор должен иметь соответствующий режим) и перепрограммировать микроконтроллер внутрисхемно. Такой подход ускоряет и облегчает регламентно-на- строечные работы и делает систему более гибкой. Окончательное решение о методах модернизации исправно ра- ботающих систем не стоит принимать без всестороннего анализа со- путствующих проблем, временных и материальных затрат. К после- дним следует отнести время и деньги, которые придется потратить на обучение персонала и приобретение инструментальных средств отладки в случае перехода на новое семейство микроконтроллеров.
Приложение 7__ СИМУЛЯТОР ДЛЯ СЕМЕЙСТВА х51 При разработке устройств на базе микроконтроллеров перед раз- работчиком неминуемо встает вопрос отладки программы. Как она обычно осуществляется? Самый простой (и трудоемкий) путь — это занесение отлажи- ваемой программы в реальное ПЗУ с последующим поиском оче- редной ошибки. Было время, когда такой путь был единственно возможным. Доступных готовых отладочных средств не было, их приходилось изобретать самостоятельно. Но, к счастью, в настоя- щее время ситуация совершенно иная — существуют инструмен- тальные средства, ускоряющие процесс разработки и отладки. Это эмуляторы ПЗУ, встроенные мониторы-отладчики и внутрисхем- ные эмуляторы. Использование подобных средств резко облегча- ет процесс отладки. На фоне этих средств программные эмулято- ры (симуляторы) как-то отошли в тень, ибо их возможности по отладке процесса взаимодействия контроллера с внешними пери- ферийными устройствами крайне ограничены. Но в том, что ка- сается отладки алгоритмов обработки и преобразования данных, происходящих внутри микроконтроллера, симуляторы не уступа- ют ни одному из вышеперечисленных инструментальных отлад- чиков. К тому же затраты на приобретение симулятора практи- чески нулевые — нужно лишь «скачать» у кого-то из знакомых или откуда-то из сети ту или иную версию какого-либо симулято- ра (естественно, пиратскую). Однако использование пиратского ПО сопровождается рядом проблем, причем не только морально-этического или юридическо- 245
го характера. Не секрет, что программ без ошибок практически не существует. Обнаруживая ошибку в пиратской копии, вы лишены возможности обратиться к разработчику программы с просьбой ис- править найденный «баг». Именно с этим столкнулся автор настоя- щих строк несколько лет назад, когда ни один из десятка найден- ных по разным каналам симуляторов для х51 не был свободен от ошибок. Поскольку тогда стоимость зарегистрированной версии такого симулятора колебалась в пределах между двумя и тремя сотнями долларов, в целях экономии средств автор решил самостоятельно написать подобный симулятор — предполагалось, что тогда не толь- ко не будет проблем с исправлением ошибок и с экономией средств, но и можно будет, сделав этот продукт коммерческим, заработать на его реализации. Так был создан симулятор EMF52L. В настоя- щий момент, однако, этот продукт практически утратил коммер- ческую ценность. Но пользователей контроллеров х51, которым он может пригодиться, еще довольно много. Поэтому автор решил предоставить этот симулятор для свободного некоммерческого ис- пользования. Последний (по времени обнаружения) «баг» был найден одним из зарегистрированных пользователей и исправлен автором чуть более года назад. За последний год информации о новых ошибках не поступало. Тем не менее, гарантировать абсолютную корректность симулятора вряд ли возможно. Поэтому если кто из пользователей обнаружит какую-либо некорректность в его работе, просьба сооб- щить об этом автору для исправления найденной ошибки. Ниже приводится краткое описание симулятора EMF52L. НАЗНАЧЕНИЕ EMF52L предназначен для отладки программ, написанных для микро-ЭВМ семейства MCS52. Он представляет из себя программ- но-логическую модель и не осуществляет аппаратной эмуляции упо- мянутых микро-ЭВМ. ЗАПУСК ЭМУЛЯТОРА Вызов эмулятора с отлаживаемой программой осуществляется командой: EMF52LR.EXE FILENAME.OBJ <Enter> где FILENAME.OBJ — объектный файл отлаживаемой програм- мы в бинарном формате (т. е. в том, который непосредственно за- 246
носится в ПЗУ микроконтроллера). Длина FILENAME.OBJ не дол- жна превышать 32768 байт. Если трансляция программы была вы- полнена ассемблером TASM, и в текущей директории, помимо файла FILENAME.OBJ, находится файл FILENAME.LST, то в отла- дочное окно загружается именно листинговый файл со всеми ва- шими символическими именами и комментариями. В противном случае для отладки используется дизассемблированный встроен- ным дизассемблером объектный файл. Отметим, что EMF52L не поддерживает символьную отладку с использованием листингов, созданных ассемблерами, отличными от TASM’a, и при наличии таких листингов в текущей директории его корректная работа не гарантируется. Внимание! Для запуска эмулятора требуется немногим менее 310000 байт свободной памяти. РАБОТА С ЭМУЛЯТОРОМ 1. Память данных В правой нижней части экрана отображается дамп памяти дан- ных, там вы можете видеть содержимое внутренней или внеш- ней памяти. Переключение между ними осуществляется нажати- ем на клавишу «N». Кроме того, оперативное отображение первых десяти 128-байтных страниц внешней памяти данных осуществ- ляется при нажатии на клавиши «0»...«9». Доступ к последующим страницам обеспечивается по клавишам «Ctrl+PgUp», «Ctrl+PgDn». Также вывести на экран интересующую часть внешней памяти, зная адрес, можно, нажав на клавишу «W» и введя всего три стар- шие цифры этого адреса. Переключение между первой и второй страницей внутренней памяти данных осуществляется нажатием на «Ноте» и «End». Клавишами «Ctrl+PgUp» и «Ctrl+PgDn» тоже можно пролистывать внутреннюю память, последней страницей которой являются дополнительные 128 байт памяти 52-го про- цессора. Для редактирования содержимого памяти данных необ- ходимо отобразить дамп, который содержит байты, подлежащие изменению, нажать «М», переместить появившийся указатель клавишами перемещения курсора к изменяемому байту и нажать «Enter». При этом старое значение байта стирается, вы вводите но- вое значение, нажимаете «Enter», а затем «Esc» для возврата в ре- жим отладки. Максимальный размер поддерживаемой эмулятором внешней памяти данных — 65535 байт. 247
2. Регистры В левой нижней части экрана отображаются регистры специаль- ных функций, текущий банк регистров общего назначения и счет- чик команд. Их редактирование осуществляется аналогично редак- тированию памяти данных, с той лишь разницей, что переход в режим редактирования регистров осуществляется нажатием на «R». Так как все регистры процессора одновременно уместить на эк- ране не удается, то регистры показываются и изменяются частями. При нажатии на клавишу «ТаЬ», часть регистров (на экране самая правая колонка) заменяется непоместившимися регистрами. По- вторное нажатие «ТаЬ» возвращает на экран правую колонку реги- стров. 3. Выполнение программы Пошаговый режим отладки обеспечивается нажатием на кла- вишу «S». При этом программа эмулирует выполнение микроконт- роллером команды с текущего значения программного счетчика PC. Эта команда подсвечена в окне отлаживаемой программы, располо- женном в верхней части экрана. Если подсвечена команда вызова подпрограммы LCALL, ACALL, то нажатие на «Р» эмулирует выпол- нение всей подпрограммы. Нажатие на «G» обеспечивает последова- тельное выполнение программы до тех пор, пока при выполнении не будет встречена точка останова, либо пока не будет нажата клави- ша «Space» («Пробел»). 4. Точки останова Для установки точки останова на какой-либо команде необхо- димо клавишами перемещения курсора установить строку с этой командой в крайнюю верхнюю строку экрана и нажать «В». Если пе- ред пролистыванием программы для установки точки останова на- жать «Enter», а после установки точки останова «Esc», то вы восста- новите состояние экрана, которое было до пролистывания программы. Повторное нажатие на «В» при расположении этой стро- ки в верхней строчке экрана снимает точку останова. Снять все точ- ки останова можно нажав «Ctrl+В». 5. Переход на новый фрагмент программы Для перехода на новый фрагмент отлаживаемой программы (т. е. не следующий непосредственно за отлаживаемой командой) достаточно установить требуемое значение программного счет- чика PC (см. редактирование регистров). Нажатие на «Esc» пос- ле ввода не только установит новое значение PC и подсветит ко- 248
манду, расположенную по этому адресу, но и расположит строку с этой командой в верхней строчке экрана. При работе в режиме символьной отладки при скроллинге лис- тинга с нажатой клавишей «Shift» значение PC изменяется синхронно с листингом, указывая на самую верхнюю из команд в текущем состо- янии листинга. Подсветка команды, подлежащей выполнению, при этом перемещается вместе с вашим перемещением по листингу, что обеспечивает удобный переход к новому фрагменту программы. 6. Загрузка и выгрузка памяти данных Нажатие на «F2» позволяет сохранить в файле текущее значе- ние PC, внутренней и внешней памяти данных и регистров. При этом в открывшемся диалоговом окне вам нужно ввести имя фай- ла, в котором эти данные будут сохранены. Нажатие на «F3» позво- лит вам загрузить PC, память данных и регистры из файла, имя которого вы введете в соответствующем диалоговом окне. Файлы с содержанием PC и данных создаются и должны сохраняться в те- кущей директории. 7. Калькулятор Вполне возможно, что в процессе отладки вам понадобится что- то подсчитать или перевести число из десятичной системы счис- ления в шестнадцатеричную и наоборот. Для этого служит встро- енный целочисленный калькулятор, вызываемый нажатием клавиши «F4». Калькулятор способен выполнить четыре основ- ных арифметических действия. Клавиша «Backspace» предназна- чена для удаления последней набранной цифры числа, а клави- ша «Delete» для сброса калькулятора. Калькулятор может работать как в десятичной системе счисления, так и в шестнадцатеричной. Переключение между системами осуществляется нажатием на кла- вишу «Н». 8. Сброс, краткая помощь, вызов DOS, выход из эмулятора Сброс внутренней памяти данных осуществляется нажатием на «С», при нажатии на «F1» вы получите полный перечень «горя- чих» клавиш программы и их назначения. Если есть нужда вре- менно выйти в DOS, то в этом поможет «Ctrl+D», выход из про- граммы — клавиша «Q». ОГРАНИЧЕНИЯ Автор умышленно ограничил возможности отладчика, не вводя в него реакцию на прерывания, работу таймеров и последовательно- 249
го канала — без средств аппаратной отладки и работы в режиме ре- ального времени эти функции все равно не дают возможности пол- ностью отладить вашу программу, существенно усложнив EMF52L. Действия микроконтроллера в этих ситуациях пользователь может смоделировать сам с использованием возможностей эмулятора, опи- санных выше. Для тех, кто не сможет обойтись без этих возможно- стей, рекомендуем обратится к продуктам других фирм.
Приложение 8________________ 24-РАЗРЯДНЫЕ АЦП ОТ ANALOG DEVICES — ЗАКОНЧЕННЫЕ СИСТЕМЫ АНАЛОГО-ЦИФРОВОГО ПРЕОБРАЗОВАНИЯ ДЛЯ НИЗКОЧАСТОТНЫХ ИЗМЕРЕНИЙ Появление специализированных интегральных микросхем и сниже- ние энергопотребления традиционных, таких как операционные уси- лители, микроконтроллеры, аналого-цифровые преобразователи и т. д. — привело к лавинообразному росту радиоэлектронных уст- ройств, имеющих автономное питание. В немалой степени этому так- же способствовали широкое внедрение так называемых «трехволь- товых» микросхем (т. е. таких, параметры которых нормированы для питающих напряжений в диапазоне 2,7...3,6 В) и DC-DC преобразо- вателей, позволяющих получить стабилизированное 3- или 5-воль- товое питающее напряжение из нестабильного, снимаемого с 1-2 ба- тареек. Особую группу из вышеупомянутых радиоэлектронных уст- ройств составляют измерительные приборы. От чисто цифровых, таких как калькулятор, их отличает наличие датчика, преобразую- щего измеряемый параметр в электрический сигнал, АЦП и усили- теля. Редкий измерительный прибор может обойтись без последне- го, поскольку в большинстве случаев амплитуда преобразованного сигнала составляет милли-, микро- или нановольты. Да и датчики с токовым выходом требуют преобразователь ток-напряжение, кото- рый чаще всего выполняется на основе все того же усилителя. Современные операционные усилители по своим точностным параметрам далеко ушли от своих предшественников, незабвенных пА709 и LM102, известных нам как 140УД1 и 153УД2. Однако изжить зависимость сигнала на выходе ОУ от питающего напряжения и от разбаланса «плюсового» и «минусового» питания создателям совре- 251
менных ОУ так до сих пор и не удалось. В связи с этим во многих приборах узел питания является чуть ли не самым сложным. Осо- бенно ярко это проявляется в изделиях, созданных на основе микро- контроллеров с интегрированными ЦАП, АЦП, источником опор- ного напряжения и т. п. — весь прибор может быть выполнен на основе всего 5-6 микросхем, две-три из которых формируют требуе- мые питающие напряжения. Да и тепловые потери на каком-нибудь последовательном стабилизаторе напряжения могут составлять чуть ли не половину от всей потребляемой устройством энергии. В свете сказанного очевидна необходимость в решениях, позво- ляющих оптимизировать схемотехнику подобных устройств. Одним из них может являться использование микросхем AD7711-AD7714, а также AD7730 и AD7731, производимых фирмой Analog Devices. ОСОБЕННОСТИ МИКРОСХЕМ По своему функциональному назначению эти микросхемы при- надлежат к аналого-цифровым преобразователям, хотя правильнее их считать даже не чипами, а практически законченными системами аналого-цифрового преобразования для низкочастотных измерений. Они принимают низкоуровневые сигналы непосредственно от дат- чиков и выдают в последовательном формате цифровое слово — ре- зультат преобразования. Использованный сигма-дельта метод пре- образования позволяет достичь разрешения до 24(!) разрядов. Точность преобразования достигает 0,0015 %, среднеквадратическое значение приведенного ко входу шума в лучшем случае может быть не выше 140 нВ. Ошибки на концах шкалы и эффекты температур- ного дрейфа устраняются внутренней автокалибровкой, корректи- рующей «ноль» и коэффициент усиления внутреннего усилителя. Сигнал от источника поступает на входной каскад с программируе- мым усилением, построенный на основе аналогового модулятора. Выходной сигнал модулятора обрабатывается внутренним цифро- вым фильтром. Первая частота режекции последнего программиру- ется путем занесения кодов в соответствующие внутренние управ- ляющие регистры микросхемы, что позволяет программным путем регулировать граничную частоту фильтра и время установления. Некоторые из перечисленных АЦП имеют до трех дифференци- альных входов, которые по желанию разработчика могут быть про- граммно переконфигурированы в большее количество (до пяти) псев- додифференциальных. Некоторые из микросхем снабжены встроенным источником опорного напряжения, а также генератором стабильного тока, необходимым для работы с резистивными датчика- ми. Таким образом, использование AD7711-AD7714, AD7730, AD7731 252
может позволить обойтись без громоздких схем предварительного уси- ления сигнала и формирователей питания для них. В итоге упрощает- ся конструкция изделия, снижается себестоимость комплектующих, сокращается время настройки электронной схемы (что опять-таки удешевляет изделие), повышается его надежность — словом ваше из- делие приобретает хорошие шансы стать конкурентоспособным с луч- шими аналогами, в том числе и импортного происхождения. Все АЦП выполнены по КМОП-технологии, вследствие чего их энергопотребление чрезвычайно мало: например, для AD7714 это 500 мкА при тактовой частоте 1 МГц или 1 мА на 2,5 МГц. В дежур- ном режиме ее потребление може быть снижено до 15 мкВт, реко- мендуемое питающее напряжение — 5 В, есть и 3-вольтовая версия этой микросхемы. Выпускаются эти микросхемы в 24-выводных кор- пусах типов SOIC и DIP (последние — 0,3-дюймовые пластмассовые или керамические) и 28-выводных SSOP. Они идеально подходят для применения в интеллектуальных системах, управляемых микрокон- троллерами или цифровыми сигнальными процессорами, посколь- ку установка коэффициента усиления, полярности сигнала, выбор канала, конфигурация входов и частота фильтра осуществляются программно. В них реализованы функции автокалибровки, систем- ной калибровки и фоновой калибровки; допускается считывание и модификация внутренних калибровочных регистров. Необходимо отметить, что внутренняя разрядность AD7711-AD7714, AD7730, AD7731 — 33 бита, хотя результат преобразования передается в мик- роконтроллер в 24- или 16-битном представлении. Микросхемы име- ют последовательный интерфейс, допускающий работу в трехпро- водной конфигурации. РАБОТА AD7714 Краткое описание выводов Из ранних микросхем (AD7711-AD7714) наиболее сложной внут- ренней структурой (и, как следствие этого, более развитыми функ- циональными возможностями) отличается AD7714, в связи с чем мы рассмотрим ее чуть более подробно. Она имеет три независимых диф- ференциальных входа. Однако если все измеряемые сигналы изме- няются относительно общего провода, то она может вести измере- ния по пяти каналам (один из входов, AIN6, соединен с общим проводом, а пять остальных, AIN1-AIN5 — с незаземленными кон- цами соответствующих источников сигнала). AD7714 не содержит внутреннего источника опорного напряжения — оно должно выра- батываться в вашем устройстве. Микросхема имеет раздельные цепи 253
питания внутренних аналоговой и цифровой частей, но на практику чаще всего объединяют не только аналоговую и цифровую «земли»;-: но и оба питания (рис. 1). ANALOG +5V О SUPPLY 10pF DIFFERENTIAL ANALOG INPUT 1 DIFFERENTIAL ANALOG INPUT 2 -d— DVdd DRDY OS DOUT DIN AD7714 SCLK DATA READY RECEIVE (READ) SERIAL DATA SERIAL CLOCK DIFFERENTIAL ANALOG INPUT 3 agnd reset SYNC DGND ________ STANDBY REFIN(+) POL MCLK IN REF IN(—) MCLK OUT BUFFER +5V _J_ CRYSTAL OR a CERAMIC P RESONATOR Рис. 1 Для связи с микроконтроллером (МК) AD7714 имеет входы SCLK, DIN и выход DOUT — по первому контроллер передает сиг- нал, фронт или спад которого записывает в микросхему бит, уста- новленный им на DIN, или выводит при чтении очередной бит на DOUT. Вход CS служит, как обычно, для активирования микросхе- мы, выход DRDY сообщает контроллеру о завершении цикла пре- образования (при отсутствии свободных входов у МК использова- ние DRDY необязательно — информацию о готовности данных можно получить и путем считывания старшего бита регистра об- мена). AD7714 содержит встроенный тактовый генератор, для за- пуска которого достаточно соединить с выводами MCLKIN и MCLKOUT кварцевый или керамический резонатор. Наиболее употребимыми являются резонаторы с частотами 2,4576 и 1 МГц. 254
Допустимо тактирование микросхемы внешним тактовым сигна- лом, подаваемым на вход MCLKIN. Регистры AD7714 содержит 8 внутренних регистров — обмена, режима, верхний и нижний регистры фильтра, тестовый, данных, калибро- вочный нуля шкалы и калибровочный полной шкалы. Доступ к ре- гистрам осуществляется по последовательному каналу. Последние три регистра — 24-разрядные, остальные — 8-разрядные. Основным из них является регистр обмена, который МК может как читать, так и обновлять. Этот регистр определяет, будет ли сле- дующая операция чтением или записью и какой из регистров при этом будет читаться (записываться). После включения, сброса или по завершении любой операции чтения/записи AD7714 ожидает за- пись в регистр обмена. Другими словами, записываемый в микро- схему байт автоматически оказывается в этом регистре. Последовательность записи информацию в какой-либо регистр (или считывания ее оттуда, если это допустимо) приведена ниже. Вна- чале нужно записать в AD7714 8-битное слово, которое содержит све- дения о том, с каким из регистров мы будем работать (и будем ли мы писать туда что-то или читать оттуда). Как уже сказано, слово это автоматически попадет в регистр обмена. Прочитав его, AD7714 осу- ществит требуемые контроллером чтение или запись в соответству- ющий регистр, после чего вновь будет ожидать записи в регистр об- мена с новыми предписаниями. Мы не случайно так подробно описали идеологию обмена МК и AD7714 — она сильно отличается от той, которая принята в наибо- лее распространенных последовательных АЦП, в том числе и произ- водимых самой Analog Devices. Отметим, что при записи в регистр обмена первый из записыва- емых бит должен быть нулевым. Если же первые несколько бит, пе- ресылаемых в AD7714 в то время, как она ожидает запись в регистр обмена, будут единичными, она их попросту проигнорирует и нач- нет запись лишь с того момента, когда найдет нулевой бит. Структура регистра обмена приведена в табл. 1, соответствие би- тов RS2-RS0 регистрам AD7714 — в табл. 2, соответствие битов СН2- СНО каналам AD7714 — в табл. 3. Следующим важным регистром является регистр режима. Зано- симая в него информация определяет коэффициент усиления Кус внутреннего усилителя выбранного канала (1, 2,4,8,..., 128) и режим работы — оцифровка сигнала или какая-либо калибровка АЦП. При этом возможны следующие режимы калибровки: 255
Таблица^ Bit7 Bit6 Bits Bit4 Bit3 Bit2 Bit1 BitO O/DRDY# RS2 RS1 RSO R/W# CH2 CH1 CHO Примечания. 1. При записи бит 7 должен быть установлен в 0, при чтении он дает состояние вывода DR.DY. 2. R/W установлен в 0 — будет операция записи в регистр, в 1 — чтения из регистра. Таблица 2 RS2 RS1 RSO Регистр (разрядность, бит) 0 0 0 Регистр обмена (8) 0 0 1 Регистр режима (8) 0 1 0 Верхний регистр фильтра (8) 0 1 1 Нижний регистр фильтра (8) 1 0 0 Тестовый регистр (8) 1 0 1 Регистр данных (16 или 24) 1 1 0 Регистр калибровки нуля шкалы (16) 1 1 1 Регистр калибровки полной шкалы (16) Таблица 3 СН2 СН1 сно AIN(+) AIN(-) Тип Пара калибровочных регистров 0 0 0 AIN1 AIN6 Псевдодифференциальный Регистровая пара 0 0 0 1 AIN2 AIN6 Псевдодифференциальный Регистровая пара 1 0 1 0 AIN3 AIN6 Псевдодифференциальный Регистровая пара 2 0 1 1 AIN4 AIN6 Псевдодифференциальный Регистровая пара 2 1 0 0 AIN1 AIN2 Полностью дифференциальный Регистровая пара 0 1 0 1 AIN3 AIN4 Полностью дифференциальный Регистровая пара 1 1 1 0 AIN5 AIN6 Полностью дифференциальный Регистровая пара 2 1 1 1 AIN6 AIN6 Тестовый режим Регистровая пара 2 • автокалибровка нуля шкалы — оба входа входного усилителя «за- земляются», и производится его балансировка до получения ну- левого выходного сигнала; • автокалибровка полной шкалы — на вход усилителя подается максимально допустимый сигнал, равный Uon/Kyc, и его усиле- 256
ние подстраивается до получения на выходе сигнала, равного опорному; , автокалибровка — последовательно выполняемые автокалибров- ки нуля шкалы и полной шкалы; , системная калибровка нуля шкалы — датчик измеряемой физи- ческой величины должен подать на вход AD7714 сигнал, выраба- тываемый в состоянии, соответствующем принятому за нулевое. AD7714 подстроится таким образом, что до следующей такой опе- рации при измерении напряжения, равного вышеупомянутому, вырабатываемый им код будет «нулевым»; . системная калибровка полной шкалы — датчик должен подать на вход AD7714 сигнал, вырабатываемый в состоянии максималь- ного отклонения измеряемой величины от нулевого. AD7714 сформирует код, соответствующий максимальному результату измерения; . системная калибровка смещения — последовательно выполняе- мые системные калибровки нуля шкалы и полной шкалы; • фоновая калибровка — перед каждым измерением автоматичес- ки производится автокалибровка нуля шкалы. Структура регистра режима приведена в табл. 4, режимов рабо- ты — в табл. 5. Таблица 4 Bit7 Bit6 Bit5 Bit4 ВИЗ Bit2 Bit1 Bito MD2 MD1 MDO G2 G1 GO 0 0 Примечание. Биты G2...G0 определяют коэффициент усиления внутреннего усилите- ля — от 128 (1;1;1) до 0(0;0;0). Возможности двух младших битов подробно описаны в фирменном руководстве по использованию микросхем. Таблица 5 MD2 MD1 MDO Режим работы 0 0 0 Обычный (оцифровка) 0 0 1 Автокалибровка 0 1 0 Системная калибровка нуля шкалы 0 1 1 Системная калибровка полной шкалы 1 0 0 Системная калибровка смещения 1 0 1 Фоновая калибровка 1 1 0 Автокалибровка нуля шкалы 1 1 1 Автокалибровка полной шкалы 257
Таким образом, приняв соответствующую команду, AD7714 под- страивается таким образом, что компенсируются дрейфовые смеще- ния как внутри самой микросхемы, так и датчиков-преобразовате- лей (если, разумеется, система может быть установлена перед соответствующей калибровкой в нулевое состояние и в состояние максимального отклонения от него). И что весьма ценно, в отличие от большинства доступных пользователю АЦП, AD7714 для реали- зации этих подстроек не нуждается в каких-либо дополнительных аппаратных средствах — свойство чрезвычайно полезное при созда- нии аппаратуры, выпускаемой крупными сериями. Структура верхнего и нижнего регистров фильтра приведена в табл. 6 и 7. Заносимая в них информация определяет, является ли сиг- нал в измеряемом канале биполярным или униполярным (В /U равно О или 1 соответственно), а также разрядность результата измерения, передаваемого от AD7714 в микроконтроллер (WL равно 0 или 1 — соответственно 16 или 24 бита) и первую частоту режекции внутрен- него цифрового фильтра. Записанное в биты FSO-FS11 число (code) должно лежать в пределах от 013Н до FA0H (в десятичном эквивален- те от 19 до 4000), что при тактовой частоте AD7714 f(clkin)=2,4576 МГц обеспечивает первую частоту режекции f(notch) в диапазоне от 1,01 кГц до 4,8 Гц: f(notch) = f(clkin)/code/128. При изменении code форма АЧХ и ФЧХ фильтра не меняется, меняются лишь частоты режекции и по- лоса пропускания. Таблица 6 Bit7 Bit6 Bits Bit4 ВИЗ Bit2 Bitl BitO в#/и WL 1 0 FS11 FS10 FS9 FS8 Примечание. Возможности битов Bit5 и Bit4 подробно описаны в фирменном руковод- стве по использованию микросхем. Таблица 7 Bit7 Bit6 Bits Bit4 ВИЗ Bit2 Bit1 BitO FS7 FS6 FS5 FS4 FS3 FS2 FS1 FSO Аналоговые входы AD7714 могут работать как с униполярными, так и с биполярными входными сигналами. Но последнее вовсе не означает, что на аналоговом входе допускаются полноценные отри- цательные сигналы большой амплитуды — для правильного функ- 258
ционирования микросхемы напряжение на аналоговом входе, кото- рый должен иметь более высокий потенциал, не должно опускаться относительно другого входа ниже чем на 30 мВ. Поясним сказанное примерами. Как отмечалось, входные каналы могут быть конфигурированы как полностью дифференциальные или как псевдодифференциаль- ные (AIN1-AIN5 относительно AIN6). В любом случае входные кана- лы образуют пары AIN(+)-AIN(-). Как следствие этого, напряжение на любом из входов AIN(+) исчисляется относительно напряжения на соответствующем AIN(-). Например, если AIN(-) = +2,5 В, U f = +2,5 В, Кус = 2 и установлен униполярный режим, то диапазон допу- стимых напряжений для входа AIN(+) будет +2,5...3,75 В. Для бипо- лярного режима и тех же AIN(-) и Uref диапазон напряжений для входа AIN(+) будет +1,25...3,75 В. Если AIN(-) заземлен, то на AIN(+) сигнал в биполярном режиме должен лежать в пределах от -30 до +30 мВ. Отметим, что при изменении с биполярного на униполярный режимы и наоборот в схеме входного усилителя ничего не меняется, меняются лишь кодирование выходных данных и точки передаточ- ной функции, в которых происходит калибровка. Цифровой интерфейс Последовательный интерфейс AD7714 состоит из пяти линий: DIN, DOUT, SCLK, DRDY и CS . Линия DIN используется для запи- си данных во внутренние регистры AD7714, a DOUT — для вывода данных из них. SCLK — это входной последовательный тактовый сигнал — все изменения на DIN или DOUT привязаны к фронтам (или спадам) этого сигнала. DRDY используется как сигнал статуса. Он сбрасывается в 0, когда в выходной регистр помещается новый результат преобразования, и устанавливается в 1 после завершения чтения из регистра данных. Кроме того, он также устанавливается в 1 во время обновления выходного регистра, что дает возможность исключить считывание в момент, когда данные недостоверны. CS, как и везде в микропроцессорной технике, — сигнал выбора микросхемы, необходимый для организации работы более чем од- ного чипа, обменивающегося с микроконтроллером. Минимальное количество физических линий, необходимых для организации обмена информацией между AD7714 и контрол- лером — три. При этом вход CS AD7714 должен быть заземлен, а статус DRDY можно получить путем опроса старшего бита реги- стра обмена. 259
На рис. 2 и 3 приведены временные диаграммы операций чтения и записи с использованием сигнала CS для адресации AD7714. Первый из рисунков соответствует чтению из выходного сдвигового регистра, второй — записи во входной сдвиговый регистр. Диаграммы соот- ветствуют случаю, когда на вход POL подан единичный потенциал. При этом чтение данных со входа DIN (на рис. 2) и вывод их на выход DOUT (на рис.З) происходят во время перепада из 0 в 1 на входе CLK. Если же POL =0, то чтение и вывод данных происходят во время пере- пада на входе CLK из 1 в 0, все же остальное — без изменений. Рис. 2 Рис. 3 На рис. 4 приведена схема сопряжения AD7714 с микроконтрол- лером 68НС11. Используется трехпроводный интерфейс, вход CS AD7714 соединен с общим проводом. Сигнал DRDY отслеживается программным путем. 68СН11 конфигурирован в режим «ведущий», его бит CPOL установлен в 0, а бит СРНА — в 1. При этом SCLK 68СН11 устанавливается в 0 на то время, когда он неактивен между операциями обмена. Следовательно, на вход POL AD7714 должен быть подан 0. В случае, когда необходимо управление AD7714 по ее входу CS, он должен быть соединен с одним из битов порта 68НС11 (например, с 260
Рис. 4 PCI, сконфигурированным как выход). Возможно также и аппаратное определение статуса DRDY. В одном случае выход DRDY AD7714 дол- жен быть соединен с одним из битов порта (например, РСО в режиме входа). Во втором варианте DRDY AD7714 соединяется со входом IRQ 68НС11, и сигнал готовности АЦП вызывает прерывание МК. На рис. 5 приведена схема сопряжения AD7714 с МК семейства х51. Здесь используется стандартный последовательный порт микроконт- роллера. Поскольку у х51 и входные, и выходные данные передаются dvdd Рис. 5 261
через один и тот же вывод RxD (он же РЗ.О), то DIN и DOUT у AD7714 объединены и соединены с RxD. Это допустимо, поскольку AD7714 не работает в полностью дуплексном режиме — данные, подаваемые на ее вход при выводе информации из нее игнорируются. Тактовый сиг- нал х51 в промежутках между обменами данными устанавливается в 1 поэтому вход POL AD7714 тоже должен быть установлен в 1. При обмене по последовательному каналу х51 первым передает (или принимает) младший бит, в то время как AD7714 ждет стар- ший. Поэтому перед операцией обмена микроконтроллер должен осуществить перестановку порядка битов в словах, для чего разра- ботчик должен предусмотреть соответствующую подпрограмму. На рис. 6 приведена схема сопряжения AD7714 с DSP семейства ADSP-2103. В такой конфигурации, чтобы зафиксировать момент обновления регистра данных, должен отслеживаться программным путем бит DRDY регистра обмена. Возможен также вариант, когда сигнал DRDY подается на вход IRQ2 ADSP-2103. Выводы RFS и TFS ADSP-2103 конфигурируются как выходы с активным низким уров- нем; выходом также является и SCLK. На вход POL AD7714 подается нулевой потенциал. Поскольку ADSP-2103 выдает сигнал SCLK не- прерывно, AD7714 после завершения операции обмена должна от- ключаться сигналом CS, что и происходит, когда и RFS, и TFS ста- новятся неактивными. Нулевой сигнал на любом из этих выводов активирует AD7714. Чтобы гарантировать правильную работу ин- терфейса, частота последовательного тактового сигнала не должна превышать 3 МГц. Рис. 6 262
На рис. 7 приведен алгоритм программы конфигурирования д£)7714 и чтения результата преобразования. Здесь показана также последовательность слов, которые должны быть занесены в регист- ры AD7714. Конкретно устанавливается тестовый канал (AIN6/AIN6), единичное усиление, ток определения перегорания датчика отклю- чен, биполярный режим, длина слова — 24 бита, бит BST=0, число pSl 1-FSO выбрано равным 4000дес. Применение AD7714 Одна из основных областей применения AD7714 — это измере- ние температуры, точнее, сигналов с тремодатчиков (термопар, тер- мосопротивлений). На рис. 8 приведена схема измерения с термопа- рой. В этой схеме AD7714 используется в буферированном режиме, чтобы с целью устранения шумовых пичков, наводимых в подводя- щие провода термопары, можно было на входе установить конденса- торы большой емкости. Рис. 7 На рис. 8 приведена схема измерения с терморезистором (RTD). Использована так называемая четырехпроводная схема. Ток через термосопротивление задается внешним источником. Его падение напряжения на сопротивлении 6,25 кОм (оно должно быть преце- зионным, с минимальным температурным дрейфом) формирует также и опорное напряжение. При таком подходе незначительная Нестабильность этого тока не сказывается на точности измерений — изменение напряжения на терморезисторе компенсируется пропор- 263
Рис. 8 циональным изменением опорного. Провода, соединяющие входы AIN1 и AIN2 с терморезистором, имеют малое сопротивление, да и ток, текущий по ним, пренебрежимо мал, поэтому падение напря- жение на них практически нулевое, благодаря чему падение напря- жения на проводах, соединяющих терморезистор с общим прово- дом и с источником напряжения не вносит погрешности в результат измерения. На рис. 9 приведена схема соединения AD7714 с тензодатчиком, обычно используемая при измерении давления. Сигнал снимается с диагонали моста. Напряжение, используемое для его возбуждения, формирует также и опорное, что, как и в предыдущем случае, делает устройство нечувствительным к его вариациям (естественно, в ра- зумных пределах). ОСОБЕННОСТИ AD7710-AD7713 Не вдаваясь в отличия от AD7714 во внутренней структуре (для знакомства с ними рекомендуем читателям каталоги Analog Devices), кратко ознакомимся с основными аппаратными особенностями ос- тальных микросхем рассматриваемого семейства. AD7710-AD7712 снабжены встроенными источниками опорного напряжения 2,5 В, что удобно при работе с датчиками, вырабатыва- ющими ЭДС без пропускания через них какого-либо тока от внеш- него источника, например, с термопарами или фотодиодами. AD7710 имеет два независимых дифференциальных входа, a AD7711 — один 264
Рис. 9 независимый дифференциальный и один обычный (относительно общего провода). Функциональные схемы этих микросхем приведе- ны на рис. 10 и 11 соответственно. AIN1(+) AIN1(-) AIN2(*) AIN2(-) RTD CURRENT REF REF avDD dvDD IN(~) IN(*) VBIAS REF OUT AGND DGND Vss RFS TFS MODE SDATA SCLK DRDY AO SYNC MCLK IN MCLK OUT Рис. 10 Далее, AD7711 имеет два встроенных источника стабильного тока 200 мкА. Их использование позволяет строить трехпровод- ные схемы измерения температуры на термосопротивлениях. Одна из таких схем приведена на рис. 12. Падение напряжения на про- воде RL1 компенсируется таковым на RL2. Стекают на «землю» эти токи по проводу RL3. 265
REF REF AVdd DVdd jn(_) IN(+) Vbias REF OUT AIN1(+) AIN1(-) AIN2 RTD1 RTD2 SYNC MCLK IN MCLK OUT Рис. 11 В схеме на рис. 13 один из этих токов, протекая дополнительно через прецезионный резистор сопротивлением 12,5 кОм, создает на нем падение напряжения 2,5 В, которое используется в качестве опор- ного. Как и в схемах на рис. 8 и 9, такая завязка делает устройство не- чувствительным к нестабильности тока, протекающего через термо- сопротивление, независимо от того, где формируется этот ток. Рис. 12 AD7712 лишена источников тока. Дифференциальный вход ее такой же, как у вышеперечисленных микросхем, а обычный предназначен для работы с сигналами относительно высокого уровня, поскольку микросхема снабжена встроенным аттенюа- тором (рис. 14). 266
Рис. 13 REF BEF A6ND OGHD vss RFS TFS MODE SDATA SCLK DRDY Ao Рис. 14 Аналогичный вход для сигналов высокого уровня есть и у AD7713 (рис. 15), но в отличие от предыдущей, она к тому же имеет два (а не один) дифференциальных входа и два встроенных 200-микроампер- ных источника тока. Для того, чтобы реализовать эти возможности, не увеличивая числа выводов микросхемы, разработчикам пришлось удалить из AD7713 встроенный источник опорного напряжения — как мы уже могли убедиться, в наиболее типичных применениях микросхемы его с успехом заменяет прецезионный резистор. ОСОБЕННОСТИ AD7730 и AD7731 AD7730 является специализированной микросхемой, предназна- ченной для работы с мостовыми датчиками — не зря сама Analog 267
AlN1(+) AlN2(+) AiN2(-) AIN3 RTDI RTD2 REF REF _______ AVDD DVdd IN(-) IN(+) vbiaS STANDBY AGND DGND RFS TFS MODE SDATA SCLK DRDY AO sync MCLK IN MCLK OUT Рис. 15 Devices окрестила ее как Brige Transducer ADC. Она имеет две пары дифференциальных входов (рис. 16), оба вывода одной из которых могут быть использованы в качестве цифровых выходов для управле- ния теми или иными микросхемами или устройствами. Кроме того, AD7730 имеет два выхода (АСХ и АСХ ), позволяющие изменять по- лярность сигнала, возбуждающего мостовую схему (и корректно учи- тывать его при измерении), что повышает точность преобразования. AGHD DGNO POL HQ, HesJt Рис. 16 Поясним сказанное. На рис. 17 изображена упрощенная схема мо- стового датчика, в одной из сигнальных цепей которого (верхней) си- дит некая паразитная ЭДС Eos, вносящая ошибку в результат преобра- зования. Разность потенциалов между сигнальными проводами в 268
случае, когда нижний (по схеме) вывод моста заземлен (normal drive voltages), равна Va = Vo + Eos, где Vo—сигнал непосредственно с выхода моста. Если же на нижний по схеме вывод моста подано возбуждаю- щее напряжение, а верхний заземлен (reverse drive voltages), то разность потенциалов составит Vb = -Vo + Eos. Разность Va - Vb будет равна 2VO, т. е. окажется независимой от Eos, в качестве которой чаще всего ока- зывается какая-то неучтенная термо-ЭДС. На рис. 18 приведена схема, реализующая подобное включение мостового источника с учетом особенностей AD7730. Сигналы на выходах АСХ и АСХ противофазны и меняются с частотой, уста- навливаемой при настройке микросхемы. Единичный уровень на выходе АСХ соединяет верхний вывод моста с питающим напряже- нием, нижний — с землей, а единица на АСХ — наоборот. 269
Внутреннее строение AD7730 близко к AD7714, но несколько слож- нее. В ней есть регистры, отсутствующие в последней, в частности, регистр ЦАП. Ряд регистров имеет большую разрядность, например, вместо 8-разрядных верхнего и нижнего регистров фильтра в AD7730 присутствует один регистр фильтра, но 24-разрядный, вместо 8-раз- рядного регистра режима — 16-разрядный. Но в целом работа с AD7730 схожа с таковой у AD7714. Еще одной особенностью AD7730 является наличие программно регулируемого встроенного 6-разрядного ЦАП, сигнал с которого суммируется (или вычитается) из входного перед усилением внут- ренним усилителем микросхемы. Если мост возбуждается напряже- нием 5 В, то диапазон напряжений, вырабатываемых ЦАП, составля- ет -77,5 ... +77,5 мВ с дискретностью 2,5 мВ. Еще одной заслуживающей внимания особенностью AD7730 яв- ляется возможность работы в режиме непрерывного чтения выбран- ного регистра (данных или состояния). Режим включается установкой в 1 соответствующего бита в регистре обмена (в AD7714 этот бит не задействован). При необходимости этот режим может быть отключен Рис. 19 AD7731 отличается от AD7730 по входам — у нее, как у AD7714, три пары дифференциальных входов, допускающих переконфигу* рирование в пять независимых псевдодифференциальных. У нее нет выводов АСХ и АСХ . В качестве цифровых выходов могут исполь- зоваться AIN3 и AIN4. Внутри в AD7731 отсутствует ЦАП и связан- ный с ним регистр (рис. 19). В остальном же AD7730 и AD7731 очень похожи, разве что последняя несколько более быстродействующая. И последнее, о чем необходимо упомянуть — Analog Devices вы- пускает линейку 16-разрядных АЦП (AD7705, AD7706 и AD7715), схе- мотехнически похожих на вышеописанное 24-разрядное семейство.
Приложение 9________ ОСОБЕННОСТИ ОТЛАДКИ СИСТЕМ НА ОСНОВЕ МИКРОКОНТРОЛЛЕРОВ СЕМЕЙСТВА Х51 В настоящем разделе предполагается обсудить проблемы, возникаю- щие на стадии практической реализации задуманного микроконт- роллерного устройства, т. е. не только осознать «как это сделать», но и понять, «как добиться, чтобы это работало». Вначале мы хотим обсудить вопросы, связанные с программиро- ванием микросхем памяти и микроконтроллеров. Затем мы рассмот- рим класс устройств, назначение которых состоит в том, чтобы мак- симально облегчить и упростить труд разработчика в процессе создания и отладки систем с микроконтроллерным ядром. В качестве примеров, иллюстрирующих некоторые положения, были использованы программаторы и инструментальные средства производства московской фирмы «Фитон». Более подробные описа- ния, включая рабочие и демо-версии программ, вы можете найти на http://www.phyton.ru. ПРОГРАММИРОВАНИЕ МИКРОСХЕМ ПАМЯТИ И МИКРОКОНТРОЛЛЕРОВ. ПРОГРАММАТОРЫ Перечень выпускаемых микросхем памяти и микроконтроллеров с внутренней памятью чрезвычайно велик. Это микросхемы памяти как с параллельным, так и с последовательным доступом информации (EPROM, EEPROM, Flash), а также микроконтроллеры с внутренней па- мятью команд и данных; микросхемы программируемой логики (PLD). Перечень таких изделий с каждым годом стремительно растет и расши- ряется. Рассмотрим классификацию микросхем по возможности их про- граммирования. 271
1. Однократно программируемые. Масочные микросхемы — микросхемы, ПЗУ которых запол- няется определенной информацией в процессе их изготовле- ния. Обычно выпускаются производителем по контракту с со- ответствующим потребителем. Однократно программируемые — микросхемы, допускающие единственный цикл программирования. 2. Многократно программируемые (перепрограммируемые). Микросхемы с ультрафиолетовым стиранием. Для подготовки ПЗУ к новому циклу записи, подобные микросхемы предвари- тельно должны быть подвергнуты ультрафиолетовому облу- чению, в результате которого содержимое ПЗУ очищается. От- личительной чертой их является наличие в корпусе кварцевого окна, что делает их гораздо более дорогими, чем масочные и однократно программируемые версии этих микросхем. Обыч- но подобные микросхемы выдерживают несколько десятков циклов записи/перезаписи. Микросхемы электрически перепрограммируемые. Для под- готовки ПЗУ к новому циклу записи подобные микросхемы предварительно должны быть переведены в соответствую- щий режим (на определенные выводы микросхемы подают- ся последовательности необходимых сигналов), в результа- те содержимое ПЗУ очищается. Ряд производителей выпускает микросхемы, для которых не предусмотрен от- дельный режим «стирания», у них «стирание» происходит непосредственно в процессе записи нового содержимого ПЗУ. Обычно электрически перепрограммируемые микро- схемы выдерживают десятки и сотни тысяч циклов записи/ перезаписи. В зависимости от допустимого способа программирования, мик- росхемы можно классифицировать следующим образом. 1. Микросхемы, программируемые в специальном устройстве — программаторе. Для осуществления необходимой операции (запись, стирание, чтение, верификация и т. п.) подобные микросхемы встав- ляются в специальную колодку программатора, обеспечивающую электрический контакт со всеми выводами микросхемы. В зависи- мости от выбранного режима и в соответствии со спецификацией производителя, на выводы микросхемы подаются необходимые пос- ледовательности сигналов. 2. Микросхемы, программируемые непосредственно в устройстве пользователя. Микросхемы, поддерживающие режим внутрисхем- ного программирования («ISP mode»). Они допускают выполне- 272
ние необходимой операции (запись, стирание, чтение, верифика- ция и т. п.), непосредственно в устройстве пользователя. Все дей- ствия по программированию производятся с помощью внешнего программатора, определенным образом подключенному к устрой- ству пользователя. При этом устройство пользователя должно быть разработано с учетом специфических требований данного режима. Микросхемы, поддерживающие режим внутреннего само- программирования. Они допускают выполнение необходимой операции (запись, стирание, чтение, верификация и т. и.) непос- редственно в устройстве пользователя, без использования како- го-либо программатора. При этом устройство пользователя дол- жно быть разработано с учетом специфических требований дан- ного режима. Говоря о программировании, нелишним будет отметить, что многие микроконтроллеры с внутренним ПЗУ обладают рядом осо- бенностей. Так, например, во многих микроконтроллерах поддержи- ваются различные режимы ограничения доступа. Выбор режима ог- раничения доступа производится при программировании. В зависимости от выбранного режима, все ПЗУ или его определенная часть могут быть: • защищены от возможности записи/дозаписи. • защищены от возможности считывания содержимого извне. При попытке считать информацию, микросхема будет выдавать либо «мусор», либо «все нули» , либо «все единицы». Многообразие режимов программирования и, в частности, режи- мов защиты очень велико, поэтому при работе с новыми микросхе- мами необходимо внимательно знакомиться с их спецификацией. Так, например, для многих микроконтроллеров с УФ стиранием, ис- пользование режима защиты («бит секретности»), приводит к невоз- можности их последующего перепрограммирования. Перечень микросхем памяти, микроконтроллеров с внутренним ПЗУ и микросхем программируемой логики, выпускаемых в мире, исчисляется тысячами наименований. Большинство из них имеют специфические особенности в алгоритмах и режимах программиро- вания, поэтому для любого разработчика рано или поздно возникает вопрос, как и чем программировать. Ответов может быть только два — либо самому разбираться с каждой новой микросхемой, либо воспользоваться готовым програм- матором. Обсуждать достоинства и недостатки первого подхода мы Не будем, а попытаемся обсудить те требования, которые должны предъявляться к программатору при его выборе. 273
Рассмотрим классификацию программаторов по функцио- нальным возможностям. Условно их можно подразделить на та- кие группы: • программаторы, программирующие микросхемы памяти (EPROM, EEPROM, Flash); • программаторы, программирующие микросхемы памяти (EPROM, EEPROM, Flash) и внутреннюю память микроконтроллеров; • программаторы, программирующие микросхемы памяти (EPROM, EEPROM, Flash), внутреннюю память микроконтроллеров, микросхемы программируемой логики (PLD); • универсальные программаторы-тестеры. Данную классификацию можно считать достаточно условной, же- стких границ между программаторами разных групп не существует. Программаторы первой и второй групп являются наиболее простыми и дешевыми устройствами. Программаторы третьей группы обычно аппаратно значительно более сложны, и стоимость их, соответствен- но, выше. Это объясняется, в частности, особенностью работы с уст- ройствами программируемой логики. Микросхемы программируемой логики вообще стоят несколько обособленно в ряду программируе- мых устройств. Если информацию по программированию микросхем памяти и внутренней памяти микроконтроллеров фирмы-производи- тели микросхем, как правило, не скрывают и публикуют в своих ката- логах, то информацию по программированию микросхем PLD можно получить только после заключения соответствующего соглашения с фирмой-производителем микросхем. Причем некоторые производи- тели PLD не стремятся увеличивать число фирм-производителей про- грамматоров, поддерживающих их устройства, главное для них—ка- чество программирования и строгое следование предписанным процедурам. Так, например, чтобы заключить соответствующие со- глашения с фирмами AMD и Lattice, московской фирме «Фитон» при- шлось сдавать квалификационный экзамен. Последняя функциональная группа программаторов — универ- сальные программаторы — наиболее сложные и дорогие устройства. Но они способны работать с очень большим перечнем микросхем. Стоимость таких устройств может достигать тысяч и десятков тысяч долларов. Аппаратное устройство программаторов В первую очередь коснемся той детали программатора, с которой вам придется взаимодействовать чаще всего. Это колодка, куда по- мещается программируемая микросхема. Она является одной из са- мых важных деталей программатора, от качества и надежности кото- 274
рОй зависит способность программатора длительно и безотказно выполнять свои функции. Как показал наш многолетний опыт, лю- бой программатор, вне зависимости от его сложности, стоимости и функциональных возможностей, обязательно должен быть снабжен специальной тестовой колодкой, обеспечивающей многократный надежный контакт с программируемой микросхемой. Фирмы, выпус- кающие такие колодки (на жаргоне последние еще называют сокет- ки), гарантируют надежный контакт при десятках тысячей операций установки в них микросхем. Наиболее удобными для пользователя являются специальные сокетки с нулевым усилием (ZIF socket). Если программатор не снабжен специальными тестовыми сокетками, пред- назначенными для многократных установок микросхем, а вместо них стоят дешевые одноразовые колодки, то считайте, что вы просто зря потратили свои деньги. Вы быстро сможете в этом убедиться, когда безвозвратно испортите микросхемы с однократным программиро- ванием из-за отсутствия контакта в колодке. В недорогих програм- маторах обычно устанавливаются универсальные (рассчитанные как на узкий, так и на широкий тип корпуса) ZIF DIP сокетки. В более дорогих образцах программаторов могут устанавливаться одновре- менно несколько видов ZIF сокеток, рассчитанных на разные типы корпусов микросхем (LCC, QFP и т. д.). Иногда программаторы снаб- жаются универсальными сменными головками под различные типы корпусов. Для программирования микросхем с корпусами, отличными от DIP и с большим числом выводов, программаторы снабжаются спе- циальными адаптерами под соответствующий тип корпуса. В связи с тем, что на этих адаптерах также должны устанавливаться высоко- надежные тестовые сокетки, стоимость таких адаптеров может ока- заться довольно существенной. Заглянем внутрь программаторов и в общих чертах попытаемся понять, чем же они отличаются друг от друга. Существует две кон- цепции построения программаторов. Первая и наиболее очевидная, заключается в построении программаторов на базе массива универ- сальных аппаратных драйверов. Универсальные драйверы подводятся к выводам тестовой сокетки и должны удовлетворять ряду специфи- ческих аппаратных требований по программированию микросхем. В перечень таких требований входят: способность подавать и считы- вать логические уровни, способность подавать сложные тактовые последовательности, способность подводить напряжение в диапазо- не 0...27 В с точностью 0,1 В и т. д. Удовлетворение всем этим требо- ваниям приводит к колоссальным аппаратным затратам и избыточ- ности всего устройства в целом. Количество драйверов 275
универсального программатора должно соответствовать количеству выводов тестовой сокетки, например, 40 драйверов для сокетки DIP- 40 или 84 драйвера для сокетки LCC-84. В результате устройство ста- новится очень сложным и дорогостоящим, но при этом абсолютно универсальным. Имея 40 универсальных драйверов и универсальную тестовую сокетку DIP-40, можно с уверенностью сказать, что удастся поддержать все существующие, а также любые новые, микросхемы в корпусе DIP (с числом выводов до 40) без дополнительных адапте- ров. Именно по такой схеме строятся дорогие универсальные про- грамматоры. Вторая концепция заключается в том, что аппаратура програм- матора оптимизируется под предполагаемый перечень поддержива- емых микросхем. Программаторы этого класса, как правило, значи- тельно дешевле универсальных программаторов, но такие изделия в известной степени теряют универсальные свойства. Добавление но- вых типов поддерживаемых программатором микросхем может быть сопряжено со значительными трудностями, а часто и с невозможно- стью расширения списка программируемых устройств. Использую многолетний опыт разработки и производства про- грамматоров, разработана и внедрена компромиссная концепция построения программаторов — универсальный драйвер разбивает- ся на два функциональных блока: универсальный логический драй- вер и устройство коммутации высокого напряжения. Такая архитек- тура программатора позволяет в значительной степени сохранить преимущества универсального драйвера, существенно сократить ап- паратные затраты и, как следствие, уменьшить себестоимость и цену конечных изделий. Рассмотрим способ подключения программаторов к компьютеру. Наиболее распространенными способами являются: • подключение к принтерному порту; ® подключение к последовательному порту: • установка специальной платы в компьютер. Каждый из этих способов имеет свои преимущества и недостат- ки. Использование специальных плат, устанавливаемых в компью- тер, значительно упрощает схемотехнику программатора. В этом случае, как правило, удается отказаться от специального, причем довольно мощного источника питания, воспользовавшись источ- ником питания компьютера, а также использовать центральный процессор компьютера в качестве управляющего процессора про- грамматора. При способе подключения программатора к компью- теру посредством встраиваемых в компьютер плат удается достиг- нуть довольно значительных скоростей обмена между компьютером 276
и программатором за счет непосредственного управления после- дним. Но такая реализация программатора имеет и существенные недостатки. Во-первых, значительно снижается мобильность про- грамматора, т. е. возможность использования одного программа- тора на разных компьютерах (например, в пределах одной лабора- тории). Во-вторых, использование таких устройств с портативными компьютерами notebook сопряжено с необходимостью использова- ния специальных карт сопряжения. Другой вариант сопряжения программатора с компьютером — по каналу RS-232. Он допускает работу программатора с компьюте- рами всех типов. К существенным недостаткам такого варианта со- пряжения можно отнести невысокую пропускную способность канала. Максимальная скорость последовательного канала RS-232 ог- раничена значением 115 кбод, что существенно ограничивает обмен между компьютером и программатором и, следовательно, снижает производительность последнего. Подключение программатора к принтерному порту компьютера нам видится наиболее предпочтительным вариантом. Этот способ сочетает в себе достаточно высокую пропускную способность канала и не требует серьезных аппаратных затрат. При использовании это- го способа удается воспользоваться центральным процессором ком- пьютера в качестве управляющего процессора программатора. Теперь обратим внимание на ряд «второстепенных» мелочей, ко- торые при активной работе с программатором могут либо серьезно попортить вам жизнь, либо при удачной реализации значительно облегчат вашу работу. К таким «мелочам» относится способ обнов- ления версий программного обеспечения программатора, способ- ность программатора определять правильность установки микросхе- мы в колодке и проведение процедуры самотестирования при включении питания. Способ обновления версии — это довольно существенный воп- рос эксплуатации программаторов. Необходимость обновления вер- сии программного обеспечения может возникнуть по ряду причин: при выявление ошибки работы программатора (увы, такое тоже встречается, все мы грешны), либо при расширение списка поддер- живаемых программатором микросхем. Способ обновления версии программатора зависит от его аппаратного устройства. В одних из- делиях алгоритмы программирования жестко «зашиты» в аппарату- ру, в других они являются загружаемыми. В первом случае для мо- дификации версии требуется модификация самого устройства программатора (например, перепрограммирование его собственно- го ПЗУ), что сопряжено с рядом дополнительных неудобств по дос- 277
тавке изделия производителю или в региональный сервисный центр. Другое дело, если обновление версии осуществляется только обнов- лением программного обеспечения программатора. Именно по та- кой схеме построены программаторы с загружаемыми алгоритмами программирования. В таких программаторах вы обновляете только программное обеспечение, после чего работаете уже с новой верси- ей. Второй способ — наиболее удобный в эксплуатации. Теперь обратим внимание на такую «мелочь», как способность программатора определять правильность установки микросхемы в тестовую колодку. При кажущейся незначительности этой опции, мы начинаем понимать всю ее важность только после выхода из строя микросхемы при неверной установки ее в колодку (а такое рано или поздно случается). И винить в этом случае некого — сами виноваты. Именно для предотвращения таких ситуаций и служит эта опция. Здесь необходимо указать, что полноценная реализация такой воз- можности требует от разработчика больших усилий и порой изобре- тательности. Дело в том, что необходимо протестировать микросхе- му в колодке в самом щадящем для нее режиме, при этом ни в коем случае не допуская выхода микросхемы из строя. И в заключение обсуждения аппаратного устройства программа- торов необходимо упомянуть о настоятельной необходимости прове- дения программаторами процедуры самотестирования. Обычно эта процедура проводится после инициализации аппаратуры программа- тора. Цель этой процедуры—встроенными средствами провести про- верку работоспособности всего оборудования устройства и принять решение о возможности полноценной работы программатора. К со- жалению, встроенными средствами не всегда удается однозначно убе- дится в работоспособности всех узлов устройства, но тем не менее эта процедура обязательно должна проводится с целью минимизации ве- роятности эксплуатации неработоспособного оборудования. Программное обеспечение программатора Дадим общее представление о возможных способах реализации программного обеспечения (ПО) программатора. Первое, на что нуж- но обратить внимание — это под управлением какой операционной системы работает программатор. До сих пор подавляющее большин- ство общедоступных программаторов имеют программное обеспе- чение, функционирующее под управлением DOS. Такое ПО не предъявляет к компьютеру специфических требований. Как прави- ло, это программы, разработанные довольно давно. В последние не- сколько лет стали появляться программаторы, работающие под уп- равлением операционной системы Windows. Это современные 278
продукты, которые, как правило, выглядят гораздо элегантнее, име- ют более дружественный интерфейс и обладают большим числом сер- висных возможностей. Рассмотрим архитектуру программного обеспечения програм- маторов. Наиболее распространенной является архитектура, в ко- торой в качестве ядра программатора выступает промежуточный буфер данных. Все операции в программаторе выполняются с этим буфером. Для программирования микросхемы необходимо загру- зить файл в буфер, запрограммировать данные из буфера в микро- схему, сравнить содержимое микросхемы и буфера. При чтении данные из микросхемы записываются в буфер. Размер промежуточ- ного буфера данных обычно коррелируют с размером текущего типа микросхемы. Многолетний опыт разработки и производства про- грамматоров позволил выработать концепцию оригинальной мно- гобуферной архитектуры ПО программаторов с неограниченным количеством буферов. Такая архитектура позволяет работать с нео- граниченным количеством независимых наборов данных, прово- дить их анализ и редактирование. Например, вы можете восполь- зоваться двумя буферами для считывания в них содержимого двух разных микросхем, проведения анализа этих наборов данных и со- здания на их базе нового массива данных в третьем буфере для пос- ледующего программирования его в микросхемы памяти или со- хранения на диске. Стандартным набором функций программаторов обычно являют- ся следующие функции: чтение, запись, сравнение, контроль на чис- тоту, стирание (только для электрически перепрограммируемых уст- ройств) микросхем. Некоторые программаторы имеют функцию автоматического программирования. Эта функция позволяет осуще- ствить часто используемую комбинацию действий для конкретного типа микросхемы. Обычно эта комбинация состоит из такого набора: стереть микросхему, проконтролировать стертость, запрограммиро- вать, сравнить запрограммированные данные с оригиналом, устано- вить защиту. Удобство этой функции заключается в том, что весь «джентльменский» набор активизируется одним нажатием. Отдельно остановимся на редакторских функциях программато- ров. Наиболее распространенным перечнем редакторских функций являются: редактирование данных в шестнадцатеричном формате, возможность заполнения буфера данных константой и подсчет кон- трольной суммы. Этого набора редакторских функций вполне дос- таточно для простых приложений. Для профессионального исполь- зования программаторов необходимы расширенные возможности редактирования. К ним можно отнести: 279
• возможность редактирования данных не только в шестнадца- теричном формате, но и в двоичном, восьмеричном и десятич- ном представлении; • заполнение массива строкой данных; • поиск и замена строки данных; • инвертирование данных; • копирование массива данных как внутри одного буфера, так и между разными буферами; • подсчет контрольной суммы; • конвертирование шин адреса и данных. Еще одна особенность ПО программаторов, на которой стоит ос- тановится отдельно — это пакетный режим работы. Такой режим реа- лизован в очень небольшом числе программаторов. А преимущество его очевидно — автоматизация работы. Используя пакетный режим, можно создавать сценарии работы с программатором, автоматизируя всю рутинную работу. Наиболее интересны устройства, где пакетный режим работы практически не имеет ограничений, в нем доступны все ресурсы программатора. В пакетном режиме можно загружать фай- лы, запускать программирование, манипулировать параметрами про- граммирования, окнами на экране, выводить графические данные и т. д. В качестве иллюстрации можно привести задачу программиро- вания партии микросхем, в каждой из которых должен быть запрог- раммирован серийный номер. На специальном языке создается сцена- рий работы программатора, который заключается в следующем: оператор указывает начальное значение серийного номера партии мик- росхем и запускает процедуру программирования; программатор про- граммирует микросхему с текущим серийным номером и вычисляет серийный номер следующей микросхемы, помещая его в соответству- ющий раздел памяти, далее процедура циклически повторяется. В при- веденном примере пакетный режим работы значительно облегчает ра- боту оператора и исключает ошибки оператора. Завершая разговор о программаторах, приведем некоторые ха- рактеристики конкретного программатора ChipProg+ производства фирмы «Фитон». Универсальный программатор ChipProg+ предназначен для про- граммирования: • микросхем памяти (EPROM, EEPROM, Flash); • внутреннего ППЗУ микроконтроллеров; • микросхем программируемой логики (PAL, GAL, EPLD, CPLD). ChipProg+ рассчитан на работу с IBM PC совместимым компьюте- ром. Связь с компьютером осуществляется через стандартный прин- терный порт. Рабочая среда — Windows 95/98/NT/2000. Питание —- 280
внешний сетевой адаптер, питающийся от сети переменного тока с на- дряжением 220В ±10 %. • количество поддерживаемых микросхем (к-во производителей/к-во наименований) — 50/1708; • количество поддерживаемых микросхем памяти (к-во производителей/к-во наименований) — 37/729; • количество поддерживаемых микросхем программируемой логики (к-во производителей/к-во наименований) — 7/118; • режим внутрисхемного программирования; • возможность чтения/программирования/верификации микро- схем при различных напряжениях; • возможность изменения параметров программирования: t , Vcc, V ; рр • возможность программирования 8-битной памяти для работы с 8-, 16-, 32-разрядными шинами; • самотестирование при включении питания; • тестирование правильности установки микросхемы; • работа с файлами в форматах Standard/Extended Intel HEX, Binary image, Motorola S, POF, JEDEC, PRG; • представление данных в шестнадцатеричном, восьмеричном, двоичном, символьном (ASCII) форматах; • запись/чтение/верификация/контроль стирания любой облас- ти памяти; • полнофункциональный двоичный редактор. Встроенный редак- тор поддерживает выполнение следующих функций: • возможность редактирования данных в шестнадцатеричном, двоичном, восьмеричном и десятичном представлении; • заполнение массива строкой данных; • поиск и замена строки данных; . инвертирование данных; • копирование массива данных как внутри одного буфера, так и между разными буферами; . подсчет контрольной суммы; . логические операции AND, OR, XOR с блоком данных; о конвертирование шин адреса и данных; • возможность автоматизированной работы по сценариям пользо- вателя; • возможность автоматической обработки данных по алгоритмам пользователя. Программатор ChipProg+ аппаратно реализован на базе микро- схем загружаемой логики. Программно конфигурируемая аппарату- 281
ра программаторов предоставляет возможность легко расширять список программируемых устройств путем простого обновления вер- сии программного обеспечения. Обновление программного обеспе- чения производится бесплатно. Программное обеспечение программатора реализовано по принципу многобуферной архитектуры с неограниченным количеч ством буферов. Такая архитектура позволяет работать с неограни- ченным количеством независимых наборов данных, проводить их анализ и редактирование. В программаторе реализована поддержка пакетного режима ра- боты. Используя его, можно создавать сценарии работы с програм- матором, автоматизируя рутинную работу. Пакетный режим рабо- ты практически не имеет ограничений, в нем доступны все ресурсы программатора. В пакетном режиме можно загружать файлы, запус- кать программирование, манипулировать параметрами программи- рования, окнами на экране, выводить графические данные и т. п. Функция автоматического программирования позволяет осуще- ствлять часто используемые комбинации действий для конкретного типа микросхемы. Удобство ее заключается в том, что любой желае- мый набор действий для выбранного типа микросхемы легко фор- мируется пользователем и затем, при необходимости, активизиру- ется одним нажатием кнопки. Пример типичного набора: стереть микросхему, проконтролиро- вать чистоту, запрограммировать, сравнить запрограммированные данные с оригиналом, установить защиту. ChipProg+ снабжен одной 40-выводной колодкой с нулевым уси- лием. Программирование микросхем в корпусе DIP (широкий, уз- кий) производится без дополнительных адаптеров. Для работы с ИС в других корпусах используются специализированные адаптеры. ChipProg+ соответствует требованиям ГОСТ 3 50377-92 (МЭК950-86), ГОСТ 29216-91 класс В, сертификат соответствия систе- мы сертификации ГОСТ Р Госстандарта России № РОСС RU. ИМО4.ВО1990. СРЕДСТВА РАЗРАБОТКИ И ОТЛАДКИ ДЛЯ ОДНОКРИСТАЛЬНЫХ МИКРОКОНТРОЛЛЕРОВ Каждый, кто занимался программированием или разработкой элек- тронных устройств, наверняка сталкивался с тем, как непредсказуемо порой ведут себя «новорожденные» устройства. В случае же разработки устройства с микроконтроллерным ядром возможные сложности по от- ладке могут многократно возрасти. Существенно облегчить свой труд и сократить время разработки и отладки возможно при использовании 282
так называемых инструментальные средства отладки. Основное их на- значение— перевести разрабатываемое устройство из категории «вещь в себе» в категорию «вещь для разработчика», для чего необходимо сде- лать процесс функционирования отлаживаемого контроллера прозрач- ным, т. е. легко контролируемым, произвольно управляемым и моди- фицируемым по воле разработчика. Хороший профессиональный инструментальный комплекс дополнительно может предоставить раз- работчику множество сервисных услуг, тем самым существенно облег- чая его труд и избавляя от рутинных непроизводительных операций. К числу основных инструментальных средств отладки относятся: • внутрисхемные эмуляторы; • программные отладчики-симуляторы; • платы развития (оценочные платы); • мониторные отладчики. Данный список не исчерпывает всех типов существующих инст- рументальных средств отладки. Кроме указанных (их можно назвать основными), существуют и комбинированные устройства и наборы. Внутрисхемные эмуляторы Внутрисхемный эмулятор — программно аппаратное средство, способное замещать собой эмулируемый процессор в реальной схе- ме. Это наиболее мощное и универсальное отладочное средство. Функционально внутрисхемные эмуляторы делятся на стыкуемые с внешней вычислительной машиной (обычно это бывает IBM PC), и функционирующие автономно. Автономные внутрисхемные эмуля- торы имеют индивидуальные вычислительные ресурсы, средства вво- да/вывода, не требуют для своей нормальной работы стыковки с каки- ми-либо внешними вычислительными средствами, но за это пользователю приходится расплачиваться либо высокой ценой, либо пониженными функциональными и сервисными возможностями по сравнению с аналогичными моделями, стыкуемыми с IBM PC. Обычно стыковка внутрисхемного эмулятора с отлаживаемой системой производится при помощи эмуляционного кабеля со спе- циальной эмуляционной головкой. В последнее время стали появ- ляться модели внутрисхемных эмуляторов, у которых эмуляцион- ная головка конструктивно совмещена с основным блоком. Эмуляционная головка вставляется вместо микроконтроллера в от- лаживаемую систему. Если микроконтроллер невозможно удалить из отлаживаемой системы, то использование эмулятора возможно только в том случае, если этот микроконтроллер имеет отладочный режим, при котором все его выводы находятся в третьем состоянии. В этом случае для подключения эмулятора используют специальный 283
адаптер-клипсу, который подключается непосредственно к выводам эмулируемого микроконтроллера. Как минимум, эмулятор содержит следующие функциональные блоки: • узел эмуляции микроконтроллера; • эмуляционная память; • подсистема точек останова; • отладчик. Более продвинутые модели эмуляторов могут содержать допол- нительно: • процессор точек останова; • трассировщик; • профилировщик (анализатор эффективности программного кода); • таймер реального времени; • программно-аппаратные средства, обеспечивающие возмож- ность чтения и модификации ресурсов эмулируемого процессо- ра «на лету»: • программно-аппаратные средства, обеспечивающие синхрон- ное управление, необходимые для эмуляции в мультипроцессор- ных системах; • интегрированную среду разработки. Отладчик Отладчик является своеобразным мостом между разработчиком и отладочным средством. Состав и объем информации, проходящей через средства ввода/вывода, доступность ее для восприятия, конт- роля и, при необходимости, для коррекции и модификации напря- мую зависят от свойств и качества отладчика. Хороший отладчик позволяет осуществлять: • загрузку отлаживаемой программы в память системы; • вывод на монитор состояния и содержимого всех регистров и памяти и при необходимости, их модификацию; • управление процессом эмуляции. Более мощные отладчики (обычно их называют высокоуровне- выми, High-Level Debuggers) помимо этого позволяют: • вести символьную отладку, благодаря тому, что отладчик «зна- ет» адреса всех символьных переменных, массивов и структур (за счет использования специальной информации, поставляемой компилятором). При этом пользователь может оперировать бо- лее приемлемыми для человека символьными именами, не ут- руждая себя запоминанием их адресов; 284
• контролировать и анализировать не только дизассемблирован- ный текст, но и исходный текст программы, написанной на язы - ке высокого уровня и даже с собственными комментариями. Такой отладчик предоставляет пользователю возможность одно- временно контролировать ход выполнения программы и видеть соот- ветствие между исходным текстом, образом программы в машинных кодах и состоянием всех ресурсов эмулируемого микроконтроллера. Следует отметить, что высокоуровневый отладчик обеспечивает выполнение всех своих функций только в том случае, если исполь- зуется кросс-компилятор, поставляющий полную и правильную от- ладочную информацию (не все компиляторы, особенно их пиратс- кие версии, поставляют такую информацию), и при этом формат ее представления должен быть «знаком» отладчику. Эмуляционная память Наличие эмуляционный памяти дает возможность использо- вать ее в процессе отладки вместо ПЗУ в отлаживаемой системе и более того, отлаживать программу без использования реальной системы или ее макета. При необходимости внесения изменений в отлаживаемую программу достаточно загрузить новую или мо- дифицированную программу в память эмулятора вместо того, чтобы заниматься перепрограммированием ПЗУ. Существуют модели эмуляторов, которые позволяют пользователю «подстав- лять» вместо ПЗУ эмуляционную память не только целиком, но и поблочно (в некоторых моделях минимальный размер блока мо- жет достигать одного байта) в порядке, определенном пользова- телем. Для этого пользователю достаточно задать распределение памяти данных и памяти программ, в соответствии с которым процессор будет получать доступ и к содержимому ПЗУ в отлажи- ваемой системе, и к содержимому эмуляциоиной памяти внутри- схемного эмулятора. Такая память обычно называется памятью с возможностью мэппинга. Трассировщик В сущности, трассировщик представляет собой логический ана- лизатор, работающий синхронно с процессором и фиксирующий поток выполняемых инструкций, а также состояния выбранных вне- шних сигналов. Существуют модели внутрисхемных эмуляторов, которые позволяют трассировать не только внешние сигналы, но и состояния внутренних ресурсов микроконтроллера, например реги- стров. Такие эмуляторы используют специальные версии микрокон- троллеров (эмуляционные кристаллы). 285
Процессор точек останова Процессор точек останова позволяет останавливать выполнение программы или выполнять иные действия, например, запускать или останавливать трассировщик при выполнении заданных пользова- телем условий. В отличие от механизма обычных точек останова, про- цессор точек останова позволяет на аппаратном уровне формиро- вать и отслеживать условия практически любой степени сложности, и при этом эмулируемый процесс не выводится из масштаба реаль- ного времени. В некоторых моделях эмуляторов процессор точек ос- танова может дополнительно использоваться для динамического управления трассировщиком. Профилировщик Профилировщик (иначе анализатор эффективности программ- ного кода) позволяет получить по результатам прогона отлаживае- мой программы следующую информацию: • количество обращений к различным участкам программы; • время, затраченное на выполнение различных участков про- граммы. Анализ статистической информации, поставляемой профилиров щиком, позволяет легко выявлять «мертвые» или перенапряженные участки программ и в результате оптимизировать структуру отла- живаемой программы. Интегрированная среда разработки Интегрированная среда разработки — это программная оболоч- ка, объединяющая различные программные и программно-аппарат- ные комплексы, используемые в процессе разработки. В общем случае, различные модели внутрисхемных эмулято- ров могут предоставлять пользователю разнообразные возможнос- ти по контролю и управлению функционированием отлаживаемых устройств с разного рода ограничениями. Например, это может бьпь некорректное обрабатывание прерываний в пошаговом режиме или запрет на использование последовательного порта и т. п. Также необходимо помнить, что каждая реальная модель эмулятора име- ет свой перечень поддерживаемых микроконтроллеров и компи- ляторов. Однако необходимо иметь в виду, что для большинства широко используемых микроконтроллеров существуют и доступны, в том числе и для отечественных разработчиков, внутрисхемные эмулято- ры, которые не имеют ограничений по использованию каких-либо ресурсов отлаживаемых микроконтроллеров. 286
Основные возможности «реального» внутрисхемного эмулятора проиллюстрируем на примере модели PICE-51. Эмулятор PICE-51 PICE-51 — эмулятор, созданный с применением программируе- мых матриц большой емкости. Это позволило резко сократить раз- меры эмулятора без ущерба его функциональным возможностям, ми- нимизировать отклонения электрических и частотных характеристик эмулятора от характеристик эмулируемого процессора и тем самым, добиться максимальной точности эмуляции на частотах до 33 Мгц при напряжениях питания от 3,3 до 5 В. Перезагружаемая аппаратная структура эмулятора обеспечивает эмуляцию практически всех микроконтроллеров семейства 8051 как отечественного производства, так и производства фирм Atmel, Dallas, Intel, ISSI, Philips, Siemens, SST, Temic, OKI, AMD, MHS и других. Программная поддержка PICE-51 работает в среде Windows и предоставляет пользователю обширный сервис как по разработке программ, так и по их отладке. Эмулятор состоит из основной платы размером 80x76 мм, смен- ного адаптера под конкретный процессор и сменной эмуляцион- ной головки под конкретный тип корпуса. На основной плате реа- лизованы трассировщик и процессор точек останова. Плата сменного адаптера содержит эмулирующий процессор под конкрет- ный тип микроконтроллера. Эмуляционные головки обеспечива- ют установку эмулятора в колодки DIP и PLCC на плате пользова- теля. Питание эмулятора осуществляется от блока питания +5 В, 0,5 А или непосредственно от отлаживаемого устройства. Связь с компьютером осуществляется по гальванически развязанному ка- налу RS-232C на скорости 115 кбод. Характеристики аппаратуры эмулятора • Точная эмуляция — отсутствие каких-либо ограничений на ис- пользование программой пользователя ресурсов микроконтрол- лера. • До 256К эмулируемой памяти программ и данных. Поддержка бан- кированной модели памяти. Распределение памяти между эмулято- ром и устройством пользователя с точностью до одного байта. • До 512К аппаратных точек останова по доступу к памяти про- грамм и данных. • Аппаратная поддержка для отладки программ на языках высо- кого уровня. • Трассировка восьми произвольных внешних сигналов. 287
• Четыре выхода синхронизации аппаратуры пользователя. • Трассировщик реального времени с буфером объемом от 16 до 64К фреймов по 64 бита с доступом «на лету». Трассировка адре- са, данных, сигналов управления, таймера реального времени и восьми внешних сигналов пользователя. • Программируемый фильтр трассировки. • Аппаратный процессор точек останова с возможностью зада- ния сложного условия останова эмуляции по комбинации сигна- лов адреса, данных, управления, восьми внешних сигналов, тай- мера реального времени, счетчиков событий и таймера задержки. • Четыре комплексных точки останова, которые могут быть ис пользованы независимо или в комбинациях по условиям AND/OR/IF-THEN. • 48-разрядный таймер реального времени. • Прозрачная эмуляция — доступ «на лету» к эмулируемой па- мяти, точкам останова, процессору точек останова, буферу трас- сировки, таймеру реального времени. • Управляемый генератор тактовой частоты для эмулируемого процессора. Возможность плавного изменения тактовой часто- ты от 500 кГц до 40 МГц. » Гальванически развязанный от компьютера канал связи RS-232C со скоростью обмена 115 кбод. • Встроенная система самодиагностики аппаратуры эмулятора Характеристики программного обеспечения Программный интерфейс PICE-51 представляет собой интегри- рованную среду разработки, поддерживающую все этапы разработ- ки программного обеспечения— от написания исходного текста про- граммы до ее компиляции и отладки. Среда ориентирована на отладку программ на языке высокого уровня по исходному тексту. Встроенный многооконный редактор предназначен для написа- ния исходных текстов программ. Встроенный редактор поддержива- ет операции с блоками текста, поиск/замену, цветовое выделение син- таксических конструкций языка Си и ассемблера. Встроенный менеджер проектов поддерживает автоматическую компиляцию программ, написанных для компилятора Си и ассемблера фирм IAR Systems, Keil Software, Raisonance и ассемблера МСА-51 фир- мы «Фитон». Все опции компиляторов задаются в форме диалогов. Переход от редактирования исходного текста к отладке и обрат- но происходит «прозрачно», т. е. менеджер проектов автоматически запускает компиляцию изменившихся исходных текстов, активизи- рует отладчик, осуществляет загрузку программ. 288
Программное обеспечение работает в среде Windows 95/98/NT/2000. Поддерживается разработка программ на уровне ведения проек- тов для макроассемблера MCA-51 фирмы «Фитон», который входит в комплект поставки, а также для пакетов кросс-средств производ- ства фирм Keil Software, IAR Systems, Raisonance. Поддерживается полнофункциональная символьная отладка про- грамм, созданных с помощью компиляторов: • ассемблер ASM51 фирмы Intel; • компилятор PL/М фирмы Intel; • ассемблер и компилятор Си фирмы Avocet Systems; • ассемблер и компилятор Си фирмы Hi-Tech; • ассемблер и компилятор Си фирмы Crossware; • ассемблер и компилятор Си фирмы Tasking Software. • Автоматическое сохранение и загрузка файлов конфигурации аппаратуры, интерфейса и опций отладки. Обеспечивается совме- стимость файлов конфигурации с симулятором PDS-51. Обеспе- чена переносимость проектов между эмулятором PICE-51 и си- мулятором PDS-51; • Возможность настройки цветов, шрифтов и других параметров для всех окон одновременно и для каждого окна в отдельности; • Для обновления версий PICE-51 достаточно обновить его про- граммное обеспечение. Симуляторы Симулятор — программное средство, способное имитировать ра- боту микроконтроллера и его памяти. Как правило, симулятор со- держит в своем составе: * • отладчик, функции которого аналогичны функциям отладчика в эмуляторе; • модель ЦПУ и памяти. Более продвинутые симуляторы содержат в своем составе моде- ли встроенных периферийных устройств, таких как таймеры, пор- ты, АЦП и системы прерываний. Симулятор должен уметь загружать файлы программ во всех популярных форматах, максимально полно отображать информацию о состоянии ресурсов симулируемого микроконтроллера, а также предоставлять возможности по симуляции выполнения загруженной программы в различных режимах. В процессе отладки модель «вы- полняет» программу, и на экране компьютера отображается текущее состояние модели. Загрузив программу в симулятор, пользователь имеет возмож- ность запускать ее в пошаговом или непрерывном режимах, зада- 289
Комплекс поставки эмуляторов Р1СЕ-51 X st СО го I Эмуляционная I I головка I I ADP-51-DIP40 или I ADP-51-LCC44 ADP-51-DIP40 или ADP-51-LCC44 ADP-51-DIP40 или ADP-51-LCC44 ADP-51-2051 | ADP-51-LCC68 I ADP-51-LCC68 I ADP-51-LCC68 I I ADP-51-LCC68 I ADP-51-DIP40 или j ADP-51-LCC44 I Q cn in V) Q <0 d a 4 Комплект пост Сменный адаптер POD-51-31 POD-51-RX POD-51-RX2 I POD-51-31 или POD-51-RX | POD-51-453 POD-51-552 I POD-51-554 I POD-51-GB j | POD-51-DS530 POD-51-DS530 1 I Основная I плата PICE-51 PICE-51 PICE-51 PICE-51 | PICE-51 PICE-51 I PICE-51 | PICE-51 PICE-51 LU U CL Эмуляция памяти программ на кристалле Нет I 64К 64K bi 64 К Нет 64 К Нет 64K 64K | Эмулируемый микроконтроллер - 189С51 /52/55, 89S8252, 89S53 (Atmel) с внешней памятью | программ; 80С31/32, 80L/C51 FA, 80С51RA (Intel) с внешней памятью программ; 80С31/32, 80C51FA; 80C51RA+, 80CL410, 80С524/528/550/652 /654/575/576/851 (Philips) с внешней памятью программ; SAB501/502/504/511/513 (Siemens) с внешней памятью программ; 80С31, 80С32, 80С154 (MHS) с внешней памятью программ; I80C31F, 80C154F (Oki); 80С31 (AMD;) | 80С31/32, 8ХС51/52/54/58, 8ХС51FA/FB/FC, 8ХС51RA/RB/RC (Intel); 80С31/32, 8ХС51/52/54/58, 8ХС51 FA/FB/FC; 8ХС51RA+/RB+/RC+/RD+, 8ХС524/528/550/652/654/575/576/851; 89С535/536/538 (Philips); 87F51RC, 89С51,89С52, 89С55 (Atmel); SAB501 (Siemens); 8XC51,8XC52, 8XC154 (MHS); 80C31F, 8XC154F (Oki); 80C31,8XC51, 8XC52 (AMD); 189C54/58/59, 89F54/58 (SST); 89C51/52 (ISSI); | 89C51RB2/RC2/RD2, 89C660/662/664/668 (Philips) 89C4051,89C2051, 89C1051, 89C1051U (Atmel); I80C451, 87C451,80C453; 87C453 (Philips) | 80C552, 80C562; 80C554 (Philips ) только с внешней памятью программ [80C552, 87C552, 80C562; 87C562, 80C554, 87C554 (Philips) | [80C51GB (Intel) только с внешней памятью программ I DS80C310, DS80C320, DS8XC520 (Dallas) "4 ro S о co in a co О 290
вать условные или безусловные точки останова, контролировать и свободно модифицировать содержимое ячеек памяти и регистров симулируемого микропроцессора. С помощью симулятора можно быстро проверить логику выполнения программы, правильность выполнения арифметических операций. В зависимости от класса используемого отладчика, различные симуляторы могут поддерживать высокоуровневую символьную от- ладку программ. Некоторые модели симуляторов могут содержать ряд дополни- тельных программных средств, например имитатор внешней среды. Наличие имитатора внешней среды позволяет пользователю созда- вать и гибко использовать модель внешней среды микроконтролле- ра, функционирующую и воздействующую на отлаживаемую про- грамму по заданному алгоритму. В реальной системе МК обычно занимается считыванием инфор- мации с подключенных к МК внешних устройств (датчиков), обра- боткой этой информации и выдачей управляющих воздействий на исполнительные устройства. Чтобы в простом симуляторе смодели- ровать работу датчика, нужно вручную изменять текущее состояние модели периферийного устройства, к которому в реальной системе подключен датчик. Если, например, при приеме байта через после- довательный порт взводится некоторый флажок, а сам байт попада- ет в определенный регистр, то оба эти действия нужно производить в симуляторе вручную. В некоторых моделях эта проблема решена: симуляторы имеют встроенные средства для создания моделей под- ключенных к МК внешних устройств, включая средства графическо- го отображения информации. Основные возможности «реального» программного отладчика- симулятора проиллюстрируем на примере симулятора PDS-51. Симулятор PDS-51 PDS-51 — это интегрированный комплекс профессиональных средств для разработки систем на базе микроконтроллеров семейства 8051, включающий интегрированную среду разработки, макроассем- блер, отладчик-симулятор, интерфейс внешней среды (имитатор внешней среды), примеры программ и проектов, мощную систему контекстной помощи, электронные гипертекстные руководства по всем компонентам пакета. PDS-51 работает в среде Windows. С помощью PDS-51 можно эффективно разрабатывать и отла- живать программы, используя не только входящий в комплект мак- роассемблер МСА-51, но и популярные пакеты кросс-средств фирм Keil Software и IAR Systems, для которых также предоставляется воз- 291
можность разработки программ на уровне ведения проектов. Поми- мо указанных пакетов. PDS-51 обеспечивает полнофункциональную символьную отладку программ, созданных с помощью пакетов кросс- средств фирм Franklin Software, Avocet Systems, Hi-Tech Software Tasking Software. Пользователю предоставляется обширный сервис по выполнению отлаживаемой программы в различных режимах, ма- нипуляции различными типами точек останова, просмотру и моди- фикации состояния ресурсов микроконтроллера. Поддерживается отладка программ по исходному тексту, а также просмотр и измене- ние значений сложных обьектов языка высокого уровня — масси- вов, структур, указателей. Интегрированная среда разработки Среда разработки программ PDS-51 интегрирует в себе средства, используемые при разработке программ для микроконтроллеров MCS-51. Обеспечивается интерактивная поддержка всех этапов раз- работки от написания исходного текста до зашивки готовой програм- мы в ПЗУ микроконтроллера, а именно: • написание исходных текстов программ с помощью встроенно- го многооконного редактора; • настройка опций кросс-средств, используемых для компиляции программы (ассемблера, компилятора Си, линкера, библиотека- ря). Настройка производится с помощью диалогов, снабженных контекстной справочной информацией; • компиляция и линковка программы. Если компилятор обнару- живает ошибки в исходном тексте программы, то строка с ошиб- кой в окне редактора подсвечивается и ошибки можно сразу же исправить; • отладка программы; • «зашивка» программы в ПЗУ микроконтроллера. «Интегрированность» среды PDS-51 проявляется в том, что пе- речисленные этапы разработки связываются в одно целое. Самые трудоемкие этапы, а именно компиляция/линковка с диагностикой и исправлением ошибок максимально упрощены. PDS-51 самостоятельно следит за изменениями, которые вы вно- сите в исходные тексты своих программ. Например, исправив ошиб- ку в исходном тексте, вы можете нажатием одной кнопки «выпол- нить программу до курсора» заставить PDS-51 перетранслировать изменившиеся модули, загрузить полученную программу в память отладчика и запустить ее до указанной строки. Переход от отладки к редактированию происходит так же прозрачно и быстро. 292
Отладочные возможности PDS-51 Симулятор PDS-51 представляет собой программно-логическую модель микроконтроллера, имитирующую (симулирующую) рабо- ту всех его узлов — памяти, АЛУ, системы команд, регистров, пери- ферийных устройств и т. д. Основные возможности PDS-51: • отслеживание выполнения программы по ее исходному тексту; • просмотр и изменение значений любых переменных; • встроенный анализатор эффективности программного кода; • точки останова по сложному условию; • точки останова по доступу к ячейкам памяти; • просмотр стека вызовов подпрограмм и функций; • встроенный строчный ассемблер; • возможность выполнения программы «назад» на большое коли- чество шагов, а также в непрерывном режиме. При этом состоя- ние модели микроконтроллера полностью восстанавливается; • точный подсчет интервалов времени и многое другое. В симуляторе PDS-51 реализована возможность моделировать устройства, подключенные к микроконтроллеру «снаружи» (так на- зываемое моделирование внешней среды), например, внешнюю ло- гику, датчики, клавиатуру, исполнительные устройства (дисплеи), за- давать периодические и непериодические воздействия и т. п. С помощью Си-подобного языка пользователь может создать модель внешней среды, а затем вести отладку программы своего контролле- ра с учетом его взаимодействия с внешней средой. Очевидной особенностью программных симуляторов является то обстоятельство, что исполнение программ, загруженных в симуля- тор, происходит в масштабе времени, отличном от реального. Одна- ко низкая цена и возможность ведения отладки даже в условиях от- сутствия макета отлаживаемого устройства делают программные симуляторы весьма эффективным средством отладки. Отдельно не- обходимо подчеркнуть, что существует целый класс ошибок, кото- рые могут быть обнаружены только при помощи симулятора. Отладочные мониторы Отладочный монитор — специальная программа, загружаемая в память отлаживаемой системы. Она вынуждает процессор пользовате- ля выполнять кроме прикладной задачи еще и отладочные функции: • загрузку прикладных кодов пользователя в свободную от мо- нитора память; • установку точек останова; • запуск и останов загруженной программы в реальном времени; 293
• проход программы пользователя по шагам; • просмотр, редактирование содержимого памяти и управляю- щих регистров. Программа монитора обязательно должна работать в связке с внешним компьютером или пассивным терминалом, на которых и происходит визуализация и управление процессом отладки. Повто- рим, что отладочные мониторы используют тот процессор, который уже стоит на плате пользователя. Достоинством этого подхода явля- ются очень малые затраты при сохранении возможности вести от- ладку в реальном времени. Главным недостатком является отвлече- ние ресурсов микроконтроллера на отладочные и связные процедуры Например, монитор занимает некоторый объем памяти, прерывания, последовательный канал. Объем отвлекаемых ресурсов зависит от искусства разработчика монитора. Платы развития Платы развития или как принято их называть в зарубежной ли- тературе оценочные платы (Evaluation Boards) являются своеобраз- ными конструкторами для макетирования прикладных систем. В пос- леднее время при выпуске новой модели кристалла микроконтроллера фирма-производитель обязательно выпускает и соответствующую плату развития. Обычно это печатная плата с установленным на ней микроконтроллером, плюс вся необходимая ему стандартная обвяз- ка. На этой плате также устанавливают схемы связи с внешним ком- пьютером. Как правило, там же имеется свободное поле для мот ажа прикладных схем пользователя. Иногда имеется уже готовая развод- ка для установки дополнительных устройств, рекомендуемых фир- мой, например, ПЗУ, ОЗУ, ЖКИ-дисплея, клавиатуры, АЦП и др. Кроме учебных или макетных целей, такие доработанные пользова- телем платы стало выгодно (с точки зрения экономии времени) ис- пользовать в качестве одноплатных контроллеров, встраиваемых в малосерийную продукцию (тиражом 5...20 шт.). Для большего удобства платы развития комплектуются еще и про- стейшим средством отладки на базе монитора отладки. Однако здесь проявились два разных подхода: один используется для микроконт- роллеров, имеющих внешнюю шину, а второй — для микроконт- роллеров, не имеющих ее. В первом случае отладочный монитор поставляется фирмой в виде микросхемы ПЗУ, которая вставляется в специальную розетку на плате развития. Плата также имеет ОЗУ для программ пользователя и канал связи с внешним компьютером или терминалом. Примером здесь мо- жет служить плата развития фирмы Intel для микроконтроллера 8051. 294
Во втором случае плата развития имеет встроенные схемы про- граммирования внутреннего ПЗУ микроконтроллера, которые уп- равляются от внешнего компьютера. В этом случае программа мо- нитора просто заносится в ПЗУ микроконтроллера совместно с прикладными кодами пользователя. Прикладная программа при этом специально должна быть подготовлена: в нужные ее места вставляют вызовы отладочных подпрограмм монитора. Затем осу- ществляется пробный прогон. Чтобы внести в программу исправ- ления, пользователю надо стереть ПЗУ и произвести повторную запись. Готовую прикладную программу получают из отлаженной путем удаления всех вызовов мониторных функций и самого мо- нитора отладки. Примерами могут служить платы развития фир- мы Microchip для своих PIC-контроллеров. Такой же принцип и у плат для отладки микроконтроллеров 80С750 Philips или 89С2051 Atmel. Важно отметить, что в дополнение к монитору платы развития иногда комплектуются еще и программами отладки, которые запус- каются на внешнем компьютере в связке с монитором. Эти програм- мы в последнее время заметно усложнились и зачастую имеют высо- копрофессиональный набор отладочных функций, например, отладчик-симулятор или различные элементы, присущие в чистом виде интегрированным средам разработки. В состав поставляемых комплектов могут входить и программы прикладного характера, наи- более часто встречающиеся на практике. Таким образом, выбирая инструментальные средства отладки, це- лесообразно принимать в расчет следующий комплекс показателей: • перечень поддерживаемых микроконтроллеров; • ограничения на ресурсы эмулируемых/симулируемых микро- контроллеров; • возможность символьной отладки; • перечень поддерживаемых компиляторов; • сервисные возможности. Завершая разговор о инструментальных средствах отладки, сфор- мулируем основные родовые признаки внутрисхемного эмулятора и программного отладчика-симулятора, которые, возможно, помогут начинающему разработчику более полно понять сильные и слабые стороны этих средств. Эмулятор Область применения Эмулятор применяется как для отладки программного обеспече- ния, так и аппаратуры. 295
Основные свойства и возможности 1. Возможность использования в реальном объекте: реальные ча- стоты, напряжения. 2. Исполнение программы в реальном времени. 3. Максимальное соответствие поведения эмулятора и микропро- цессора. 4. Трассировка большого количества параметров, включая вне- шние сигналы. 5. Останов по большому количеству разнообразных условий, включающих, в том числе, и состояние внешней среды. 6. Богатые возможности для поиска ошибок, связанных с наруше- нием логики взаимодействия программы и внешней аппаратуры. Это особенно хорошо проявляется в случае, когда даже предварительно от- лаженная на симуляторе программа ведет себя не так, как ожидается. Пример из практики: ошибка в аппаратуре — бит готовности в мат- рице выставлялся случайным образом, что приводило к считыванию неверных данных. Для нахождения ошибки был использован трасси- ровщик и процессор точек останова. По временному интервалу воз- никновения готовности, которая фиксировалась в трассировщике, была вычислена ошибка формирования готовности в матрице. 7. Эмулятор возможно использовать в качестве тестера при на- стройке аппаратуры. Язык скриптов позволяет автоматизировать процесс тестирования и сбора диагностики. 8. Эмулятор можно использовать для изучения поведения внеш- ней среды, например, сбора статистических данных, измерения вре- менных характеристик, которые впоследствии могут быть исполь- зованы при разработке программного обеспечения. 9. Эмулятор надо физически присоединить к контроллеру, что не всегда удобно. Симулятор Область применения Эмулятор применяется исключительно для отладки программно- го обеспечения. Он максимально удобен для отладки программ, не за- вязанных на взаимодействие с устройствами ввода/вывода, т. е. имею- щих, в основном, вычислительный характер, математических функций. Основные свойства и возможности • точное моделирование ядра; • доступ ко всем внутренним ресурсам модели процессора, что далеко не всегда возможно в эмуляторе; • возможность моделирования внешней среды; • полный контроль над временем; 296
»останов по условию; • возможность выцолнения программы в обратном порядке; »самый главный недостаток — если аппаратура, окружающая микроконтроллер в устройстве пользователя, имеет свои слож- ные алгоритмы работы, то создание модели такой среды может стать весьма трудоемкой задачей, сопоставимой с трудоемкостью собственной программы. Тем более, что такая модель также мо- жет содержать ошибки и не быть адекватной реальной системе. Сочетая возможности эмулятора/симулятора и языка сценариев, можно создавать автоматизированные комплексы для сбора данных, проверки программ, проверки устройств. Особенности использования эмулятора и симулятора Применение Симулятор Эмулятор Логическое управление Можно точно совмещать во времени внешние события (моделируются) и ключевые точки в программе. Очень полезно для отладки внештатных ситуаций. Необходимо для проверки работоспособности программы при “наплыве” внешних событий. Подобная проверка с помощью эмулятора требует наличия сложного и дорогого тестового стенда. Программа отлаживается во взаимодействии с реальным объектом и его внешней средой. Для отладки при помощи симулятора требуется создание модели внешней среды, что по трудоемкости сопоставимо с написанием самой программы, или ручная пошаговая имитация входных воздействий. Полное соответствие работы эмулятора и микропроцессора. Симулятор может иметь погрешности и ошибки модели микропроцессора. Здесь работает сам микропроцессор. Динамическое управление Полный контроль над временем и доступ ко всем ресурсам модели процессора и модели внешней среды. При работе с эмулятором мы не можем остановить программу выполняющую задачу динамического управления для контроля и/или изменения параметров. Просто изменять параметры модели внешней среды, что полезно для проверки системы во всем диапазоне параметров объекта и особо для внештатных ситуаций. Например, при создании программы управления двигателем внутреннего сгорания можно варьировать степень износа, температуру, качество смеси. Создание адекватной модели управляемого объекта трудоемко и не всегда возможно. Работа с реальным объектом. Возможно использовать эмулятор как средство для снятия динамических характеристик объекта. Невозможно пройти программу по шагам. 297
Применение Симулятор Эмулятор Обработка сигналов, фильтрация Модель сложного сигнала создать проще, чем устройство его производящее. Модель все же придется создать Реальный объект, реальное время. Невозможно пройти программу по шагам. Телеметрия, метрология Возможно смоделировать любую метрологическую обстановку. Эмулятор может служить источником помех. Метрологические и аудио применения - редкий случай возможной неадекватности эмулятора процессору. Передача данных Иногда проще написать модель объекта с которым производится обмен данными, чем получить его для отладки. Например канал управления в модуле загоризонтной РЛС. В качестве иллюстрации использования внутрисхемного эмулятора и программного отладчика-симулятора, приведем два примера отлад- ки реального устройства. В первом примере производилась отладка макета с помощью внутрисхемного эмулятора PICE-51. Во втором примере отладка производилась с помощью программного отладчи- ка-симулятора PDS-51. Периферия отлаживаемого устройства моде- лировалась с помощью интерфейса внешней среды, входящей в со- став PDS-51. Желающие воспользоваться отладчиком-симулятором PDS-51 для учебных или иных целей, могут посетить сайт http:// www.phyton.ru и свободно скачать симулятор PDS-51. При этом надо иметь ввиду, что свободно распространяемый PDS-51, в отличие от коммерческой версии PDS-51, имеет ограничения по объему отлажи- ваемой программы. Пример 1. Сопряжение графического жидкокристаллического индикатора с микроконтроллером Ниже приводится ознакомительное описание возможностей, си- стемы команд и линий интерфейса внутренних контроллеров гра- фического индикатора. Затем обсуждается вопрос подключения ин- дикатора к микроконтроллеру семейства MCS-51. Далее дан текст драйвера ЖК-индикатора, который может быть легко адаптирован пользователем под свои нужды. Помимо знакосинтезирующих индикаторов с фиксированным распределением знакомест отображаемых символов, все большее применение находят графические жидкокристаллические индика- торы. Речь идет не об LCD-дисплеях компьютеров, а о более про- стых дешевых индикаторах с разрешением от 60*16 до 122*32 то- чек, построенных на универсальных контроллерах SED1520/1521. 298
f акие жидкокристаллические индикаторы применяются в устрой- ствах промышленной электроники, быту и в медицинских при- борах. Индикаторы с указанным разрешением на основе SED1520/1521 выпускаются многими фирмами и имеют незначительные отличия в дизайне печатных плат. Конструктивные размеры и эксплуатаци- онные характеристики индикаторов, выпускаемых разными фирма- ми, как правило, не изменяются, что позволяет говорить об их пол- ной взаимозаменяемости. Ниже рассматриваются варианты сопряжения индикатора PG12232А фирмы Powertip с микроконтроллером семейства MCS-51 и некоторые вопросы, связанные с отладкой программы поддержки указанного ЖКИ. Контроллер ЖК-матриц SED1520/1521 Контроллеры SED1520 и SED1521 специально разработаны для управления матрицами графических ЖКИ и самостоятельно выра- батывают все необходимые напряжения для управления пикселя- ми (точками, разрядами, сегментами) матрицы, используя для этого только напряжение питания. SED1521 является расширителем кон- троллера SED1520 и позволяет увеличить количество используе- мых сегментов в матрице ЖКИ. В индикаторах, имеющих разряд- ность больше, чем 122*32 пикселей, можно увидеть несколько контроллеров SED1521, включенных последовательно (каскадно). Контроллер SED1520 способен поддерживать в режиме мультиплек- сирования только 976 сегментов (61*16). Совместное использова- ние SED1520 и SED1521 позволяет увеличить количество использу- емых сегментов до 3904 (122*32). Каждый контроллер, как правило, поддерживает часть сегментов матрицы индикатора. Интерфейс у контроллеров одинаковый. Дос- туп к конкретному контроллеру, а следовательно, и к соответствую- щей части ЖК-матрицы, определяется только сигналами CS (Chip Select, активный уровень низкий), которые индивидуальны для каж- дого контроллера. С помощью команд, приведенных в табл. 1, внешний процессор способен управлять индикатором на основе контроллеров SED1520/1521. Таблица отражает не весь набор команд контроллеров SED, а лишь наи- более часто употребляемые команды. Помимо перечисленных (сигналы Chip Select упоминались ра- нее), у контроллеров SED 1520/1521 есть еще один вход — вход так- товой частоты CL. Типичное (паспортное) значение тактовой час- тоты составляет 2 кГц. Однако никаких, сбоев в работе индикатора 299
не происходит при изменении тактовой частоты от 1,5 до 3 кГц (хотя визуально было замечено незначительное изменение контрастнос- ти, легко устраняемое регулятором контрастности). Именно такой диапазон частот тактирования использовался авторами при работе с индикатором. Вполне возможно, что он может быть даже еще бо- лее широким. Низкое значение частоты тактирования объясняется очень про сто. Чем ниже частота, тем меньше энергопотребление схемы, да и используется данная тактовая частота исключительно для регенера- ции сегментов индикатора и никакого отношения к управляющим сигналам (АО, WR, RD) не имеет. Согласно документации на кон- троллеры SED, длительность сигналов WR и RD не может быть ме- нее 1 мкс. Минимальное время, в течении которого RD и WR долж- ны быть активны, составляет 200 нс. Индикатор PG12232A фирмы Powertip Мы не беремся рассматривать оптические, климатические, проч- ностные и эргономические параметры индикаторов и способы их подсветки. Основная задача сводится к схемотехническому подклю- чению индикатора к микроконтроллеру семейства MCS-51. Индикатор PG12232A представляет собой ЖК матрицу из 3904 точек (122*32). В нем используется контроллер SED1520 и дополни- тельный контроллер SED1521. Каждый контроллер поддерживает 61 столбец в каждой странице матрицы индикатора. В табл. 2 показано соответствие номеров контактов разъема ин- дикатора с функциональным назначением сигналов управления кон- троллеров SED. Габаритные размеры печатной платы индикатора составляют 84x36 мм. Размеры ЖКИ-экрана — 66x27,5 мм. Рабочая область, где формируется собственно изображение, лежит в прямоугольнике 53,6x15,6 мм. С учетом предыдущего раздела большая часть перечисленных в табл. 2 сигналов не нуждается в описании. Напомним, что CS1 и CS2 — это сигналы выбора соответственно основного контроллера (SED1520) и расширителя (SED1521). Назначение линий питания индикатора: Vss — потенциал с наименьшим значением (общий про- вод, называемый «земля»); Vdd — потенциал с наибольшим значением, питание +5 В, Vee — потенциал управления контрастностью дисплея (некоторое значение, получаемое с движка подстро ечного резистора номиналом 10 кОм включенного 300
с; Команды контроллера SED1520/1521 для графических индикаторов Описание Включить дисплей | Выключить дисплей | Выбор строки старта с 0 по 31 [Выбор страницы с 0 по 3| Выбор адреса столбца с 0 по 60 Чтение статуса контроллера дисплея Запись данных в память дисплея Чтение данных из памяти дисплея Чтение-модификация- запись Окончание режима Read-Modify-Write ПРИМЕЧАНИЕ: Контроллеры SED1520/1521 поддерживают два типа интерфейсов с внешним процессором. Первый тип — это стандартный интерфейс микроконтроллеров фирмы Intel, где существуют раздельные сигналы чтения и записи данных. Контрол- леры настраиваются на такой тип интерфейса, если внешний сигнал RES имеет низкое значение. При высоком значении RES контроллеры SED1520/1521 поддерживают второй тип интерфейсов, характерный для микроконтроллеров фирмы Motorola. Поскольку в дальнейшем описывается работа индикатора с микроконтроллером, “порожденным” фирмой Intel, то нет смысла описывать второй интерфейс. Поэтому в табл. 1 указаны раздельные сигналы: чтения — RD и записи — WR. D0-D7 — двунаправленная восьмиразрядная шина данных. Через нее осуществляется обмен информацией между контроллером SED1520/1521 и внешним процессором. АО — управляющий сигнал. Высокое состояние — обмен данными. Низкое состояние — программирование (выбор режимов) SED1520/1521. RD — чтение данных из SED1520/1521. WR — запись данных в SED1520/1521. Код команды т L_ Hdvl C0H-DFH т CD CD Т оо CD 00H-4FH ЕОН ЕЕН D0 о хО s О X о О О Б - - X X X о о D2 - $ о о о D3 V- хЗ - со X о о - D4 о о V- ’х Reset о о D5 - V- о — LO X On/off V- - 90 о о т— о со X ADC - - D7 - V- т~ Г- о BUSY - WR о о О о о о Г", о о RD г- г- V- о О V- V АО О о О О о о V . о О Команда I Display ON I (Display OFF | Display Start Line I Set Page Address I Set Column Address Read Status* Write Display Data Read Display Data Read-Modify-Write End 301
между Vss и Vdd для индикаторов со стандартны* температурным диапазоном); А, К — контакты управления подсветкой индикатора. Таблица 2 Контакты разъема индикатора Номер контакта Сигнал Номер контакта Сигнал Номер контакта Сигнал Номер контакта Сигнал 1 Vss 6 CS2 11 D1 16 D6 2 Vdd 7 CL 12 D2 17 D7 3 Vee 8 RD 13 D3 18 RES 4 АО 9 WR 14 D4 19 А " 5 CS1 10 DO 15 D5 20 К Организация ЖК матрицы и видеопамяти ЖК-матрица, используемая в индикаторе PG12232A, по спо- собу подключения к контроллерам разделена на две равные части, левую и правую. За правую половину матрицы отвечает контрол- лер SED1520, за левую соответственно — SED1521. Любая поло- вина матрицы содержит 4 горизонтальные страницы (еще их на- зывают «полями») по 8 строк в каждой. Длина такой строки — 61 пиксель, высота — всего один пиксель. Нижние 8 строк — это нулевая страница, верхние 8 строк — страница номер три. Мож- но сказать и по-другому: каждая страница содержит столбцы пик- селей, пронумерованные справа налево и имеющие номера от О до 60. Любой столбец состоит из 8 пикселей. Верхний в столбце пиксель обозначается D7, нижний — D0. Каждому пикселю столбца соответствует одна ячейка видеопа- мяти индикатора и, следовательно, один бит в байте данных. Нуме- рация бит в байте совпадает с номерами пикселей в столбце ЖК мат- рицы, т. е. за пиксель с наименьшим номером в столбце одной строки отвечает младший бит соответствующего байта в памяти SED кон- троллера. Причем соответствие ячеек памяти и пикселей взаимно однозначное. Другими словами, при записи информации в видеопамять ин- дикатора следует помнить, что каждый записываемый байт должен попасть в отведенное для него место. Точное местоположение запи- сываемого байта определяется внешним процессором, который дол- жен указать, в какой столбец какой страницы следует записать пере- даваемый байт. Для этого у контроллеров SED есть специальные команды (см. табл. 1). 302
Подключение индикатора к портам контроллера Подключение индикатора возможно к свободным линиям любо- го порта микроконтроллера семейства MCS-51. Как известно, линии порта РО микроконтроллеров семейства MCS-51 могут переключаться как в «нуль», так и в полноценную «еди- ницу» только при записи байта во внешнюю память данных по ко- мандам MOVX. Конструктивно любая линия этого порта содержит на выходе пару транзисторов, один из которых подключает выход- ную линию к низкому потенциалу (земли), другой к высокому по- тенциалу (+5 В). При этом схема построена так, что одновременно оба транзистора могут быть закрытыми (третье или «серое» состоя- ние выхода), а открываются только по одному, чтобы предотвратить возникновение сквозного тока. Если же обращение к линиям порта РО производится с помощью других команд (как к порту, а не к шине), то его выходные линии работают в режиме «отрытого стока», т. е. стоки выходных транзисторов не имеют подтягивающих к шине пи- тания резисторов. Таким образом, при подключении шины данных индикатора к РО и обращении к этой шине через порт ввода/вывода микроконтроллера вам придется устанавливать на плату внешний подтягивающий резистор на каждую линию порта. Остальные порты Pi микроконтроллеров семейства MCS-51 име- ют только один транзистор на выходе, который включен по схеме с общим эмиттером (вернее, с общим стоком). Если такой транзистор закрыт, то на его стоке потенциал практически равен напряжению питания. Резистор, соединяющий сток транзистора с шиной пита- ния, носит название «подтягивающего» резистора. Такие резисторы (а на каждую линию порта необходим свой подтягивающий резис- тор), интегрируются в кремниевый кристалл микроконтроллера и имеют номинал порядка 30...50 кОм. В некоторых моделях микро- контроллеров семейства MCS-51 эти резисторы могут программно подключаться и отключаться. Подключение индикатора к порту РО вместо внешней памяти дан- ных (или совместно с ней) вполне возможно, поскольку рекомендуе- мые длительности сигналов управления контроллерами SED1520/1521 адекватны соответствующим сигналам чтения и записи типичного мик- роконтроллера семейства MCS-51. Но большинство разработчиков со- временной аппаратуры пользуются лишь внутренней памятью микро- контроллеров и используют порты РО и Р2 для собственных нужд, а не как шину адреса данных. Такой вариант подключения далее и будем рас- сматривать. Желательно, чтобы линии шины данных D0-D7 индикатора были правильно подключены к любому восьмибитному порту MCS-51, а 303
не раскиданы по линиям разных портов, тогда данные легко записы- вать в выбранный порт микроконтроллера MCS-51 и передавать в SED1520/1521 побайтно. Под правильным подключением следует понимать взаимно однозначное соответствие между разрядами шины данных индикатора и нумерацией линий ввода/вывода выбранного порта внешнего микроконтроллера MCS-51. Младший разряд шины данных индикатора следует соединить с линией порта микроконт- роллера имеющей минимальный номер и т. д. Линии управления индикатора АО, CS1, CS2, WR подключаются к любым свободным линиям портов микроконтроллера MCS-51. Необходимость в линии RD, как мы дальше убедимся, отпадает. Это станет очевидно после отладки системы при помощи внутрисхемно- го эмулятора. Линия RD неактивна, когда находится в высоком со- стоянии (см. табл. 1), поэтому соединим ее с питанием +5 В. На вре мя работы с эмулятором линия RD подключена к порту Р1.3 микроконтроллера. Линия сброса индикатора и выбора интерфейса (RES) соответственно подключается к «земле». Программа поддержки графического индикатора Для упрощения алгоритма обмена между микроконтроллером семейства MCS-51 и индикатором не будем проводить операцию чте ния из контроллера индикатора с целью анализа состояния статус- ного регистра или модификации данных в его видеопамяти, а будем только записывать в него инструкции и данные. Такой режим воз- можен и практикуется в случае жестких временных ограничений на время выполнения программы, формирующей изображение на эк- ране дисплея, и при отсутствии дефицита памяти. При этом исполь- зуется всего три команды контроллеров SED (см. табл. 1): • выбор адреса страницы; • выбор адреса столбца; • запись байта данных. Первоначально алгоритм работы с индикатором все же содержал подпрограмму анализа бита состояния BUSY контроллера SED. Так вот, состояние «internal operation», когда контроллер индикатора за- нят, не удалось зафиксировать ни разу, даже при работе управляю- щего микроконтроллера семейства MCS-51 на тактовой частоте 33 МГц. Об этом пойдет речь в следующем разделе. Следовательно, промежуток времени между любыми соседними обращениями MCS- 51 к контроллерам индикатора достаточно большой, и все внутрен- ние операции в SED1520/1521 успевают закончиться. Поэтому тра- тить драгоценное время на анализ состояния сигнала BUSY в нашем случае не стоит. 304
Существует несколько способов формирования массива данных, соответствующего некоторому изображению на экране индикатора (для краткости будем называть такой массив данных одним словом «образ»): • запись образа изображения из памяти программ микроконтрол- лера MCS-51; • запись образа изображения из памяти данных микроконтрол- лера MCS-51; • чтение-модификация-запись данных в видеопамяти индика- тора. Первый способ предполагает наличие в памяти программ гото- вого образа, который переписывается в видеопамять индикатора. Это удобно для заставок, поскольку изображение статическое. Для ожив- ления выводимой на экран индикатора картинки придется иметь несколько образов в памяти программ. Это могут быть образы, со- держащие как полную информацию, так и информацию о части изоб- ражения, поскольку данные в видеопамяти можно менять по частям. Для работы с индикатором понадобится всего одна программа, ко- пирующая образы из кодовой памяти в видеопамять. Способ номер два наиболее универсален. Но он предполагает на- личие внешней памяти данных. В некоторой области памяти данных формируется образ, который затем копируется в видеопамять инди- катора. Поскольку выбранная область памяти данных легко моди- фицируется микроконтроллером, то такой способ наиболее прием- лем для анимирования выводимого изображения. Одна простая программа переписывает сформированный образ в видеопамять ин- дикатора, а вот программ, имеющих доступ к области памяти дан- ных, под названием «образ» может быть несколько. Третий способ хорош тем, что не отбирает ресурсы микроконт- роллера, поскольку все операции по формированию изображения проводятся непосредственно в видеопамяти индикатора. Но это на первый взгляд. На самом деле программа, формирующая таким об- разом изображение, вряд ли получится короткой и простой. Для каждого вновь разрабатываемого приложения всегда можно подобрать комбинацию способов формирования изображения. Ниже приведен текст простой подпрограммы SED, которая пере- писывает образ из кодовой памяти в видеопамять индикатора. Под- программа легко модифицируется для работы с памятью данных. Для этого достаточно заменить команду MOVC на MOVX. Написана программа На ассемблере фирмы «Фитои». .ASEG IRAM,DATA ;Абсолютный сегмент . ORG YYYH ;Адрес во внутренней памяти данных. 305
ADR_COLUMN .DSB 1 ;Номер колонки. ADR. PAGE . DSB 1 ;Номер страницы. NCOL . DSB 1 ;Кол-во обновляемых столбцов. NPAGE .DSB 1 ;Кол-во обновляемых страниц. TNCOL .DSB 1 ; Текущее значение адреса столбца TADR .DSB 1 ;Текущее значение адреса данных. PD .EQU P4 ;Порт данных микроконтроллера. CS1 .EQU P1.1 ;Линия выбора SED1520. CS2 .EQU P1.2 ;Линия выбора SED1521. AO . EQU P1.0 ;Линия управления АО. SWR .EQU P1.4 ;Линия сигнала записи. .RSEG AROM.CODE Перемещаемый сегмент SED: ;Установка сигналов управления. CLR АО ;А0. SETB CS1 ; CS1 SETB CS2 CS2 SETB SWR ; WR. ; Включение дисплея. MOV MOV A,#OAFH P_D,A ;Запись кода команды OnDispI ;в порт микроконтроллера. CLR CS1 Активизация SED1520. CLR CS2 Активизация SED1521. CLR SWR -.Начало сигналла записи SWR. SETB SWR ; Окончание сигнала записи SWR SETB CS1 ;Выключение CS1. SETB CS2 .Выключение CS2. ; Определение переменных. CLR A Адрес столбца MOV ADRCOLUMN.A;имеет значение 0. MOV A,#0B8H ;Это адрес страницы 0 MOV ADR-PAGE,A . ;см. таблицу 1. MOV A, #4 ;Используем все MOV NPAGE,A ; 4 страницы. 306
MOV MOV MOV A,#3DH ; ЗОН соответствует NCOL, А 61 столбцу. DPTR, #PIXEL1 ;Адрес начала таблицы данных PIXEL1. ; Полный цикл обновления данных в буфере SED1520 CLR CALL SETB CS1 Активизируем SED1520 на все время SED1520 выполнения подпрограммы SWD1520. CS1 ;Выключение SED1520. ; Полный цикл обновления данных в буфере SED1521 MOV CLR CALL SETB DPTR,SP1XEL2 ;Адрес начала таблицы данных Pixel2. CS2 Активизируем SED1521 на все время SED1520 выполнения подпрограммы SWD1520. CS2 ; Выключение SED1521. RET ;Выход из программы SED. .RSEG SEDS.CODE SED1520: PUSH PUSH ADR_PAGE Сохранение адреса страницы. NPAGE Сохранение количества страниц. LL1: MOV MOV MOV MOV A, NCOL Постановление кол-ва столбцов TNCOL,А ;для цикла внутри страницы. A, ADR_COLUMN;Востановление начального адреса TADR.A ; столбца для цикла внутри страницы. PAGE: ;Выбор страницы. MOV MOV CLR SETB A,ADR_PAGE ; Запись в порт микроконтроллера P_D,А ;адреса страницы. SWR формирование сигнала записи SWR. SWR ;Окончание сигнала записи SWR. COLUMN: ;Выбор столбца. MOV A.TADR MOV P_D, А ; Запись в порт микроконтроллера ;адреса столбца. 307
CLR SWR SETB SWR формирование сигнала записи SWR. Окончание сигнала записи SWR. WR.O: ; Запись байта данных. SETB АО ; АО = 1 Теперь в контроллеры SED1520/1521 ;можно передавать данные образа изображения. CLR А ; MOVC A,@A+DPTR ;Чтение данных из таблиц кодовой памяти. INC DPTR MOV P_D,A ;Байт данных выставляем на шину данных. CLR SWR ;Формирование сигнала записи SWR. SETB SWR ;Окончание сигнала записи SWR. CLR АО ; АО = О INC TADR формирование адреса следующего столбца. DJNZ TNCOL, COLUMN ;Цикл по столбцам. INC ADR PAGE формирование адреса следующей страницы. DJNZ NPAGE,LL1 ;Цикл по страницам. POP NPAGE ;Восстановление кол-ва страниц. POP ADR PAGE ; Восстановление начального адреса ; страницы. RET : Возврат из подпрограммы SED1520. . RSEG DATE,CODE PIXEL1: ;Образ экрана SED1520. ; Правая половина индикатора PG12232A. ; Адреса столбцов увеличиваются справа налево. ; PAGED, 8 строк в нижней части индикатора. . DCB . DCB . DCB . DCB . DCB . DCB ООН,ООН,ООН,ООН,ООН,ООН ООН,ООН,ООН,ООН,ООН,ООН ООН,ООН,ООН,ООН,ООН,ООН 80Н,80Н,80Н,ООН,ООН,ООН ООН,ООН,ООН,ООН,80Н,ЗОН 80Н,ООН,ООН,ООН,ООН,ООН 308
.DCB ООН,ООН,ООН,ООН,ООН,8ОН .DCB 8ОН.80Н,80Н,ООН,ООН,ООН .DCB ООН,ООН,ООН,ООН,ООН,ООН .DCB ООН,ООН,ООН,ООН,ООН,80Н .DCB 8ОН ;РAGE1 .DCB ООН,ООН,ООН,ООН,ООН,ООН .DCB ООН,ООН,ООН,ООН,ООН,ООН .DCB ООН,ООН,ООН,ООН,ООН,ООН .DCB OFFH,OFFH,OFFH,ОСОН,ОСОН,ОСОН .DCB ОСОН,ОСОН,ОСОН,ОСОН,OFFH,OFFH .DCB OFFH,ООН,ООН,ООН,ОСОН,OFOH .DCB 1СН,OEH,ОС6Н,ОЕЗН,ЗЗН,19Н .DCB ОС9Н,ОС9Н,99Н,13Н,ЗЗН,0Е2Н .DCB 0С6Н,ОСН,38Н,ОЕОН,ООН,ООН .DCB ООН,ООН,ООН,ООН,ООН,OFFH .DCB OFFH ;PAGE2 .DCB ООН,ООН,ООН,ООН,ООН,ООН .DCB ООН,ООН,ООН,ООН,ООН,ООН .DCB ООН,ООН,ООН,ООН,ООН,ООН .DCB OFFH,OFFH,OFFH,ОЗН,ОЗН,ОЗН .DCB ОЗН,ОЗН,ОЗН,ОЗН,OFFH,OFFH .DCB OFFH,ООН,ООН,ООН,01Н,07Н .DCB 1СН,18Н,11Н,ЗЗН,26Н,64Н .DCB 66Н,23Н,31Н,98Н,8СН,ОС7Н .DCB ОЕЗН,ЗОН,1СН,О7Н,ООН,ООН .DCB OFOH,OFOH,ОСОН,ОСОН,ОСОН,OFFH .DCB OFFH ; PAGE3, 8 строк в верхней части индикатора. .DCB ООН,ООН,ООН,ООН,ООН,ООН .DCB ООН,ООН,ООН,ООН,ООН,ООН .DCB ООН,ООН,ООН,ООН,ООН,ООН .DCB О1Н,О1Н,О1Н,ООН,ООН,ООН .DCB ООН,ООН,ООН,ООН,О1Н,О1Н 309
. DCB 01H,ООН, ООН,ООН,ООН,ООН .DCB ООН,ООН,ООН,ООН,ООН,ООН . DCB ООН, О1Н,О1Н,О1Н,ООН,ООН . DCB ООН,ООН,ООН,ООН,ООН,ООН .DCB О1Н,О1Н,О1Н,О1Н,О1Н,О1Н .DCB О1Н PIXEL2: ;Образ экрана SED1521. ;Левая половина индикатора PG12232A. ;Адреса столбцов увеличиваются справа налево. ; PAGED, 8 строк в нижней части индикатора. .DCB 80Н,80Н,ООН,ООН,ООН,ООН .DCB ООН,ООН,ООН,ООН,ООН,ООН . DCB 8ОН,8ОН,80Н,ООН,ООН,ООН . DCB ООН,ООН,ООН,ООН,80Н,80Н . DCB 80Н, ООН, ООН,ООН,ООН,ООН . DCB ООН, ООН,ООН,ООН,ООН,ООН .008 80Н, 80Н,80Н,80Н,80Н, 80Н . DCB ООН,ООН, ООН,ООН,ООН,ООН . DCB ООН,ООН,ООН,ООН,ООН,ООН .DCB ООН,ООН,ООН,ООН,ООН,ООН .DCB ООН ;PAGE1 . DCB OFFH, OFFH,ООН,ООН,ООН,ООН . DCB ООН,ООН,ООН,ООН,ООН,ООН .ОСВ OFFH,OFFH,OFFH,ООН,ООН,80Н . DCB ОСОН, ОЕОН, 70Н, 038Н, OFFH, OFFH . ОСВ OFFH,ООН,ООН,ООН,ООН,ООН .DCB 80Н,ОЕОН, 0F0H.38H, 1СН,ОСН . DCB ОСН, OFFH, OFFH, OFFH, OFFH, ОСН .DCB ОСН,1CH,38H,0F0H,ОЕОН,80H .DCB ООН,ООН,ООН,ООН,ООН,ООН .ОСВ ООН,ООН,ООН,ООН,ООН,ООН .DCB ООН ;PAGE2 310
.DCB OFFH,OFFH,OCOH,OCOH,OCOH,OFOH .DCB OFOH, OOH, OOH, OOH, OOH, OOH .DCB OFFH,OFFH,OFFH,OEH,07H,03H .DCB 01H,OOH,OOH,OOH,OFFH, OFFH .DCB OFFH,OOH,OOH,OOH, OOH, OOH .DCB OFH, 3FH, 7FH, OEOH, OCOH, 80H . DCB 80H, OFFH, OFFH, OFFH, OFFH, 80H .DCB 80H,OCOH,OEOH,O7FH,03FH, OFH .DCB OOH,OOH,OOH,OOH,OOH,OOH .DCB OOH,OOH,OOH,OOH,OOH,OOH .DCB OOH ;PAGE3, 8 строк в верхней части индикатора. .DCB .DCB .DCB .DCB .DCB .DCB .DCB .DCB .DCB .DCB .DCB O1H,O1H,O1H,O1H,O1H,O1H O1H,OOH,OOH,OOH,OOH,OOH O1H,O1H,O1H,OOH,OOH,OOH OOH,OOH,OOH,OOH,O1H,O1H O1H,OOH,OOH,OOH,OOH,OOH OOH,OOH,OOH,OOH,O1H,O1H O1H,07H,07H,07H,07H,O1H O1H,O1H,OOH,OOH,OOH,OOH OOH,OOH,OOH,OOH,OOH,OOH OOH,OOH,OOH,OOH,OOH,OOH OOH Подпрограмма выводит на экран индикатора надпись «Фйтон». Образ изображения находится в таблицах PIXEL'l, PIXEL2. В более подробном описании эта несложная программа вряд ли нуждается, поскольку снабжена подробными комментариями. Тактирование индикатора Тактирование индикатора проще всего осуществлять с помо- щью микроконтроллера MCS-51 со встроенным узлом PWM (ШИМ). В рассматриваемом случае использовался микроконтрол- лер 8ОС552 фирмы Philips. У него имеются две независимые вы- ходные линии, частота и скважность сигналов на которых легко Настраиваются. В описываемом случае одна линия была примене- на для тактирования индикатора. Вторая линия обеспечивала фун- кционирование преобразователя отрицательного напряжения, по- скольку использовался индикатор с расширенным температурным Диапазоном. Частота сигналов на линиях одинакова и зависит от 311
тактовой частоты микроконтроллера. Настраиваются линии ШИМ очень просто: ;Настройка PWM MOV А,#0СН ;Настройка предделителя. MOV PWMP.A MOV A,#7FH ;Определение скважности сигнала. MOV PWM0.A MOV PWM1.A Ассемблер МСА-51 Для того, чтобы понять программу SED, следует ознакомиться с кратким описанием последовательности работы с ассемблером МСА-51. Ассемблер МСА-51 позволяет получить код, пригодный для ис- полнения на любом процессоре, совместимом с Intel 8051 по системе команд. В языке ассемблера каждой инструкции исполняемого кода соот- ветствует мнемоническое обозначение — так называемая ассемблерная мнемоника. Ассемблерные мнемоники разрабатываются фирмой-изго- товителем процессоров и обычно выбираются так, чтобы отражать сущ- ность соответствующих инструкций. Например, мнемоника ADD обо- значает операцию сложения (от addition — сложение (англ.)). Вы можете использовать осмысленные символические имена (идентификаторы) для указания адресов переменных, массивов и адресов перехода вместо их абсолютных значений. Это делает про- грамму более понятной (читаемой) и упрощает ее сопровождение (документирование, тестирование, модификацию). Любая ассемблерная программа может содержать: • описания машинных инструкций (т. е. мнемоники с операндами) • директивы ассемблера, например, директивы определения иден- тификаторов, макроопределения и т. п. • команды управления ассемблером, например, включение и вык- лючение генерации листинга. Кроме директив и команд, поведением ассемблера во время трансляции управляют опции командной строки, указанные при запуске. Полное описание ассемблера находится в пакете Project-51. Мы лишь разъясним некоторые основные понятия, связанные с рассмат- риваемой программой. Технология создания программ Исходные тексты программ на языке ассемблера транслиру- ются с помощью макроассемблера МСА-51, результатом транс- 312
ляции являются файлы в перемещаемом объектном формате МСО. С помощью утилиты обслуживания библиотек MCLIB несколь- ко объектных файлов могут быть объединены в пользовательскую библиотеку (файл формата MCL). Объектные файлы библиотеки, пользовательские и стандартные (т. е. поставляемые в комплекте с кросс-средствами) связываются в единую программу редактором связей (линкером) MCLINK. Резуль- татом могут являться файлы в форматах: • MCE (объектный файл с кодами и отладочной информацией формата Phy ton); • HEX (абсолютный объектный файл в формате Intel HEX); • ZAX (файл с отладочной информацией в формате ZAX). Таким образом, приводимая ниже процедура трансляции несколь- ко сложнее и содержит большее число промежуточных шагов, чем описанная в основной части книги. Вначале написанная вами про- грамма транслируется в файл в объектном формате МСО и только после этого преобразуется линкером в НЕХ-формат, понимаемый программатором. Подобная многоступенчатость позволяет избежать сбора в основном тексте вашей программы всех необходимых для ее функционирования подпрограмм — многие из них, особенно те, ко- торые вы часто используете, могут быть вынесены в так называемые библиотеки, и включаться в вашу программу не вставкой их в текст вашей программы, а выдачей соответствующей команды линкеру. Адресные пространства Как правило, в контроллерах одновременно используется не- сколько различных типов физической памяти: постоянная (ПЗУ), в которой обычно хранится исполняемый код, и оперативная (ОЗУ), предназначенная для размещения переменных, массивов И Т. д. Различные аппаратные конфигурации памяти поддерживаются при помощи концепции адресного пространства. Пользователь мо- жет объявить несколько адресных пространств (например, одно — для ПЗУ, одно — для ОЗУ), причем при этом он может самостоя- тельно задать для этих адресных пространств диапазоны адресов, в том числе и указать разрывы. Затем пользователь может распределить код и данные по адрес- ным пространствам так, как это ему требуется, либо воспользовать- ся установками по умолчанию. Как объявляются адресные пространства Линкер всегда создает нижеприведенные стандартные адресные пространства: 313
Имя адресного пространства Диапазон адресов BIT 000H-0FFH DATA 000H-07FH BDATA 020H-02FH IDATA 000H-07FH SFRS 080H-0FFH XDATA 000H-0FFFFH CODE 000H-0FFFFH Размеры этих адресных пространств можно переопределять при помощи опции линкера -А. Как правило, это бывает нужно только для ID АТА, XDATA, CODE. Другие адресные пространства (при необходимости) объявляются в командной строке линкера той же опцией -А*. При этом для каж- дого адресного пространства указывается атрибут allocation и диапа- зон адресов. Понятие сегмента Сегмент — это область программной памяти или памяти данных, расположенная в некотором адресном пространстве. Каждый сегмент имеет имя, назначенное пользователем, и некоторые атрибуты. Абсолютные и перемещаемые сегменты Тип сегмента (абсолютный или перемещаемый) определяется директивой объявления сегмента .ASEG или .RSEG. Код/данные, размещенные в абсолютном сегменте, привязыва- ются к абсолютным физическим адресам уже в исходном тексте. Имена, определенные в абсолютном сегменте, получают значения, не изменяющиеся в процессе связывания (линкования, т. е. резуль- тата работы линкера). Расположение кода/данных из перемещаемого сегмента на этапе ассемблирования определяется смещением от начала сегмента (точ- нее, от начала части сегмента, находящейся внутри данного модуля). Абсолютные адреса вычисляются в процессе связывания программы после определения размера сегмента и размещения его с конкретно- го физического адреса. Типы сегментов Сегменты типа bit предназначены для резервирования места под битовые объекты (адресуемые при помощи bit addressing mode). В сегментах с allocation bit адреса есть адреса битов. Особенность имен, определенных в сегментах с таким типом состоит в том, что их мож- но использовать только в битовых инструкциях. Отметим, что стар- шая половина адресного пространства BIT резервирована для битов в регистрах специального назначения. 314
Сегменты типа data предназначены для резервирования во встро- енном ОЗУ кристалла места под прямо- и косвенно-адресуемые объек- ты (адресуемые при помощи direct addressing mode и indirect addressing mode). Сегменты типа bdata предназначены для резервирования во встро- енном ОЗУ кристалла места под прямо- и косвенно-адресуемые объек- ты, отдельные биты которых можно будет также адресовать побитно (т. е. при помощи bit addressing mode). Особенность имен, опреде- ленных в сегментах с таким типом — их можно использовать в опе- раторах вычисления адреса бита. Сегменты типа idata предназначены для резервирования во встро- енном ОЗУ кристалла места под косвенно-адресуемые объекты (ад- ресуемые при помощи indirect addressing mode). Сегменты типа xdata предназначены для работы с внешней па- мятью данных (т. е. с той памятью, обращение к которой возможно при помощи инструкций MOVX). В этих сегментах можно резервиро- вать место для поддержки ОЗУ и внешней периферии и инициали- зировать память данными для поддержки ПЗУ. Сегменты типа code предназначены для работы с программной памятью. В этих сегментах можно использовать мнемоники машин- ных инструкций и инициализировать память данными для генера- ции таблиц, к которых можно потом обращаться при помощи инст- рукций MOVC. Сегменты типа sfrs* ** резервированы для определения регист- ров спецназначения (они адресуются только при помощи direct addressing mode). Здесь можно использовать только абсолютные сегменты. Особенность имен, определенных в сегментах с таким типом заключается в том, что их можно использовать в операто- рах вычисления адреса бита (линкер проверяет, чтобы адрес бай- та, для которого вычисляется адрес бита, делился бы на 8 без ос- татка). Кроме того, такие имена нельзя использовать нигде, кроме как в машинных инструкциях с прямой адресацией (какой смысл манипулировать с адресом объекта, который нельзя адресовать косвенно?). * «Допустимо ли банкирование — по» означает, что нельзя создавать адресные пространства с именем, отличным от имени стандартного, т. е. фактически можно только изменять размер стандартного адресного пространства. ** Если вы используете определения регистров спецназначения из комплекта поставки МСА-51, то адресное пространство SFRS и сегменты с allocation sfrs вам никогда не понадобятся непосредственно. 315
Директивы ассемблера .PMODULE, .LMODULE начало программного/библиотечното модуля .ENDMOD, .END конец модуля . INCLUDE включение файла в текст .ASEG, . RSEG, .ENDSEG выбор/объявление абсолютного/перемещаемого сегмента .FUNG. . ENDF объявление подпрограммы .DEFINE .EQU, .SET, = .LABELx . DSx . DCx .PUBLIC .EXTRNx .EXTRNF .USING объявление имени для всех модулей в файле объявление имени для текущего модуля объявление типизированной метки определение типизированной переменной инициализация памяти типизированными данными объявление глобального имени объявление типизированного внешнего имени объявление внешней подпрограммы указать, какой банк регистров используется .LNKCMD передача параметров линкеру .WARNING, .ERROR, .MESSAGE вывод сообщений на консоль . ORG установка программного счетчика .ALIGN выравнивание значения программного счетчика .BYTE,.BIT .TYPE задание operand type для имени задание типа для имени .EXTRN объявление внешнего нетипизированного имени . LM0DULE2 начало низкоприоритетного библиотечного модуля .DS резервирование указанного числа байт- . DB1 инициализация памяти по 1 байту . DB2, . DB4 . OBJREC инициализация памяти по 2/4 байта прямой вывод данных в объектный файл Выделенная директива .DSX определяет переменные и массивы за- данного типа (резервирование памяти без задания начального значения). name .DSB [expression] ;беззнаковое значение, 8 бит name .DSW [expression] ;беззнаковое значение, 16 бит name .DSD [expression] беззнаковое значение, 32 бит name .DSC [expression] ;знаковое значение, 8 бит name .DS I [expression] ; знаковое значение, 16 бит name .DSL [expression] ;знаковое значение, 32 бит name . DSR [expression] ; плавающее значение, 32 бит name .DST [expression] ; битовое значение 316
Project-51 Все действия, связанные с написанием, трансляцией и отладкой программ проводились с помощью профессионального интегриро- ванного пакета Project-51. Для отладки программы использовался внутрисхемный эмулятор Р1СЕ-51 фирмы «Фитон». Интегрированность пакета Project-51 проявляется в том, что все этапы разработки связываются в одно целое. Самые трудоемкие эта- пы, а именно компиляция/линковка с диагностикой и исправлением ошибок, максимально упрощены. Project самостоятельно следит за изменениями, которые вы вно- сите в исходные тексты своих программ. Например, исправив ошибку в исходном тексте, вы можете нажатием одной кнопки «выполнить программу до курсора»: заставить менеджер проектов перетранслиро- вать изменившиеся модули, загрузить полученную программу в па- мять отладчика и запустить ее до указанной строки. Переход от отлад- ки к редактированию происходит так же прозрачно и быстро. Пакет Project-51 полностью освобождает вас от всевозможных Б АТ-файлов, зачастую используемых в DOS-приложениях для запус- ка компиляции и линковки. Опции ассемблера, линкера, библиоте- каря также помнить совсем не обязательно, для этого есть соответ- ствующий диалог, который называется «Кросс-средства» (рис. 1). Выбор опции кросс-средства с последующим нажатием кнопки «Редактировать» обеспечивает переход в диалог опций для ассембле- Кросс-средства r.-'бср4J.а; ^-средств |Ксггвпо“)» < IAP. Systems 4* r" IAEA Systems 5 2Н« Keil Softw&'C v с, < /-KertSdMerev ИИ » Процессор | Ламято ] Librarian Рис. 1. Диалог «Кросс-средства» 317
Рис. 2. Опции «Библиотекаря» ра (рис. 3), линкера (рис. 4) или библиотекаря (рис. 2). При уста- новке пакета Project-51 опции кросс-средств по умолчанию на- страиваются так, чтобы макси- мально быстро начать работу с новым проектом. Рис. 3. Диалог «Опции ассемблера» Рис. 4. Диалог «Опции линкера; 318
Достаточно нажать кнопку «Справка» или клавишу «F1», чтобы прочитать описание используемого диалога. Наиболее целесообразным способом изучения пакета, очевидно является такой: с сайта фирмы «Фитон» скачивается демо-версия Project-51, которая позволяет пройти все этапы разработки от созда- ния проекта до получения отлаженного кода программы. Пользователь, эксплуатирующий современный пакет Project ос- вобождается от рутинных операций связанных с манипулированием файлами проекта и результата компиляции. Все сделано для того, чтобы максимально сконцентрироваться на решении главных задач, связанных с отладкой программы и аппаратуры. Если в диалоге «Кросс-средства» выбрать закладку «Каталоги», то одноименный ди- алог однозначно определяет рабочие директории проекта и кросс- средств (см. рис. 5). В результате работы с пакетом вы получаете отлаженный код, ко- торый находится в памяти данных микроконтроллера и который можно сохранить в виде файла нужного формата. Для этого следует воспользоваться диалогом «Запись файла на диск» (см. рис. 6). Основой, обеспечивающей интегрированную поддержку состав- ных частей Project на любом этапе отладки, несомненно является ме- неджер проектов. Про него можно сказать словами иранского поэта Фердоусси: «он везде и нигде». На менеджер проектов нельзя посмот- реть (нет такого окна), но любые манипуляции в среде Project так Кросс-средства Поиск компиля-ора 5,гхс-г.мля директария'наоР.язо’лльнт) S: йб-зпр. j % °^°р- I fg: Обзор.. ✓ OK I X Otm<w> j ? Справка Рис. 5. Диалог «Кросс-средства; 319
Записать файл на диск i?|x| И- 'я флм па I j С-?Р> ?т г.фгрлняемого фййг* «&теядв1 Г Расширенный Intel HEX =' Цэаичнай ~ Д<1сасс2мбл&р £{«мп е ъиде хеке га Адресо со’ф'эня^мой области Начальный |6 3 •ай' |о > »/ ПК j X C'TMPMft j •? Crp3fK0~j Рис. 6. Диалог «Запись файла на диск» или иначе связаны с ним. И начинается работа в интегрированной среде именно с создания проекта. Основным компонентом, содержащим всю необходимую для раз работки информацию, является проект. Окно проекта отображает со- IW Проект: LCD Asm Sources ad 1520. asm | ~felLibraries and Object Files - jfl Listings (3 sedl520.LST - Щ Map fl LCD.MAP Рис. 7. Окно «Проект» держимое текущего проекта (рис. 7). Любой файл в окне «Проект» доступен для редактирования. Project располагает встроенным редактором, поставляемым с большинством востребованных функций, таких как работа с бло- ками, поиск, замена, контекстное выделение текста. Но разработчик может использовать и внешний редактор. Тогда файлы просто добавляются в окно проекта (кноп- ка «Add»). Sed 1520.1st — это файл листинга, текст которого приведен в од- ном из последующих разделов. Отладка программы с помощью внутрисхемного эмулятора Поскольку программа не очень сложна, отладка в основном све- лась к проверке целесообразности использования бита готовности BUSY контроллеров SED. В паспорте на индикатор нет четкого опи- сания особенностей работы контроллеров SED в плане формирова- ния внутреннего слова состояния и связанных с этим временных зат- рат. Применение внутрисхемного эмулятора позволяет легко справиться с этой проблемой. 320
Согласно документации на SED-контроллеры любые действия, связанные с записью в контроллеры индикатора команд и данных, должны осуществляться после проверки состояния бита готовно- сти BUSY. Если этот бит статусного регистра контроллера инди- катора установлен, то контроллер выполняет внутренние опера- ции и недоступен. Бит придется проверять еще и еще, до тех пор, пока BUSY не будет сброшен внутренней логикой. Только тогда внешний по отношению к индикатору процессор может выпол- нить действие, например, по передаче байта данных в видеопамять. Бит готовности — это старший бит в статусном регистре контрол- леров SED1520/1521 (табл. 1). Для анализа BUSY в представленную выше программу следует добавить подпрограмму RDBUSY: 3RD .EQU Р1.3 ;Линия сигнала чтения. Остановка сигналов управления. SETB 3RD ; RD =1 ;Линия сигнала чтения. Подпрограмма чтения бита готовности. .RSEG BUS,CODE RDBUSY: MOV A,#OFFH MOV P D,A ; Настройка порта данных на ввод. CLR SRD Перевод линии сигнала «чтение» в активное состояние. MOV A, P_D ; Чтение статусного регистра. SETB SRD ; Окончание сигнала RD. RLC А ;С = бит готовности. JC RDBUSY ;Цикл пока бит установлен. RET Теперь любое обращение к SED контроллерам (выбор страницы или столбца, запись байта данных) должно предваряться выполне- нием подпрограммы RDBUSY, выход из которой возможен только при сброшенном бите готовности. Текст программы должен выгля- деть так: PAGE: ;Выбор страницы. CALL RDBUSY 321
COLUMN: ;Выбор столбца. CALL RDBUSY WR_D: ;Запись байта данных, CALL RDBUSY Рис. 8. Схема сборки эмулятора Приступим к отладке. Прежде чем начать работу с эмулятором, его необходимо собрать. Конструктивно эмулятор PICE состоит из трех плат: основной платы MR1, сменной платы PR1 (она называется «под») с эмулирую- щим процессором МЕ-ХХХ и сменной платы AR1 с эмуляционной головкой. Схема сборки эмулятора представлена на рис. 8. Основная плата всегда располагает- ся сверху. На этой плате находятся разъемы для подключения кабелей ка- нала RS-232 и трассировщика. К разъе- мам на нижней стороне основной пла- ты пристыковывается плата PR1. На плате PR1 установлен разъем питания эмулятора, куда со штатного блока пи- тания подается напряжение +5 В. К разъемам на нижней стороне пла- ты PR1 присоединяется плата эмуляци- онной головки AR 1. Если вы работаеге с без подключения к отлаживаемому уст- ройству, то плату AR1 можно не устанавливать. Затем необходимо подключить эмулятор к свободному последо- вательному порту вашего компьютера и подать на плату эмулятора питание. Соединительный кабель для последовательного канала и блок питания входят в комплект поставки. До ознакомления с аппаратурой и программным обеспечени- ем эмулятора не рекомендуется вставлять его в отлаживаемый макет. Запустите программу поддержки эмулятора с помощью ярлыка с надписью «PICE-ХХ In-Circuit Emulator» (пользователи полного па- кета Project-XX/ESA могут сначала запустить программу «Phyton Project-ХХ», которая предложит выбрать, какой отладчик запустить — симулятор или эмулятор). автономно, т. е. 322
На экране появится диалог «Параметры связи». В диалоге вы дол- жны задать параметры последовательного канала связи с эмулятором. • Последовательный-порт Выберите номер последовательного порта, к которому вы под- ключили эмулятор. Рекомендуется подключать мышь к порту СОМ1, а эмулятор — к порту COM2. • Скорость связи Здесь осуществляется выбор скорости обмена по последова- тельному каналу. Эмулятор поддерживает скорости обмена до 115 кбод и мы рекомендуем устанавливать именно это значение скорости. Если по каким-либо причинам связь на 115 кбод не устанавли- вается, сбросьте на несколько секунд питание эмулятора и попы- тайтесь установить более низкую скорость. Понижение скорости также имеет смысл при возникновении канальных ошибок при ра- боте эмулятора. • Кнопка «Demo» Нажатие этой кнопки запускает программную оболочку эмуля- тора в демонстрационном режиме. Подключать эмулятор при этом не требуется. Демонстрационный режим позволяет ознакомиться с эмулятором, не имея его аппаратной части. Если после того, как вы нажали кнопку «ОК», программа поддер- жки не смогла установить связь с эмулятором, то выдается сообще- ние «Установить связь не удалось», и вы возвращаетесь в диалог вы- бора параметров связи. Если связь с эмулятором установлена успешно, то на экран вы- дается диалог, в котором можно задать конфигурацию аппаратуры эмулятора. Когда вы подтвердите правильность конфигурации на- жатием кнопки «Ок», эмулятор перейдет к выполнению начальных тестов и инициализации своей аппаратуры. Процесс тестирования отображается на экране. По окончании тестов открывается главное окно, и вам предлагается выбрать, какой из демонстрационных примеров загрузить. Если вы не хотите, чтобы это меню появлялось на экране при последующих запусках эмулятора, выберите в нем пункт «Never show this menu on start-up». После загрузки примера вы можете самостоя- тельно исследовать возможности эмулятора, перемещаясь по меню и диалогам. Каждое окно, меню и диалог имеют собственную «страничку» в справочной информации, которая вызывается клавишей «F1». Следующие шаги связаны с работой в интегрированной среде Project, а именно — с оболочкой эмулятора, где создадим проект. В 323
диалоге «Кросс-средства» выберем ассемблер МСА-51 и наберем во встроенном редакторе текст программы SED. Любая попытка выполнить программу по шагам или запустить ее на непрерывное выполнение приведет к компиляции исходного текста проекта. Ошибки компиляции выводятся в специальное окно сообщений. Программная оболочка эмулятора имеет множество окон просмотра, выводить которые на экран следует по мере необходимо- сти. На рис. 9 представлена конфигурация проекта, включающая минимальный набор окон необходимых для работы с проектом. Перед выполнением откомпилированной без ошибок программы осуществим сброс микроконтроллера. Это можно сделать с помощью соответствующей кнопки, либо установив курсор на первую команду и воспользовавшись кнопкой «NEW РС» локального меню окна ис- ходного текста, установим новое значение счетчика команд. Окно Кнопки Значения Окно выполнения программы 9х£0 SFR unsigned char (D:00E0) ® Переменные Puau*iQp Г1| исходного текста текущих переменных регистров CPU P*t___0b SFR unsigned char (D-00CO) T—111TH jiiiM DPTR 0 SFR unsigned int (0:0082) }рмкиОг:ттгиоа Конфигурация 300 STAR A--0XE0] P1=0xFF SETB SNR ined bgte (D:OOO0) 0 0 CLR CLR SETB SETB HOU HOU HOU HOU PWMP.A A,«7FH РУН0,A РУМ1.R PI .5 AO CS1 CS2 byte byte byte bqte A:0xE0 РЫМР--0, Д=0хЕ8 PWM0-0, PWM1=0, TADR NCOL NPAGE NCOL ADR.PAGE RDM ’WRM (0:0005) (0:0002) (0:0003) (0:0002) (0:0001) ЙЕАг0 ?jA»0xE0 JsP=0xE0 A:0xEffi AsQxEO Установка значения счетчика команд unsigned byte unsigned unsigned unsigned unsianed j-ч | vsdiy1i 0 isetHWO asm (ЭО.П jQnpemn Bwn nine; Last: [Freq: S.00 US 2.00 US 12000 kHz DPTR = iACC = в •SP :Р$Ы = 00000000 0000 E0 00 = E0 В подпрограмме RDBUSY сделаем возврат по команде JC не на метку RDBUSY, которая является основной точкой входа, а на мет- ку RDB, после которой 'поставим только одну команду N0Р (рис. 1). Теперь достаточно установить на команду NOP безусловную точку останова, чтобы отследить состояние бита готовности. Если про- изойдет хоть один останов на NOP (а переход сюда возможен толь- ко когда бит BUSY установлен), то программу обслуживания ин- дикатора следует использовать с подпрограммой анализа бита готовности RDBUSY. В противном случае эта подпрограмма не нужна. Примечание. Безусловные точки останова — это самый простой тип точек останова из применяемых в инструментальных отладоч- ных средствах. Такие точки срабатывают, когда выполняющаяся в непрерывном режиме отлаживаемая программа достигает адреса точ- ки. При этом программа останавливается, а команда, находящаяся по адресу точки останова, не выполняется. Количество одновремен- но установленных точек в эмуляторе PICE-51 не ограничено. Уста- навливать и снимать безусловные точки останова можно нескольки- ми способами. Самый простой и удобный способ — воспользоваться командой локального меню или кнопкой «Break» на линейке управ- ления окна «Исходный текст». Точка ставится/снимается по адресу, соответствующему позиции каретки в окне. Строка, на которой ус- тановлена безусловная точка останова, выделяется красным цветом (рис. 10). Возможен и другой вариант анализа бита готовности, связанный с использованием внешних входов трассировщика и процессора то- чек останова внутрисхемного эмулятора PICE-51. Но это несколько сложнее. Итак, запускаем программу на непрерывное выполнение. Изоб- ражение слова «Фитон» на экране индикатора появляется, а на ука- sedl52ttasm (142.14) •In‘nj Origin ]hnwPC| hunt «.! j fH$4d I BrbWr 1 > ill ; Ж Трассировщик I Wd .PftM j.Seatebr _Fraae Ттяе________E_xt 7. 0_ Cycle Addr Opcode Instrucrion/Source 2 -IT cy 00000000 Instr 001E F0 HOUX SOPTR.A HOU . 'iwiiH iniiMiHH и i j ж--------------------------------- __:__________________________________ POD i-’CfJ-S* Г'рлйсчи 1Й- ГЗУ Nixie । ьр ст г-у »я :сри. Чел ic :а Vi СОu POt'KGCfe гЦЙПуст] с | ЦуМстпесЙ. ] | | ф Plycr УЗ. I РЧСГ-Ч 1 - RDBUSV: .RSEG BUS.CODE MOU мои CLR MOU SETB RLC JC re|t Рис. 9. Конфигурация объекта 324 A.ttOFFH P_D.A SRD A.P_D SRD '<>peZ4;. A RDB Рис. 10. Окно «Исходный текст» с установленной точкой останова A=e A=e RD=1 ft = 0 325
занную точку останова мы не попадаем. Похоже, что отрезок време ни Tbusy от записи информации в контроллеры индикатора до счи- тывания бита готовности достаточно большой, и все процессы внут- ри контроллеров индикатора успевают завершиться. Попробуем уменьшить Tbusy, увеличив для этого тактовую частоту микроконт- роллера. Сделать это очень просто, поскольку эмулятор PICE-51 имеет синтезатор частоты. Изменение частоты тактирования проводится из диалога «Конфигурация аппаратуры» (см. рис. 11). Так вот, вплоть до максимальной частоты 33 МГц останов на RDB NOP не происходит. Отсюда следует сделать вывод о том, что анализ бита готовности при работе с индикатором не нужен. Надо пони- мать, что речь идет о нашем, частном случае подключения индика- тора к микроконтроллеру семейства MCS-51. Для микроконтролле- ров семейства MCS-51 с укороченным циклом команд следует провести отдельное тестирование. ^Конфигурация аппаратуры эмулятора га Конфигурация | Банкирсаание J POD POD-S>1-5',2 Процессор § Опции - - ПЗУ не кристалле Г*Разрешить сигнал R$»T с платы пользователя Г Программа пользователя используетфЛТ Г" Разрешить чтение буфера трассировки “находу*, ••Тактовый генератор На эмуляторе.частота |1 ?ПОО кГц • ......................г-., Измеренная частота 12091 кГц Bsjpon РЗ 6 используется как Управляющий сигналом ЗДйе* • -• м«... ............ • «. .4 Вывод РЗ.? используется как Управляющий сигналом “Bead’ Ножка ввода/вывода общего назначения OK | X 0 гмена j Ъ Справка Рис. 11. Диалог «Конфигурация аппаратуры эмулятора» ВРЕМЯ ВЫПОЛНЕНИЯ ПРОГРАММЫ Время выполнения программы SED с подпрограммой анализа бита готовности RDBUSY составляет 20128 мкс. Без этой подпрог- раммы время выполнения 8446 мкс. Тестирование проводилось при тактовой частоте 12 МГц. Время выполнения фиксируется в одно- именном окне эмулятора (см. рис 12). 326
В предыдущем разделе мы говорили об отрезке времени Tbusy между процессом записи информации в контроллеры ин- дикатора и чтением бита готов- ности. Такой временной отрезок © Время выполнения про .. Reset I Freq [ Time-. 8,439.30 us Last: 8,439.30 us Freq: 12001 kHz Рис. 12. Окно «Время выполнения про- граммы» легко посчитать, зная тактовую частоту микроконтроллера и ко- личество тактов, затрачиваемых на каждую команду. Но можно сэкономить время, если воспользовать- ся окном эмулятора «Время выполнения программы». Для этого поставим безусловную точку останова на любую коман- ду SETB SWR. Данная команда встречается в тексте программы три раза: запись номера страницы, запись номера столбца и запись байта данных. Всегда сразу перед следующей процедурой обращения к кон- троллерам индикатора после окончания сигнала записи по команде SETB SWR, следует вызов подпрограммы RDBUSY. В этой подпрог- рамме тоже поставим безусловную точку останова на команду SETB SRD. После сброса процессора запустим программу на непрерывное выполнение. Практически незамедлительно произойдет останов на первой безусловной точке останова, при этом команда SETB SWR вы- полнена не будет. Цвет выделения данной строки изменится с красно- го на желтый. Последующий запуск программы до второй безусловной точки останова обеспечит выполнение интересующего нас участка програм- мы от окончания сигнала записи по команде SETB SWR до чтения статусного регистра MOV A,P_D. В строке Last окна «Время выпол- нения программы» указывается время выполнения программы пос- ле последнего останова, и это время составляет 6 мкс при тактовой частоте 12 МГц. При тактовой частоте 33 МГц Tbusy = 2,2 мкс. Трассировка внешних сигналов и временные диаграммы Программа SED, управляющая работой ЖК-индикатора PG12232 на основе контроллеров SED1520/1521, по сути формирует на линиях микроконтроллера сигналы CS1, CS2, WR. Проконтролировать дан- ные сигналы можно с помощью осциллографа, запустив программу на непрерывное выполнение. Современный эмулятор PICE-51, с по- мощью которого проводилась отладка программы, способен предос- тавить пользователю сервис и в области анализа внешних, по отноше- нию к эмулируемому микроконтроллеру, цифровых сигналов. Помимо выводов эмулируемого микроконтроллера эмулятор имеет восемь цифровых входов, каждый из которых может быть распаян в нужное 327
место схемы. Состояние восьми внешних сигналов фиксируется в ап- паратном буфере трассировщика внутрисхемного эмулятора. Под словом «трассировщик» скрывается серьезный механизм, со- держащий аппаратную и программную часть, основная задача кото- рого сводится к сохранению истории состояний шин адреса, данных, некоторых сигналов аппаратуры эмулятора в привязке к циклам вы- полнения команд микроконтроллером. Аппаратный буфер, реализованный на основе ОЗУ эмулятора (256 кбайт), хранит состояния сигналов в некотором внутреннем фор- мате эмулятора. Одна запись, называемая фреймом, имеет разрядность в 128 бит и сохраняется на каждом цикле микроконтроллера. Объем буфера позволяет иметь под рукой информацию о 16000 фреймов. Выполняя отлаживаемую программу в реальном времени до то- чек останова, всегда можно заглянуть в буфер трассировщика, для этого есть специальное окно «Трассировщик» (рис. 13), и доскональ- но сравнить состояние реальных сигналов на исследуемый момент времени с теоретическим представлением о том, как должна функ- ционировать система. При выполнении программы в режиме реаль- ного времени фреймы записываются последовательно в память трас- сировочного буфера. При переполнении буфера новый фрейм записывается на место самого старого фрейма. Окно «Трассировщик» отображает содержимое буфера аппарат- ного трассировщика. Информация по одному фрейму отображается в одной строке посредством набора полей. Каждое поле имеет свое имя и свой уникальный способ отображения информации. Одно- именные поля в окне трассировщика располагаются друг под другом и образуют колонки. В верхней части окна располагаются заголовки колонок, одновременно являющиеся сокращенными именами соот- ветствующих полей. ЕхЮ. Активизация CS1 Ext1. Активизация CS2 Ext2. Окончание SWR Frame Time Ех\ 7. . 9 Cqcle >radr Opcode In&tj; M<fion/Source d -27 -162 су 0СО0\11 Instr/ O02O C291 91 (90.1) CLR CS1 A ; -26 -25 -156 су -150 су 00eee\i 0000011В Opepdnd jXtr 0021 0022 ,>^2 CLR 92 (90.2) CLR CS2 ; -24 -23 -144 су -138 су 00000110/ 00000196 Operand Instf-x* *^024 92 С2Э4 CLR 94 (99.4) CLR SWR : -22 : -21 -132 су -126 су 00000100 00000002»/ Oppr^nd <fnstr 0025 0026 94 0294 SETB 94 (90.4) SETB SWR j -20 1 -19 -120 су -114 су ОООООвбо 09001100 Operand Instr ©027 0028 94 0291 SETB 91 (90.1) SETB CS1 i -18 ; -17 ) -16 i -15 dJ "108 су -102 су -96 су -90 су 00001100 00001101 00001101 ©0011111 Operand Instr Operand Instr 0029 002A 0028 002C 91 0292 92 E4 SETB CLR 92 (90.2) A SETB CLR CS2 Рис. 13. Окно «Трассировщик» 328
Иногда у пользователей наблюдается некоторое недоумение по поводу восьми внешних сигналов «ЕХТ 7..О». Оно связано с тем, что эмулятор, помимо выводов, так или иначе связанных с порта- ми микроконтроллера, работает еще с восемью внешними сигна- лами, что непривычно, но очень удобно. Такую возможность надо рассматривать как наличие встроенного логического анализатора. Восемь цифровых сигналов с любых линий отлаживаемой платы зачастую способны пролить свет на схемотехнические ошибки, временные неувязки и проблемы в монтаже. Таким образом, ввод и сохранение в трассировочном буфере внешних логических со- стояний обеспечивает дополнительный сервис при работе с эму- лятором. Подсоединим линию ExtO эмулятора к порту Р 1.1 микроконтрол- лера— это сигнал CS1 для8ЕП1520. ЕХТ1 подключимк Pl.2 (CS2), и к ЕХТ2 подсоединим сигнал записи SWR, обеспечиваемый портом Р1.4. После выполнения некоторой части программы по шагам или до точки останова заглянем в аппаратный буфер трассировщика с помощью окна «Трассировщик». В окне легко найти, например по мнемоникам команд, то место, где активизируются оба сигнала CS и происходит запись команды во внутренние контроллеры индикато- ра с целью его включения (рис. 13). Столбец Ext 7..0 окна трассировщика показывает состояние ин- тересующих нас сигналов. Более наглядное представление о формируемых программой SED временных диаграммах можно получить с помощью окна «Временные диаграммы» (рис. 14). Это окно предназначено для графического отображения уровней сигнала на внешних входах трассировщика. Информация для отображения берется из трас- сировочного буфера (буфер трассировки отображается в окне трас- сировщика). Окно разделено на три части. В левой части отобра- жаются «имена» сигналов. Вы можете изменить имя для любого сигнала с помощью команды локального меню «Изменить имя сигнала». В двух других частях окна отображаются собственно диаграммы. Масштаб сжатия можно устанавливать отдельно для правой и левой Рис. 14. Временные диаграммы сигналов управления 329
панелей отображения. Вертикальная красная полоса обозначает «теку- щий» фрейм. К этому фрейму привязана остальная информация окна. Текущий фрейм всегда виден в обоих панелях окна, а правая панель всегда отображает участок диаграммы вокруг текущего фрейма. В ле- вой панели этот участок выделен вертикальными пунктирными ли- ниями. Таким образом, в левой панели Вы можете просматривать бу- фер с большим сжатием по времени, а правая панель может работать как «лупа», показывая участок диаграммы возле текущего фрейма. Пример 2. Сопряжение виртуальной модели индикатора с логической моделью процессора Программный отладчик-симулятор PDS-51 фирмы «Фитон» уме- ет выполнять так называемые файлы сценария (ФС). Основная цель использования ФС — создание моделей внешней по отношению к про- цессору среды. С помощью ФС можно, например, моделировать на- пряжение на входе АЦП, сигналы на цифровых входах и т. п., а также моделировать устройства ввода и отображения информации, напри- мер, графический ЖК-индикатор PG12232. В комплекте PDS-51 по ставляются несколько примеров ФС, которые вы можете легко моди фицировать для собственной задачи. Чтобы освоить моделирование внешней среды, вам придется при- ложить определенные усилия — по крайней мере, прочитать соответ- ствующий материал в электронном справочнике симулятора PDS-51. Если вы знаете язык Си, то это сильно упростит задачу. Отлаженную с помощью эмулятора программу SED далее легко использовать с PDS-51. Программа небольшая, и ее запросто можно применять в приложениях с объемом кода до 2К. Такие приложения «живут» даже в демо-версии симулятора PDS-51. Текст модели индикатора для PDS-51 Модель ЖК-индикатора не поддерживает режим чтение-моди- фикация-запись, и в ней нет статусного регистра с битом готовнос- ти, не нужна тактовая частота. Модель индикатора PG122*32 состоит из трех файлов: Sedl 520.cmd; Lcd_pl.cmd; Lcd_defs.h — выполнение программы SED совместно с файлами сценария обеспечивает вывод названия фир- „ ~ ’ мы «Фитон» на виртуальный инди- (Т) Ы ТЙЙ ц катор (рис-15)- I I Mix' I I SED1520.cmd — этот файл сце- — —---------------------нария содержит функции, выполня- Рис. 15. Виртуальный индикатор ющие отображение индикатора в 330
специальном окне отладчика, а также часть модели индикатора, от- ветственную за сигналы конфигурации внутренних контроллеров ин- дикатора. /// SED1520 LCD Indicator ttincIude <system.h> #incIude <lcd_defs.h> uchar LeftHaIf [244]; uchar Ri ghtHaIf[244]; ulong WindowHandle; uint CurPage; uint CurColumn; /*+ DrawColumn ° * / void DrawCo I umn(u i nt ha I f_number, uintpage, uint column) { uint byte_index = page * COLUMNS-IN_PAGE + column; uchar byte = LeftHa If [byte-index]; if (half_number == 1) byte = RightHaIf[byte_index]; uint x = (half_number * COLUMNS-IN_PAGE + column) * SCALE; uint у = page * 8 * SCALE; uint i; uchar mask = 0x80; for (I = 0; i < 8; i++) { ulong color = BACKGROUND_COLOR; if (byte & mask) color = PIXEL_COLOR; SelectBrush(WindowHandle, color); Fi I IRect(WindowHandle, x, y, x + SCALE, y + SCALE); mask »= 1; у += SCALE; } } /*+ DrawPage ° */ 331
void DrawPage(uint half.number, uint page) { ui nt column; for (column = 0; column < COLUMNS.IN.PAGE; column++) DrawCol umn(haIf.number, page, column); } /*+ DrawHalf ° void DrawHaIf(uI nt half_number) { uint page; for (page = 0; page < NUM.PAGES; page++) DrawPage(haIf_number, page); } /*+ DrawLCD 0 void DrawLCD() { DrawHalf(O); DrawHaIf(1); UpdateWIndow(W i ndowHandIe); } /*+ InitLCDWindow ° void InitLCDWindow(char titIe[]) { WindowHandle = OpenllserWindow(title); SetBkCoI оr(WIndowHand I e, BACKGROUND.COLOR); uint width = COLUMNS.IN.PAGE * 2 * SCALE; uint height = NUM.PAGES * 8 * SCALE; SetWindowSize(WindowHandle, width, height); void main() { TerminateAlIScri pts(); ExecScri pt(«LCD_P1»); lni'tLCDWindow(«SED1520 LCD Indicator»); DrawLCDO; uint Pt.addr = AddrExpr(<<P1»); uint P2.addr = AddrExpr(«P4»); 332
while (1) { WaitMemoryAccess(P2_addr, AS_DATA, 1, MA_WRITE); uchar Control = GetByte(P1_addr, AS_DATA); uchar Data = GetByte(P2_addr, AS_DATA); it ((Control & AO) == 0) { // Configuration if ((Data & OxFC) == 0xB8) // Set page address CurPage = NUM_PAGES - (Data & 3) - 1; if ((Data & 0x80) == 0) // Set column address CurColumn = COLUMNS.IN_PAGE - Data - 1; } } } Lcd_p1.cmd Этот файл сценария отслеживает запись программой данных в видеопамять индикатора и вызывает функцию отображения столбца: #inolude <system.h> # include <lcd_defs.h> void main() { //uint Pl.addr = AddrExpr(«RAM_P1»); //uint P2_addr = AddrExpr(«RAM_P4»); uint P1_addr = AddrExpr(«P1»); uint P2__addr = AddrExpr(«P4»); uchar Last_WR; while (1) { WaitMemoryAccess(P1_addr, AS_DATA, 1, MA.WRITE); uchar Control = GetByte(P1_addr, AS.DATA); uchar Data = GetByte(P2_addr, AS_DATA); if ((Control & AO) != 0) { 333
i f (Last_WR == 0 && (Control & WR) I = 0) // WR Front { //printf(«Write data: %02X», Data); uint byte_index = CurPage * COLUMNS J N_PAGE + if ((Control & CS1) == 0) { RightHaIf[byte,index] = Data; DrawColumn(1, CurPage, CurColumn); } if ((Control & CS2) == 0) { LeftHaIf[byte,index] = Data; DrawColumn(0, CurPage, CurColumn); } } > Last_WR = Control & WR; Lcd,defs.h Объявления констант, переменных и функций, необходимые обо? им файлам сценария для реализации модели индикатора: «define uchar unsigned char «define uint unsigned I nt «define ulong unsigned long «define AO ObOOOOOOOt «define CS1 ObOOOOOOlO «define CS2 ОЬОООООЮО «define WR ОЬОООЮООО #define NUM_PAGES 4 «define COLUMNS,IN_PAGE 61 «define SCALE 4 «define BACKGROUND-COLOR OxEFEFAF «define PIXEL.COLOR Ox1F1F1F extern uchar LeftHalfE]; extern uchar RightHalff]; 334
extern u i nt CurPage; extern ui nt CurColumn; void DrawLCD(); void DrawColumn(uint half_number, uint page, uint column); Для создания и редактирования текстов моделей внешних устройств можно использовать встроенный редактор симулятора PDS-51, либо любой другой, внешний по отношению к пакету Project-51 редактор. Файлы моделей внешней среды нужно отлаживать примерно также, как прикладные программы с помощью окон «Исходный текст» и «Пере- менные», т. е. выполнять модели по шагам и «до курсора», ставить точ- ки останова, просматривать значения переменных и т.п. Для отладки по исходному тексту предназначено окно «Исходного Текст» файла сцена- рия. Это окно открывается автоматически, если при запуске модели че- рез меню главного окна в диалоге запуска файла установить опцию «От- лаживать».. Рассматриваемая программа поддержки ЖК матрицы совместно с файлами модели индикатора функционирует без ограничений на демонстрационной версии симулятора PDS-51 из пакета Project-51. Скачать такую версию можно с сайта фирмы «Фитон»: http://www.phyton.ru Файлы модели индикатора (Sedl520.cmd, Lcd_pl.cmd, Lcd_defs.h) следует поместить в системную директорию PDS-51. Тогда в меню «Пользователь» симулятора появится строка «SED1520 LCD indicator». Выбор этой строки приведет к запуску модели индикатора. Пример работы с симулятором Модель индикатора, текст которой приведен в предыдущем раз- деле, на данном этапе позволит эффективно работать с PG12232 без использования внутрисхемного эмулятора. Но надо помнить о том, что модель индикатора существует и работает в виртуальном мире отладчика-симулятора, где время течет по-другому. Быстрота смены изображения на экране индикатора в нашем случае определяется производительностью персонального компьютера, на котором фун- кционирует симулятор PDS-51. Попробуем анимировать надпись «Фитон», выводимую програм- мой SED, на модель индикатора. А именно, заставим вращаться про- тив часовой стрелки фирменную спираль, которая используется в слове «Фитон» вместо буквы «о». Проводить математические изыс- кания и реализовывать программно алгоритм пересчета координат выводимых точек мы не будем. Используем более простые методы. 335
В кодовой памяти создадим четыре таблицы, в каждую из которых поместим образ спирали повернутой на 90, 180, 270 и 360°: ;Образ спирали повернутой на 90 градусов R90: ;PAGEO .DCB ООН,ООН,ООН,ООН,ООН,ООН .DCB 80Н,80Н,ЗОН,80Н,80Н,80Н .DCB ООН,ООН,ООН,ООН,ООН,ООН ; PAGE"! .DCB ОСОН, OFOH,ЗСН,06Н,ОСЗН,71Н .DCB 19Н,8СН,ОССН,ОССН,8СН,19Н .DCB 31Н,63Н,0С6Н,ОСН,ЗСН,ОЕОН ;PAGE2 .DCB ОЗН,OFH,ЗСН,70Н,63Н,0С6Н .DCB 8СН,99Н,99Н,98Н,8DH,0С7Н .DCB 60Н,78Н,OFH,ОЗН,ООН,ООН ;PAGES: .DCB ООН,ООН,ООН,ООН,ООН,ООН .DCB ООН,01Н,01Н,01Н,ООН,ООН .DCB ООН,ООН,ООН,ООН,ООН,ООН ;Образ спирали, повернутой на 180° Fi_180: ;PAGED .DCB ООН,ООН,ООН,ООН,ООН,ООН .DCB 80Н,80Н,80Н,ООН,ООН,ООН .DCB ООН,ООН,ООН,ООН,ООН,ООН ;PAGE1 . DCB ОЕОН,38Н,ОСН,0С7Н,ОЕЗН,31Н .DCB 19Н,8СН,0С4Н,66Н,26Н,64Н .DCB ОССН,88Н,18Н,38Н,ОЕОН,80Н ;PAGE2 .DCB 07Н,1СН,ЗОН,63Н,47Н,ОССН .DCB 0С8Н,99Н,93Н,93Н,98Н,ОССН .DCB 0С7Н,63Н,70Н,38Н,OFH,ОЗН ;PAGE3 .DCB ООН,ООН,ООН,ООН,ООН,ООН .DCB ООН,01Н,01Н,01Н,01Н,ООН .DCB ООН,ООН,ООН,ООН,ООН,ООН ; Образ спирали, повернутой на 270° 336
R_270: ;PAGEO .DCB OOH,OOH,OOH,OOH,OOH,OOH .DCB ООН,ООН,8OH,8OH,8OH,OOH ,DCB OOH,OOH,OOH,OOH,OOH,OOH PAGE1 .DCB OOH,OOH,OCOH,OFOH,1EH.06H .DCB 0E3H.0B1H, 19H,99H,99H,31H .DCB 63H,0C6H,0EH,3CH, OFOH, OCOH ;PAGE2 .DCB O7H,ЗСН,ЗОН,63H,0C6H,8CH .DCB 98H,31H,ЗЗН,ЗЗН,31H,98H .DCB 8EH,0C3H,60H,3CH,OFH,03H ;PAGES .DCB OOH, OOH, OOH, OOH, OOH, OOH .DCB O1H,O1H,O1H,O1H,O1H,O1H .DCB OOH,OOH,OOH,OOH,OOH,OOH ;Образ спирали, повернутой на 360° R_360: ; PAGEO .DCB OOH,OOH,OOH,OOH,OOH,OOH .DCB ООН,80H,80H,80H,80H,OOH ' .DCB OOH,OOH,OOH,OOH,OOH,OOH ;PAGE1 .DCB OCOH,OFOH,1CH,OEH,0C6H,0E3H .DCB ЗЗН,19H,0C9H,0C9H,99H,13H .DCB ЗЗН,0E2H,OCOH,ОСН,38H,OEOH ;PAGE2 .DCB 01H,07H,1CH,18H,11H,33H .DCB 26H,64H,66H,23H,31H,98H .DCB 8CH, 0C7H, ОЕЗН, ЗОН, 1CH.07H ;PAGE3 .DCB OOH, OOH, OOH,OOH,OOH,OOH .DCB OOH,OOH,OOH,01H,01H,01H .DCB OOH,OOH,OOH,OOH,OOH,OOH Осталось дополнить код программы SED некоторым количеством команд, которые обеспечат последовательный вывод повернутых об- разов спирали в отведенное ей место на экране PG12232. Эти строки надо вписать вместо команды RET, которая позволяла использовать программу SED как подпрограмму (первая команда RET в тексте про- граммы SED). 337
; Вывод спирали, повернутой на 90 MOV A,#22H ;Адрес столбца MOV ADR_COLUMN,A MOV A,#12H MOV NCOL.A количество столбцов. LL: MOV DPTR,#R_90 ;Адрес начала таблицы данных R90 CLR CS1 CALL SED1520 SETB CS1 ; Вывод спирали, повернутой на 180° MOV DPTR,#R_180 ;Адрес начала таблицы данных R_180 CLR CS1 CALL SED1520 SETB CS1 ; Вывод спирали, повернутой на 270° MOV DPTR,#R_270 ;Адрес начала таблицы данных R 270 CLR CS1 CALL SED1520 SETB CS1 ; Вывод спирали, повернутой на 360° MOV CLR CALL SETB DPTR,#R_360 ; Адрес начала таблицы данных R_360. CS1 SED1520 CS1 SJMP LL бесконечный цикл. Интерфейс, предоставляемый симулятором, визуально мало от- личается от программной оболочки внутрисхемного эмулятора. Все действия, связанные с открытием проекта и отладкой, аналогичны приведенным ранее в одном из разделов посвященных внутрисхем- ному эмулятору. 338
Запущенная на непрерывное выполнение в PDS-51, программа выводит надпись «Фитон» и вращающуюся спираль вместо буквы «о». Скорость вращения, как отмечалось ранее, определяется компь- ютером, и здесь она равна примерно одному повороту на 90° спира- ли за полсекунды. В нашем компьютере установлен процессор Pentium-Ill с тактовой частотой 450 МГц. Приведенный пример будет работать на внутрисхемном эмуля- торе с подключенным к нему индикатором настолько быстро, что спираль сольется в три окружности помещенные одна в другую. По- этому для «закручивания» спирали на реальном индикаторе подход должен быть несколько иной. Результаты трансляции программы SED Окно «Дисассемблер» интегрирован- ного пакета Project позволяет увидеть ре- зультат компиляции исходного текста программы (см. рис 16). Исходный текст программы SED, описание необходимых директив ассем- блера и приведенный ниже листинг по- зволяют вам самостоятельно разобрать- ся с результатами компиляции, тем более, что все предельно просто и прозрачно. • Дисассемблер Авт> j Break IAdtfr | Эрцп Ы ll- I ♦0Q57 980269 HOU DPTR,#0269 •005A C291 CLR CT1I (AO.l) : •O05C 120383 LCALL SED1520 ♦005F D291 SETB CT1I (AO.l) ♦0061 90G2B1 HOU DPTR,#G2B1 ♦006Ч C291 CLR CT1I (AO.l) ♦0066 120389 LCALL SED1520 >0069 0291 SETB CT1I (A0.1) •006B 9802F9 HOU DPTR.S02F9 ♦006E C291 CLR CT1I (AO.l) •0070 120389 LCALL SED1520 ♦0073 0291 SETB CT1I (AO.l) ♦0075 900341 HOU DPTR,#0341 •0078 C291 CLR CT1I (AO.l) •007A 120389 LCALL SED1520 >007D D291 SETB CT1I (AO.l) •007F 8006 SJHP LL .r Рис. 16. Окно «Дизассемблер» # MCS-51 MACRO ASSEMBLER Version 1.02.020121 # Copyright (C) 1996-2001 Phyton, Inc., MicroCOSM Ltd # # 2002/03/01 14:34:12 sed1520.asm sed1520.asm 1 2 sed1520.asm 3 . ASEG I RAM,DATA sed1520.asm 4 00000000 . ORG OH sed1520.asm 5 sed 1520. asm 6 00000000 ADR^COLUMN . DSB 1 ; Номер колонки. sed1520.asm 7 00000001 ADR„PAGE . DSB 1 ; Номер страницы. sed1520.asm 8 00000002 NCOL .DSB 1 ; Кол-во обновляемых столбцов. sed1520.asm 9 00000003 NPAGE .DSB 1 ;Кол-во обновляемых страниц. sed1520. asm 10 00000004 TNCOL .0 iSB 1 ; Текущее значение адреса столбца. 339
sed1520.asm 11 00000005 TADR .DSB 1 ; Текущее значение адреса данных. sedl520. asm 12 sedl520.asm 13 00000000 P_D . EQU P4 ; Порт данных микроконтроллера. sedl520.asm 14 00000091 CS1 .EQU P1 . 1 ; Линия выбора SED1520. sed1520. asm 15 00000092 CS2 .EQU P1 .2 ;'Линия выбора SED1521. sed1520. asm 16 00000090 A0 .EQU P- I.0 ;Линия управления АО. sed1520. asm 17 ;SRD .EQU P1. 3 ; Линия сигнала чтения. sedl520.asm 18 00000094 SWR .EQU P1 .4 ;Линия сигнала записи. sedl520.asm 19 sed1520. asm 20 .ASEG ROM^CODE sedl520. asm 21 00000000 . ORG 0 sedl520. asm 22 00000000 C2AF CLR ЕА sedl520. asm 23 00000002 74E0 MOV A,#0e0h;#30H sed1520.asm 24 00000004 F581 MOV SP, А sedl520. asm 25 00000006 80F8 SJMP START sedl520. asm 26 sed1520.asm 27 .RSEG AROM.CODE sed1520. asm 28 00000000 START: sedl520. asm 29 ;Настройка PWM sedl520. asm 30 00000000 7400 MOV А,#ОСН sedl520. asm 31 00000002 F5FE MOV PWMP,А sedl520.asm 32 00000004 747F MOV A,#7FH sed1520. asm 33 00000006 F5FC MOV PWM0.A sed1520. asm 34 00000008 F5FD MOV PWM1,А sedl520. asm 35 sed1520.asm 36 Остановка сигналов управления. sed1520.asm 37 OOOOOOOA 0295 CLR Р1.5 ; res = 0 sed1520.asm 38 00000000 0290 CLR АО ;АО = 0 sed1520. asm 39 OOOOOOOE 0291 SETB CS1 ;CS1 = 1 sed1520. asm 40 00000010 0292 SETB CS2 ;CS2 = 1 sed1520.asm 41 ;SETB SRD ;RD = 1 sed1520.asm 42 00000012 0294 SETB SWR ; WR = 1 sed1520.asm 43 sed1520. asm 44 ;Включение дисплея. sed1520. asm 45 00000014 74AF MOV A,#OAFH sed1520. asm 46 00000016 F5C0 MOV P_D,A sed1520. asm 47 sed1520. asm 48 00000018 0291 CLR CS1 sed1520.asm 49 0000001A 0292 CLR CS2 sed1520.asm 50 00000010 0294 CLR SWR sed1520. asm 51 0000001E D294 SETB SWR sed1520.asm 52 00000020 D291 SETB CS1 sed1520. asm 53 00000022 D292 SETB CS2 340
sed1520.asm 54 sed1520. asm 55 Определение переменных sed1520.asm 56 00000024 E4 CLR A sed1520.asm 57 00000025 F500 MOV ADR_COLUMN,A ; Адрес столбца. sed1520.asm 58 00000027 74B8 MOV A,#0B8H sed1520. asm 59 00000029 F501 MOV ADR_PAGE,A ;Адрес страницы. sed1520.asm 60 0000002B 7404 MOV A, #4 sed1520.asm 61 00000020 F503 MOV NPAGE, A ;Количество страниц. sed1520.asm 62 0000002F 743D MOV A,#3DH sed1520.asm 63 00000031 F502 MOV NCOL,A ;Количество столбцов. sed1520.asm 64 sed1520.asm 65 ;Полный цикл обновления данных в буфере SED1520 sed1520.asm 66 00000033 900000 MOV DPTR,#PIXEL1 ;Адрес начала таблицы данных PIXEL1. sed1520.asm 67 00000036 0291 CLR CS1 sed1520.asm 68 00000038 120000 CALL SED1520 sed1520.asm 69 0000003B 0291 SETB CS1 sed1520.asm 70 sed1520.asm 71 ; Полный цикл обновления данных в буфере SED1521 sed1520. asm 72 00000030 90F400 MOV DPTR,#PIXEL2 ;Адрес начала таблицы данных Pi хе 12. sed1520.asm 73 00000040 0292 CLR CS2 sed1520.asm 74 00000042 120000 CALL SED1520 sed1520.asm sed1520.asm' 75 00000045 D292 SETB CS2 76 sed1520.asm 77 sedl520.asm 78 ;Вывод спирали повернутой на 90 градусов sed1520.asm 79 00000047 7422 MOV A,#22H ;Адрес столбца sed1520.asm 80 00000049 F500 MOV ADR_~COLUMN, A sed1520. asm 81 0000004В 7412 MOV A,#12H sed1520.asm 82 0000004D F502 MOV NCOL, A ;Количество столбцов. sed1520.asm 83 0000004F LL: sedl520.asm 84 0000004F 90E801 MOV DPTR,#R_90 ;Адрес начала таблицы данных Pi хе 12. sed1520.asm 85 00000052 0291 CLR CS1 sed1520.asm 86 00000054 120000 CALL SED1520 sed1520.asm 87 00000057 D291 SETB CS1 sed1520.asm sed1520.asm 88 89 341
s ed 1520. asm 90 sed1520.asm 91 ;Вывод спирали повернутой на 180 градусов sed1520. asm 92 00000059 903002 MOV DPTR,#R_180 ;Адрес начала таблицы данных Pi хе 12. sed1520. asm 93 00000050 0291 CLR CS1 sed1520. asm 94 0000005E 120000 CALL SED1520 sed1520.asm s ed1 520.asm 95 00000061 D291 SETB CS1 96 sed1520.asm 97 sed1520.asm 98 ;l Вывод спирали повернутой на 270 градусов sed1520. asm 99 00000063 907802 MOV DPTR,#R_270 ;Адрес начала таблицы данных Pixe!2. sed1520. asm 100 00000066 0291 CLR CS1 sed1520. asm 101 00000068 120000 CALL SED1520 sed1520.asm s ed1 520.asm 102 0000006B D291 SETB CS1 103 sed1520.asm 104 sed152O. asm 105 ;Вывод спирали повернутой на 360 градусов < sed 1520. asm 106 0000006D 900002 MOV DPTR,#R_360 ;Адрес начала таблицы данных Pixel2. sed 1520. asm 107 00000070 0291 CLR CS1 sed1520.asm 108 00000072 120000 CALL SED1520 sed152O.asm 109 00000075 D291 SETB CS1 sed 1520. asm 110 sed1520.asm s ed1520.asm 111 00000077 80D6 SJMP LL 112 sed1520.asm 113 sed1520. asm 114 . RSEG SED, CODE sed1520.asm 115 00000000 SED1520:;Работа c SED1520/1521 sed1520.asm 116 00000000 0001 PUSH ADR_PAGE sed1520. asm 117 00000002 0003 PUSH NPAGE sed1520.asm 118 00000004' LL1: sed1520. asm 119 00000004 Е502 MOV A.NCOL sed1520. asm 120 00000006 F504 . MOV TNCOL.A sed 1520. asm 121 00000008 Е500 MOV A,ADR_COLUMN sed1520. asm 122 ОООООООА F505 MOV TADR.A sed1520.asm 123 sed1520. asm 124 00000000 PAGE: ;Выбор страницы. sed1520.asm 125 00000000 Е501 MOV A,ADR_PAGE sed1520. asm 126 ОООООООЕ F5C0 MOV P_D, A sed1520.asm 127 00000010 0294 CLR SWR 342
sed1520.asm sed1520.asm sed1520.asm sed1520.asm sed1520.asm sed1520.asm sed1520. asm sed1520.asm 128 00000012 D294 129 130 00000014 131 00000014 E505 132 00000016 F5C0 133 00000018 0294 134 0000001A D294 135 SETB SWR 'COLUMN: ;Выбор столбца. MOV A.TADR MOV P_D,A CLR SWR SETB SWR- sed1520.asm 136 00000010 WR_D: ; Запись байта данных. sed1520. asm 137 00000010 D290 SETB АО ;A0 = 1 sed1520.asm 138 0000001E E4 CLR A sed1520.asm 139 0000001F 93 MOVC A,@A+DPTR sed1520. asm 140 00000020 A3 INC DPTR sed1520. asm 141 00000021 F5C0 MOV PJ),A ; sed1520.asm 142 00000023 0294 CLR SWR ;WR = 0 sed1520.asm 143 00000025 D294 SETB SWR ;Сигнал записи окончен. sed1520.asm 144 00000027 0290 CLR AO ;A0 = O sed152O. asm 145 sed152O.asm 146 00000029 0505 INC TADR sed1520.asm 147 0000002B D504E6 DJNZ TNCOL, COLUMN ; Цикл no столбцам. sed152O.asm 148 0000002E 0501 INC ADR^PAGE sed1520.asm 149 00000030 D503D1 DJNZ NPAGE, LL1 ; Цикл no страницам. sed1520.asm 150 sed1520.asm 151 00000033 D003 POP NPAGE sed1520.asm 152 00000035 D001 POP ADR_PAGE sed1520.asm 153 sed152O. asm 154 00000037 22 RET sed152O.asm 155 s ed1520.asm 156 sed1520.asm 157 sed1520. asm 158 .RSEG DATE,CODE sed1520.asm 159 00000000 PIXEL1: ; Образ экрана SED1520. sed1520. asm 160 ; Правая половина индикатора PG12232A. sed1520.asm 161 ;Адреса столбцов увеличиваются справа налево. sed1520.asm 162 sed1520.asm 163 ; PAGEO, 8 строк в нижней части индикатора. sed1520.asm 164 00000000 00000000 .DCB OOH, OOH, OOH, OOH, OOH, OOH sed1520.asm 00000004 0000 165 00000006 00000000 .DCB OOH, OOH, OOH, OOH, OOH, OOH 343
ОООООООА 0000 sed1520.asm 166 0000000C 00000000 00000010 0000 . DCB OOH,OOH,OOH,OOH,OOH,OOH sed 1520. asm 167 00000012 80808000 00000016 0000 . DCB 80H,80H,80H,OOH,OOH,OOH sed1520. asm 168 00000018 00000000 0000001C 8080 .DCB ООН, ООН, ООН, ООН,80H,80H sed 1520. asm 169 0000001E 80000000 00000022 0000 .DCB 80H,OOH,OOH,OOH,OOH,OOH sed1520. asm 170 00000024 00000000 00000028 0080 .DCB OOH,OOH,OOH,OOH,OOH,80H sed1520.asm 171 0000002A 80808000 0000002E 0000 .DCB 80H,80H,80H,OOH,OOH, OOH sed1520.asm 172 00000030 00000000 00000034 0000 .DCB OOH, OOH, OOH, OOH,OOH,OOH sed1520.asm 173 00000036 00000000 0000003A 0080 .DCB OOH,OOH,OOH,OOH,OOH,80H sed 1520. asm sed1520. asm 174 0000003C 80 175 .DCB ;PAGE1 80H sed 1520. asm 176 00000030 00000000 00000041 0000 .DCB OOH,OOH,OOH,OOH,OOH,OOH sed1520. asm 177 00000043 00000000 00000047 0000 .DCB OOH, OOH, OOH, OOH, OOH,OOH sed1520.asm 178 00000049 00000000 00000040 0000 .DCB OOH,OOH,OOH,OOH,OOH,OOH sed1520. asm 179 0000004F FFFFFFCO 00000053 COCO .DCB OFFH,OFFH,OFFH,OCOH,OCOH,OCOH sed 1520. asm 180 00000055 COCOCOCO 00000059 FFFF .DCB OCOH,OCOH,OCOH,OCOH, OFFH, OFFH sed1520. asm 181 0000005B FFOOOOOO 0000005F COFO .DCB OFFH,OOH,OOH,OOH,OCOH, OFOH sed1520. asm 182-00000061 1C0EC6E3 00000065 3319 .DCB 1CH, OEH, 0C6H,0E3H,ЗЗН,19H sed1520. asm 183 00000067 C9C99913 0000006В 33E2 .DCB 0C9H, ОСЭН, 99H, 13H,ЗЗН,0E2H sed'1520. asm 184 00000060 C60C38E0 00000071 0000 .DCB 0C6H,ОСН,38H,OEOH,OOH,OOH sed 1520. asm 185 00000073 00000000 00000077 OOFF .DCB OOH, OOH, OOH, OOH,OOH,OFFH sed1520. asm sed1520. asm 186 00000079 FF 187 .DCB ;PAGE2 OFFH sed!520. asm 188 0000007A 00000000 0000007E 0000 .DCB OOH,OOH,OOH,OOH,OOH,OOH sed 1520. asm 189 00000080 00000000 00000084 0000 .DCB OOH,OOH,OOH,OOH,OOH,OOH 344
sed1520.asm 190 00000086 00000000 0000008A 0000 . DCB ООН, ООН, ООН, ООН,ООН, ООН sed 1520. asm 191 0000008C FFFFFF03 00000090 0303 .DCB OFFH, OFFH, OFFH, ОЗН, ОЗН, ОЗН sed1520.asm 192 00000092 03030303 00000096 FFFF . DCB ОЗН, ОЗН, ОЗН, ОЗН, OFFH, OFFH sed1520.asm 193 00000098 FFOOOOOO 0000009C 0107 . DCB OFFH, ООН, ООН, ООН, 01Н,07Н sed1520.asm 194 0000009E 1C181133 000000A2 2664 . DCB 1СН, 18Н, 11Н, ЗЗН, 26Н, 64Н sed1520. asm 195 000000A4 66233198 000000A8 8CC7 . DCB 66Н, 23Н, 31Н, 98Н, 8СН,0С7Н sed1520. asm 196 OOOOOOAA E3301C07 OOOOOOAE 0000 . DCB ОЕЗН,ЗОН,1СН,07Н,ООН,ООН sed1520. asm 197 000000B0 FOFOCOCO .DCB OFOH,OFOH,OCOH,OCOH,OCOH,OFFH OOOOOOB4 COFF sed1520.asm 198 000000B6 FF .DCB OFFH sed1520.asm 199 ; PAGE3, 8 строк в верхней части индикатора. sed1520.asm 200 000000В7 00000000 ООООООВВ 0000 .DCB ООН,ООН,ООН,ООН,ООН,ООН sedl520.asm 201 OOOOOOBD 00000000 000000С1 0000 .DCB ООН, ООН, ООН, ООН, ООН, ООН sed1520. asm 202 ООООООСЗ 00000000 00000007 0000 .DCB ООН,ООН,ООН,ООН,ООН,ООН sed1520. asm 203 00000009 01010100 000000CD 0000 .DCB 01Н,01Н,01Н,ООН,ООН,ООН sed1520.asm 204 OOOOOOCF 00000000 00000003 0101 .DCB ООН,ООН,ООН,ООН,01Н,01Н sed1520. asm 205 000000D5 01000000 00000009 0000 .DCB 01Н,ООН,ООН,ООН,ООН,ООН sedl520.asm 206 OOOOOODB 00000000 OOOOOODF 0000 .DCB ООН,ООН,ООН,ООН,ООН,ООН sed1520. asm 207 ООООООЕ1 ОООЮЮ1 ООООООЕ5 0000 .DCB ООН,01Н,01Н,01Н,ООН,ООН sed1520.asm 208 000000Е7 00000000 ООООООЕВ 0000 .DCB ООН,ООН,ООН,ООН,ООН,ООН sed 1520. asm 209 OOOOOOED 01010101 000000F1 0101 .DCB 01Н,01Н,О1Н,01Н,01Н,01Н sed1520.asm 210 OOOOOOF3 01 .DCB . 01Н sed1520.asm 211 sed1520.asm 212 000000F4 PIXEL2: ;Образ экрана SED1521. sed1520.asm 213 ;Левая половина индикатора PG12232A. sed1520.asm 214 ;Адреса столбцов увеличиваются справа налево. sed 1520. asm 215 345
s ed1520.asm 216 ; PAGEO, 8 строк в нижней части индикатора. sed1520.asm 217 000000F4 80800000 000000F8 0000 .DCB 80Н, 80Н,ООН,ООН,ООН,ООН sed1520.asm 218 000000FA 00000000 OOOOOOFE 0000 . DCB ООН, ООН, ООН,ООН,ООН,ООН sed1520.asm 219 00000100 80808000 00000104 0000 .DCB 80Н,80Н,80Н,ООН,ООН,ООН sed1520.asm 220 00000106 00000000 0000010A 8080 . ОСВ ООН, ООН, ООН,ООН,зон,зон sed1520. asm 221 00000ЮС 80000000 00000110 0000 .DCB 80Н,ООН,ООН,ООН,ООН,ООН sed1520. asm 222 00000112 00000000 00000116 0000 .ОСВ ООН, ООН, ООН, ООН, ООН, ООН sed1520. asm 223 00000118 80808080 00000110 8080 . DCB 80Н,80Н,80Н,80Н,80Н,80Н sed1520. asm 224 0000011E 00000000 00000122 0000 .DCB ООН,ООН,ООН,ООН,ООН,ООН sed1520.asm 225 00000124 00000000 00000128 0000 .DCB ООН,ООН,ООН,ООН,ООН,ООН sed1520. asm 226 0000012A 00000000 0000012E 0000 .DCB ООН,ООН,ООН,ООН,ООН,ООН sed1520.asm sed1520. asm 227 00000130 00 228 .DCB ООН ;PAGE1 sed1520. asm 229 00000131 FFFFOOOO 00000135 0000 .DCB OFFH,OFFH,ООН,ООН,ООН,ООН sed1520. asm 230 00000137 00000000 0000013B 0000 .DCB ООН,ООН,ООН,ООН,ООН,ООН sed1520. asm 231 00000130 FFFFFFOO 00000141 0080 .DCB OFFH,OFFH,OFFH,ООН,ООН,8ОН sed1520. asm 232 00000143 C0E07038 00000147 FFFF . DCB ОСОН,ОЕОН,70Н,038Н,OFFH,OFFH sed1520. asm 233 00000149 FFOOOOOO 00000140 0000 .DCB OFFH,ООН,ООН,ООН,ООН, ООН sed1520.asm 234 0000014F 80E0F038 00000153 1C0C . DCB 80Н,ОЕОН,OFOH,38Н,1СН,ОСН sed1520. asm 235 00000155 OCFFFFFF 00000159 FFOC . DCB ОСН,OFFH,OFFH,OFFH,OFFH,ОСН sed1520.asm 236 0000015B 0C1C38F0 0000015F E080 .DCB ОСН, 1CH.38H, OFOH, ОЕОН, 8OH sed1520. asm 237 00000161 00000000 00000165 0000 .DCB ООН,ООН,ООН,ООН,ООН,ООН sed1520. asm 238 00000167 00000000 0000016B 0000 .DCB ООН,ООН,ООН,ООН,ООН,ООН sed1520. asm sed1520. asm 239 00000160 00 240 .DCB ООН ;PAGE2 346
sed1520. asm 241 0000016E FFFFC0C0 .DCB OFFH,OFFH,ОСОН,ОСОН,ОСОН, OFOH sed1520. asm 00000172 COFO 242 00000174 F0000000 .DCB OFOH,ООН,ООН,ООН,ООН,ООН sed1520. asm 00000178 0000 243 0000017A FFFFFFOE .DCB OFFH, OFFH,OFFH,0ЕН.07Н,ОЗН sed1520. asm 0000017E 0703 244 00000180 01000000 .DCB . 01Н,ООН,ООН,ООН,OFFH,OFFH sed1520. asm 00000184 FFFF 245 00000186 FFOOOOOO .DCB OFFH,ООН,ООН,ООН,ООН,ООН sed1520. asm 0000018A 0000 246 0000018C 0F3F7FE0 . DCB 0FH,3FH,7FH, ОЕОН, ОСОН, 80Н sed1520. asm 00000190 C080 247 00000192 80FFFFFF . DCB 8ОН,OFFH,OFFH,OFFH, OFFH, 80Н sed1520. asm 00000196 FF80 248 00000198 80C0E07F .DCB 80H,OCOH,ОЕОН,07FH.03FH, OFH sed1520. asm 0000019C 3F0F 249 0000019E 00000000 .DCB OOH,OOH,OOH,OOH,OOH,OOH sed1520.asm 000001A2 0000 250 000001A4 00000000 .DCB OOH,OOH,OOH,OOH,OOH,OOH sed1520. asm 000001A8 0000 251 000001AA 00 .DCB OOH sed1520. asm 252 ; PAGE3, 8 строк в верхней части индикатора. sed1520.asm 253 000001АВ 01010101 .DCB O1H,01H,01H,O1H,01H,01H sed1520.asm 000001AF 0101 254 000001В1 01000000 .DCB 01H,OOH,OOH,OOH,OOH,OOH sed1520.asm 000001В5 0000 255 000001В7 01010100 .DCB 01H,01H,01H,OOH,OOH,OOH sed1520. asm 000001ВВ 0000 256 000001BD 00000000 .DCB OOH,OOH,OOH,OOH,01H,01H sed1520.asm 000001С1 0101 257 000001СЗ 01000000 .DCB O1H,OOH,OOH,OOH,OOH,OOH sed1520.asm 00000107 0000 258 00000109 00000000 .DCB OOH,OOH,OOH,OOH,01H,01H sed 1520. asm 000001CD 0101 259 000001CF 01070707 .DCB 01H,07H,07H,07H,07H,01H sed1520.asm 000001D3 0701 260 000001D5 01010000 .DCB O1H,O1H,OOH,OOH,OOH,OOH sed1520.asm 000001D9 0000 261 000001DB 00000000 .DCB OOH,OOH,OOH,OOH,OOH,OOH sed1520.asm 000001DF 0000 262 000001Е1 00000000 .DCB OOH,OOH,OOH,OOH,OOH,OOH sed1520.asm 000001Е5 0000 263 000001Е7 00 .DCB OOH sed1520.asm sed1520.asm 264 265 347
0000024С 2664 s edl520.asm 266 sed1520. asm sed1520. asm sedl520. asm 267 ; Образ спирали повернутой на 90 градусов 268 000001Е8 , R_„90: 269 fpAGEO sed 1520. asm 270 000001Е8 00000000 .DCB ООН,ООН,ООН,ООН,ООН,ООН 000001 ЕС 0000 sed1520.asm 271 000001ЕЕ 80808080 . DCB 80Н, 80Н, 80Н, 80Н,80Н,80Н 000001F2 8080 sed1520. asm sed1520.asm 272 000001F4 00000000 . DCB ООН, ООН,ООН,ООН,ООН,ООН 000001F8 0000 273 ;PAGE1 sedl520. asm 274 000001 FA C0FO3CO6 . DCB OCOH,OFOH,ЗСН,06Н,ОСЗН,71Н 000001FE 0371 sed1520.asm 275 00000200 198ССССС . DCB 19Н, 8СН, ОССН,ОССН,8СН,19Н 00000204 8019 sedl520.asm sed1520. asm 276 00000206 31630600 .DCB 31Н,63Н,0С6Н,ОСН,ЗСН,ОЕОН 0000020А ЗСЕО 277 ;PAGE2 sed1520.asm 278 0000020С 030F3C70 . DCB ОЗН, OFH, ЗСН,70Н,63Н,0С6Н 00000210 63С6 sedl520. asm 279 00000212 8С999998 . DCB 8СН, 99Н, 99Н, 98Н, 8DH, 0C7HF 00000216 8DC7 sed1520. asm sed1520.asm 280 00000218 60780F03 . DCB 60Н,78Н,OFH,ОЗН,ООН,ООН 0000021С 0000 281 ;PAGE3: sedl520. asm 282 0000021Е 00000000 .DCB ООН, ООН, ООН,ООН,ООН,ООН 00000222 0000 sed1520.asm 283 00000224 00010101 . DCB ООН, 01Н, 01Н, 01Н, ООН, ООН 00000228 0000 sed1520. asm sedl520. asm 284 0000022А 00000000 . DCB ООН,ООН,ООН,ООН,ООН,ООН 0000022Е 0000 285 sed1520.asm sed1520. asm sed1520. asm 286 ; Образ спирали повернутой на 180 градусов 287 00000230 R_180: 288 ;PAGED sed1520. asm 289 00000230 00000000 .DCB ООН, ООН, ООН, ООН, ООН, ООН 00000234 0000 sed1520. asm 290 00000236 80808000 . DCB 80Н, 80Н, 80Н, ООН, ООН, ООН 0000023А 0000 sed1520.asm sed1520. asm 291 0000023С 00000000 . DCB ООН, ООН,ООН,ООН,ООН,ООН 00000240 0000 292 ; PAGE1 sed1520. asm 293 00000242 Е0380СС7 . DCB ОЕОН, 38Н, ОСН,0С7Н,ОЕЗН,31Н 00000246 Е331 sed1520.asm 294 00000248 198СС466 . DCB 19Н,8СН,0С4Н,66Н,26Н,64Н sed1520.asm 295 0000024E CC881838 00000252 E080 .DCB 0CCH.88H,18H,38H.0E0H, 80H sed1520 asm sed1520.asm 296 ; PAGE2 297 00000254 071C3063 .DCB 07H,1CH,ЗОН,63H, 47H, ОССН sed1520.asm 00000258 47CC 298 0000025A C8999393 .DCB 0C8H,99H,93H,93H.98H, ОССН sed1520.asm 0000025E 98CC 299 00000260 C7637038 .DCB 0C7H,63H,70H,38H,OFH,ОЗН sed1520.asm sed1520. asm 00000264 0F03 300 ;PAGE3 301 00000266 00000000 .DCB оон,оон,'оон,оон,оон,оон sed1520. asm 0000026A 0000 302 0000026C 00010101 .DCB ООН, 01Н, 01Н,01Н,01Н, ООН sed1520,asm 00000270 0100 303 00000272 00000000 .DCB ООН, ООН, ООН,ООН,ООН,ООН sed1520.asm sed1520.asm 00000276 0000 304 305 ;Образ спирал и повернутой на 270 градусов sed1520.asm sed1520. asm sed1520.asm 306 00000278 R_270: 307 ;PAGED 308 00000278 00000000 .DCB ООН, ООН, ООН, ООН,ООН,ООН sed1520. asm 0000027C 0000 309 0000027E 00008080 .DCB ООН,ООН,80Н,80Н,80Н,ООН sed1520. asm 00000282 8000 310 00000284 00000000 .DCB ООН,ООН,ООН,ООН,ООН,ООН sed1520. asm sed1520.asm 00000288 0000 311 ;PAGE1 312 0000028A OOOOCOFO .DCB ООН,ООН,OCOH,OFOH, 1ЕН.06Н sed1520. asm 0000028E 1E06 313 00000290 E3B11999 .DCB 0ЕЗН.0В1Н,19Н,99Н,99Н,31Н sed1520.asm 00000294 9931 314 00000296 63C60E3C .DCB 63Н,0С6Н,ОЕН,ЗСН,OFOH,OCOH sed1520.asm sed1520. asm 0000029A FOCO 315 ; PAGE2 316 0000029C 073C3063 .DCB 07Н,ЗСН,ЗОН,63Н,0С6Н,8СН sed1520. asm 000002AD C68C 317 000002A2 98313333 .DCB 98Н,31Н,ЗЗН,ЗЗН,31Н,98Н sed1520.asm 000002A6 3198 318 000002A8 8EC3603C .DCB 8ЕН,ОСЗН,60Н,ЗСН,OFH,ОЗН sed1520.asm sed1520. asm 000002AC 0FD3 319 ;PAGE3 320 000002AE 00000000 .DCB ООН,ООН,ООН,ООН,ООН,ООН sedi520.asm 000002B2 0000 321 000002B4 01010101 .DCB О1Н,О1Н,О1Н,01Н,01Н,О1Н 348 349
000002В8 0101 sed1520.asm 322 000002BA 00000000 000002BE 0000 .DCB 00H,00H,00H,00H,00H,00H sed1520.asm sed1520.asm 323 324 ; Образ спирали повернутой на 360 градусов sed1520.asm sed1520.asm sed1520. asm 325 00000200 R„360: 326 ; PAGEO 327 00000200 00000000 .DOB 00H,00H,00H,00H,00H,00H sed1520. asm 00000204 0000 328 00000206 00808080 .DCB ООН,80H,80H,80H,80H,ODH sed1520.asm 000002CA 8000 329 00000200 00000000 .DCB OOH,OOH,00H,00H,00H,00H sedl520.asm sed1520.asm 00000200 0000 330 ;PAGE1 331 00000202 C0F01C0E .DCB OCOH,OFOH,1CH,OEH,0C6H,0E3H sedl520.asm 00000206 C6E3 332 00000208 3319C9C9 .DCB ЗЗН,19H,0C9H,0C9H,99H,13H sed1520.asm 000002DC 9913 333 000002DE 33E2C60C .DCB ЗЗН,0E2H,0C6H,ОСН,38H,OEOH sed1520.asm sed1520.asm 000002E2 38E0 334 ;PAGE2 335 000002E4 01071018 .DCB 01H,07H,1CH,18H,11H,33H sed1520.asm 000002E8 1133 336 000002EA 26646623 .DCB 26H,64H,66H,23H,31H,98H sed1520.asm 000002EE 3198 337 000002FO 8CC7E330 .DCB 8CH,0C7H,0E3H,ЗОН,1CH,07H sed1520.asm sedl520.asm 000002F4 1C07 338 ;PAGES 339 000002F6 00000000 .DCB ООН,ООН,ООН,ООН,ООН,ООН sedl520.asm 000002FA 0000 340 000002FC 00000001 .DCB ООН,ООН,ООН,01H,01H,01H sed1520.asm 00000300 0101 341 00000302 00000000 .DCB OOH,OOH,OOH,OOH,OOH,OOH 00000306 0000 sed1520.asm 342 sed1520.asm 343 Module sed1520: 961 byte(s), 537 I ine(s) sed1520. asm 344 sed1520.asm: 541 I i ne(s), 0. 2 second(s), END 0 error( s),0 warning(s) Строки листинга с 20 по 25 определяют абсолютный сегмент, в котором запрещаются прерывания, устанавливается значение указа- теля стека и осуществляется переход на метку START.
Приложение 10 СЕМЕЙСТВО Х51 МИКРОКОНТРОЛЛЕРОВ ФИРМЫ CYGNAL Каждый из читателей, интересующихся микропроцессорной и мик- роконтроллерной техникой, наверняка знает, как динамично развива- ется современная элементная база. Еще совсем недавно наши читате- ли восхищались новыми микроконтроллерами фирм Atmel и Microchip. И вот на рынке появились новые мощные микроконтрол- леры от фирмы Cygnal (http://www.cygnal.com). Они продолжают раз- витие ставших «de facto» промышленным стандартом микроконтрол- леров семейства х51. В тоже время, они содержат на кристалле много очень полезных подсистем, которые превращают старый добрый х51 микроконтроллер в мощную высокоинтегрированную микроконтрол- лерную систему обработки сигналов. Но об этом немного далее. Прежде всего, следует сказать несколько слов о фирме-произ- водителе. Фирма Cygnal — достаточно молодая, была основана в марте 1999 г. Ее полное название — Cygnal Integrated Products, Inc. Направлением деятельности фирмы является разработка, произ- водство и распространение однокристальных высокоинтегрирован- ных систем обработки данных, включающих эффективные аналого- цифровые узлы, высокопроизводительное ядро х51 и Flash-память. Фирма Cygnal организована за счет инвестиций ряда известных компаний: Austin Ventures, Jato Tech, Sanyo Semiconductor, Cirrus Logic. Фирмой руководят три известных и опытных личности: Derrell C.Coker — Президент и Руководитель Исполнительного Офиса компании. До марта 1999 г. он девять лет работал в Benchmarq Microelectronics Inc., а также был Вице-президентом Dallas Semi- conductor и Главным Менеджером на Mostek Corporation. 351
Donald E Alfano — Вице-президент по Маркетингу Продаж. До этого был Директором по Маркетингу на TelCom Semiconductor и Dallas Semiconductor. Douglas R Holberg — доктор наук, Вице-президент по Инжене- рии и Руководитель технического руководства. Он является видным специалистом в области создания смешанных аналого-цифровых узлов на CMOS. До начала своей деятельности в фирме Cygnal, он был Директором по Изображениям и Видеопродуктам на Crystal Semiconductor/Cirrus Logic. Такой опытный и известный состав руководства фирмы позво- лил за неполные три года существования фирмы разработать и вы- пустить на рынок четыре новых семейства х51-совместимых микро- контроллеров. ПЕРВОЕ СЕМЕЙСТВО МИКРОКОНТРОЛЛЕРОВ C8051F00X — C8051F01X Первое семейство насчитывает 12 типов микроконтроллеров, отли- чающихся производительностью, объемом встроенной оперативной па- мяти IRAM, типом корпуса и некоторыми другими параметрами. Все ха- рактеристики этого семейства микроконтроллеров приведены в табл. 1. Рассмотрим основные особенности этого семейства. Все микроконтроллеры этого семейства имеют развитые узлы ана- логового ввода/вывода. На кристалле имеется аналого-цифровой пре- образователь ADC с разрядностью 12 или 10 бит, оснащенный про- граммно-управляемыми входным усилителем и аналоговым мультиплексором. Для входного усилителя может быть программно установлен коэффициент усиления, равный 16, 8, 4, 2, 1 или 0,5. Ана- логовый мультиплексор на 8 (4) входов может быть настроен, как од- нополярный или с дифференциальным входом. Аналого-цифровой преобразователь не имеет «пропущенных» кодов и имеет погрешность ± 1 младший разряд. Имеется возможность генерации прерываний при изменении значения аналогового сигнала. Кроме этого, имеется ин- тегрированный датчик температуры, позволяющий измерять темпе- ратуру кристалла с точностью ±3 °C. Все микроконтроллеры этого семейства имеют два быстродей- ствующих цифро-аналоговых 12 разрядных преобразователя DAC с выходом по напряжению (время установления 10 мкс). Имеются также 2(1) аналоговых компаратора с 16-ю значениями программно устанавливаемого гистерезиса. Они могут быть настро- ены на формирование сигнала сброса или прерывания. Кроме того, имеется встроенный источник опорного напряже- ния на 2,4 В. 352
Таблица Zl0dlS083 LO CM CXI CO LO CX| CM О V“ ’T + СМ СМ ▼— ▼— + СО l2C, SPI, UART ] + + + | 2...16 МГц | I —4О...+85°С | о см СО | 2,7..,3.6В | см ▼— 9V0dVS083 LO CXI CX| CO LO CX| cxT О V“ co + СМ СМ ▼— СМ + CD Ч- + + + ш О со см ▼“ siodisoss LO CX| CX| CO LO cxi cxT О V“ co | 16,8,4,2,1,0,5 | + СМ СМ ▼— СМ + СМ СО + + + с о 3 см ч- ziodisoss О CXI CX| CO TU LO CX| О V“ ’T + СМ СМ г— Ч- + СО + + + о см СО О nodisoss О CXI CX| CO w LO CX| О V“ co + СМ СМ СМ + (D + + + ш о I- со 0l0dlS083 О CM CX| CO TI7 LO CXI О 4“ co + СМ СМ т— СМ + СМ СО + + + TQF 3 о ZOOdlSOSO LO CXI CX| CO 1 2,2-5| CXI 4“ ’T + СМ СМ ▼— + СО + + + О см СО СМ ▼“ 900dlS083 LO CX| CX| CO LO cxi cxT CXI V“ co + СМ СМ Ч- СМ + CD 4“ + + + Ш О со см ▼“ S00dlS083 LO CX| CX| CO 1 2,25| cxi V“ co + СМ СМ 4“ СМ + СХ| СО + + + LL О 1“ 3 см ▼“ Z00dlS083 О CXI CX| CO LO CXI CXI 4“ ’T + СМ СМ ▼— ▼— + СО + + + о см СО о ▼“ l00dlS083 О CXI CX| CO w LO CX| CXI 4“ co + СМ СМ ▼— СМ + CD ч- + + + О СО о ▼“ 000dlS083 О CXI CX| CO LO CX| CXI V“ co + СМ СМ СМ + СМ со + + + rd о 3 о ч- ХАРАКТЕРИСТИКА | Производительность, MIPS 1 | Flash Memory, К | IRAM | Разрядность ADC (100ksps) | Количество входных каналов ADC | I Коэффициент усиления входов I | Встроенный датчик температуры | | Количество DAC | I Разрядность DAC | I Количество компараторов I | Наличие встроенной системы JTAG | | Количество линий ввода/вывода | | Наличие интерфейсов | 16-разрядный таймер-счетчик | Количество 16-разрядных таймеров | | Наличие охранного таймера WDT | | Встроенный монитор питания | | Встроенный прогр. генератор I | Температурный диапазон, °C | | Тип корпуса | | Количество выводов | I Диапазон напряжений питания, В | | Рабочий ток потребления, мА 353
Все микроконтроллеры работают от источника питания 2,7...3,6 В. Потребляемый ток не превышает 10 мА при частоте 20 МГц (12 мА при частоте 25 МГц). Все микроконтроллеры имеют встроенный мо- нитор контроля питания (супервизор). Важным преимуществом этого семейства является развитая встроенная система отладки программного обеспечения, так называ- емая JTAG. Система при наличии фирменного программно-аппарат- ного обеспечения (стоимостью $99) обеспечивает отладку программ по точкам останова, в пошаговом режиме, в режиме останова по ис- течении заданного времени. При этом имеется возможность провер- ки и модификации значений памяти и регистров. Все микроконтроллеры имеют высокопроизводительное х51-со- вместимое ядро, 70 % инструкций выполняются за один-два систем- ных такта. Ядро оснащено развитой системой прерываний (до 22 ис- точников). Характеристики памяти и портов ввода/вывода приведены в табл. 1. Fiash-память всех микроконтроллеров программируется внутрисхем- но. Следует подчеркнуть, что все входы/выводы совместимы с вне- шними пятивольтовыми микросхемами. Набор периферии (таймеры, интерфейсы) также приведен в табл. 1. Примечательно, что в ее состав входит охранный таймер WDT. На кристалле имеется программируе- мый встроенный генератора 2... 16 МГц. Микросхема может програм- мироваться на работу с кварцевым резонатором, времязадающей RC- цепочкой, только конденсатором или внешним генератором, причем переключение между режимами возможно в ходе выполнения програм- мы. Все микросхемы имеют режимы энергосбережения. ВТОРОЕ СЕМЕЙСТВО МИКРОКОНТРОЛЛЕРОВ C8051F02X Второе семейство насчитывает всего 4 типа микроконтроллеров, отличающихся от первого наличием второго быстродействующего аналого-цифрового преобразователя, большим объемом встроенной оперативной памяти IRAM и Flash-памяти программ, наличием двух последовательных интерфейсов UART, типом корпуса и некоторы- ми другими параметрами. Все характеристики этого семейства мик- роконтроллеров приведены в табл. 2. Второе семейство микроконтроллеров более мощное, чем первое. Как и в первом семействе, на кристалле имеется аналого-цифровой преобразователь ADC с разрядностью 12 или 10 бит, оснащенный программно-управляемыми входным усилителем и аналоговым мультиплексором. Его параметры и возможности аналогичны пер- вому семейству. 354
Таблица 2 ХАРАКТЕРИСТИКА О сч о о со О C8051F021 С8051F022 C8051F023 Производительность, MIPS 25 25 25 25 Flash Memory, К 64 64 64 64 IRAM, К 4,25 4,25 4,25 4,25 Разрядность первого ADC (100ksps) 12 12 10 10 Количество входных каналов первого ADC 8 8 8 8 Коэффициент усиления входов первого ADC 16, 8, 4, 2, 1, 0,5 Встроенный датчик температуры + + + + Количество DAC 2 2 2 2 Разрядность второго ADC (500ksps) 8 8 8 8 Количество входных каналов второго ADC 8 8 8 8 Коэффициент усиления входов второго ADC 4, 2, 1, 0,5 Разрядность DAC 12 12 12 12 Количество компараторов 2 2 2 2 Наличие встроенной расширенной системы JTAG + + + + Количество линий ввода/вывода 64 32 64 32 Наличие интерфейсов ГС, SPI, 2 х UART 16-разрядный таймер-счетчик + Количество 16-разрядных таймеров 5 5 5 5 Наличие охранного таймера WDT + + + + Встроенный монитор питания + + + + Встроенный программируемый генератор 2...16 МГц Температурный диапазон, °C -4О...+85°С Тип корпуса TQFP TQFP TQFP TQFP Количество выводов 100 64 64 100 100 64 64 100 Диапазон напряжений питания, В 2,7...3,6 Рабочий ток потребления, мА 10 10 10 10 Кроме этого, на кристалле имеется второй высокопроизводитель- ный восьмиразрядный ADC, снабженный программно-управляемыми входным усилителем и аналоговым мультиплексором. Для входного усилителя может быть программно установлен коэффициент усиления, равный 4,2,1 или 0,5. Аналоговый мультиплексор имеет 8 входов. Как и в первом семействе, все микроконтроллеры имеют 2 быст- родействующих 12-разрядных DAC и 2 аналоговых компаратора, имеется встроенный источник опорного напряжения на 2,4 В. Все микроконтроллеры работают от источника питания 2,7...3,6 В. Потребляемый ток не превышает 10 мА при частоте 25 МГц. Все мик- роконтроллеры имеют встроенный монитор контроля питания (су- первизор). 355
Важным преимуществом этого семейства является более развитая встроенная система отладки программного обеспечения, так называе- мая «JTAG DEBUG & BOUNDRY SCAN». Система при наличии фир- менного программно-аппаратного обеспечения (стоимостью $129) обес- печивает отладку программ по точкам останова, в пошаговом режиме, в режиме останова по истечении заданного времени. При этом имеется возможность проверки и модификации значений памяти и регистров. Все микроконтроллеры имеют высокопроизводительное х51 -совме- стимое ядро, 70 % инструкций выполняются за один-два системных так- та. Ядро оснащено развитой системой прерываний (до 22 источников). Характеристики памяти и портов ввода/вывода приведены в табл. 2. Flash-память всех микроконтроллеров программируется внутрисхем- но. Следует подчеркнуть, что все входы/выводы совместимы с вне- шними пятивольтовыми микросхемами. Кроме того, имеется высо- копроизводительный параллельный интерфейс с внешней памятью (до 5 Мбайт/с). Набор периферии (таймеры, интерфейсы) также при- веден в табл. 2. В отличие от предыдущего семейства имеется два уни- версальных последовательных порта UART. В состав входит также ох- ранный таймер WDT. На кристалле имеется программируемый встроенный генератора 2... 16 МГц. Микросхема может программиро- ваться на работу с кварцевым резонатором, времязадающей RC-це- почкой только конденсатором или внешним генератором, причем пе- реключение между режимами возможно в ходе выполнения программы. Все микросхемы имеют режимы энергосбережения. ТРЕТЬЕ СЕМЕЙСТВО МИКРОКОНТРОЛЛЕРОВ С8051F02X Третье семейство насчитывает семь типов микроконтроллеров, основные характеристики которых приведены в табл. 3. Как видно из табл. 3, это семейство микроконтроллеров менее мощное, чем первое. Только в четырех микросхемах имеется ADC, зато с большим числом входов мультиплексора. Только в одной мо- дели имеется программно-управляемый входной усилитель, и раз- рядность ADC равна 12 битам. Остальные ADC — восьмиразрядные. Во всех моделях, имеющих аналоговый мультиплексор, переопреде- ление входов можно производить в ходе выполнения программы. Все микроконтроллеры работают от источника питания 2,7...3,6 В. Потребляемый ток не превышает 9 мА при частоте 25 МГц. Все мик- роконтроллеры имеют встроенный монитор контроля питания (су- первизор). Микроконтроллеры этого семейства имеют обычный JTAG (как у первого семейства). Система при наличии фирменного программ- 356
Таблица 3 ХАРАКТЕРИСТИКА С8051F206 C8051F220 C8051F221 j C8051F226 C8051F230 C8051F231 C8051F236 Производительность, MIPS 25 25 25 25 25 25 25 Flash Memory, К 8 8 8 8 8 8 8 IRAM 1,25К 256 256 1.25К 256 256 1.25K Разрядность ADC (IQOksps) 12 8 8 8 — — — Количество входных каналов ADC 32 32 22 32 — — — Коэффициент усиления входов 16,8,4,2,1,0,5 + — — — — — — Количество компараторов 2 2 2 2 2 2 2 Наличие встроенной системы JTAG + + 4- + 4- 4- 4- Количество линий ввода/вывода 32 32 22 32 32 22 32 Наличие интерфейсов SPI, UART Количество 16-разрядных таймеров 3 3 3 3 3 3 3 Наличие охранного таймера WDT 4- 4- 4- 4- 4- 4- 4- Встроенный монитор питания + 4- + + 4- 4- 4- Встроенный прогр. Генератор 2—16 МГц Температурный диапазон, °C -4О...+85°С Тип корпуса TQFP TQFP LQFP TQFP TQFP LQFP TQFP Количество выводов 48 48 32 48 48 32 48 Диапазон напряжений питания, В 2,7...3,6 (9 мА) но-аппаратного обеспечения (стоимостью $99) обеспечивает отладку программ по точкам останова, в пошаговом режиме, в режиме ос- танова по истечении заданного времени. При этом имеется возмож- ность проверки и модификации значений памяти и регистров. Бее микроконтроллеры имеют высокопроизводительное х51 -совме- стимое ядро, 70 % инструкций выполняются за один-два системных так- та. Ядро оснащено развитой системой прерываний (до 21 источников). Характеристики памяти и портов ввода/вывода приведены в табл. 2. Flash-память всех микроконтроллеров программируется внут- рисхемно. Следует подчеркнуть, что все входы/выводы совместимы с внешними пятивольтовыми микросхемами. Набор периферии (тай- меры, интерфейсы) также приведен в табл. 2. Б состав входит также охранный таймер WDT. На кристалле имеется программируемый встроенный генератора 2...16 МГц. Микросхема может программи- роваться на работу с кварцевым резонатором, времязадающей RC- цепочкой только конденсатором или внешним генератором, причем переключение между режимами возможно в ходе выполнения про- граммы. Бее микросхемы имеют режимы энергосбережения. 357
ЧЕТВЕРТОЕ СЕМЕЙСТВО МИКРОКОНТРОЛЛЕРОВ 38051F3XX Четвертое семейство насчитывает всего четыре типа микроконт- роллеров, зато это, пожалуй, самые маленькие из микроконтролле- ров в мире. Они имеют оригинальный корпус размером всего 3x3 мм2 и с 11-ю выводами (см. рис. 1). Основные характеристики этого се- мейства приведены в табл. 4. Таблица 4 ХАРАКТЕРИСТИКА C8051F300 C8051F301 C8051F302 C8051F303 Производительность, MIPS 25 25 25 25 Flash Memory, К 8 8 8 8 IRAM 256 256 256 256 Разрядность ADC (500ksps) 8 — 8 — Количество входных каналов ADC 8 — 8 — Коэффициент усиления входов 4, 2, 1,0,5 Встроенный датчик температуры + — + — Количество компараторов 1 1 1 1 Наличие встроенной системы отладки + + + + Количество линий ввода/вывода 8 8 8 8 Наличие интерфейсов SMBus, UART 16-разрядный таймер-счетчик + + + + Количество 16-разрядных таймеров 3 3 3 3 Наличие охранного таймера WDT + + + + Таймер реального времени + + + + Встроенный монитор питания + + + + Встроенный генератор, МГц 25 25 20 20 Температурный диапазон, °C -40 : +85°С Тип корпуса 11-Pin Micro Lead Диапазон напряжений питания, В 2,7...3,6 (5,8 мА) Четвертое семейство содержит уникальные малогабаритные мик- роконтроллеры. Два микроконтроллера имеют восьмиканальные восьмиразрядные ADC. Все микроконтроллеры работают от источника питания 2,7...3,6 В. Потребляемый ток не превышает 5,8 мА при частоте 25/20 МГц. Все микроконтроллеры имеют высокопроизводительное х51-со- вместимое ядро, 70 % инструкций выполняются за один-два систем- ных такта. Ядро оснащено системой прерываний. Микроконтроллеры этого семейства имеют встроенную систему отладки. Характеристики памяти и портов ввода/вывода приведены в табл. 4. Flash-память всех микроконтроллеров программируется внутрисхем- 358
но. Следует подчеркнуть, что все входы/выводы совместимы с внешними пятивольтовыми микросхемами. Набор перифе- рии (таймеры, интерфейсы) также приведен в табл. 4. В со- став входит также охранный таймер WDT. На кристалле имеется не- программируемый встроенный генератора на 25 (300, 301) или 20 (302, 303) МГц. Из-за этого работа UART для моделей 300,301 (25 МГц) допускает ве- роятность 2 % ошибки. Рис. 1. Так выглядит корпус микроконтролле- ра четвертого семейства Описанные микроконтрол- леры фирмы Cygnal являются мощными интегрированными систе- мами сбора и обработки аналоговых сигналов, в которых удачно соче- таются аналого-цифровые и цифро-аналоговые узлы с входными мультиплексорами и программируемыми усилителями и высокопро- изводительным и «традиционным» ядром семейства х51. Микросхе- мы оснащены достаточно большими объемами Flash-памяти с внут- рисхемным программированием, а многие из них— еще и достаточно большим объемом встроенной оперативной памяти. Пониженное на- пряжение питания обеспечивает малые токи потребления при доста- точно высоких тактовых частотах, но это никак не сказывается на сты- ковке этих микросхем с традиционными пятивольтовыми микросхемами. Иными словами, некоторые представители этих се- мейств являются практически завершенными микроконтроллерными системами с очень широким спектром применений. К ВОПРОСУ О ПРОИЗВОДИТЕЛЬНОСТИ МИКРОКОНТРОЛЛЕРОВ ФИРМЫ CYGNAL Появление микроконтроллеров фирмы Cygnal в очередной раз изменило ситуацию на рынке МК. Еще пару лет назад изделия се- мейства х51 были самыми представительными (как с точки зрения количества моделей, так и числа их производителей), самыми «по- жилыми», пока еще популярными, да одними из самых дешевых (вер- сии Atmel). Но они не могли похвастаться ни рекордной производи- тельностью, ни разнообразием новой периферии, ни наличием встроенных средств для отладки и программирования через RS-232 или JTAG-интерфейсы. Казалось, что х51 изжили себя, и их уход с 359
рынка — вопрос ближайшего будущего, в связи с чем все, кто рабо- тает с ними, должны начать думать о будущем и обратить свой взор на более современные контроллеры. Однако, когда год назад Analog Devices все-таки довела до коммер- ческого уровня свои микроконвертеры, ситуация начала меняться. А CygnaFoBCKHe контроллеры изменили ее весьма существенным обра- зом. Предложенное фирмой Cygnal ядро МК обладает (по крайней мере по документам) почти что рекордной производительностью среди 8- разрядных МК. Микроконтроллеры снабжены JTAG-интерфейсом, позволяющим осуществлять внутрисистемное программирование кристалла и отлаживать систему без отвлечения на это ее ресурсов. CygnafoBCKHe изделия имеют несколько независимо функционирую- щих последовательных портов, а также программируемую структуру параллельных портов (любая линия может работать как в режиме с открытым стоком, так и с «подтягивающим» резистором). Добавлю, что встроенный АЦП может быть программно скоммутирован с лю- бой из линий любого параллельного порта. Можно перечислить и бо- лее развитую, чем у прототипа систему прерываний (два десятка век- торов), и сторожевой таймер, и встроенный тактовый генератор с возможностью переключения «на лету» с внутреннего тактового гене- ратора на внешний, и шесть источников сигнала сброса, и возмож- ность записи данных во Flash-память, благодаря чему они сохраняют- ся даже при выключенном питании, и трехвольтовое питание с малым потреблением — не буду перечислять все нововведенные прелести, и без них уже очевидно, что микроконтроллеры от Cygnal стали (по край- ней мере на мой взгляд) даже более привлекательными, чем Atmel’oBCKne AVR, не говоря уже об изделиях фирмы Microchip. Однако наиболее интересный вопрос — какова же реальная про- изводительность новых микроконтроллеров, насколько она превос- ходит производительность стандартных МК семейства х51? Ответ на этот вопрос можно получить лишь прогнав на том и другом МК один и тот же программный фрагмент и сравнив затем полученные ре- зультаты. С этой целью в распоряжение автора настоящих строк фирмой «Атос», дистрибьютером CygnaFoBCKHx изделий, был пре- доставлен Development Kit с контроллером C8051F226. Именно он И был использован для проведения этого сравнительного теста. Однако прежде, чем описать полученные результаты, я хотел бы сказать кое-что об особенностях этих контроллеров, поскольку они только-только появились на рынке и подробно нигде еще толком не описывались. Приводимые ниже данные относятся к МК C8051F226, но многое из сказанного распространяется и на остальных членов этого семейства (C8051F206, C8051F220/221, C8051F230/231/236). 360 '
Диапазон питающих напряжений новых МК — 2,7...3,6 В, мак- симальный ток потребления (на частоте 25 МГц с работающим АЦП)— 9 мА. При работе на частоте 2 МГц и выключении АЦП по- требление снижается до 1 мА, а в режиме IDLE — и вовсе до 100 мкА. Микроконтроллеры имеют четыре 8-разрядных параллельных порта ввода/вывода. Несмотря на то, что сами МК питаются от 3-вольтового источника, линии портов при этом допускают прямое соединение с 5- вольтовыми входами и выходами других микросхем. Максимально до- пустимый ток через каждую линию порта, если верить документации, составляет 200 мА (!). Также приведены данные, гласящие, что при 10- миллиамперном вытекающем токе уровень логической 1 на линии порта снижается не более чем на 0,8 В в сравнении с напряжением питания, а при втекающем в линию порта токе, равном 25 мА, уровень логическо- го нуля не превышает 1 В. Из последнего можно сделать вывод, что ли- нии порта вполне в состоянии напрямую управлять светодиодами, по крайней мере до тех пор, пока общая мощность, рассеиваемая кристал- лом, не превысит максимально допустимую, равную 1 Вт. Далее отмечу, что внутренняя структура линий параллельных пор- тов отличается от той, которая была характерна для первых МК семей- ства х51. Линии всех четырех портов микроконтроллеров фирмы Cygnal одинаковы. Все они путем занесения информации в соответ- ствующие регистры могут быть настроены как на работу в режиме с открытым коллектором, так и в режиме с «подтягивающим» резисто- ром (роль последнего исполняет полевой транзистор соответствую- щей проводимости). Далее использование этих линий для выполне- ния закрепленных за ними альтернативных функций также требует разрешения путем записи единичек в соответствующие разряды реги- стров, отвечающих за выполнение этих функций. И последнее—каж- дая из линий каждого порта путем записи соответствующей инфор- мации в один из регистров, обслуживающих АЦП, может выполнять функции аналогового входа, т. е. возможна оцифровка аналогового сигнала, поданного на любую из 32 линий портов микроконтроллера. Все вышеперечисленное означает, что в пользовательской програм- ме должен быть предусмотрен фрагмент, который перед началом ра- боты настроит используемые линии портов ввода/вывода на функци- онирование в нужном режиме. Подобные фрагменты отсутствуют в программах, которые были написаны и оттранслированы для других МК семейства х51, произведенных иными производителями. Следо- вательно, для микроконтроллеров фирмы Cygnal простой перенос (на Уровне оттранслированных кодов) программ, написанных для иных 51-х МК, оказывается невозможным — вы должны взять исходник, внести в него команды, которые осуществят соответствующую на- 361
стройку используемых линий портов, перетранслировать полученную программу, после чего она может работать на МК фирмы Cygnal. Еще одна особенность, которую нужно иметь ввиду — стороже- вой таймер Cygnal’oBCKnx контроллеров после сброса оказывается в активном состоянии, и если его не отключить, то по прошествии за- данного промежутка времени он осуществит пересброс МК. Если вы не планируете использовать этот таймер, то вам нужно предусмот- реть его отключение при инициализации МК. Осуществляется это при помощи последовательно выполняемых контроллером команд: CLR ЕА MOV WDTCN,#ODEH MOV WDTCN,#OADH SETB EA где WDTCN — регистр сторожевого таймера, размещенный в регис- тровом пространстве МК по адресу OFFH. Приведенные выше команды необходимо разместить в начале программы, там же, где будут размещены вышеупомянутые коман- ды настройки линий портов. Таким образом, использование микро- контроллеров фирмы Cygnal требует обязательной перекомпиляции ранее написанных программ. Хотя, конечно, особой проблемы в этом нет — исходники у разработчиков всегда под руками. Кстати, нужно отметить, что поставляемое фирменное ПО рабо- тает под Windows (точнее, не работает под DOS — как ни крути, на дворе уже третье тысячелетие). В связи с этим у похожих на меня лю- бителей работать «по старинке» под DOS, появляются некоторые про- блемы, обусловленные необходимостью привыкания к новой среде. К тому же может возникнуть нужда подредактировать исходники, если директивы ассемблера в новой и в старой среде пишутся по-разному. О каких еще особенностях новых микроконтроллеров хотелось бы сказать? Очень интересно у них сделана система тактирования кон- троллера. МК могут работать как от встроенного тактового генерато- ра, так и от генератора с внешним частотнозадающим элементом. В качестве последнего может использоваться не только кварцевый или керамический резонатор, но и RC-цепочка и даже отдельная емкость. Естественно, возможна работа и с тактовой последовательностью, фор- мируемой каким-либо внешним в отношении к МК генератором. При включении микроконтроллер начинает работать с внутрен- ним генератором, функционирующим на частоте 2 МГц. При этом, как будет показано ниже, его быстродействие на операциях, не требу1- ющих работы с внешней памятью и портами ввода/вывода, оказыва- ется выше, чем у стандартного х51, работающего с 12-мегагерцовыМ кварцем. Занесением информации в соответствующий регистр вЫ 362
можете увеличить частоту внутреннего генератора до 4, 8 или 16 МГц, а также переключиться на работу от внешнего частотнозадающего эле- мента. Все переключения возможны «на лету», т. к. работа микроконт- роллера при этом не сбивается. Разработчики МК рекомендуют ис- пользовать подобные переключения в устройствах, критичных к энергопотреблению — когда нет необходимости в высоком быстро- действии, вы можете переключиться на энергосберегающие внутрен- ние 2 МГц, когда возникнет необходимость в быстром обсчете — пе- реключитесь на работу с внешним 25-мегагерцовым кварцем. Помимо 8- или 12-разрядного АЦП все перечисленные контрол- леры имеют в своем составе по два компаратора. Их выводы, правда, нельзя подключать, как АЦП, к любой линии любого порта, т. к. они привязаны к линиям порта 1 (Р1.0-Р1.5). Крометого, еще один внут- ренний (недоступный пользователю) компаратор отслеживает уро- вень питающего напряжения, и если последний станет ниже допус- тимого, то компаратор (при наличии разрешающего сигнала на входе MONEN) осуществит пересброс микроконтроллера. Еще несколько приятных особенностей имеется у АЦП. Первое — предусилитель с программно устанавливаемым коэффициентом уси- ления от 0,5 до 16 с шагом 2 (по старту он равен 1). Вторая особен- ность носит название «оконный компаратор». Это аппаратное уст- ройство, которое может отслеживать, находится ли измеренный при помощи АЦП сигнал внутри окна, границы которого заданы содер- жимым в соответствующих регистрах, и если сигнал выйдет за уста- новленные рамки, установится флаг соответствующего прерывания. Система прерываний микроконтроллеров содержит 19 векторов, в сравнении со стандартными пятью у первых х51. Это прерывания, обслуживающие все внутренние аппаратные ресурсы новых микро- контроллеров. Отмечу еще, что к двум стандартным добавлено еще 4 дополнительных внешних прерывания. Рассматриваемые микроконтроллеры (С8051F206, С8051F220/221/226, C8051F230/231/236) имеют 8 кбайт программной Flash-памяти (микро- контроллеры старших семейств имеют «на борту» 32-64 кбайт). Про- граммирование ее осуществляется через JTAG-интерфейс. Поми- мо Flash-памяти программ, имеется еще 128 бит Flash-памяти данных. Данные, занесенные в этот сегмент, не теряются при вык- лючении питающего напряжения. Необходимо только учитывать, что хранящиеся во Flash-памяти данные нельзя переписывать так- же легко, как и данные в обычном ОЗУ. Перед изменением содер- жимого ячейки Flash-памяти ее нужно стереть. При этом, правда, стирается содержимое всего сегмента (всех 128 ячеек). В связи с этим перед стиранием содержимое этого сегмента нужно перепи- 363
сать в ОЗУ (например, в старшие 128 байт внутренней оператив- ной памяти данных), там осуществить требуемые изменения, сте- реть содержимое Flash-памяти данных, после чего вернуть во Flash- память данные из внутренней оперативной памяти. Нельзя сказать, что это — самый удобный способ работы с Flash-памятью данных, но в общем, не так уж он и сложен. Кстати, микроконтроллеры Cygnal имеют возможность программ- но изменять содержимое Flash-памят и программ (вдумайтесь в сказан- ное!). Трудно придумать много случаев, зачем это может быть нужно, но по крайней мере один такой случай имеется — это возможность ис- пользования Flash-памяти программ для хранения более чем 128 байт данных, не стирающихся при отключении питания. В общем, у вас мо- жет быть в распоряжении и 1, и даже 2 кбайта такой Flash-памяти дан- ных, что в некоторых применениях оказывается крайне полезно. Если режим записи во Flash-память активирован, информация в нее зано- сится командой M0VX, а читается командой M0VC. Кстати, разработчики микроконтроллера также позаботились и о том, чтобы случайный сбой не вызвал изменения содержимого памяти программ — процедура ак- тивации разрешения записи информации во Flash-память предусмат- ривает несколько обращений к регистрам, и вероятность подобной пос- ледовательности действий при сбое ничтожно мала. Несколько иначе, чем в стандартных МК, реализована и защита памяти программ от несанкционированного считывания. Занесени- ем соответствующей информации в две старшие ячейки Flash-памя- ти программ закрывает возможность считывания (порознь или всех вместе) каждого из килобайтных секторов программной памяти. Попытка стереть содержимое сектора, в котором расположены эти ячейки, приводит к стиранию всей программной памяти. Далее, часть программной памяти ниже заданного пользователем значения не может быть прочитана при помощи команды MOVC, что также защи- щает ее от несанкционированного чтения. Теперь перейдем к обещанным результатам сравнения произво- дительности Cygnal’овских контроллеров и стандартных МК семей- ства х51. Для начала обратимся к рис. 2, на котором представлена пиковая производительность новых контроллеров в сравнении с ана- логичным параметром других популярных МК. Видно, что пиковая производительность 25-мегагерцового Cygnal’oBCKoro контроллера составляет 25 MIPS, что на самом деле по- просту является следствием того, что простые инструкции в нем вы- полняются за 1 такт, которых в микросекунде при тактовой частоте МК в 25 МГц ровно 25, не больше и не меньше. У 33-мегагерцового 80С51 от Philips этот параметр, как следует из рис. 2, примерно раз в 8 меньше, а у 364
Cygnai Microchip Philips ADuC8'l2 CIP-51 PtC17C75x 80C5I 8C51 (25MHz elk) (33MHz elk) (33MHzclk) fl6MHzclk) Рис. 2 12-мегагерцового, если следо- вать э тим цифрам, пиковая производительность должна быть ниже, чем у 33-мегагер- цевого, еще раза в 2,5.. .3. Однако приведенные па- раметры только качественно отражают ситуацию, показы- вая, что Cygnal’oBCKHe кон- троллеры быстрее стандарт- ных изделий от Philips или Atmel. Принимать же во вни- мание при расчетах числен- ные значения этих парамет- ров я не рекомендовал бы. Реальное быстродействие можно оценить лишь при прогоне на МК фрагментов реальных программ, типичных для многих применений. Собственно, именно это и было сделано. В качестве тестовой программы использовался фрагмент програм- мы реализованного программным образом л-регулятора. В этом фраг- менте выполнялись следующие действия: сравнение двух двухбайто- вых чисел, нахождение их разности (это разность между заданной величиной и ее измеренным значением), накопление разности в пяти- байтовом «интеграторе» с ограничением накопленного сверху и снизу, многобайтовое умножение и деление накопленной суммы и сложение ее с произведением двухбайтовой константы и разности между задан- ным и измеренным значениями. Длина программы составляет три с по- ловиной сотни строк на ассемблере составляет чуть более 500 байт пос- ле трансляции. Запущенная на 12-мегагерцовом МК 89С51 от Atmel, она была выполнена за 1,208 мкс. Су§паГовский контроллер, работающий на тактовой частоте 2 МГц, справился с ней за миллисекунду. Другими словами, при в 6 раз более низкой тактовой частоте последний показал производительность, в 1,2 раза более высокую, чем стандартный х51. Следовательно, нареальной смеси команд, характерной для типичных вычислительных применений (т. е. без обращений к внешней памяти и портам ввода/вывода), микроконтроллеры от Cygnal работают в 7.. .7,5 раз быстрее, чем стандартные х51 на той же тактовой частоте. С учетом того, что верхняя тактовая частота Cygnal’oBCKHx контроллеров составляет сегодня 25 МГц, преимущество их на этой частоте над 12- мегагерцовыми стандартными х51 составит примерно 15 раз, а ожида- емые 33-мегагерцовые изделия от Cygnal и вовсе в два десятка раз об- гонят старые добрые 12-мегагерцовые х51. Однако, подчеркну еще раз, это справедливо лишь для типичных вычислительных применений, без 365
обращений к внешней памяти и портам ввода/вывода. Если же такие обращения будут иметь место, прирост производительности окажется, по-видимому, раза в полтора ниже. Таким образом, за счет совершенной архитектуры Cygnal’oBCKHe микроконтроллеры оказались по производительности не уступающи- ми даже 16-разрядным х51-совместимым микроконтроллерам, таким например, как изделия семейства MCS-251 от Intel. А широкие возмож- ности, малое энергопотребление и приемлемые цены делают изделия от Cygnal весьма интересными для разработчиков. МЕЧТА РАЗРАБОТЧИКА! Микроконтроллеры 51 -й серии С8051 • 25 mips бЯИиМмДИик «зж • ON CHIP Л A • 12 Bit ADC+aoW^ • l2C, SPI & UART:/’ * • from -45 °C То'Шк^ЁГ • Package from 11 pin ООО АТОС 125315, г. Москва, ул. Усиевича, д. 24/2 Тел./факс: (095) 787-48-05, 155-40-35, 155-40-14 www.atos.ru info@atos.ru
Приложение 11 МИКРОКОНВЕРТОРЫ (СЕМЕЙСТВО ADuC8xx) — СИСТЕМЫ СБОРА ДАННЫХ НА КРИСТАЛЛЕ Семейство микросхем ADuC8xx — это очередной этап развития тех- нологии сбора и преобразования аналоговой информации в цифро- вую и обратно. В основе идеи, успешно реализованной фирмой Analog Devices, лежит дополнение кристалла стандартного высокопроизво- дительного АЦП возможностями, делающими удобным процесс дальнейшей обработки информации без ухудшения параметров из- меряемых аналоговых сигналов. Для этого на кристалл АЦП добав- лена цифровая часть, не влияющая на работу и производительность АЦП и состоящая из стандартного микроконтроллера и энергонеза- висимой программируемой памяти (Flash). В настоящее время (начало 2002 г.) семейство микросхем ADuC8xx состоит из трех микросхем (ADuC812, выпущенной в серийное про- изводство летом 1999 года, ADuC824, серийно выпускаемой с октяб- ря 2000 г., и ADuC816, ставшей доступной для широкого круга пользо- вателей в феврале 2001 г.). В ближайших планах Analog Devices стоит выпуск еще двух микросхем этого семейства, которые смогут завер- шить ряд предлагаемых решений: (ADuC812SO — 28-выводная «де- шевая» версия ADuC812 и ADuC824B2 — 64-килобайтная версия микросхемы ADuC824). Прошло уже больше года после знакомства читателей с первыми микросхемами семейства ADuC8xx, и нас приятно удивляет интерес разработчиков к этой линии продукции фирмы Analog Devices. Осо- бенный интерес ощущается к «первенцу» семейства - микроконвертору ADuC812. Вначале постараемся дать ответы на наиболее часто повторя- ющиеся вопросы разработчиков по использованию этой микросхемы. Далее будет представлен материал по микросхеме ADuC816 и ее отли- 367
чительным от других продуктов семейства особенностям, после этого — материал о практическом использовании ADuC824. ЧАСТО ЗАДАВАЕМЫЕ ВОПРОСЫ ПО ИСПОЛЬЗОВАНИЮ ADUC812 В: У микроконвертора имеются два независимых вывода аналого- вой и цифровой «земли». Следует ли соединить каждый из них с соот- ветствующей «землей» на плате'? О: Нет, за исключением того случая, когда аналоговая и цифровая «земли» вашей платы соединяются в непосредственной близости от микросхемы. Во всех остальных случаях микроконвертор лучше «за- землять» на одну «землю» (наименее «шумную», как правило, анало- говую) для получения оптимальной производительности АЦП и ЦАП. В: ADuC812 имеет отдельные выводы для подачи аналогового и цифрового питания. Можно ли применять раздельное питание, на- пример 3,3 В для DVdd и 5 В для AVdd? О: Нет. Максимально допустимая разница между DVdd и AVdd со- ставляет ±0,3 В, поэтому лучше питать микроконвертер одним напря- жением. Самое большее, чем вы можете разделить шины аналогового и цифрового питания — это или небольшая (размера 0805) феррито- вая шайба («бусинка», ferrite bead), или резистор сопротивлением 1...2 Ома. Конечно, небходимо развязать каждый вывод питания на зем- лю через планарный конденсатор емкостью 0,1 мкФ с минимальной длиной проводников на плате. Также необходимо убедиться, что на вашей плате установлены электролитические конденсаторы для раз- вязки шин питания и земли. Если вы все же решите применить источ- ники питания, разделенные ферритовой шайбой или резистором ма- лого сопротивления, проверьте, установлены ли планарные и электролитические конденсаторы на каждый источник питания. В: Поддерживает ли ADuC812 security bits для защиты памяти Flash/EE от записи/чтения? О: Эти биты есть в данном микроконверторе, но они не функци- онирую корректно, поэтому эта защита не заявлена фирмой-произ- водителем для ADuC812. Не рекомендуется производить запись по адресу ОхАО, это может привести к запиранию микросхемы. В: Нужно ли использовать схему внешней генерации сигнала сбро- са для ADuC812? О: Необходимо реализовать внешнюю схему POR (power-on reset) для управления входом RESET микросхемы. Эта схема должна удер- живать высокий уровень на входе RESET даже при уменьшении на- 368
пряжения питания на AVdd и на DVdd ниже значения 2,5 В. Более того, напряжение на Vt>D должно поддерживаться выше уровня 2,5 В в те- чение, по крайней мере, 10 мс до момента переключения сигнала RESET в низкий уровень. Схема POR должна сохранять работоспособность при напряжении 1,2 В или даже меньше. В: Порт 1 обычно используется для аналогового ввода. Допустимо ли использование порта 1 для цифрового ввода/вывода? О: Этот порт может использоваться для аналоговых или для циф- ровых входов, но не для цифровых выходов. По умолчанию этот порт сконфигурирован для аналоговых входов. В этом случае регистр этого порта для всех входов содержит OxFF. Чтобы сделать какой-либо вход цифровым просто очистите соответствующий этому входу бит в ре- гистре порта (Р1). В: С какой максимальной тактовой частотой допустимо ис- пользование микроконвертера? О: Ядро 8052 может нормально работать при величине тактовой частоты, намного превышающей максимальную тактовую частоту 16 МГц, однако в этих условиях возможно ухудшение эффективнос- ти работы аналоговой части. Поэтому, использование кварцевых ре- зонаторов с большей частотой, чем 16 МГц, не рекомендуется. В: Является ли встроенное ядро микроконтроллера 8052 стати- ческим? Какова минимальная тактовая частота ADuC812? О: Да. В принципе, ядро 8052 может работать при очень медлен- ном тактовом сигнале. Но при этом надо учитывать, что тактовый сигнал используется и для получения тактового сигнала для АЦП, и снижение частоты этого сигнала уменьшает производительность АЦП. Минимальная тактовая частота АЦП составляет 400 кГц. Так- товая частота АЦП получается из частоты тактового сигнала делени- ем на 1, 2, 4 или 8 (выбирается через регистр ADCCON1). Таким об- разом, для сохранения работоспособности АЦП, минимальная тактовая частота составляет 400 кГц. НОВЫЙ МИКРОКОНВЕРТЕР ADUC816 — ДВУХКАНАЛЬНАЯ, 16 РАЗРЯДНАЯ СИСТЕМА СБОРА ДАННЫХ СО ВСТРОЕННЫМ МИКРОКОНТРОЛЛЕРОМ Остановимся подробнее на трех отличительных особенностях данного микроконвертора серии ADuC8xx: двухканальном сигма- дельта АЦП, тактовом генераторе, реализованном на стандартном 369
«часовом» кварцевом резонаторе на 32,768 кГц и режимах програм- мирования (модификации) внутренней Flash/EE памяти. АЦП Микроконвертор имеет два канала 16-разрядных сигма-дельта АЦП — основной и дополнительный. Рассмотрим функциональные особенности основного канала. При входном сигнале с амплитудой ±2,56 В и частоте обновления 20 Гц этот канал АЦП имеет реальное разрешение 16 разрядов и при входном сигнале ±20 мВ и той же час- тоте обновления 13 разрядов . К АЦП основного канала можно подключить три дифференциаль- ных входа, при этом мультиплексор может быть настроен для следую- щей конфигурации сигналов на входах: Авх 1/Авх2, АвхЗ/Авх4 или АвхЗ/ Авх2. Входной буфер основного канала необходим для повышения вход- ного сопротивления и позволяет подключать АЦП непосредственно к тензорезистивным датчикам, например, к датчикам механических на- пряжений, а также к резистивным датчикам температуры. Высокое со- противление входов основного канала позволяет использовать RC-цепи во входных цепях, что может пригодиться для задач подавления шумов и фильтрации радиоэлектронных помех. Особенностью микросхемы является наличие двух встроенных источников тока по 100 нА, подклю- ченных ко входу буфера. Они могут быть использованы для «привязки к земле» высокоомных входов, а также для проверки работоспособнос- ти аналоговых входов до начала оцифровки. После буфера сигнал попа- дает на программируемый усилитель, позволяющий программно вы- бирать восемь диапазонов входных напряжений: для однополярного входа диапазон изменения напряжения находится в пределах от 0 до 2,56 В, для двуполярного — от ±20 мВ до ±2,56 В. Структура дополнительного канала АЦП отличается от основ- ного отсутствием буфера и программируемого усилителя. Поэто- му входной сигнал сразу подается на сигма-дельта модулятор. Вне- шний входной сигнал прикладывается относительно «земли», имеет фиксированный диапазон напряжения от 0 до 2,5 В и может быть подан с одного из трех внешних входов АвхЗ-Авх5. Значение пара- метров оцифровки дополнительного канала АЦП — реальное раз- решение, интегральная нелинейность, температурный дрейф коэф- фициента усиления, величина подавления помех, наведенных питающей 50/60 Гц сетью на входной аналоговый сигнал и на сиг- нал опорного напряжения, подавление пульсаций источника пита- ния — такие же, как в основном канале. Преобразователь дополни- тельного канала уступает основному каналу по температурному дрейфу нуля и интегральной ошибке измерений. 370
Как и во всех микросхемах! семейства ADuC8xx, на кристалле ADuC816 имеется встроенный датчик температуры, который может быть использован для оперативного измерения температуры крис- талла и внесения соответствующих программных коррекций в про- изведенные измерения. Для питания внешних датчиков, например, на основе резистив- ного моста, ADuC816 имеет два источника постоянного тока по 200 мкА каждый. Программным путем можно управлять подачей тока на выходы IEXT1 и/или IEXT2 от какого-либо одного источни- ка, либо от двух источников вместе (тогда ток на одном выходе будет 400 мкА). Источник опорного напряжения (ИОН) может использоваться либо внутренний, с напряжением 1,25 В и температурной стабильностью 100 ррт/ °C, либо внешний, с напряжением, не превышающим напря- жение источника питания. Для подключения к АЦП внешнего ИОН мо- гут быть задействованы дифференциальные высокоомные входы REFIN+ и REFIN-. Состояние этих входов контролирует встроенный в ADuC816 детектор опорного напряжения. В некоторых случаях, когда необходимо задействовать всю разрешающую способность АЦП, ис- пользование внутреннего источника менее предпочтительно, т. к. он может иметь меныпую температурную стабильность и меньшую абсо- лютную величину опорного напряжения (1,25В), чем внешний. ADuC816 поставляются с заводской калибровкой 5В/25°С. Ка- либровочные коэффициенты сохраняются в Flash/EE и при каждом включении источника питания микросхемы переписываются в со- ответствующие регистры. В большинстве приложений этих коэф- фициентов достаточно для работы системы, однако если микро- конвертор используется при напряжении питания 3 В и при температуре корпуса, значительно отличающейся от 25 °C, необхо- дима пользовательская калибровка. Тактовый генератор ADuC816 В микроконверторе ADuC816 в качестве внешнего тактового ге- нератора очень удачно применен недорогой, но в тоже время очень распространенный кварцевый резонатор на 32,768 кГц. Кварцевый резонатор подключается к контактам XTL1 и XTL2 микроконверто- ра. Схема подключения его максимально проста и не содержит до- полнительных компонентов, но это не означает, что на сигма-дельта модуляторы в каналах АЦП и на ядро встроенного микроконтролле- ра поступает нестабильный тактовый сигнал. Микроконвертор ADuC816 содержит блок PLL (Phase Locked Loop), состоящий из ум- ножителя частоты и системы ФАПЧ, стабилизирующей частоту сиг- 371
нала после ее умножения в сотни раз. Применение одного такого ре- зонатора с одной стороны облегчает реализацию устройств на базе ADuC816, а с другой стороны, обеспечивает необходимую синхро- низацию работы АЦП и ядра 8051. Итак, сигнал от внешнего тактового генератора поступает на блок умножителя с ФАПЧ, который умножает частоту сигнала в 384 раза для получения стабильной частоты 12,582912 МГц. Час- тота этого сигнала далее делится программно в заданое число раз, кратное двум, и поступает на ядро 8051 в качестве тактирующего сигнала. Таким образом, в задачах, где не требуется максимальная скорость работы микроконтроллера, возможно снизить потребля- емый устройством ток путем изменения тактовой частоты. Диа- пазон регулирования частоты находится в пределах от 98,304 кГц до 12,582912 МГц. Программирование содержимого внутренней памяти микроконвертора ADuC816 содержит энергонезависимую память Flash/EE для хра- нения приложений пользователя. Программирование (изменение содержимого) этой памяти может осуществляться г двух режи- мах — параллельном и последовательном. В параллельном режиме доступ к внутренней памяти микросхемы осуществляется через вне- шний параллельный порт (порт 3). Для нормальной работы в этом режиме необходимы стандартные аппаратные средства (програм- маторы), выпускаемые третьими фирмами, и поддерживающие микросхемы семейства ADuC8xx. В последовательном режиме дос- туп к внутренней памяти осуществляется через стандартный асин- хронный последовательный порт с помощью несложного кабеля. Последовательный режим программирования микросхем ADuC816 ничем не отличается от соответствующих режимов .микросхем ADuC812 и ADuC824 и дает возможность пользователю програм- мировать микроконвертор прямо «в системе». Оба режима програ- мирования поддерживают стандартные режимы защиты от несан- кционированного копирования/чтения /модификации содержимого внутренней памяти. ADUC824 — ПЕРВОЕ ЗНАКОМСТВО О микроконвертерах от Analog Devices серии ADuC немало сказано в различных журналах — «ЭЛЕКТРОНИКЕ И КОМПОНЕНТАХ», «ЧИП НЬЮС», «КОМПОНЕНТАХ И ТЕХНОЛОГИЯХ» и т. д. Однако все сказанное принадлежит менеджерам дистрибьюторов Analog Devices, которые не имеют собственного опыта практического использования 372
описываемых микросхем, а лишь оперативно доносят до нас информа- цию, подготовленную сотрудниками Analog Devices. При этом могут упускаться некоторые тонкие моменты, самостоятельное выявление ко- торых порой требует от разработчика немалых затрат времени. В этой связи, особенно на начальном этапе знакомства с микросхемой, бывает полезным опыт, приобретенный теми, кто уже прошел этот путь. Авто- ры настоящего материала имели возможность поработать с бета-верси- ей кристалла ADuC824 и делятся первыми впечатлениями. Микросхема ADuC824 является вторым представителем микро- конвертеров, продвигаемых фирмой Analog Devices на мировом рын- ке. Для тех, кто еще не знаком с идеологией микроконвертера, вкрат- це скажем, что это такое. По мере развития микроконтроллеров фирмы-производители все чаще и чаще стали включать в состав их периферийных устройств ана- лого-цифровые преобразователи. Вначале их разрядность была 8 бит, затем появились 10-, 12- и даже 14-битные АЦП. Однако они были как- бы придатком к контроллеру. Разработчики микросхемы в первую оче- редь «вылизывали» сам контроллер, а АЦП получался таким, каким по- лучался. В итоге очень часто в процессе работы контроллера его внутренние сигналы оказывали такое воздействие на АЦП, что реаль- ный динамический диапазон последнего оказывался на 1-2, а то и на 3 бита хуже заявленного, что проявлялось в «дрожании» младших разря- дов при неизменном входном сигнале и опорном напряжении. Analog Devices пошла по иному пути. За основу микросхемы был взят добротный 12-разрядный АЦП, а в качестве интерфейса к нему был добавлен контроллер семейства х52. При этом от контроллера не требовалось никаких уникальных характеристик (лишь бы кор- ректно работал), а вся оптимизация микросхемы была направлена на то, чтобы контроллер не портил исходные характеристики АЦП. В итоге Analog Devices получила «честный» 12-разрядный АЦП (речь идет о первом члене семейства — ADuC812) с микроконтроллером в качестве интерфейса. Для того, чтобы подчеркнуть его коренное от- личие от выпущенных доселе микроконтроллеров со встроенными АЦП, разработчики назвали его микроконвертером. Убедившись в востребованности полученного изделия, Analog Devices приступила к созданию микроконвертера, основанного на многоразрядном сигма-дельта АЦП. Так возник ADuC824, содержа- щий 24-разрядный основной и 16-разрядный вспомогательный АЦП (это помимо ЦАПа, источников опорного напряжения, усилителей с переключаемым коэффициентом усиления, сторожевого таймера, часов и календаря реального времени, флэш-памяти и ряда других приятных для разработчика особенностей, перечисление которых 373
выходит за рамки настоящего материала). На момент подготовки публикации 824-й кристалл еще не был официально объявлен, и вы при благоприятном стечении обстоятельств могли бы получить лишь его бета-версию, содержащую некоторое количество ошибок. Имен- но такой кристалл и оказался в нашем распоряжении. Первая проблема, возникшая на пути его использования, состоя- ла в том, что его крайне сложно макетировать без соответствующей печатной платы (кристалл выпускается в 52-выводном PQFP, выво- ды короткие, расстояние между ними менее 1 мм). Кстати, обращаем внимание читателей на то, что шаг между выводами микросхемы выполнен не по дюймовой, а по миллиметровой сетке. Последнее отражено в datasheet’e, но, как оказалось, разработчики иногда не учи- тывают это. Далее, пайка таких корпусов без соответствующего обо- рудования довольно затруднительна. Конечно, в нашем отечестве долго еще будут находиться умельцы, которым по силам запаять на плату подобный корпус при помощи обычного паяльника, но вряд ли стоит пропагандировать подобную практику — можно перегреть микросхему или, наоборот, плохо пропаять контакты. Авторы настоящих строк пока не располагают паяльным обору- дованием требуемого уровня. Поэтому мы вынуждены были обра- титься к тем, кто его имеет — в фирму Argus Limited, дистрибьютора американской фирмы Расе, одного из мировых лидеров в производ- стве оборудования для монтажа и демонтажа электронных компо- нентов. Десять минут — и микросхема была смонтирована с нуж- ным качеством на нужном месте. Как следует из описания, программирование микроконверте- ра может быть осуществлено по каналу RS-232, без использова- ния какого-либо специального программатора. Программа download.exe, осуществляющая программирование микроконвер- тера ADuC812, была доступна на сайте Analog Devices ещес 1999 г., однако из описания на нее не следовало, в состоянии ли она про- граммировать ADuC824. Опасение вызывало то, что последний рекомендуется использовать с 32-килогерцовым кварцевым резо- натором (внутри чипа происходит умножение частоты на вели- чину, определяемую содержимым регистра PLLCON, и в зависи- мости от занесенного в него числа контроллер может работать на частоте 12,6; 6,3; 3,15; 1,57 МГц и т. д. вплоть до 99 кГц). При стар- те тактовая частота 824-го равна 1,57 МГц. nporpaMMadownload.exe требовала при запуске указывать в качестве параметров не только файл с заносимой программой в Intel НЕХ-формате, но и номер порта (С0М1 или 2) и частоту кварцевого резонатора. Возникал вопрос, какую частоту указывать — 32 кГц, 1,57 МГц или вообще 374
этот параметр опустить (последнее рекомендуется в том случае, когда частота кварца равна 11059 кГц). Как ни удивительно, кор- ректным оказался именно последний вариант — если в вашем ус- тройстве ADuC824 работает с кварцем 32 кГц, download.exe нуж- но запускать без параметра f. Видимо, последовательный канал ADuC824 настраивается таким образом, что при тактовой частоте 1,57 МГц он осуществляет обмен на скорости 9600 бод (это ско- рость обмена ADuC812 на частоте 11,059 МГц). Обмен по RS-232 осуществляется при помощи сигналов с уров- нями, отличными от ТТЛ. В описании нигде явно не указывалось, что для программирования ADuC824 нужно снабдить преобразова- телями уровня типа ADM-232, МАХ-202 и им подобными. Однако это действительно необходимо. Схема соединения ADuC824 и ADM232 приведена на рис. 1. Режим программирования по последовательному каналу запус- кается в том случае, когда при включении питания выход PSEN (вы- вод 41) соединен с общим проводом через резистор 1 кОм. Требуе- 375
мое замыкание осуществляется при помощи перемычки S1. Как вы- яснилось (потом мы это, естественно, нашли и в описании на мик- роконвертер), перемычка должна быть установлена именно в момент включения питания, а не в момент сброса — если в процессе работы микроконвертера замкнуть перемычку S1, а затем нажать на кнопку «сброс» (S2), режим программирования не активируется, и download.exe проходит некорректно. В распоряжении авторов имелись программы download.exe вер- сий 2.05 и 2.07. Первая программировала микроконвертер ADuC824 устойчиво, вторая, хоть и более поздняя по времени создания, по невыясненным причинам его не программировала. В качестве первой программы использовалась приведенная ниже примитивная программка proba.asm, которая при функционирова- нии осуществляла мигание светодиода на выводе Р2.1 (схема вклю- чения приведена на рис. 1). Последовательность загрузки в итоге ока- залась следующей. При выключенном питании плата с микросхемой соединялась кабелем со свободным последовательным портом, и ус- танавливалась перемычка S1. Затем на плату подавалось питание, и запускалась download.exe с параметрами: именем proba.hex и номе- ром COM-порта (см. описание на download.exe, файл uC004.pdf). Иногда, если загрузка не получалась (после завершения download.exe сообщает о том, с каким результатом прошла загрузка), операцию приходилось повторить. После этого от платы с микро конверт ером отключалось питание, снималась перемычка S1, снова подавалось пи- тание, и микро конвертер начинал выполнять занесенную програм- му (в конкретном случае — мигать светодиодом на Р2.1). Proba. asm org О ajmp START org 100 - START: cl г P2.1 ;pi n 29 mov RO,#50 I bl•: mov R1, #255 djnz R1,$ djnz R0, I bl 376
setb P2.1 ;pin 28 mov RO,#50 I b2: mov R1,#255 dj nz Rl, $ djnz RO, Ib2 sjmp START end Основной интерес, конечно, представляет не мигание светодиодом, а работа основного элемента микроконвертера — 24-разрядного АЦП. Программа, реализующая измерение при помощи этого АЦП, aduc.asm, приведена ниже. Там же приведена программа lcd_h.asm, осуществляю- щая вывод информации на ЖК-индикатор МТ10Т7 (подробнее см. «СХЕМОТЕХНИКА», №2/ 2000, стр. 16, 17). Измеряемое напряжение формировалось при помощи переменного резистора, включенного па- раллельно прецезионному источнику LM336Z-2.5 (рис. 1). АЦП про- граммировался на работу в непрерывном режиме в диапазоне 2,56 В с внутренним источником опорного напряжения. Одна из ошибок бета- версии ADuC824 состоит в том, что в регистр SF, задающий частоту из- мерения, нельзя заносить числа больше 200дес„ вследствие чего невоз- можно осуществить работу на самой низкой скорости, где достигается самая высокая точность. (К сожалению, мы вначале пытались запустить АЦП с SF=0FFH, и два дня не могли понять, почему чип ничего не изме- ряет. Файл errata.doc, где описаны эта и другие ошибки, мы удосужи- лись прочесть лишь после того, как нашли, что АЦП на низких частотах не работает). Мы заносили в регистр SF число 128 дес., что задало часто- ту измерения примерно 10 Гц. При этом мы наблюдали, что при неиз- менном положении движка подстроечного резистора даже при измере- нии относительно малого напряжения (около 200 мВ) старшие 16 бит результата оставались неизменными, а «дрожание» наблюдалось лишь в младших 8 битах. Это чуть хуже тех точностных параметров, которые Analog Devices гарантировала для ADuC824 в этом режиме (19 бит). Но возможно, что для достижения заявленной точности нужно экраниро- вать входные цепи микроконвертера и подстроечный резистор. aduc.asm 377
ADCSTAT equ 0D8h ADCMODE equ OD1h ADCOCON equ OD2h ADC1CON equ OD3h SF equ 004h RDYO equ ODFh RDY1 equ ODEh EADC equ OAEh ;EA equ OAFh ADCOH equ ODBh ADCOM equ ODAh ADCOL equ 0D9h ADC1H equ ODDh ADC1L equ ODCh AO equ P2.5 WR1 equ P2.4 DB3 equ P2.3 DB2 equ P2.2 DB1 equ P2.1 DBO equ P2.0 org Oh ajmp MAIN org 033h mov R5,A0C0H mov R4,ADCOM mov R3,ADCOL cal I DISPJO cl r RDYO ; cl г RDY1 ret i org 0100h $lcd_h.asm MAIN: call INIT_LCD 378
mov SF,#O8Oh mov ADCOCON,#OOOO1111b ; ext. reference ; input pai r AIN1 AIN2 ; uni polar coding ; range +- 2. 56V ; mov ADC1CON,#01000000b mov ADCMODE,#00100011b ; prim. ADC enable ; continuous conversion setb EADC setb EA loop: ajmp loop end lcd_h.asm MACRO %STROB_WR1 setb WR1 cl r WR1 ENDMAC MACRO %STROB_ADDR Cl r AO setb WR1 clr WR1 setb AO ENDMAC .подпрограмма вывода ;содержимого аккумулятора SET_BUS: ; на шину DB cl г С ггс А ; загружаем в порт movDBO.C ; младшую тетраду ггс А mov DB1,С ггс А mov DB2,С ггс А 379
mov DB3,С ret IN1T_LCD: mov A, #OFh cal I SET_BUS ; устанавливаем адрес OFh %STROBJ\DDR mov A, #01h call SET_BUS ; устанавливаем данные 01h %STR0B_WR1 movA,#0 ; сброс всех знакомест cal I SET_BUS; устанавливаем на шине О %STROB_ADDR ; генерируем строб записи адреса mov RO, 80 ; на шине уже установлен О, IbLint: ; инкремент адреса производится %STR0B_WR1 ; автоматически, inc R0 ; так что просто 20 раз cjne R0,#20,lbl_int ; выдаем строб данных ret C0DE_7: ; таблица семисегментных кодов цифр DB OEEh, 060h, 02Fh, 06Dn, OElh DB OCDh, OCFh, 068h, OEFh. OEdh DBOEBh, 0C7h, 08Eh, 067h, 08Fh, 08Bh 0,1,2,3,4 5,6,7,8,9 A,b,C,d,E,F CODER: ; подпрограмма кодировки ;в семисегментный формат mov DPTR.#C0DE_7 mov A, ©RO ; адрес кодируемой цифры в RO move A,@A+DPTR mov ©RO,A ; замещаем исходную цифру кодом ret PREP_HEX: mov 020h. #0 mov 0?1h, #0 mov 022h,#0 mov 023h,#0 mov 024h, ttO mov 025h,#0 ; подрограмма подготовки числа ; для индикации 380
mov A.,R5 ; младшую тетраду R5 помещаем mov RO,#021h ; в ОЗУ no адресу 21h xchd A,©RO swap A mov RO, #020h xchd A, ©RO : старшую тетраду в 20h mov A,R4 ; аналогично для R4 mov RO, #023h xchd A,©RO swap A mov RO, #022h xchd A,©RO mov A,R3 ; аналогично для R3 mov RO, #025h xchd A,©RO swap A mov RO, #024h xchd A,©RO mov RO, #020h; заменяем двоично-десятичный код cal! CODER ; на семисегментный mov RO, #021h ca!I CODER mov RO, #022h call CODER mov RO, #023h cal I CODER mov RO, #024h call CODER mov RO, #025h ca 11 CODER ret ; подпрограмма вывода содержимого OUTA: ; аккумулятора на тину DB cl r C rrc A ; загружаем в порт mov DBO, C ; младшую тетраду rrc A 381
mov DB1, С rrc A mov DB2,C rrc A mov DB3, C %STROB„WR1 ; генерируем первый ; строб WR1 rrc A ; загружаем в порт movDBO.C ; старшую тетраду rrc А mov DB1, С rrc А ’ mov DB2,С rrc А mov DB3,С %STROB_WR1 ; генерируем второй ; строб WR1 ret DISP_HEX: ; вывод 6-разрядного hex ; числа в модуль МТ10Т7 call PREP_HEX ; подготовка числа для индикации I mov А,#4 call SETJUS ; определяем знакоместо %STROB_ADDR ; 1-ой цифры mov RO, #020h ; последовательно выводим I b IJ i s: ; в порт 6 цифр, лежащих в movA,@RO ; ОЗУ по адресам 20h-25h са)I OUT_А inc RO cjne RO, tf026h, I bI jii s ret Потребление микроконвертера в активном-режиме (с ЖК-моду- лем) составило 5 мА, что также неплохо согласуется с характеристи- ками, заявленными производителем. Мы надеемся, что приведенная информация поможет пользова- телям ADuC824 в их первых экспериментах.
Приложение 12 24-РАЗРЯДНЫЙ АЦП С ВСТРОЕННЫМ МИКРОКОНТРОЛЛЕРОМ СЕМЕЙСТВА х51 ОТ BURR-BROWN (TEXAS INSTRUMENTS) Буквально за неделю до сдачи в типографию настоящей книги ав- тору попалась на глаза информация о выпуске фирмой Texas Instruments микросхемы, аналогичной микроконвертеру ADuC824 от Analog Devices. Невозможно было пройти мимо этого события, ибо оно весьма знаменательно. Во-первых, это зримый плод погло- щения фирмой Texas Instruments фирмы Burr-Brown. Последняя все- гда считалась одним из мировых лидеров в разработке и производ- стве аналоговых микросхем, но самостоятельно замахнуться на встраивание в один из своих АЦП микроконтроллера она была не в силах. В то же время для Texas Instruments, занимающей лидирую- щие позиции в области создания цифровых сигнальных процессо- ров, создать 8-разрядный микроконтроллер с вполне заурядной про- изводительностью труда не представляло, но сделать вместе с ним на кристалле прецизионный 24-разрядный АЦП — это для нее было уже не по зубам. Именно поэтому и произошла столь неожиданная для многих покупка -- цифровые технологии от Texas в совокуп- ности с аналоговыми от Burr-Brown должны были дать новое каче- ство. Собственно, что мы и видим — семейство АЦП с микроконт- роллером MCS1210 сразу выдвинулось в лидеры, став в один ряд с микроконвертерами ADuC8xx от Analog Devices. Следующий удивительный факт — выпуск фирмой Texas Instruments микроконтроллера семейства х51. В свое время именно TI провозгласила, что ее цифровые сигнальные процессоры вытес- нят со сцены микроконтроллеры, и все прошедшие после этого годы она по сути игнорировала существование последних. Но заметив, ка- 383
ким успехом у потребителей пользуются микроконвертеры, отбро- сила предубеждение и выпустила аналогичный продукт. И третье, чего безусловно нельзя не отметить — это то, что изде- лия, совместимые с семейством х51, прочно заняли лидирующие позиции в высокоинтегрированных системах сбора и обработки дан- ных. Выбор 51-х микроконтроллеров, который и ранее был немалым, в последние два-три года заметно расширился. При этом новые МК обладают чрезвычайно развитыми возможностями, высоким быст- родействием, малым энергопотреблением, удобством использова- ния — словом всем, о чем разработчики еще лет пять назад могли лишь мечтать. Так что если в конце 90-х годов те, кто использовали в своих изделиях МК семейства х51, выглядели ретроградами, сейчас про них такого не скажешь — ни одно другое популярное семейство МК, будь то PIC- или AVR-контроллеры, не предоставляет своим пользователям такого разнообразия возможностей, как 51-е. И раз- витие этого семейства не прекращается. После всего сказанного перейдем к описанию особенностей са- мого «свежего» семейства из х51 -совместимых микроконтроллеров — MCS1210 от Texas Instruments/Burr-Brown. По состоянию на конец мая 2002 г. оно насчитывает четыре изделия — MCS1210Y2, MCS1210Y3, MCS1210Y4 и MCS1210Y5, различающиеся лишь объе- мом Flash-памяти на кристалле (4, 8, 16 и 32 кбайт соответственно). Все кристаллы содержат 24-разрядный АЦП с 22-битным эффектив- ным разрешением при частоте оцифровки 10 Гц и 75-нановольто- вым уровнем шума, приведенного ко входу. На кристалле также раз- мещен прецизионный 0,2%-й источник опорного напряжения с превосходными дрейфовыми характеристиками (5 ррт/°С), причем гораздо лучшими, чем у источника в ADuC824. Каждый из восьми аналоговых входов (AIN1-AIN7) может быть программно выбран либо в качестве положительного входа АЦП, либо в качестве отрицательного, благодаря чему пользователь рас- полагает восемью дифференциальными входными каналами. Необ- ходимо отметить, что аналоговые входы микросхем независимы, т. е. не совмещены ни с какими линиями портов РО-РЗ. Микросхемы также снабжены ставшими уже стандартными про- граммируемым входным усилителем (коэффициент усиления от 1 до 128), цифровыми фильтрами для подавления помех и наводок, разнообразными режимами калибровки. Последнее позволяет до- биться дрейфовых характеристик системы на уровне 0,02 ррт/°С, а цепи усиления — 0,5 ррт/°С. Микроконтроллеры, входящие в MCS1210Yx, очень похожи на МК, ранее производившиеся фирмой Dallas Semiconductor. Пре- 384
дельная тактовая частота их составляет 33 МГц, что в совокупнос- ти с 4-тактным командным циклом (взамен 12-тактного у стан- дартных х51) позволяет достичь быстродействия, равного быст- родействию стандартного МК х51 на частоте 82 МГц. Это не столь быстро, как у МК фирмы Cygnal, но в подавляющем большинстве применений такой скорости хватит за глаза. Еще некоторые при- ятные особенности, также характерные ранее лишь для МК, про- изводившихся Dallas Semiconductor — два независимых последо- вательных порта UART и два регистра DPTR. Помимо UART, МК располагают ставшим уже стандартом SPl-ин- терфейсом, тремя таймерами-счетчиками, сторожевым таймером, сис- темным таймером реального времени, режимами пониженного энерго- потребления и 21 - м источником прерываний. Микросхемы выпускаются в 64-выводном корпусе типа TQFP, предназначены для работы в индус- триальном температурном диапазоне (-4О...+85°С). Питающее напря- жение — от 2,7 до 5,25 В, потребление — несколько милливатт. Помимо Flash-памяти (1 миллион циклов перезаписи, время хра- нения информации — 100 лет!), все микросхемы имеют на кристал- ле 1 кбайт статического ОЗУ, доступного по команде MOVX. Еще есть режимы как параллельного, так и последовательного внутрисистем- ного программирования, а также 2-килобайтный загрузчик. Структура АЦП с микроконтроллером MCS1210 приведена на рис. 1, цоколевка микросхем — на рис. 2. AINO AIN1 AIN2 AIN3 AIN4 AIN5 AIN6 AIN7 AINCOM AVod AGND ref out REFIN+ REF'iH- DVdd dgnd XIN XOUT Рис. 1. Структура АЦП с микроконтроллером MCS1210 385
хоит XIN P3.0/RxD0 P3.1/TxD0 P3.2/INT0 P3.3/THTTaONE/PWM P3.4/T0 P3.5/T1 P3.6/WR P3.7/KD DVpo DGND RST DVqd DVdd NC матам 2 47 P0.6/AD6 46 P0.7/AD7 45 ALE 44 PSEN/OSCCLK/MODCLK 43 P2.7/A15 42 DVqd 41 DGND 40 P2.6/A14 39 P2.5/A13 38 P2.4/A12 37 P2.3/A11 36 P2.2/A10 35 P2.1/A09 15 34 P2.0/A08 16 33 NC Г' <и cn о r- cico’tmtDr^coOTOt-C'J Рис. 2. Цоколевка АЦП с микроконтроллером MCS1210. Особо следует отметить особенности линий порта ввода/вывода. Каждая из них, если верить опубликованным характеристикам, до- пускает протекание выходного тока силой до 100 (!) мА, и выдержи- вает 10-секундное короткое замыкание. Суммарный же выходной ток через все выводы одновременно не должен превышать 200 мА, а вход- ной ток через ввод питания —- 300 мА. Каждая из линий каждого пор- та, независимо от всех остальных, может быть программно настрое- на на то, чтобы иметь структуру, аналогичную соответствующему выводу у стандартного МК 8x51 (установлено по умолчанию), струк- туру стандартного К-МОП выхода, выхода с открытым коллектором и входа. Настройка осуществляется путем занесения информации в регистры PxDDRH, PxDDRL (х=0-3). Сохранены все стандартные аль- тернативные функции порта РЗ, а также Р1.0, Р 1.1.Остальные ли- нии порта Р1 альтернативно выполняют функции RxDl, TxDl, а так- же интерфейса SPI и INT2-INT5. Выходы PSEN и ALE, помимо выполнения стандартных функ- ций (строба обращения к внешней памяти программ и строба зане- сения адресной информации в регистр-защелку), могут быть настро- ены на вывод тактовых сигналов, а также просто установлены в 0 или в 1. Еще одна интересная особенность микроконтроллера MCS1210 —- наличие у него состоящего из четырех 8-разрядных регистров SUMR0- SUMR3 32-разрядного регистра, названного разработчиками МК до- полнительным аккумулятором. В зависимости он состояния регист- 386
pa SSCON, в дополнительном аккумуляторе осуществляется сумми- рование с накоплением (и возможным сдвигом) содержимого основ- ного аккумулятора или результата измерения АЦП. По мнению раз- работчиков МК, подобные аппаратные средства суммирования с накоплением позволят MCS1210 резко повысить производительность при решении задач цифровой обработки сигналов. Таким образом, мы как-бы получаем в свое распоряжение встроенный в 24-разряд- ный АЦП микроконтроллер, который при тактовой частоте 33 МГц эквивалентен 82-мегагерцовому стандартному МК х51, и впридачу к этому имеет 32-разрядный аппаратный сумматор. Расположенная на кристалле Flash-память может быть разделена пользователем по его усмотрению между памятью программ и памятью данных. Память данных может быть выбрана объемом 0,1, 2, 4 кбайт (для MCS1210Y2); 0,1,2, 4, 8 кбайт (для MCS1210Y3); 0,1,2, 4, 8, 16 кбайт (для MCS1210Y4) и 0, 1, 2, 4, 8, 16, 32 кбайт (для MCS1210Y5), в зависимости от информации, занесенной в регистры HCR0 и HCR1. При этом Flash-память программ всегда располагает- ся в своем адресном пространстве с адреса ОН, а Flash-память дан- ных — в пространстве памяти данных с адреса 400Н. С учетом того, что имеющийся на кристалле 1 кбайт внешней (к МК) статической памяти данных обычно расположен в адресах 0-3FFH, мы получаем непрерывное пространство памяти данных, нижний килобайт кото- рой является обычным статическим ОЗУ, а верхние 1, 2, 4, 8, 16 или 32 кбайта — энергонезависимым ОЗУ. Программирование (а впоследствии, видимо, и отладка) MCS1210 осуществляется по каналу RS-232, что требует минимальных аппа- ратных ресурсов. Здесь изделие от Texas Instruments/Burr-Brown ни- чем не отличается от ADuC8xx — все также удобно, легко и просто. Осталось лишь дождаться появления свободно распространяемого ПО, которое позволит использовать эти функции без необходимос- ти думать о том, как написать для этого соответствующую програм- му для PC. И в заключение о том, чего на мой взгляд не хватает MCS1210. В нем нет внешнего ЦАПа (внутренний, связанный с АЦП, не в счет), ну и маловато пока документации с примерами программ и подпрог- рамм, реализующих те или иные возможности изделия. Во всем ос- тальном оно, если верить опубликованным характеристикам, очень удачное. Можно поздравить себя и Texas Instruments с этим успехом.
. Scantil-AS ЗАО «Сканти-Рус» WJNECKUJP 'www.scanti.ru Официальный представитель Л? Texas в России и СНГ компании INSTRUMENTS Оптовые поставки электронных компонентов и средств отладки ведущих мировых производителей Информационная и техническая поддержка проектов 16-разрядные RISC-микроконтроллеры с микропотреблением MSP430 • 250 мкА в активном режиме 0.1 мкА в sleep-mode • АЦП -12 разрядов, 8 каналов • FLASH-до 60Кбайт • Встроенный драйвер ЖКИ • Встроенный умножитель 16x16 • Возможность перепрограммирования на плате • бит защиты программы во Flash-памяти —21^801210 - МК с ядром 8051 New!!! Встроенным 24-разр. АЦП ^-~7 л FLASH-памятью до 32К байт Москва. 123007, Хорошевское шоссе д.38, кор.1,4н этаж, 787-5939 С-Петербург, 190121, наб.канала Грибоедова д.132, 812114-2899 Киев, 04070, ул. Боричев Ток д.35 «Пульсар-Киев» 044-416-1163 Днепропетровск, 320030, ул. Рогалева 9, «Пульсар» 056247-2870 Минск, 220027, ул.П.Бровки д.6, к. 305 БГУИР +37517-239-8420 388
От автора В отличие от первого тома, имеющего четкую структуру, после- довательность изложения и взаимосвязь приведенных в нем матери- алов, второй том представляет собой 12 практически не связанных друг с другом приложений. Общее, что объединило их — это то, что почти все они посвящены х51-совместимым микроконтроллерам. Здесь вы найдете более-менее подробные описания на стандартные МК MCS-51 и MCS-52 фирмы Intel, аналогичную продукцию от Atmel, краткие описания изделий Cygnal, AduC8xx от Analog Devices, MCS1210 от Texas Instruments и некоторых других, а также обзорную информацию практически по всем х51-совместимым изделиям. Хочу обратить ваше внимание на следующее. Приведенные в на- стоящем томе материалы по аппаратным особенностям тех или иных микросхем являются литературно обработанными переводами ориги- нальных фирменных технических описаний. К сожалению, реалии се- годняшней жизни таковы, что у нас нет возможности по три-пять раз выверять каждую букву и цифру. Поэтому в подобных переводах иног- да попадаются ошибки. Вследствие этого я рекомендую правильность критичных для вас параметров тех или иных изделий обязательно про- верять по оригинальным фирменным описаниям. Для тех, кто владеет английским языком в стандартном ВУЗовском объеме, это не очень сложно, особенно если знаешь суть того, что проверяешь (именно для этого, т. е. для общего понимания сути вопроса, и нужны материалы на русском языке). Найти эти описания можно на сайтах производителей, адреса которых есть в тексте приложений. Я же со своей стороны поста- раюсь по мере обнаружения подобных ошибок публиковать информа- цию о них на сайте tvww.pyrometer.ru и прошу тех читателей, кто най- дет эти ошибки, сообщить мне о них по адресу alex.fru@mtu-net.ru или в редакцию журналов «КОМПОНЕНТЫ И ТЕХНОЛОГИИ» и «СХЕ- МОТЕХНИКА». 389
ЛИТЕРАТУРА 1. А. В. Боборыкин, Г. П. Липовецкий и др. Однокристальные мик- ро-ЭВМ. — М.: МИКАП, 1994. — 400 с.: илл. 2. В. Я. Нерода, В. Э. Торбинский, Е. Л. Шлыков. Однокристальные микроЭВМ MCS-51. Архитектура. — М.: изд. Диджитал Компо- ненте, 1995. — 164 с.: илл. 3. Р. Токхайм. Микропроцессоры: курс и упражнения. Пер. с англ. М.: Энергоатомиздат, 1988. — 336 с.: илл. 4. В. В. Сташин, А. В. Урусов, О. П. Мологонцева. Проектирование цифровых устройств на однокристальных микроконтроллерах.— М.: Энергоатомиздат, 1990. — 224 с.: илл. 5. Дж. Коффрон. Технические средства микропроцессорных систем: Практический курс. — М.: Мир, 1983. — 344 с.: илл. 6. В. В. Гребнев. Микроконтроллеры семейства АТ89 фирмы Atmel (http:/1 www.atmel.ru) 7. Ю-Чжен Лю, Г. Гибсон. Микропроцессоры семейства 8086/8088. Архитектура, программирование и проектирование микропро- цессорных систем. Пер. С англ. В.Л. Григорьева. — М.: Радио и связь, 1987. 8. С. Т. Хвощ, Н. Н. Варлинский, Е. А. Попов. Микропроцессоры и микроЭВМ в системах автоматического управления. Справочник под общей редакцией С. Т. Хвощ. — Л.: Машиностроение, 1987. 9. С. Д. Погорелый, Т. Ф. Слободянюк. Программное обеспечение микропроцессорных систем. Справочник. — К.:Техшка, 1985. 10. Л. Левенталь, У. Сэйвилл. Программирование на языке ассемб- лера для микропроцессоров 8080 и 8085. — М.: Радио и связь, 1987. — 448 с.: илл. 11. А. Л. Гуртовцев, С. В. Гудыменко. Программы для микропроцес- соров: Справ, пособие. — М.: Выш. шк., 1989. — 352 с.: илл.
Содержание Приложение 1. Числа, кодирование и арифметические вычисления 9 Приложение 2. Классические микроконтроллеры (однокристальные микро-ЭВМ) семейств VCS-51 и MCS-52 37 Приложение 3. Микроконтроллеры групп 8XC51FX, 8XL51FX 99 Приложение 4. Х51-совместимые микроконтроллеры фирмы Atmel 143 Приложение 5. Воздействие средств поддержки разработки на рынок микроконтроллеров 193 Приложение 6. Модернизация систем на основе микроконтроллеров серии 8051 Приложение 7. Симулятор для семейства х51 __ Приложение 8. 24-разрядные АЦП от Analog Devices — законченные системы аналого-цифрового преобразования для низкочастотных измерений 251 Приложение 9. Особенности отладки систем на основ? микроконтроллеров семейства х51 245 Приложение 10. Семейство х51 микроконтроллеров фирмы Cygnal 351 Приложение 11. Микроконверторы (семейство ADuC8xx) — системы сбора данных на кристалле 367 Приложение 12. 24-разрядный АЦП с встроенным микроконтроллером семейства х51 от Burr-Brown (Texas Instruments) 383
Фрунзе А. В. Микроконтроллеры? Это же просто! 2 том Ответственный редактор Ю. А. Герасимова Дизайн обложки И. В. Ермолаева Графическое оформление Ф. Н. Боязитов Верстка И. К. Чикина ООО «ИД Скимен» ИД № 02736 от 04.09.2000 г. 121351 Москва, ул. Ивана Франко, д. 40, стр. 2 тел./факс: (095) 777-1215 editor@dian.ru, sales@dian.ru www.dian.ru Подписано в печать Формат 60х88'/|6. Бумага газетная. Печать офсетная. Усл. печ. л 24л Тираж 5000 экз. Заказ № $5 Отпечатано с готовых диапозитивов в ООО «Пандора-1». Открытое шоссе, д. 28.
•3^ Linear Т< Philips Semiconducto Infineon Technologies ST Microelectronics Cypress Semiconductor Epson Electronics Zilog Техническая поддержка проектов Поставки Средства разработки и программирования от производителей тС и компании ELNEC Sharp Micrueleutronx Toshiba пассивные компоненты AVX ВС Components Bourns Epcos Ferroxcube Phycomp Подробная информация о более чем 50 наших поставщиках на сайте www.microem.ru | электронные компоненты АВТОРИЗОВАННЫЙ ДИСТРИБЬЮТОР В РОССИИ: МикроЭМ 103460. Москва, Зеленоград, корп 100 оф.ЗЗЗ Г. (095) 742-50-42,535-63-98 www,microem.ru МикроЭМ 199178, Санкт-Петербург, 11-я линия В.О..Д. 66, НЛО "Коминтерна” оф,485 т,(812) 320-9880 eurodis ЦЛ ОФИЦИАЛЬНЫЙ ДИСТРИБЬЮТОР В СТРАНАХ ВОСТОЧНОЙ ЕВРОПЫ EURODIS MICRODIS : 123592 Москва, ул. Кулакова 20, оф. 632 т\ф(095)750-64-11, 799-75-70 www.eurodis.ru
УИУ1Х1УИ "tXivJoouT t * Rainbow Technologies — официальный дистрибьютор компании Maxim в России JlmPL SI DALLAS JIIIIIBk . SEMICONDUCTOR holtekHJ^ ©inbond г хщк Electronics Corp Москва тел. (095) 797 8993 e-mail:info@rainbow.msk.ru Санкт-Петербург тел. (812)324-0902 e-mail:spb@rainbow.msk.ru Минск тел.( 10-37517)249-8273 e-mail:chip@rainbow.by Екатеринбург тел.(3432)761 407 e-mail:ural@ rainbow.msk.ru ^RAINBOW www.rtcs.ru TECHNOLOGIES