Разделы
Публикации
Популярные
Новые
Главная » Классические однокристальные микроконтроллеры

1 ... 4 5 6 7 8 9 10 ... 20

регистр WDTRST последовательно два байта - 01ЕН и 0А6Н. Отметим, что в WDTRST можно только записывать информацию, средства чтения его содержимого отсутствуют.

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

Когда 8XC51GB переводится в режим микропотребления, происходит останов внутреннего тактового генератора. HWDT при этом также останавливается. Вывод контроллера из режима микропотребления, как и у всех его предшественников, может быть осуществлен двояко - сбросом или вызовом внешнего прерывания, разрешенного перед переводом 8XC51GB в упомянутый режим. Первый способ обнуляет HWDT. Во втором случае при старте тактового генератора содержимое счетчика HWDT продолжит увеличиваться. Но поскольку для устойчивого запуска тактового генератора необходимо время порядка двух десятков его периодов, рекомендуется длительность импульса внешнего прерывания, выводящего контроллер из режима микропотребления, делать не меньшей упомянутого времени. Программа обработки прерывания начнет выполняться только после перехода уровня сигнала внешнего прерывания в единицу, когда частота генерации стабилизируется. Тогда же и начнется инкремен-тирование счетчика HWDT, т. е. пока сигнал прерывания имеет нулевой уровень, HWDT не работает.

В режиме холостого хода тактовый генератор контроллера не отключается. Вследствие этого содержимое счетчика HWDT непрерывно увеличивается, и для предотвращения пересброса необходимо использовать таймерное прерывание, по которому будет происходить выход из этого режима, обнуление счетчика сторожевого таймера и возврат в режим Idle.

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

ПРОЦЕДУРА ИНИЦИАЛИЗАЦИИ Т/СО

TCOINIT:SETB SETB MOV MOV MOV

SETB TRO RET

EA ETO

TM0D, 01H TL0,#07FH TH0, 0C1H

РАЗРЕШАЕМ ПРЕРЫВАНИЯ

В ТОМ ЧИСЛЕ ОТ Т/СО

УСТАНАВЛИВАЕМ РЕЖИМ 16-БИТ. ТАЙМЕРА

ЗАГРУЖАЕМ 0C17FH=0FFFH-03E80H,4T0

ОБЕСПЕЧИТ СБРОС ЧЕРЕЗ 16000(03Е80Н) ТАКТОВ

;ЗАПУСКАЕМ ТАЙМЕР

ОБРАБОТЧИК ПРЕРЫВАНИЙ ОТ Т/СО

OOOBH

;АДРЕС ВЕКТОРА ПРЕРЫВАНИЯ

;ПРИОСТАНОВИМ ТАЙМЕР

WDTC0N,#O1EH

;СБРОСИМ HWDT

WDTC0N,#0E1H

TL0,#07FH

;СНОВА ЗАГРУЖАЕМ 0C17FH

TH0, OC1H

SETB

;ПЕРЕЗАПУСКАЕМ ТАЙМЕР

RETI

ОБНАРУЖЕНИЕ СБОЯ ТАКТОВОГО ГЕНЕРАТОРА

Цепь обнаружения сбоя тактового генератора (OFD) предназначена для осуществления сброса микроконтроллера, если частота тактового генератора окажется ниже предела, задаваемого техническими условиями. Если после сброса тактовая частота по-прежнему останется за пределом допустимых значений, микросхема так и останется в этом состоянии. Отметим, что превышение частоты сверх установленных границ не приводит к сбросу контроллера.

Цепь OFD всегда включается после сброса или при выходе микросхемы из режима микропотребления. Для ее отключения необходимо записать последовательно 0Е1Н и 01ЕН в регистр OSCR (0А5Н). Это необходимо сделать, в частности, перед переходом в режим микропотребления, поскольку в нем тактовый генератор отключен. Разрешить работу цепи заново можно лишь пересбросом или выходом из режима микропотребления по внешнему прерыванию.

Состояние OFD может быть определено путем чтения регистра OSCR. При OSCR=0FFH обнаружение сбоев разрешено, при OSCR=0FEH - запрещено.



микроконтроллеры семейства

MCS-251

