Однокристальные контроллеры семейства МК51
Однокристальные микроконтроллеры - отдельный класс микросистем. Полный набор их средств расположен на одном кристалле. Сюда кроме центрального процессора входят память, подсистема ввода-вывода, средства поддержки режима реального времени (РВ). Интеграция всех составных частей микро-ЭВМ на одном кристалле внесла ряд ограничений на принципы ее организации, потребовала новых решений в развитии ее архитектуры, не свойственных многокристальным компоновкам. В результате был получен новый класс микроконтроллеров (МК) с присущими только ему принципами построения архитектуры и структурной схемы.
Структурная организация, набор команд и аппаратурно-программные
средства ввода/вывода информации микроконтроллеров лучше всего
приспособлены для решения задач управления и регулирования в приборах,
устройствах и системах автоматики, а не для решения задач обработки данных.
Микроконтроллеры не являются машинами классического "фон-неймановского"
типа, так как физическая и логическая разделенность памяти программ и
памяти данных исключает возможность модификации и/или замены (перегрузки)
прикладных программ микроконтроллеров во время работы, что сильно
затрудняет их использование в качестве универсальных средств обработки
данных.
МК51 имеет в своем составе: процессор, в состав которого входят 1-
байтное АЛУ и схема аппаратурной реализации команд умножения и деления;
стираемое ПЗУ программ емкостью 4 Кбайта, ОЗУ данных емкостью 128 байт; два
16-битных таймера/счетчика; программируемые схемы ввода/вывода (32 линии);
блок двухуровневого векторного прерывания от пяти источников; асинхронный
канал дуплексного последовательного ввода/вывода информации со скоростью до
375 кбит/с; генератор, схему синхронизации и управления.
Структурная организация и система команд МК51.
Микроконтроллер выполнен на основе высокоуровневой n-МОП технологии и
выпускается в корпусе БИС, имеющем 40 внешних выводов. Через четыре
программируемых порта ввода/вывода МК51 взаимодействует со средой в
стандарте ТТЛ-схем с тремя состояниями по выходу. В современном исполнении
микроконтроллер может быть выполнен также в К-МОП исполнении
Назначение выводов.
GND - потенциал земли;
EA/VPP - отключение резидентной памяти программ/напряжение программирования
(21В);
VCC - основное напряжение питания +5В;
ALE/PROG - строб адреса внешней памяти/для подачи уровня GND при
программировании;
PSEN - разрешение внешней памяти программ;
RD - стробирующий сигнал при чтении из внешней памяти данных или
устройства ввода/вывода;
WR - стробирующий сигнал при записи во внешнюю память данных или устройства
ввода/вывода;
T0 - входной сигнал, опрашиваемый по командам условного перехода, так же
используется при программировании;
Т1 - входной сигнал, опрашиваемый по командам условного перехода,
используется в качестве входа внутреннего счетчика внешних событий;
INT0, INT1 - сигнал запроса прерывания;
RST/VPD - сигнал общего сброса/вход питания при пониженном
энергопотреблении;
RXD и TXD - входы последовательного интерфейса;
XTAL1, XTAL2 - входы подключения кварцевого резонатора;
P0, P1, P2, P3 - квазидвунаправленные порты параллельного ввода-вывода
(порт P3 несет дополнительные функции)
Арифметико-логическое устройство
8-битное АЛУ может выполнять арифметические операции сложения, вычитания,
умножения и деления; логические операции и, или, исключающее или, а так же
операции сдвига, сброса, инвертирования и т.д. В АЛУ имеются программно
недоступные регистры Т1 и Т2, предназначенные для временного хранения
операндов, схема десятичной коррекции и схема формирования признаков.
Важной особенностью АЛУ является его способность оперировать не только
байтами, но и битами. Отдельные программно доступные биты могут быть
установлены, сброшены, инвертированы, переданы, проверены и использованы в
логических операциях.
Резидентная память
Память программ и память данных, размещенные на кристалле МК51, физически и логически разделены, имеют различные механизмы адресации, работают под управлением различных сигналов и выполняют различные функции.
Память программ(РПП): имеет емкость 4 Кбайта и предназначена для хранения команд, констант, управляющих слов инициализации, таблиц перекодировки входных и выходных переменных и т.п. РПП имеет 16-битную шину адреса, через которую обеспечивается доступ из счетчика команд или из регистра указателя данных. Последний выполняет функции базового регистра при косвенных переходах по программе или используется в командах, оперирующих с таблицами.
Память данных (РПД): предназначена для хранения переменных в процессе
выполнения прикладной программы, адресуется одним байтом и имеет емкость
128 байт. Кроме того, к адресному пространству РПД примыкают адреса
регистров специальных функций.
Память программ, так же как и память данных, может быть расширена до
64 Кбайт путем подключения внешних БИС.
В МК51 предусмотрены четыре банка по восемь рабочих регистров R0...R7;
банк выбирается полем RS в слове состояния программы. Они выполняют
общецелевые функции по промежуточному хранению данных. По аналогии с МК48
R0 и R1 каждого банка реализуют также функцию 8-разрядных указателей
данных. С помощью набора рабочих регистров существенно уменьшается
длительность переключения контекстов ЦП, что очень важно для
микроконтроллеров реального времени. В МС51 отсутствует ограничения,
накладываемые на процедуры обслуживания прерываний, свойственные МК48.
Память программ (64 Кбайт) - однородная линейная область, реализуемая
как внутренними, так и внешними средствами. Для совместимости с МК48
предусмотрен ряд команд, которые позволяют рассматривать память в виде
набора 2-Кбайтных банков. Подобно архитектуре МК48 все банки рабочих
регистров, а также системный стек располагаются во внутренней памяти
данных. Определены два способа адресации памяти: прямой (direct) и
косвенный (@Ri, где i=0...1). С помощью прямой адресации доступна только
младшая адресного пространства внутренней памяти данных (128 байт), тогда
как косвенная обеспечивает доступ к любой ее ячейки из диапазона 256 байт.
Введение прямой адресации расширило возможности однокристальных
микроконтроллеров по обработки данных. В частности, появились средства
доступа к рабочим регистрам и системному стеку, интерпретируемым как
обычные ячейки памяти.
Микроконтроллер МК51 имеет развитую подсистему ввода-вывода и средства управления режимом реального времени. Для их управления в микроконтроллере предусмотрен ряд регистров, которые размещены в отдельно прямо адресуемом пространстве специальных регистров (128 байт). Сюда же включены и некоторые регистры ЦП. Пространство специальных регистров вместе с младшей частью адресного пространства внутренней памяти данных образуют прямо адресуемую область. При этом сначала размещается младшая половина пространства внутренней памяти данных, а затем пространство специальных регистров.
Блок регистров специальных функций
|Символ |Наименование |Адрес |
|ACC |Аккумулятор |0E0H |
|B |Регистр-расширитель |0F0H |
| |аккумулятора | |
|PSW |Слово состояния |0D0H |
| |программы | |
|SP |Регистр-указатель стека|81H |
|DPRT |Регистр-указатель |83H |
| |данных (DPH) | |
| |(DPL) |82H |
|P0 |Порт 0 |80H |
|P1 |Порт 1 |90H |
|P2 |Порт 2 |0A0H |
|P3 |Порт 3 |0B0H |
|IP |Регистр приоритетов |0B8H |
|IE |Регистр маски |0A8H |
| |прерываний | |
|TMOD |Регистр режима |89H |
| |таймера/счетчика | |
|TCON |Регистр |88H |
| |управления/статуса | |
| |таймера | |
|TH0 |Таймер 0 (старший байт)|8CH |
|TL0 |Таймер 0 (младший байт)|8AH |
|TH1 |Таймер 1 (старший байт)|8DH |
|TL1 |Таймер 1 (младший байт)|8BH |
|SCON |Регистр управления |98H |
| |приемопередатчиком | |
|SBUF |Буфер приемопередатчика|99H |
|PCON |Регистр управления |87H |
| |мощностью | |
Формат слова состояния программы (PSW)
|Символ |Позиция |Имя и значение |
|C |PSW.7 |Флаг переноса. Устанавливается |
| | |и аппаратурными средствами или |
| | |программой при выполнении |
| | |арифметических и логических |
| | |операций |
|AC |PSW.6 |Флаг вспомогательного переноса.|
| | |Устанавливается и сбрасывается |
| | |только аппаратурными средствами|
| | |при выполнении команд сложения |
| | |и вычитания и сигнализирует о |
| | |переносе или заеме в бите 3 |
|F0 |PSW.5 |Флаг 0. Может быть установлен, |
| | |сброшен или проверен программой|
| | |как флаг специфицируемый |
| | |пользователем |
|RS1 |PSW.4 |Выбор банка регистров. |
|RS0 |PSW.3 |Устанавливается и |
| | |сбрасывается аппаратно при |
| | |выполнении арифметических |
| | |операций |
|OV |PSW.2 |Флаг переполнения. |
| | |Устанавливается и сбрасывается |
| | |аппаратно при выполнении |
| | |арифметических операций |
|- |PSW.1 |Не используется |
|P |PSW.0 |Флаг паритета. Устанавливается |
| | |и сбрасывается аппаратно в |
| | |каждом цикле команды и |
| | |фиксирует нечетное/четное число|
| | |единичных бит в аккумуляторе, |
| | |т.е. выполняет контроль по |
| | |четности (PSW.0) |
Центральный процессор МК51 содержит специальную логику для выполнения
ряда однобитных операций, в которых роль аккумулятора реализует флажок
переноса СУ. Для хранения булевых данных в архитектуре МК51 предусмотрено
отдельное прямо адресуемое пространство BSEG (256 бит), которое физически
совмещено с прямо адресуемой частью внутренней памяти данных и областью
специальных регистров. Hапример, аккумулятор A, доступный как элемент
регистровой памяти, может быть прямо адресован и как элемент пространства
специальных регистров (адрес 0E0h), и как область битов с адресами
0E0h...0E7h. При этом битовый адрес 0E0h относится к младшему разряду
аккумулятора.
Размещенные в области специальных регистров четыре 8-разрядных псевдодвунаправленных порта ввода-вывода совмещены с битовым пространством, что обеспечивает доступ к отдельным их разрядам независимо друг от друга.
Последовательный интерфейс
В составе МК1 введен дуплексный периферийный связной адаптер, который может быть запрограммирован для работы в одном из четырех основных режимов:
0 синхронный последовательный ВВ со скоростью OSC/12;
1 асинхронный с 10-битовым кадром и переменной скоростью передачи;
2 асинхронный с 11-битовым кадром и фиксированной скоростью передачи
OSC/32 или OSC/64;
3 асинхронный с 11-битовым кадром и переменной скоростью передачи.
Через универсальный асинхронный приемопередатчик (УАПП) осуществляется прием, передача информации, представленной последовательным кодом, в полном дуплексном режиме обмена. В состав УАПП входят принимающий и передающий сдвигающие регистры, а также специальный буферный регистр (SBUF) приемопередатчика. Запись байта в буфер приводит к автоматической переписи байта в сдвигающий регистр и инициирует начало передачи байта. Наличие буферного регистра приемника позволяет совмещать операцию чтения ранее принятого байта с приемом очередного байта. Если к моменту окончания приема байта предыдущий байт не был считан из SBUF, то он будет потерян.
Управление режимом работы УАПП осуществляется через специальный регистр с символическим именем SCON. Этот регистр содержит не только управляющие биты, определяющие режим работы последовательного порта, но и девятый бит принимаемых или передаваемых данных (RB8 и TB8) и биты прерывания приемопередатчика (RI и TI).
Таймер/счетчик
Два программируемых 16-битных таймера/счетчика (Т/С0 и Т/С1) могут быть использованы в качестве таймеров или счетчиков внешних событий. При работе в качестве таймера содержимое Т/С инкрементируется в каждом машинном цикле. При работе в качестве счетчика содержимое Т/С инкрементируется под воздействием перехода из 1 в 0 внешнего входного сигнала, подаваемого на соответствующий (Т0, Т1) вывод МК51. Так как на распознавание перехода требуется два машинных цикла, то максимальная частота подсчета входных сигналов равна 1/24 частоты резонатора. На длительность периода входных сигналов ограничений сверху нет. Для гарантированного прочтения входного считаемого сигнала он должен удерживать значение 1 как минимум в течение одного машинного цикла.
Регистр режима работы таймера/счетчика (TMOD)
|Символ |Позиция |Имя и значение |
|GATE |TMOD.7 |Управление блокировкой. |
| |для T/C1 | |
| |TMOD.3 | |
| |для T/C0 | |
|C/T |TMOD.6 |Бит выбора режима таймера или |
| |для T/C1 |счетчика событий. |
| |TMOD.2 | |
| |для T/C0 | |
|M1 |TMOD.5 |Биты выбора режима работы |
| |для T/C1 | |
| |TMOD.1 | |
| |для T/C0 | |
|M0 |TMOD.4 | |
| |для T/C1 | |
| |TMOD.0 | |
| |для T/C0 | |
Структурная схема работы T/C0 (T/C1)
Режимы 0 и 1
(режим 0 для
совместимости
с МК48 13-ти
разрядный)
Режим 2
Режим 3
Система прерываний
Внешние прерывания INT0 и INT1 могут быть вызваны либо уровнем, либо перепадом сигнала из 1 в 0 на входах МК51 в зависимости от значений управляющих бит IT0 и IT1 в регистре TCON.
Прерывания могут быть вызваны или отменены программой, так как все рассмотренные выше флаги прерываний программно-доступны и могут быть установлены/сброшены программой с тем же результатом, как если бы они были установлены/сброшены аппаратурными средствами.
В блоке регистров специальных функций есть два регистра, предназначенных для управления режимом прерываний и уровнями приоритета. Их символические имена IE и IP соответственно.
Список литературы
1. Проектирование цифровых устройств на однокристальных
микроконтроллерах / В.В.Сташин, А.В. Урусов, О.Ф. Мологонцева. -
М.:Энергоатомиздат, 1990. - 224 с.
2. Кобылинский А.В., Липовецкий Г.П. Однокристальные микроЭВМ серии
МК1816 // Микропроцессорные средства и системы. 1986. №1. С.10
3. МикроЭВМ: В 8 кн.: пособие / Под. ред. Л.Н. Преснухина. Кн. 7.
Учебные стенды / Ю.И. Волков, В.Л. Горбунов, Д.И. Панфилов, С.Г. Шаронин. -
М.: Высш. шк., 1988. - 224 с.: ил.