
- •Глава 3. Однокристальные микроконтроллеры семейства mcs51
- •Микропроцессоры и микроконтроллеры
- •Микроконтроллеры семейства mcs51
- •А. Общие характеристики и назначение выводов
- •Б. Организация памятимикроконтроллера
- •В. Таймеры-счетчики мк
- •Г. Приемо-передатчик
- •Д. Системапрерываний микроконтроллера
- •Е. Системакоманд мк
- •3.3. Супервизорные схемы
Микроконтроллеры семейства mcs51
В настоящее время различными фирмами выпускается множество модификаций и аналогов этого семейства, как фирмой Intel, так и другими производителями, тактовая частота и объем памятивозросли в десятки раз и продолжают повышаться. Дополняется и набор встроенных в БИС модулей, в большое число современных моделей встроен рези- дентный быстродействующий АЦП, имеющий до 12, а сейчас может быть и более разря- дов. Но в основе семейства МСS51 БИС 8051, 80С51, 8751, 87С51, 8031, 80С31 фирмы Intel, первые образцыкоторыхбыли выпущеныв 1980 году.
Микроконтроллеры семейства MCS51 выполнены по высококачественной n-МОП технологии (серия 8ХХХ, аналог - серия 1816 в России и Белоруссии) и k-МОП техноло- гии (серия 8ХСХХ, аналог - серия 1830). Второй символ, следующий за 8 означает: 0 – РПЗУ на кристалле нет, 7 – РПЗУ объемом 4К с ультрафиолетовым стиранием. Третий символ: 3 – ПЗУ накристалленет, 5 – если нетРПЗУ, то на кристалле масочное ПЗУ.
И так 80С51 – БИС по k-МОП технологии с масочным ПЗУ на кристалле, 8031 – БИС n-МОП без памяти программ (ПЗУ, РПЗУ) на кристалле, 8751 – БИС n-МОП с ре- зидентным (размещенным на кристалле) РПЗУ с ультрафиолетовым стиранием. Мы да- лее и будем рассматривать БИС 8751, делая, если нужно оговорки об отличиях других схем, приводя те параметры, которые были опубликованы для первых серийных БИС. Дополнительную информацию о всех современных модификациях Вы, при необходимо- сти, можете найти в фирменных справочниках и технической документации.
А. Общие характеристики и назначение выводов
Основу семейство MCS51 составляет пять модификаций МК (имеющих идентич- ные основные характеристики), основное различие между которыми состоит в реали- зации памяти программ и мощности потребления (см. таблицу 3.1). Микроконтоллер восьмиразрядный, т.е. имеет команды обработки восьмиразрядных слов, имеет Гарвард- скую архитектуру, тактовая частота у базовых образцов семейства составляет 12 МГц.
Таблица 3.1.
Микро- схемы |
Внутренняя память про- грамм, байт |
Тип памяти программ |
Внутренняя память данных, байт |
Тактовая частота, МГц |
Ток потреб- ления, мА |
8031 |
- |
внешняя |
128 |
12,0 |
150,0 |
8051 |
4К |
ПЗУ |
128 |
12,0 |
150,0 |
8751 |
4К |
РПЗУ |
128 |
12,0 |
220,0 |
80С31 |
- |
внешняя |
128 |
12,0 |
18,0 |
80С51 |
4К |
ПЗУ |
128 |
12,0 |
18,0 |
МК 8051 и 80С51 содержат масочно-программируемое при изготовлении кристалла ПЗУ памяти программ емкостью 4096 байт и рассчитаны на применение в массовой продукции. МК 8751 содержит РПЗУ емкостью 4096 байт с ультрафиолетовым стиранием и удобна на этапе разработки системы при отладке программ, а также при производстве не- большими партиями или при создании систем, требующих в процессе эксплуатации пе-
риодической подстройки.
МК 8031 и 80С31 не содержат встроенной памяти программ. Они, как и описанные ранее модификации могут использовать до 64 Кбайт внешней памяти программ и эффек- тивно использоваться в системах, требующих существенно большего по объему (чем 4 Кбайт на кристалле) ПЗУ памяти программ.
Каждый МК семейства содержит резидентную память данных емкостью 128 байт с возможностью расширения общего объема оперативной памяти данных до 64 Кбайт за счет использования внешних ИС ОЗУ.
МК содержат все узлы, необходимые для автономной работы:
центральный восьмиразрядный процессор;
память программ объемом 4 Кбайт (только 8751 и 87С51);
память данных объемом 128 байт;
четыре восьмиразрядных программируемых порта ввода-вывода;
два 16-битовых многорежимных таймера/счетчика;
систему автовекторных прерываний с пятью векторами и двумя программно управ- ляемыми уровнями приоритетов;
последовательный интерфейс, включающий универсальный дуплексный приемопе- редатчик, способный функционировать в четырех режимах;
тактовый генератор.
Система команд МК содержит 111 базовыхкомандс форматом1, 2, или 3 байта. Микроконтроллер имеет:
32 регистра общего назначения РОН, организованных как четыре банка по восемь регистров с именами R0… R7, выбор того или иного банка определяется программой пу- тем установки соответствующих бит в регистре состояния программы PSW;
128 программно-управляемых флагов (битовый процессор, см. далее);
набор регистров специальных функций, управляющих элементами МК. Существуют следующие режимы работы микроконтроллера:
1). Общий сброс. 2).Нормальное функционирование. 3).Режим пониженно- го энергопотребления и режимхолостого хода. 4). Режим программирования ре- зидентного РПЗУ, если оно есть.
Мы здесь основное внимание уделим первым двум режимам работы, подробное описаниесоставаи работыМКвовсех режимахприведено в приложенииП1.
РОН и зона битового процессора расположены в адресном пространстве рези- дентной ОЗУ с адресами от 0 до80h.
В верхней зоне адресов резидентной оперативной памяти расположены регистры спе- циальных функций (SFR, Special Function Registers). Их назначение приведено в табл. 3.2.
Таблица 3.2.
Обозначение |
Наименование |
Адрес |
* АСС |
Аккумулятор |
Е0Н |
* В |
Регистр В |
F0Н |
* PSW |
Регистр состояния программы |
D0Н |
SР |
Указатель стека |
81Н |
DPTR |
Указатель данных. 2 байта: |
|
DPL |
Младший байт |
82Н |
DPH |
Старший байт |
83Н |
* Р0 |
Порт 0 |
80Н |
* Р1 |
Порт 1 |
90Н |
* Р2 |
Порт 2 |
А0Н |
* Р3 |
Порт 3 |
В0Н |
* IР |
Регистр приоритетов прерываний |
В8Н |
* IЕ |
Регистр разрешения прерываний |
А8Н |
ТМОD |
Регистр режимов таймера/счетчика |
89Н |
* TCON |
Регистр управления таймера/счетчика |
88Н |
ТН0 |
Таймер/счетчик 0. Старший байт |
8СН |
ТL0 |
Таймер/счетчик 0. Младший байт |
8АН |
ТН1 |
Таймер/счетчик 1. Старший байт |
8DН |
ТL1 |
Таймер/счетчик 1. Младший байт |
8ВН |
* SCON |
Управление последовательным портом |
98Н |
SBUF |
Буфер последовательного порта |
99Н |
PCON |
Управление потреблением |
87Н |
* — регистры, допускающие побитовую адресацию
Кратко рассмотрим функции регистров SFR, приведенных в таблице 3.2.
Аккумулятор АCC - регистр аккумулятора. Команды, предназначенные для рабо-
ты с аккумулятором, используют мнемонику "А", например, MOV А, Р2. Мнемоника "АСС' используется, к примеру, при побитовой адресации аккумулятора. Так, символи- ческое имя пятого бита аккумулятора при использовании ассемблера А5М51 будет сле- дующим: АСС. 5. .
Регистр В. Используется во время операций умножения и деления. Для других инструкций регистр В может рассматриваться как дополнительный сверхоперативный регистр.
Регистр состояния программы PSW содержит информацию о состоянии про- граммы и устанавливается частично автоматически по результату выполненной опера- ции, частично пользователем. Обозначение и назначение разрядов регистра приведены соответственно в таблицах 3.3 и 3.4.
Таблица 3.3.
Биты |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
Обозначение |
CY |
AC |
F0 |
RS1 |
RS0 |
OV |
- |
P |
Таблица 3.4.
Би- ты |
Обозна- чение |
Назначение битов |
Доступ к биту | |||
7 |
CY |
Флаг переноса. Изменяется во время выполнения ряда арифметических и логических инструкций. |
Аппаратно или программно | |||
6 |
АС |
Флаг дополнительного переноса. Аппаратно уста- навливается/сбрасывается во время выполнения инструкций сложения или вычитания для указания переноса или заема в бите 3 при образовании младшего полубайта результата (D0-D3). |
Аппаратно или программно | |||
5 |
F0 |
Флаг 0. Флаг, определяемый пользователем. |
Программно | |||
4 |
RS1 |
Указатель банка рабочих регистров |
Программно | |||
3 |
RS0 |
Указатель банка рабочих регистров |
Программно | |||
-- |
RS1 |
RS0 |
Банк 0 с адресами (00Н - 07Н) Банк 1 с адресами (08Н – 0FН) Банк 2 с адресами (10Н - 17Н) Банк 3 с адресами (18Н – 1FН) |
| ||
0 |
0 | |||||
0 |
1 | |||||
1 |
0 | |||||
1 |
1 | |||||
2 |
OV |
Флаг переполнения. Аппаратно устанавливается или сбрасывается во время выполнения арифмети- ческих инструкций для указания состояния пере- полнения |
Аппаратно или программно | |||
1 |
-- |
Резервный. Содержит триггер, доступный по запи- си и чтению, который можно использовать |
| |||
0 |
P |
Бит четности. Аппаратно сбрасывается или уста- навливается в каждом цикле инструкций для указа- ния четного или нечетного количества разрядов ак- кумулятора, находящихся в состоянии "1". |
Аппаратно или программно |
Указатель стека SР - 8-битовый регистр, содержимое которого инкрементирует- ся перед записью данных в стек при выполнении команд PUSH и CALL. При начальном сбросе указатель стека устанавливается в 07Н, а область стека в ОЗУ данных начинается с адреса 08Н. При необходимости путем переопределения указателя стека область стека может быть расположена в любом месте внутреннего ОЗУ данных микроконтроллеры.
Указатель данных DPTR состоит из старшего байта (DPH) и младшего байта
(DPL). Содержит 16-битовый адрес при обращении к внешней памяти. Может использо-
ваться как 16-битовый регистр или как два независимых восьмибитовых регистра.
Порт0 - ПортЗ. Отдельными битами регистров специальных функций Р0, Р1, Р2, РЗ являются биты -"защелки" выводов портовР0, Р1, Р2, РЗ.
Буфер последовательного порта SBUF представляет собой два отдельных реги- стра: буфер передатчика и буфер приемника. Когда данные записываются в SBUF, они поступают в буфер передатчика, причем запись байта в SBUF автоматически иницииру- ет его передачу через последовательный порт. Когда данные читаются из SBUF, они вы- бираются из буфера приемника.
Регистры таймера. Регистровые пары (ТН0, ТL0) и (ТН1, TL1) образуют 16-
битовые счетные регистры соответственно таймера/счетчика 0 и таймера/счетчика 1.
Регистры управления. Регистры специальных функций IР, IЕ, ТМOD, ТСОN, SCON и РСОN содержат биты управления и биты состояния системы прерываний, тай-
меров/счетчиков и
последовательного порта.
Они
будут
подробно
рассмотрены
далее.
V
R
VPP
RxD TxD INT0 INT1 T0 T1 WR
RD
P1.0 MC P1.1
P1.2 P1.3 P1.4 P1.5 P1.6 P1.7
RST BQ2 BQ1 EA
P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7
O B
Vcc
P2.0 P2.1 P2.2 P2.3 P2.4 P2.5 P2.6 P2.7
PME ALE
P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7
PROG
МК при функционировании обеспечивает:
минимальное время выполнения команд сложения-1 мкс;
аппаратное умножение и деление с минимальным време- нем выполнения - 4 мкс.
В МК предусмотрена возможность задания частоты внутреннего генератора с помощью кварца, LС-цепочки или внешнего генератора.
Расширенная система команд обеспечивает побайтовую и побитовую адресацию, двоичнуюи двоично-десятичную арифметику, индикацию пере- полнения и определения четности/нечетности, воз- можность реализации логического процессора.
Важнейшей и отличительной чертой архитек- туры семейства MCS51 является то, что АЛУ может наряду с выполнением операций над 8-разрядными типами данных манипулировать одноразрядными данными. Отдельные программно-доступные биты могут быть установлены, сброшены или заменены их дополнением, могут пересылаться, проверяться и
Рис.3.2. Внешние выводы
микроконтроллера
использоваться в логических вычислениях. Тогда как поддержка простых типов данных (при сущест-
вующей тенденции к увеличению длины слова) может с первого взгляда показаться ша- гом назад, этокачестводелает микроконтроллеры семействаMCS51 особенно удобными для применений, в которых используются контроллеры. Алгоритмы работы по- следних по своей предполагают наличие входных и выходных булевых переменных, которые сложно реализовать при помощи стандартных микропроцессоров. Все эти свой- ства в целом называются булевым процессором семейства MCS51. Благодаря такому мощному АЛУ набор инструкций микроконтроллеры семейства MCS51 одинаково хоро- шо подходит как для применений управления в реальном масштабе времени, так и для ал- горитмов с большим объемом данных.
Схемотехническое изображение микроконтроллера представлено на рис. 3.2. В ба- зовом варианте он упакован в 40-выводной DIP корпус. Рассмотрим назначение выводов.
Начнем с выводов питания «0 В» и «5 В», по которым он получает основное пита- ние. Ток потребления приведен в табл. 3.1.
Вывод «RST» - сброс микроконтроллера. При подаче на этот вывод активного вы- сокого уровня запускается режим общего сброса и МК производит следующие действия:
- устанавливает счетчик команд PC и все регистры специальных функций, кроме защелок портов Р0—РЗ, указателя стека SP и регистра SBUF, в ноль;
порта;
указатель стека принимает значение равное 07Н;
запрещает все источники прерываний, работу таймеров-счетчиков и последовательного
выбирает БАНК 0 ОЗУ, подготавливает порты Р0—РЗ для приема данных и опре-
деляет выводы ALE и РМЕ как входы для внешней синхронизации;
в регистрах специальных функций PCON, IP и IE резервные биты при- нимают случайные значения, а все остальные биты сбрасываются в ноль;
в регистре SBUF устанавливаются случайные значения.
устанавливает фиксаторы-защелки портов Р0—РЗ в "1".
Состояния регистров микроконтроллера после сброса приведены в таблице 3.5.
Таблица 3.5.
Регистр |
Информация |
PC |
0000H |
АСС |
00H |
В |
00H |
PSW |
00H |
SP |
07H |
DPTR |
0000H |
P0-P3 |
0FFH |
IP |
ХЮС00000В |
IE |
0XX00000B |
TMOD |
00H |
TCON |
00H |
TH0 |
00H |
TL0 |
00H |
TH1 |
00H |
TL1 |
00H |
SCON |
00H |
SBUF |
Неопределенная |
PCON |
0ХХХ0000В для k-MOП 0XXXXXXXB для n-МОП |
Вывод RST имеет и альтернативную функцию. Через него подается резервное питания для сохранения неизменным содержимого ОЗУ микроконтроллера при снятии основного.
Выводы BQ1, BQ2 – предназначены для подключения кварцевого резонатора, оп- ределяющего тактовую частоту работы МК.
Вывод ЕА` (External Adress – внешний адрес) - предназначен для активизации ре- жима чтенияуправляющих кодов из внешней памяти программ, при подаче на этот вывод активного низкогоуровня. Вывод имеет иальтернативное назначение (функцию). На него подается напряжение программирования РПЗУ в режиме программирования.
Вывод PME (Program Memory Enable – разрешение памяти программ) - предна- значен для управления циклом чтения из памяти программ и автоматически активизиру- ется МК в каждом машинном цикле.
Вывод ALE (Adress Length Enable – разрешение младшего адреса) стробирует вы- вод младшей части адреса по порту Р0. Вывод используется и при программировании РПЗУ, при этом на него подается стробирующий процесс программирования импульс.
МК содержит четыре группы портов: Р0, Р1, Р2, и Р3. Это оставшиеся из 40-авыводов микроконтроллера. Эти порты могут служитьдля побитного ввода – вывода информации, но помимо этого каждый из них имеет свою специализацию. Обобщенная функциональная схе- ма порта представлена на рис. 3.3. Порт содержит выходные ключи на полевых транзисторах, подключенные к выводу, переключатель функций, защелку на D-триггере и логику управле- ния. Взащелку по внутреннейшине МК можетбытьзаписана единица илиноль. Эта инфор- мация через переключатель функций поступает на выходные ключи и вывод МК. В состоя- нии единицы оба транзистора N и N1 закрыты, но открыт N2. В состоянии нуля N открывает-
ся, а N2 закрывается. В момент, когда порт выполняет альтернативную функцию, на которую онспециализирован, состояние защелкис вывода снимается. Микроконтроллер отдельно мо- жет считать состояние защелки порта и состояние его вывода, установленное внешним сигна- лом. Для этого в ассемблере МК имеются специальные команды, активизирующие соответст- вующие линии. Для чтения состояния вывода в защелку соответствующего порта должна
быть предварительно записана
От внутрен-
Управление Защелка
Переключатель функций
Vcc
Выходные
ключи
единица. При активизации линии «чтение защелки» на выходе ячейки «И», к которой подключенаэта линияпоявля-
ней шины МК D Q
Запись в защелку C Q
Чтение защелки
Чтение
N1 N2
N
Вывод порта
ется состояние защелки, по- ступающее на внутреннюю шину МК, при активизации
«чтение вывода» - состояние внешнего вывода порта.
Порт Р0 – универсаль- ный двунаправленный порт
вывода
GND
ввода-вывода. За этим портом
закреплена функция организа- ции внешних шин адресов и
Рис. 3.3. Функциональная схема порта микроконтроллера
данных для расширенияпамя- ти программ и памяти данных
микроконтроллера. Когда идет обращение к внешней памяти программ или выполняется ко- манда обращения к внешней памяти данных, на выводах порта устанавливается младшая часть адреса (А0…А7), которая стробируется высоким уровнем на выводе ALE. Затем, при записи в память данных, записываемая информация с внутренней шины МК поступает на выводы порта Р0. В операциях чтения, наоборот, информация с выводов порта поступает на внутреннюю ши- ну. Особенностью порта Р0 является отсутствие «подтягивающего» транзистора N2, обеспечи- вающего подачу питания на вывод. При записи в защелку порта единицы он просто переводит- ся в высокоимпедансное состояние, что необходимо для нормальной работы шины данных. При необходимости запитывать через вывод какие либо внешние устройства, следует преду- сматривать внешние резисторы от цепей питания на вывод порта.
Порт Р1 – универсальный двунаправленный порт ввода-вывода без альтернатив- ных функций.
Порт Р2 – универсальный двунаправленный портввода-вывода, в качестве альтер- нативной функции осуществляющий выдачу старшей части адреса (А8…А15) при обра- щении к внешней памяти.
Порт Р3 – универсальный двунаправленный порт ввода-вывода, каждый бит кото- рого предусматривает выполнениеразличныхальтернативных функций. Приэтом альтер- нативные функции реализуются только в том случае, если в защелки выводов порта запи- саны единицы, в противном случае выполнение альтернативных функций блокируется. Перечислим их раздельно для каждого бита:
Р3.0 – RxD (Read eXternal Date, читать внешние данные) – вход встроенного после- довательного приемо-передатчика.
Р3.1 – ТxD (Type eXternal Date, передавать внешние данные) – выход встроенного последовательного приемо-передатчика.
Р3.2 – INT0` (INTerrupt, прерывание) – вход внешнего прерывания 0.
Р3.3 – INT1` – вход внешнего прерывания 1.
Р3.4 – С/T0 – вход нулевого встроенного таймера/счетчика.
Р3.5 – С/T1 – вход первого встроенного таймера/счетчика.
Р3.6 – WR` (Write, писать) – вывод управления циклом записи в памяти данных.
Р3.7 – RD` (Read, читать) – вывод управления циклом чтения из памяти данных.
Выводы портаР1, Р2 и Р3 способны в единице выдавать тококоло0.2мА и принимать в нуле ток 3 мА, выводы порта Р0 мощнее и способны в единице выдавать ток около 0.8мА и при- нимать в нуле ток 5 мА. Краткая информация о назначении выводов микроконтроллера приведе- на в таблице 3.6.
Таблица 3.6.
N вывода |
Обозначение |
Назначение вывода |
Тип |
1-8 |
Р1.0-Р1.7 |
8-разрядныи двунаправленный порт Р1. Вход адреса А0-А7 при проверке внутреннего ПЗУ (РПЗУ) |
вход/ выход |
9 |
RST |
Сигнал общего сброса. Вывод резервного пита- ния ОЗУ от внешнего источника (для 1816) |
вход |
10-17 |
Р3.0-Р3.7 |
8-разрядный двунаправленный порт P3 с допол- нительными функциями |
вход/ выход |
Р3.0 |
Последовательные данные приемника - RхD |
вход | |
Р3.1 |
Последовательные данные передатчика - ТхD |
выход | |
Р3.2 |
Вход внешнего прерывания 0- INТ0` |
вход | |
РЗ.З |
Вход внешнего прерывания 1-INT1` |
вход | |
Р3.4 |
Вход таймера/счетчика 0: - Т0 |
вход | |
РЗ.З |
Вход таймера/счетчика 1: - Т1 |
вход | |
Р3.6 |
Выход стробирующего сигнала при записи во внешнюю память данных: - WR` |
выход | |
Р3.7 |
Выход стробирующего сигнала при чтении из внешней памяти данных – RD` |
выход | |
18 19 |
BQ2 ВQ1 |
Выводы для подключения кварцевого резонато- ра. |
выход вход |
20 |
0 В |
Общий вывод |
|
21-28 |
Р2.0-Р2.7 |
8-разрядный двунаправленный порт Р2. Выход адреса А8-А15 в режиме работы с внешней па- мятью. В режиме проверки внутреннего ПЗУ выводы Р2.0 - Р2.6 используются как вход адреса А8-А14. Вывод Р2.7 - разрешение чтения ПЗУ. |
вход/ выход |
29 |
РМЕ` |
Разрешение программной памяти |
выход |
30 |
АLЕ |
Выходной сигнал разрешения фиксации адреса. При программировании РПЗУ сигнал: PROG |
вход/ выход |
31 |
ЕА` |
Блокировка работы с внутренней памятью. При программировании РПЗУ подается сигнал UРR |
вход/ выход |
32-39 |
Р0.7-Р0.0 |
8-разрядный двунаправленный порт Р0. Шина адреса/данных г работе с внешней памятью. Вы- ход данных D7-D0 в режиме проверки внутрен- него ПЗУ (РПЗУ). |
вход/ выход |
40 |
Uсс |
Вывод питания от источника напряжения +5В |
|