В начале 1995 г. Intel сообщила о выпуске первого микроконтроллера нового семейства MCS-251 - 8xC251SB. Казалось бы, что это вполне ординарное событие - Intel практически ежемесячно сообщает о выпуске какого-либо нового изделия. Тем более, что речь идет не о процессоре для компьютера, а о микроконтроллере, объем продаж которого на несколько порядков ниже, чем у Pentiuma. Однако 8хС251 SB - изделие неординарное. Его появление ознаменовало качественный скачок в архитектуре микроконтроллеров всемирно известного семейства MCS-51.

За более чем десятилетнюю историю своего существования микроконтроллеры семейства MCS-51 завоевали широчайшую известность и популярность. Архитектурным особенностям этих контроллеров посвящены тысячи книг, изданных во всех развитых странах мира. Сотни разработчиков создали на основе этих контроллеров десятки тысяч различных устройств, выпущенных миллионными тиражами. У этих разработчиков накоплено большое количество программаторов, эмуляторов, ассемблеров - всего того, что необходимо для разработки новых устройств на этих микроконтроллерах. И эта развитая сеть потребителей MCS-51, несомненно, являлась одним из тех достижений Intel, которым она но праву могла гордиться.

Однако столь широкая известность и популярность MCS-51 имел и оборотную сторону, где не так все гладко и хорошо. Начиная с определенного момента резервы совершенствования этих микроконтроллеров оказались практически исчерпанными. Тактовая частота была доведена до 20...24 МГц. Внутреннее ОЗУ расширилось до максимального значения, доступного для косвенной адресации с использованием однобайтового регистра. Объем программной памяти достиг 32 кбайт, на кристалле появился массив программируемых счетчиков, затем второй. Число портов ввода/вывода выросло с четырех до шести. Но все эти совершенствования лишь несколько расширили функциональные возможности контроллеров, не внеся в архитектуру никаких кардинальных новшеств, позволяющих использовать эти изделия для решения более широкого круга задач.

К тому же и система команд начала накладывать свои ограничения на возможности совершенствования процессоров. Из 256 возможных кодов операций команд использовалось 255, и не использованным оставался только один код - 0А5Н. Расширение системы команд было довольно сложным делом. Новые команды должны использовать уже использованные существующими командами коды, но вмес-

те с предваряющим их кодом 0А5Н. Последний должен информировать декодер команд о том, что декодируемая команда принадлежит к новому набору. Йаномним, что у создателей процессора Z80, также расширявших систему команд в сравнении с прототипом, был десяток неиспользованных основной системой команд кодов, что обеспечивало им гораздо более широкие возможности для расширения.

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

Фактически возможности MCS-51 казались уже исчерпанными, и вырисовывалась необходимость прекратить поддержку этого семейства и переориентировать потребителей на более мощные микроконтроллеры MCS-96. Это казалось тем более правильным, т. к. Intel в тот момент продолжала доминировать на рынке 16-разрядных микроконтроллеров, а на рынке 8-разрядных она в тот момент вынуждена была уступить пальму первенства фирме Motorola. В течение какого-то промежутка времени нужно было бы еще производить микроконтроллеры семейства MCS-51. Но они бы предназначались не для новых разработок, а для замены контроллеров, вышедших из строя, а также для использования в изделиях, уже разработанных, но не вытесненных из производства новыми модификациями. В течение двух-трех лет разработчики систем на MCS-51, повздыхав, освоили бы новую архитектуру, приобрели бы новые аппаратные и программные средства и возможно превратились бы в пользователей другого InteloBCKoro семейства.

Однако для Intel давно уже стало правилом поддерживать свои разработки до тех пор, пока пользователи безболезненно не завершат переход на новую архитектуру. На этом пути она создавала различные вариации - вспомним, например, overdrive-процессоры для персональных компьютеров. Поэтому разработчики микроконтроллеров (или руководство фирмы - автор не знаком с информацией, относящейся к начальному периоду разработки) поставили задачу создать принципиально новый контроллер, сохранив практически 100%-ю совместимость с MCS-51. И, надо сказать, справились с этой задачей они блестяще.

Сама по себе идея, как сделать совершенно новое изделие и при этом сохранить 100%-ю совместимость с ранней разработкой уже



