close

Вход

Забыли?

вход по аккаунту

?

Nedelin

код для вставкиСкачать
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
Федеральное государственное автономное образовательное учреждение
высшего профессионального образования
САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
АЭРОКОСМИЧЕСКОГО ПРИБОРОСТРОЕНИЯ
П. Н. Неделин
ОСНОВЫ
МИКРОПРОЦЕССОРНОЙ
ТЕХНИКИ
Учебное пособие
Санкт-Петербург
2013
УДК 004.3
ББК 32.973.26-04
Н42
Рецензенты:
зав. кафедрой лазерных измерительных и навигационных систем
СПбГЭТУ «ЛЭТИ»
доктор технических наук, профессор Ю. В. Филатов;
кандидат технических наук, доцент В. Я. Мамаев
Утверждено
редакционно-издательским советом университета
в качестве учебного пособия
Неделин, П. Н.
Н42 Основы микропроцессорной техники: учеб. пособие/ П. Н. Неделин. – СПб.: ГУАП, 2013. – 64 с.: ил.
ISBN 978-5-8088-0836-2
Содержатся основные сведения о структуре и принципе работы
микропроцессорных систем.
Рассмотрены виды памяти микропроцессорных систем, система
команд микропроцессора, в том числе команды обработки данных,
вызова подпрограмм и способы ввода/вывода информации: структура и система команд микроконтроллера АТ 89С2051 – способ последовательной передачи данных.
Приведены примеры схемных решений с использованием данного микроконтроллера. В заключительном разделе даны основные
параметры микроконтроллера PIC 16C84.
УДК 004.3
ББК 32.973.26-04
ISBN 978-5-8088-0836-2
© Санкт-Петербургский государственный
университет аэрокосмического
приборостроения (ГУАП), 2013
© П. Н. Неделин, 2013
1. ВНУТРЕННЯЯ СТРУКТУРА МИКРОПРОЦЕССОРА
Микропроцессор (МП) – это устройство, содержащее одну (реже
несколько) интегральных микросхем (ИМС), осуществляющее
прием, обработку и выдачу информации, руководствуясь программой, записанной в памяти.
Микропроцессорная система (МПС) – это вычислительная:
контрольно-измерительная им управляющая система, основным
устройством обработки информации в которой является МП.
Микропроцессоры разделяют на универсальные и специализированные. Универсальные предназначены для решения широкого круга задач, в то время как специализированные рассчитаны
на задачи определенных классов, к ним относят сигнальные МП,
предназначенные для цифровой обработки сигналов в реальном
масштабе времени, в первую очередь в контрольно-измерительных
и управляющих системах и приборах, и мультимедийные МП, используемые в аудио, видео и бытовой технике и пр.
Микроконтроллер (МК) представляет собой устройство, выполненное конструктивно в виде одной микросхемы (БИС), содержащей все основные функциональные элементы микропроцессорной
системы.
Шина (BUS) – это информационный канал, объединяющий все
блоки МПС и обеспечивающий обмен данными. Различают параллельные и последовательные шины. Все основные элементы МПС
соединены с единой параллельной шиной, называемой системной,
которая содержит:
– шину адреса, она является однонаправленной и предназначена для передачи адреса памяти, устройства ввода/вывода и др.;
– шину данных, она является двунаправленной и предназначена для обмена данными между элементами (блоками) МПС;
– шину управления, предназначенную для передачи управляющих сигналов. Отдельные линии этой шины предназначены для
передачи сигналов от МП к внешним устройствам и наоборот.
Функциональная схема МПС показана на рис. 1, где:
– ЦП – центральный процессор или МП;
– память, состоящая из постоянной (ПЗУ), предназначенной
для размещения и хранения программ таблиц, констант и т. д. и
оперативной (ОЗУ) – для хранения промежуточных результатов;
– система прерываний, позволяющая МПС реагировать на внешние сигналы, так называемые запросы прерываний, поступающие
от внешних устройств (например, датчиков);
3
– система ввода/вывода, состоящая из устройств ввода/вывода,
подключаемых к системной шине через соответствующие интерфейсы;
– таймер, предназначенный для реализации временных функций: подсчета внешних сигналов, формирования временных интервалов и т. д.
Следует отметить, что МПС может содержать и другие дополнительные блоки, например контроллер прямого доступа в память.
Архитектура МП определяет его составные части (т. е. функциональные элементы) и взаимодействие между ними. Она включает:
– структурную схему МП;
– программную модель (т. е. описание работы МП, системы команд, способов адресации и т. д.);
– описание структуры и организации памяти;
– описание процедур ввода/вывода.
Существуют два основных типа архитектуры, а именно предложенная математиком фон Нейманом (1945 г.), особенностью
которой является то, что программа и данные находятся в общей
памяти, доступ к которой осуществляется по одной шине адреса и
данных и гарвардская архитектура (1944 г.), где память данных и
программ разделены.
Память
ЦП
ПЗУ
ОЗУ
Синхронизация
Таймер
Системная
шина
Система
прерываний
Интерфейс
ввода
Интерфейс
вывода
Устройство
вывода
Устройство
вывода
Внешние
сигналы
Рис. 1
4
Структурная схема МП (рис. 2) дает возможность наглядно рассмотреть его работу. Изображенный 8-разрядный МП приведен в
качестве типичного примера и не является какой-либо конкретной
моделью, но содержит основные функциональные элементы (блоки), связанные внутренней шиной данных (DB).
Арифметико-логическое устройство (АЛУ) выполняет главную
функцию МП – обработку данных. АЛУ имеет два входных и один
выходной порт, предназначенные для ввода данных (операндов) и
вывода результата операции. Оба входных порта АЛУ снабжены
буферными регистрами (БР), предназначенными для фиксации
операндов. Для размещения результата операции служит аккумулятор – главный регистр МП. Аккумулятор (А) связан с шиной
данных, что позволяет передавать его содержимое (например, результат операции) на внешние блоки МПС (память, УВВ), перемещать его внутри МП и принимать данные, размещенные на шине.
Связь аккумулятора с одним из буферных регистров обеспечивает
выполнение ряда операций над его содержимым (инверсию, сдвиг,
приращение данных) и обусловливает порядок выполнения арифметических и логических операций. Количество разрядов аккумулятора соответствует длине слова данных МП, т. е. 8 бит, однако
некоторые МП имеют аккумуляторы двойной длины, что упрощает
проведение ряда арифметических операций.
РС
8
РК
8
АЛУ
СК (М)
СК (С)
ДК
БР1
1
8
8
D
8
8
В
8
С
УУ
1
БР
8
8
А
Шина
Шина
данных управления
РАП
(М)
РАП
(С)
1
6 А
В
1
Рис. 2
5
Регистр состояния (РС), или регистр «флагов», предназначен
для хранения результатов некоторых проверок, осуществляемых
при выполнении программ. Содержимым РС является слово состояния, отдельные разряды которого отражают результат проверок.
В общем случае оно обязательно содержит три модифицируемых
бита Z, N, C, значения которых устанавливаются следующим образом:
– Z = 1, если результат операции нулевой (в противном случае
Z = 0);
– N = 1, если результат представляет собой отрицательное число, т. е. его знаковый (старший) бит равен 1;
– С = 1, если при выполнении арифметической операции возникает бит переноса, равный 1.
При положительном результате и отсутствии переноса значения
N и C устанавливаются в 0.
Запоминание результатов проверок позволяет использовать
программы, содержащие команды условного перехода (передачи
управления), и выполнять арифметические команды (например,
сложение) с учетом состояния бита переноса.
Счетчик команд (СК), или программный счетчик, предназначен
для размещения адреса памяти, где содержится код выполняемой
команды, данные и/или их адрес, над которыми эта команда выполняется. Согласно рис. 2 СК имеет двойной формат (16 бит, или
2 байта), что позволяет обращаться к памяти, информационная емкость которой составляет 64 К×8 бит и 64 Кбайт.
Перед выполнением программы в СК необходимо загрузить
адрес памяти, содержащий первую команду программы. После извлечения команды из памяти МП автоматически дает приращение
содержимого СК, т. е. начиная с этого момента СК «указывает»,
какой будет следующая команда. Тем самым соблюдается последовательный порядок выполнения команд, размещенных в памяти.
Отступление от этого порядка происходит при переходе к подпрограммам, когда в СК загружается адрес первой команды подпрограммы.
Адрес памяти, содержащей первую и последующие команды,
побайтно пересылается в 16-разрядный регистр адреса памяти
(РАП), после чего содержимое СК и РАП становится одинаковым.
Выходом РАП является 16-разрядная шина адреса.
Поскольку РАП подключен к внутренней шине данных МП, он
может загружаться от различных источников, например регистровой пары.
6
Регистр команд (РК) предназначен для хранения текущей (выполняемой) команды, поступающей в него по шине данных; выход
РК является частью дешифратора команд (ДK) который в свою очередь входит в состав устройства управления (УУ). Роль УУ заключается в формировании требуемой последовательности функционирования МП и системы в целом. УУ связано линиями управления со всеми остальными блоками МП, его внешний выход – шина
управления (СВ) обеспечивает интерфейс с памятью и УВВ, т. е.
чтение/запись данных и осуществляет синхронизацию работы МП.
УУ осуществляет декодирование команды, размещенной в РК, посредством ДK, который выдает сигналы, необходимые для ее выполнения.
Регистры D, B, C называют регистрами общего назначения
(РОН), которые образуют внутреннее ОЗУ МП. В конкретных моделях МП и МК число РОН может достигать нескольких десятков.
Если регистр D предназначен для размещения 8-битовых данных,
то регистры B и C могут выполнять функции 16-разрядного, где
можно разместить данные двойной длины. Регистры ВС образуют
регистровую пару и используются для размещения не только данных, но и 16-разрядного адреса памяти.
Работа МП включает в себя стадии (подциклы) выборки и выполнения.
В процессе выборки содержимое СК, т. е. адрес команды, поступает в РАП, а оттуда – в модуль памяти (ПЗУ). УУ обеспечивает
доступ в модуль ПЗУ, откуда код выбранной команды передается
в РК. По окончании выборки содержимое СК увеличивается на 1.
Выполнение предусматривает декодирование команды и выработку устройством управления сигналов, активизирующих работу
блоков МП, обеспечивающих выполнение предусмотренных командой действий.
Цикл «выборка – выполнение» называют машинным циклом.
7
2. ПАМЯТЬ МИКРОПРОЦЕССОРНОЙ СИСТЕМЫ
Обязательным условием работы любой микропроцессорной
системы является наличие адресуемого пространства памяти,
предназначенной для:
– предварительной записи (программирования) и последующего
хранения последовательностей кодов команд, адресов операндов,
некоторых данных (например, констант), с целью их чтения в ходе
выполнения программы. Содержимое этого вида памяти обычно сохраняется неизменным как в ходе работы МПС, так и в случае выключения устройства, ее содержащего, т. е. такая память является
энергонезависимой и называется постоянной памятью (ПЗУ), или
ROM. В ряде случаев содержимое ПЗУ может меняться, например,
при настройке параметров TВ и радиоприемников; ПЗУ подобного
типа, допускающие возможность программирования и в том числе
репрограммирования, называют ППЗУ, или PROM;
– размещения данных – промежуточных результатов вычислений, кодов сигналов, поступающих с устройств, ввода и т. д. Такого
рода память допускает многократную запись и чтение данных и называется оперативной (ОЗУ, или RAM). Содержимое ОЗУ теряется
при выключении питания, т. е. этот вид памяти является энергозависимым.
Конструктивно память выполняется либо в виде нескольких
отдельных микросхем, образующих плату памяти, связанную с
остальными блоками МПС системной шиной, либо встраивается в
БИС микроконтроллера. В последнем случае допускается подключение, в случае необходимости, внешних микросхем памяти с целью расширения ее пространства.
Управление работой памяти в режиме чтения производится посредством передачи формируемого МП слова адреса, поступающего
по шине адреса на соответствующие адресные входы. Адрес однозначно определяет обращение к выбранной им ячейке памяти, содержимое которой поступает на выходы данных, связанные в свою
очередь с шиной данных. В режиме записи выставленные данные заносятся в ячейку памяти, определяемую адресом. Подобный способ
обращения присущ памяти с произвольным доступом (выборкой).
Основной характеристикой микросхем памяти является их организация, определяемая разрядностью адреса nA и данных Nд.
Разрядность адреса определяет число N адресуемых ячеек памяти:
N = 2nA, а значение nд – емкость отдельной ячейки. Обычно nд выбирается кратной 8 бит, т. е. 1 байт. Так, при N = 1024 = 1К, что
8
соответствует разрядности адреса nA = 10, при nд = 8 информационная емкость составляет 1024 байт; в этом случае организация памяти записывается как 1024×8, или 1К×8. Временные характеристики памяти, такие как длительность процедуры чтения, записи,
цикла обращений, время хранения данных в ПЗУ и др., определяются видом памяти и ее схемными решениями.
В дополнение к перечисленным видам как МП, так и микроконтроллеры снабжают внутренней памятью, выполняемой в виде
набора РОН (регистровый файл). Информационная емкость такой
памяти, как правило, невелика, но время обращения к ней минимально, в связи с чем, ее иногда называют сверхоперативной
(СОЗУ) памятью.
Базовая схема ПЗУ показана на рис. 3.
Управление работой схемы в режиме чтения происходит следующим образом. Двухразрядный адрес A = a1a0 подается на входы
дешифратора (DС) адреса, инверсные выходы которого образуют строки 0, 1, 2, 3 матрицы ПЗУ. Вертикальные линии матрицы – линии данных (ЛД 0–3) подключены к напряжению питания
(+ Uпит) и входам формирователей уровня выходных данных D = d3
d2 d1 d0. Электрическая связь между строками и ЛД обеспечивается
+ Uпит
R0
R1
R2
R3
I
a0
I
DC
2I
Строка 1
VD3
VD1
Строка 2
A
Строка 3
a1
Строка 4
ЛД0
ЛД1
ЛД2
ЛД3
Формирователи
уровня
d0
d1
d2
d3
Рис. 3
9
подключением «перемычек», выполненных в виде p-n-переходов. Резисторы R, содержащиеся в ЛД, выполняют «балластные» функции.
При заданном значении адреса на одной из строк устанавливается потенциал низкого уровня (U0), остальные строки сохраняют значение потенциала U1 ≅ Uпит. Так, при A = 01 «выбирается» строка 1, при A = 11 строка 3. Потенциал ЛД определяется
наличием (или отсутствием) перемычки в соответствующем узле.
В нашем примере через резисторы R1 и R2, перемычки VD1, 3 и выходное сопротивление (в строке 1) DC протекают токи I, создавая
падение напряжения на резисторах (UR = IR), вследствие чего ЛД1
и ЛД3 имеют пониженный уровень потенциала, в то время как на
ЛД0 и ЛД2 сохраняется значение потенциала, близкое к Uпит. Соответственно, формирователи уровней устанавливают значение
d1, d3 соответствующие лог.0, а d0, d2 – лог.1. Таким образом при
A = 01 читается слово данных D = 0101. При A = 10 (выбрана строка
2) D = 1010. Очевидно, что организация рассматриваемого ПЗУ соответствует значению N×nд = 4×4 (емкость 16 бит), а считываемые
данные определяются расположением «перемычек».
Установка «перемычек», т. е. программирование ПЗУ, производится однократно, при его изготовлении; такие ПЗУ носят название
масочных. Производство масочных ПЗУ оказывается выгодным
только для больших партий микросхем (десятки тысяч), поэтому
они применяются в изделиях массового спроса. Альтернативой масочным явились ПЗУ с плавкими перемычками, которые допускают однократное программирование пользователем (ППЗУ). Здесь
внутри микросхемы устанавливается матрица из нихромовых или
поликремниевых перемычек, которые можно расплавить, подав импульс тока. В настоящее время ПЗУ подобного типа не применяются.
Флэш-памятью называют особый вид энергонезависимой перезаписываемой полупроводниковой памяти. Первоначально производство флэш-памяти было начато корпорацией Toshiba (в 1985 г.)
и ей принадлежит ее авторство, позднее (в 1987 г.) компания Intel
разработала и совершенствует собственную технологию.
Идеологически флэш-память сочетает в себе память с произвольной выборкой и постоянную память, т. е. позволяет изменять
информацию, как в ОЗУ, и не теряет ее при отключении питания,
как в ПЗУ. Информация, записанная во флэш-память, может храниться до 100 лет и допускает до 106 циклов перезаписи.
Основой флэш-памяти является МОП – транзистор со специальной электрически изолированной областью – плавающим затвором
(рис. 4, а), где возможно надолго сохранить заряд.
10
Uз +
Управляющий
затвор
Плавающий
затвор
a)
Диэлектрик
Ic
–q
Исток
_
n
n
б)
Ic
1
q=0
2
q≠0
Ic0
Сток
+
P
Un1 Uчт
Подложка
Un2
Uз
Рис. 4
Если плавающий затвор электрически нейтрален (т. е. заряд в
нем отсутствует) зависимость тока стока Iс от потенциала Uз, приложенного к управляющему затвору, соответствует кривой 1 (рис. 4,
б), т. е. начиная с некоторого порогового значения Uз = Un1≈1,5 B
возникает проводимость между истоком и стоком транзистора.
При внесении в плавающий затвор отрицательного заряда q,
пороговое значение увеличивается от Un1 до Un2, что обусловливается влиянием поля заряда. Если теперь на управляющий затвор
подавать фиксированное значение потенциала чтения Uчт, то проводимость транзистора определяется наличием или отсутствием
заряда в плавающем затворе, а именно при q = 0 она возникает и
при q ≠ 0 отсутствует. Принято, что наличие заряда означает лог.0,
а его отсутствие – лог.1 и соответственно внесение заряда можно рассматривать как программирование, а сам транзистор как
элемент памяти, предназначенный для записи и хранения 1 бит
информации.
Программирование (т. е. внесение заряда q) осуществляется методом «горячих электронов», когда на сток транзистора подается напряжение Uс = +5 B, исток находится под нулевым потенциалом, а
на управляющий затвор подается программирующий импульс Uпр
амплитудой 12 В (рис. 5, а). Стирание ячейки, т. е. снятие заряда
плавающего затвора, производится подачей высокого напряжения
на исток, куда в результате туннелируют электроны (рис. 5, б).
В настоящее время разработаны микросхемы флэш-памяти, где
в одной ячейке могут храниться 2 бита информации (многоуровневая технология MLC), что позволяет увеличить информационную
емкость вдвое. Длительность цикла чтения составляет 40–100 нс.
11
а)
Управляющий
затвор
n
Uпр = + 12 В
Uc = + 5 В
n
q
Сток
Исток
P
б)
n
q
n
Рис. 5
Упрощенная схема (фрагмент) матрицы флэш-памяти приведена на рис. 6.
Дешифратор адреса DC устанавливает в зависимости от значения адресного слова А на «выбранной» строке потенциал чтения;
остальные строки имеют нулевой потенциал. Выходы DC (строки)
связаны с затворами и МОП транзисторов (VT1–VT4), представляющих собой элементы памяти. Истоки транзисторов подключены
к положительному выводу питания, а также к линиям данных
(ЛД0 и ЛД1). Потенциалы линий данных определяются состоянием транзисторов VT1 и VT2, подключенных к «выбранной» стро12
d1
d0
Блок формирования уровня
DC
VT3
VT4
U=0
Строка 0
+
A
VT2
VT1
U=Uчт
q=0
+
Строка 1
+
q≠0
ЛD0
+
ЛD1
Рис. 6
ке 1, а именно, если VT1 не содержит заряда в плавающем затворе
(q = 0), ЛД0 имеет потенциал, близкий к напряжению питания
(VT1 открыт), а ЛД1, подключенная к «заряженному» (q ≠ 0) транзистору VT2, который не проводит при заданном уровне потенциала Uчт, – нулевой потенциал. Транзисторы VT3 и VT4, подключенные к строке 0, потенциал которой равен нулю, независимо от их
состояния не влияют на значения потенциалов ЛД0 и ЛД1 и соответственно на значение читаемых данных d1, d0.
Появлению флэш-памяти ПЗУ, где запись и стирание информации производится электрическим путем (техническое название EEPROM), предшествовала разработка так называемых УФ –
стираемых ПЗУ. Элемент ПЗУ этого типа также выполняется на
nМОП-транзисторе с плавающим затвором. Программирование
осуществляется аналогичным образом, а стирание информации
воздействием на кристалл ПЗУ УФ-излучения. Для этого микросхемы УФ стираемых ПЗУ снабжаются окошком в корпусе, закрытым кварцевой пластиной. Время хранения информации в них
составляет 15–25 тыс. ч, длительность цикла 300–450 нс, число
циклов перепрограммирования – около 10, а максимальная информационная емкость 128К×8.
13
Наряду с использованием в составе МПС ПЗУ находят применение в качестве «самостоятельных» преобразователей информации.
Так, ПЗУ хорошо приспособлены для применения в качестве преобразователей кода. В этом случае n-разрядное слово, загружаемое на
адресные входы ПЗУ, вызывает появление на его выходах другого
m-разрядного слова с измененной кодовой структурой, например
кода Грея, кода управления цифровой индикацией и др. В процессе
цифровой обработки данных часто используются таблицы реализации функций, где для каждого значения переменной указаны значения логарифмов, тригонометрических функций, экспоненты и др.
С помощью ПЗУ, запрограммированных соответствующим образом,
эти таблицы реализуются достаточно просто. Такие ПЗУ называются генераторами функций и выпускаются в виде отдельных микросхем, что позволяет упростить технические решения и снизить их
стоимость. Наряду с ПЗУ, предназначенными для реализации таблиц алгебраических функций, достаточно широко используются
так называемые программируемые логические матрицы (ПЛМ),
которые могут заменять большую часть обычных логических схем,
т. е. реализовать «вычисление» функций логических переменных.
Другим примером использования преобразователя кода на основе
ПЗУ является коррекция нелинейной передаточной характеристики
какого-либо измерителя, например датчика давления (рис. 7).
Линеаризацию можно осуществить, преобразуя с помощью АЦП
аналоговый сигнал U(P) с выхода датчика (кривая 1) в цифровую
форму, и затем использовать его как адрес ПЗУ, запрограммированU
1
U(P)
2
Uл (P)
Р
Р
Рис. 7
14
ного таким образом, что на выходах ПЗУ появляется линеаризованное значение в цифровой форме, соответствующее величине Uл(P).
Контроллеры применяются в системах управления для обеспечения последовательного выполнения различных операций в
определенные моменты и промежутки времени и могут быть реализованы на основе счетчика (таймера) и ПЗУ. Порядок выполнения операций (включение клапана, нагревателя, двигателя и т.п.)
задается отдельным разрядом управляющего слова (команды) получаемого на выходе ПЗУ. Разряд слова управления содержащий
лог.1 обеспечивает тот или иной этап управления, последовательность их определяется программой записанной в ПЗУ, а длительность таймером. Например, слово управления 0010 записанное в
10 последовательно адресуемых ячеек ПЗУ обеспечивает запуск
двигателя и его работу в течение 10 с, если адрес ПЗУ задаваемый
счетчиком имеет период изменения равный 1 с.
Контроллеры на основе ПЗУ находят широкое применение в
первую очередь в изделиях массового спроса, например бытовой
технике, так как имеют низкую стоимость и возможность записи
различных управляющих программ.
Схема матрицы ОЗУ приведена на рис. 8.
1
Колонка 0
2
3
Строка 0
DC1
a0
A/2
a1
Строка 1
d in
1
ЭП
d out
1
Строка 2
Строка 3
DC2
а2
А/2
а3
Рис. 8
15
Адрес А, обеспечивающий доступ к элементам памяти (ЭП),
дробится пополам; младшие разряды его A/2 = a1a0 поступают на
входы дешифратора адреса строк (DC1), старшие A/2 = a3a2 – дешифратора адреса колонок (DC2). В зависимости от значений адреса одна из строк и колонок приобретает значение лог.1 (остальные
сохраняют значение лог.0). Например, если A = a3a2a1a0 = 0110,
«выбранными» оказываются строка 2 и колонка 1, связанные с
входами доступа ЭП. Элементы памяти расположены во всех 16 узлах матрицы, каждое из 16 значений адреса обусловливает доступ
в один ЭП, что разрешает запись одного бита данных (din) или чтение (dout), при условии, что входы всех ЭП образуют один общий
вход, а выходы – общий выход. Организация ОЗУ, показанного на
рис. 7, описывается выражением 16×1 бит. Если к выходам DC1
и DC2 подключить одновременно несколько, например 8 матриц,
разрядность слова данных возрастает до 1 байта.
Часто применяется мультиплексная адресация, схема которой
приведена на рис. 9.
Здесь 16-разрядный (2 байта) адрес А передается по 8-разрядной шине адреса поочередно: сначала устанавливается младший
RAS
RG1
A
а0
DC1
а0
Матрица памяти
dout
8
nA=16
din
а7
а7
а8
а15
DC2
а15
а8
RG2
8
CAS
Рис. 9
16
a7 – a0 байт адреса, который поступает на входы регистров RG1 и
RG2. Далее на тактовый вход RG1 поступает строб адреса строки
RAS и значение a7–a0 фиксируется в нем. Аналогичным образом,
посредством строба адреса колонки CAS, в RG2 фиксируется старший байт адреса (a15–a8). Декодирование значений адресов строки
и колонки обеспечивает доступ к каждому из 216 ЭП, имеющей емкость 64К бит.
Различают статическую и динамическую память, схемы элементов которой приведены на рис. 10. Транзисторы VT3 и VT4 обеспечивают доступ в режиме записи WR входных din данных и чтения RD состояния элемента dout при подаче лог.1 на их затворы.
Элемент статической памяти (рис. 10, а) представляет собой простейший триггер, выполненный на транзисторах VT1 и VT2.
Основой динамической памяти является емкость «затвор-исток» (СЗИ) транзистора VT1 (рис. 10, б). Здесь при подаче на затвор
VT1 напряжения высокого уровня СЗИ приобретает заряд, потенциал которого в течение некоторого промежутка времени (около
1–2 мс) поддерживает открытое состояние VT1, которое в свою
очередь обусловливает состояние линии dout. Заряд СЗИ неизбежно «растекается», поэтому динамическую память необходимо регенерировать. Процесс регенерации заключается в периодическом
считывании содержимого памяти с их последующей перезаписью.
Регенерацию осуществляет либо сам микропроцессор, либо микросхема контроллера регенерации динамической памяти; в обоих
случаях регенерация осуществляется программным способом и
требует некоторого пространства памяти для временного размещения регенерируемых данных.
Время выборки динамического ОЗУ составляет 70–200 нс. По
сравнению со статическими ОЗУ этого типа характеризуются большей информационной емкостью, обусловленной меньшим числом
«компонент» в одном ЭП, меньшим быстродействием, меньшей потребляемой мощностью и стоимостью.
При организации внешних ОЗУ МПС часто используют сочетание:
– «основного» ОЗУ динамического типа, емкость которого обеспечивает выполнение всех основных процедур;
– «дополнительного» статического ОЗУ, обладающего повышенным быстродействием, так называемую кэш-память, которую
используют для наиболее «частых» обращений.
Как уже упоминалось, наряду с внешней МП содержит «внутреннюю» сверхоперативную память (СОЗУ), представляющую со17
+ Uпит
а)
R1
din
R2
VT4
VT3
VT1
VT2
WR
б)
dout
RD
dout
din
VT1
VT3
VT4
+
WR
С зи
_
RD
Рис. 10
бой совокупность регистров, обращение к которым не требует выставления адреса на шину адреса при считывании/записи информации, поэтому операции с этим типом памяти являются наиболее
быстрыми (время выборки составляет 5–7 нс).
Пример процедуры обращения к памяти поясняется схемой,
приведенной на рис. 11. Предположим, что пространство памяти
имеет организацию 64К×8, т. е. разрядность слова адреса nA = 16,
т. е. A = a15...a0, а разрядность данных nд = 8.
В приведенной схеме память делится на 16 модулей, емкостью
4 К×8 каждый, один из которых представляет собой ПЗУ, остальные ОЗУ, например, статического типа. Такое решение позволяет
18
a)
а12 ... а15
DC
16
4
0000
а15
.
.
.
а0
AB
МП
RD
16
d0
.
.
.
d7
1
12
DB
8
CB
ОЕ
а11 ПЗУ
.
.
. 4к × 8
а0
d0
.
.
.
d7
CS
К ОЗУ
б)
а12 ... а15
DC
AB
а15
.
МП
.
.
а0
WR
RD
4
1
d0
.
.
.
d7
DВ
1
12
16
8
ОЕ
R/W
а11
ОЗУ
.
.
.
4к × 8
а0
d0
.
.
.
d7
MS
К другим блокам ОЗУ
Рис. 11
использовать 12 младших a11...a0 разрядов адреса для обращения
к содержимому модулей, а старшие четыре разряда a12...a15 для
выбора модуля.
Выбор модуля осуществляется дешифратором DC адреса модуля,
выходы которого (16 линий) связаны с входами выборки (доступа)
модуля ( CS или MS ). Например, при a12...a15 = 0000 (рис. 11, а)
19
обеспечивается доступ в модуль ПЗУ – активное состояние на входе
CS. Чтение содержимого ячейки ПЗУ по адресу a11...a0 обеспечивается установкой выхода управления чтением RD микропроцессора, связанного с входом активизации ОЕ модуля ПЗУ в состояние
лог.1. Обращение к ОЗУ осуществляется аналогичным способом;
значения a12...a15 устанавливаются в пределах 0001…1111; запись данных обеспечивается посредством активизации выхода WR
микропроцессора, связанного с входом R / W ОЗУ. Вход MS (выбор модуля ОЗУ) выполняет ту же функцию, что и вход CS модуля
ПЗУ (рис. 11, б).
20
3. СИСТЕМА КОМАНД МИКРОПРОЦЕССОРА
Команда МП представляет собой двоичное слово, которое, будучи прочитанным, заставляет его выполнять определенные действия. Команда состоит из двух частей: кода операции (КОП) и
адреса, который указывает на местоположение данных, участвующих в операции, предусмотренной КОП. Длина (формат) команды
составляет одно, два или три слова, первое из которых – это КОП, а
второе и третье – адрес данных (или непосредственно данные), причем длина каждого слова совпадает с длиной слова данных (8 бит).
Ряд команд имеют длину в одно слово, некоторые из них являются
безадресными, например команда останова.
Разработчики снабжают МП системой команд, количество которых определяется числом вариантов КОП и способами адресации.
Команды МП удобно записывать в мнемонической форме, для чего
обычно используют две или три буквы названия операции, ею выполняемой. Например, код операции JМР обозначает команду перехода,
сочетание IRP соответствует команде приращения регистровой пары.
Команды МП различаются способом адресации, т. е. способом
указания местоположения данных, над которыми выполняется
операция, предусмотренная КОП. Различают четыре основных
способа адресации и ряд дополнительных, причем способ адресации определяет формат команды.
Неявная адресация присуща однобайтовым командам, которые
оперируют данными, расположенными «внутри» МП. Так, например, команда пересылки MOV данных из аккумулятора (А) в РОН D
состоит из кода операции (2 старших бита) и внутренних адресов
источника А и приемника D результата:
Адрес регистра D
Старший
7
6
5
4
Код операции MOV
3
2
1
0
Младший биты
Адрес аккумулятора А
При выполнении однобайтовых команд не производится обращение к внешней памяти; они выполняются за один машинный
цикл и отличаются наибольшим быстродействием.
Код операции команды с непосредственной адресацией размещается в ее первом байте. За кодом операции следуют данные, занимающие следующий байт. В этом случае, как КОП, так и данные заносятся в память, например в модуль ПЗУ при программировании. Время
выполнения команды в этом случае составляет 2 машинных цикла:
21
LDA A (КОП)
1-й байт
Данные
2-й байт
Примером служит команда «загрузка аккумулятора непосредственная» (LDA A), предусматривающая размещение в аккумуляторе 2-го байта команды. Размещение данных в ПЗУ целесообразно, если таковыми являются различного рода константы.
Альтернативой являются команды с прямой адресацией, имеющие формат 2 или 3 байта. В этом случае второй и третий байты
команды содержат адрес памяти, где размещаются данные. Два
байта адреса обеспечивают обращение ко всему пространству памяти, адрес, состоящий из одного байта, допускает обращение к 256
ячейкам памяти (адресация к нулевой странице).
DD1
c
a1
b0
S0
SM
a
=1
b
C0
DD3
DD2
c
a0
b1
S1
a
=1
b
DD4
CО
Рис. 12
22
SM
C1
Код операции этой команды записывается как LDD A: «загрузка аккумулятора прямая». Очевидно, что время, затрагиваемое на
выполнение команд с прямой адресацией, занимает 2 или 3 машинных цикла.
Большинство МП располагает еще одним способом адресации
к памяти, реализуемым командами длиной только в одно слово.
Такая адресация называется косвенной, или регистровой. В этом
случае КОП команды указывает на то, что адрес данных находится
в регистровой паре, который после декодирования КОП пересылается в РАП, и производится обращение в память.
Косвенная адресация дает наибольший эффект при записи или
чтении следующих друг за другом ячеек памяти, например при организации файла данных при чтении устройства ввода. Наряду с перечисленными основные реальные МП содержат ряд дополнительных способов адресации, например для работы со стеком МП и др.
Система команд МП, практически независимо от их числа, предполагает наличие нескольких групп команд, к которым относятся:
– команды передачи информации, обеспечивающие загрузку и
пересылку данных, работу со стеком и ввод/вывод данных;
– команды обработки информации, обеспечивающие арифметические и логические операции с данными и их преобразование;
– команды передачи управления, т. е. команды перехода и вызова подпрограмм;
– команды управления состоянием МП.
При описании команды обычно указывают следующие ее характеристики:
– название, в котором содержатся сведения о выполняемой операции и способ адресации;
– мнемоническое обозначение и представление действий с помощью логических символов;
– формат (длину) команды;
– воздействие результата выполнения на слово состояния МП.
Вариантами команды загрузки аккумулятора являются следующие команды.
1. «Загрузка А прямая» (LDD A). В этом случае данные переносятся к адресуемой ячейке памяти М в А, т. е. M → A:
LDD A (КОП)
1-й
СБ адреса
2-й
МБ адреса
3-й байты команды
а длина команды составляет 3 (или 2) байта.
23
2. «Загрузка А косвенная» (LDI A). В этом случае также производится пересылка данных из памяти в аккумулятор (M → A), но
адрес ячейки памяти содержится в регистровой паре ВС и длина
команды – 1 байт.
Указанными способами может выполняться загрузка не только
аккумулятора, но и любого РОН.
Способом непосредственной адресации можно выполнить загрузку регистровой пары (ВС):
LRP, данные
M→С
М + 1 → В,
когда байт данных, содержащихся в ячейке памяти М, загружается в регистр С, а следующий М + 1 – в регистр В (длина команды –
3 байта). Значение слова состояния в этом случае не изменяется, а
содержимое регистровой пары ВС представляет собой 16-разрядное
слово (адреса или данных).
Примерами команд пересылки данных, кроме упомянутой команды MOV, являются команды записи содержимого аккумулятора в память (табл. 3.1).
Таблица 3.1
Мнемоника
Способ адресации
Длина, байт
Смысл действия
STA A, Адрес
Прямая
3
A→M
STI A
Косвенная
1
A→M
Необходимость сохранения содержимого путем записи его в память часто возникает при выполнении команд ввода данных.
Группа команд обработки данных производит обработку двух
двоичных чисел (операндов) по арифметическим или логическим
правилам. Особенность выполнения этих команд состоит в том, что
один из операндов всегда размещается в аккумуляторе, а второй извлекается из внутренней или внешней памяти МП и размещается
в буферном регистре АЛУ. Результат операции с выхода АЛУ помещается в аккумулятор, что означает потерю его исходного состояния, т. е. одного из операндов.
Арифметические команды МП выполняет за счет реализуемой
различными способами операции сложения. Представление операндов в дополнительном коде позволяет выполнять вычитание
как сложение с отрицательным числом. Многократное сложение
есть не что иное, как умножение, а многократное вычитание – де24
ление. В этой связи АЛУ микропроцессора содержит 8-разрядный
параллельный сумматор, выполняющий операцию сложения и
формирование дополнительного кода отрицательного числа при
вычитании:
+
5+2=7
510 0 101
–2
+ 210 0 010
210 0 010
1 101 инверсия
+ 1 дополнение 1
______________
7 10 0 111
2 10 1 110
5–2 = 5 + (–2) = 3
510 0 101
+
–210 1 110
______________
+ 3 10 0 011
В обоих примерах десятичные, положительные, числа (5 и 2),
содержат значащую часть (3 младших разряда) и старший 4-й знаковый разряд 0. Дополнительный код отрицательного числа (−2)
формируется посредством инверсии числа +2 (включая знаковый
разряд) и дополнением 1 в младший разряд.
Знаковый разряд полученного числа, равный 1, является признаком отрицательного числа (−210, или 1 1110). Вычитание производится посредством сложения 5 + (−2), при этом перенос из
знакового разряда не учитывается. Полученный результат 0 011
содержит 0 в знаковом разряде (положительное число) и интерпретируется как +310. Формирование дополнительного кода отрицательного числа легко выполнить либо программным путем, либо
с помощью схемного решения сумматора (см. рис. 12).
В приведенной схеме слагаемое А = а1а0 поступает на соответствующие входы одноразрядных сумматоров DD1 и DD2, в то время как второй операнд В = b1 b0 – на входы логических элементов
DD3, DD4, выполняющих функции управляемых инверторов. Состояние на входе управления операцией (СО) позволяет формировать дополнительный код. Так при СО = 0 значение разрядов b0, b1
поступают на входы сумматоров без инверсии, т. е. производится
сложение (А + В). При С0 = 1 эти значения инвертируются и одновременно на вход переноса С сумматора поступает 1, т. е. операнд
B = b1b0 + 1 представляется отрицательным числом.
Группа команд сложения содержит четыре команды сложения
без учета переноса (мнемоническое обозначение ADD) и четыре команды сложения с переносом (ADC). Аналогичным образом формируется группа команд вычитания (SUB) и вычитания с заемом
(SUC).
Список команд сложения приведен в табл. 3.2.
25
Таблица 3.2
Тип команды
сложения
С регистром
С памятью
прямое
С памятью
косвенное
С данными
Мнемоника
Действие
Длина,
байт
Способ
адресации
ADD r
A+r→A
1
Неявная
ADD М
A+М→A
3(2)
Прямая
ADI М
A+М→A
1
Косвенная
ADD I
A + данные → A
2
Непосредственная
Команды сложения с переносом позволяют выполнять операции
с данными двойной и большей длины. При их выполнении учитывается бит переноса С слова состояния. Например, команда, записываемая как ADC I, осуществляет сложение содержимого аккумулятора с непосредственными данными и битом переноса С, A +
данные + C → A, значение которого формируется в результате сложения младших байтов слагаемых и учитывается при сложении
следующего байта.
Ряд арифметических команд выполняется над одним операндом, размещенным в РОН и/или аккумуляторе или в регистровой
паре (ВС). К ним относятся команды
1. Приращение регистра
– положительное
INC r
r+1→r
– отрицательное
DEC r
r − 1 → r,
при выполнении которых содержимое r регистра увеличивается
или уменьшается на 1.
2. Приращение регистровой пары:
– положительное
IRP
BC + 1 → BC
– отрицательное
DRP
BC − 1 → BC.
Выполнение команд «приращения» над содержимым аккумулятора, т. е. A ± 1 → A может изменить состояние разрядов Z или N
слова состояния МП. Эти команды часто используют для подсчета
каких-либо событий, например шагов выполнения операций.
Посредством команд IRP и STI A (запись аккумулятора в память
косвенная) можно реализовать доступ в последовательно расположенные ячейки памяти с целью записи в них данных, поступающих в аккумулятор, например, с устройства ввода.
26
Команды «И» (AND), «ИЛИ» (OR) и исключающее «ИЛИ»
(ХOR) входят в состав логических команд микропроцессора и выполняются над двумя операндами – содержимым аккумулятора и
памяти с размещением результата операции в аккумуляторе, причем каждая из перечисленных команд выполняется четырьмя способами, определяемыми видами адресации. Примеры команд «исключающее или», приведены в табл. 3.3.
Таблица 3.3
Команда
Мнемоника
Длина, байт
Способ адресации
AÅr → A
XORr
1
Неявная
AÅM → A
XORM, адрес
3(2)
Прямая
AÅM → A
XOIM
1
Косвенная
A Å данные → A
XORI, данные
2
Непосредственная
Для выполнения инверсных логических операций предусмотрена команда «инверсия аккумулятора» (СМА), т. е. A ® A, что
предполагает их выполнение в два этапа: сначала выполняется и
фиксируется в аккумуляторе результат «прямой» логической операции, а далее производится инверсия его содержимого.
Выполнение логических команд может привести к установке
битов Z, N в состояние, соответствующее полученному результату.
Поразрядное выполнение логических команд допускает выполнение «поразрядного маскирования», целью которого является установка в 1 или 0 отдельных битов (или групп) содержимого аккумулятора. При этом «маска» обычно размещается в одном из РОН, а
при выполнении команды используется метод косвенной адресации:
А
1
0
1
1
1
0
1
0
исходное содержимое А
Команда А·D → А («И » над регистром и аккумулятором)
D
1
1
1
1
0
0
0
0
«маска» (содержимое регистра D)
→
A
1
0
1
1
0
0
0
0
результат маскирования
Здесь в результате выполнения операции «И» (AND) маска, размещенная в регистре D, устанавливает в нуль четыре младших бита
содержимого аккумулятора.
Возможность размещения данных, содержащихся в аккумуляторе в обеих буферных регистрах АЛУ, позволяет выполнять ряд
27
логических операций аккумулятора «с самим собой». Например,
команда «исключающее или» ХОR А, А выполняет операцию A Å
A → A, что приводит к установке в нуль всех битов его содержимого, т. е. производится «очистка аккумулятора».
Часто возникает ситуация, когда требуется сравнение двух операндов. Это связано, например, с необходимостью выяснить, равны
ли эти числа. Факт равенства легко установить посредством команды «исключающее или» над непосредственными данными (D) и аккумулятором:
A Å D→A. При равенстве A = D аккумулятор «очищается»,
что соответствует установке бита Z слова состояния в 1. Команда «вычитание» SUBI A–D → A дает результат, при котором при A < D устанавливается в 1 бит переноса слова состояния
(С = 1), при A > D C = 0. Недостатком этих процедур является потеря исходного содержимого аккумулятора. От этого недостатка
свободна команда «сравнение» (СМР), выполнение которой аналогично выполнению команды «вычитание», однако ее результат
не загружается в аккумулятор, а оценка производится проверкой
разрядов слова состояния. Команда СМР выполняется четырьмя
способами адресации и часто служит для принятия решений (например, переходов) в процессе выполнения программы.
К логическим командам относят также команды простого (арифметического) и циклического сдвигов, выполняемые над данными,
размещенными в аккумуляторе, и разрядом переноса слова состояния (табл. 3.4).
Таблица 3.4
Название команды
Мнемоника
1. Сдвиг А влево
2. Сдвиг А вправо
3. Циклический сдвиг А вправо
4. Циклический сдвиг А влево
SAL
SAR
RAR
RAL
Команда сдвига часто используются для умножения/деления
содержимого аккумулятора на число, кратное 2:
28
А
0
0
1
1
1
1
0
0
6010
SАL
0
1
1
1
1
0
0
0
12010 (A × 2)
SАR
0
0
0
1
1
1
1
0
3010 (A /2)
Команды передачи управления – перехода (ветвления) и вызова
подпрограмм позволяют изменять последовательность выполнения команд программы.
Команды перехода позволяют выполнять безусловный и условные переходы. Безусловный переход выполняется всякий раз когда появляется соответствующая команда. Условные переходы выполняются при соблюдении определенных условий, т. е. позволяют
принимать решения в ходе выполнения программы. Команды перехода имеют длину 3 байта (т. е. используется прямая адресация),
причем 2 байта, следующие за кодом операции перехода, представляют собой адрес памяти, где содержится команда, которая должна
выполняться следующей. При использовании команд перехода содержимое 2 и 3 байтов загружается в счетчик команд, происходит
переход в другую точку программы и выполняются команды новой
последовательности.
Условные переходы выполняются по результатам проверки значений разрядов ZNC слова состояния (табл. 3.5).
Таблица 3.5
Мнемоника
Тип перехода
JMR
Безусловный
Условие перехода
нет
JZ (IE)
JNZ (INE)
Если нуль
Если не нуль
Z=1
Z=0
JC
JNC
Если перенос
Если нет переноса
C=1
C=0
JN
JNN
Если минус
Если не минус
N=1
N=0
Команды перехода «если нуль» (JZ) и «если не нуль» (JNZ) часто
называют «если равно» (JE) и «если не равно» (JNE), что указывает
на их выполнение после команд сравнение (СМР) или вычитания.
Применение команд перехода означает выход из основной (главной программы), однако эти команды сами по себе не позволяют
осуществить возврат в то место главной программы, откуда был
осуществлен переход. Один из способов решения этой проблемы заключается в использовании второй команды, однако для этого необходимо знать заранее и указать адрес возврата. Легче добиться
той же цели с помощью команды вызова подпрограммы (рис. 13).
На рис. 13 цифрами 00–08 указаны условные адреса памяти,
где находятся команды главной программы, а 22–26 – адреса подпрограммы, куда необходимо перейти. Команда, размещенная по
29
00
01
Вызов подпрограммы (CAL)
02
03
22
04
23
24
25
26
05
06
07
Возврат (RET)
08
Подпрограмма
09
Главная программа
Рис. 13
адресу 04, называется командой вызова подпрограммы (CAL) и осуществляет переход по адресу 22 с одновременным запоминанием
адреса возврата 05 в главную программу, который осуществляется посредством команды возврата (RET), размещенной в подпрограмме по адресу 26. Такой прием позволяет многократное использование подпрограмм, в том числе вложенных друг в друга, когда в
ходе выполнения подпрограммы выполняется переход, т. е. вызов
«вложенной» подпрограммы (рис. 13).
Выполнение вложенных подпрограмм требует помимо указания
адресов перехода (22 и 51) запоминания адресов возврата 05 и 25, в
ходе которого осуществляется сначала возврат по адресу 25, а затем
по адресу 05, выполняемый командами возврата, расположенными
по адресам 54 и 27.
30
00
01
02
03
CAL
22
04
23
CAL
51
24
52
RET
RET
53
25
54
26
Вложенная
подпрограмма
05
27
06
Подпрограмма
07
08
09
Главная программа
Рис. 14
Для этой цели используется стек микропроцессора – область памяти, где временно размещаются адреса возврата. Стек выполняется либо в виде специального регистра, либо размещается в ОЗУ. Состояние стека отображается в специальном регистре, аналогичном
регистровой паре и называемом указателем стека (stek pointer –
SP), который содержит начальный адрес памяти, куда загружается
байт адреса возврата. Каждый раз, когда в стек загружается 1 байт
информации, осуществляется приращение (обычно отрицательное)
указателя стека, т. е. SP–1 и производится загрузка следующего
байта содержимого счетчика команд. В примере, приведенном на
рис. 14, первоначально в стек загружается адрес возврата в главную программу 05; при вызове вложенной подпрограммы – адрес
25. Структура команды вызова подпрограмм аналогична команде
перехода:
31
1
2
3
CAL (КОП)
СБ адреса
МБ адреса
Счетчик команд → в стек
СБ адреса → СБ счетчика команд
МБ адреса → МБ
Вызов подпрограмм может быть как безусловным, так и выполняться при соблюдении условий, перечисленных в табл. 3.5. Возврат из подпрограмм осуществляется по командам «возврат» (RET),
их выполнение производится посредством пересылки содержимого
стека в счетчик команд в обратном порядке; при этом значение указателя стека увеличивается на единицу после пересылки каждого
байта адреса возврата. Таким образом, стек МП представляет собой
устройство (область) памяти, действующее по принципу LIF0 (last
in first out), т. е. данные, загруженные в него последними, извлекаются первыми. Следует отметить, что наряду с командами вызова
подпрограмм стек МП используют и в других случаях.
Для обеспечения связи МП с различными внешними устройствами – датчиками, клавиатурой, цифровыми индикаторами используют два вида интерфейса: параллельный, когда 8-разрядный МП
за каждую операцию обмена обеспечивает одновременную передачу 8 бит информации, и последовательный. Передача данных может осуществляться посредством специальных команд ввода (IN)
и вывода (OUT), которые имеют двухбайтную структуру, причем
первый байт представляет собой КОП, а второй – адрес УВВ, т. е.
порта ввода/вывода. При выполнении команды ввода входные данные из адресуемого УВВ пересылаются в аккумулятор; команда
вывода осуществляет пересылку данных из аккумулятора в выходной порт. Схема параллельного интерфейса приведена на рис. 15.
Управление процедурой ввода/вывода осуществляется сигналами
«чтение УВВ» и «запись в УВВ», которые определяют состояние
шинного приемника (ШП) и формирователя (ШФ), подключаемых
к «разветвленной» 8-разрядной двунаправленной шине данных, и
стробируют соответствующие буферные регистры (Б1 и Б2) данных.
В схеме имеется 2-разрядный регистр состояния (РСП), с помощью
которого МП проверяет состояние порта ВВ. Нулевой разряд слова состояния этого регистра устанавливается в 1 путем подачи сигнала
«входные данные готовы», что является для МП признаком того, что
на шину данных поданы данные, т. е. созданы условия для выполнения команды ввода. При выводе данных, размещенных в буферном
регистре, Б1 устанавливается в 1 – первый разряд слова состояния.
Такому значению соответствует рабочее состояние линии «выходные
данные готовы», т. е. разрешается выполнение команды вывода.
32
ШП
Шина
данных
Б1
8
d0
d1
d7
8
d0– d7
ШФ
8
Б2
d0
d1
d7
Прерывание
INT
РСП
Чтение УВВ
Данные приняты
Запись в УВВ
Входные данные
готовы
Выходные данные
готовы
Рис. 15
Если к микропроцессорной системе подключено несколько УВВ,
любое из них в произвольный момент может потребовать обслуживания. МП может выполнить его одним из двух способов. Первый
способ заключается в использовании подпрограммы опроса, второй
реализуется в виде системы прерываний. После входа в подпрограмму опроса производится пересылка в аккумулятор содержимого регистра состояния порта с адресом 01. Далее, по результатам
проверки вызывается, если необходимо, программа обслуживания
(т. е. производится, например, ввод данных). Выполнив указанную
процедуру, МП загружает в аккумулятор содержимое регистра состояния порта 02, т. е. производится последовательная проверка и
обслуживание всех портов ВВ, имеющих регистры состояния. Программа опроса допускает назначение приоритета различным портам ВВ, посредством изменения порядка проверки содержимого
регистров, состояния портов ВВ.
33
Начало работы процедуры опроса определяется программным
путем. Другой способ ее запуска состоит в обработке запросов на
прерывание, подаваемых УВВ, для чего МП снабжают специальными входами прерывания (INT). При подаче запроса на прерывание микропроцессор:
– завершает выполнение текущей команды,
– загружает в стек содержимое счетчика команд,
– помещает в счетчик команд начальный адрес программы обработки прерывания,
– после завершения ее выполнения извлекает из стека старое
значение счетчика команд и продолжает выполнение программы,
прерванной по запросу.
Обычно в микропроцессорных системах требуется обеспечивать
обработку запросов на прерывание, поступающих от нескольких
устройств, для чего МП снабжают несколькими входами прерываний. При поступлении запроса на определенный вход МП в счетчик команд загружается адрес памяти, соответствующий программе обработке данного запроса; в таком случае говорят, что каждое
прерывание имеет свой вектор. Часто при появлении запроса на
прерывание запускается программа опроса. Очевидно, что в этом
случае устройство, подавшее запрос, будет обслужено в первую очередь. Преимуществом прерывания над опросом является быстродействие ответа, в то же время опрос требует меньше аппаратных и
программных средств.
В ряде случаев используется маскирование прерываний, когда
отличие маскируемого от немаскируемого состоит в том, что в первом случае программист может разрешить или запретить обработку запроса. Для этой цели в слове состояния микропроцессора (а не
регистра порта В/В) предусматривается соответствующий разряд
(I). Для установки и сброса маски прерывания предусмотрены специальные команды: STI 1 → разряд «Прерывание» и CLI 0 → разряд
«Прерывание». Если маска не установлена, т. е. I = 0, выполняется
безусловная обработка запроса; при I = 1 обработка не выполняется,
т. е. приоритет обработки устанавливается программным путем.
Наряду с параллельным применяется метод последовательной
передачи данных, применяемый при передаче на расстояние, превышающее допустимое для параллельного интерфейса. Инструментом последовательной передачи являются соответствующие
шины, организация которых рассматривается далее.
34
4. МИКРОКОНТРОЛЛЕР АТ89С2051
Развитие технологии производства интегральных схем обусловило появление МК – МПС, выполненных в одном кристалле (корпусе)
и предназначенных для решения задач управления работой широкого класса электронных устройств. Схемотехника на основе МК постепенно вытесняет цифровые устройства, реализованные аппаратным
путем, так как на основе МК можно выполнить такие функциональные блоки, как ЦАП/АЦП, схемы управления индикацией и т. д.
Разработкой и производством МК занимается большое число
фирм (Intel, Motorola, Micro Chip, ATMEL и др.). Так, PIC – это семейство МК выпускает фирма Micro Chip Technology, MK AVR производит фирма ATMEL. В основу выпускаемых этими фирмами МК
положена гарвардская архитектура с уменьшенным набором команд (RISC). Например, система команд PIC 165х содержит только
33 команды (в основном однобайтовые) и однократно программируемую память. МК AVR изготавливаются по КМОП-технологии,
которая в сочетании с RISC-архитектурой позволяет достичь наилучшего соотношения показателей быстродействия/энергопотребления. Основными отличительными особенностями МК этого семейства являются:
– скорость выполнения операций до 10–6с–1;
– память программ от 1 до 8 Кбайт (число циклов стирания/записи до 103);
– ОЗУ объемом до 512 байт;
– память данных на основе EEPROM до 512 байт (число циклов
до 105);
– различные способы синхронизации;
– широкий набор подключаемых периферийных устройств.
Наличие общих черт у МК различных производителей позволяет рассмотреть их архитектуру на конкретном примере, в качестве
которого выбран простой МК АТ89С2051 (ATMEL), микросхема которого выполнена в стандартном DIP-корпусе, имеет 20 выводов,
допускает разброс напряжений питания +2,7–6 В (при номинальном значении +5 В) и является полностью совместимой с распространенной микросхемой MCS-51 (Intel) или отечественным аналогом 1816ВЕ51. Структурная схема микроконтроллера приведена
на рис. 16 и напоминает типовую схему МПС, но имеет и определенные отличия.
ППЗУ программ объемом 2 Кбайт выполнено по флештехнологии и допускает 1000 циклов записи/стирания, причем
35
ОЗУ
данных
АЛУ
Таймеры
Т1
Т0
Т2
Компаратор
Порт Р3
Р3.5
Р3.7
Послед.
канал
Р3.0
Порт Р1
Р1.0
ППЗУ
программ
Р1.7
Внутренняя
системная
шина
Система
прерываний
Рис. 16
стирать содержимое ППЗУ можно только целиком. Для исключения несанкционированного чтения информации применяется блокировка памяти. Для этого имеется 2 бита, один из которых запрещает перепрограммирование ППЗУ, а второй – чтение.
ОЗУ данных имеет 128 8-разрядных ячеек памяти и совмещено
с РОН и портами ВВ.
Порты Р1 и Р3 представляют собой два 8-разрядных порта ввода/вывода, причем порт Р3 неполный, т. е. линия Р3.6 не выходит
«наружу» и используется как вход сигнала от встроенного аналогового компаратора (КМП), совмещенные входы которого Р1.0 и
Р1.1 разрешают применение аналоговых напряжений. Выход КМП
устанавливается в лог.1, когда напряжение на входе «+» превысит
напряжение на входе «−». Наличие встроенного компаратора допускает построение на основе микроконтроллера ряда схемных решений, например, АЦП.
В микросхеме имеется два 16-разрядных таймера счетчика Т1 и
Т0, причем Т1 имеет режим работы, при котором он делится на два
8-разрядных, каждый из которых может работать самостоятельно.
Запуск/останов таймеров осуществляется программным путем;
каждый из них может работать в двух режимах: в режиме формирования временных интервалов (при счете импульсов внутреннего
генератора) и в режиме подсчета внешних сигналов.
Микроконтроллер содержит встроенную систему прерываний,
способную обрабатывать шесть источников, два из которых – внешние входы для запросов на прерывания (INT0, INT1). Следующие
36
два – прерывание от Т0 и Т1 (при установке их содержимого в нуль)
и два от последовательного канала ввода/вывода, по которому
данные передаются в последовательном порядке. Внутренняя системная шина (разрядностью 8 бит) полностью аналогична шине
стандартной МПС. АЛУ здесь заменяет центральный процессор и
совмещено с внутренним ОЗУ.
Встроенный тактовый генератор (ЗГ) содержит два входа ХТАL1,
XTAL2, предназначенных для подключения кварцевого резонатора
или внешнего генератора (к входу ХТАL1). Максимально допустимая частота 24 МГц, но ее можно уменьшать до нулевого значения;
тогда выполнение программы останавливается. Тактовый сигнал
поступает на делитель (f/6), т. е. МК фактически работает на частоте 4 Мгц. Выполнение МК в виде 20-выводной микросхемы, пять
из которых используют для задания тактовой частоты (XTAL1, 2),
подключения питания (UCC) и общего вывода (GND) и подачи сигнала сброса (RST), предполагает, что остальные выводы (разряды
портов Р1 и Р3) могут иметь альтернативную функцию, а именно:
– Р3.0 = RXD, Р3.1 = ТXD – вход и выход последовательного канала;
– Р1.0 = AINO, Р1.1 = AIN1 – прямой и инверсный входы компаратора;
– Р3.2, Р3.3 – входы внешних прерываний (INT);
– Р3.4, Р3.5 – внешние вводы таймеров Т0 и Т1.
Каждая из линий портов Р1, Р3 может работать в режиме ввода
и вывода данных без дополнительных переключений, что достигается применением схемы (рис. 17), состоящей из узлов ввода и вывода, подключенных к какому-либо внешнему выводу микросхемы
Рxx. В режиме вывода состояние VT1 определяется сигналом вывода, а именно при его значении, равном лог.1, VT1 заперт и уровень
Рxx соответствует Uпит (т. е. лог.1). В режиме ввода порт вывода
устанавливается в 1 и значение Рxx определяется состоянием VT2,
которое в свою очередь определяется значением вводимого сигнала.
Альтернативное использование линий Р1, Р3 допускается либо
посредством разных режимов (прямом и альтернативном) одновременно, либо разделением их во времени, что требует применения
внешних переключающих схем.
Рассматриваемый МК содержит набор внутренних регистров,
функции части которых аналогичны регистрам МП.
Схематическое обозначение рабочих регистров представлено на
рис. 17. Цифры в верхней части указывают на число и расположение старших (8–15) и младших (0–7) разрядов регистров.
37
АТ89С2051
Uпит
Rн
Порт
ввода Рxx
Порт
вывода Рxx
R огр
1
1
Pxx
R огр
1
Рис. 17
15
87
DPH
B
CY
AC
DPL
A
F0 RS
0
PC
DPTR
OV
P
PCW
SP
Рис. 18
Регистр РС – это 16-разрядный счетчик команд. Регистр DPTR
используется как для косвенной адресации, так и для хранения
двух 8-разрядных слов данных (DPH/DPL), т. е. является аналогом регистровой пары. Регистр А – аккумулятор, т. е. предназначен для размещения операндов и результатов вычислений. При
38
выполнении операций деления и умножения предусмотрен вспомогательный регистр В. Так, при умножении один из множителей
загружается в А, другой – в В, операция выполняется как многократное сложение, а результат заносится в оба регистра. Регистр
PSW – это регистр состояния (регистр флагов) микроконтроллера,
разряды которого являются признаками того или иного результата
выполненной операции, а именно – CY – признак переноса, 0V служит для хранения арифметического переполнения, АС – признак
дополнительного переноса из младшей тетрады в старшую при операциях с двоично-десятичными числами, Р – признак четности содержимого аккумулятора, F0 предназначается для установки признака по желанию программиста.
Два бита RS служат для определения текущего банка РОН, число которых в данном микроконтроллере равно 32. РОН разделены
на четыре части (банка) по 8 регистров в каждом, выбор того или
иного банка определяется значением RS. Так, при RS = 00 выбирается банк 0, при RS = 01 – банк 1 и т. д. Одновременное использование банков не допускается, содержимое неиспользуемого банка
сохраняется. Разделение РОН на банки позволяет при неизменном
количестве команд в 4 раза расширить количество применяемых
регистров. Регистр SP выполняет функцию указателя стека. Еще
один вид регистров МК – специальные регистры. Они, как и все
остальные регистры, «адресно» совмещены с ячейками ОЗУ и образуют общее пространство памяти. Разрядность адреса составляет
8 бит, что допускает обращение к 256 байт памяти, при собственной
емкости ОЗУ 128 байт. Принцип совмещения позволяет использовать остальные байты адреса для обращения к регистрам МК.
Важнейшими специальными регистрами являются:
– Р1, Р3 – порты ввода/вывода;
– регистры, обслуживающие последовательный ввод/вывод
данных;
– регистры системы прерываний;
– регистры управления счетчиками-таймерами;
– регистр управления питанием.
Система обработки прерываний обслуживает пять источников,
причем каждый из этих источников может быть «замаскирован»,
т. е. отключен. Для этой цели предназначен регистр IE, каждый
из пяти младших разрядов которого предназначен для маскирования своего источника, а старший разряд отключает всю систему
прерываний. Регистр IR – регистр приоритетов, каждый из пяти
младших разрядов его хранит уровень приоритета одного из ис39
точников, причем 0 соответствует низшему, а 1 – высшему уровню
приоритета. Кроме того, имеются фиксированные уровни приоритета: высший уровень принадлежит внешнему входу INTO. Управление работой таймеров осуществляется посредством четырех специальных регистров, два из которых Т0, Т1 и есть те самые таймеры, куда заносится (программным путем) некое исходное значение
(число). Далее под воздействием либо внешних, либо внутренних
тактовых импульсов содержимое Т0 или Т1 уменьшается до нулевого значения, после чего формируется сигнал запроса на прерывание. Такая процедура может применяться для формирования
временных интервалов. Состояние регистра управления питанием
обеспечивает переход микроконтроллера либо в режим ожидания,
когда работа возобновляется при поступлении запроса на прерывание, либо в режим «засыпания», выход из которого возможен при
подаче сигнала сброса (RST). Очевидно, что в обоих случаях снижается энергопотребление.
Ранее на примере организации системы ввода/вывода МП был
рассмотрен параллельный способ обмена данными. Альтернативным решением является последовательный способ обмена посредством последовательных шин передачи данных, примером которой
является шина I2C (фирма Philips), предназначенная для передачи
управляющих сигналов на различные микросхемы электронных
устройств. Например, современные TV-приемники используют наборы специализированных микросхем с цифровым управлением,
которые представляют собой аналоговые устройства, осуществляющие регулировку параметров приемника традиционным способом.
Управляющие сигналы вырабатываются центральным процессором и посредством I2C-шины передаются на остальные элементы
схемы.
I2C – это двухпроводная, двунаправленная шина с последовательной передачей данных. В стандартном режиме шина может
адресовать до 128 подключаемых к ней устройств, скорость передачи составляет 100 Кбит/с. Длина шины и количество подключаемых
к ней устройств ограничены суммарной емкостью не более 400 пФ.
Поздние модификации шины I2C допускают передачу данных со
скоростью 400 Кбит/с и работу в режиме 10-битной адресации (подключение до 1024 устройств). Устройства, подключаемые к ней,
должны иметь специальный I2C-интерфейс, число типов таких
устройств достигает 1000.
Схема шины (рис. 19, а) состоит из линий передачи данных SDA
и синхронизации SCL. Устройства, подключаемые к шине, по сво40
+ Vpp
a)
Микроконтроллер
Порт
I/O
ЦАП
АЦП
ЖКИ
EPROM
Rн Rн
SDA
SCL
+ VDD
б)
Rн
Rн
SDA (линия передачи данных)
SCL (линия синхронизации)
I2C -интерфейс
I2 C -интерфейс
Выход
синхро
Выход
данных
Выход
синхро
Выход
данных
Выход
синхро
Выход
данных
Выход
синхро
Выход
данных
Устройство 2
Устройство 1
Рис. 19
ему назначению делятся на ведущее (М), в качестве которого обычно выступает МК и ведомые (S). Ведущее устройство формирует
тактовые сигналы на линии SCL и управляет процессом передачи
данных, которые могут передаваться как в направлении M → S,
так и обратно, т. е. S → M. Каждое S-устройство, подключенное к
шине, имеет свой уникальный 7-битовый адрес, передача которого
по SDL-линии обеспечивает доступ в данное устройство. Процедура
обмена по I2C-шине обычно реализуется программным путем, так
41
как ее реализация аппаратным путем имеет большую сложность и
стоимость.
На рис. 19, б условно показаны два устройства D1 и D2 подключенные к линиям SDA и SCL шины. Допустим D1 начинает процесс
передачи данных, при этом сигналы данных D0 и синхронизации
С0 поступают на входы VT1, VT2 и в зависимости от их значения
открывают их или оставляют закрытыми. Открытый транзистор
«подсаживает» линию, устанавливая на ней напряжение, близкое к нулю, в то время как при «отпущенной» линии (транзистор
закрыт) ее напряжение близко к Uпит. Устройство D2 работает
в режиме приемника (VT1, VT2 закрыты) и формирует значения
сигналов DI и СI в зависимости от потенциала (состояния) линии.
Данные по шине I2C передаются последовательно, при этом передача каждого бита по линии SDA сопровождается передачей синхроимпульса по SCL. Подробный набор правил, определяющий логику
взаимодействия всех элементов шины, называется ее протоколом.
а)
SDA
SCL
Момент
стробирования
(сигнал на
линии данных
не изменяется)
Момент
смены
уровня
на линии
данных
б)
SDA
SCL
S
Р
Рис. 20
42
Во «временной» области ставится условие, чтобы при передаче
данных уровни на линии SDA были сформированы; передача происходит при установке линии SCL в состояние лог.1 (промежутки
времени t1, t3, t5, передаваемые данные d1 d2 d3 = 101), а смена
уровня на линии данных должна происходить при установке SCL
в состояние лог.0, в промежутках времени t2, t4 (рис. 19, а).
Во избежание ошибок при передаче формируются старт- и стопусловие, при этом сигнал на линии SDA изменяется в тот момент,
когда на линии SCL содержится лог.1 (рис. 19, б). Передача данных
всегда начинается с выполнения старт-условия, когда на линии
SDA формируется перепад уровня из 1 в 0 и заканчивается стопусловием, когда состояние SDA изменяется из 0 в 1 (при этом состоянии SCL равно лог.1).
Логический уровень протокола I2C-шины в режиме передачи
от M к S показан ниже. Процесс передачи начинается с того, что
передатчик (М) формирует старт-условие (S). Затем он передает на
шину 7-битовый адрес приемника куда необходимо передать данные:
S
Адрес приемника
7 бит
0
W/R
0
A
Данные
8 бит
0
А
Р
где S – старт-условие, Р – стоп-условие, А – подтверждение, W/R –
запись/чтение (направление передачи).
Восьмой бит (помечен символом W/R) определяет направление
передачи. В нашем примере W/R = 0, что означает передачу данных от M к S; при W/R = 1 производится их передача от S к M.
Устройство, адрес которого совпал с переданным, вырабатывает
сигнал подтверждения A = 0, получив который М выполняет передачу 8 бит данных и получает сигнал подтверждения (A = 0). Для
завершения процесса передачи М вырабатывает стоп-условие.
Передача данных от S к M происходит аналогичным образом, при
этом значение бита W/R = 1.
Формирование адреса приемника производится двумя способами: 1) адрес может быть установлен при изготовлении соответствующей микросхемы и указывается разработчиком в прилагаемой
документации; 2) в микросхеме устанавливается лишь часть адреса, а остальная часть определяется при помощи предусмотренных
адресных входов, на которые подаются разные комбинации уровней напряжения.
В связи с ограничением величины суммарной электрической емкости подключаемых устройств и проводников (не более 400 пФ)
43
шина I2C используется для обеспечения последовательной передачи в пределах одной платы. Для передачи данных на большие расстояния разработаны специальные шины. Так шина 1-Wire (разработка фирмы Dallas Semi conductor) разрешает максимальную
протяженность до 300 м при скорости передачи 16 Кбит/с, а количество адресуемых элементов на шине составляет 256.
44
5. СИСТЕМА КОМАНД МК АТ89С2051
Система команд рассматриваемого МК включает:
− команды пересылки (25),
− логические команды (25),
− арифметические команды (24),
− команды передачи управления (17),
− битовые команды (17).
В основном список команд, их формат, мнемонические обозначения, способы адресации и т. д. совпадают с рассмотренными
в разд. 3.
В списке команд пересылки наиболее емкой является команда
MOV, которая использует все четыре способа адресации и обеспечивает, в частности, пересылку между двумя ячейками памяти. Команды обращения к стеку (PUSH, POP) используют способы адресации, допускающие обращение к РОН, т. е. стек может быть организован в регистровом файле. Две операции обмена ХСН и ХСНД
дополняют одностороннюю пересылку (MOV) двусторонней, когда
производится обмен данными между двумя ячейками памяти (или
РОН). При выполнении операции ХСН обмену подлежат байты,
при ХСНД – младшие тетрады байтов.
Список логических команд МК содержит команды выполнения
основных логических операций, очистки и инверсии аккумулятора и сдвига содержимого влево/вправо. Дополнительно предусмотрена команда SWAP, которая интерпретируется как циклический
сдвиг на 4 разряда. Источником первого операнда и приемником
результата может служить как аккумулятор, так и прямо адресуемая ячейка памяти, второй операнд задается любым из четырех
способов адресации.
В состав группы команд арифметической обработки дополнительно входят команды умножения MUL и деления DIU. В операциях целочисленного умножения и деления без знака участвуют
аккумулятор А и регистр В. При умножении 8-разрядное значение
А умножается на 8-разрядное значение В, а 16-разядный результат записывается в пару ВА (регистр В хранит старший байт произведения). Признак 0V→, если произведение В∙А больше 255. При
делении А на В частное записывается в А, а остаток – в В. Предусмотрена также десятичная коррекция (ДАД) результата арифметической операции.
Еще одна особенность МК АТ89С2051 – наличие ячеек памяти
с побитной адресацией. Система команд МК располагает команда45
ми «записать бит по адресу такому-то» и «прочитать бит по адресу
такому-то», для чего МК имеет отдельное адресное пространство
(BSEG). В этой связи ряд команд, предназначенных для выполнения операций пересылки, проверки условий и логической обработки булевых (одноразрядных) переменных, образует отдельную
группу. В качестве одного из операндов они применяют бит переноса CY, в качестве другого – прямо адресуемой бит-пространство
памяти. Например, команда ANL C, bit выполняет операцию И над
битом CY и битом, адрес которого содержит команда с размещением результата в регистре состояния (CY):
CY ← CY AND BSEG (bit).
В системе команд МК имеется операция «Сравнить и перейти»
CINE. По данной команде операнд сначала сравнивается по правилам вычитания целых чисел с константой и, в соответствии с
результатом сравнения, выставляется значение CY. Затем в случае несовпадения с константой выполняется переход (ветвление).
Сравнивая аккумулятор с последовательностью констант, получаем удобный способ проверки на совпадения, например, с целью выявления особых условий.
Предусмотрено, что при опознании запроса на прерывание МК
автоматически выполняет команду вызова LCALL addr 16, обеспечивающую запоминание адреса возврата в стеке:
SP ← PC, PC ← addr 16,
и загрузку счетчика команд РС новым значением, т. е. адресом первой команды подпрограммы обработки запроса.
46
6. ПРИМЕРЫ СХЕМНЫХ РЕШЕНИЙ С ИСПОЛЬЗОВАНИЕМ
МК АТ89С2051
Практически любое микропроцессорное устройство содержит
элементы индикации, в качестве которых применяются светодиодные (LED) и жидкокристаллические (LCD) индикаторы. Одиночные LED-индикаторы, подключаемые к выводу порта МК непосредственно или через буферный элемент, могут служить для отображения различных режимов работы.
Кроме одиночных применяют знакосинтезирующие матрицы
или цифровые индикаторы (так называемые семисегментные).
Семисегментный LED-индикатор представляет собой матрицу из
семи светодиодов, размещенных таким образом, чтобы, зажигая их
в разных сочетаниях, можно было бы отобразить любую десятичную цифру от 0 до 9. Дополнительно индикатор снабжают восьмым
сегментом (светодиодом), предназначенным для отображения десятичной точки (запятой).
По внутренней схеме включения такие индикаторы подразделяются на индикаторы с общим анодом (ОА) и общим катодом (ОК).
В ОА-индикаторах, наиболее часто используемых в схемотехнике,
на общий провод подается плюс источника питания (обычно + 5 В),
а каждый из восьми выводов сегментов через ограничивающие резисторы (или напрямую) подключают к выводам порта микроконтроллера.
Для отображения цифровых данных одного разряда индикации
обычно недостаточно. На рис. 20 показана типовая схема подключения к МК 4-разрядного LED-индикатора, работающая в режиме
динамической индикации (PДИ). Суть РДИ состоит в том, что разряды индикатора работают поочередно. Переключение разрядов
происходит с большой скоростью, и человеческий глаз не замечает
того, что разряды «зажигаются» поочередно. Схема РДИ позволяет
экономить выводы МК и количество управляющих элементов.
В схеме на рис. 21 выводы одноименных сегментов индикаторов объединены вместе и подключены к порту Р1 МК; линия Р1.0
управляет сегментами «а», линия Р1.1 – сегментами «в» каждого
индикатора и т. д. Возможность поочередного выбора индикаторов обеспечивается посредством дешифратора DD2 и ключей VT1–
VT4. На вход DD2 поочередно поступают сигналы с выводов Р3.0
и Р3.1 МК DD1, представляющие собой код номера разряда (от 00
до 11). Выходные сигналы DS поочередно устанавливаются в состояние лог.1 и открывают ключи VT1–VT4, обеспечивая тем самым
47
DD1
AT89C2051
12
1 RST
P1.0
4 XL1 CPU
13
P1.1
5 XL2
14
2
P1.2
P3.0
15
3
P3.1
P1.3
6
16
P3.2
P1.4
7
P3.3
17
8 P3.4
P1.5
18
9
P3.5
P1.6
11 P3.7
19
P1.7
DD2
K555ИД4
13 A0
Q0 9
DS
3
Q1 10
A1
Q2 11
12
1 E1
Q3 7
15
Q4
E2
6
Q5
5
2
E3
Q6
4
14
Q7
E4
1
2
3
4
5
R1 1
6
R2 2 7
R3 3 8
+5B
HL1
A
B
C
D
E
F
G
H
0
VT1
R9
R4 4
R5 5
Q0
R6 6
1
R7 7
2
R8 8 3
4
5
6
7
8
HL2
A
B
C
D
E
F
G
H
0
VT2
R10
Q1
HL3
1
2
3
4
5
6
7
8
A
B
C
D
E
F
G
H
0
VT3
R11
Q2
R1…R8– 270
R9…R12– 2к
VT1…VT4 – KT361A
HL4
1
2
3
4
5
6
7
8
A
B
C
D
E
F
G
H
0
VT4
R12
Q3
Рис. 21
«зажигание» соответствующего индикатора. Соответствующая
программа, постоянно перебирая разряды индикатора, выводит на
каждый индикатор соответствующий символ.
48
Альтернативным является вариант с использованием LCDиндикаторов, выполняемых в виде дисплеев. Обычно модуль индикатора имеет встроенный контроллер управления. На рис. 22
показана схема подключения модуля марки МТ-10Т7-7 к рассматриваемому МК.
Модуль МТ-10Т7-7 представляет собой однострочный 10-разрядный цифровой семисегментный LCD-индикатор. Назначение
выводов индикатора приведено в табл. 6.1.
Таблица 6.1
Индекс вывода
А0
WR1
WR2
DВ3
DВ2
DВ1
DВ0
CND
+E
V0
Назначение
Вход выбора «адрес/данные»
Входы синхронизации записи
прямой
инверсный
Шина «адреса/данных»
Общий
+5 В
Вход управления контрастностью
В схеме на рис. 22 в качестве шины адреса/данных использованы 4 младших разряда порта Р1 микроконтроллера. Р1.6 и Р1.4
используют для управления входами А0 и WR1 соответственно. Резисторы R1, R2 выполняют роль нагрузки линий Р1.0 и Р1.1, а R3
служит для регулировки контрастности изображения.
Контроллер модуля содержит 10 8-разрядных регистров, предназначенных для записи кода символа разряда, причем регистр имеет
свой адрес. Вначале на входы DB0–DB3 подается значение адреса
регистра символа и на входе А0 устанавливается уровень лог.0. Запись производится коротким положительным импульсом на входе
WR1 (WR2 = 0). После записи адреса нужного регистра символа в
него в два приема заносится 8-разрядный (с учетом «запятой») код
символа; при этом А0 = 1, а положительный импульс на WR1 обеспечивает запись. После записи кода символа значение адреса регистра символа автоматически увеличивается на единицу и процедура повторяется. Для блокировки модуля в нем предусмотрен специальный однобитовый регистр, соответствующий входу DB0. Так,
при DB = 0 работа модуля блокируется, DB = 1 разрешает запись
информации в модуль. Очевидно, что в режиме блокировки показания дисплея (т. е. содержимое регистров символов) сохраняется.
49
+5В
HG1
10
DD1
AT89C2051
1 RST
4 XL1
5 XL2
2
P3.0
3
P3.1
6
P3.2
7
P3.3
8
P3.4
9
P3.5
11
P3.7
CPU
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
R1
R2
9
+5 В
V0
12
R3
R1
8
1 7
13
R2
2 6
DB 0
14
R3
3 5
DB 1
15
R4
4
4
DB 2
16
R5
5 3
DB 3
17
R6
2
18
R7
7 1
19
R8 8
P1.7
GN
D
W R1
W R2
A0
MT -10T7-7
RT 1,RT 2 –5,1 кОм
R3–220 кОм «Контраст»
Рис. 22
Практически любая система, содержащая микроконтроллер, содержит исполнительные устройства, предназначенные для управления внешними механизмами (электродвигателями, клапанами,
нагревателями и т. д.). Для управления ими используют порты ввода/вывода МК. Сигналы с любой линии любого порта легко можно
использовать для включения и выключения внешних устройств,
необходимо лишь усилить управляющий сигнал (по мощности) до
необходимого уровня. Для этого применяют транзисторные ключи,
релейные или тиристорные схемы. На рис. 23 приведена схема согласования на основе симистора VS1. Для гальванической развязки
между силовой (сеть 220 В) и управляющей цепями используется
оптрон U1, а светодиод HL1 служит для индикации срабатывания.
Симистор ТС106-10 рассчитан на ток до 10 А.
Одним из важнейших вопросов построения схем ввода/вывода
является обработка аналоговой информации. Сюда относится возможность ввода данных в виде изменяющегося напряжения (например, показаний измерителя) или управление каким-либо механизмом с помощью выходного сигнала, амплитуда которого произвольно изменяется. Известно, что для этих целей применяются
50
+5 В
AT89C2051
Р1.0
R2
1к
R4
560
VT1
КТ361А
R1
2к
2
4
3
1
U1
AOУ103В
К нагрузке
VD1
КЦ407
–220 В
HL1
AЛ307
R3
1,2 кОм
VS1 TC106-10
Рис. 23
цифроаналоговые (ЦАП) и/или аналого-цифровые (АЦП) преобразователи. Промышленность выпускает специализированные микросхемы ЦАП и АЦП, существуют МК с встроенными АЦ- и ЦАпреобразователями. В то же время возможности МК АТ89С2051
позволяют реализовать процедуры ЦА-преобразования и ввода
данных в аналоговой форме на его основе. Рассматриваемые ниже
упрощенные схемы не претендуют на высокую точность и служат
скорее примером, иллюстрирующим принципы взаимного преобразования аналоговых и цифровых сигналов.
Схема ЦАП приведена на рис. 24. Он представляет собой матрицу резисторов R3–R10, через каждый из которых на базу VT1
поступает сигнал (ток) с выходов Q1–Q8 регистра DD2. Номиналы
резисторов подобраны по принципу удвоения, причем младшему
разряду Q1 соответствует минимальный ток I0, так как R3 = 620
кОм имеет максимальное значение, а старшему Q8 максимальный
ток (примерно 8I0), так как R10 = 5,1 кОм имеет минимальную величину. При работе схемы МК DD1 загружает 8-разрядное число
(код), в регистр DD2, которое появляется на его выходах (Q1–Q8).
Значение входного тока эмиттерного повторителя, выполненного
на VT1, оказывается прямо пропорциональным значению числа,
загруженного в DD2. При изменении его от 0 до 25510 напряжение
на выходе изменяется в пределах от 0 до 5 В. Схема способна выдавать 256 дискретных уровней выходного напряжения, шаг между
соседними уровнями составляет величину примерно 20 мВ.
51
52
RST
CPU
DD1
P1.7
P1.6
P1.5
P1.4
P1.3
P1.2
P1.1
P1.0
AT89C2051
4 XL1
5
XL2
2
P3.0
3
P3.1
6
P3.2
7
P3.3
8
P3.4
9
P3.5
11
P3.7
1
19
9
R77 7
D7
R88 8
D8
11 C
18
RG
DD2
Q8
Q7
Q6
Q5
Q4
Q3
Q2
Q1
+5В
Рис. 24
K580ИР82
DE
D6
R66
17
D5
16
R55
5 D4
14
13
15
12
R1 1
1
R2 2 D1
2
R3 3D2
3
R44 4 D3
R2
R1
R9 –10 кОм
R10 –5,1 кОм
R10
R8
R6
R4
R4 – 330 кОм R6 – 82 кОМ
R7 – 39 кОм
R8 – 20 кОм
R9
R7
R5
R3
R11
1 кОм
R3 – 620 кОм R5 – 160 кОМ
R1, R2 – 5,1 кОМ
+5В
Выход
VT1
KT3102E
Для управления регистром DD2 используется порт Р1 МК (передача 8-разрядных данных) и Р3.4 (сигнал записи). Резисторы R1,
R2 установлены для обеспечения нормальной работы выходов Р1.0
и Р1.1. Схему, представленную на рис. 24, можно использовать для
решения обратной задачи – преобразования аналогового сигнала
в цифровой, т. е. построения аналого-цифрового преобразователя.
Для этого нужен аналоговый компаратор и специальная программа
(рис. 25). Принцип работы преобразователя основан на сравнении
напряжения на прямом (+) входе компаратора с выходным напряжением ЦАП, подводимым к его инверсному (–) входу. Действуя по
специальной программе, МК изменяет напряжение на выходе ЦАП
от нуля до максимума, загружая на его цифровые входы последовательно меняющиеся (в сторону увеличения) двоичные числа. Как
только напряжение на выходе ЦАП превысит входное, компаратор
переключится с 1 на 0, что вызовет прекращение процедуры загрузки ЦАП. Последнее значение двоичного числа, загруженное в
ЦАП, и есть цифровой эквивалент измеряемого напряжения.
Схема многоканального аналогового ввода, основу которой
представляет АЦП на основе МК, приведена на рис. 26.
Как известно, микросхема АТ89С2051 содержит встроенный
компаратор, входы которого совмещены с выводами Р1.0 и Р1.1,
а выход подключен к выводу Р3.6, который работает только с ним.
ЦАП, аналогичный приведенному на рис. 25, построен на основе
регистра DD4, резистивный матрицы R11–R18 и эмиттерного повторителя на VT1. Выводы Р1.0 и Р1.1 имеют двойное назначение:
во-первых работать как младшие разряды порта Р1 при записи
числа (кода) в DD4 и во-вторых, как входы компаратора в про-
Ìèêðîêîíòðîëëåð
Âõîä ÀÖÏ
ÖÀÏ
Êîìïàðàòîð
+
Рис. 25
53
54
+ 5B
R8
R7
R6
R5
R4
R3
R2
R1
DD1K561KÏ2
13
14
15
12
1
2
5
4
A0 11
10
A1
9
A2
6
OE
X0
X1
X2
X3
X4
X5
X6
X7
A
B
C
MX
DD1
3
+
+ Vp
´
-Vp ´16
7
GND´
8
K
R1…R8 4,7ê
DD2AT89C2051
A0
A1
A2
1
4
5
2
3
6
7
8
9
11
DD2
12
RST
CPU P1.0
XL1
13
P1.1
XL2
14 D2
P1.2
P3.0
15 D3
P3.1
P1.3
P3.2
16 D4
P1.4
P3.3
17 D5
P1.5
P3.4
18 D6
P3.5
P1.6
19 D7
P3.7
P1.7
Рис. 26
D6
P1.
11
AT89C2051
P3.
5
P3.4
DD2DD3.1
1
12
1 R1
RST
1 CPU 1P1.0
XQ1K 2
4 R2 2D1
RG
13 E 13
5 XL1
R32 3
14
P1.1
2
EQ2
P3.04D2
DD3.2
4
15
3 R4
XL2
3
3
X K 4
6 R5
P3.15 D3
5P1.2
Q316
E
7 5
17
R6
E
8 P3.2 D4
P1.3
Q418
9 R77
6 7
Q619
P3.38
11 R8
5
D5
Q5
P1.4
8
-
DD5 K555ËÍ1
DD4 K580ÈP82
12
14
13
15
16
17
18
19
+
DD3 K561KT3
R3-620ê
R1 1R5R31
Q1
R2 2D1
R4-330ê
RGR4
2 R6-82ê
Q2
R3 3D2
R53 D3
Q3
R44 4
R
6
D4
Q4
R5
5
5
R7
D5
Q5
R6 6 D6
R8
Q6
R7
R97 7
D7
Q7
R10
R88 8
Q8
D8
11
C
9 -10ê
DE
R10
R9
R18
R16
R14
R12
R16 20K
R14 82K
R18 5,1K
R13 160K R17 10K
R12 230K
R11 620K R15 39K
ê
R17
R15
R13
R11
R9,R10-5,1ê
R19
1ê
+
6
8
X K 9
E
VT1
KT3102E
цессе ввода аналогового сигнала. Для решения проблемы временного разделения функций Р0, Р1 применены электронные ключи
DD3.1 – DD3.3, управляемые с вывода Р3.3 МК.
Источниками аналоговых сигналов, подлежащих преобразованию в цифровой код, служат резисторы R1–R8. Снимаемые с движков резисторов сигналы, амплитуда которых лежит в пределах 0… +
5 В поступают на входы Х0–Х7 цифро-аналогового мультиплексора
(коммутатора DD1). Для управления работой коммутатора используются выводы Р3.0–Р3.2 МК, служащие для подачи адреса (А9, А1,
А0) на входы А, В, С DD1. В зависимости от значения адреса к выходу К подключается один из входов Х0–Х7; так, например, при
А = А2А1А0 = 010 = 210 К = Х2,
при А = 111 = 710 К = Х7.
Вход ОЕ DD1, подключенный к выводу Р3.3 МК разрешает (при
ОЕ = 0) или запрещает (при ОЕ = 1) работу коммутатора.
Сначала МК устанавливает на Р3.3 уровень лог.1, благодаря
чему блокируется DD1 и закрывается DD3.3 (DD5 инвертирует значение Р3.3). В то же время DD3.1 и DD3.2 оказываются открытыми
и выводы Р1.0 и Р1.1 МК подключаются к входам регистра DD4.
Такой режим работы схемы коммутации, называемый «цифровым», разрешает загрузку в DD4 кода, предназначенного для АЦ.
Код запоминается в DD4, и соответствующий ему аналоговый сигнал поступает на выход эмиттерного повторителя.
Выполнив загрузку, МК устанавливает Р3.3 = 0.
Ключи DD3.1 и DD3.2 закрываются и отключают выводы Р1.0
и Р1.1 от цифровых цепей. Одновременно открывается коммутатор
DD1 и ключ DD3.3. Далее МК устанавливает на выводах Р3.0 – Р3.2
адрес (А2А1А0) коммутируемого входа и аналоговый сигнал с него
поступает на вход Р1.0 компаратора, а на вход Р1.1 – напряжение
с выхода VT1, т. е. схема работает в аналоговом режиме. Напряжения на входах компаратора сравниваются, и результат сравнения
считывается МК через линию Р3.6 (рис. 26). Если Р3.6 = 1, схема
вновь перейдет в цифровой режим, запишет новое (увеличенное)
значение кода в DD4 и т. д. Процедура продолжится до тех пор,
пока уровень на выходе компаратора Р3.6 не сменится на нулевой,
что означает «конец преобразования», т. е. содержимое DD4 соответствует входному сигналу.
В качестве сигналов, поступающих на входы Х0–Х7 коммутатора, могут служить отображения каких-либо физических параметров, подлежащих измерению (температуры, давления, осве55
56
1
4
5
2
3
6
7
8
9
11
12
RST
CPU P1.0
XL1
13
P1.1
XL2
14
P1.2
P3.0
15
P3.1
P1.3
16
P3.2
P1.4
P3.3
17
P1.5
P3.4
18
P3.5
P1.6
19
P3.7
P1.7
DD 1
AT89C2051
SDA
SCL
R6 DD6
1 A0 S DA 5
R7 7
2 R8 8
A1 S CL 6
3
7
A2 WP
R5 5
R4 4
DD 2
1 A0 S DA 5
2
A1 S CL 6
3
7
A2 WP
R1 1
A0
R2
2
R3 3
7
Рис. 27
A2 WP
A1 S CL
6
2
3
A0 S DA 5
1
DD7
DD3
1 A0 S DA 5
2
A1 S CL 6
3
7
A2 WP
A2 WP
7
6
3
A0 S DA 5
A1 S CL
2
DD8
A1 S CL 6
7
A2 WP
1
3
2
DD4
1 A0 S DA 5
3
2
1
A2 WP
A1 S CL
7
6
A0 S DA 5
DD9
DD5
1 A0 S DA 5
2
6
A1 S CL
3
7
A2 WP
DD 2… DD9
AT24C01A
R2
R1
Uсс
щенности, положения и т. д.). При этом необходимо обеспечить
согласование этих сигналов с входным диапазоном АЦП, а именно
для его полного использования входной сигнал должен изменяться
в пределах 0… + 5 В (при соответствующих колебаниях величины
измеряемого физического параметра).
На рис. 27 показана схема подключения микросхем памяти
(DD2–DD9) к микроконтроллеру, предназначенная для увеличения
объема энергонезависимой (EEPR0M) памяти. Микросхемы памяти АТ24С01А имеют объем 128 байт и снабжены I2C-интерфейсом.
Для присвоения индивидуального адреса микросхема имеет специальные адресные входы А0, А1, А2; для задания адреса каждый из
этих входов нужно подсоединить либо к общему проводу, либо к
напряжению питания (Uсс). Так значение индивидуального адреса
для DD4 составляет 010, для DD8 110 и т. д. Четыре старших разряда адреса фиксированы: 1010, т. е. полный адрес для DD4 составляет 1010010, для DD8 1010110. Выводы Р1.2 и Р1.3 МК образуют
линии SCL и SDA I2C-шины и обеспечивают выборку микросхемы,
чтение и запись данных. Наличие индивидуального адреса позволяет подключать к I2C-шине до восьми микросхем памяти. Программная реализация I2C-интерфейса, в том числе программы для
работы с энергонезависимой памятью, приведены в литературе.
57
7. ОСНОВНЫЕ ПАРАМЕТРЫ МИКРОКОНТРОЛЛЕРОВ PIC
(НА ПРИМЕРЕ PIC 16C84)
Микроконтроллеры PIC – это семейство микроконтроллеров
гарвардской архитектуры, выпускаемое фирмой Microchip Technology.
Они популярны как среди профессиональных разработчиков,
так и среди радиолюбителей благодаря их низкой стоимости, широкой доступности, большому количеству приложений и языков
программирования: РВРro, ассемблер и т. д. Язык РВРro для PIC
среднего семейства очень хорошо подходит для новичков, его легко
освоить, программный код получается в 3–12 раз короче и более понятен. После его компилирования код преобразуется в ассемблер,
получаемый код в 1,5–3 раза медленнее, но это не существенно, так
как минимальная скорость переключения порта все равно 3 мкс
при частоте тактовых импульсов 20 МГц. Также контроллеры PIC
имеют обширную встроенную периферию: USB, COM, I2C, PSP и
др. Периферию можно реализовать программно, например, восемь
СОМ-портов. В настоящее время PIC-контроллеры делятся (по ширине поля данных) на 8-битные, 16-битные и 32-битные. К особенностям контроллера можно отнести четыре такта на выполнение
команд, возможность переключения текущего регистрового файла,
его большой размер и небольшое количество команд.
Первые микроконтроллеры компании MICROCHIP PIC 15C5x
появились в конце 80-х годов и благодаря своей высокой производительности и низкой стоимости составили серьезную конкуренцию
производимым в то время 8-разрядным МК с CISC-архитектурой.
Первое, что привлекает внимание в PIC-контроллерах – это простота и эффективность. В основу концепции PIC, единую для всех выпускаемых семейств, была положена RISC-архитектура с системой
простых однословных команд, применение встроенной памяти программ и данных и малое энергопотребление. Система команд базового семейства PIC165х содержит только 33 команды. Как ни странно, и это сыграло свою роль в популяризации PIC-контроллеров. Все
команды (кроме команд перехода) выполняются за один машинный
цикл (или четыре машинных такта) с перекрытием по времени выборок команд и их исполнения, что позволяет достичь производительности до 5 MIPS при тактовой частоте 20 МГц.
Микроконтроллеры PIC имеют симметричную систему команд,
позволяющую выполнять операции с любым регистром, используя
любой метод адресации. Правда, разработчики MICROCHIP так и
58
не смогли отказаться от любимой всеми структуры с регистромаккумулятором, необходимым участником всех операций с двумя
операндами. Зато теперь пользователь может сохранять результат
операции на выбор, где пожелает: в самом регистре-аккумуляторе
или во втором регистре, используемом для операции. В настоящее
время MICROCHIP выпускает четыре основных семейства 8-разрядных RISC-микроконтроллеров, совместимых снизу вверх по
программному коду:
− базовое семейство PIC15Cx с 12-разрядными командами, простые недорогие микроконтроллеры с минимальной периферией;
− PIC15Cxxx с 12-разрядными командами со встроенным тактовым генератором, выпускаемые в миниатюрном 8-выводном исполнении. Не так давно был анонсирован очередной такой «малыш» с
внутренним 8-разрядным 4-канальным АЦП;
− PIC16x/7х/8х/9х с 14-разрядными командами. Наиболее много-численное семейство, объединяющее микроконтроллеры с разнообразными периферийными устройствами, в число которых входят аналоговые компараторы, АЦП, контроллеры последовательных интерфейсов SPI, USART и 12С, таймеры-счетчики, модули
захвата/сравнения, широтно-импульсные модуляторы, сторожевые таймеры, супервизорные схемы и т. д.;
− PIC17C4x/5хх – высокопроизводительные микроконтроллеры с расширенной системой команд 16-разрядного формата, работающие на частоте до 33 МГц, с объемом памяти программ до 16 К.
Кроме обширной периферии почти все МК этого семейства имеют
встроенный аппаратный умножитель, выполняющий операцию
умножения за один машинный цикл.
Большинство PIC-контроллеров выпускаются с однократно
программируемой памятью программ с возможностью внутрисхемного программирования или масочным ROM. Для целей отладки предлагаются версии с ультрафиолетовым стиранием, но они
весьма дорогие. Полное количество выпускаемых модификаций
PIC-контроллеров составляет примерно 500 наименований. Как,
не без основания, утверждает MICROCHIP, продукция компании
перекрывает весь диапазон применений 8-разрядных МК. Особый
акцент MICROCHIP делает на максимально возможное снижение
энергопотребления для выпускаемых МК. При работе на частоте
4 МГц PIC-контроллеры, в зависимости от модели, имеют ток потребления меньше 1,5 мА, а при работе на частоте 32,768 кГц –
ниже 15 мкА. Поддерживается «спящий» режим работы. Диапазон
питающих напряжений PIC-контроллеров составляет 2,0–6,0 В.
59
В настоящее время готовится к запуску в производство новое
пятое семейство PIC-контроллеров PIC18Cххх. Новые микроконтроллеры будут иметь расширенное RISC-ядро, оптимизированное
под использование нового Си-компилятора, адресное пространство
программ до 2 Мбайт, до 4 Кбайт встроенной памяти данных и производительность 10 MIPS.
Из программных средств отладки наиболее известны и доступны различные версии ассемблеров, а также интегрированная программная среда MPLAB. Российские производители программаторов и аппаратных отладочных средств также уделяют внимание
PIC-контроллерам. Выпускаются как специализированные программаторы, такие как PICPROG, программирующие почти весь
спектр PIC-микроконтроллеров, так и универсальные: UNIPRO,
CTEPX, поддерживающие наиболее известные версии PIC.
PIC16C84 относится к семейству КМОП-микроконтроллеров.
Отличается тем, что имеет внутреннее 1К × 14 бит EEPROM для программ, 8-битовые данные и 64 байт EEPROM памяти данных. При
этом отличаются низкой стоимостью и высокой производительностью. Пользователи, которые знакомы с семейством PIC16C5x, могут посмотреть подробный список отличий нового от производимых
ранее контроллеров. Все команды состоят из одного слова (14 бит
шириной) и исполняются за один цикл (400 нс при 10 МГц), кроме команд перехода, которые выполняются за два цикла (800 нс).
PIC16C84 имеет прерывание, срабатывающее от четырех источников, и восьмиуровневый аппаратный стек.
Периферия включает в себя 8-битный таймер-счетчик с 8-битным программируемым предварительным делителем (фактически 16-битный таймер) и 13 линий двунаправленного ввода/вывода. Высокая нагрузочная способность (25 мА макс. втекающий
ток, 20 мА макс. вытекающий ток) линий ввода/вывода упрощают
внешние драйверы, и тем самым уменьшается общая стоимость системы. Разработки на базе контроллеров PIC16C84 поддерживаются ассемблером, программным симулятором, внутрисхемным эмулятором (только фирмы Microchip) и программатором.
Серия PIC16C84 подходит для широкого спектра приложений от
схем высокоскоростного управления автомобильными и электрическими двигателями до экономичных удаленных приемопередатчиков, показывающих приборов и связных процессоров. Наличие
ПЗУ позволяет подстраивать параметры в прикладных программах (коды передатчика, скорости двигателя, частоты приемника и
т. д.).
60
Малые размеры корпусов, как для обычного, так и для поверхностного монтажа, делает эту серию МК пригодной для портативных приложений. Низкая цена, экономичность, быстродействие,
простота использования и гибкость ввода/вывода делает PIC16C84
привлекательным даже в тех областях, где ранее не применялись
МК. Например, таймеры, замена жесткой логики в больших системах, сопроцессоры.
Следует добавить, что встроенный автомат программирования
EEPROM кристалла PIC16C84 позволяет легко подстраивать программу и данные под конкретные требования даже после завершения ассемблирования и тестирования.
Эта возможность может быть использована как для тиражирования, так и для занесения калибровочных данных уже после окончательного тестирования.
Обзор характеристик:
– только 35 простых команд;
– все команды выполняются за один цикл (400 ns), кроме команд перехода – 2 цикла;
– рабочая частота 0 Гц–10 МГц (min 400 нс цикл команды);
– 14-битовые команды;
– 8-битовые данные;
– 1024×14 электрически перепрограммируемой программной
памяти на кристалле (EEPROM);
– 36×8 регистров общего использования;
– 15 специальных аппаратных регистров SFR;
– 64×8 электрически перепрограммируемой EEPROM-памяти
для данных;
– восьмиуровневый аппаратный стек;
– прямая, косвенная и относительная адресации данных и команд;
– четыре источника прерывания:
− внешний вход INT,
− переполнение таймера RTCC,
− прерывание при изменении сигналов на линиях порта В,
− по завершении записи данных в память EEPROM.
Периферия и ввод/вывод:
– 13 линий ввода-вывода с индивидуальной настройкой;
– втекающий/вытекающий ток для управления светодиодами:
− макс. втекающий ток – 25 мА,
− макс. вытекающий ток – 20 мА,
– 8-битный таймер-счетчик с 8-битным программируемым предварительным делителем;
61
– автоматический сброс при включении;
– таймер включения при сбросе;
– таймер запуска генератора;
– сторожевой таймер с собственным встроенным генератором,
обеспечивающим повышенную надежность;
– EEPROM-бит секретности для защиты кода;
– SLEEP – экономичный режим;
– выбираемые пользователем биты для установки режима возбуждения встроенного генератора:
− RC-генератор,
− обычный кварцевый резонатор,
− высокочастотный кварцевый резонатор,
− экономичный низкочастотный кристалл,
− встроенное устройство программирования EEPROMпамяти программ.
КМОП EPROM-технология:
− экономичная высокоскоростная КМОП EPROM-технология;
− статический принцип в архитектуре;
− широкий диапазон напряжений питания и температур:
− коммерческий: 2,0–6,0 В, 0... + 70° С,
− промышленный: 2,0–6,0 В, –40... + 70° С,
− автомобильный: 2,0–6,0 В, –40... + 125° С;
− низкое потребление:
− 3 МА типично для 5 В, 4 МГц,
− 50 мкА типично для 2 В, 32 КГц,
− 26 мкА типично для SLEEP режима при 2 В.
Архитектура основана на концепции раздельных шин и областей памяти для данных и для команд (гарвардская архитектура).
Шина данных и память данных (ОЗУ) – имеют ширину 8 бит, а программная шина и программная память (ПЗУ) – ширину 14 бит. Такая концепция обеспечивает простую, но мощную систему команд,
разработанную так, что битовые, байтовые и регистровые операции
работают с высокой скоростью и с перекрытием по времени выборок
команд и циклов выполнения. 14-битовая ширина программной
памяти обеспечивает выборку 14-битовой команды в один цикл.
Двухступенчатый конвейер обеспечивает одновременную выборку
и исполнение команды. Все команды выполняются за один цикл,
исключая команды переходов. В PIC16C84 программная память
объемом 1К×14 расположена внутри кристалла. Исполняемая программа может находиться только во встроенном ПЗУ.
62
Рекомендуемая литература
1. Гилмор Ч. Введение в микропроцессорную технику: М.: Мир,
1984. 334 c.
2. Токхайм Р. Микропроцессоры: Курс и упражнения. М.: Энергоатомиздат, 1988. 336 с.
3. Белов А. В. Конструирование устройств на микроконтроллерах. СПб.: Наука и техника, 2005.
4. Кузьмин А. В. FLASH-память и другие современные носители
информации. М.: Горячая линия – Телеком, 2005.
5. Бойко В. И. и др. Схемотехника электронных систем. Микропроцессоры и микроконтроллеры. СПб.: БХВ-Петербург, 2004. 464 с.
СОДЕРЖАНИЕ
1. Внутренняя структура микропроцессора............................
2. Память микропроцессорной системы.................................
3. Система команд микропроцессора.....................................
4. Микроконтроллер АТ89С2051..........................................
5. Система команд МК АТ89С2051........................................
6. Примеры схемных решений с использованием
МК АТ89С2051..................................................................
7. Основные параметры микроконтроллеров PIC (на примере
PIC 16C84)........................................................................
Рекомендуемая литература.................................................
3
8
21
35
45
47
58
63
63
Учебное издание
Неделин Павел Николаевич
ОСНОВЫ
МИКРОПРОЦЕССОРНОЙ ТЕХНИКИ
Учебное пособие
Редактор Г. Д. Бакастова
Верстальщик С. Б. Мацапура
Сдано в набор 27.06.13. Подписано к печати 10.09.13.
Формат 60×84 1/16. Бумага офсетная. Усл. печ. л. 3,72.
Уч.-изд. л. 4,00. Тираж 100 экз. Заказ № 388.
Редакционно-издательский центр ГУАП
190000, Санкт-Петербург, Б. Морская ул., 67
Документ
Категория
Без категории
Просмотров
2
Размер файла
2 398 Кб
Теги
nedelin
1/--страниц
Пожаловаться на содержимое документа