не нова для Intel и не раз была ей успешно применена. Вспомним историю появления процессора 80286. На определенном этапе возможности процессора 8086 были исчерпаны, и внесение в него новых свойств (расширение адресного пространства, кольца защиты) оказалось невозможным. Для выхода из создавшегося тупика было предложено следующее решение. Новый микропроцессор имел два режима работы - реальный и защищенный. В первом режиме он функционировал совершенно идентично процессору 8086 и был способен выполнить без перетрансляции любую программу, написанную для своего предшественника. Во втором режиме он приобретал качественно новые свойства. Фактически в одном корпусе мирно сосуществовали два процессора, и переключение от первого ко второму осуществлялось программным путем. По сути дела предстояло сделать то же самое и с семейством MCS-51. В одном из режимов новый микроконтроллер должен остаться на 100% совместимым с предшественником, а во втором, освободившись от оков, - обеспечить рост производительности не менее чем на порядок и столь же существенное расширение воз-можностей.

И действительно, микроконтроллеры семейства MCS-251 выполнены совместимыми по выводам с MCS-51 и могут выполнять программы, написанные и оттранслированные в коды MCS-51 без каких-либо изменений. Однако по своим возможностям микроконтроллеры нового семейства превосходят своих предшественников примерно так же, как микропроцессор 80286 превосходил 8086. По оценкам Intel, был обеспечен прирост производительности на порядок в сравнении с MCS-51. Доступное адресное пространство расширено до 16 Мбайт, расширен также и набор внутренних регистров. В систему команд включено большое количество новых инструкций. Все это делает подобное сравнение вполне правомерным.

Рассмотрим основные отличия микроконтроллеров MCS-251 от их предшественников.

Микроконтроллер 8xC25lSB имеет конвейерную архитектуру, благодаря чему большая часть команд выполняется за один машинный цикл (два периода тактового генератора). Расширенный набор внутренних регистров и способов адресации позволили существенно расширить систему команд и сделать ее более гибкой - арифметические и логические операции, команды пересылки данных могут теперь оперировать с парами одиночных, двойных и счетверенных регистров. Именно эти причины обеспечили прирост производительности у 8xC251SB на порядок в сравнении с 8хС51, работающим с той же частотой тактового генератора.

8xC251SB может функционировать в двух различных режимах - обычном (binary mode по терминологии Intel) и расширенном (source mode). Переключение из режима в режим осуществляется путем программирования аппаратным программатором соответствующего бита в одном из байтов конфигурации (байты конфигурации отсутствуют у MCS-51). Как отмечалось выше, в обычном режиме 8xC25lSB может выполнять все программы, написанные дляМС5-51 без какой-либо перетрансляции. При этом ему доступно большинство из команд расширенного набора, которые отсутствуют в MCS-51. Этот режим необходим для обеспечения совместимости снизу вверх семейств MCS-51 и MCS-251. Однако в этом режиме производительность 8xC251SB ниже, чем в расширенном режиме, хотя существенно превышает производительность микроконтроллеров семейства MCS-51. Расширенный режим несовместим по кодам с обычным режимом, хотя мнемоники команд MCS-51 остались неизменными. Вследствие этого нынешние ассемблеры непригодны для написания программ, использующих 8xC25lSB в расширенном режиме.

ОРГАНИЗАЦИЯ ПАМЯТИ

Адресное пространство, доступное микроконтроллерам семейства MCS-251, расширено до 16 Мбайт. Оно несегментировано, но поделено на 64-килобайтные регионы. Для 8xC251SB доступны только 4 из возможных 256 регионов - регионы с номерами 00:, 01:, FE: и FF:.

Под память данных может использоваться адресное пространство любого из этих регионов, чего нельзя сказать о памяти программ. Ее нельзя размещать в регионе 00:. Допускается совместное использование адресного пространства регионов 01:, ЕЕ: и FF: как памятью программ, так и памятью данных. Внутреннее ПЗУ 8хС251 SB занимает младшие 16 кбайт адресного пространства региона FF:. На эту область проецируется память программ микроконтроллера при работе в обычном режиме (напомним, Адресное пространство что у MCS-51 память программ и микроконтроллера 8хС251 SB

Внешняя память - 48 кБ FF:4000H - FRFFFFH

FF:FFFFH

Внутренняя память программ СПЗУ, ППЗУ) -16 кБ FF.OOOOH - FF:3FFFH

FROOOOH

Внешняя память - 64 кБ FROOOOH - FEFFFFH

FEiFFFFH FE: ООООН

Perwubi : 02 FD :

.Ч.)РС.*РР)!И[К]Г{.1НЫ

FROOOOH

Внешняя память - 64 кБ 01.0000H-01:FFFFH

01:FFFFH 01;0000H

Внешняя память - 63 кБ 00;0420Н - 00;FFFFH

00:FFFFH 00:0420H

Внутренняя память -1 кБ 00:0020Н-00:041 FH

00:041 FH

Побитно адресуемые - 96 Б 00.0020Н - 00:007FH

00:0020H

Регистровый файл - 32 Б 00:0000Н-00:001 FH

00:0000H

16 - мегабайтное адресное пространство



память данных имеют непересекающиеся адресные пространства размером до 64 кбайт каждое).

Регистровый файл

Двухбайтовые [)егистры

Пространство FFFFH памяти программ ООООН семейства MCS51

FF;OOOOH

S:iFFH S:100H

Пространство SFR

, .семейства MCS51 oUH

S:000H S:OOOH

Пространство FFFFH внешней памяти данных ООООН семейства MCS5i

ог-оооон

01:0000Н

512 - байтовое пространство SFR

63 8

Пространство FFH внутренней памяти данных ООН семейства MCS51

00;0000Н

Регистровый файл

архитектуры семейства MCS51

16 - мегабайтное адресное пространство

64 - байтовый регистровый файл

Рис. 12. Проецирование ресурсов микроконтроллеров семейства MCS-51 на адресное пространство микроконтроллера 8xC251SB

Внутреннее ОЗУ данных микроконтроллера 8xC251SB имеет объем 1 кбайт и расположено по адресам 00:0020Н-00:041FH. Нижние 32 байта адресного пространства занимают 4 банка регистров общего назначения R0-R7, которые оставлены для совместимости с 8хС51. Неиспользуемая внутренним ОЗУ часть региона 00: может быть отдана под внешнее ОЗУ, Intel рекомендует там размещать стек для тех приложений, которые разрабатывались с использованием языка высокого уровня, активно использующего стек. Отметим, что любая ячейка региона 00: может быть адресована как с использованием прямой, так и косвенной адресации. К ячейкам других регионов можно обращаться только с использованием косвенной адресации. На верхние 8 кбайт региона 00: можно спроецировать старшие 8 кбар1т внутренней программной памяти (из адресов FF:2000H...FF:3FFFH) и прямо к Ней адресоваться, что удобно при использовании таблиц преобразования. Это ироецирование осуществляется путем установки в 1 соответствующего бита в одном из конфигурационных байтов.

Регионы 01: и FE: рекомендуется использовать в качестве внешней памяти программ и данных. Эту часть адресного пространства можно использовать как для раздельного использования данными и программами, так и для совместного использования. В первом случае при обращении к памяти данных используются управляющие сигналы RD и WR , а при обращении к памяти программ -- сигнал PSEN. Это 132

Регистры 0 номерами 32...65 зарезервированы

WR24

WR26

WR23

WR30

WR16

WR18

WR20

WR22

WR10

WR12

WR14

ВанкО...З, per. 0...7

Четырехбайтовые регистры

DR56 = DPX

DR60 = SPX

ddhtutjbis ptji vLi\ рь[

DR24

DR28

Н10-регис1рв R11 - аккумулятор

DR16

DR20

DR12

Рис. 13. Регистровый файл микроконтроллеров 8xC251SB

аналогично тому, как используют внешнюю память программ и данных микроконтроллеры семейства MCS-51. Во втором случае сигнал RD программируется на использование в качестве 17-го адресного вывода, что обеспечивает адресацию 128-килобайтного непрерывного адресного пространства. При этом сигнал PSEN используется в каче-ci не строба обращения к ОЗУ, а сигнал WR - в качестве сигнала записи. Объем в 128 кбайт - предельный для внешней памяти 8xC251SB, т. к. в целях coвмecтиюcти по выводам с семейством MCS-51 количество адресных выводов у 8xC251SB оставлено равным 16 (если не учитывать упомянутого использования сигнала RD в качестве семнадцатого адресного вывода).

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



содержимое старшего байта адреса изменилось, т.е. произошло обращение к другой странице ОЗУ, в остальное время 8xC25lSB не тратит время на демультиплексирование и считывает данные из ОЗУ за 1 такт. Таким образом, преимущественное размещение данных в пределах одной страницы и использование страничного режима может существенно повысить производительность системы, работающей с внешним ОЗУ.

И последнее, что необходимо отметить при рассмотрении организации памяти 8xC251SB - его возможность работать как с быстрой, так и с медленной внешней памятью. При работе на высоких тактовых частотах длительность импульсов RD, WR и ALE может оказаться недостаточной для уверенного функционирования модуля внешнего ОЗУ. В этом случае необходимо уд.пинить эти импульсы путем добавления дополнительного такта ожидания в циклы обращения к внешней памяти. Достигается это путем установки в единицы соответствующих бит в одном из конфигурационных байтов.

ОРГАНИЗАЦИЯ РЕГИСТРОВОГО ПРОСТРАНСТВА

В 8xC251SB имеются все те же регистры специальных функций (SFR), какие имелись в микроконтроллере 8хС51РА. Однако пространство SFR у 8xC25lSB физически отделено от пространства внутреннего ОЗУ и не входит в его состав. Правда, при работе в обычном режиме оно проецируется на внутреннее ОЗУ в адреса 00:0080Н -00:OOFFH, благодаря чему при обращении в этом режиме к ячейкам из этого диапазона адресов мы попадаем в пространство SFR, как у микроконтроллеров семейства MCS-5L В расширенном режиме эти пространства разделены и адресуются по разному.

В отличие от MCS-51, все регистры пространства SFR побитно адресуемы. Кроме того, в нем появились новые регистры: SPX (расширенный указатель стека), DPX (расширенный указатель данных), PSW1 (второе слово состояния программ). Необходимость в расширенных указателях очевидна - регистр SP обеспечивал стек емкостью всего 255 байт, а указатель DPTR адресовал вс?го 64 кбайта адресного пространства. Регистр SPX - двухбайтовый, что дает возможность делать стек глубиной вплоть до 64 кбайт.

Регистр DPX (также как и программный счетчик PC у 8xC251SB) - трехбайтовые, что необходимо для адресации ко всему 16-мегабайтному адресному пространству нового микроконтроллера. По сбросу в DPX заносится значение О ЮОООН (в PC-OFFOOOOH). Как отмечалось выше, все адресное пространство 8xC25lSB доступно при использовании косвенной адресации, поэтому при помощи DPX мы можем обеспечить доступ к ячейкам любых регионов. Отметим, что при исполь-134

зовании DPTR в расширенном режиме мы можем работать только с ячейками региона 0J:. При работе в обычном режиме оба регистра работают идентично.

Следующее существенное отличие семейства MCS-251 - наличие так называемого внутреннего регистрового файла. Восьми регистров общего назначения (РОН), имевшихся в MCS-51, оказывается явно недостаточно, даже если принять во внимание наличие четырех банков этих регистров. Поэтому Intel разместила на кристалле дополнительный блок из 64 ячеек ОЗУ, физически отличный от общего внутреннего ОЗУ и от SFR. В 8xC251SB задействовано 40 из этих ячеек.

Младшие 8 ячеек проецируются на регистры общего назначения R0-R7 выбранного банка РОН. Это оставлено для лучшей программной совместимости MCS-251 cMCS-51. Следующие24регистра, имеющие обозначение R8-R31, могут использоваться как однобайтовые (с R8 до R15 включительно), двухбайтовые (WR8, WR10 и так до WR30) и четырехбайтовые (DR8, DR12,DR28). Позиции с 32-й по 55-ю регистрового файла в 8xC251SB не используются. Еще 8 регистров (с R56 по R63) организованы в два четырехбайтных регистра DR56 и DR60, в которых размещаются DPX и SPX соответственно. Отметим, что R0-R7 таюке могут быть организованы в четыре двухбайтных или в два четырехбайтных регистра. Кроме того, аккумулятор проецируется на R11, а регистр В - на R10.

Однобайтовые, двухбайтовые и четырехбайтовые регистры используются в качестве операндов в командах перемещения, арифметических и логических операциях. В частности, они могут использоваться в операциях с косвенной адресацией для адресации ко всему допустимому адресному пространству наряду с DPTR и DPX или в качестве операнда-источника и операнда-приемника в командах MUL и DIV (эти команды теперь оперируют не только с регистрами А и В, Но и с любыми парами однобайтовых и двухбайтовых регистров).

Поскольку микроконтроллеры семейства MCS-251 имеют таймер-счетчик 2, программируемую матрицу счетчиков, расширенную схему приоритетов прерываний и еще ряд аппаратных особенностей, характерных для микроконтроллеров 8xC5lFx и 8x032/52/54/58, в их пространстве SFR присутствуют все регистры, обеспечивающие функционирование этих аппаратных средств - T2CON, T2MOD, СН, CL, CMOD, IPH и т. д.

СИСТЕМА КОМАНД

Код операции в системе команд микроконтроллеров семейства MCS-51 представлен одним байтом, что ограничивает допустимое количество команд числом 256. У MCS-51 задействовано 255 значений ко-



дов операции из этих 256, поэтому для расширения набора команд есть только один вариант - использовать оставшийся код (0А5Н) для пре-фиксирования вновь вводимых команд. Когда 8xC251SB функционирует в обычном режиме, все коды операций, за исключением 0А5Н, он выполняет также, как и любой микроконтроллер семейства MCS-51. Однако в отличие от последних, 8xC25lSB в этом режиме доступны также команды его расширенного набора. Если при извлечении из ПЗУ кода операции 8xC251SB встречает код 0А5Н, он извлекает следующий код и декодирует его с использованием микропрограммного устройства расширенного набора команд. Например, код 08Н в обычном режиме будет воспринят как команда INC R0, а комбинация 0А508Н - как команда расширенного набора JSLE ге I.

При работе в расширенном режиме есть существенные отличия в кодах операций в сравнении с обычным режимом. Кодом 0А5Н пре-фиксируются команды MCS-51, использующие регистры общего назначения R0-R7. Остальные команды MCS-51 и команды расширенного набора MCS-251 используют однобайтовые коды операций. Это сделано для повышения производительности 8xC251SB в расширенном режиме - его новые более мощные и гибкие команды требуют меньше времени на декодирование, чем старые команды MCS-51. Однако для использования этого режима нужны новые трансляторы. Табл. 20 демонстрирует различие в формировании кодов операций для обычного и расширенного режима.

Таблица 20

Команда

Код в обычном

Код в расширенном

INCA

04Н

04Н

INC@R1

07Н

0А507Н

INCRO

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. Помимо мнемоник команд в ней приведено число тактов, необходимых микроконтроллерам 8хС51Ех и 8xC251SB для выполнения этих команд (для 8xC251SB количество тактов соответствует чтению команд из внутреннего ПЗУ и работе в расширенном режиме).

Команда

Операнды

8x051 XX

8x С 251 SB

Арифметические команды:

ADD

A,Rn

ADD

A.direct

,@Ri

A,#data8

Rm,Rm

WRj.WRj

Rm,#data8

WRj,#data16

Rm.dir

Rj.dir

Rm.dirx

WRl.dirx

Rm,@WRj

Rm,@DRk

ADDC

A,Rn

ADDC

A.direct

ADDC

A,@Ri

ADDC

A,#data8

SUBB

A.Rn

SUBB

A.direct

SUBB

A,@Ri

SUBB

A,#data8

Rm.Rm

WRj.WRj

Rm,#data8

WRj,#data16

Rm.dir

WRj.dir

Rm.dirx

WRJ.dirx

Rm,@WRl

Rm,@DRk

direct

Rm,#short8

WR,#short8

DPTR

direct

Rm,#short8

WRl,#short8

Rm.Rm



Продолжение таблицы 21

Продолжение таблицы 21

Команда

Операнды

8xC51Xx

8xC251SB

WRj.WRi

10 ~

Rm,Rm

WRj.WRi

А

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

A,Rn

А, direct

A,@Ri

A,#data8

direct, A

direct,#data8

Rm,Rm

WRj,WRi

Rm,#data8

WRj,#data16

Rm,dir

WRj,dir

Rm,dirx

WRj,dirx

Rm,@WRi

Rm,@DRk

A,Rn

A.direct

A,@Ri

A,#data8

direct,A

direct,#data8

Rm,Rm

WRj.WRi

Rm,#data8

WRj,#data16

Rm.dir

WRj.dir

Rm,dirx

WRi,dirx

Rm,@WRj

Rm,@DRI<

A,Rn

A,direct

A,@Ri

A,#data8

direct,A

direct,#data8

Rm.Rm

WRj,WRL

Rm,#data8

WRj,#data16

Команда

Операнды

8xC51xx

8xC251SB

rlc

IRRC

riiRC

rsLL

j...-. -

Команды перемещения.

A,Rn

A.direct

A,@Ri

MOV

A,#data8

1 MOV

Rn.A

j MOV

Rn,direct

i MOV

Rn,#data8

\ MOV

direct.A

: MOV

direct,direct

! MOV

direct,#data8

! MOV

direct.Rn

direct,@Ri

@Ri,A

i-.-lOV

@Ryirect

i MOV

@Ri.#data8

\ MOV

DPTR.#data16

1 MOV

Rm.Rm

i MOV

WRj.WRi

Rm,#data8

\ MOV

WRi,#data16

Rm.dir

WRi,dir

; MOV

Rm.dirx

: MOV

WRj.dirx

MOV

Rm,@WRj

: MOV

Rm.(a)DRI<

i MOV

dir.Rm



Продолжение таблицы 2

Продолжение таблицы 21

Команда

Операнды

8xC51xx

8x0251 SB

WRLdir

Rm.dirx

WRj.dirx

Rm,@WRi

Rm,@DRk

dir.Rm

dir.WRj

dirx.Rm

dirx,WRj

@WRj,Rm

@DRk,Rm

Rm,@WRi+dis

WRj,@WRi+dis

Rm,@DRk+dis

WRi,@DRk+dis

@WRi+dis,Rrn

@WRj+dis.WRi

DRk+dis,Rm

@DRk+dis,WRi

MOVC

A,@A+DPTR

MOVC

A,@A+PC

MOVX

A,@Ri

MOVX

A,@DPTR

MOVX

@Ri,A

MOVX

@DPTR,A

PUSH

#data8

PUSH

#data16

PUSH

direct B/W

PUSH

dirx B/W

PUSH

PUSH

direct

dirx

A,Rn

A.direct

A,@RI

Команды манипуляции с битами:

С

bit dir

bit dirx

SETB

С

SETB

SETB

bit dir

SETB

bit dirx

Команда

Операнды

8x0 51XX

8x0251 SB

bit dir

bit dirx

anl

Cbit

ANL

Cbit dir

anl

G.bit dirx

C,/bit

C/bit dir

[anu

C,/bit dirx

[ORL

Cbit

1 ORL

Cbit dir

Cbit dirx

ORL/

C/bit

ORL/

C/bit dir

C/bit dirx

Cbit

Cbit dir

Cbit dirx

bit.C

bit dir.C

bit dirx.C

bit.rel

bit.rdx

bit.rel

bit.relx

bit,rel

bit.relx

1НДЫ переходов, возвратов и вызовов подпрограмм.

ACALL

addr11

EGALL

addr24

EGALL

O.DRk

LCALL

addr16

ERET

RETI

AJMP

addr11

EJMP

addr24

EJMP

mORk

LJMP

addrie

SJMP

A.@.DPTR

J N2

GJNE

A.direct.rel

GJNE

A,#data.rel



Окончание таблицы 2t

Приложение 4

Команда

Операнды

8xC51xx

8XC251SB

CJNE

Rn,#data,rel

CJNE

@Ri,#data,rel

DJN2

Rn.rel

DJN2

direct.rel

ПЕРИФЕРИЙНЫЕ УСТРОЙСТВА

В состав 8xC251SB входят три таймера-счетчика, последовательный порт и массив программируемых счетчиков, включающий в себя пять модулей сравнения-защелки. Эти периферийные устройства идентичны имеющимся в 8xC51Fx. Кроме того, у 8xC251SB имеется аппаратный сторожевой таймер (WatchDog Timer) в дополнение к программному, реализуемому с помощью четвертого модуля массива программируемых счетчиков. Аппаратный сторожевой таймер снабжен 14-разрядным счетчиком, инкрементируемым через каждые 6 машинных циклов. При переполнении его происходит внутренний сброс, позволяющий предотвратить длительное зависание системы при воздействии сильных помех или сбоев питающего напряжения.

Порты ввода/вывода РО-РЗ по выводам и функциям также идентичны имеющимся у 8xC51Fx, за исключением Р3.7 - как описано выше, этот вывод может быть запрограммирован не только для использования в качестве сигнала RD, но й как адресный вывод А16.

Система прерываний 8xC251SB в основном также идентична системе прерываний 8xC51Fx. Различие состоит в том, что прерывание от массива программируемых счетчиков имеет внутри уровня самый низкий (7-й) приоритет, а прерывания от последовательного порта и от таймера 2 - соответственно 5-й и 6-й. В состав схемы прерывания добавлено немаскируемое программное прерывание TRAP, имеющее наивысший приоритет. В табл. 22 приведена основная информация по системе прерываний 8xC251SB.

Таблица 22

Источник

Аппар. сброс

Адр. вектора

Приоритет

INTO

нет{уровень) да{срез)

FF:0003H

1 (высш.)

Таймер 0

FF:OOOBH

INT1

нет(уровень) да{срез)

FF:0013H

Таймер 1

FF:001BH

Посп. порт

Rl.TI

нет

FF:0023H

Таймер 2

TF2, EXF2

нет

FF:002BH

РСА

OF, CCFn n=0-4

нет

FF:0033H

7 (низш.)

TRAP

FF:007BH

-1--i-

x51-СОВМЕСТИМЫЕ МИКРОКОНТРОЛЛЕРЫ ФИРМЫ ATMEL

Пожалуй, наиболее заметным событием в конце 90-х годов на рынке микроконтроллеров, совместимых с MCS-51, является успешное его завоевание фирмой Atmel. Благодаря фантастически низкой стоимости ее изделий, Atmel к 1997 г. вошла в тройку основных поставщиков контроллеров упомянутого семейства. В конце 1997 г. 87С51 от Intel стоил около 20$, в то время как его Atmel-аналог АТ89С51 можно было приобрести всего за 5...6$.

За счет чего же Atmel удалось так резко удешевить свои изделия? Ответ становится очевиден при первом же взгляде на ее контроллеры. В них нет кварцевого окошка, через которое виден кристалл микросхемы. В то время как прототип имел ПЗУ, стираемое УФ-лучами, что требовало дорогостоящего совмещения различных микроэлектронных технологий и отнюдь не дешевого корпуса с прозрачным для ультрафиолета стеклом из кварца, АТ89С51 (равно как и другие контроллеры Atmel) снабжен электрически перепрограммируемым ПЗУ. Технологические достижения фирмы позволили формировать и контроллер, и ПЗУ в одном цикле. При этом количество циклов программирования заметно выше, чем у УФ-стираемых контроллеров. Да и само стирание осуществляется программатором автоматически, что исключает возможность повреждения ПЗУ излишней дозой излучения. Отсутствие УФ-прозрачного окна в корпусе заметно снижает и его стоимость. Благодаря всему этому новые изделия пришлись по душе потребителю.

Правда, необходимо отметить, что алгоритмы записи/стирания электрически перепрограммируемых ПЗУ несколько сложнее, чем у



их предшественников, в силу чего не все программаторы позволяют работать с ними. Однако это ограничение для многих не помеха - программаторы, изготовленные в 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-npoTOTHHOB.

а

>s

3 О

1§ из п о.

ns £ Р

&

о

3 3

о с

3 5 о.:

с

ГО ш

о ю

<5£

О. Q.

со со

ю

ю

о

I о

<

1Г> ю

о О

(О to

о

о

о

о

ст>

ь

<

<

<

; о <

о ю

о

<



1 ... 4 5 6 7 8 9 10 ... 20
© 2004-2024 AVTK.RU. Поддержка сайта: +7 495 7950139 в тональном режиме 271761
Копирование материалов разрешено при условии активной ссылки.
Яндекс.Метрика