Uploaded by Екатерина Савакаева

Studmed.ru erohin-ii-konspekt-lekciy-po-discipline-mikroprocessornaya-tehnika a455295d6d4

advertisement
Министерство образования Украины
Донецкий государственный технический университет
КОНСПЕКТ
ЛЕКЦИЙ
по дисциплине "Микропроцессорная техника"
Утверждено:
на заседании кафедры "Горная
электротехника и автоматика"
Протокол № от
2004 г.
Донецк - 2004
1
УДК 381.325.5
Конспект лекций по дисциплине "Микропроцессорная техника" для студентов
специальности 7.09.2501 / Составитель - Ерохин И. И. - Донецк.: ДонГТУ, 2004.- 96 с.
↑@
Оглавление
Основные понятия и определения в МПТ; типичная структура микропроцессорной устройства (системы) …………....3
 ЛЕКЦИЯ 2. Структура и логическая организация микропроцессора
К580ВМ80А (Intel 8085) ……………………………………….6
 ЛЕКЦИЯ 3. Принцип действия 8-разрядного МП К580ВМ80А ..…..…… 10
 ЛЕКЦИЯ 4. Язык АССЕМБЛЕРА ……………………………………………………………13
 ЛЕКЦИЯ 5. Запоминающие устройства МП-систем...……………………. 18
 ЛЕКЦИЯ 6. Программируемый параллельный интерфейс (адаптер)
К580ВВ55 …………………………………………………………... 20
 ЛЕКЦИЯ 7. Организация программных временных задержек……………24
 ЛЕКЦИЯ 8. Программируемый контроллер клавиатуры и дисплея
К580КД79 (К580ВВ79) ………………………………………... 26
 ЛЕКЦИЯ 9. Программируемый таймер К580ВИ53 ………………………. 30
 ЛЕКЦИЯ 10. Универсальный синхронно-асинхронный приемник передатчик (УСАПП - USART) К580ВВ51……………………… 34
 ЛЕКЦИЯ 11. Организация прерываний – программируемый контроллер
прерываний К580ВН59 (К1810ВН59) ……………………….. 40
 ЛЕКЦИЯ 12. Однокристальные микроконтроллеры серии К1816ВЕХХ..
автоматизации …………………………………………………..48
ЛЕКЦИЯ 13. Устройства сопряжения МК с объектом автоматизации… 56
 ЛЕКЦИЯ 14. Однокристальные микроконтроллеры серии PICXXXX и
АТХХХХ ……………………………………………………….. .60
 ЛЕКЦИЯ 15. Микропроцессоры Intel 8086, Intel 80286…………………… 69
 ЛЕКЦИЯ 16. IBM PC совместимые промышленные компъютеры и
микроконтроллеры ……………………………………………...82
ЛЕКЦИЯ 1.
 ПРИЛОЖЕНИЕ П1. Структурная схема МК «Электроника МС2721»…... 86
ПРИЛОЖЕНИЕ П2. Таблица мнемоккодов и команд МП К580ВВ80А… 87
ПРИЛОЖЕНИЕ П3. Таблица мнемоккодов и команд МК К1816ВЕ51..….88
ПРИЛОЖЕНИЕ П4. Система команд МК АTmega16……………………… 89
Порядок пользования символами вызова необходимой лекции или приложения.
 - Вызов лекции или приложения.
↑@ - Возврат к оглавлению.
2
ЛЕКЦИЯ 1
ОСНОВНЫЕ ПОНЯТИЯ И ОПРЕДЕЛЕНИЯ В МПТ, ТИПИЧНАЯ
СТРУКТУРА МП УСТРОЙСТВА
1.1. Основные понятия и определения в МПТ
Микропроцессорная система (устройство, компьютер) представляют собой симбиоз аппаратных средств (АС) и программного обеспечения (ПО), которые тесно
взаимосвязаны и практически бесполезны друг без друга.
Специалисты, занимающие разработкой и эксплуатацией микропроцессорных
систем управления, должны иметь более высокий уровень технической культуры
по сравнению с их традиционным уровнем.
Микропроцессорная система (МП система) - информационная или управляющая система, построенная с применением микропроцессорных средств.
Архитектура МП системы – объединяет АС и ПО, включает потребительские
свойства системы.
Микропроцессор (МП - CPU) – устройство обработки данных (информации) выполняет арифметические и логические операции и осуществляет программное
управление процессом обработки.
МикроЭВМ или микрокомпьютер - устройство обработки данных, содержащее:
МП, постоянное и оперативное запоминающее устройства (ПЗУ и ОЗУ), устройства
ввода-вывода информации (УВВ), периферийные устройства (ПУ) и некоторые
другие схемы.
Микроконтроллер (МК - МС) - микрокомпьютер, в основном, с небольшими
вычислительными ресурсами и упрощенной системой команд, ориентированный не
на производство вычислений, а на выполнение логического управления оборудованием, технологическими процессами.
Контроллер – устройства ввода-вывода информации на периферийное
(внешнее) устройство.
Адаптер – устройство для согласования физических параметров (входных выходных сигналов) устройств с целью их сопряжения.
Интерфейс – полная совокупность физических и логических соглашений о входных и выходных сигналах устройств с целью их сопряжения.
Совокупность аппаратных, программных и конструктивных средств обеспечивающих взаимодействие функциональных устройств ЭВМ, называется внутренним
системным интерфейсом (ШУ, ШД, ША).
Микропроцессорное устройство (МПУ) – совокупность МП средств, элементов
и деталей, обладающих конструктивным и функциональным единством – ЭВМ,
ПЭВМ, микроЭВМ, МК.
1.2. Типичная структура МП устройства (системы)
На рис. 1 приведена упрощённая типичная структура МПУ (МП системы),
предназначенной для обработки данных (информации) или управления некоторым
процессом. Примерно такую же структуру имеют – микроконтроллер и микроЭВМ
широкого применения.
В этой структуре центральное место занимает микропроцессор (МП), который
выполняет арифметические и логические операции над данными, осуществляет
3
программное управление процессом обработки информации, организует взаимодействие всех устройств входящих в МП систему.
Работа МП происходит под воздействием сигналов (тактовых прямоугольных
импульсов – ГТИ) схемы синхронизации и начальной установки.
Приведенная структура (рис. 1), отражает магистрально-модульный принцип организации МПУ и систем. Отдельные блоки являются унифицированными функционально законченными модулями со своими схемами управления.
Обмен информацией между модулями системы осуществляется посредством
коллективных шин (магистралей – ША, ШД, ШУ) к которым имеют доступ модули
системы, то есть обмен информацией производится путём разделения использования во времени, модулями системы коллективных шин. Магистральный принцип
сопряжения модулей предполагает наличие унифицированных аппаратурных, программных и конструктивных средств, обеспечивающих установление связей и
взаимодействие всех модулей МП системы, и называется внутренним системным
интерфейсом.
Для МП (МПУ) характерна трех шинная структура (рис. 1.), содержащая шину
адреса (ША), шину данных (ШД) и шину управления (ШУ). Типовая структура
МПУ рис. 1, предполагает наличие общего сопряжения (интерфейса) для модулей
памяти - постоянных и оперативных запоминающих устройств (ПЗУ и ОЗУ) и
периферийных устройств ввода/вывода (УВВ) и внешнего ОЗУ.
В качестве внешних (периферийных) устройств в МПУ используются; клавиатура, дисплей, гибкие и жесткие магнитные диски, принтеры (контактные датчики
и аналого-цифровые преобразователи и. т. д.).
Периферийные устройства подключаются к шинам интерфейса (шинам МП) через
адаптеры, контроллеры (интерфейсные БИС) – параллельный программируемый адаптер (ППА – PPI), контроллер клавиатуры и дисплея (ККД), программируемый универсальный синхронно-асинхронный приёмник-передатчик (УСАПП – USART), см. рис. 1.
Внутренний системный интерфейс
Шина адреса - ША
Шина
МП
Схема
синхронизации и
начальной
установки
данных
Шина
ПЗУ
ОЗУ
Интерфейс памяти
ППА
ШД
управления
ККД
-
ШУ
• • • УСАПП
Устройства ввода-вывода - УВВ
Интерфейс периферийного оборудования
Рис.1. Типичная структурная схема микропроцессорного устройства или системы
В структуре МПУ интерфейс является узким местом из-за ограниченного
числа выводов корпуса МП. Узкий интерфейс приводит к необходимости применения двунаправленных линий передачи информации, что усложняет схемы буферов
4
и вызывает необходимость использования временного мультиплексирования шин.
Мультиплексирование шин позволяет при ограниченном числе линий интерфейса
передавать по ним различную информацию; адреса, данные, команды. Однако это
приводит к снижению скорости передачи информации через интерфейс.
МикроЭВМ или микроконтроллер (МК) содержащий помимо МП, дополнительные БИС из МП набора (память, таймер, интерфейсные схемы и др.) может быть
размещен на одной плате (одноплатный микроконтроллер или микроЭВМ). Однокристальный микроконтроллер (ОМК) или микроЭВМ – элементы и модули этих
устройств размещены на одном кристалле (в корпусе одной БИС).
Структурная схема одноплатного серийного микроконтроллера "Электроника
МС2721" приведена в приложении П1.

ЛЕКЦИЯ 2.
↑@
СТРУКТУРА И ЛОГИЧЕСКАЯ ОРГАНИЗАЦИЯ МИКРОПРОЦЕССОРА
К580ВМ80А (I8085), СИСТЕМА КОМАНД
2.1. СТРУКТУРА МИКРОПРОЦЕССОРА К580ВМ80А
На рис. 2.1 приведена структурная схема МП К580. На структурные решения
определенное влияние оказало ограниченное число выводов корпуса МП (в данном
случае их 40). МП имеет три шины; 8-разрядную двунаправленную внутреннюю
шину данных (ШД), 16-разрядную адресную шину (ША) и шину управления (ШУ).
Внутреняя ШД является магистралью, по которой обмениваются данными все
подключённые к ней блоки (узлы) МП. Одновременно по ШД осуществляется
обмен только между двумя узлами МП. Таким образом, узлы МП подсоединенные к
ШД, разделяют эту шину во времени.
Шина управления содержит линии для передачи управляющих сигналов, признаков
состояния процессора и периферийных устройств, в том числе линии; синхронизации
передачи и идентификации информации передаваемой по ШД; сигналов, информирующих МП о готовности периферийных устройств, сигнала запроса прерывания
от периферийных устройств и сигнала разрешения прерывания и др.
В структуре МП можно выделить следующие её основные части: блок регистров, арифметическо-логическое устройство (АЛУ), буферные схемы, управляющее
устройство.
БЛОК РЕГИСТРОВ
Микропроцессор К580 содержит программно-доступные 8-разрядные регистры:
регистр-аккумулятор А; регистры общего назначения (РОН) В, С, D, E; регистр
признаков F и 16-разрядные специализированные регистры: счетчик команд СК;
регистр-указатель стека УС; сдвоенный регистр косвенного адреса H L (Н - регистр
старшего полу адреса, L - регистр младшего полу адреса). Кроме того, имеются непосредственно недоступные программе регистры: регистры временного хранения T, W, Z,
и 8-разрядный регистр команд РК; 16 разрядный регистр адреса РА. Имеется возможность использования содержимого пар регистров В и С, D и Е, Н и L как составных
слов двоичной длины (16-разрядные регистры).
Регистры РОН используются для хранения операндов, промежуточных и конечных результатов, а также адресов при косвенной адресации. Регистр-аккумулятор
(А) используется в качестве источника одного из операндов и в нём всегда фиксируется результат операции. Для того чтобы аккумулятр мог одновременно являться
5
(8)
ШД
БУФЕР ШД
шина
(8)
T
данных
(8)
Мультиплексор
W Z
B
C
D
E
H L
F
АЛУ
(8)
(8)
УС (SP)
СК (PC)
ИНК / ДЕК
РА
РК
АЛУ
ДК
БУФЕР ША
ША
Первичный управляющий
автомат
•
Управляющие
• сигналы
•
Схема управления МП системой
А
A*
(8)
Селектор
Внутренняя
(8)
ШУ (12)
Сброс
Синхронизация
RESET
Готовность
Ожидание
READ
F1
F2
SYNC
WAIT
Управление
ПДП
Управление
прерыванием
HOLD
Чтение
DBIN
Запись
WRITE
HOLDA
INT
INTE
(16)
Рис. 2.1. Структурная схема микропроцессора К580ВМ80А
регистром операнда и регистром результата операции, он строится на основе двухступенчатых триггеров, (следует отметить, что некоторые МП для повышения
производительности имеют несколько аккумуляторов).
Использование аккумулятора и регистров РОН позволяет уменьшить количество обращений к памяти и тем самым повысить быстродействие МПУ.
Схема инкрементора/декрементора, производит над содержимым регистров (без
привлечения АЛУ) операцию прибавления/вычитания 1. Схема инкрементора/декрементора позволяет реализовать процедуры автоматического задания приращений при
операциях с адресами не только в регистре-указателе стека, но и в счетчике команд
Регистр-защелка адреса памяти РА недоступен программисту. Однако любая пара
регистров (ВС, DE, HL) может быть использована для задания адресов команд и данных
в программе. Этот адрес под воздействием соответствующих команд не только может
быть загружен в регистр-защелку адреса, но и модифицирован (посредством схемы
инкрементора/декрементора) в процессе загрузки. Регистр защелка адреса передает
адрес в буферную схему и далее на шину адреса МПУ.
АРИФМЕТИЧЕСКО-ЛОГИЧЕСКОЕ УСТРОЙСТВО
Восьмиразрядная комбинированная схема АЛУ выполняет, арифметические и логические операции над 8-разрядными числами. В процессе межрегистровых пересылок
к одному из входов схемы АЛУ всегда подключен аккумулятор, а к другому через
регистр Т может быть подключен любой из общих регистров.
АЛУ непосредственно связано с 8-разрядным регистром признаков F, в соответствующих разрядах которого фиксируются особенности выполнения каждой операции:
нулевой результат в аккумуляторе – флаг Z = 1; перенос из старшего разряда – флаг
CY=1; знак результата "+" – флаг S=0; паритет – флаг Р=1, и вспомогательный перенос
6
из младшего полубайта – флаг АС=1. Наличие в МП регистра признаков упрощает
осуществление программных переходов в зависимости от состояния одного или более
триггеров признаков (флагов). АЛУ позволяет в процессе межрегистровых пересылок
выполнять операции сдвига на один разряд вправо или влево. Многократный сдвиг
реализуется последовательностью одноразрядных сдвигов.
В состав АЛУ входит схема десятичного корректора ДК, назначение которого под воздействием специальной команды интерпретировать результат выполнения
двоичной операции как результат операции десятичной арифметики.
Арифметическо-логическое устройство реализует простейшие арифметические и
логические операции (сложение, вычитание, сдвиги, сравнение, логическое умножение
и т. п.). Все более сложные операции (умножение, деление, вычисление элементарных
функций и др.) выполняются по специальным подпрограммам.
СТЕКОВАЯ ПАМЯТЬ
В МП К580 организуется стековая память, реализующая безадресное задание
операндов. В общем случае стек представляет собой группу последовательно пронумерованных регистров или ячеек памяти, снабженных указателем стека, в котором автоматически при записи и считывании устанавливается номер (адрес) последней занятой
ячейки стека (вершины стека). При операции занесения в стек, слово помещается в
следующую по порядка свободную ячейку стека, а при считывании из стека –
извлекается слово поступившее последним. Таким образом, в стеке реализуется
дисциплина обслуживания «последний пришёл – первый ушёл» Эта дисциплина при
обращении к стеку реализуется автоматически. Поэтому при операциях со стеком
возможно безадресное задание операнда – команда не содержит адреса ячейки стека,
но содержит адрес (или он подразумевается) ячейки памяти или регистра, откуда слово
передается в стек или куда загружается из стека.
В рассматриваемом МП используется «перевернутый» стек, то есть при передаче
в стек слова, значение регистра указателя стека (адрес вершины стека) уменьшается,
а при извлечении слова из стека – увеличивается.
Непосредственно в МП К580 содержатся только регистр-указатель стека (УС)
и соответствующие цепи управления. Сам стек реализуется в виде группы последовательных ячеек оперативной памяти. Стековая адресация широко используется
при работе с подпрограммами и в процедурах прерывания.
БУФЕРНЫЕ СХЕМЫ
Двунаправленный буфер ШД предназначен для логического и электрического
разделения внутрипроцессорной ШД и внешней системной шины ШД. Буфер состоит
из регистра-защелки и выходной схемы с тремя состояниями, т. е. схемы обеспечивающей на выходе состояния «0», «1» или «полное» электрическое отключение
от внешней ШД – высокоимпедансное состояние. Наличие в МП буферных схем,
отключающихся от общей системной шины, обеспечивает реализацию магистрального
принципа межмодульных связей в МП системе.
В режиме ввода информации внутреняя ШД МП подсоединяется к региструзащёлке буфера ШД. Загрузку буфера ШД, из внешней ШД производит буферная
схема под управлением команды, определяемой программой.
В режиме вывода информации буфер ШД передаёт на внешнюю ШД содержимое буферного регистра-защелки, на вход которого по внутренней ШД с одного
из регистров (чаще всего из аккумулятора) загружен код, подлежащий выдаче.
7
Во время выполнения операций МП, не связанных с процедурами обмена информацией с внешними по отношению к МП устройствами системы, буферная схема
отключает МП от внешней шины ШД, то есть переходит в высокоимпедансное
состояние «не нуль, не один», которое принято называть «плавающим» состоянием.
Буферная схема шины адреса (Буфер ША) – однонаправленная, обеспечивает
передачу адресов, а также номеров периферийных устройств от МП в систему. Выход
буфера адреса, точно так же как и буфера данных, может переходить в отключенное
состояние. Подобный режим необходимо иметь в МП системе, в которой к памяти
могут обращаться по системной ША не только МП, но и некоторые из периферийных
устройств (например, пульт оператора, контроллер прямого доступа к памяти и др).
Прежде чем перейти к рассмотрению способа реализации программного управления (принципа работы) МП, целесообразно ознакомиться с его системой команд.
2. 2. СИСТЕМА КОМАНД МП К580ВМ80А
Для рассмотрения особенностей системы команд МП воспользуемся его программной моделью (рис. 2. 2), содержащей узлы наиболее важные для понимания
программистом процесса работы МП.
Программно-доступные регистры
Память
А
В
С
D
E
7
15
H
L
0
Регистр - Аккумулятор
Общие регистры (РОН)
0
УС (SP)
CK (PC)
S Z AC P CY
0000Н
1FFFH
2000H
Регистр косвенного адреса
Указатель стека
Счётчик команд
Регистр признаков РП (F)
FFEFH
FFF0H
ПОСТОЯННАЯ
ПАМЯТЬ
ПРОГРАММ
И ДАННЫХ
ОПЕРАТИВНАЯ
ПАМЯТЬ
ПРОГРАММ
И ДАННЫХ
СТЕК
FFFFH
Рис. 2.2. Программная модель МП К580ВМ80А
Программно-недоступные узлы МП; АЛУ, первичный управляющий автомат ПУА, регистры временного хранения – Т, W, Z и регистр адреса памяти – РА
являются существенными для процесса выполнения команд.
В системе команд МП К580 имеются однобайтовые, двухбайтовые и трёхбайтовые команды. Форматы команд показаны на рис. 2. 3. Формат команды и тип
адресации задаётся в команде неявно кодом операции (КОП). Адрес команды
определяется адресом её первого байта.
Подробное описание системы команд МП приведено /2, в табл. 2.1/ Команды разбиты на группы по функциональному назначению команд: 1) пересылки информации; 2) арифметических операций; 3) логических операций; 4) передачи управления;
5) специальные. Группа может содержать несколько типов операций. Каждый тип
операций характеризуется структурой кодовых комбинаций команд.
В таблице системы команд указаны символические мнемонические обозначения
(мнемокоды) команд, используемые при написании программ на языке ассемблера
МП К580. В основе символических обозначений, как правило, лежит аббревиатура
от полной записи наименования команды на английском языке. Например, команда
"загрузить аккумулятор с прямой адресацией" имеет мнемокод LDA (команда трех8
байтовая – загрузить в аккумулятор данные из памяти), которая представляет аббревиатуру от английского load direct accumulator.
В таблице системы команд также указаны: двоичная кодовая комбинация коман ды; число байтов, содержащихся в команде; число циклов и тактов, в которые выполняется команда; формирование признаков S, Z, AC, P , CY в регистре признаков (РП).
Рассмотрим пример формата однобайтовой команды из группы пересылки
информации MOV C, D (переслать данные из регистра D в регистр С, обозначение
выполняемой операции (C) ← (D), кодовая комбинация команды 01001010В = 4АН),
приведенный на рис. 2.3.
7
6 5
3
2
0
Т а б л и ц а 2. 1.
Регистр Адрес Регистр Адрес
0 1 0 0 1 0 1 0
А
111
E
011
В
000
H
100
Код
Адрес
Адрес
С
001
L
101
операции регистра регистра
D
0
1
0
(КОП). приёмника. источника.
В кодовой комбинации данной команды в разрядах: 6, 7 размещается вид операции (код операции) 01 - пересылка данных; 3 - 5 адрес регистра С - 001 (приёмник данных); 0 - 2 адрес регистра D - 010 (источник данных).
Рассмотрим пример формата двухбайтовой команды из группы пересылки
информации MVI A, 00101110B (2ЕH) (загрузить в аккумулятор непосредственный
операнд 2ЕH, обозначение выполняемой операции (А) ← 2ЕН, кодовая комбинация
команды 00111110В = 3ЕН), приведенной на рис. 2.4.
Байт 1
7
6
5
0
0
1
3
1
1
2
1
0
1
0
7
Байт 2
0
0
0
1
0
1
1
1
0
КОП
Регистр
КОП
Непосредственный операнд
приёмника
Формат .данных соответствует формату непосредственного операнда.
Рассмотрим пример формата трёхбайтовой команды LDA A, 20 19 (загрузить в
аккумулятор данные из ячейки памяти по адресу 1920Н, обозначение выполняемой
операции А ← [(А16)], кодовая комбинация команды 00111010В = 3АН), приведенной на рис. 2. 5.
0 0 1
1
1
0 1
0
0 0
1
0 0
0 0 0
0 0 0
1
1 0 0
1
КОП
Байт 2. Мл. полуадрес
Байт 3. Ст. полуадрес
.
Повышению эффективности системы команд, при коротком слове МП, способствует использование регистра аккумулятора с подразумеваемой адресацией для
реализации одноадресных и безадресных команд (в которых адрес операнда
неявно задаётся кодом операции).
Байт 1.
ЛИТЕРАТУРА
1. Каламбеков Б. А. Микропроцессоры и их применение в системах передачи и
обработки сигналов. Учеб. пособие для вузов. – М.: Радио и связь, 1988.
2. Каган Б. М., Сташин В. В. Основы проектирования микропроцессорных устройств автоматики. – М.: Энергоатомиздат, 1987.
9
ЛЕКЦИЯ 3

↑@
ПРИНЦИП РАБОТЫ 8-РАЗРЯДНОГО МП К580ВМ80А
На рис. 3.1 показана структурная схема МПУ на МПК серии К580ВМ80А.
Генератор тактовых импульсов (ГТИ) формирует две импульсные последовательности
F1 и F2, необходимые для тактирования работы МП. Тактовые последовательности
импульсов. F1 и F2 приведены на рис 3.2. ПЗУ, в основном, используется для хранения программ, ОЗУ – для хранения данных.
Общий принцип функционирования МПУ заключается в следующем. Из МП на
шину адреса (ША) выдается адрес очередной команды. Считанная по этому адресу из
памяти (например, из ПЗУ) команда поступает на шину данных (ШД) и принимается в
МП, где она исполняется. В счетчике команд МП формируется адрес следующей
команды.
F1
Q
Буфер
F2
Микропроцессор
КР580ВМ80А
ГТИ
+12в
+ 5в
Земля
- 5в
к F2
Шина адреса (16) - ША
ОЗУ
Буфер
УВВ
Шина данных (8) - ШД
Фиксатор
состояния
&
ПЗУ
Шина управления (10-18)
Синхронизация
Ожидание, разрешения прерывания, подтверждение захвата
Готовность, запрос прерывания, сброс, захват
Рис. 3.1. Структурная схема МП устройства
По окончанию выполнения команды на ША устанавливается адрес следующей
команды и т. д. В процессе исполнения команды могут потребоваться дополнительные
обращения к памяти для вызова в МП дополнительных байтов команды (в случае двух-,
трехбайтовых команд), операндов или записи в память данных, выдаваемых из МП.
Рассмотрим подробнее процесс выполнения команд МП. Этот процесс разбивается на машинные циклы, обозначаемые М1, М2, М3, М4, М5. В каждом цикле
производится одно обращение МП к памяти или УВВ. В зависимости от типа команды,
команда может быть выполнена за один цикл (М1), либо за два цикла (М1, М2), и т. д.
Самые длинные команды выполняются за пять циклов (М1 … М5).
Каждый цикл включает в себя несколько тактов, обозначаемых Т1, Т2, Т3, Т4, Т5.
Циклы могут содержать три (Т1,…Т3),четыре (Т1,…Т4) либо пять (Т1,…Т5) тактов.
Первые три такта во всех циклах используются для организации обмена с памятью
или УВВ, такты Т4 и Т5 (если они присутствуют в цикле) – для выполнения внутренних операций в МП. На рис. 3.3 показана временная диаграмма машинного
цикла из пяти тактов.
10
0.48 < T < 2. 0 мГц
Рассмотрим цикл М1. В такте Т1
содержимое счетчика команд устанавливается на ША, соответственно адрес
F1
t передаётся и в модуль памяти, где
> 60 нс
происходит чтение байта команды из
указанной ячейки (ячейки по адресу
> 80 нс
установленному на ША). В такте Т2 на
F2
входе МП проверяется наличие сигнала
> 0 нс
> 220нс
> 70 нс
t (уровня лог. 1) Готовность. Этот сигнал
формируется устройством подключёнРис. 3.2 Тактовые импульсы ГТИ
ным к ШД и подается на вход МП через
интервал времени, достаточный для завершения процесса чтения из памяти . Если на
входе Готовность сигнал отсутствует (лог. 0), то МП устанавливается в режим
ожидания, в котором каждый следующий такт рассматривается как такт Т 2 до тех
пор, пока не появится сигнал на входе Готовность. С приходом этого сигнала МП
выходит из режима ожидания и переходит на выполнение такта Т3. В такте Т3
выданный из памяти байт команды c ШД принимается в МП, где он помещается в
регистр команд (РК). В такте Т4 анализируется принятый байт команды и выясняется,
нужны ли дополнительные обращения к памяти. Если такие обращения не требуются
(команда однобайтовая и операнды находятся в регистрах МП), то в этом же такте
либо с использованием дополнительного такта Т5 выполняется предусматриваемая
командой операция.
Т1
Т2
Т3
Т4
Т5
F1
t
t
F2
Синхронизация
t
Строб состояния
t
Рис. 3.3. Сигналы синхронизации и строба состояния
Если необходимы дополнительные обращения к память, то после такта Т4 цикл
М1 завершается и происходит переход к циклу М2. Пусть, например, команда
однобайтная, но в операции должен участвовать операнд, хранящийся в оперативной
памяти. Тогда в цикле М2 в такте Т1 выдается адрес ячейки памяти, а в такте Т2
проверяется наличие сигнала Готовность (сигнала о том, что прошел интервал времени, достаточный для чтения из памяти). С появлением этого сигнала происходит
переход к такту Т3, в котором выданные из памяти данные, с ШД принимается в МП
и в этом же такте выполняется операция, предусматриваемая командой.
При исполнении большинства команд в случаях, когда происходят дополнительные
обращения к памяти, первый цикл М1 содержит четыре такта, а в каждом последующем
цикле содержится три такта и происходит одно дополнительное обращение к памяти.
11
Информация о состоянии микропроцессора. В каждом цикле в интервале времени от момента положительного фронта импульса последовательности F2 в такте
Т1 и до момента положительного фронта импульса F2 в такте Т2 МП выдает
на выход Синхронизация уровень лог. 1 и на ШД информацию о состоянии МП.
Элемент И-НЕ (см. рис. 3.1) формирует строб, которым осуществляется приём информации о состоянии МП с ШД в регистр состояния - системный контроллер (временное положение строба состояния показано на рис. 3.3). В табл. 3.1 приведено назначение отдельных разрядов кода слова состояния МП, а в табл. 3.2 кодовые комбинации слова состояния МП (выдаваемые МП, между первым и втором тактом
машинного цикла, на ШД).
Таблица 3.1
Разряд
D0
D1
D2
D3
D4
D5
D6
D7
Назначение сигнала
Подтверждение прерывания: используется для стробирования команды
RST в МП из устройства, запрещающего прерывание.
Запись-вывод: уровень лог.0 - выдача информации из МП в УВВ; уровень
лог.1 прием информации из оперативной памяти или ввод (приём из УВВ).
Установлено содержимое указателя стека в данном цикле на ША.
Подтверждение останова: МП в состоянии останова (ожидания)
Установлен номер внешнего устройства на ША и осуществляется вывод
содержимого аккумулятора на устройство вывода.
Принимает первый байт команды в данном цикле МП.
Установлен номер устройства ввода на ША и осуществляется ввод
информации из устройства ввода в аккумулятор МП.
Прием информации (чтение) из памяти в МП
Таблица 3.4
Слово состояние МП
Вид
цикла
Выборка первого байта команды
Чтение из памяти
Запись в память
Чтение стека
Запись в стек
Ввод из УВВ
Вывод из УВВ
Подтверждение прерывания
Подтверждение останова
Подтверждение прерывания при останове
D7
1
1
0
1
0
0
0
0
1
0
D6
0
0
0
0
0
1
0
0
0
0
D5
1
0
0
0
0
0
0
1
0
1
D4
0
0
0
0
0
0
1
0
1
1
D3
0
0
0
0
0
0
0
0
1
1
D2
0
0
0
1
1
0
0
0
0
0
D1
1
1
0
1
0
1
0
1
1
1
D0
0
0
0
0
0
0
0
1
0
1
ЛИТЕРАТУРА
1. Калам беков Б. А. Микропроцессоры и их применение в системах передачи и
обработки сигналов. Учеб. пособие для вузов. - М.: Радио и связь, 1988.
2. Каган Б. М., Сташин В. В. Основы проектирования микропроцессорных устройств автоматики. - М.: Энергоатомиздат, 1987.
3. Самофалов К. Г. и др. Микропроцессоры. - К.: Техника, 1986.
12

ЛЕКЦИЯ 4
↑@
ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ АССЕМБЛЕРА
Языки АССЕМБЛЕРА занимают промежуточное положение между машинными
языками и языками высокого уровня, будучи при этом гораздо ближе к машинным языкам. Они объединяют в себе некоторые достоинства самого нижнего и
самого верхнего уровней языков программирования.
Хорошая программа микроконтроллера (МК) – это программа правильно реализующая разработанный алгоритм в минимальное время, занимающая небольшой
объем памяти в которую легко вносить изменения. Этим условиям отвечает
программирование на языке АССЕМБЛЕРА, которое хотя и требуют наличие системы АССЕМБЛЕРА (ЭВМ или ПЭВМ и ассемблирующих программ при системном
программировании), но представляют разработчику МК возможность написания программ в мнемонических кодах с использованием символических адресов и ссылок.
Кроме того, в процессе трансляции АССЕМБЛЕРЫ выдают листинг программы в
котором представлены обе ее версии (исходная и объектная) и указания об ошибках. Транслятор программ АССЕМБЛЕРА, гораздо проще и компактнее транслятора
программ языков высокого уровня, а результирующая объектная (машинная программа) на выходе АССЕМБЛЕРА может быть столь эффективной, как и программа
написанная на машинном языке. Это особенно необходимо для МК, в которых
ограничен основной объем памяти и требуется высокое быстродействие.
Таким образом, язык АССЕМБЛЕРА обычно составляет основу для создания ПО
МК работающих в системе реального времени, к которым предъявляются высокие
требования, с точки зрения объема памяти и скорости выполнения программ.
К недостаткам АССЕМБЛЕРА следует отнести то, что каждый из существующих
МП имеют свой АССЕМБЛЕР, который отражает специфику его внутренней организации,
что не позволяет осуществить стандартизацию символики.
Программа написанная на языке АССЕМБЛЕРА, состоит из законченных предложений, каждое из которых занимает отдельную строку - оператор. Предложения
языка АССЕМБЛЕРА (табл.4.1) содержат четыре фиксированных поля:
Таблица 4.1.
Мнемонический
Символический
Метка
Комментарий
код операции
адрес - операнд
TIME1:
MVI
A , 07H
; Записать в (А) данные
MOV
С, А
; Переслать данные (С)←(А)
JNZ
TIME1
; Если «0», то перейти на …
Поле метки. Предназначено для записи символического имени данной строки
(предложения, оператора) и после имени ставится двоеточие. Символическое имя
(метка) требуется, когда на данную строку есть ссылка в программе, в какой нибудь другой строке. Обычно в качестве метки допускается применять, начинающуюся с буквы, алфавитно-цифровую последовательность знаков, максимальная длина
которых различна в разных языках АССЕМБЛЕРА и, как правило, не превышает
восьми знаков. В поле метки (см. табл. 4.1) приведено имя TIME1.
Поле операции – мнемонический код операции. В этом поле записывается мнемоническое буквенное обозначение кода операции (мнемокод) приводимое в
системе команд данного микропроцессора.
Поле операнда – символический адрес или операнд. Приводятся участвующие в
операции числа (непосредственные данные) или их символьные имена, указания об
13
источниках и приемниках; в условных и безусловных переходах указывается имя
(метка) предложения (строки) на которую осуществляется переход.
Поля разделяются ограничителями, по которым АССЕМБЛЕР определяет конец
одного и начало следующего поля. Обычно в качестве ограничителей применяются
пробел или табуляция. В приведенном примере (см. табл. 4.1) для разделения полей
строки использованы знаки табуляции. Применение знаков табуляции облегчает
восприятие текста программы при его редактировании и во время отладки. Для
отличия метки от шестнадцатеричного числа в случае, когда оно начинается с буквы, к нему слева приписывается цифра 0. Например, шестнадцатеричное число FCН
в исходном тексте программы на языке АССЕМБЛЕРА должно быть записано 0FCH.
4.1. ПСЕВДОКОМАНДЫ АССЕМБЛЕРА
Команды исходной программы определяют действия над данными в процессе
решения задачи. Псевдокоманды или директивы АССЕМБЛЕРА не связаны с действиями в исходной программе над данными, но они сообщают необходимые
АССЕМБЛЕРУ сведения и используются лишь в процессе трансляции исходной программы на язык кодовых комбинаций (объектную программу). С помощью таких
псевдокоманд транслятору сообщают сведения о том, что нужно зарезервировать
в ОЗУ ячейки (и в каком количестве) для хранения переменных, используемых
в программе с определенными именами или массив переменных и т. д. В таблице
4.2 приведены наиболее употребляемые псевдокоманды АССЕМБЛЕРА.
Таблица 4.2.
Имя
Псевдокоманды
1
Метка
2
ORG
EQU
DELAY
DB
PRO:
DW
PRD:
DS
ADIM:
END
П р и м е р з а п и с и
Код
Операнд
Комментарий
3
4
5
; Команда местоположения исходной
ORG
2000H
; программы, начало с адреса 2000Н.
; Константе с именем DELAY присEQU
0FAH
; ваивается значение 0FAH.
; Однобайтной переменной с именем
DB
0EH
; PRO резервируется ячейка, в кото; рую записывается значение 0EH.
DW
; Двухбайтной переменной с именем
0A57H
; PRD резервируются две ячейки и
; записывается значение 0A57H.
; Массиву с именем ADIM резервиDS
160
; руется 160 ячеек памяти ОЗУ.
END
; Конец программы.
Рассмотрим подробнее наиболее часто используемые псевдокоманды.
Псевдокоманда ORG – адрес начала. В процессе трансляции исходной программы АССЕМБЛЕР использует некоторый свой внутренний счётчик (подобный
счётчику команд МП ), который задает адрес для размещения очередной машинной команды, АССЕМБЛЕР после трансляции очередной команды, автоматически
увеличивает содержимое своего счётчика на единицу. Если необходимо указать
особое место размещения машинной команды в памяти, отличное от текущего
значения счетчика, то необходимо воспользоваться псевдокомандой ORG.
Пример, требуется поместить подпрограмму (метка SUB) в памяти, начиная
с адреса 2500Н:
14
SUB:
ORG
LXI
2500H
B, PRD
RET
; Запись в счетчик команд значения (адрес) 2500Н
; Подпрограмма SUB – первая команда, запись в пару
; регистров двухбайтной переменной с именем PRD
; Возврат к вызывающей программе.
Если в начальном тексте исходной программы отсутствует псевдокоманда ORG,
то в большинстве АССЕМБЛЕРОВ начальный адрес автоматически устанавливается 0.
Псевдокоманда EQU (приравнять) используется для присваивания некоторым
символам, указанным в поле метки, значений (данных, адресов), задаваемых в поле
операндов. Эта команда позволяет программисту писать исходную программу в символической форме без указания фактических числовых значений констант, параметров, адресов и т. п. В некоторых случаях программист, разрабатывая программу, не
знает заранее какие адреса или данные потребуется задать в программе, в связи
с отсутствием данных о конфигурации аппаратных средств используемого МПУ
(МК). Программа при этом может быть написана и отлажена в символической
форме, а фактические данные подставляются в нее позже. Эта команда EQU также
полезна в ситуациях, когда некоторая величина используется в программе
несколько раз. Например, если некоторое значение используется в 10 различных
местах программы, то целесообразно использовать символическое обоз начение,
например COUNT, и определять значение величины COUNT c помощью команды
EQU. Это позволит во время отладки программы, при необходимости изменить
величину COUNT, изменить лишь строку с псевдокомандой EQU, а не вносить
изменения во всех местах программы.
Рассмотрим еще один пример использования псевдокоманды EQU для программы на языке АССЕМБЛЕРА МП К580ВМ80А:
PORTB
PORTB
MVI
OUT
OUT
EQU FX
EQU FY
A, 02H
PORTA
PORTB
; Присвоение фиктивного
; Присвоение фиктивного
; Загрузка в аккумулятор
; Вывод данных в порт
; Вывод данных в порт
адреса порту А ППА
адреса порту В ППА
данных для вывода
А ППА
В ППА.
В приведенном примере показана ситуация, когда программист не зная адресов портов А и В, написал программу с использованием фиктивных адресов
FX, FY. Когда станут известны фактические адреса портов А и В, то их
можно будет записать в псевдокомандах EQU вместо фиктивных адресов.
Псевдокоманда DB или DEFB (определение байта) используется для определения значений элементов данных и для засылки их в соответствующую область
памяти. Эта команда предназначена для образования 8 -битных значений и обычно
применяется для формирования таблиц данных или для установки начальных значений флагов в программе. Например, таблица, состоящая из четырех чисел;
7АН, 37Н, 98Н, ЕВН, должна быть размещена в памяти, начиная с адреса
1А00Н, то в программе необходимо написать следующие псевдокоманды:
ORG
TABLE: DB
1А00H
7AH, 37H, 98H, 0EBH
; Задание адреса таблицы
; Задание значений таблицы.
В псевдокоманде DB элементы таблицы данных отделяются друг от друга запятыми. После ассемблирования этих псевдокоманд, в машинной программе, в заданной области памяти, будут записаны следующие значения: 1А00 – 7А; 1А01 – 37;
1А02 – 98; 1А03 – ЕВ.
15
Псевдокоманда DW или DEFW (определение слова), подобно псевдокоманде DB,
используется для определения значений данных и размещения их в соответствующую область памяти. Для этой команды, элементу данных выделяется 16-ти разрядное слово, то есть два байта - две восьмиразрядные ячейки памяти. В большинстве АССЕМБЛЕРОВ принято хранить младший байт 16-ти разрядного слова в
ячейки памяти с меньшим адресом, а старший байт в следующей ячейке (с большим адресом). Например, таблица, содержащая три числа; 35В7Н, С78ЕН, 2790Н,
должна быть размещена в памяти, начиная с адреса 19А0Н:
ORG
19A0H
DATA:
DW
35B7H, 0C87EH, 2790H
После ассемблирования таблица разместится в памяти следующим образом:
19A0
B7
19A1
35 и т. д.
Псевдокоманда TITLE (заголовок) используется для задания имени объектному
модулю, которое будет печататься в листинге программы. Например, в результате
действия псевдокоманды: TITLE AUTOMATIC NASOS, АССЕМБЛЕР будет начинать
каждую страницу листинга программы с заголовка AUTOMATIC NASOS.
Псевдокоманда PAGE или EJECT (конец страницы) указывает АССЕМБЛЕРУ на
необходимость перехода к следующей странице листинга. Эта команда используется
для размещения исходного текста подпрограмм или модулей на отдельной странице.
Псевдокоманда SPACE (пустая строка) указывает АССЕМБЛЕРУ на необходимость пропуска одной строки в листинге программы.
Псевдокоманда LIS T – распечатать полный текст листинга программы.
Псевдокоманда END – конец исходной программы.
4.2. ТИПЫ АССЕМБЛЕРОВ
Среди существующих разновидностей АССЕМБЛЕРОВ наиболее распространены:
однопроходные АССЕМБЛЕРЫ, двухпроходные АССЕМБЛЕРЫ, МАКРО-АССЕМБЛЕРЫ,
кросс - АССЕМБЛЕРЫ, резидентный АССЕМБЛЕР и МЕТААССЕМБЛЕР.
Двухпроходной ассемблер – первый проход исходной программы используется
для назначения адресов всем меткам программы. При втором проходе производится
трансляция исходной программы в объектный модуль.
Макроассемблер – также двухпроходной АССЕМБЛЕР, который позволяет использовать в исходном тексте программы макрокоманды и макроопределения. Макроопределения – последовательность команд, которым программист дает определённое
имя. Оно необходимо для того, чтобы многократно в программе не писать одну и
ту же последовательность команд, а в тех местах где она используется, программист записывает имя макроопределения.
Например, приводимое ниже макроопределение предназначено для сложения
многобайтных чисел (целых без знака);
ADDN:
MACRO
•
•
•
ENDM
; Задание имени макрокоманды
Команды подпрограммы
сложения макроопределения ADDN
; Конец макроопределения.
Используя макрокоманды программист не должен забывать о том, что макрокоманда может изменить содержимое регистров и состояние флагов МП.
16
Кросс - ассемблеры. Кросс - АССЕМБЛЕР реализуется как АССЕМБЛЕР любого
из рассмотренных выше типов, но он выполняется на одной микроЭВМ (ПЭВМ),
а объектные модули формирует в командах другой микроЭВМ (МК).
Кросс–АССЕМБЛЕРЫ чаще всего пишутся на языках высокого уровня, например на ПАСКАЛЕ; в таком случае кросс-АССЕМБЛЕР становится машинонезависимым. Широкое распространение кросс–АССЕМБЛЕРОВ вызвано тем, что на одной
машине можно выполнять ассемблирование для различных микропроцессоров.
Резидентный ассемблер. Это полная противоположность кросс-АССЕМБЛЕРУ в
том смысле, что он работает в МП-системе для которой предназначены ассемблируемые им исходные программы. Например, микроЭВМ на МП Intel386, написанная
на языке АССЕМБЛЕРА для этого МП программа АССЕМБЛЕРА будет резидентной.
Метаассемблер. Это наиболее мощный из АССЕМБЛЕРОВ, он может использоваться для различных МП. Чтобы воспользоваться МЕТААССЕМБЛЕРОМ, программист
сначала определяет правила ассемблирования для языка АССЕМБЛЕР конкретного МП.
4.3. ХАРАКТЕРИСТИКА АССЕМБЛЕРОВ ДЛЯ ФОРМИРОВАНИЯ ППО
Формирование прикладного программного обеспечения (ППО) МПУ автоматизации технологических процессов и объектов, работающих в реальном масштабе
времени, в основном производится с использованием языка АССЕМБЛЕРА. Вначале,
после разработки и анализа алгоритма автоматизации объекта, программист пишет
исходную программу с использованием языка АССЕМБЛЕРА конкретного МП (принятого стандартного МК). Затем, при ручном ассемблировании, с помощью таблицы
системы команд МП (см. приложение П2, П3) формируют рабочую программу.
При использовании микрокомпьютерных систем проектирования МПУ (ПЭВМ,
отладочных комплексов, инструментальных систем или САПР МПУ), написанную
исходную прикладную программу на языке АССЕМБЛЕРА вводят в ПЭВМ. Затем с
использованием специального программного обеспечения ассемблируют, линкируют
и отлаживают разработанную прикладную программу
В большинстве случаях основным критерием выбора АССЕМБЛЕРА является
скорость трансляции им исходного текста программы. Это вызвано тем, что во
время разработки программы повторное ассемблирование приходится выполнять
десятки раз, поэтому медленно работающие АССЕМБЛЕРЫ вызывают значительные
затраты времени на отладку программ.
4.4. ДЕАССЕМБЛИРОВАНИЕ
Деассемблирование или обратное ассемблирование. Деассемблирование обычно
используется при отладке программ для проверки того, что программа на машинном языке в шестнадцатеричном представлении соответствует именно той программе, которая написана на языке АССЕМБЛЕРА. Отладочные программы и эмуляторы, в большинстве случаев, имеют встроенные обратные АССЕМБЛЕРЫ.
Пример деассемблирования фрагмента машинной программы:
1A00
01
07
FE
LXI
B, 0FE07h
1A03
OB
M1: DCX B
1A04
78
MOV A, B
1A05
C2
03
20
JNZ
M1
В результате деассемблирования текст на языке АССЕМБЛЕРА (мнемокоды)
выводится на экран дисплея, что позволяет найти некоторые ошибки в программе
без обращения к листингу исходной программы.
17

ЛЕКЦИЯ 5
↑@
ЗАПОМИНАЮЩИЕ УСТРОЙСТВА
5.1. ТИПЫ ЗАПОМИНАЮЩИХ УСТРОЙСТВ
Для хранения небольших объемов информации могут использоваться регистры
(РОН, регистры данных). Для хранения больших объемов информации используются
БИС: ОЗУ (оперативное запоминающее устройство); ПЗУ (постоянное запоминающее
устройство); ППЗУ (программируемое ПЗУ); РППЗУ (репрограммируемое ПЗУ).
ОЗУ предназначено для условий, когда необходимо в высоком темпе выбирать и
обновлять информацию. ОЗУ имеет три режима: чтение, запись, хранение. Время
считывания, записи информации составляет доли μкс. Обычно ОЗУ используется
для хранения данных (исходных, конечных данных, промежуточного результата).
ПЗУ служит для хранения однажды записанной в него информации, не нарушаемой при отключении питания. В ПЗУ предусмотренно два режима работы: чтение
и хранение информации (режим записи не предусматривается). Используется ПЗУ
для хранения многократно используемых программ (память программ).
Запоминающие устройства (ЗУ) содержат N ячеек, в которых хранится слово с
определенным числом разрядов n. Ячейки последовательно нумеруются двоичными
числами, которые называются адресами. Количество информации в ЗУ определяет его
емкость M=N n бит. Например, M = 1Кбайт = 1024  8 = 8192 бит, организация 1024 х 8.
5.2. КЛАССИФИКАЦИЯ ЗАПОМИНАЮЩИХ УСТРОЙСТВ
Приведенная выше классификация отражает деление микросхем ЗУ по их функциональному назначению.
По способу обращения к памяти все ЗУ делятся на адресные и ассоциативные.
Большинство видов ЗУ (см. табл. 5.1), кроме вида АЗУ, относятся к адресным ЗУ с
произвольной выборкой, архитектура построения которых на протяжении более 10 лет
остается практически неизменной. В адресных ЗУ обращение к элементам памяти
производится по их физическим координатам, задаваемым внешним двоичным кодом адресом. Адресные ЗУ бывают с произвольным обращением к ячейкам памяти, и с
последовательным обращением, где выборка элементов памяти возможна только в
порядке возрастания или убывания адресов. Номенклатура ассоциативных ЗУ (см табл.
5.1) в подклассе микросхем ограничена в связи с неустановившейся архитектурой.
По способу хранения информации ЗУ бывают статические и динамические
В динамических ЗУ для хранения информации используются инерционные свойства
реактивных элементов (в полупроводниковых ЗУ – конденсаторов), что требует периодического восстановления (регенерации) состояния элементов памяти в процессе
хранения информации. В современных конструкциях ЗУ регенерация совмещается с
обращением к элементу памяти. Разработаны ЗУ с динамическим накопителем и
встроенной системой регенерации и синхронизации – квазистатические ЗУ. Внешние
сигналы управления в этом случае такие же, как у полностью статических ЗУ.
Следует отметить, что по уровням входных и выходных сигналов ЗУ любого типа
изготовляются совместимыми с логическими элементами одной из трех стандартных
систем: ЭСЛ, ТТЛ, КМОП. Как правило, ЗУ на основе ТТЛ и ЭСЛ имеют одинаковую
схему. Запоминающие устройства на основе КМОП совместимы с КМОП логическими
элементами, а по выходу – с ТТЛ логическими элементами.
18
По внешним сигналам все типы РПЗУ совместимы с логическими элементами на
основе ТТЛ
Таблица 5.1. Классификация запоминающих устройств
Наименование вида изделия
Сокращенное
Полное
ОтечесПо
твенное ГОСТ
Матрицы оперативных
запоминающих
устройств.
ОЗУ
RAM
ПЗУ
ROM
ППЗУ
PROM
РПЗУ
EPROM
ПЗУ с ультрафиолетовым стиранием и
электрической записью информации
РПЗУУф
EPROM
Ассоциативные ЗУ
АЗУ
CAM
Матрицы постоянных
запоминающих
устройств.
ПЗУ с возможностью
однократного электрического программирования
ПЗУ с возможностью
многократного электрического прогшраммирования
Краткое описание изделия
Матрица активных элементов памяти, обьединенная со схемами управления, обеспечивающая режимы записи, хранения и считывания
двоичной информации.
Матрица пассивных элементов памяти со схемами управления, предназначенная для воспроизведения неизменной информации, заносимой
в матрицу при изготовлении
Отличаются от ПЗУ тем, что позволяют в
процессе применения микросхемы однократно
изменить состояние запоминающей матрицы
электрическим путем по заданной программе.
ПЗУ, предназначенные для долговременного
хранения и воспроизведения записанной в
процессе эксплуатации информации. Допускает многократную электрическую перезапись
информации – до 10000 раз.
От РПЗУ отличаются только способом стирания информации – с помощью ультрафиолетового освещения, для чего в крышке корпуса
имеется окно со специальным стеклом.
Безадресные ЗУ: поиск и выборка информации
осуществляется по содержанию произвольного
количества разрядов, хранящихся в АЗУ чисел,
независимо от физических координат ячеек
памяти.
Прочие ЗУ
На рис. 5.1 показана БИС памяти К573РФ5 – РППЗУ (EPROM) с ультрафиолетовым стиранием, а в табл. 5.2 назначение выводов БИС.
Таблица 5.3.
A0
A1
A2
A3
A4
A5
A6
A7
A8
A9
A10
CS
CE0
Upr
EPROM
DI 0
DI 1
DI 2
DI 3
DI 4
DI 5
DI 6
DI 7
Назначение
Обозначение
Адресный вход
A0…А10
Вход-выход данных
DI 0…DI 7
Выбор микросхемы
CS
Разрешения по выходу
CEO
Напряжение программирования
Upr
Напряжение питания
Ucc
Общий
GND
Общий
GND
Рис. 5.1. БИС памяти К573РФ5
19
ЛЕКЦИЯ 6

↑@
ПРОГРАММИРУЕМЫЙ ПАРАЛЛЕЛЬНЫЙ ИНТЕРФЕЙС К580BB55
Программируемый параллельный адаптер/интерфейс (ППА/ППИ) серии К580
(İ8055) может быть использован для реализации программно управляемого обмена
(синхронного или асинхронного по прерыванию) между МП и различными внешними
устройствами, такими как контактные (дискретные) датчики, светоиндикаторы, элементы управления исполнительными механизмами объекта автоматизации, клавиатура.
Техническая характеристика
Технология..............................................................................…
Максимальная тактовая частота, МГц...................................
Напряжение питания, В ..........................................................
Нагрузочная способность......................................................…
Потребляемая мощность, мвт................................................ .
n-МОП
≤2
+5
1 ТТЛ выход
350
На рис. 6. 1 приведена схема подключения ППА (PPI) к МП системе (микроконтроллеру – МК или МП устройству – МПУ) и к внешним устройствам, а также
условное обозначение ППА на электрической схеме. Функциональное назначение
выводов приведено в таблице 6. 1.
Контактные датчики
(тумблера)
Адресный
дешифратор САВ
П П А К580ВВ55
КД 0
КД 2
CS
8
D0
PPI
PВ0
●
●
●
●
●
PВ7
D7
PА0
A0
A1
8
8
КД 7
●
●
●
●
●
●
Светодиоды СД
8
УСО 8
VD0
●
PА7
●
WR
●
RD
PC0
Reset
●
●
●
8
8
●
VD7
PC7
ША ШУ ШД
МП система
Дискретные сигналы
управления
Внешние устройства
Рис. 6. 1. Схема подключения ППА к МП системе и к внешним устройствам
В ППА входит схема управления вводом-выводом и двунаправленный буфер
данных, предназначенный для подключения внутренней шины ППА к шине данных
20
(ШД) МП системы. ППА также содержит три 8-разрядных порта (A, B и C), которые предназначены для организации обмена между МП и внешними устройствами.
Порт А и порт В состоит из выходного и входного 8-разрядного синхронизируемого регистра и двунаправленных шинных формирователей. Порт С состоит из
двух входных и двух выходных 4-разрядных регистров, двух двунаправленных
шинных формирователей и двух схем управления разрядами порта С. Порт А и 4разрядный порт С (старшие разряды) со схемой управления составляют независимую группу А и могут рассматриваться как независимый 12-разрядный порт.
В свою очередь, такую же группу (группу В) образуют порт В, четырёхразрядный
порт С (младшие разряды) и схема управления группой В. Каждая схема управления группой дешифрирует информацию, поступающую из регистра управляющего
слова (РУС) ППА и вырабатывает сигналы для управления своей группой.
Таблица 6. 1. Функциональное назначение выводов
Обозначение
Тип вывода
Функциональное назначение
GND
D0 - D7
RESET
--Выходы-входы с высокоимпедансным состоянием
Вход
CS
»
RD
»
WR
»
А0, А1
Входы
РА7– РА0
РВ7 - РВ0
РС7 – РС0
Входы – выходы
Входы – выходы
Входы – выходы
Общий.
Шина данных (ШД). Выводы D0 - D7 подключаются к ШД микропроцессорной системы.
Сброс. Сигнал высокого уровня устанавливает, в
исходное состояние РУС. После сброса выводы.
портов настраиваются на ввод (режим 0).
Выбор микросхемы. Сигнал уровнем 0 подключает выводы D0 - D7 ППА к ШД МП системы.
Чтение. По сигналу с уровнем 1, содержимое входного регистра одного из портов выводится на ШД.
Запись. По сигналу низкого уровня информация
с ШД системы записывается в выходной регистр
одного из портов или РУС.
Выбор порта или РУС. На входы А0, А1 устанавливается адрес, по которому происходит обращение к одному из трёх портов или к РУС.
Порт А
Порт В
Порт С
В табл. 6. 2 показаны все возможные варианты входных сигналов ППА, обеспечивающих выбор необходимого порта или РУС и соответствующее направление
передачи информации: чтение – от ППА в МП или запись – от МП в ППА.
Настройку ППА производят программным путём с использованием управляющего слова, которое засылается командой OUT из МП в РУС ППА. Группа А ППА
может настраиваться на один из трёх режимов: 0 – основной режим ввода-вывода
(однонаправленный обмен); 1 – режим ввода-вывода (однонаправленный асинхронный
обмен по прерыванию); 2 – режим двунаправленной шины(двунаправленный асинхронный обмен по прерыванию). Группа В может настраиваться на режим 0 или режим 1.
Структура управляющего слова изображена на рис. 6. 2. В зависимости от информации в старшем разряде, управляющие слова могут использоваться для следующих
целей: настройки ППА на требуемый режим (D7 = 1, рис. 6. 2, а) или установки
разрядов порта С (D7 = 0, рис. 6. 2, б). При этом любой из восьми битов порта С
может быть сброшен в «0» или установлен в «1» по команде OUT . Для этого из
аккумулятора МП в РУС пересылается управляющее слово с признаком D7 = .0.
21
CS
0
0
0
0
0
0
1
0
Таблица 6. 2. Входные выходные сигналы ППА
RD
WR
A1
A0
Направление передачи информации
Ввод (чтение)
0
1
0
0
PA  DB
0
1
0
1
PB  DB
0
1
1
0
PC  DB
Вывод (запись)
1
0
0
0
DB  PA
1
0
1
0
DB  PC
1
0
1
1
DB  регистр управляющего слова
X
0
X
1
D7 D6 D5 D4 D3 D2 D1 D0
D7 D6 D5 D4 D3 D2 D1 D0
X
1
X
1
Группа В
Порт С (РС 0 - 3)
1 - ввод
0 - вывод
Порт В
1 - ввод
0 - вывод
Выбор режима
0 - режим 0
1 - режим 1
Группа А
Порт С (РС4 -7)
1 - ввод
0 - вывод
Порт А
1 - ввод
0 - вывод
Выбор режима
00 - режим 0
01 - режим 1
1Х - режим 2
1 -управляющее
слово
Высокоимпедансное состояние
Запрещённая комбинация
D7 D6 D5 D4 D3 D2 D1 D0
D7 D6 D5 D4 D3 D2 D1 D0
Произвольные
значения
Значение,
записываемое
в разряд
Выбор разряда
0 1 0 1 0 1
0 0 1 1 0 0
0 0 0 0 1 1
0 1
1 1
1 1
0 1 2
6 7
3 4
5
0 - установка разряда
б)
Рис. 6. 2. Структура управляющего
слова ППА
а)
Режим 0. В этом режиме по сигналу, подаваемому на вход RD или WR (соответственно команды IN или OUT) данные читаются или записываются из периферии
(в периферию) через порт, выбранный с помощью сигналов на входах А0, А1
(адресов портов А, В., С или РУС). При выводе информации (дискретных сигналов)
через порт, её значение запоминается в регистрах портов до тех пор, пока не
поступят новые значения информации в порты ППА. При вводе информации через
порты ППА её необходимо поддерживать до тех пор, пока МП не прочтёт эту
информацию.
Пример 1. Необходимо считать информацию с порта В (положение контактных
датчиков КД0 … КД7), затем определить значение КД3, если оно равно «1» (датчик
разомкнут), то продолжать считывание до тех пор, пока значение КД3 не станет
22
равным «0» (датчик замкнут). После установления значения КД3 равным «0»,
включить светодиод VD7 (управляющий сигнал).
Вначале определяем УСИ ППА в соответствии с поставленной задачей (порт А
вывод, порт В ввод, режим 0) и структурой управляющего слова (рис. 6.2.). Код УСИ
будет иметь значение 92Н. Адрес регистра управляющего слова ППА - 0F3H, порта
А - 0F0Н, порта В - 0F1H; ППА включен в схему МПУ с МП К580ВМ80А (I8085).
Для задания требуемого режима, необходимо загрузить в аккумулятор (А) МП
УСИ (настройка ППА на заданный режим – код 92Н) и по команде OUT занести
его в РУС ППА:
MVI A, 92Н ; (10010011B) Загрузка в (А) кода УСИ.
OUT 0F3H ; Запись кода УСИ в РУС ППА.
Затем, с помощью команды IN, считываем информацию с порта В в аккумулятор (А) МП:
Lab1:
IN 0F1H ; Считываем информацию с порта В.
Для определения значения (положения) датчика КД3, с помощью логической
операции "И", производим маскирование входных данных (А); значение маски 08Н шестнадцатеричное представление датчика КД3 при его значении равном «1»:
ANI 08H ; Логическая операция "И".
После выполнения команды маскирования, результат в (А) МП будет равном 0
при замкнутом контакте датчике (входном сигнале – КД3) и «1» при разомкнутом
контакте датчика КД3. Затем используем команду условного перехода – по значению
флага нуля (JNZ) регистра признаков МП, определяем положение контакта КД3:
JNZ Lab1 ; если результат в (А) равен 1 (контакт
;датчика КД3 разомкнут), то переход на метку Lab1 (адрес), но если результат в
(А) равен 0 (контакт датчика замкнут), то продолжается последовательное
выполнение команд – включение светодиода VD7.
Для включения светодиода VD7 необходимо загрузить в аккумулятор МП его
код (двоичная единица в 7 – разряде – 80Н) и по команде OUT записать его в
регистр порта А ППА:
MVI A, 80Н ; (10000000B)
OUT 0F0H ; Код вкл. светодиода записываем в порт А.
Время выполнения команд (подпрограммы) от момента замыкания контакта
датчика КД3 до включения светодиода VD7 определится: t пп = 1 / Тт • ∑ nT,
где Тт - период тактовой частоты МП, при тактовой частоте (CLK) МП равной
fт = 2МГц, значение Тт = 1 / fт = (1 / 2 • 106) = 0,5 мкс;
∑ nT - суммарное число тактов затрачиваемое на выполнение команд подпрограммы (для команды IN – nT = 10; ANI – nT = 7; JNZ – nT = 10; MVI – nT = 10;
OUT – nT = 10), равно 47, тогда t пп = 1 / Тт • ∑ n T = 0.5 • 47 = 23,5 мкс.
Пример 2. Условия задачи те же, что и в примере 1, но в качестве МПУ
используется однокристальный микроконтроллер (ОМК) К1816ВЕ51 (I8051) с RISС
архитектурой и включёным в его схему модифицированым ППА. Контактные
датчики КД0 ... КД7 подключены к порту Р1, а светодиоды VD0 …VD7 к порту Р2
ОМК. Инициализация ППА в данном примере не производится, так как по
команде IN или OUT ППА автоматически переключается на заданный режим.
Программа реализации поставленной задачи (процедуры) для ОМК:
Lab1: JB
P1.3, Lab1 ; Ожидание замыкания контактов датчика КД3, если
; контакт не замкнут, то переход на метку Lab1 (nT = 11)
SETB P2.7 ; Установка бита Р2.7 в 1, т. е. вкл. светодиода VD7 (nT = 4).
При fт = 1МГц , значение Тт = 1 мкс, тогда время выполнения подпрограммы
t пп = 1 / Тт • ∑ nT = 1 • 15 = 15 мкс,
23
ЛЕКЦИЯ 7

↑@
ОРГАНИЗАЦИЯ ПРОГРАММНЫХ ВРЕМЕННЫХ ЗАДЕРЖЕК
Программная реализация временной задержки использует метод программных циклов, то есть в некоторый регистр РОН загружается число X, которое
затем в каждом проходе цикла уменьшается на 1. Так продолжается до тех пор,
пока содержимое регистра не станет равным нулю – выход из программного
цикла. Время задержки при этом определяется числом X записанным в регистр,
то есть временем выполнения МП команд программного цикла. Схема алгоритма и подпрограмма такой задержки приведена /1, стр. 60; 2, стр. 236/. Самая
длинная задержка вызывается записью числа Х  00Н в регистр РОН.
Подпрограмма TIME – MVI B, 00; M1 – DCR B; JNZ M1; RET. При первом
прогоне по петле это значение уменьшается на 1 и становится равным 255 (FFН),
то есть это равносильно записи числа Х = 256. Следовательно, максимальная
задержка равна ТЗАД. МАКС = X • TП.Ц + ТП.0 = (256 - 1)  7 +14 = 1797 мкс = 0,0018 c,
где TП.Ц – время прохода одного повторяемого цикла, ТП.0 – время однократного
прохода всех команд временной задержки.
Значение числа Х, в зависимости от заданной (требуемой) задержки (ТЗАД)
определится по формуле
Х = [Тзад - (Тп.о / Тп.ц)] + 1
Для получения более длительной задержки целесообразно применять команды воздействующие на пару регистров РОН, тогда ТЗАД. МАКС = (65536 - 1) 
12 + 20,5 = 0,7864505 с.
Задержки весьма большой длительности можно получить путем использования n - регистров с внешней и внутренней петлями задержки /1, стр. 60; 2, стр.
210/, при этом время задержки определяется по формуле,
ТЗАД = (ХВ.Ц  ХВН.Ц - 1)  ТП.Ц.ВН + [(ХВ.Ц - 1) ТП.Ц.В+ ТП.О],
где ХВ.Ц ХВН.Ц – числа записываемые в регистры внешнего и внутреннего
циклов;
ТП.Ц.ВН, ТП.Ц.В – время одного прохода, соответственно внутреннего и внешнего цикла;
ТП.О – время однократного прохода всех команд временной задержки,
тогда ТЗАД. МАКС = (256  65536 - 1) 12 + [(256 -1)  11 + 41] = 201,356866 c.
Требуемое значение ХВН.Ц - числа записываемого в пару регистров (РОН)
внутреннего цикла, определяется по формуле
Х вн.ц = Т зад.п.ц - Т п.ц.в / Т п.ц.вн,
где Т ЗАД.П.Ц – время задержки при полном проходе требуемого внутреннего
цикла и однократном внешнем цикле, которое определяется
Т зад + Т п.о
 Т зад.макс = 0,786 с
Т зад.п.ц =
Х в.ц
24
Подставив в формулу требуемое значение ТЗАД, ранее вычисленное ТП.О и
подобрав значение ХВ.Ц (целое число) таким образом, чтобы полученная величина ТЗАД.П.Ц удовлетворяла условию ТЗАД.П.Ц  ТЗАД.МАКС = 0,786 с.
Для реализации подпрограмм задержек с точностью 0,5мкс (корректировки
ТП.Ц.ВН, ТП.Ц.В и ТП.О) следует вставлять команды пустых циклов NOP.
Алгоритм временной задержки, с использованием внешнего и внутреннего
циклов и заданием значений Х вн.ц, Х в.ц (Т зад), перед каждым обращением
к подпрограмме TIME показан на рис. 7.1.
Приведенный метод временных задержек с использованием программных
циклов, включает непрерывное использование для этой цели МП, отвлекая его от
исполнения основной программы, тем самым, снижая производительность МК.
Следовательно, применение этого метода целесообразно для линейных программ.
Более эффективный метод получения временных задержек любой длительности, является использование аппаратной организации – применение в схеме
микроконтроллера программируемого таймера (ПТ К580ВИ53), изучение и
исследование которого приведено в лекции 9 и лабораторной работе №11.
Начало
(HL)  (BC)

Сохранение данных
РОН основной
программы
(BC) = [(BC) -1]
ССП  SP
(HL)  SP
НЕТ
(BC) = 0
Задание параметров
задержки подпро-
граммы TIME
Тзад.вн1  (HL)
Тзад.в1  (D)
(D) = [(D) - 1]
НЕТ
(D) = 0
Восстановление
данных РОН и ССП
ССП  SP
(HL)  SP
CALL TIME
Возврат в основную
программу

RETURN
Конец

Рисунок 7.1 - Алгоритм унифицированный временной задержки TIME
ЛИТЕРАТУРА
1. Инструкция к «Микролаб». Учебн. Пособие.- Донецк.: ДонНТУ, 1989
25
ЛЕКЦИЯ 8

↑@
ПРОГРАММИРУЕМЫЙ КОНТРОЛЛЕР КЛАВИАТУРЫ И ДИСПЛЕЯ К580BД79
Программируемый интерфейс клавиатуры и индикации (ККД) К580ВД79
(К580ВВ79) предназначен для реализации обмена информацией между МП и матрицей клавиш (датчиков) и индикацией (8 или 16 семисегментных светоиндикаторов).
ККД может выполнять следующие функции: ввод информации (по прерыванию) в МП
систему, с помощью матрицы клавиш или датчиков; вывод информации на 8 – или
16-разрядную алфавитно-цифровую индикацию.
Технические характеристики
Технология ………………………………………………………n-МОП
Тактовая частота, МГц ………………………………………….2
Время, мс:
сканирование клавиатуры …………………………………... 5, 12
задержки для устранения дребезга контактов клавиш …….10, 24
сканирования индикации …………………………………… 10, 24
Напряжение питания, В:………………………………………...5
Нагрузочная способность ……………………………………….1 ТТЛ вход
На рис. 8. 1 приведена схема подключения ККД к МП системе и к внешним
устройствам, а также условное обозначение ККД на электрической схеме.
Функциональное назначение выводов приведено в таблице 8. 1.
Адресный
дешифратор САВ
К К Д К580ВД79
D0
●
●
●
D7
R7
S0
WR
RD
C/D
A0
IRQ
CLK
RESET
S3
BD
0UTA3
0UTA2
0UTA1
0UTA0
МАТРИЦА
КЛАВИШ
(ДАТЧИКОВ)
8
16
4
Дешифратор
Дешифратор
УСО
8
ККД SHIFT
CNTL
STB
R0
Шинный
формирователь
CS
16
4
ДИСПЛЕЙ
0UTB3
0UTB2
0UTB1
0UTB0
4
(СЕМИСЕГМЕНТНЫЕ
СВЕТОИНДИКАТОРЫ)
BD
ША ШУ ШД
Рис. 8. 1. Схема подключения ККД к МП
OU
TA
3
OU и
системе
TA
2
OU
TA
1
OU
к внешним устройствам
26
В ККД можно выделит три основных блока: блок управления; блок интерфейса индикации; блок интерфейса клавиатуры.
Таблица. 8. 1. Назначение выводов БИС К580ВД79
Обозначение
Тип вывода
Функциональное назначение
1
2
-
3
Входы
Входы возврата. Служат для приема сигналов, поступающих с матрицы клавиатуры или датчиков.
Верхний /нижний регистр. 1. В режиме последовательного
опроса клавиатуры - признак кода КОИ7 (КОИ8). 2. В режимах стробируемого ввода - импульс строба, по которому
код, поступающий на входы R7 - R0, записывается в многорежимное ОЗУ клавиатуры (датчиков).
Запрос на прерывание. В случае поступления в многорежимное ОЗУ клавиатуры (датчиков) кодов, при сканировании клавиатуры (с клавиатуры) на этом выходе устанавливается сигнал высокого уровня При каждом считывании информации из многорежимном ОЗУ сигнал на этом
выходе изменяет свое значение с высокого уровня на
низкий, а затем, если ОЗУ не пусто, обратно становится
высоким. В режимах последовательного опроса датчиков,
сигнал на этом входе появляется в том случае, если изменяется состояние хотя бы одного датчика (из нулевого
состояния в единичное).
+5 В
GND
D7 - D0
CS
RD
WR
A0
CLK
RESET
S3 - S0
BD
OUTA3OUTA0,
OUTB3OUTB0
Питание
Общий
Входы-выходы с Шина данных. Выводы подключаются к ШД МП
высокоимпедан- системы и служат для обмена управляющими словами и
сным состоянием данными между МП и ККД.
Выбор микросхемы. Сигнал низкого уровня разрешает
Вход
работу ККД.
Чтение. По сигналу низкого уровня на этом входе, осу"
ществляется чтение данных и слова состояния из ККД.
Запись.. По сигналу низкого уровня на этом входе, осуще"
ствляется запись управляющих слов и данных в ККД.
Команда/данные. При записи управляющего слова или
"
чтение информации о состоянии из ККД необходим сигнал
высокого уровня, а при записи и чтении данных – низкого.
Синхросерия. На этот вход подаются синхросигналы, с
"
выхода F1 (ТТЛ) генератора тактовых сигналов.
Начальная установка (сброс).
"
Выходы
Сканирование. Сигналы, используются для сканирования
матрицы клавиатуры (датчиков) и индикации.
Выход
Гашение индикации. Сигнал низкого уровня на этом
входе – запрет записи в ОЗУ и гашение индикации.
Выходы
Коды символов, снимаемые с этих выходов, поступают на
индикацию.
Вход
Выход
27
Блок управления. В состав блока входят: буфер шины данных; схема управления
вводом-выводом; схема управления и синхронизации; счетчик сканирования.
Буфер шины данных. Через буфер шины данных, выводы которого подключаются
к ШД системы, происходит обмен информацией между МП и ККД – запись
управляющих слов и данных и чтение из ККД слова состояния и содержимого
ОЗУ индикации и многорежимного ОЗУ клавиатуры (датчиков).
Схема управления вводом-выводом. С помощью управляющих сигналов, подаваемых на входы СS, RD, WR, А0 этой схемы , МП управляет обменом с ККД.
Схема управления и синхронизации. В регистры схемы управления и синхронизации
МП загружает управляющие слова, затем происходит их дешифрация, в результате
чего вырабатываются сигналы, которые управляют функционированием всех узлов
ККД. Кроме того, с помощью 5-разрядного регистра коэффициента пересчета, вычитающего 10-разрядного счетчика с предустановкой, схема управления и синхронизации делит частоту синхросерии, поступающий на вход ККД, на Kпс (Кпс = 1 – 1FH –
число, записываемое в регистр коэффициента пересчета), так как внутренняя частота
синхронизации ККД должна быть не более 100 Кгц.
Схема управления и синхронизации вырабатывает также серию сигналов, подаваемую на выход BD, для гашения индикации во время смены символов на ней.
Счетчик сканирования. На выходах счетчика сканирования формируются коды,
используемые для опроса матрицы клавиатуры (датчиков) и индикации.
Блок интерфейса индикации. В состав блока входит ОЗУ индикации и выходные регистры блока интерфейса индикации.
ОЗУ индикации. Запоминающее устройство с произвольным доступом, емкостью
16 х 8-разрядных слов, предназначено для хранения информации, которая может
отображаться на 8 или 16-разрядную индикацию. ОЗУ индикации, состоит из двух
независимых частей по 16 х 4-разрядных слов каждая, причем информация из каждой
части может выдаваться на индикацию независимо. После загрузки в ККД управляющих слов чтения или записи, содержимое ОЗУ индикации может быть прочитано
и изменено с помощью соответствующих команд МП IN или OUT.
Начальная установка и настройка (инициализация) ККД. При вкл. питания
или подачи на вход RESET сигнала уровнем "1" длительностью 6ТCLK обнуляются:
счётчик сканирования, регистр адреса ОЗУ индикации, регистр ОЗУ клавиатуры,
двоичный 10-разрядный счётчик – в регистр коэффициента пересчёта которого
записывается значение 31 (1FН). Кроме того, в результате этого аппаратного
сброса на выходах IRQ, OUTA3 - OUTA0, OUTB3 - OUTB0 и BD устанавливаются
сигналы низкого уровня. В результате аппаратного сброса устанавливается режим
работы ККД по умолчанию: режим работы клавиатуры 3 – последовательный опрос
клавиатуры без дешифрирования счётчика сканирования с запретом ввода кодов
двух и более одновременно нажатых клавиш; режим индикации 2 – вывод кодов
на 8-разрядную индикацию с размещением их слева на право. При аппаратном
сбросе содержимое ячеек ОЗУ индикации и ОЗУ клавиатуры не обнуляется.
При необходимости настройки других режимов работы ККД (режимов работы
интерфейса клавиатуры 1 …7 и режимов интерфейса индикации 1…4), необходимо
произвести настройку (инициализацию) ККД на требуемый режим в следующей
последовательности:
1. Выполнить программный сброс. После загрузки управляющего слова (УС)
"Сброс", осуществляется обнуление функциональных элементов ККД также как и при
аппаратном сбросе (RESET), но только при программном сбросе не изменяется содер28
жимое регистра коэффициента пересчёта, а также можно произвести начальную
установку ОЗУ индикации – запись в его ячейки нулей, единиц или 00100000
(разряды D2 и D3), или выдать эти значения на вывод индикации (при
соответствующем значении разряда D4 = 0 / 1 управляющего слова "Сброс". Более
подробное описание; устройства, режимов работы, форматов управляющих слов
приведено /К. Г. Самофалов и др. Микропроцессоры. - Киев.: техника, 1986; с. 81 - 92/.
2. Настройка ККД – загрузка управляющего слова (УС) "Установка режима
работы интерфейса клавиатуры и индикации". Код УС определяем в соответствии
с форматом этого УС и принятыми режимами работы клавиатуры и индикации.
Пример программирование интерфейса К580ВД79 (К580ВВ79). Внешние устройства подключённые к интерфейсу – клавиатура 8 х 8 и 8-разрядный алфавитноцифровой дисплей (восемь семисегментных светоиндикаторов).
Принимаем режим работы клавиатуры 3, режим индикации 2.
Частота синхроимпульсов поступающих на вход CLK ККД (Fclk = 2 МГц = F1)
от ГТИ. Адрес регистра ККД чтения и записи данных – Е2Н (А0 = 0), а адрес
записи управляющих слов и чтения информации о состоянии ККД – Е3Н (А0 = 1).
Необходимо вывести на восьмой светоиндикатор код КОИ-7 (ASCII) латинской
буквы А, то есть записать этот код в ОЗУ индикации ККД), на седьмой индикатор
вывести букву А (семисегментный код буквы А), а на остальные светоиндикаторы
вывести 0.
В соответствии с заданными условиями, с использованием формата команд
управляющих слов ККД определим код УС: "Сброс", для наших условий он равен
D1H (11010001В); "Программирование синхронизации", коэффициент пересчёта принимаем равным Кпс = 14Н = 00010100В = 20 (рабочая частота ККД определится, Fккд =
Fclk / Кпс = 2 х 106 / 20 = 100 Кгц), тогда код УС будет равен 34Н; "Установка
режима работы интерфейса клавиатуры и индикации", для наших условий он
равен 00Н.
Код КОИ-7 (ASCII) латинской буквы А равен 41Н, а семисегментный код
буквы А равен 77Н. Правило и порядок определения кодов приведены в лаб. раб. 6.
Программа реализации заданной процедуры;
MVI A, D1H
OUT Е3Н
MVI A, 34H
OUT Е3Н
MVI A, 00H
OUT Е3Н
MVI A, 86H
OUT Е3Н
MVI
OUT
MVI
OUT
END
A, 77Н
Е2Н
A, 41H
Е2Н
; Загрузка управляющего слова "Сброс", с записью во
; все светоиндикаторы значения 0.
; Загрузка УС "Программирование синхронизации".
; Загрузка УС "Режим работы интерфейса…"
; Загрузка УС "Запись в ОЗУ индикации" – установка
; номера светоиндикатора в который будет произве; дена запись кода (для наших условий это седь; мой светоиндикатор).
; Вывод на восьмой светоиндикатор семисегментный
; код буквы А.
; Вывод на восьмой светоиндикатор код КОИ7 буквы
; А, при этом ранее выведенный семисегментный
; код буквы А сместится вправо, то есть в седьмой
; светоиндикатор
29
ЛЕКЦИЯ 9

↑@
ПРОГРАММИРУЕМЫЙ ТАЙМЕР К580ВИ53
Программируемый таймер используется для задания временных интервалов в
микропроцессорных системах и может применяться как одно вибратор с программируемой длительностью импульсов, программируемый делитель частоты и счётчик
внешних событий.
Технические характеристики
Технология ..................………………………………………n-МОП
Тактовая частота сигналов на входы CLC, МГц ………≤ 2
Потребляемая мощность, Вт ……………………………… ≤ 1
Нагрузочная способность ...........…………………………..1 ТТЛ вход
На рис. 9.1 показано условное обозначение таймера на принципиальной электрической схеме. В табл. 9.1 приведено функциональное назначение выводов.
В состав таймера входят: буфер шины данных; схема управления вводом-выводом;
три канала, каждый из которых содержит рег. управляющего слова (РУС); схему управления каналом; буфер; 16-разрядный счётчик – работающий на вычитание (рис. 9.2).
Рис. 9.1. Условное
обозначение таймера
К580ВИ53
РТ
D0
D1
D2
D3
D4
D5
D6
D7
A0
A1
CS
WR
RD
CLK0
GATE
CLK1
GATE
CLK2
GATE
OUT0
OUT1
OUT2
Таблица 9.1.
Обозначение
Тип вывода
GND
+5В
—
—
OUT0 - OUT2
Выходы
Функциональное
назначение
Общий
Питание
Входы-выходы с Данные. Выводы 1 - 8
D7—DO
высокоимпеданс- подключаются к шине
ным состоянием
данных системы
Вход
Выбор микросхемы
CS
Запись
"
WR
Чтение
"
RD
Выбор РУС или
А0, А1
Входы
канала счётчика
Синхровходы. Подаюются синхроимпульсы,
CLC0 - CLC2
"
подсчёт которых выполняется счётчиками
Управляющие входы
GATE0-GATE2
"
счётчиков 0 — 2
Выходы счётчиков
Программирование таймера. Каждый из счётчиков в зависимости от настройки
может быть либо двоичным, либо десятичным, а также работать в одном из шести
режимов — 0, 1, 2, 3, 4, 5. Для программирования режима работы каждого из счетчиков необходимо командой OUT заслать из МП по ШД код - управляющее слово
инициализации (настройки) в РУС таймера. При этом на входы таймера АО и А1
30
Таблица 9.2.
CS WR RD А1 АО
Направление передачи
информации
0
0
1
0
0
D7 - DO
счётчик 0
0
0
1
0
1 D7 - DO
счётчик 1
0
0
1
1
0 D7 - DO
счётчик 2
0
0
1
1
1 D7 - DO
0
1
0
0
0
Счетчик 0
D7—DO
0
1
0
0
1
Счетчик 1
D7—DO
0
1
0
1
0
Х
0
1
0
1
1
Х
1
0
0
0
Счетчик 2
D7—DO
D7 - DO - в высокоим1
педансном состоянии
D7 - DO - в высокоимХ
педансном состоянии
D7 - DO - в высокоим0
педансном состоянии
РУС
0
должны быть поданы сигналы
высокого уровня, а на входы CS
и WR - разрешающие сигналы
низкого уровня (см. табл. 9. 2).
Запись управляющих слов для
различных счётчиков можно
производить в любой последовательности. В зависимости от
комбинаций управляющих сигналов на входах CS, WR, RD,
АО, А1, различные устройства
таймера подключаются к ШД в
соответствии с табл. 9.2, из которой видно, что записывать
информацию можно в счётчики
и РУС, а считывать - только из
счётчиков.
Структура управляющего слова инициализации (УСИ), изображена на рис. 9.3.
Рис. 9.2. Структурная схема таймера К580ВИ53
D0-D7
Буфер
данных
Канал 0
РУС
Канал 1
РУС
CS
WR
RD
A0
A1
Схема
управления
чтением
записью
Канал 2
РУС
CLС0
Схема
управления
ния
Схема
управления
Буферный
регистр
Счётчик
0
Буферный
регистр
Счётчик
1
Схема
управления
Буферный
регистр
Счётчик
2
GATE0
OUT0
CLС1
GATE1
OUT1
CLС2
GATE0
OUT0
Вслед за УСИ с помощью команды OUT в счётчик таймера заносится начальное
содержимое, два или один байт и одновременно запускается соответствующий
канал таймера.
Для функционирования таймера на вход CLC каждого из счётчиков поступают
тактовые импульсы, а на вход GATE - управляющие сигналы, запрещающие или
разрешающие счёт. Уровень сигнала на выходе OUT таймера изменяется в зависимости от записанной в счётчик информации и сигнала (изменения сигнала) на входе
GATE. Режимы работы таймера можно условно разбить на три группы: программируемый одновибратор (режимы 0 и 1); делитель частот (режимы 2 и 3); счётчик
событий (режимы 4 и 5).
31
Код
Счётчик
00
0
01
1
10
2
11 Запрещенная комбинация
D7 D6 D5 D4 D3 D2 D1 D0
Управляющее слово
"чтение без останова"
00 Фиксация счётчика, разряды
D3 - D0 -произвольн. значения
Код
Способ чтения или записи
счетчика
00
Младший байт
10
Старший байт
11
2 байта
Код
Счётчик
0
1
Двоичный
Двоичнодесятичный
Код
Режим работы
000
001
х10
х11
100
101
0
1
2
3
4
5
Код
Рис. 9. 3. Структура управляющего слова инициализации
Режим 0 (рис.9.4, а).). С момента записи числа в счётчик, настроенный на режим
0, до окончания счёта на соответствующем выходе OUT держится сигнал низкого
уровня. После окончания счёта уровень сигнала на выходе становится высоким и
сохраняется до следующей загрузки счетчика.
Перезагрузка счётчика во время счета младшим байтом числа останавливает
текущий счёт, а загрузка старшим байтом числа запускает счётчик сначала. Счёт
возможен только при наличии сигнала высокого уровня на входе GATE. Низкий
уровень этого сигнала или ниспадающий фронт запрещают счёт.
Режим 1 - программируемый одно вибратор (рис. 9.4, б)). На выходе счётчика,
в этом режиме, формируется отрицательный импульс длительностью nTCLC, при
этом на входе GATE должен быть сигнал высокого уровня. В отличие от режима 0
новое число, загруженное во время счёта, не влияет на состояние выхода счётчика, а
учитывается на следующем запуске. Кроме того, в данном режиме программируется
не момент перехода к высокому уровню сигнала на выходе счётчика, а длительность
отрицательного импульса. Особенностью данного режима является также то, что
перезапуск счётчика можно осуществить без предварительной перезагрузки, которая
необходима в режиме 0.
Режим 2 - программируемый делитель частоты (рис. 9.4, в)). Каждый раз после
просчета числа, записанного в счётчик, на выходе OUT появляется отрицательный
импульс длительностью в один период тактовой частоты. Загрузка счётчика новым
числом во время счёта не влияет на момент появления импульса на выходе OUT.
Счётчик перестраивается на новый коэффициент пересчета лишь после его запуска.
При исчезновении сигнала высокого уровня на входе GATE прекращается счёт, и на
выходе OUT устанавливается сигнал высокого уровня. Запуск и перезапуск счётчика
осуществляется при наличии сигнала высокого уровня на управляющем входе
GATE.
Режим 3 - программируемый делитель частоты на 2 (рис. 9.4, г)). Если в счётчик,
настроенный на данный режим, загружено чётное число, то длительности отрицательных и положительных полупериодов на выходе OUT равны между собой и
определяются по формуле TСLС • n /2. В случае нечётного n отрицательный
полупериод выходного сигнала меньше положительного на ТCLC. Загрузка счётчика
32
новым числом во время счёта не влияет на текущий период, однако последующий
просчёт будет осуществляться с новым коэффициентом пересчёта. Низкий уровень
сигнала на входе GATE (или спад сигнала) запрещает счёт, и на выходе счетчика
устанавливается сигнал высокого уровня. Сигнал высокого уровня разрешает счёт,
а положительный перепад запускает счётчик из начального состояния. Следует
отметить, что числом 3 счётчики в этом режиме загружать нельзя.
Режим 4 - счётчик событий (рис. 9.4, д)). В режиме 4 по окончании счёта числа, загруженного в счётчик, на выходе OUT появляется отрицательный импульс длительностью ТCLC. Запись в счетчик во время счета младшего байта не влияет на
текущий счёт, а запись старшего байта перезапускает счётчик. Напряжение низкого
уровня или отрицательный фронт на входе GATE запрещает счёт, а сигнал высокого
уровня – разрешает.
Режим 5 - счётчик событий с автозагрузкой (рис. 9.4, е)). Отличие от режима 4
состоит в том, что счётчик является перезапускаемым, т. е. каждое нарастание сигнала
на входе GATE перезапускает счётчик. Загрузка счётчика новым числом не влияет на
длительность текущего цикла, однако следующий цикл будет определяться вновь
записанным числом.
ЛИТЕРАТУРА
1.
Самофалов К. Г. и др. Микропроцессоры. - К.: Техника, 1986.
33
ЛЕКЦИЯ 10

ПРОГРАММИРУЕМЫЙ ИНТЕРФЕЙС ПОСЛЕДОВАТЕЛЬНОГО
ИНФОРМАЦИЕЙ
↑@
ОБМЕНА
Цель лекции: изучение процесса практического использования интерфейса
последовательного обмена информацией МК1  МК2, МК  ПЭВМ - сопряжение БИС К580ВВ51 (Intel 8251) с системной шиной МПУ, режимов работы,
управляющих слов инициализации и операционных слов, формата слова состояния, подпрограмм приёма/передачи.
1.
Общие положения
БИС К580ВВ51 (Intel 8251) представляет собой универсальный синхронноасинхронный приёмник/передатчик (УСАПП – USART) последовательной связи,
обеспечивающий средства реализации связного канала между МК1  МК2
или МК  ПЭВМ в стандарте RS232C или "токовая петля".
С помощью УСАПП осуществляется преобразование параллельного формата
слов данных в последовательный, со служебными символами для их передачи
по каналу связи с заданной скоростью, и наоборот, последовательный формат
принимаемых из канала связи данных, преобразуется в параллельный формат.
Затем осуществляется считывание этих данных микропроцессором.
УСАПП может быть запрограммирован для работы в пяти режимах:
асинхронная передача; асинхронный приём; синхронная передача; синхронный
приём с внутренней синхронизацией; синхронный приём с внешней синхронизацией. Конструктивно СБИС К580ВВ51 выполнена в пластмасовом корпусе с 28 выводами, условное обозначение которой приведено на рис. 10.1.
Назначение выводов микросхемы:
27
28
1
2
5
6
7
8
12
11
10
13
25
9
16
20
21
D0
D1
D2
D3
D4
D5
D6
D7
C/D
CS
WR
RD
RxC
TxC
SYN
CLK
RES
PCI
TxD
RxD
19
3
DSR
CTS
DTR
RTS
22
17
24
RxRD
TxRD
TxE
14
15
18
23
D0. . . D7 - Двунаправленная шина ШД - МП  МК
C/D - Вход - выбор РУС или регистра данных
CS - Вход сигнала выборки микросхемы
WR - Сигнал низкого уровня - разрешения записи
RD - Сигнал низкого уровня - разрешения чтения
RxC - Вход сигнала синхронизации приёмника
TxC - Вход сигнала синхронизации передатчика
SYN - Вид синхронизации для синхронного режима
CLK - Вход синхроимпульсов ГТИ (F1)
RESET - Вход сигнала аппаратного сброса
TxD - Вывод - передача данных
RxD - Ввод - приём данных
DSR - Вход готовности передатчика терминала
Рис. 10.1 – Условное обозначение микросхемы К580ВВ51
34
Вход сигнала готовности приёмника терминала принять данные.
Выход сигнала запроса готовности передатчика терминала к передачи.
Выход сигнала запроса готовности приёмнику терминала к приёму.
Выход - данные готовы для ввода в МП, можно использовать в качестве сигнала запроса прерывания или сигнала синхронизации обмена.
TxRD - Выход - передатчик готов принять данные от МП, можно использовать
в качестве сигнала запроса прерывания или сигнала синхронизации
программного обмена с МП.
TxE - Выход - окончание передачи данных.
CTS
DTR
RTS
RxRD
-
Сопряжение УСАПП с системной шинной МПУ
Интерфейс микросхемы К580ВВ51 с системной шиной МПУ (МК "Электроника МС 2721") показан на рис. 10.2.
ША
A0
ШД
ШУ
D0 … D7
ЧТ ЗП
IO\RD IO\WR
F2
Cбр.
К таймеру OUT2
Адресный
селектор
CS C/D D7…D0 RD WR CLK RESET RxC TxC
К580ВВ51
TxD RxD TxRD RxRD TxE RTS CTS DTR DSR SYN
К внешнему устройству (модему)
Рис. 10.2 - Сопряжение УСАПП с системной шиной МПУ
Сигналы на входах (CS, C/D, RD, WR) УСАПП определяют направление
потока информации, передаваемой между МП и УСАПП, приведены в таблице 10.1.
Таблица 10.1
CS
RD
WR
C/D
0
0
1
1
0
0
0
1
0
0
1
0
0
х
1
1
х
0
1
х
Направление передачи и вид операции
ШД  УСАПП
Запись данных
Запись управляющих слов (УСИ)
ШД  УСАПП
Чтение данных
Чтение слова состояния
Отключение
35
1.1. Форматы управляющих слов СБИС К580ВВ51
УСР асинхронный
режим
Режим работы и выполняемые функции микросхемы задаются програиммно. Это осуществляется передачей от МП в УСАПП управляющих слов двух
типов форматов: управляющих слов режима; управляющих слов команды.
Форматы этих управляющих слов показаны на рис. 10.3 и 10.4.
Управляющее слово режима (УСР); значения разрядов D0, D1 в асинхронном режиме определяют скорость приёма или передачи, заданием коэффициента кратности скорости (Kv – деления частоты подаваемой на вход RxC и
TxC) 1, 16 или 64. Если, например, скорость передачи информации V = 9600 бод,
то частота сигнала синхронизации Frt.CLC подаваемая на входы RxC и TxC,
должна быть равной Frt.CLC = Kv  V. Тогда при V = 9600 бод и Kv = 16,
Frt.CLC = 153,6 кГц, а при Kv = 64, Frt.CLC = 614,4 кГц. В режиме синхронной
передачи/приёма, частота сигналов на входах RxC и TxC равна скорости передачи/приёма. Разряды D2 и D3 как для синхронного, так и для асинхронного
режимов определяют длину слова данных (BI = 5. . . 8). Разряд D4 управляет
разрешением или запрещением контроля на чётность или нечётность передаваемой информации, если D4 = 1 (разрешён контроль), то значение разряда
D5 будет определять контроль на чётность или нечётность. При этом
контроле добавляется или вычитается бит из битов данных (в длину слова
данных он не входит). Значения битов D6 и D7 в асинхронном режиме
определяют число стоп-битов (S = 1; 1,5; 2), которые определяют окончание
посылки данных. В синхронном режиме эти биты определяют вид синхронизации – внешняя или внутренняя.
D0
0
0
1
0
1:1
0
1
1 :16
1
1
1 : 64
Скорость
передачи
Синхр. реж.
1
0
6 бит
0
1
7 бит
1
1
8 бит
Количество
информац.
бит
D0
D1
D2
D3
0
0
5 бит
D4
1 - разрешён; 0 - запрещён
Контроль
D5
1 - чётность; 0 - нечётность
Тип контроля
D6
D7
0
0
-
1
0
1 бит
0
1
1,5 бит
1
1
2 бит
Количество
стоп-бит
Рис. 10.3 - Формат управляющего слова режима
36
УСК управляющее слово команды
Управляющее слово команды (УСК) программирует работу УСАПП: на
передачу – значение разряда D0; на приём – значение разряда D2; значения
разрядов D1 и D5 управляют обменом с терминалом; разряд D3 определяет
конец передачи, а D4 сброс регистра флагов ошибок; разряд D6 - программный сброс УСАПП (при D6 = 1 происходит возврат к формированию УСР УСИ), код управляющего слова программного сброса 40Н; разряд D7 – поиск
синхро символов для синхронного режима работы.
D0
Разрешение передачи: 1 – разрешена; 0 - запрещена
D1
Запрос готовности передатчика терминала к обмену - 1
D2
Разрешение приёма: 1 – разрешон; 0 - запрещон
D3
Конец передачи – 1, норма 0
D4
Сброс флагов (триггеров) ошибок – 0
D5
Запрос готовности приёмника терминала к обмену – 1
D6
Программный сброс в исходное состояние (режим ожидания)
D7
Разрешение поиска синхросимвола – 1 (при синхрон. режиме)
D0
Рис. 10.4 – Формат управляющего слова команды
Перед использованием УСАПП, для передачи/приёма данных, в РУС
режима необходимо записать соответствующий код УСР. Все последующие
управляющие слова записываются в УСАПП в формате управляющих слов
команд (УСК) которые могут быть записаны в любое время.
Для программного возврата к формату УСР необходимо использовать
управляющее слово команды со значением кода 40Н – "Программный сброс".
После записи УСК (передачи) на выходе TxRD устанавливается значение
равное 1, сигнализирующее о готовности УСАПП принять данные от МП.
Программа приёма/передачи МК  ПЭВМ
Постановка задачи. Передать с МК "Электроника МС 2721" символьную
информацию "Передаёт МС 2721" в коде ASCII (Американский стандартный
код для обмена информацией) на ПЭВМ в стандарте RS232C. Скорость передачи – V = 9600 бод.
Для формирования программы определим значения кодов передаваемых
символов в соответствие с таблицей кодов ASCII. Код буквы "П" имеет значение 8FH, буквы "e" – A5H и. т. д. – значения передаваемых кодов; 8F, A5,
E0, A5, A4, A0, A5, E2, 20, 20, 8C, 91, 20, 32, 37, 32, 31, 2E, 20, 20.
Определим формат передаваемых / принимаемых слов (код управляющего
37
слова режима): коэффициент скорости передачи (режим асинхронный), принимаем Kv = 16; количество информационных битов – BI = 8; разрешение контроля (чётность нечётность), принимаем – не разрешен, тогда Р = 0; число стопбит (режим асинхронный), принимаем SB=1. На основании принятого формата,
в соответствии рис. 10.3, формируем код управляющего слова режима (инициализации), значение кода УСР равно 4ЕН.
Формируем код управляющего слова команды (УСК – операции) в соответствии рис. 10.4 для режима передачи; D0 = 1 – передача разрешена, D1 = 1 –
запрос передачи, D2 = 0 – приём не разрешён, D3 = 0 – не используем определение конца передачи, D4 = 1 – сброс флагов ошибок, D5 = 1 – запрос приёма,
D6 = 0 – программный сброс УСАПП не производим (при D6 = 1 происходит
возврат к формированию УСР), D7 = 0 – режим асинхронный поэтому поиск
синхросимволов не нужен, тогда значение кода УСК для операции передачи,
равно 33Н. Код УСК для операции приёма будет иметь значение 16Н.
Определим частоту сигнала синхронизации (Frt.CLC) работы приёмника и передатчика, подаваемого на вход RxC и TxC УСАПП с выхода OUT2 таймера,
Frt.CLC = Kv  V = 16  9600 = 153,6 кГц
Сигнал синхронизации (Fт.CLC2) работы второго канала таймера К580ВИ53
поступает с выхода счётчика, который делит частоту кварца (Fq) генератора
тактовых импульсов микроконтроллера на 10, то есть Fт.CLC2 = Fq / 10 =
18432 / 10 = 1843,2 кГц. Для формирования на выходе таймера OUT2 (счётчик
2) тактовых импульсов частотой 153,6 кГц = Frt.CLC, используем таймер в
режиме делителя частоты скважностью 2 (генератор меандра – режим 3),
тогда число N загружаемое (и запускающее счётчик) в счётчик определится,
N = Fт.CLC2 / Frt.CLC = 1843,2 / 153,6 = 12 = 0СН
Управляющее слово инициализации таймера (настройки на требуемый
режим работы) составляем с использованием формата УСИ /1, с. 193), значение кода которого для приведенных условий равно 96Н.
Адрес регистра управляющего слова таймера – Е3Н, а счётчика 2 – Е2Н.
Адрес регистров; режима, команды, слова состояния УСАПП – F9Н, а регистра данных F8Н.
Требуемые параметры и данные определены, теперь переходим к формированию программы приёма/передачи информации для МК "Электроника
МС 2721"
Таблица 10.2 - Программа приёма-передачи информации МК  ПЭВМ
Адрес
Машинный код
Метка
Мнемокод
Комментарий
1
2
3
4
5
1900
1902
1904
TXD:
;Программа передачи - TXD.
MVI A, 96Н ; Инициализация таймера К580ВИ53 ; режим 3 (делителя частоты).
OUT E3Н
MVI A, 0СН ; Загрузка в счётчик 2 числа N = 0СН
38
1
1906
1908
190А
190С
190Е
1910
1912
1914
1917
1919
191B
191E
2
Продолжение таблицы 10.2
3
4
5
; (деление частоты Fт.CLC2 на 12).
OUT E2Н
MVI A, 40Н ; Программный сброс УСАПП, пере; ход к формату УСР
OUT F9Н
MVI A, 4ЕН ; Задание режима работы УСАПП –
; запись кода УСР в регистр режима.
OUT F9Н
MVI A, 33Н ; Запись управляющего слова команды
; (УСК) – передача информации.
OUT F9Н
LXI H, 30 19Н ; Запись адреса начала передаваемой
L1:
SBI 19H
JZ L2
MOV A, M
OUT F8Н
INX H
JMP L1
191F
1921
1924
1925
1927
1928
192B
1930
1932
1935
1938
193C
1940
1944
1950
IN F9Н
ANI 01H
JZ L2
MOV A, M
L2:
HLT
DATA 8F, A5,
E0, A5, A4,
A0, A5, E2,
20, 20, 8C, 91,
20, 32, 37, 32,
31, 2E, 20, 20.
19
RXD:
; информации в регистры [(HL)]
; Считывание слова состояния УСАПП
; Маска на бит готовности УСАПП,
; если не готов, то на метку L1.
; Переслать информацию для передачи
; в регистр (А) = (А)  [(HL)].
; Проверка окончания передачи данных,
; если 0, то вся информация передана.
; Переслать информацию для передачи
; в регистр (А) и в УАПП на передачу
; Увеличить содержимое рег. (HL) на 1.
; Переход на продолжение передачи
; информации.
; Конец программы, если подпрограмма,
; то вместо команды HLT, записать RET.
; Передаваемые символьные коды
; ("Передаёт МС 2721"), по окончанию
; записи передаваемых кодов записы; вается символ 19Н – окончание пере; дачи
; Программа приёма - RXD.
; Составить самостоятельно при выпол; нении домашнего задания.
ЛИТЕРАТУРА
1. Самофалов К. Г. и др. Микропроцессоры. - К.: Техника, 1986.
39
ЛЕКЦИЯ 11

↑@
ОРГАНИЗАЦИЯ ПРЕРЫВАНИЙ – ПРОГРАММИРУЕМЫЙ КОНТРОЛЛЕР
ПРЕРЫВАНИЙ К580ВН59 (К1810ВН59)
1.
Общие положения
Прерывания позволяют внешней аппаратной части МП-систем, запросит у
МП немедленное выполнение, каких – либо действий. Этот запрос прерывает
обычный ход программы (если прерывания разрешены) и передаёт управление на специальную подпрограмму обработки прерывания.
Прерывание и его обработка аналогична вызову подпрограммы ( CALL адр.),
за исключением того, что переход инициируется извне, а не программой и при
этом переход на подпрограмму обработки прерывания осуществляется по фиксированным (программно установленным при инициализации ПКП) адресам
(векторам). По адресу вектора перехода записывается (устанавливается) адрес
безусловного перехода на подпрограмму обработки прерывания.
Более сложные структурные прерывания, в которых несколько внешних
устройств, требующих прерывания, используют один и тот – же МП, и при
этом имеют различные уровни приоритетов прерывания, организуются с применением программируемого контроллера прерываний (ПКП).
В МП имеется триггер разрешения прерываний, который может быть программно установлен в «1» (прерывание разрешено – команда EI) или сброшен
в «0» (запрещено – команда DI, запросы на прерывание МП не воспринимаются).
При разрешении прерывания МП воспринимает запрос от внешнего устройства, затем осуществляются следующие действия:
 МП заканчивает выполняемую команду;
 сбрасывается бит разрешения прерывания;
 прерывающее устройство (программируемый контроллер прерываний –
ПКП) формирует команду (CALL) и адрес (вектор) прерывания и
посылает её в МП.
2.
ПРОГРАММИРУЕМЫЙ КОНТРОЛЛЕР ПРЕРЫВАНИЙ К1810ВН59
ПКП реализует векторную восьми уровневую систему прерываний и выполняет следующие функции:
 последовательный опрос внешних устройств, для определения поступивших запросов на прерывание;
 фиксацию поступивших запросов на прерывание от 8-ми внешних
устройств;
 программное маскирование всех поступивших запросов;
 присвоение фиксированных или циклически изменяемых приоритетов
прерывания;
 формирование кода операции команды вызова (CALL) и 16-ти разрядразрядного адреса вызываемой подпрограммы обработки прерывания.
40
Количество обслуживаемых внешних устройств может быть увеличено до 64,
применением каскадного подключения ПКП (один ведомый и восемь ведущих).
На рис. 11.1 приведено условное обозначение ПКП К1810ВН59 (К580ВН59 –
Intel 8259), а в таблице 11.1 функциональное назначение выводов.
D0
D1
D2
D3
D4
D5
D6
D7
CS
A0
WR
RD
INTA
INT
SP
PCI IRQ0
IRQ1
IRQ2
IRQ3
IRQ4
IRQ5
IRQ6
IRQ7
CASO0
CASO1
CASO2
Рис. 11.1 - Условное обозначение ПКП К1810ВН59
Назначение выводов микросхемы:
D0,..., D7 - Двунаправленная шина ШД - МП  МК
А0 – Вход - выбор регистров ПКП
CS – Вход сигнала выборки микросхемы
WR – Сигнал низкого уровня - разрешения записи
RD – Сигнал низкого уровня - разрешения чтения
IRQ0,..., IRQ7 – Входы запросов на прерывания от
внешних устройств
INT – Выход – запрос на прерывание, сигнал от
ПКП к МП
INTА – Вход – подтверждение прерывания от МП
SP – Вход – выбор ведомой МС при каскадировании
CASO0 – CASO2 – Вход/выход – выводы ведущего
ПКП, являющиеся входами ведомых ПКП
С помощью загрузки управляющих слов двух видов (инициализации ICW –
в режиме настройки и операционных слов OCW – при обслуживании запросов)
командами OUT, ПКП может быть настроен на следующие режимы обслуживания: 1) полного вложения программ прерывания (приоритеты внешних
устройств фиксированы); 2) циклического сдвига приоритетов А; 3) циклического сдвига приоритетов В; 4) специального маскирования; 5) последовательного опроса – запросы от внешних устройств (IRQ0,..., IRQ7) фиксируются в
регистре запросов на прерывания IRR в ПКП, а схема обработки приоритетов
определяет наиболее приоритетный запрос.
ПКП при векторном прерывании реализует следующую последовательность действий:
 после появления, на одном или нескольких входах IRQ0,..., IRQ7, сигнала с логическим уровнем «1» (запрос или запросы на прерывания), осуществляется фиксирование этих запросов в регистре запросов IRR, учитываются их
приоритеты и формируется сигнал INT для МП;
 сигнал INT с ПКП поступает на вход INT (запрос на прерывание) МП,
который после завершения выполнения текущей команды и в случае если
прерывание разрешено (командой EI), выдаёт сигнал INTЕ (разрешено прерывание) на вход INTА ПКП;
 затем ПКП формирует и по ШД передаёт в МП первый байт команды CALL (код операции КОП – CDh) – переход на подпрограмму обработки
прерывания (адреса перехода пока нет, а только КОП);
 МП получив КОП команды CALL, вырабатывает ёщё два сигнала
INTЕ, по которым ПКП по ШД передаёт в МП младший и старший байт адреса
41
вектора перехода на подпрограмму обработки прерывания (адрес начала
расположения векторов прерываний, и шаг их смещения задаётся программно
при инициализации ПКП). Кроме того, МП вырабатывает ёщё третий сигнал
INTЕ, поступающий на вход INTА ПКП, по которому сбрасывается в «0» разряд регистра запросов IRR , соответствующий входу по которому поступил
запрос на прерывание и устанавливает в «1» соответствующий разряд регистра состояний (ISR), который показывает, какой из запросов обрабатывается;
 затем управление передаётся подпрограмме обработки прерывания,
соответствующей номеру (IRQi) обрабатываемого запроса (типу входного
устройства);
 после выполнения подпрограммы обработки прерывания происходит
автоматический возврат к прерванной программе (в конце подпрограммы
команда RETR).
Загрузкой управляющих слов в ПКП можно программировать один из двух
способов задания младшего байта адреса (и шага смещения) векторов перехода на подпрограммы обработки прерываний: 1) ХХХYYY00; 2) XXYYY000,
где ХХХ (ХХ) – разряды адреса, задаваемые при загрузке управляющего слова
ICW1 (рис. 11.2) разряды 7, 6,5 (7,6); YYY – двоичный код внешнего
устройства, запрос которого надлежит обслуживать, формируется внутри ПКП.
Таким образом, по первому способу для каждого вектора перехода на подпрограмму обработки прерывания в памяти МП системы отводится 4 байта
(ICW1, разряд D2 = 1) по второму 8 байт (ICW1, разряд D2 = 0). Адресные части
команды CALL для всех запросов на прерывание указывают на ячейки памяти,
равномерно распределенные в памяти от некоторого начального адреса (вектора – задаваемого управляющими словами ICW1 и ICW2 при инициализации
ПКП) через 4 или 8 байт. В этих ячейках памяти записаны команды безусловных переходов (JMP адр.) на соответствующие подпрограммы обработки
прерываний (таблица переходов – векторов), которые в свою очередь могут быть
расположены в произвольных, определяемых программистом, областях памяти.
Например, необходимо определить коды управляющих слов инициализации
ICW1 и ICW2, при условии размещения начального адреса (нулевого вектора)
таблицы переходов по адресу 20Е0h, с использованием первого способа задания младшего байта (разряды 7, 6, 5), то есть для каждого вектора будет отведено по 4 байта памяти (шаг смещения каждого вектора через 4 ячейки памяти,
так как прерываний 8, то будет задействовано 32 ячейки памяти). В системе
работает один ПКП, адрес РУС ПКП FEh, регистра операционных слов FFh.
Код управляющего слова инициализации определяем в соответствие с форматом, приведенным на рис. 11.2, для наших условий ICW1 = 11100000В = Е0h,
а ICW2 = 00100000В = 20h. Тогда нулевой вектор (первый) перехода будет расположен по адресам 20Е0 – 20Е3h, второй 20Е4 – 20Е7h и восьмой 20FCh –20FFh.
Программный модуль инициализации будет, выглядит следующим образом:
INT:
DI
F3
; Запрет прерываний МП
MVI
A, E0h ; Запись в (А) кода ICW1 = E0h
OUT
0FEh
; Запись в РУС ПКП кода ICW1
MVI
A, 20h ; Запись в (А) кода ICW2 = 20h
42
OUT
EI
FE
FB
; старший байт начального адреса.
; Вывод кода ICW2 в РУС ПКП.
; Снятие запрета прерывания.
Более подробное описание принципа действия, настройки, форматов управляющих слов инициализации ICW и операционных OCW ПКП приведено
/Самофалов К. Г. Микропроцессоры, стр. 60 – 71/.
D7 D6 D5 D4 D3 D2 D1 D0
A7 A6 A5
1
X
Адрес подпроКод граммыобработки прерываний
00 0
00 1
•
•
•
11 1
Разряды 7, 6, 5
(7, 6) младшего
байта адреса
входа в подпрограмму обработки прерываний
Код
1
0
X
ICW1
А0=0
Код Каскадирование
0 Каскадируемый
1 Одиночный
ПКП
Способ формирования младшего
байта адреса подпрограммы
Первый метод YYY – код устройства, пославшее запрос на прерывание, помещается в разряды 4, 3, 2
мл. байта адр. подпрограммы обработки прерываний; XXXYYY00.
Второй метод YYY – в разряды
5, 4, 3; XXYYY000.
ICW2
А=1
D7
D6 D5 D4 D3 D2 D1 D0
A15 A14 A13 A12 A11 A10 A9
Код
A8
Адрес подпрограммы
обработки прерываний
00000000 Старший байт адреса
00000001
•
входа в подпрограмму
•
11111111 обработки прерываний
Для ведущего ПКП
D7 D6 D5 D4 D3 D2 D1 D0
ICW3
А=0
Для ведомого ПКП
Определение
кода см. /1/
D7 D6 D5 D4 D3 D2 D1 D0
ICW3
А=1
Рис. 11. 2. Формат управляющих слов инициализации ICW
НАСТРОЙКА ПКП. Для программиста ПКП представляет собой два входных-
выходных порта (регистра) или две ячейки памяти, адреса которых отличаются в разрядах А0 («0» или «1»). Прежде всего командой OUT из МП загружается первое управляющее слово инициализации ICW1 по адресу А0 = 0
(например FEh – РУС). С помощью ICW1, формат которого показан на рис.11.2,
задаётся КОП и младший байт адреса первого вектора перехода на подпрограмму обработки прерывания и наличие каскадируемости ПКП. Затем командой
OUT по адресу А0 = 1 (FFh) загружается второе управляющее слово ICW2, с
помощью которого задаётся старший байт адреса первого вектора перехода.
Если ПКП каскадируются то по адресу А0 = 1 (FFh) командой OUT в ПКП
загружается третье слово ICW3, которое единицей в соответствующем разряде
указывает к каким входам IRQ ведущего подключаются выходы INT ведомых.
Затем в каждый из ведомых ПКП командой OUT последовательно засылаются три управляющего слова инициализации (ICW1, ICW2, ICW3). Алгоритм
настройки ПКП показан на рис. 11. 4.
43
Маскирование входов ПКП
D7
Циклический сдвиг приоритетов В
D6 D5 D4 D3 D2 D1 D0
D7
OCW1 OCW2
А=1
Код
Назначение
00000000
00000001
•
•
•
11111111
«1» в разряде слова запрос по соответствующему входу ПКП не
обслуживается.
«0» - соответствующий
вход обслуживается.
Специальное окончание обслуживания запроса – переход в режим полного вложения
OCW2 D7 D6 D5 D4 D3 D2 D1 D0
А=1
0
Код
1
1
0
0
Номер разряда регистра состояния, сбрасываемого в «0»
00000000
00000001
•
•
•
11111111
0
1
•
•
•
7
Код
00000000
00000001
•
•
•
11111111
1
1
1
0
Код
1
0
0
0
Номер входа IR, приоритет которого назначается наименьшим
00000000
00000001
•
•
•
11111111
0
1
•
•
•
7
Окончание обслуживания запроса –
переход в режим полного вложения
D7 D6 D5 D4 D3 D2 D1 D0
OCW2
А=0
0
0
1
0
Х
0
Х
Х
Окончание обслуживания запроса –
переход в режим циклического сдвига А
D7 D6 D5 D4 D3 D2 D1 D0
А=0
1
0
1
0
Х
0
Х
Х
Вход в спецмаскирование
D7 D6 D5 D4 D3 D2 D1 D0
OSW3
D7 D6 D5 D4 D3 D2 D1 D0
А=0
1
А=0
OCW2
Специальное окончание обслуживания запроса – переход в режим циклического сдвига В
OCW2
D6 D5 D4 D3 D2 D1 D0
0
А=0
Х
1
1
0
1
0
0
Х
Выход из спецмаскирования
D7 D6 D5 D4 D3 D2 D1 D0
OSW3
А=0
Х
1
0
0
1
0
0
Х
Чтение содержимого регистра запросов
D7 D6 D5 D4 D3 D2 D1 D0
Номер входа IR, приоритет которого устанавливается наименьшим
0
1
•
•
•
7
OSW3
А=0
Х
0
Х
0
1
0
1
0
Чтение содержимого регистра состояний
D7 D6 D5 D4 D3 D2 D1 D0
OSW3
А=0
Х
0
Х
0
1
0
1
1
Чтение в режиме опроса
D7 D6 D5 D4 D3 D2 D1 D0
OSW3
А=0
Х
0
Х
0
1
1
0
Х
Рис. 11. 3 - Форматы управляющих операционных слов
ОCW
После загрузки управляющих слов инициализации ПКП переходит в состояние обслуживания запросов на прерывание – в режиме полного вложения
подпрограмм обработки прерываний. Некоторые из запросов на прерывания
могут быть замаскированы. Для этого по адресу А0 = 1 (FFh) командой OUT
в ПКП загружается операционное слово ОCW1 – байт с единицами в разрядах,
соответствующим входам по которым запросы не должны обслуживаться.
44
Начало
Запись в ПКП
ICW1 (ведомый)
РЕЖИМ ПОЛНОГО ВЛОЖЕНИЯ
ПОДПРОГРАММ ОБРАБОТКИ ПРЕРЫВАНИЙ. В этом режиме приори-
теты входов IRQ не изменяются, они
установлены следующим образом:
Запись в ПКП
ICW2 (ведомый)
IRQ0 имеет высший приоритет, а
IRQ7 – низший. Если поступают
НЕТ
ДА
ЕСТЬ
запросы на несколько входов ПКП,
ВЕДОМЫЕ
то обслуживается запрос с наибольЗапись в ПКП
шим приоритетом. Если во время
ДА
НЕТ
ICW3 (ведомый)
НЕОБХОДИМО
обслуживания прерывания на один
МАСИРОВАН.
Запись в ПКП
из входов ПКП поступит запрос
ICW1 (ведомый)
с более высоким приоритетом, то
Запись в ПКП
OCW1
ПКП прервёт текущее обслужиЗапись в ПКП
ICW2 (ведомый)
вание и перейдёт к обслуживанию
ДА
НЕТ
РЕЖИМ ПОЛпрерывания, инициализированного
НОГО ВЛОЖЕН
Запись в ПКП
ICW3 (ведомый)
новым (более высоким приоритеЗапись в ПКП
том) запросом. Запросы с более низOCW2
ким приоритетом не прерывают
НЕТ
НЕТ
текущего обслуживания.
ДА
РЕЖИМ СПЕЦРЕЖИМ СПЕЦМАСКИРОВАН.
Например, на входы IRQ1 и IRQ4
МАСКИРОВАН.
ДА
поступили сигналы запроса прерыЗапись в ПКП
Запись в ПКП OCW3
вания. Эти сигналы устанавливают в
OCW2
(вход в режим)
«1» соответствующие разряды реЗапись в ПКП OCW3
гистра IRR (IRR1, IRR2). Когда на
(выход из режима)
вход INTA ПКП приходит третий
Конец
сигнал от МП «подтверждение прерывания», то он сбрасывает тот разРис. 11. 4. Алгоритм настройки ПКП
ряд регистра запросов на прерывание IRR у которого наивысший
приоритет и устанавливает аналогичный разряд регистра состояний ISR (ISR1).
Таким образом, регистр состояний ISR указывает на то, какой из запросов
обслуживается в данное время.
Например, если обслуживается запрос поступивший на вход IRQ4 (соответствующий разряд регистра IRR установлен в «1» – IRR4), то запросы поступающие на входы IRQ5 - IRQ7, обслуживаться не будут. При этом, если поступит запрос с более высоким приоритетом, например IRQ2, то он будет зафиксирован в разряде регистра IRR2, а так этот вход имеет более высокий приоритет, то сформируется сигнал запроса на прерывание. В ответ на этот сигнал
от МП поступят сигналы, подтверждающие прерывание, и разряд регистра ISR2
установится в «1». При этом он запретит прерывание по данному входу и входам с более низким приоритетом (IRQ3 – IRQ7). Система прервёт выполнение
подпрограммы обработки прерывания по запросу на входе IRQ4 и перейдёт к
подпрограмме обслуживания прерывания по запросу на входе IRQ2. После выполнения этой подпрограммы, загрузкой ОCW2 будет сброшен разряд регистра
45
ISR2 и продолжится выполнение прерванной подпрограммы прерывания (IRR4).
Необходимо помнить, что любую подпрограмму обработки прерывания, для
работы в системе с ПКП типа К1810ВН59 (К580ВН59), необходимо завершать
загрузкой операционного управляющего слова ОCW2:
MVI, 64h
OUT [адр.]
RET
; ОCW2 = 01100100В
; A0 = 0
; Выход из подпрограммы.
ЦИКЛИЧЕСКИЙ СДВИГ ПРИОРИТЕТОВ. РЕЖИМ А. В отличие от предыду-
щего режима, приоритеты могут быть динамически изменены. Входу, запрос на
прерывание по которому был только что обслужен, загрузкой управляющего
слова ОCW2 присваивается низший приоритет.
Распределение входов в порядке возрастания
▼
▼
приоритетов слева направо
–
IR7, IR6, IR5, IR4, IR3, IR2, IR1, IR0.
▼
После первого обслуживания
–
IR3, IR2, IR1, IR0, IR7, IR6, IR5, IR4.
После второго обслуживания
–
IR5, IR4, IR3, IR2, IR1, IR0, IR7, IR6.
П р и м е ч а н и е – символ ▼ обозначает запрос на прерывание\
Режим циклического сдвига приоритетов А не является постоянным подобно режиму полного вложения. Для выполнения каждого сдвига приоритетов необходимо загружать операционное слово ОCW2 = 10100000В (окончание
обслуживания запроса – переход в режим циклического сдвига приоритетов
А со сбросом соответствующего разряда регистра состояний – ISR) в ПКП
по завершению каждой подпрограммы обработки прерывания. Режим циклического сдвига приоритетов А позволяет избавиться от недостатка, который
заключается в том, что при частых запросах на прерывания по входам с
высшими приоритетами, запросы по входам с низшими приоритетами могут
не обслуживаться. Поэтому применение этого режима целесообразно при обслуживании устройств с одинаковыми приоритетами.
ЦИКЛИЧЕСКИЙ СДВИГ ПРИОРИТЕТОВ. РЕЖИМ В. В этом режиме можно
программно управлять назначением входу IRQ низшего приоритета.
Пример. Входу IRQ3 может быть присвоен низший приоритет.
Старое распределение приоритетов – IR7, IR6, IR5, IR4, IR3, IR2, IR1, IR0
Новое распределение приоритетов – IR3, IR2, IR1, IR0, IR4, IR5, IR6, IR7.
Приоритеты в режиме В могут быть изменены в любой момент времени при
помощи команды OUT, загружающей в ПКП управляющее операционное словоциклический сдвиг приоритетов В или специальное окончание обслуживания
запроса на прерывание – переход в режим циклического сдвига приоритетов В.
Переход в режим циклического сдвига приоритетов В без сброса соответствующих разрядов регистров состояний ISR производится следующим образом:
MVI A, 0C5h
; OCW2 = 11000101b (5 – номер входа, которому будет
OUT [адр.]
; присвоен наименьший приоритет.
; A0 = 0.
Переход в режим В со сбросом соответствующих разрядов регистров состояний ISR:
MVI A, 0E6h
OUT [адр.]
; OCW2 = 11100110b (6 – номер входа, которому будет
; присвоен наименьший приоритет.
; A0 = 0.
46
РЕЖИМ СПЕЦИАЛЬНОГО МАСКИРОВАНИЯ. Этот режим задаётся динами-
чески, т. е. после загрузки операционного слова OCW1 (байт с единицами в
разрядах запросы по которым не должны обслуживаться) засылаемого в ПКП
при его настройки и после начала обслуживания прерываний. Переход в режим специального маскирования производится путём выполнения следующих
команд:
MVI A, 68h
; OCW3 = 01101000b
OUT [адр.]
; A0 = 0.
Этот режим действует до тех пор, пока он не отменен.
Отмена режима специального маскирования производится следующим
образом:
MVI A, 48h
; OCW3 = 01001000b
OUT [адр.]
; A0 = 0.
РЕЖИМ ПОСЛЕДОВАТЕЛЬНОГО ОПРОСА. В этом режиме МП с помощью
ПКП опрашивает последовательно источники запросов, путём многократной
загрузкой операционного слова OCW3 и чтение командой IN регистра слова
состояния ПКП. Для перехода в этот режим, необходимо блокировать командой DI вход INT (запрос прерывания) МП, так как в этом режиме инициирует обслуживание прерываний сам МП (программа). Затем командой OUT
послать в ПКП (по адресу А0 = 1) операционное слово OCW3 (чтение в режиме опроса):
MVI A, 0Ch
; OCW3 = 00001100b
OUT [адр.]
; A0 = 0.
ПКП выставит на ШД слово состояние, формат которого приведен на
рис. 11.5. Байт слова состояния ПКП счиD7 D6 D5 D4 D3 D2 D1 D0
тывается МП командой IN [адр.]. Обслуживание запросов на прерывания, осущесА0= 0
твляется после анализа слова состояния,
(специально разработанной программой).
1 Есть запрос
Код (номер) запЭта программа определяет, какой из прироса с наивысшим
0 Нет запроса приоритетом
шедших запросов будет обслуживаться,
(вызовом соответствующей подпрограммы
обработки прерывания). Использование Рис.11.5. Формат слова состояния ПКП
этого режима целесообразно, когда для ряда УВВ имеется общая подпро
грамма их обслуживания.
Содержимое регистра запросов IRR и регистра состояний прерываний ISR
может быть прочитано загрузкой в ПКП OCW3 с последующим выполнением
команды IN [адр.] (см. рис.11.2). Например, чтение содержимого регистра запросов IRR:
MVI A, А0h
; OCW3 = 00001100b
OUT [адр.]
IN [адр.]
; A0 = 0
; A0 = 0.
Если после загрузки операционного слова OCW3, для данной операции,
другие слова не загружались, то содержимое регистров можно читать многократно с использованием команды IN [адр.].
Считывание содержимого регистра маски производится без загрузки OCW3,
а непосредственно использованием команды IN [адр.] (А = 0).
Следует помнить, что любую подпрограмму обработки прерывания необходимо завершать загрузкой OCW2: MVI A, 64h - OCW2 = 01100100b; OUT [адр.] - A0=0.
47

ЛЕКЦИЯ 12
↑@
1. ОДНОКРИСТАЛЬНЫЙ МИКРОКОНТРОЛЛЕР К1816ВЕ35/39/48/49
Микроконтроллер (МК) К1816 конструктивно выполнен в корпусе БИС с
40 внешними выводами. Все выводы электрически совместимые с элементами
ТТЛ; входы представляют собой единичную нагрузку, а выходы могут быть
нагружены одной ТТЛ-нагрузкой. Структурная схема МК показана на рис.12.1.
Ниже приводятся символические имена выводов (сигналов) и их функциональное назначение:
ЗЕМЛЯ (VSS) – потенциал земли;
Uосн (VCC) – основное напряжение питания +5 В, подается во время работы
и при программировании РПП (EPROM);
Uдоп (VDD) – дополнительное напряжение питания +5 В, во время работы
МК обеспечивает электропитание только для РПП (EPROM).; на этот вывод при
программировании РПП подается +25 В;
ПРОГ/СТБВВ (PROG) – вход для подачи программирующего импульса при
записи РПП / выход стробирующего сигнала БИС расширителя ввода-вывода;
X1 – вход для подключения кварцевого осциллятора;
Х2 – вход для подключения второго вывода осциллятора;
СБРОС (RST) – вход сигнала общего сброса при запуске МК;
ШАГ (SS) – сигнал, который совместно с сигналом САВП позволяет
выполнять программу с остановом после исполнения очередной команды
(пошаглвый режим), используется на этапе отладки;
РВПП (PSEN)) – разрешение внешней памяти; сигнал подается на вход разрешения буфера внешней памяти только тогда, когда происходит обращение к
внешней памяти программ;
САВП (ALE) – строб адреса внешней памяти; сигнал используется для приема
и фиксации адреса внешней памяти на внешнем регистре, сигнал является идентификатором машинного цикла, так как всегда выводится из МК с частотой,
в 5 раз меньшей основной частоты синхронизации;
ЧТ (RD) – стробирующий сигнал при чтении из внешней памяти или УВВ;
ЗП (WR) – стробирующий сигнал при записи во внешнюю память или УВВ;
ТО – входной сигнал, опрашиваемый по командам условного перехода JTO
и JNTO, кроме того используется при программировании РПП; может быть
использован для вывода сигнала синхронизации по команде ENTO CLK;
Т1 – входной сигнал, опрашиваемый командами условного перехода JT1 и
JNT1, кроме того, используется в качестве входа внутреннего счетчика внешних событий после исполнения команды STRT CNT;
ЗПР (INT) – сигнал запроса прерывания от внешнего источника, вызывает
подпрограмму обслуживания прерывания, если прерывание разрешено ранее по
команде ENI, сигнал СБРОС запрещает прерывания;
ОРПП (ЕА) -- режим внешнего доступа; уровень 1 на этом входе заставляет МК выполнять выборку команд только из внешней памяти программ;
используется при тестировании прикладной программы и отладке МК;
48
программ
1 кб х 8
(EPROM)
ОЗУ
данных
64 х 8
(RAM)
Десятичный
корректор
СК 0-7
ПОРТ 1
P1.0 – P1.7
ПОРТ 2
P2.0 – P2.7
ПОРТ BUS
РК
Дешифратор
Синхрониз.
Старт
Мультиплексор
РА (RAR)
АЛУ
Регистр Т1
Таймерсчётчик
ДЕшифратор
РПД
СК 8-11
СППЗУ
Дешифратор
Дешифратор
Дешифратор
РПП
Логика
переходов
Регистр
признако
ССП (PSW)
Чтение
Запись
Управление
внешней
памятью
Строб адреса внешней
памяти
Прерыван.
Регистр Т2
Тест
АККУМУЛЯТОР
Строб
внешней
памяти
Программирование
DB.0 – DB.7
Х1 (XTAL1)
Х2 (XTAL2)
СБР (RESET)
ШАГ (SS)
ЧТ (RD)
ЗП (WR)
ОРПП (ЕА)
САВП (ALE)
ЗПР (INT)
Т0
Т1
РВПП (PSEN)
ПРОГ. (PROG)
Рис. 12.1. Структурная схема МК К1816ВЕ48
Порт 1 (Р1) – 8-разрядный квазидвунаправленный порт ввода-вывода информации, каждый разр. порта может быть запрограммирован на ввод или на вывод.
Порт 2 (Р2) – 8-разрядный квазидвунаправленный порт ввода-вывода информации, каждый разряд порта может быть запрограммирован на ввод или вывод;
биты Р2 0-3 во время чтения из внешней памяти программ содержат старшие
четыре разряда счетчика команд СК 8 - 11;
Порт BUS (DB) – 8-разрядный двунаправленный порт ввода-вывода информации; может быть отключен от нагрузки; может выполнять прием и выдачу
байтов синхронно с сигналами ЧТ и ЗП; при обращении к внешнему ППЗУ
программ содержит 8 младших разрядов счетчика команд и по сигналу РВПП
принимает выбранную команду; при обращении к внешнему ОЗУ данных (ВПД)
содержит младшие 8 разрядов адреса синхронно с сигналом САВП, и байт
данных синхронно с сигналами ЧТ или 3П.
49
1.1. АРИФМЕТИЧЕСКО-ЛОГИЧЕСКОЕ УСТРОЙСТВО
В состав арифметическо-логического устройства (АЛУ) входят следующие
блоки: комбинационная схема обработки байт, регистр временного хранения
операнда Т, регистр-аккумулятор А, схема десятичного корректора и схема
формирования признаков, часть из которых фиксируется в регистре слова
состояния программы (ССП) и используется логической схемой управленияпереходами по программе.
Аккумулятор является двухтактным регистром, так как он используется в
качестве регистра операнда и регистра результата. Динамический регистр Т
программно недоступен – служит для временного хранения второго операнда
при выполнении двух операндных команд;
Комбинационная схема АЛУ может выполнять следующие операции: сложение байта с переносом или без него; логические операции И, ИЛИ и исключающее ИЛИ; инкремент; декремент байта; инверсию бита; циклический сдвиг
влево, вправо (через или минуя признак переноса); обмен тетрад в байте;
десятичную коррекцию содержимого аккумулятора.
При выполнении операций обработки данных в АЛУ формируются признаки, часть которых не фиксируется в триггерах, а формируется в комбинационной схеме. К таким признакам относятся, признак нулевого содержимого
аккумулятора и признаки наличия единицы в селектируемом разряде аккумулятора. Логика условных переходов по указанным признакам позволяет
выполнять команды передачи управления (JZ, JNZ, JBO – JB7).
Флаг переноса (переполнения) и вспомогательного переноса (перенос из
младшей тетрады в старшую) фиксируются в триггерах, входящих в состав
регистра слова состояния программы (ССП).. Формат ССП показан на рис. 12.2.
Кроме перечисленных признаков, при условных переходах, МК оперирует
флагами FO и F1, функциональное назначение которых определяется разработчиком, флагом переполнения таймера TF, сигналами на входах ТО и Т1.
Программистом могут быть также использованы флаги рабочего банка регистров
BS и выбранного блока внешней памяти программ MB. Кроме того, после
окончания каждого машинного цикла опрашивается еще один признак (флаг),
а именно признак разрешения /запрета прерываний EI.
С
АС F0
BS
1
S0–2
Признак переноса (А)
Признак вспомогательного переноса
Признак пользователя
Селектор банка регистров
Не используется
Указатель стека
Рис. 12. 2. Формат слова состояния программы
50
1. 2. ПАМЯТЬ МИКРОКОНТРОЛЛЕРА
Память программ
Память программ и память данных в МК 1816 физически и логически
разделена. Память программ реализована в резедентном СППЗУ (РПП - EPROM)
емкостью 1 Кбайт. Максимальное адресное пространство, отводимое для
программ, составляет 4 Кбайт (3 Кбайта внешней памяти программ). Счетчик
команд (СК) содержит 12 разрядов, но инкрементируются в процессе счёта
только младшие 11 разрядов. Поэтому счетчик команд из предельного состояния
7FFH (если только по этому адресу не расположена команда передачи
управления) перейдет в состояние 000Н. Состояние старшего разряда счетчика
команд может быть изменено специальными командами (SEL MBO, SEL MB1).
Подобный режим работы СК позволяет создать два блока памяти емкостью по 2
Кбайт каждый. Карта адресов памяти программ показана на рис. 12.3 б).
В резидентной памяти программ имеются три специализированных
адреса:
 адрес 0, к которому передается управление сразу после окончания сигнала
системного сброса – СБРОС; по этому адресу должна находиться команда
безусловного перехода к началу прикладной программы;
 адрес 3, по которому расположен вектор прерывания от внешнего источника;
 адрес 7, по которому расположен вектор прерывания от таймера или
начальная команда подпрограммы обслуживания прерывания по признаку
переполнения таймера /счетчика событий.
Память программ разделена не только на блоки объемом по 2 Кбайт, но и на
страницы по 256 байт в каждой. В командах условного перехода задается 8битный адрес передачи управления в пределах текущей страницы. Команда
вызова подпрограмм модифицирует 11 разрядов счетчика команд обеспечивая
межстраничные переходы в пределах выбранного блока памяти программ.
Так как СППЗУ (памяти программ) используется не только для хранения
команд, но и констант, то в МК1816 применяются два способа адресации постоянной памяти для чтения неизменяемых данных: непосредственная адресация,
при которой второй байт двухбайтной команды представляет собой операнд;
косвенная адресация, при которой содержимое аккумулятора используется в
качестве указателя данных в текущей странице или в странице 3 памяти
программ.
В расширенной МК-системе, работающей с внешней памятью программ,
возникает проблема размещения подпрограмм в двух блоках памяти. Проблема
эта связана с тем, что МК не имеет средств считывания и анализа признака МВ
соответствующего содержимому старшего разряда счегчика команд СК11. Поэтому необходимо следить за тем, чтобы подпрограммы, взаимно вызывающие
друг друга, располагались в пределах одного блока памяти. В противном случае
возникает необходимость модификации признака MB в вызываемой подпрограмме – восстановление его при возврате в вызывающую подпрограмму.
51
Память данных
Резидентная память данных (РПД) емкостью 64 байта имеет в своем
составе два банка рабочих регистров 0 - 7 и 24 - 31 по восемь регистров в
каждом. Карта памяти РПД приведена на рис. 12.3 б).
4095
ОЗУ
32
Банк 0 (СК11=0)
31
БАНК
РЕГИСТРОВ 1
(8 х 8)
1024
R1*
R0*
1023
23
24 8-УРОВНЕВЫЙ
Вектор прерывания
от таймера
0007
0006
0005
0004
СТЕК
ИЛИ
ОЗУ
(16 х 8)
Вектор внешнего
прерывания
0003
0002
0001
БАНК
РЕГИСТРОВ 0
(8 х 8)
Указатель запуска
программы - Сброс
0000
а)
Прямо адресуемые
регистры Банка 1
2047
Банк 1 (СК11=1)
R1
R0
Прямо адресуемые
регистры Банка 0
2048
РПП (ППЗУ) на кристалле
Адресуемое пространство
(32 х 8)
Косвенно адресуемые ячейки через регистры банков 0 и 1
63
б)
Рис.12. 3. Карта памяти; а) адресов памяти программ (ППЗУ), б) адресов
резидентной памяти данных (РПД)
Выбор одного из двух банков регистров выполняется по команде SEL RB.
Рабочие регистры доступны командам с прямой адрисацией а все ячейки ОЗУ
доступны командам с косвенной адресацией. В качестве регистров косвенного
адреса используются регистры R0, R1 и R0*, R1* (рис. 12.3 б).
Ячейки ОЗУ с адресами 8-23 адресуются указателем стека из ССП и могут
быть использованы в качестве 8-уровневого стека (см. рис. 12.1). В том случае,
если уровень вложенности подпрограмм меньше 8, то не задействованные
в стеке регистры могут использоваться как ячейки ОЗУ. При переполнении
стека, регистр указатель стека, построенный на основе 3-разрядного счетчика,
переходит из состояния 7 в состояние 0. Малая емкость стека ограничивает
число возможных внешних источников прерывания в МК-системе. МК 1816
не имеет команд загрузки байта в стек или его извлечения из стека, и в
нём фиксируется только содержимое СК и старшая тетрада ССП (признаки).
В силу этого программисту необходимо следить за тем, чтобы вложенные
подпрограммы не использовали одноименные ячейки ОЗУ в качестве рабочих
регистров.
52
Практически все команды с обращением к ОЗУ оперируют с одним байтом.
Однако по командам вызова и возврата осуществляется доступ к двухбайтным
словам. В памяти двухбайтовые слова хранятся так, что старший байт слова
распо- лагается в ячейке с большим адресом.
В расширенных МК-системах, где используется внешнее ОЗУ, через регистры косвенного адреса R0 и R1 возможен доступ к внешней памяти.
1.3. ОРГАНИЗАЦИЯ ВВОДА-ВЫВОДА ИНФОРМАЦИИ
Для связи МК 1816 с объектом управления, для ввода и вывода информации
используются 27 линий. Эти линии сгруппированы в 3 порта по 8 линий в
каждом и могут быть использованы для вывода, ввода или для ввода-вывода
через двунаправленные линии. Кроме портов ввода-вывода имеются 3 входные
линии: линия ЗПР используется для ввода в МК сигнала запроса прерывания от
внешнего источника; линия ТО предназначена для ввода тестирующего сигнала
от двоичного датчика объекта управления, кроме того, под управлением программы (ENTO CLC) по этой линии из МК может выдаваться сигнал синхронизации; линия Т1 используется для ввода тестирующего сигнала или в качестве
входа счетчика событий (по команде STRT CNT).
Порты ввода-вывода Р1 и Р2. Каждая линия портов Р1 и Р2 может быть
программным путем настроена на ввод/вывод или на работу с двунаправленной
линией передачи.
Специальная схемотехника цепей вывода портов Р1 и Р2, которая получила
название квазидвунаправленной структуры, позволяет выполнять ввод/вывод и
двунаправленные передачи, несмотря на то, что выходы схем вывода статически
заперты. Каждый контакт ввода-вывода портов Р1 и Р2 является выходом с
открытым стоком и входом с высоким импедансом, соответствующим по
логическому уровню сигналу 1. Линия ввода-вывода постоянно подключена к
источнику электропитания +5 В через резистор сопротивления 50 КОм, обеспечивая для единичной стандартной ТТЛ-нагрузки достаточный входной ток,
соответствующий логической I. В то же время потенциал в линии может быть
приближен к потенциалу земли (уровень 0) нулевым сигналом на выходе стандартной ТТЛ-схемы. Именно это обстоятельство и позволяет использовать
статически запертую схему вывода как для ввода, так и для вывода данных.
Сигнал системного сброса «СБРОС» автоматически записывает во все линии
портов Р1 и Р2 логический уровень 1.
Квазидвунаправленная структура портов Р1 и Р2 для программиста МК 1816
специфична тем, что в процессе ввода информации выполняется логическая
операция над вводимыми данными и текущими (предыдущими) данными. Для
того, чтобы осуществить ввод, программист должен следить за тем, чтобы в соответствующих линиях перед вводом было значение 1. Квазидвунаправленные
буферные схемы портов Р1 и Р2, и команды логических операций ANL и ORL
представляют программисту эффективное средство маскирования для обработки
однобитовых входов и выходов в МК.
53
В системе команд МК есть команды, которые позволяют выполнять запись
нулей и единиц в любой разряд или группу разрядов порта. Но так как в этих
командах маска задается непосредственным операндом, то необходимо знать
распределение сбрасываемых и устанавливаемых линий на этапе разработки
исходной программы. В том случае, если маска вычисляется программой и
заранее не известна, то в ОЗУ необходимо иметь копию состояния порта вывода.
Эта копия по командам логических операций соединяется с вычисляемой маской
в аккумуляторе и затем загружается в порт. Необходимость этой процедуры
вызвана тем, что квазинаправленная структура не позволяет выполнить операцию
чтения состояний портов Р1 и Р2, зафиксированных по последней команде
вывода.
Порт ввода-вывода BUS. Порт BUS представляет собой двунаправленный
буфер с тремя состояниями и предназначен для побайтного ввода, вывода или
ввода-вывода информации.
Если порт BUS используется для двунаправленной передачи, то обмен
информацией через него выполняется по командам MOVX. При выводе байта
генерируется стробирующий сигнал ЗП, а выводимый байт фиксируется в
буферном регистре. При вводе байта генерируется стробирующий сигнал ЧТ,
но вводимый байт в буферном регистре не фиксируется, В отсутствие передач
порт BUS по выходам находится в высокоимпедансном состоянии.
Если порт BUS используется как однонаправленный, то вывод через него
выполняется по команде OUTL, а ввод – по команде INS.
Вводимые и выводимые через порт BUS байты можно маскировать с помощью
команд AND и OR, что позволяет выделять и обрабатывать в байте отдельный
бит или группу бит. Для этого предварительно по команде OUTL BUS, A в порт
BUS из аккумулятора должна быть загружена маска.
В МК-системах простой конфигурации, когда порт BUS не используется в
качестве порта-расширителя системы, обмен выполняется по командам INS,
OUTL и MOVX. Возможно попеременное использование команд OUTL и MOVX.
Однако при этом необходимо помнить, что выводимый по команде OUTL байт
фиксируется в буферном регистре порта BUS, а команда MOVX уничтожает
содержимое буферного регистра порта.
В МК-системах, имеющих внешнюю память программ, порт BUS используется
для выдачи адреса внешней памяти и для приема команды из внешней памяти
программ. В таких системах использование команды OUTL BUS недопустимо,
так как фиксация в буферном регистре порта BUS выводимого байта явится
причиной неправильной выборки следующей команды.
В командах ввода-вывода информации, имя порта, через который осуществляется передача, содержится в коде команды. Следовательно (из-за невозможности динамического определения имени порта в каком-либо рабочем регистре), отсутствует возможность использования одной программы управления
идентичными устройствами, подключенными к разным портам, Это вынуждает
программиста загружать в память программ две или более по существу (но не
по кодам) одинаковых программ управления однотипными устройствами.
54
Однако динамический выбор идентичных устройств, а следовательно и
использование одной параметризируемой подпрограммы управления этими
устройствами, возможны в том случае, если обращение к внешним портам
ввода-вывода выполнять по командам обращения к внешней памяти MOVX.
1.4. УПРАВЛЕНИЕ РАБОТОЙ МИКРОКОНТРОЛЛЕРА
Устройство управления МК совместно с логической схемой переходов в
каждом цикле, команды формируют последовательность сигналов, управляющих
функциями всех блоков МК и системой их взаимосвязи.
Синхронизация микроконтроллера. Опорную частоту синхронизации
определяет кварцевый осциллятор, подключаемый к входам XI и Х2 (диапазон
частот от 1 до 6 МГц). На вход XI может подаваться сигнал от источника
внешней синхронизации. В схему синхронизации МК входят два счетчика с
модулями пересчета 3 и 10. Первый используется для формирования сигнала
системной синхронизации, который может передаваться на вывод ТО по команде
ENTO CLK. Этот же сигнал поступает на счетчик машинных циклов, на выходе
которого через каждые пять сигналов синхронизации МК формируется сигнал
САВП, идентифицирующий каждый машинный цикл и используемый в расширенных МК-системах для стробирования адреса внешней памяти.
Системный сброс. В обслуживаемых МК-системах для инициализации
используется кнопка сброса, которая заземляет соответствующий вход МК
после подачи электропитапня. В необслуживаемых МК-системах на вход
СБРОС МК подсоединяется конденсатор емкостью 1 мкф, что обеспечивает
подачу сигнала, близкого к потенциалу земли, длительностью не менее 50 мс,
после того, как напряжение электропитания установится после включения.
Сигнал СБРОС производит следующие действия: сбрасывает счетчик команд
и указатель стека, устанавливает порт BUS в высокоимпедансное состояние,
а порты Р1 и Р2 – на режим ввода; выбирает банк регистров 0 и блок
памяти 0; запрещает прерывания; останавливает таймер на выдачу синхросигнала
на вывод ТО; сбрасывает признак переполнения таймера FT и признаки
пользователя FO a Fl.
ЛИТЕРАТУРА
1. В. В. Сташин и др. Проектирование цифровых устройств на однокристальных микроконтроллерах.- М.: Энергоатомиздат, 1990.
.
55

ЛЕКЦИЯ 13
↑@
УСТРОЙСТВА СОПРЯЖЕНИЯ МИКРОКОНТРОЛЛЕРОВ С
ОБЪЕКТОМ АВТОМАТИЗАЦИИ
1. Общие положения
Электрические сигналы по информационным параметрам делят на аналоговые (непрерывные) и дискретные, принимающие конечное множество значений.
Одним из многих правил, регламентирующих организацию сопряжения,
являются мероприятия направленные на передачу на расстояние электрических
сигналов. В рамках эти правил для двоичных сигналов (дискретных) устанавливают: потенциалы высокого и низкого уровней, коэффициенты нагрузки входа
и выхода, динамические параметры, допустимые расстояния передачи. Для
аналоговых сигналов – диапазон напряжений, полные сопротивления цепей и
допустимое время установления сигналов. Дополнительно для угольных шахт
(подземных выработок) определяют коэффициент искробезопасности электрических цепей этих сигналов.
Совокупность линейных, коммутирующих и других технических средств,
обеспечивающих прием-передачу сигналов (объект  МПУ), образуют
устройство связи (сопряжения) с объектом (УСО) или канал передачи. Электрические цепи, обеспечивающие передачу сигналов между двумя оконечными
формирователями, образуют линию связи – линейные средства сопряжения (провода, кабели с витыми парами проводов, высокочастотные коаксиальные кабели). Выбор тех или иных линейных средств определяется длиной линии
связи, параметрами передаваемого сигнала, наличием помех различного вида.
Если устройства системы автоматизации разнесены на значительные расстояния, например на 500 м, то трудно рассчитывать на то, что их «земли»
всегда имеют один и тот же потенциал. Поэтому уравнивающие токи по
«земляным» проводам создают импульсные помехи за счет их индуктивности
/2, стр.122-126/. Эти помехи поступают на входы микроконтроллера и могут
вызвать ложную информацию. Использование линий типа «дифференциальная
пара» / 2, §4.4 / позволяет подавлять лишь синфазные помехи и поэтому не всегда
дает положительные результаты. Поэтому для значительного повышения помехоустойчивости канала связи целесообразней применять оптронную развязку
(оптический изолятор), которая исключает уравнительные токи по общим
проводникам. На рис. 13.1 показаны схемы односторонних оптронных развязок
между двумя удаленными друг от друга устройствами – МПУ и объектом
автоматизации (датчиками и исполнительными устройствами автоматизации).
Схема с активным приёмником (рис 13.1.а) и с активным передатчиком
(рис. 13.1.б) содержат приемные оптроны VD1, VD3 и передающие дискретные
датчики. При замыкании контакта датчика ДK, включается светодиод оптрона
VD1, в результате чего транзистор этого оптрона насыщается, и на входе ППА
(порт PВ1) микроконтролера сигнал равен нулю, а при размыкании контактов
56
+ U2 –
U1 +
R1
УСО
R2
Линии связи
Объект
VD1 АОТ128
а)
ДК
VD2
U1 +
R3
R4
VD3 АОТ128
ДБ
VD4
б)
+ U1 –
D1 К555ЛН1
1
От ППА
МПУ
МП (ПВИ)
R5
VD5 АОУ103
РП
в)
Рисунок 13.1 – Схема оптронных развязок: а) с контактным датчиком
(дискретным); б) с бесконтактным датчиком (дискретным); в) с управляющим устройством объекта (МП – магнитным пускателем)
равен «1». Резисторы R2, R4, R5 служат для ограничения тока через светодиод
оптрона (I доп.опт  22 mA). Источник U2 искробезопасный и изолирован от
источника питания микроконтроллера U1. При таком включении канал связи
также искробезопасный, но при условии, что все дополнительно подключенные
к источнику (U2) реактивные элементы (L, C) не превышают значений допустимых параметров. Отличие схемы 13.1, б) от 13.1, а) заключается в том, что
датчик ДБ бесконтактный и его выходной сигнал, в стандарте ГСП, при выходном токе датчика равном 20 mA, равен «1», а при I вых  4 mA он равен «0».
Диоды VD2, VD4 служат для защиты светодиодов оптрона от обратного
напряжения (пробоя от импульсных помех).
Схема оптронной развязки дискретных управляющих (выходных) сигналов
показана на рис 13.1, в). При появлении на выходе ППА (PА0) микроконтроллера сигнала равного «1» переключается логический элемент Д1 (НЕ), тогда
выходной ток от источника U1 «+» (питание МПУ) поступает через R5,
светодиод оптрона VD5, открытый выходной транзистор D1, корпус (земля U1 « – »). Светодиод включает тиристор (управляемый диод) оптрона. Тиристор
оптрона VD5 подключен параллельно реле РП магнитного пускателя (ПВИ), это
равносильно подключению диода в схему реле РП, то есть произойдёт включение магнитного пускателя. При выключении светодиода оптрона VD5 (сигнал с
МПУ равен 0), тиристор закроется, но при нулевом значении тока в его цепи, так
как питание схемы РП (ПВИ) производится пульсирующим постоянным током.
Произойдет выключение реле РП и схема перейдет в исходное состояние. Цепь
57
дистанционного управления магнитным пускателем ПВИ искробезопасная, а
значение дополнительно подключенных реактивных элементов этой цепи
(оптрон – L, C) весьма незначительны, то их влиянием на параметры искробезопасности этой цепи можно пренебречь.
В соответствии с требованиями ГОСТ 22782.5-78 «Искробезопасные цепи»,
допустимое напряжение между входом и выходом оптронной развязки
должно быть – U доп.вх/вых  500В.
На рис. 13.2 показана схема сопряжения блока АЦП (БАЦП) микроконтроллера с аналоговыми датчиками (АД1,...,АД8) объекта автоматизации, обеспечивающая требуемый коэффициент искробезопасности (К и) линий связи.
Сигнал от датчика АД (К и.н = 2,5) поступает на вход БАЦП – резистор R п1.
Резистор R п1 обеспечивает преобразование токового сигнала (стандарт ГСП)
в сигнал напряжения (U вх.Ацп.н = I АД.н х R п1), тогда
R п1 = U вх.Ацп.н : I АД.н
АКН – аналоговый коммутатор напряжения на 8-м входных сигналов.
Для того чтобы исключить влияние источников питания БАЦП на искробезопасные цепи датчиков АД, сопротивление R з следует принимать как можно
большим. Но значительная величина R з приведет к возникновению недопустимых погрешностей преобразования (АЦП) сигнала от датчика. Поэтому для
возможности достижения оптимального значения R з, в схеме БАЦП предусмотрен эмиттерный повторитель ЭП.
Применение ЭП позволяет установить в схему развязки значительную величину сопротивления R з = 5 – 20 кОм, и при этом избавиться от вносимых им
R з.1
УСО
Линии связи
АД 1
R п9
к МПУ
АЦП ЭП АКН
R з.8
•
•
•
R п16
Объект
•
•
•
•
•
•
АД 8
Рисунок 13.2 - Схема сопряжения АЦП с аналоговыми
датчиками объекта автоматизации
дополнительных погрешностей. При повреждении элементов БАЦП, максимально возможное напряжение (U max) на R з не будет превышать 15В (напряжение питания БАЦП). Тогда дополнительный ток подпитки искробезопасной
цепи датчика АД составит:
58
I доп = Umax / R з = 15 · 103 = 0,0005 А = 0,5 мА
Это вызовет снижение К и.н на величину, значение которого определяется
Ки = I в / I р
(13.1),
где I в – воспламеняющий ток цепи, I в = К и.н х I АД.н = 2,5 х 20 = 50мА,
I р – рабочий ток, принимаем I р = I АД.н = 20 mA, тогда I*р = I р + I доп =
20 + 0,5 = 20,5 mA.
Подставив в формулу 13.1. полученное значение I*р, получим значение К и =
2,44. Это незначительное снижение К и электрической цепи датчика от К и.н =
2,5 не приведет к потере требуемой искробезопасности цепи датчика, так как
реальные значения К и электрических цепей датчиков больше значений К и.н;
к тому же все полученные значения параметров искробезопасности электрической цепи расчетные. Поэтому, в соответствии требований ГОСТ 22782.5 - 78,
любое разрабатываемое электроизделие для подземных условий эксплуатации
угольных шахт, с искробезопасными электрическими цепями, подлежит обязательному стендовому испытанию на искробезопасность электрических цепей
в МакНИИ.
Литература
1. Микропроцессоры. В 3 кн. Кн.2. Средства сопряжения; Под редакцией Л. Н. Преснухина. - Мн.: Высшая школа, 1987.
2. Микропроцессорные структуры. Инженерные решения. - М.: Радио и
связь, 1990.
3. ГОСТ 22782.5-78. Искробезопасные цепи.
59

ЛЕКЦИЯ 14
↑@
МИКРОКОНТРОЛЛЕРЫ PIC 17CXXX, AT 90SXXXX
1. Основные положения
Архитектура основана на концепции раздельных шин и областей памяти для
данных и для команд (двухшинная Гарвардская архитектура). Шина данных и память данных (ОЗУ) – имеют разрядность 8 бит, а программная шина и программная память (ПЗУ) имеют разрядность 14 бит. Такая концепция обеспечивает
простую, но мощную систему команд, разработанную так, что битовые, байтовые
и регистровые операции работают с высокой скоростью и с перекрытием по времени выборок команд и циклов выполнения. 14-разрядная ширина программной
памяти обеспечивает выборку 14-битовой команды в один цикл. Двухступенчатый конвейер обеспечивает одновременную выборку и исполнение команды.
Гарвардская архитектура и большая разрядность команды позволяют сделать код
команды более компактным, что существенно повышает скорость выполнения
программы. Команды выполняются за один цикл, исключая команды переходов.
PIC ОТР или АТ ОТР это однократно программируемые пользователем
микроконтроллеры, предназначенные для полностью оттестированных и законченных изделий, в которых коды программы и данные не будут изменятся.
Эти микроконтроллеры выпускаются в пластмассовых корпусах с предварительно заданным типом тактового генератора – кварцевым или RC. Для отладки
программ и макетирования, а также для изделий, программы которых могут
меняться, либо содержать переменные части (таблицы, параметры калибровки,
и т. д.), выпускаются микроконтроллеры PIC и АТ с электрически стираемой и
перепрограммируемой памятью программ и данных (FlashPROM и EEPROM).
Сторожевой таймер WDT – предусмотрен в микроконтроллерах PIC и АТ
для предотвращения последствий от сбоя выполняемой программы. Идея
использования этого таймера состоит в регулярном его сбрасывании под
управлением программы или внешнего воздействия до того, как закончится
его выдержка времени (16 – 6000 мс) и не произойдёт сброс МП. Если программа выполняется нормально, то команда сброса сторожевого таймера
CLRWDT должна регулярно выполнятся, тем самым не вызывая сброса МП.
Если же МП вышел за пределы, или зациклился на каком, либо участке программы, то команда сброса таймера не будет выполнена в течение заданного
времени, что вызовет прерывание от WDT и полный сброс МП контроллера.
Генератор тактовых импульсов микроконтроллеров PIC и АТ может
программно устанавливаться на один из четырёх режимов работы:

ХТ – кварцевый резонатор;

HS – высокочастотный кварцевый резонатор;

LP – микропотребляющий кварцевый резонатор;

RC – RC цепочка.
Кварцевый резонатор подключается к выводам OSC1 (XTAL1), OSC2 (XTAL2) МК.
60
Схема сброса – внутренняя, автоматически по вкл. питания (вход MCLR через
резистор подключается к +5 В), при этом счётчик команд устанавливает адрес
0000h. Аппаратный сброс (перезапуск МК) осуществляется кратковременной
подачей сигнала с уровнем «0» на вход MCLR.
Защита кодов программы. Программные коды, которые записаны в
кристалл, могут быть защищены от считывания при помощи установки бита
защиты (CP – бит секретности) в слове конфигурации в ноль. При этом содержимое памяти программ и данных не может быть прочитано, а также и
изменено. Если защита установлена, то бит CP можно стереть только вместе
с содержимым памяти программ и данных.
Энергосберегающие режимы работы. В микроконтроллерах PIC и АТ
предусмотрены два основных режима – режим холостого хода (IM) и режим
пониженного энергопотребления (PDM), а также режим подавления помех
при работе АЦП (ANRM). Переход в энергосберегающий режим происходит
при выполнении команды с мнемокодом SLEEP. Выход из энергосберегающего режима происходит при поступлении разрешенного запроса прерывания
или перезапуске микроконтроллера. В режиме подавления помех работе АЦП
(ANRM) микропроцессор также остановлен, как и в режимах IM и PDM.
Работают только АЦП, блок прерываний и сторожевой таймер. Выход из режима ANRM происходит по запросу прерывания от внешнего источника при
наличии запроса прерывания от АЦП или при перезапуске микроконтроллера.
Параметры напряжения, тока питания и температур.
Допустимое напряжение питания – Vdd (Vсс) = 2,7 … 6,0 В, в режиме
SLEEP можно снижать до 2,0 – 3,0 В.
Диапазон рабочих температур – коммерческий от 0 до +70С; промышленный –40...+70С; автомобильный –40...+125С.
Ток питания:
2 – 6,4 мА в рабочем режиме для Vсс (Vdd) = 5В и Fт = 4МГц;
80 мА для одного порта РХ (суммарно-допустимый);
0,5 – 1,6 мА для SLEEP режима (холостого хода) при Vcc = 2В.
Частота тактового генератора: 0 – 33МГц для PIC и 0 – 8 МГц для АТ.
Микроконтроллеры PIC и АТ подходят для широкого спектра приложений
от высокоскоростного управления электрическими двигателями до автоматизированных систем управления технологическими процессами. Встроенный
автомат последовательного программирования памяти EPROM/ЕEPROM/FlashРROM (интерфейс SPI или I2С) кристалла позволяет легко подстраивать программу и данные под конкретные требования даже после завершения ассемблирования и тестирования. Эта возможность может быть использована как
для тиражирования, так и для записи новых данных уже после окончательного тестирования.
Низкая цена, экономичность, быстродействие, простота и гибкость ввода/
вывода способствует широкому применению микроконтроллеров (МК) PIС и
АТ в микропроцессорных устройствах и системах автоматизированного управления.
61
2. Микроконтроллеры PIC17C756, PIC17C752
Микроконтроллеры семейства PIC фирмы Microchip представляют собой
8-разрядную однокристальную микро-ЭВМ с сокращённой системой команд
(RISC) – 58 команд. Изготавливаются МК по КМОП (CMOS) технологии. Микроконтроллер PIC17C756/752 имеет: внутреннюю программную память EPROM
(ППЗУ) – 16K x 16 / 8К х 16 бит; 8-разрядную память данных SRAM (ОЗУ статического типа для хранения данных) – 902 х 8 / 454 х 8 бит и 32 х 8 бит
регистров общего назначения. В МК предусмотрена возможность подключения
внешней памяти программ (ERAM) или дополнительных контроллеров периферийных устройств (системная шина внешней памяти – System Bus Interface).
Полная адресуемая память программ МК составляет 64К х 16 бит. Структурная
схема микроконтроллера PIC17C756/752 приведена на рис.14.1. Все команды
микроконтроллера состоят из одного машинного слова (14 бит) и исполняется команда за один цикл (120 нс при тактовой частоте 33 МГц, один цикл
состоит из четырёх периодов тактовой частоты МК – Fт), кроме команд перехода, которые выполняются за два цикла (240 нс). Микроконтроллер имеет мультивектор прерываний и шестнадцатиуровневый (16 х 16 бит) аппаратный стек.
Периферия микроконтроллеров PIC17C756/752 включает:
1. 50 линий двунаправленного ввода/вывода (параллельных портов – А, В,
С, D, Е, F, G) с индивидуальным управлением. Высокая нагрузочная способность
(35 мА макс. втекающий ток, 20 мА макс. вытекающий ток) линий портов упрощает внешние драйверы и, тем самым, уменьшается общая стоимость системы;
2. Четыре таймер/счётчика – один 16-битный – TMR0 с предварительным 8битным программируемым делителем (24-битный таймер), два 8-битных TMR1,
TMR2 и один 16-битный – TMR3. Основным элементом таймер/счётчика является базовый суммирующий счётчик, при переполнении которого формируется
запрос на прерывание ТMRХ. TMR может выполнять дополнительные функции:
 Функция захвата (capture) заключается в запоминании кода, формимируемого в счётчике, в специальном регистре захвата при изменении значения определяемого внешним (САР1 . . . САР4) или внутренним сигналом. При
этом формируется запрос на прерывание TMRX;
 Функция счёта реального времени (RTC) реализуется путём привязки
параметров процессов в таймере/счётчике к единице измерения реального времени – секунде, при использовании дополнительного внугринего генератора с
внешним кварцевым резонатором, частотой 32768 кГц (кварц для часов – OSC3);
3. WDT – сторожевой таймер предназначен для ликвидации сбоя при
выполнении программы, путём перезапуска МК при обнаружении сбоя;
4. PWM – три программируемых широтно-импульсных модулятора (ШИМ),
предназначенных для формирования на соответствующем выходе МК импульсной последовательности с заданными периодами повторения и длительностью импульсов (макс. частота импульсов: 8-бит = 130кГц, 10-бит = 32кГц);
5. Два USART (УСАПП) – последовательный универсальный синхроно-асинхронный приёмник/передатчик;
62
Рис. 14.1 – Структурная схема микроконтроллера PIC17C756/752
63
6. SSP – синхронный последовательный порт, обеспечивающий два интерфейсных режима работы:
 3-wire SPI – последовательный трёхпроводный порт ввода/вывода,
предназначен для обмена данными с другими устройствами, имеющими порт
SPI. Микроконтроллер, инициирующий обмен и вырабатывающий тактовый
сигнал является ведущим (master), а МК выполняющий обмен при поступлении тактового сигнала, является ведомым (slave). Максимальная скорость
передачи (в битах в секунду – бод) равна 1/4 частоты тактового сигнала МК.
К одному ведущему МК может быть подключено несколько ведомых. Функции
ведущего и ведомого микроконтроллера могут меняться в процессе работы;
 I2C (TWSI) – последовательный двухпроводный порт ввода/вывода,
предназначен для обмена байтами данных с другими МК по двухпроводной
шине I2C. К шине могут подключаться до 127 устройств (МК). Ведущий МК
посылает по шине сигнал начала обмена и занимает шину, затем посылает
адресный байт (выбор одного из ведущих устройств) и задание направления
обмена, после этого принимает или передаёт байты данных и посылает сигнал
окончания обмена. Ведомое устройство, опознав свой адрес, в зависимости от
заданного направления обмена принимает или передаёт данные. Устройство,
принимающее байты данных, после приёма каждого байта посылает по шине
сигнал подтверждения приёма. Адресный байт может содержать общий адрес
для передачи данных одновременно во все ведомые устройства. Максимальная
скорость обмена до 400 000 бит/с и задаётся ведущим устройством. Порт I2C
также используется при последовательном программировании памяти МК;
7. ADC – 10-разрядный 12-канальный аналого-цифровой преобразователь с
временем преобразования равном 120 нс. Погрешности АЦП – δ п.ш ≤ 4 МЗР,
δ л ≤ 1 МЗР, δ л.д ≤ 1 МЗР;
8. Блок прерываний (IU) организует переход к подпрограммам обработки
прерываний при поступлении запроса прерывания, если прерывание по данному
запросу разрешено, и он имеет более высокий приоритет, чем другие запросы
поступившие одновременно с ним. Приоритетность запросов заданна аппаратно.
Запросы на прерывания поступают из внешних источников (RESET, INT,
ТОСК1, прерывание от изменения сигналов порта РВ?) и источников расположенных во внутренних устройствах МК (ТMR, USARTRXC, USARTUDRE,
USARTTXC, ADC).
Микроконтроллеры PIC17C756/752 имеет внутреннюю программную память EPROM (ППЗУ – однократно программируемую, то есть PIC17C756/752 –
ОТР). Для отладки программ и макетирования, а также для изделий, программы которых могут изменяться, выпускаются МК PIC16FХХХ,
PIC18FХХХ с электрически стираемой и перепрограммируемой FlashPROM
и EEPROM (РППЗУ) памятью программ и данных.
Альтернативные функции разрядов портов МК приведены на рис. 14.1,
выбор выполняемой функции разрядом порта определяется типом команды.
Альтернативные функции разрядов портов МК:
INT – вход внешнего сигнала запроса прерывания;
TOCKI – вход сигнала запроса прерывания;
64
SS – сигнал переключения порта SPI, при SS = «1» порт в режиме ведущего,
а при при SS = «0» порт в режиме ведомого;
SCL, SDA – вход/выход сигналов последовательного интерфейса I2C;
SDI, SDO, SCK – вход/выход сигналов последовательного интерфейса SPI;
Rx1, Rx2, Tx1, Tx2 – вход/выход сигналов интерфейсов RS-232С;
DT1, DT2, CK1, CK2 – вход/выход сигналов УСАПП – готовности принимать
или передавать информацию;
CAP1 . . . CAP4 – вход сигналов захвата;
PWM1. . . PWM3 – выход сигналов широтно-импульсных модуляторов (ШИМ);
TCLK1 . . . TCLK3 – вход внешней тактовой частоты таймеров;
AD0 . . . AD15 – выход внешней адресной шины и шины данных, предназнаначенных для подключения внешней памяти программ (ERAM);
ALE – выход сигнала стробирования чтения/записи внешней памяти (ERAM);
OE, WR – выход сигналов чтения и записи внешней памяти (ERAM);
AN0 . . . AN11 – входы аналоговых сигналов АЦП;
VREF-, VREF+ – вход внешнего источника опорного напряжения АЦП.
Выводы Vcc и GND предназначены для подключения источника питания МК.
Разработка ППО на базе МК PIC16FХХХ, PIC17СХХХ, PIC18FХХХ поддерживается ассемблером, программным симулятором, внутрисхемным эмулятором
(только фирмы Microchip – интегрированная среда разработки приложений –
MPLAB) и программатором (PROPIC или Pony PROG).
3. Микроконтроллер АТmega8535
Микроконтроллеры корпорации Atmel хорошо известны как на мировом,
так и на украинском рынке и являются одним из признанных компонентов
МП устройств автоматизации. Это 8-разрядные высокопроизводительные RISC
МК общего назначения, объеденённых общей маркой AVR – АТ90, АТmega. и
АТtiny Они являются мощным инструментом для создания современных контроллеров автоматизации технологических процессов и объектов горных предприятий. В настоящий момент, соотношение «цена – производительность –
энергопотребление» для AVR является одним из лучших на мировом рынке.
Структурная схема микроконтроллера АТ90S8535 приведена на рис. 14.2.
Технические характеристики
•
•
•
•
•
•
•
•
•
Количество выводов в корпусе микроконтроллера …………………. 40
Тип корпуса ………………………………………………. PDIP, PLCC, TQFP
Число команд в системе команд …………………………………….…118
Максимальное значение тактовой частоты (Fт.макс), МГц…………. 8
Количество регистров общего назначения …………………………… 32 х 8
Ток питания (при Vcc = 3 B, Fт = 4 МГц и Т = 25°С), мА …………. 6,4
Ёмкость внутренний FlashPROM программ, Кбайт………………… 4/8
Ёмкость внутренний EEPROM (РППЗУ) памяти данных, байт …256/512
Ёмкость внутренний SRAM (ОЗУ), байт ………………………...…256/512
65
• Количество циклов программирования FlashPROM/EEPROM…. 1000/100 000
• Тип последовательного порта для программирования памяти
программ FlashPROM и чтения/записи памяти данных EEPROM……. SPI
Периферийные устройства
• Количество портов и программируемых дискретных вводов/выводов...4/32
• Число каналов и разрядность АЦП (ADC0…ADC7), бит…………... 8/10
• Тип программируемого последовательного порта (RXD, TXD)….… (UART)
• Количество 8-разрядных таймер/счётчиков типа А (Т/С0) и В (Т/С2).… 1 + 1
• Количество 16-разрядных таймер/счётчиков типа Е (Т/С1)………….. 1
• Программируемый сторожевой таймер (WDT)……………………..….. 1
• Число вводов аналого-цифрового компаратора (АС – AIN0, AIN1).... ...2
• Количество широтно-импульсных модуляторов (PWM) ……………… 3
• Число внешних прерываний (RESET, INT0, INT1)………………………3
Специальные функции
• Схема сброса – внутренняя, автоматически по вкл. питания
• Функция счёта реального времени (RTC)
• Время программируемой задержки WDT , мс…….….15 – 1900 (47 – 6000)
• Число внутренних прерываний (T/C0 COMP, T/C0 OVF, T/C1 COMPA,
T/C1 COMPB, T/C1 CAPT, T/C1 OVF, T/C2 COMP, T/C2 OVF, SPI STC,
UART RXC, UART UDRE, UART TXC, ADC CC, EE RDY, ANA COMP)....14
• Типы режимов SLEEP – режим холостого хода (IM), режим пониженного
энергопотребления (PDM), режим энергосохранения (PSM)
Оперативное напряжение питания
• Vcc = 4 – 6 В для АТmega8535S и Vcc = 2,7 – 6 В для АТmega8535L.
Для уменьшения помех АЦП, вызываемых работой процессора, предусмотрена возможность выполнения преобразования с переводом процессора в
режим холостого хода.
Микроконтроллеры АTmega 163 и АTmega 16 совместимы с МК АТ90S/L8535
и являются усовершенствованной моделью этого МК. Отличительные особенности МК АTmega 163 и АTmega 16 от МК АТ90S/L8535 приведены в табл. 14.1.
Таблица 14.1. Характеристики микроконтроллеров семейства AVR
Тип
МК
АТ90Х1200
АТ90Х2323
АТ90Х2343
АТ90Х4433
АТmega2313
АТmega8515
АТmega8535
АTtiny 12
АTtiny 15
АTtiny 28
АTmega 16
АTmega 163
АTmega 103
Flash SRAM EEPROM ERAM
(байт) (байт) (байт) (байт)
1К
64
2К
128
128
2К
128
128
4К
128
256
2К
128
128
8К
512
512
+
4/8К 512
512
1К
64
1К
64
2К
16К 1024
512
16К 1024
512
128К 4000 4000
+
I/O
15
3
5
20
15
32
32
6
6
20
32
32
48
Алтер.
TWSI
IU
SPI UART 2
T/C ADC AC PHM
функц
(I C)
(IR)
4
1
4
4
+
2
1
3
3
1
3
20
2
6
14
+
+
+
10
2
11
+
+
31
2
13
+
+
+
26
3
8
17
+
+
+
6
1
6
+
6
2
9
+
6
1
6
+ +
28
3
8
17
+
+
21
3
8
18
+
+
+
47
3
8
24
+
+
+
66
Рис.14.2 – Структурная схема микроконтроллера АТmega8535
67
Программирование микроконтроллера
Программирование микроконтроллера заключается в записи:
- кодов команд и констант в FlashPROM (память программ);
- кодов исходных данных в EEPROM (память данных);
- требуемых значений установочных битов и битов защиты (секретности).
В исходном состоянии МК во всех ячейках FlashPROM записан код $FFFF,
а во всех ячейках EEPROM – код $FF. Кроме того, в трёх специальных ячейках
памяти записаны сигнатурные байты, определяющие тип микроконтроллера.
Коды, записанные в FlashPROM, EEPROM, и сигнатурные байты, установочные
биты, биты защиты могут быть прочитаны, для контроля правильности. В микроконтроллерах семейства AVR имеются два бита защиты – LB1 (защита от
записи при LB1 = «0») и LB2 (защита от чтения при LB2 = «0»).
В микроконтроллере АТmega8535 реализуется последовательное программирование без использования дополнительного источника питания – LVSP, при этом
вывод RESET соединён с шиной GND. Для ввода/вывода байта при программировании используются три вывода – MOSI, MISO и SCK (интерфейс – порт SPI).
После завершения программирования размыкается соединение вывода
RESET с шиной GND, и микроконтроллер переходит к выполнению записанной программы, начиная с команды, записанной по адресу $0000.
Разработка ППО на базе МК семейства AVR поддерживается интегрированной средой разработки приложений AVR Studiо. AVR Studio содержит: транслятор языка ассемблера (AVR macroassembler); отладчик (Debuger); программное
обеспечение верхнего уровня для поддержки внутрисхемного программирования
(ISP). Отладчик AVR Studio поддерживает все типы МК AVR и имеет два режима
работы: режим программной симуляции и режим управления различными типами
внутрисхемных эмуляторов. Отладочная среда поддерживает выполнение программ как в виде ассемблерного текста, так и исходного текста языка С.
AVR Studio – последняя версия всегда доступна на сайте фирмы Atmel.
Аппаратные средства поддержки разработок
Для аппаратной поддержки разработок, Atmel предлагает следующие устройства: 1. Стартовый набор – для практической разработки приложений. На платах этого набора установлены все необходимые для работы элементы. Из всех
наборов наиболее универсальным является STK500. В некоторых случаях эти
наборы могут использоваться как готовые блоки проектируемой аппаратуры;
Внутрисхемные программаторы. Программирование МК семейства AVR
производится с использованием последовательного синхронного интерфейса SPI,
что позволяет применять простые программаторы, называемые внутрисхемными.
Программатор АТ90ISP реализован на МК АТ90S1200 с первой версией прошивки. Вторая версия прошивки поддерживает более широкую номенклатуру
МК AVR. Программатор АТAVRISP является самым новым и поддерживает
все выпускаемые на сегодня МК AVR с внутрисхемным программированием;
Специализированные наборы разработчика – для разработки и макетирования встраиваемых устройств (например, АТ90EI для разработки web-серверов).
68
ЛЕКЦИЯ 15

↑@
МИКРОПРОЦЕССОР I80286
Дальнейшим развитием микропроцессорного комплекта (МПК) серии К580
является МПК К1810 (I8086). В состав комплекта входят следующие микросхемы: К1810 ВМ86 – 16-разрядный МП; К1810ГФ86 – тактовый генератор;
К1810ВК88 – системный контроллер; К1810ВН59А – контроллер прерываний;
К1810ВБ89 – арбитр шины.
МП К1810ВМ86 в сравнении с МП К580ВМ80А (I8085) отличается следующим: более высокая степень интеграции транзисторных структур на кристалле; повышена тактовая частота до 8 МГц; введена регистровая память очереди выполняемых команд; повышена разрядность шины данных до 16 и
шины адреса до 20, то есть адресация памяти ёмкостью до 1 Мбайта; расширен набор команд. Данные усовершенствования позволили повысить производительность МП примерно на порядок.
Сумматор
адреса (SM)
Регистр CS
- “DS
- “SS
- “ES
- “IP
Регистр
обмена
AX
BX
CX
DX
AH
BH
CH
DH
AL
BL
CL
DL
SI
DI
BP
1
Регистры 2
очереди 3
команд 4
(6 х 8 раз.) 5
6
Микропрограммное
устройство
управления
(MCU)
SP
Буфер
Адреса/
Данны
х
A15/D15...A8/D8
(2 ... 16, 39)
35-
Устройство Управления и Синхронизации
Устройство сопряжения с шиной
16-ти
разрядное
АЛУ
(ALU)
OF EF FP TF SF ZF AF PF
Операционное устройство
RF
34
25
24
32
29
33
27
26
23
22
19
21
18
17
30
31
33
CF
A19/S6...A16/S3 - Адрес
BHE/S7 - Разр. адр. 16 / 8
ALE(QS0) - Строб адреса
INTA(QS1) - Подтвер. пр.
RD – Чтение
WR (LOCK) – Запись
M/IO(S2) – Памznm/УВВ
DT/R(S1)– Направл. пер.
DEN(S0)- Разрешен. пер.
TEST – Проверка
READY – Готовность
CLK –Тактов. импульсы
RESET – Сброс
INTR - Маскир. прерыван.
NMI– Немаск. прерыван.
HLDA(RQ/GT1) – Подтв.
HOLD(RQ/GT0) - Захват
MN/MX – Режим работы
Рис.15.1. Структурная
схема МП I8086
П р и м е ч а н и е. Вводы-выводы МП показанные курсивом включаются и используются
при максимальном режиме.
1. СТРУКТУРНАЯ СХЕМА МИКРОПРОЦЕССОРА
Структурно схему МП можно разбить на три части; операционное устройство, устройство сопряжения с шиной и устройство управления и синхрони69
зации. Структурная схема МП I8086 приведена на рис.15.1. Операционное
устройство – осуществляет выполнение команд – обработку данных.
Устройство сопряжения с шиной – выполняет действия связанные с формированием адресов, вызов команд и их хранение до начала выполнения. Управляющее устройство – формирует сигналы управления, которые обеспечивают
функционирование системного интерфейса.
Регистры операционного устройства. Блок регистров общего назначения
(РОН) состоит из четырёх 16-ти разрядных регистров А, В, С, D. При использовании 8-ми разрядных слов каждый регистр разбивается на два 8-ми разрядных, при этом левый (старший) обозначается АН, правый (младший) АL,
аналогично и регистры В, С и D (см. рис.15.1). Если эти регистры используются как 16-ти разрядные, то они обозначаются – АХ, ВХ, СХ, DX. Выполняемые функции этими регистрами; регистр А – функции аккумулятора, В –
функции базового регистра, адресация данных в ОЗУ (в МП К580ВМ80А
близки по функциям пара регистров НL при косвенной адресации), С –
функции счётчика, D – функции хранения данных.
В МП I8086 предусмотрены ещё четыре 16-ти разрядных регистра: BP –
указатель базы; DI – индекс приёмника; SI – индекс источника; SP (из них
лишь регистр SP – указатель стека имеет аналог в МП К580). Данные
регистры используются для формирования адресов.
Регистр признаков (флагов) – 16-разрядный, используются только 9 разрядов
(см. рис. 15.1). Назначение флагов регистра признаков RF: флаг CF – перенос (0й бит); PF – чётность (2-й бит); AF – вспомогательный перенос (4-й бит); ZF –
нуль (6-й бит); SF – знак (7-й бит); TF – пошаговый режим (8-й бит); IF –
разрешение прерываний (9-й бит); DF – направление изменения адреса (10-й
бит); OF – переполнение (11-й бит).
Регистры устройства сопряжения с
Память
шиной. Это пять регистров – CS, DS, SS,
ES и IP – указатель команд (лишь регистр
(CS)
Сегмент кода
IP имеет аналог в МП К580, к нему близок
по функциональному назначению регистр
(DS)
Сегмент данных
РС – счётчик команд). Остальные четыре
Дополнительный
регистра предназначены для указания
(ES)
сегмент
сегмента памяти, в которой находится
ячейка памяти. Основное назначение ре(SS)
Сегмент стека
гистров; регистр CS – сегмент программы, DS – сегмент данных, SS – сегмент
Рис. 15.2. Вариант последовательного стека, ES – дополнительный сегмент. Вариант последовательного расположения
расположения сегментов
сегментов в памяти показан на рис.15.2.
Формирование адреса памяти. Приёмы косвенной адресации в МП I8086
более сложные, чем в МП К580, эти приёмы показаны на рис. 15.3. В ОЗУ выделяются области (сегменты) содержащие по 64 Кбайт памяти с последовательно
нарастающими адресами. Для указания начальных адресов сегментов, в зависимости от характера информации, используются соответствующие сегментные
70
регистры (CS, DS, SS, ES). Сегментные регистры программно доступны, то
есть в памяти могут быть назначены (установлены) необходимые сегменты.
ВХ
или ВР
или SI
или DI
+
CS
DS
SS
ES
0000
0000
0000
0000
ВХ
или ВР
+
+
SI
или DI
Физический адрес
Рис. 15. 3. Способы формирования адреса
Исполнительный адрес операнда можно представить, суммой содержимого
указанного в команде (регистре) и представленного в непосредственной форме
(числа) смещения. Формирование исполнительного адреса может производиться
и более сложным путём, обычно используемым при обработке последовательности символов.При этом к некоторой базе, хранящейся в базовом регистре
ВХ или ВР, прибавляется содержимое индексного регистра DI или SI и
смещения.
В зависимости от характера хранимой информации в ячейке, начальным
адресом сегмента является содержимое регистра CS или DS или SS или ES
сдвинутое влево на 4 разряда, а положение ячейки в сегменте определяется
исполнительным адресом. Физический адрес ячейки формируется с помощью
сумматора SM (см. рис.1), путём суммирования начального адреса сегмента с
исполнительным 16-ти разрядным адресом в форме 20-ти разрядной кодовой
комбинации, которая и устанавливается на адресной шине МП. Пример определения физического адреса приведен на рис. 15.4.
Блок регистров очереди команд
объёмом 6 байт, позволяет подавать
Эффективный
1
А 7
С h команды в операционное устройство
адрес или смещение
+
+
+
без задержки, а также обеспечивает
Сегментный адрес
2
2
3
5 h
возможность паралелльного выполФизический адрес
2
3
D
C
C
нения – процесса выборки команд
h
из памяти и процесса их выполнеРис. 15. 4. Определение физического адреса нения.
2. СТРУКТУРНАЯ СХЕМА МИКРОПРОЦЕССОРНОГО УСТРОЙСТВА
На рис.15.5 показан простейший вариант структурной схемы МП устройства
(МПУ) на МП I8086. Из-за увеличенной разрядности шин, при использовании
микросхемы этого МП с ограниченным числом выводов (40 выводов), невозможно выполнить раздельные шины адреса и данных, как это сделано в МП
К580. Поэтому в МП I8086 используется совмещение функций 16 выводов
(обозначенные А/D15…А/D0) в разные временные интервалы (мультиплексирование), используя их как адресные выводы, либо как выводы данных. Для
71
формирования 20-ти разрядного адреса, предусмотрены дополнительно 4 адресных вывода А19…А16 (старшие разряды адреса). С выводов А19…А16 и
А/D15…А/D0, адрес через буферный регистр БРА поступает на 20-ти разрядную шину адреса (ША) МП системы.
Режимы работы
В МП I8086 предусмотрена возможность программированного набора
группы управляющих сигналов взависимости от его использования. Эта настройка осуществляется с помощью сигнала на выводе МN/MX который определяет
режим работы МП – минимальной или максимальной конфигурации. Каждый
режим характеризуется сложностью проектируемой МП системы. При подключении вывода МN/MX к +5В МП переключается на режим минимальной конфигурации, в котором все сигналы управления (RD, WR, M/IO, ALE, DT/R, DEN,
INTA, а также 16-раз. адрес) вырабатываются самостоятельно МП (см. рис.15. 5).
В максимальном режиме (МN/MX = 0) МП ориентирован на использование в
мультипроцессорных системах с организацией системной шины типа Мультибас. В таком режиме МП не вырабатывает самостоятельно значительную часть
управляющих сигналов, а формирует эти сигналы системный контроллер шины,
подключённый к выводам МП - DT/R (S0), DEN (S1), M/IO (S2). Дешифрируя
код состояния (S0, S1, S2) системный контроллер формирует сигналы, необходимые для организации цикла обмена с памятью и внешними устройствами
(описание этого режима см. Микропроцессоры / К.Г. Самофалов, с. 254).
ГТИ
CLK
RD
WR
M/IO
READY
RESET
ALE
BHE
A19...A16
20-ти разрядная ША
БРА
ВНЕ
ПАМЯТЬ
A/D15...A/D0
+5В
MN/MX
DT/R
DEN
БРД
УВВ
16-ти разрядная ШД
Рис. 15. 5. Вариант построения МПУ на МП I8086
Начальная установка МП I8086
При подаче на вход RESET сигнала высокого уровня (длительностью t ≥ 50
мкс) происходит сброс МП, при этом состояние сигналов МП приведены в табл. 15. 1.
После снятия сигнала сброса МП начинает выполнять внутренние операции, в результате чего в регистры МП будут записаны следующие значения:
CS ← FFFFh, DS ← 0000h, SS ← 0000h, ES ← 0000h, IP ← 0000h. Для выполнения внутренних операций МП требуется 8 тактов, за которые он перейдёт
к такту Т1 первой выполняемой команды. Так как после сигнала сброса
72
Таблица. 15. 1. Состояния сигналов МП при сбросе
Сигнал (вывод)
Состояние или уровень сигнала
Высокоимпедансное состояние
А/D15…А/D0
А19 (S6)…А16 (S3)*
Высокоимпедансное состояние
M/IO (S2)
Переход через 1 в высокоимпедансное состояние
ВНЕ/ S7
Переход через 1 в высокоимпедансное состояние
DT/R (S0)
Переход через 1 в высокоимпедансное состояние
DEN (S1)
Переход через 1 в высокоимпедансное состояние
RD (LOCK)
Переход через 1 в высокоимпедансное состояние
Переход через 1 в высокоимпедансное состояние
WR
ALE (QS0)
0 (1)
HLDA (RQ/GT1)
0 (1)
INTA (QS1)
0 (0)
RQ/GT0
1
0…0
Флаги регистра RF
*(S3) – все сигналы, приведенные в скобках – сигналы при максимальном режиме.
содержимое сегментного регистра команд становится равным CS = FFFFh, а
содержимое регистра команд IP = 0000h, то МП извлекает первую команду
из ячейки памяти по адресу FFFF0h. Как правило, в этой ячейке хранится
код команды безусловного перехода JMP, которая указывает на начало
системной программы.
Обмен с памятью
В МП I8086 реализован принцип раздельного управления памятью и
устройствами ввода-вывода. Значение сигнала на выводе МП М/IO определяет
назначение выдаваемого адреса. При уровне логической 1 на этом выводе, инициируется работа блоков памяти, а при уровне логического 0 – работа устройств
ввода/вывода (УВВ – периферийных устройств). Сигналы RD, WR определяют
вид обмена между МП и этими устройствами; при RD = 0 осуществляется чтение
и приём данных через шину данных (ШД) в МП, а при WR = 0 производится
запись выводимой из МП информации в блоки памяти или УВВ.
Для управления обмена с памятью (М/IO = 1) используются либо сигналы
RD, WR, ALE, ВНЕ, А0 снимаемые с выводов МП (минимальный режим), либо
сигналы снимаемые с выводов системного контроллера MWTC, MRDC, AMWC
(максимальный режим). Всё адресное пространство памяти состоит из двух
блоков. Один из блоков (верхняя часть памяти – нечётные адреса) связан со
старшим байтом ШД, другой (нижняя часть памяти – чётные адреса) с младшим
байтом. Выбор того или другого либо обоих блоков памяти осуществляется
с помощью сигнала ВНЕ (выборка блока памяти с нечётными адресами) и
значения младшего разряда адреса А0 в соответствии с табл. 15.2.
За одно обращение к памяти МП считывает два байта, если младший байт
слова расположен в памяти с чётными адресами (тогда старший байт в памяти
с нечётными адресами – верхняя память). Если младший байт слова расположен в памяти с нечётными адресами, то для извлечения слова (двух
байтов) требуется два цикла обращения к памяти.
73
Гибкость интерфейсных средств реализующих обмен с памятью, обеспечивается
командами пересылки (45 видов, 2695 кодов
команд), которые реализуют как обмен и
сохранение данных 8 и 16-ти разрядных
регистров МП с памятью (пересылки типа
R ↔ M), так и новый вид пересылок байт и
слов память – память (М ↔ М).
Таблица 15. 2.
ВНЕ
А0
0
0
0
1
1
0
1
1
Передаваемый байт
Оба байта
Верхняя память (D15...D8),
нечётные адреса
Нижняя память (D8...D0),
чётные адреса
Запрещён обмен
Обмен с устройствами ввода-вывода
МП допускает два метода обмена с устройствами ввода-вывода (УВВ).
Первый метод – предусматривает обращение к внешним устройствам как
к ячейкам памяти. При этом в полном адресном пространстве памяти 1 Мбайт,
выделяется область ячеек памяти для обмена с УВВ. Эта область пропорциональна количеству обслуживаемых внешних устройств, что может вызвать
уменьшение рабочей памяти МПУ. Поэтому этот метод используется при
небольшом количестве обслуживаемых УВВ.
Второй метод – предусматривает раздельное управление обменом с памятью
и УВВ. Для данного метода в системе команд МП предусмотрено 8 видов
команд ввода-вывода, которые могут обслуживать 64 Кбайт устройств ввода и
64 Кбайт устройств вывода. Эти команды используют 16-ти или 8-разрядный
адрес и обеспечивают связь между 16-разрядным аккумулятором (АХ) или его
восьмиразрядной половиной (AL) и УВВ. Соответственно 16 и 8-разрядные
команды ввода-вывода обеспечивают два вида адресации – прямую (в команде
8-разрядный адрес) и косвенную регистровую, с использованием регистра DX.
При данном методе адресное пространство памяти не используется, поэтому
механизм сегментации в командах ввода-вывода отсутствует.
В минимальном режиме МП самостоятельно формирует управляющие сигналы RD, WR для организации обмена с внешними устройствами (УВВ), а в
максимальном режиме чтением и записью в УВВ управляет системный контроллер шины с помощью сигналов IORC и IOWC. Достоинство данного метода
является значительное увеличение скорости обмена информацией, в сравнение
с первым методом, за счёт коротких и «быстрых» команд IN и OUT. Однако,
самое высокое быстродействие обмена информацией между память и внешними устройствами обеспечивается за счёт применения контроллеров прямого
доступа к памяти (DMA).
Логика действия сигналов шин МП при минимальном
режиме
В МП I8086 нет такого многообразия машинных циклов, как у МП
К580ВМ80А. Операция чтение или запись в память и внешние устройства занимает один машинный цикл, состоящий из четырёх тактовых интервалов. Временная диаграмма цикла шины МП в минимальном режиме (конфигурации)
при выполнении операции чтения изображена рис. 15.6, а). В такте Т1 МП
выдаёт на выводы А19,…, А16 и А/D15,…, А/D0 адрес памяти или внешнего
74
устройства (на шины А19, …, А16 при обращении к внешним устройствам
выдаются сигналы низкого уровня). По заднему фронту сигнала ALE в этом
такте происходит фиксация адреса в буферном регистре БРА, на время равное
длительности машинного цикла. В такте Т2 ША и ШД переходит в высокоимпедансное состояние. При этом на выводах А16/S3 и А17/S4 выдаётся информационный код используемого сегментного регистра (00 – сегмент ES; 01 – CS;
10 – SS; 11 – DS). На выводе А18/S5 устанавливается значение триггера разрешения прерывания (IF), а на выводе А19/S6 – сигнал низкого уровня. Буферный
регистр данных (БРД) переключается на обмен по ШД в требуемом направлении
с помощью сигнала DT/R, а сигнал DEN информирует приёмопередатчики о
готовности МП принять или передать данные – устанавливаются данные на ШД
МП. В такте Т3 и Т4 осуществляется чтение данных (сигнал RD) через ШД в
МП. И в такте Т4 шина адреса и ШД переходит в высокоимпедансное состояние.
Временная диаграмма цикла шины МП в режиме минимальной конфигурации при выполнении операции записи в память или внешние устройства
изображена рис. 15.6, б). Отличием от режима чтения является то, что в такте
Т2 шина адреса и шина данных не переходит в высокоимпедансное состояние, так как на ней устанавливаются выводимые данные. Кроме того, в режиме
записи используется сигнал WR.
Т1
Т2
AD15-AD0
АДРЕС
A16 ... A19
АДРЕС
Т1
Т3
Т4
CLK
СОСТОЯНИЕ
Т3
Т4
CLK
ДАННЫЕ
Т2
AD15-AD0
АДРЕС
ДАННЫЕ
A16 ... A19
АДРЕС
СОСТОЯНИЕ
BHE
BHE
ALE
ALE
M/IO
M/IO
RD
WR
DT / R
DT / R
DEN
DEN
а)
б)
Рис. 15. 6. Диаграмма цикла шин МП в минимальном
режиме при чтении – а), при записи – б)
Подсистема прерываний
В МП I8086 применена подсистема векторного прерывания, предусматривающая 256 переходов (векторов) в подпрограммы обработки прерываний. В МП
имеется два входа (INTR, NMI) для запросов на прерывания от внешних
устройств, то есть аппаратно предусмотрено двухуровневое прерывание, но за
счёт применения аппаратных (контроллеров прерываний) и программных средств
можно реализовать 256 уровней прерывания. Подсистема прерываний МП может
осуществлять; внутрение прерывания, программные прерывания, внешние прерывания, структурная схема подсистемы прерываний МПУ показана рис. 15. 7 а).
Внутренние прерывания происходят при делении на нуль – адрес вектора
этого прерывания 00000h (рис. 15.7 б).
75
Программные прерывания МП происходят: при установке флага Т в «1»
(пошаговый режим) – адрес вектора (перехода на подпрограмму) этого прерывания 00004h; при выполнении команды INT 3 – адрес вектора этого программного прерывания 0000Ch; при выполнении команды INTО (прерывание по
переполнению, при установке флага OF в «1»); при выполнении команды INTv
(прерывание – точка входа в подпрограмму обработки прерывания задаётся
8-разрядным кодом v), см. рис. 15. 7 а).
Запросы маскируемого прерывания
Запросы немаскиемого прерывания
Контроллер прерываний (ПКП)
INTR
Логика прерываний
NMI
МП
00000
00004
CS
IP
Команда
INT 3
Вектор 3.
00010
00014
Вектор 4.
ПОШАГОВЫЙ
РЕЖИМ
НЕМАСКИРУЕМЫЕ
ПРЕРЫВАНИЯ
КОМАНДА INT 3
Вектор 5.
КОМАНДА INT
•
•
0007С
Команда
INT v
ДЕЛЕНИЕ НА НУЛЬ
Вектор 2.
00008
0000С
Вектор 6
•
•
О
ВЫПОЛНЕНИЕ
|
КОМАНД
IN
Вектор 31
00080
Деление Пошаговый
режим
на нуль
Вектор 1.
Вектор 32.
|
(СИСТЕМНЫЕ
ПРОГРАММЫ)
003FD
а)
б)
Вектор 256
ПРОГРАММЫ
ПОЛЬЗОВАТЕЛЯ
Рис. 15. 7. Структурная схема подсистемы прерываний – а); адреса векторов - б)
Немаскируемые прерывания. Запросы на прерывания от внешних устройств
по входу NMI не могут быть прерваны, поэтому для защиты программы обработки прерывания от повторных прерываний, запрос на прерывание по входу
NMI воспринимается только по переднему фронту импульса запроса.
Маскируемые прерывания. Запросы на прерывания, поступающие от внешних устройств на вход INTR МП, будут обрабатываться, только при установке
флага IF в «1». Расширение количества внешних прерываний поступающих на
вход INTR и программная установка приоритетов прерываний осуществляется
применением в МП системах контроллеров прерываний (ПКП, см. рис. 15.7, а).
Подпрограмма обработки прерывания должна завершаться командой возврата
IRET, которая восстанавливает содержимое счётчика команд IP, сегментного
регистра CS и регистра флагов RF. Каждое маскируемое прерывание – внешнее
устройство имеет индивидуальную подпрограмму обработки прерывания в
отличие от немаскируемых прерываний. Число тактов, необходимых для выполнения только команд вызова и возврата из подпрограммы обработки прерывания, равно 52.
3. ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ АССЕМБЛЕРА
СИСТЕМА КОМАНД
Общий формат команд МП приведен на рис.15.8. Первый байт команды содержит код операции (КОП), который присутствует во всех командах, младший
разряд w этого байта определяет разряд операнда. Если w = 0, то операнд
однобайтовый, если w = 1, то операнд двухбайтовый.
76
Второй байт команды – при
К О П w mod reg r/m disp 8/16
data 8/16
значении mod = 11В, поле reg
или r/m определяет адрес реги1 байт
1 байт
1 или 2 байта 1 или 2 байта
стра общего назначения (РОН)
Рис.15. 8. Формат команд МП
в соответствии с табл.15. 3.
При соответствующих значениях mod ≠ 11В и r/m, определяются способы
формирования исполнительного адреса в сегменте данных или стеке, показанны в табл. 15. 4.
Таблица 15. 3
Поле reg
w=0
w=1
или r/m
000
001
010
011
100
101
110
111
AL
CL
DL
BL
AH
CH
DH
BH
AX
CX
DX
BX
SP
BP
SI
DI
Таблица 15. 4
mod
r/m
000
001
010
011
100
101
110
111
00
01
BX + SI BX + SI + disp8
BX + DI BX + DI + disp8
BP + SI BP + SI + disp8
BP + DI BP + DI + disp8
SI
SI + disp8
DI
DI + disp8
disp 16
BP + disp8
BX
BX + disp8
10
BX + SI + disp16
BX + DI + disp16
BP + SI + disp16
BP + DI + disp16
SI + disp16
DI + disp16
BP + disp16
BX + disp16
Использование сегментации памяти позволило уменьшить число разрядов
отводимое для адреса памяти в коде команды, а также организовать защиту
областей памяти от непредвиденного доступа. Выбор сегментного регистра для
вычисления физического адреса производится МП автоматически в зависимости от вида извлекаемой из памяти информации. Если извлекается команда,
то для определения физического адреса используется содержимое регистра
CS, при извлечении данных – содержимое регистра DS, при обращении к
стеку – содержимое SS, а при манипуляции со строковыми переменными
содержимое регистров DS и ES. Пользователь может программно выбрать (стековый) регистр, поставив перед выполняемой командой префикс 001ХХ110
(SEC SR), с помощью которого задаётся сегментный регистр, используемый
при формировании адреса данной команды.
Подробное описание система команд МП I8086 / 1, с. 144/.
ТИПЫ ИМЁН АССЕМБЛЕРА
16-разрядный адрес (смещение) в сегменте
памяти для однобайтовой переменной;
WORD PTR и DWORD PTR – тоже для двухбайтовой и четырёхбайтовой
переменной;
NEAR PTR – тоже для команды, на которую выполняется переход внутри
сегмента;
FAR PTR – тоже для межсегментного перехода;
NUMBER – обозначает произвольное 16-разрядное число;
Преобразование типов данных производится с помощью следующих операторов: OFFSET преобразует адрес представленный 16-разрядным смещением в
сегменте, в число (PTR → NUMBER);
BYTE
PTR – обозначает
77
SEG преобразует 16-разрядный базовый адрес сегмента в число (PTR ←
NUMBER).
ПСЕВДОКОМАНДЫ АССЕМБЛЕРА
В табл. 15.5 приведен список основных псевдокоманд, используемых для
сообщения транслятору (Ассемблеру) необходимой информации.
Псевдокоманды EQU, DB, DW аналогичны Ассемблеру МП К580ВМ80А.
Таблица 15. 5.
Имя псевдокоманды
PROC
SEGMENT
ASSUME
DD
ENDS
ORG
END
ENDP
Пример записи
Выполняемые действия
UC3 PROC NEAR Заголовок процедуры UC3
CSEG SEGMENT Определение начала CSEG в сегменте
ASSUME CS:CSEG Установка значения сегментного регистра CS
при выполнении программы
X1 DD
Резервируется память для 4-х байтовой
переменной Х1
CSEG ENDS
Конец кодового сегмента
ORG 0800H
Исполнительный адрес 1-й команды
UKIU END
Конец программы с именем 1-йкоманды UKIU
UC3 ENDP
Конец процедуры UC3
Для обозначения переменной используется символ «?». Запись n DUP (?) означает массив из n переменных, а приведенное перед псевдокомандой имя в графе
метки есть имя массива и одновременно имя его первого элемента. После
метки псевдокоманды двоеточие не ставится (в отличие от меток команд).
СПОСОБЫ АДРЕСАЦИИ
МП I8086 по сравнению с МП К580. предоставляет более широкие возможности адресации данных:
Прямая адресация – исполнительный адрес данных является частью
команды. Например, по команде ADD AL, MAS + 7 будет выполнена операция
(AL) ← (AL) + MEM (MAS + 7). По этой команде к содержимому регистра (AL)
будет прибавлено содержимое ячейки памяти с адресом (MAS + 7), то есть
вторым операндом будет восьмой элемент массива однобайтных данных (MAS).
Так как в программе массив (MAS) с помощью соответствующей псевдокоманды DB будет объявлен массивом однобайтных переменных, то не требуется указаний о типе операнда.
Регистровая адресация – адресами операндов являются регистры общего
назначения МП. Например, команда ADD АХ, ВХ выполняет операцию (АХ) ←
(АХ) + (ВХ). В качестве регистров могут использоваться регистры АХ, .., DI
(для двухбайтовых данных) или регистры АL,..., DL (для однобайтовых данных).
Непосредственная адресация – операнд представляется константой в самой
команде. Например, команда MOV AL, 07H выполняет операцию (AL) ← (AL) + 7.
Косвенная регистровая адресация – адресом данных является содержимое
одного из регистров BX, SI, DI. Например, команда ADD AL, BYTE PTR [BX]
производит суммирование содержимого регистра (AL) и ячейки памяти, адресом которой служит содержимое регистра [BX]. Имя BYTE PTR указывает тип
данных – однобайтовый операнд.
78
Адресация по базе или с индексированием используется, когда операнд
является одним из элементов массива данных. При этом начальный адрес (база)
или смещение (индекс) представляются содержимым одного из базовых регистров ВХ, ВР или одного из индексных регистров SI, DI. Пример адресации по
базе – в команде ADD AX, WORD PTR [BX + 9] или ADD AX, WORD PTR [BX]. 9
в качестве второго операнда в команде используется содержимое ячейки
памяти, адресом которой служит сумма содержимого регистра базы (ВХ)
и константы 9. Имя WORD PTR указывает тип данных – двухбайтовое слово
(операнд).
Пример адресации с индексированием – команда ADD AX, MAS + n [DI]
производит суммирование содержимого регистра (AХ) и ячейки памяти, адрес
которой равен MAS+n+[DI]. Здесь MAS – начальный адрес массива, n – числовая
константа. Тип считываемых данных определяется псевдокомандой массива
MAS.
Адресация по базе с индексированием – исполнительный адрес определяется суммированием содержимого базового регистра (ВХ или ВР), индексного
регистра (SI или DI) и константы (присутствие константы необязательно).
Например, ADD AL, BYTE PTR [BX]. 5 [DI] или ADD AL, BYTE PTR
[BX+5+DI].
ПРИМЕРЫ ПРОГРАММИРОВАНИЯ
Пример 1. Найти среднее арифметическое 16-ти двухбайтовых элементов
массива MAS, результат (RES) поместить в память.
Программа решения задачи приведена в табл. 15. 6.
Программа предусматривает размещение команд и данных в общем сегменте CS с базовым адресом SEG0 (0000H). Псевдокоманда ASSUME сообщает, что во время выполнения программы сегментный регистр CS будет
содержать адрес SEG0.
Псевдокоманда ORG – размещение в сегменте начинается с адреса 0100Н,
относительно начала сегмента. Метка START – начало команд программы.
Первая команда программы MOV BX, OFFSET MAS предусматривает пересылку начального адреса массива MAS в регистр ВХ. Представление этой
команды в виде MOV BX, MAS было бы воспринято Ассемблером как пересылка первого элемента массива MAS в регистр BX, а не адреса его размещения. Таким образом, OFFSET MAS есть число, равное начальному адресу
размещения массива MAS.
Команда СМР ВХ, OFFSET MAS +32 производит сравнивание содержимого
регистра ВХ с адресом, следующим за адресом последнего элемента массива
(32), затем при выполнении команды сравнения JNZ Lb1 происходит переход
на метку М1 (команду), если не все элементы массива считаны.
Команда SAR АХ, 4 производит сдвиг содержимого регистра (АХ) на 4 разряда вправо, что равносильно делению на 16. Для деления можно использовать команду IDIV, но это приведёт к 8-разрядныму результату в регистре
(AL), а при использовании сдвига результат 14-разрядный.
79
Таблица 15. 6.
Метка
Мнемокод
Комментарий
SEG0
SEGMENT SRC
ASSUME CS: SEG0
ORG 0100h
START: MOV BX, OFFSET MAS
MOV AX, 0000h
Lb1:
ADD AX, WORD PTR [BX]
ADD BX, 2
СМР ВХ, OFFSET MAS+32
JNZ M1
SAR АХ, 4
MOV RES, AX
MAS
DW 16 DUP (?)
RES
DW ?
ENDS
SEG0 END START
; Базовый адрес сегмента
; Адрес сегментного регистра
; Смещение программы в сегменте
; Первая команда программы
; Установка исходного состояния в (АХ)
; Суммирование очередного элемента
; Увеличения адреса в ВХ на 2
; Проверка окончания суммирования
; Переход на метку Lb1, если ещё есть элементы
; Сдвиг битов в (А) вправо на 4 разряда
; Запись результата в память (переменная RES)
; Резервирование памяти для массива MAS
; Резервирование памяти для RES
; Конец в сегменте
; Конец программы для транслятора
Пример 2. Составить программу нахождения наибольшего элемента в
массиве MASmax состоящего из 77 однобайтовых чисел без знака. Программа
решения задачи приведена в табл. 15. 7.
Для того чтобы программа была пригодна для массивов различной
длины, введем переменную Lmas, тогда длина массива определится
присвоением в операторе EQU требуемого значения Lmas .
В команде Lb1: MOV BL, MASmax [DI] использована индексная адресация.
Адрес элемента массива определяется суммированием MASmax + [DI] .
Программа использует в памяти два сегмента: для хранения кодов команд –
сегмент с базовым адресом CODESEG в регистре CS и для хранения данных
– сегмент с базовым адресом DATASEG в регистре DS.
Таблица 15. 7.
Метка
DATASG
Lmas
MAS
RES
DATASG
CODESG
PMAX:
Lb1:
CODESG
Мнемокод
Комментарий
SEGMENT SRC 0000h
; Базовый адрес сегмента данных
EQU 77
; Присвоение переменной Lmas значения 77
DB Lmas DUP (?)
; Резервирование памяти для массива MAS
DB ?
; Резервирование памяти для результата - RES
ENDS
; Конец сегмента данных
SEGMENT SRC 0000h
; Базовый адрес сегмента команд
ASSUME CS:CODESG,DS:DATASG
MOV AL, 00h
; Первая команда программы – установка (АL) в 0
MOV DI, 0000h
; Установка (DI) в 0
MOV BL, MAS [DI]
; Считывание в BL элемента массива
CMP AL, BL
; Сравнение (AL) и (BL)
JNZ Lb2
; Переход на метку Lb2, если (AL) > (BL)
MOV AL, BL
; Пересылка в (AL) большего элемента
INC DI
; Приращение содержимого DI
CMP DI, Lmas
; Проверка окончания элементов
JNZ Lb1
; Переход к Lb1 если ещё есть элементы
MOV RES, AL
; Запись результата в память
ENDS
; Конец сегмента кодов команд
END PMAX
; Конец программы PMAX
80
Пример 3.
TITLE EXASM1 (EXE) Пример регистровых операций
STACKSG SEGMENT PARA STACK 'Stack'
DB 12 DUP ('STACKSEG')
STACKSG ENDS
; Конец стекового сегмента
CODESG SEGMENT PARA 'Code'
BEGIN PROC FAR
ASSUME SS:STACKSG, CS: CODESG, DS: NOTHING
PUSH
DS
; Записать DS в стек
SUB AX, AX
; Очистить AX
PUSH AX
; Записать ноль в стек
ADD AX, 0025H
; Прибавить шест. 25Н к AX
MOV BX, AX
; Переслать AX в BX
ADD BX, AX
; Прибавить BX к AX
MOV CX, BX
; Переслать BX в CX
SUB AX, AX
; Очистить AX
RET
; Возврат в DOS
BEGIN ENDP
; Конец процедуры
CODESG ENDS
; Конец кодового сегмента
END BEGIN
; Конец программы
Пример 4. Фрагмент программы устройства УКИУ
TITLE Устройство контроля измерения и управления – УКИУ
CODESG SEGMENT PARA 'Code'
ASSUME CS:CODESG,DS:CODESG,SS:CODESG
ORG 100H
BEGIN: JMP SHORT MAIN
CR_KDpr DB 3DH
; Код установка регистра управления LPT-порта на
; передачу
CR_KDv DB AAH
; Код выводимый на LPT-порт
MAIN PROC NEAR
MVI
DX, 37AH
; Установка адр. регистра управления CR LPT- порта
MVI
AL, CR_KDpr
; Запись в (А) кода установки LPT-порта на передачу
OUT
DX, AL
; Запись кода CR_KDpr в регистр управления LPT-порта
MVI
AL, CR_KDv ; Запись в (А) кода выводимого на LPT-порт
MVI
DX, 378H
; Установка адреса регистра управления CR LPT-порта
OUT
DX, AL
; Вывод кода CR_KDv на LPT-порт
RET
; Выход в DOS
MAIN ENDP
; Конец программы MAIN
CODESG ENDS
; Конец сегмента кодов команд
ЛИТЕРАТУРА
1. Самофалов К. Г. и др. Микропроцессоры. - К.: Техника, 1986.
2. Каламбеков Б. А. Микропроцессоры и их применение в системах передачи и
обработки сигналов. Учеб. пособие для вузов. - М.: Радио и связь, 1988.
3. Каган Б. М., Сташин В. В. Основы проектирования микропроцессорных устройств автоматики. - М.: Энергоатомиздат, 1987.
81

ЛЕКЦИЯ 16
↑@
IBM PC СОВМЕСТИМЫЕ ПРОМЫШЛЕННЫЕ КОМПЬЮТЕРЫ И
МИКРОКОНТРОЛЛЕРЫ
2. Общие положения
Ключевой идеей применения IBM PC совместимых промышленных компьютеров и микроконтроллеров для решения задач автоматизации, является широкое
распространение во всём мире огромного числа производителей и соответственно проверенным и отлично зарекомендовавших себя стандартам IBM PC
совместимого оборудования. Архитектура IBM PC и лежащая в её основе системная магистраль ISA и PCI проявили себя в качестве одного из наиболее
распространённых стандартных решений для промышленной автоматизации.
В состав промышленного компьютера и IBM PC совместимого микроконтроллера входят; модуль (плата) центрального процессора (МСРU) с 8/16-разрядной магистралью (шинной) ISA или PCI и модули (платы) расширения (МР –
периферийные устройства: функциональные и многофункциональные модули
ввода-вывода дискретных сигналов и аналоговых сигналов с гальванической
развязкой и без развязки; модули релейной коммутации; интерфейсные модули
клавиатуры и индикаторной панели; модули твёрдотельного и флэш-диска;
многопортовые модули последовательной связи; программаторы и др.). Модуль
центрального процессора и платы расширения промышленного ввода-вывода
устанавливаются в слоты пассивной объединительной платы с шиной ISA/PCI.
Объединительная плата устанавливается в специальный каркас промышленного
корпуса, обладающего защитой от пыли, влаги, ударов и вибраций. Специальная
технология изготовления плат обеспечивает их работу в индустриальном диапазоне – при температурах от -40 до +85 ºС (для ПЭВМ, в основном, предусматривается коммерческий диапазон – от – 0 до +70 ºС). Напряжение питания плат
(модулей) одного номинала 5 В, а применяемая 100 % элементная база изготовленная по технологии КМОП, позволила снизить энергопотребление на 90 %.
Промышленные компьютеры обладают широкими функциональными возможностями, которых достаточно для решения большинства задач автоматизации. Пользователь имеет возможность запуска ранее разработанного прикладного программного обеспечения сразу после извлечения модулей центрального
процессора из упаковки, что обеспечивается наличием в их ПЗУ операционной
системы совместимой с MS-DOS 6.22 и базовой системы ввода-вывода BIOS.
Почти всю разработку и отладку программного обеспечения можно производить на обычном персональном компьютере, установив в него платы (модули)
промышленного ввода-вывода, а затем перенести готовое ПО в микроконтроллер, где в ПЗУ уже находится ядро операционной системы MS-DOS 6.22.
При этом можно использовать любое ПО и средства разработки (например,
DOS, Windows, Linus и др.), работающие на стандартной IBM PC платформе,
или специальные инструментальные пакеты (Ultralogik, RTKernel и др.).
82
Фирмы Advantech, Octagon System – Fastwel, Siemens представляют широкий
спектр оборудования и программных средств для построения промышленных
систем сбора информации и управления (автоматизации технологических процессов и встраиваемых систем) в форматах ISA, PCI, CompactPCI, PC/104.
Фирмы Advantech является одним из крупнейших в мире производителем
IBM PC совместимого оборудования (в форматах ISA, PCI, CompactPCI, PC/104)
для применения в системах автоматизации и предлагает широкую номенкла туру изделий, представляющих собой законченные решения:
 Панельные компьютеры и рабочие станции;
 Модульные промышленные и встраиваемые одноплатные компьютеры
(модули центрального процессора) с шинами ISA, PCI, Compact-PCI;
 Модульные IBM PС совместимые программируемые микроконтроллеры;
 Модули (платы) сбора и обработки информации;
 Модули нормализации и преобразования аналоговых сигналов;
 Модули контроллеров последовательной связи (RS-232, RS-422/485);
 Шасси и корпуса для промышленных компьютеров, вмещающих до
20 плат (модулей) расширения (периферийных устройств);
 Программное обеспечение, драйверы и универсальные программаторы.
2. Модуль центрального процессора
Модули центрального процессора (одноплатные IBM PC совместимые
компьютеры) изготавливаются на базе различных микропроцессоров – Pentium,
Celeron, AMD K6 и K5, i80486, i80386, для микроконтроллеров CPU 16-разрядный i80188. Рассмотрим характеристику одного из одноплатных промышленных
компьютеров (фирмы Advantech) типа РСА-6178 для встраиваемых применений, позволяющего построить систему с шинами ISA/PCI в корпусе для установки плат полного размера (NLX):
 Процессор – Pentium III до 933 МГц, Socket 370;
 Чипсет – Intel 440BX, 100 MГц FSB;
 ОЗУ – 1,0 Гбайт SDRAM (3 x DIMM), ЕСС;
 Контроллер SCSI – Ultra II SCSI, SYM53C895;
 Контроллер SVGA – Ati Rage, AGP, 4 Mбайта видеопамяти SGRAM;
 Контроллер Enternet – 10/100 Base-T;
 Повышенная нагрузочная способность по шине ISA;
 SSD – поддержка DiskOnChip 2000 (флеш-диск);
 Сторожевой таймер;
 Порты и контроллеры НЖМД/НГМД – 2хСОМ, 1хР, 1xFDD, 2xEIDE
2хUSB.
Из приведенной характеристики следует, что по сравнению с материнской платой ПЭВМ, на платах промышленных компьютеров дополнительно установлены:
SSD – поддержка DiskOnChip 2000; промышленный интерфейс последовательной
связи RS-485. Слоты для установки плат периферийных устройств на платах
промышленных компьютеров отсутствуют, но установка этих плат предусмотрена в слоты пассивной объединительной платы с шинами ISA/PCI и платы NLX.
83
3. Многофункциональные платы обработки сигналов
Фирмы Advantech, Octagon System – Fastwel представляют широкий спектр
многофункциональных плат (модулей) обработки сигналов периферийных
устройств: функциональные и многофункциональные модули ввода-вывода дискретных сигналов и аналоговых сигналов с гальванической развязкой и без
развязки; модули релейной коммутации; интерфейсные модули клавиатуры и
индикаторной панели; модули твёрдотельного и флэш-диска; многопортовые
модули последовательной связи; программаторы и др. Рассмотрим характеристику одного из многофункциональных модулей сбора данных типа PCI 1712:

IBM PC/АТ совместимая плата (шина PCI);

Разрядность и частота преобразования АЦП – 12 бит и Fпр = 1 МГц;

Количество каналов (входов) аналоговых сигналов – 8 дифференциальных или 16 потенциальных;

Поканально программируемый коэффициент усиления – Ку = 1, 2, 4, 8;

Автоматическое сканирование каналов;

Буфер FIFO на 1 Кбайт значений;

Разрядность ЦАП и количество каналов – 12 бит и 2 канала;

Количество дискретных ТТЛ входов-выходов – 16 (выпускаются
также платы с гальванической развязкой дискретных входных и
выходных сигналов и релейными выходными сигналами).
Плата PCI 1712 устанавливается в слот пассивной объединительной платы,
в один из слотов которой также устанавливается модуль центрального процессора. Плату PCI 1712 можно также устанавливать в слот шины PCI ПЭВМ.
Для сопряжения входных и выходных сигналов модулей сбора данных ( с
ТТЛ входами и выходами) с датчиками и исполнительными элементами управления объекта автоматизации, выпускаются платы обеспечивающие гальваническую развязку и согласование этих сигналов.
Фирма Advantech представляет около 50 различных типов модулей сбора
данных и управления.
4. IBM PC совместимый программируемый
микроконтроллер ADAM-5510
Микроконтроллер ADAM-5510 (фирмы Advantech) предназначен для использования в локальных и распределенных системах автоматизации. Он обеспечивает прием и выдачу аналоговых и дискретных сигналов, первичное преобразование сигналов по запрограммированным пользователям алгоритмам и
обмен информацией по последовательным каналам связи на базе интерфейса
RS-485.
Микроконтроллер имеет открытую архитектуру и может программироваться как с помощью традиционных языков программирования (С, ассемблер),
так и с помощью языков логического программирования в соответствии со
стандартом МЭК-61131 (UltraLogik и Paradym-31). Таким
образом, МК
84
ADAM-5510 сочетает в себе качество программируемого логического контроллера (PLC) с открытой архитектурой IBM PC совместимых компьютеров.
Технические характеристики











Процессор – 80188, 16-разрядный
Память ОЗУ и Флеш-ПЗУ – 256 Кбайт
Операционная система – ROM DOS
Часы реального времени и сторожевой таймер – встроенные
Количество обслуживаемых модулей ввода-вывода – 4
Последовательные порты связи – RS-232 и RS-485 (подключение
к порту RS-485 до 256 устройств, протоколы обмена на базе
ASCII-кодов скорость передачи данных до 115 Кбод)
Количество каналов цифрового ввода-вывода – 64 дискретных
Гальваническая развязка по входу-выходу при допустимом напряжении изоляции развязки до 3000 В
Фронтальное подключение линий датчиков и элементов управления
объектом автоматизации, характерное для микроконтроллеров PLC
Программное обеспечение включено в комплект поставки
Диапазон рабочих температур – от -10 до +70 ˚С.
Микроконтроллер ADAM-5510 состоит из трёх модульных компонентов:
модуля процессора, кросс-платы (объединительной платы с шиной ISA), модулей ввода-вывода. Имеется возможность гибкого конфигурирования МК и входящих в его состав устройств в зависимости от количества и вида контролируемых параметров. Микроконтроллеры серии ADAM могут объединяться в
многоточечную сеть на базе интерфейса RS-485, управляемую центральным
компьютером. Применение локально устанавливаемых модулей ввода вывода
позволяет существенно снизит затраты на монтаж, а также обеспечивает
повышенные удобства в процессе обслуживания.
85
A0 … AF
SYNC
ША
БШАВ
К580ВА86
СК
RDY
STSTB
INT
CS
AB0...ABA
ОЗУ
РППЗУ
К573РУ8
К573РФ5(6)
CЕ
CS0…CS3
MWTC
MRDC
DB0…DB7
CS7
CS2
CS
6
DB0 ... DB7
A/
XACК
САП
CS1
К580ВК38
INTE
F
САВ
DBI
N
ШАВ
РППЗУ
ШД
К573РФ5(6)
РППЗУ
ШДВ
МRDC
MWTC
/
IOWC
CS3
IORC
CS5
A0…A3
ПКД
К580ВВ79
ППА
К580ВВ55
PC0…PC7
2
ИРПР
К580ВВ55
PB0…PB7
OUT1
CAS0…
CAS2
OUT
Токовая
петля
УСАПП
К580ВВ51
PA0…PA
7
ПТ
К580ВИ53
СТЫК С2
ПКП
К580ВН59
ИРПР
CS4
INR0…INR7
БД
DAT0…DAT7
IORC IOWC
CУ
DM0…DM7
WAIT
WRDC
AB0…ABF
ABB…ABF
НOLD
HLDA
ADR0…ADRF
HLDA
ABA…ABF
READY
A0…AF
D0…D7
F2
БША
К580ВА86
F1
МП
К580ВМ80А
RESET
ГТИ
К580ГФ24
RESET
AUX
↑@
Структурная схема контроллера программируемого универсального «Электроника МС2721»
AB0...ABC
 П. 1.
B0…B3
Д
АЛС-324Б
RL0…RL7
SL0…SL3
БФК
86
ПРИЛОЖЕНИЕ 2.
0
0
1
NOP
LXI
B, &
LXI
D, &
LXI
H, &
LXI
SP, &
MOV
B, C
MOV
D, C
MOV
H, C
MOV
M, C
ADD
C
SUB
C
ANA
C
ORA
C
POP
B
POP
D
POP
H
POP
PSW
1
-
2
-
3
-
4
5
6
7
8
9
A
B
C
D
E
F
MOV
B, B
MOV
D, B
MOV
H, B
MOV
M, B
ADD
B
SUB
B
ANA
B
ОRA
B
RNZ
RNC
RPO
RP
0
1
КОДЫ КОМАНД МИКРОПРОЦЕССОРА К580ВМ80А
2
3
STAX INX
B
B
STAX INX
D
D
SHLD INX
x
H
STA
INX
x
SP
MOV MOV
B, D
B, E
MOV MOV
D, D
D, E
MOV MOV
H, D
H, E
MOV MOV
M, D
M, E
ADD ADD
D
E
SUB
SUB
D
E
ANA ANA
D
E
ORA ORA
D
E
JNZ
JMP
*
*
JNC
OUT
*
N
JPO XTHL
*
JP
DI
*
2
3
4
5
6
7
INR
B
INR
D
INR
H
INR
M
MOV
B, H
MOV
D, H
MOV
H, H
MOV
M, H
ADD
H
SUB
H
ANA
H
ORA
H
CNZ
*
CNC
*
CPO
*
CP
*
DCR
B
DCR
D
DCR
H
DCR
M
MOV
B, L
MOV
D, L
MOV
H, L
MOV
M, L
ADD
L
SUB
L
ANA
L
ORA
L
PUSH
B
PUSH
D
PUSH
H
PUSH
PSW
MVI
B, #
MVI
D, #
MVI
H, #
MVI
M, #
MOV
B, M
MOV
D, M
MOV
H, M
HLT
RLC
4
5
6
ADD
M
SUB
M
ANA
M
ORA
M
ADI
#
SUI
#
ANI
#
ORI
#
RAL
DAA
STC
MOV
B, A
MOV
D, A
MOV
H, A
MOV
M, A
ADD
A
SUB
A
ANA
A
ORA
A
RST 0
RST 2
RST 4
RST 6
7
8
9
A
B
DAD LDAX DCX
B
B
B
DAD LDAX DCX
D
D
D
DAD LНLD DCX
H
*
H
DAD LDA DCX
SP
*
SP
MOV MOV MOV MOV
C, B
C, C
C, D
C, E
MOV MOV MOV MOV
E, B
E, C
E, D
E, E
MOV MOV MOV MOV
L, B
L, C
L, D
L, E
MOV MOV MOV MOV
A, B
A, C
A, D
A, E
ADC ADC ADC ADC
B
C
D
E
SBB
SBB
SBB
SBB
B
C
D
E
XRA XRA XRA XRA
B
C
D
E
CMP CMP CMP CMP
B
C
D
E
RZ
RET
JZ
*
RC
JC
IN N
*
RPE PCHL JPE XCH D
*
RM SPHL
JM
EI
*
-
8
9
A
B
C
D
INR
DCR
C
C
INR
DCR
E
E
INR
DCR
L
L
INR
DCR
A
A
MOV MOV
C, H
C, L
MOV MOV
E, H
E, L
MOV MOV
L, H
L, L
MOV MOV
A, H
A, L
ADC ADC
H
L
SBB
SBB
H
L
XRA XRA
H
L
CMP CMP
H
L
CZ
CALL
*
*
CC
*
CPE
*
CM
*
C
D
E
F
MVI
C, #
MVI
E, #
MVI
L, #
MVI
A, #
MOV
C, M
MOV
E, M
MOV
L, M
MOV
A, M
ADC
M
SBB
M
XRA
M
CMP
M
ACI
#
SBI
#
XRI
#
CPI
#
RRC
E
RAR
CMA
CMC
MOV
C, A
MOV
E, A
MOV
L, A
MOV
A, A
ADC
A
SBB
A
XRA
A
CMP
A
RST 1
RST 3
RST 5
RST 7
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
F
N - адрес порта ввода-вывода; & - двухбайтовый операнд - D16;  - двухбайтовый операнд - ADR; # - однобайтовый операнд - D8.
87
ПРИЛОЖЕНИЕ 3.
КОДЫ
0
1
2
3
0
NOP
AJMP
0XXH
LJMP
ad 16
RR
A
1
JBC
bit, rel
2
JB
bit, rel
AJMP
1XXH
RET
RL
A
3
JNB
bit, rel
ACALL
1XXH
RET1
RLC
A
4
JC
rel
AJMP
2XXH
ORL
ad, A
ORL
ad, #
5
JNC
rel
ACALL
2XXH
ANL
ad, A
ANL
ad, #d
6
JZ
rel
AJMP
3XXH
XRL
ad, A
XRL
ad, #d
7
JNZ
rel
ACALL
3XXH
ORL
C, bit
@A+DPTR
8
SJMP
rel
AJMP
4XXH
ANL
C, bit
A, @A+PC
MOV
DPTR, &
ACALL
4XXH
A
ORL
C, / bit
AJMP
5XXH
MOV
C, bit
INC
DPTR
B
ANL
C, / bit
ACALL
5XXH
CPL
bit
CPL
C
C
PUSH
ad
AJMP
6XXH
CLR
bit
CLR
C
D
POP
ad
ACALL
6XXH
MOV
AJMP
7XXH
SETB
bit
MOVX
A, @R0
SETB
C
MOVX
A, @R1
9
E
F
A, @DTP
ACALL LCAlL
0XXH
ad 16
RRC
A
JMP
MOVC
MOV MOVC
bit, C A, @A+DPT
MOVX ACALL MOVX MOVX
7XXH @R0, A @R1, A
@DTP ,A
0
1
2
3
4
5
КОМАНД МИКРОКОНТРОЛЛЕРА
6
INC
@R0
DEC
DEC
DEC
@R0
A
ad
ADD
ADD
ADD
A, #
A, ad
A,@R0
ADDC ADDC ADDC
A, #
A, ad
A,@R0
ORL
ORL
ORL
A, #
A, ad
A, @R0
ANL
ANL
ANL
A, #
A, ad
A, @R0
XRL
XRL
XRL
A, #
A, ad
A,@R0
MOV
MOV
MOV
@R0, #
A, #
ad, #
MOV
DIV
MOV
AB
add, ads ad, @R0
SUBB
SUBB
SUBB
A, #d
A, ad
A, @R0
MOV
MUL
----@R0, ad
AB
CJNE
CJNE
CJNE
A, #, rel A, ad,rel @R0, #,rel
XCH
SWAP
XCH
A
A, ad
A, @R0
XCHD
DA
DJNZ
A
ad, rel
A, @R0
CLR
MOV
MOV
A
A, ad
A, @R0
INC
A
INC
ad
CPL
A
MOV
ad, A
4
5
7
8
9
A
К1816ВЕ51
B
C
D
E
F
INC
INC
INC
INC
INC
INC
INC
INC
INC
@R1
R6
R0
R1
R2
R3
R4
R5
R7
DEC
DEC
DEC
DEC
DEC R2DEC R3 DEC R4
DEC R6
@R0 DEC R0
R1
R5
R7
ADD
ADD
ADD
ADD
ADD
ADD
ADD
ADD
ADD
A, R1
A, R2
A, R3
A, R4
A, R5
A, R6
A, R7
A, @R1 A, R0
ADDC ADDC ADDC ADBC
ADCC ADDC ADDC ADDC ADDC
A, R1
A, R2
A, R3
A, R4
A, R5
A, R6
A, R7
A,@R1 A, R0
ORL
ORL
ORL
ORL
ORL
ORL
ORL
ORL
ORL
A, R1
A, R2
A, R3
A, R4
A, R5
A, R6
A, R7
A, @R1 A, R0
ANL
ANL
ANL
ANL
ANL
ANL ANL A, ANL
ANL
A, R1
A, R2
A, R3
A, R4
R5
A, R6
A, R7
A, @R1 A, R0
XRL
XRL
XRL
XRL
XRL
XRL
XRL
XRL
XRL
A, R1
A, R2
A, R3
A, R4
A, R5
A, R6
A, R7
A,@R1 A, R0
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
@R1, #
R0, #
R1, #
R2, #
R3, #
R4, #
R5, #
R6, #
R7, #
MOV
MOV
MOV MOV ad,MOV ad, MOV
MOV
MOV MOV ad,
ad, @R1 ad, R0
ad, R1
ad, R4
ad, R5
ad, R6
R2
R3
R7
SUBB
SUBB
SUBB
SUBB
SUBB
SUBB
SUBB
SUBB
SUBB
A, R1
A, R2
A, R3
A, R4
A, R5
A, R6
A, R7
A, @R1 A, R0
MOV MOV R0, MOV R1, MOV R2, MOV
MOV
MOV
MOV
MOV
@R1, ad
R3, ad
R4, ad
R5, ad
R6, ad
R7, ad
ad
ad
ad
CJNE
CJNE
CJNE
CJNE
CJNE
CJNE
CJNE
CJNE
CJNE
@R1, #,rel R0, #,rel R1, #,rel R2, #,rel R3, #,rel R4, #,rel R5, #,rel R6, #,rel R7, #,rel
XCH
XCH
XCH
XCH
XCH
XCH
XCH
XCH
XCH
A, R1
A, R2
A, R3
A, R4
A, R5
A, R6
A, R7
A, @R1 A, R0
XCHD DJNZ
DJNZ
DJNZ
DJNZ
DJNZ
DJNZ
DJNZ
DJNZ
R1, rel
R2, rel
R3, rel
R4, rel
R5, rel
R6, rel
R7, rel
A, @R1 R0, rel
0
1
2
3
4
5
6
7
8
9
A
B
C
D
MOV
A, @R1
MOV
A, R0
MOV A,
R1
MOV
A, R2
MOV
A, R3
MOV
A, R4
MOV
A, R5
MOV
A, R6
MOV
A, R7
E
MOV
MOV
@R0, A @R1, A
MOV
R0, A
MOV
R1, A
MOV
R2, A
MOV
R3, A
MOV
R4, A
MOV
R5, A
MOV
R6, A
MOV
R7, A
F
8
9
A
B
C
D
E
F
6
7
88
Приложение 4. Система команд микроконтроллера
АТmega8535 (Атmega16)
Арифметические и логические команды - операции
Мнемокод
Операнд
ADD
ADC
SUB
SUBI
SBC
SBCI
AND
ANDI
OR
ORI
EOR
COM
NEG
SBR
CBR
INC
DEC
TST
CLR
SER
ADIW
SBIW
MUL
MULS
MULSU
FMUL
FMULS
FMULSU
Rd, Rr
Rd, Rr
Rd, Rr
Rd, К8
Rd, Rr
Rd, К8
Rd, Rr
Rd, К8
Rd, Rr
Rd, К8
Rd, Rr
Rd
Rd
Rd, К8
Rd, К8
Rd
Rd
Rd
Rd
Rd
Rd, К6
Rd, К6
Rd, Rr
Rd, Rr
Rd, Rr
Rd, Rr
Rd, Rr
Rd, Rr
ИспольКол.
зуеемые
циклов
флаги
Сложить операнды рег. Rd и Rr
Z,C,N,V,H,S
1
Rd  Rd + Rr
Сложить операнды рег.и флаг С Rd  Rd + Rr + C Z,C,N,V,H,S
1
Вычитание данных рег. Rd - Rr
Z,C,N,V,H,S
1
Rd  Rd - Rr
Вычесть непосред-ный операнд
Z,C,N,V,H,S
1
Rd  Rd - K8
Вычесть операнд рег. и флаг С
1
Rd  Rd - Rr - C Z,C,N,V,H,S
Вычесть непосред-ный операнд Rd  Rd - K8 - C Z,C,N,V,H,S
1
Логич-кая операция "И" Rd и Rr
Z,N,V,S
1
Rd  Rd · Rr
Лог-кое "И" Rd и неп. операнда
Z,N,V,S
1
Rd  Rd · K8
Логическое "ИЛИ" Rd и Rr
Z,N,V,S
1
Rd  Rd V Rr
Лог-кое"ИЛИ" Rd и неп. опер-да
Z,N,V,S
1
Rd  Rd V K8
Логическое"Исключающее ИЛИ"
Z,N,V,S
1
Rd  Rd  Rr
Инвертирование
Z,C,N,V,S
1
Rd  $FF - Rd
Перевод в дополнительный код
Z,C,N,V,H,S
1
Rd  $00 - Rd
Установка битов в регистре
Z,C,N,V,S
1
Rd  Rd V K8
Сброс (очистка) битов в рег-ре Rd  Rd · ($FF - K8) Z,C,N,V,S
1
Инкремент регистра Rd
Z,N,V,S
1
Rd  Rd + 1
Декремент регистра Rd
Z,N,V,S
1
Rd  Rd - 1
Тест на ноль не ноль
Z,C,N,V,S
1
Rd  Rd · Rd
Очистить регистр Rd
Z,C,N,V,S
1
Rd  0
1
Нет
Заполнить регистр Rd
Rd  $FF
Слож. рег. пары. с константой Rdh:Rd l= Rdh:Rdl+K6 Z,C,N,V,S
2
Вычит. константы из рег. пары Rdh:Rdl=Rdh:Rdl - K6 Z,C,N,V,S
2
Умножение без знака
Z,C
2
R1: R0  Rd * Rr
Умножение со знаком
Z,C
2
R1: R0  Rd * Rr
Умножение Signed withUnsigned R1: R0  Rd * Rr
Z,C
2
Умножение дроби без знака R1:R0 (Rd * Rr)<<1
Z,C
2
Умножение дроби со знаком R1:R0 (Rd * Rr)<<1
Z,C
2
Ум-ние дроби Signed Unsigned R1:R0 (Rd * Rr)<<1
Z,C
2
Опитсание
Выполняемая
операция
Команды передачи управления
МнемоОперанд
код
RJMP
IJMP
k
Нет
EIJMP
Нет
JMP
k
RCALL
k
ICALL
Нет
EICALL
Нет
Описание
Выполняемая операция
Относит. безус. переход
PC  PC + k + 1
Косвенный переход на(Z)
PC  Z
Расширенный косвенSTACK  PC+1, PC (15:0) =
ный переход на (Z)
Z, PC (21: 16) = EIND
Безусловный переход
PC = k
Косвенный вызов
STACK  PC + 1, PC  PC +
подпрограммы
k+1
Косвенный вызов на (Z) STACK  PC + 1, PC  Z
Расширенный косвенный STACK  PC+ 1, PC (15:0) =
вызов на (Z)
Z, PC (21:16) = EIND
Используемые
флаги
Нет
Нет
Кол.
циклов
2
2
Нет
2
Нет
3
Нет
3 / 4*
Нет
3 / 4*
Нет
4*
89
CALL
RET
RETI
CPSE
CP
CPC
CPI
SBRC
SBRS
SBIC
SBIS
BRBC
BRBS
BREQ
BRNE
BRCS
BRCC
BRSH
BRLO
BRMI
BRPL
BRGE
BRLT
BRHS
BRHC
BRTS
BRTC
BRVS
BRVC
BRIE
BRID
Вызов подпрограммы
Нет
4 / 5*
STACK  PC + 2, PC  k
Возврат из подпрограмы
Нет
4 / 5*
PC STACK
Возврат из подпрограмы
Нет
Нет
4 / 5*
PC  STACK
обработки прерывания
Сравнение и пропуск,
Если (Rd = Rr) PC  PC+ 2
Rd, Rr
Нет
1 /2 /3
след. коман. при Rd = Rr or 3
Z,C,N,V,H,S
Rd, Rr Сравнение регистров
Rd - Rr
1
Сравнение с учётом
Z,C,N,V,H,S
Rd, Rr
Rd - Rr - C
1
переноса
Z,C,N,V,H,S
1
Rd, R8 Сравние непосредственное
Rd - K8
Пропуск след. команды Если (Rr(b) = 0) PC  PC +
Rr, b
Нет
1 /2 /3
если бит в рег. равен 0 2 or 3
Пропуск след. команды Если (Rr(b) =1) PC  PC +
Rr, b
Нет
1 / 2/3
если бит в рег. равен 1 2 or 3
Пропуск след. команды, Если (I/O(P, b) = 0) PC PC
P, b
Нет
1 / 2/3
если бит порта равен 0 + 2 or 3
Пропуск след. команды, Если (I/O(P, b)=1) PC  PC
P, b
Нет
1 / 2/3
если бит порта равен 1 + 2 or 3
Переход, если флаг S Если (SREG (s) = 0) PC 
S, k
Нет
1/2
регистра SREG сброшен PC + k + 1
Переход, если флаг S
Если (SREG (s) = 1) PC 
S, k
Нет
1/2
рег. SREG установлен
PC + k + 1
k
Переход, если равно (0) Если (Z = 1) PC  PC+ k+1
Нет
1/2
k
Переход,если неравно(1) Если (Z = 0) PC  PC+ k+1
Нет
1/2
Переход, если установ.
k
Нет
1/2
Если (C = 1) PC  PC+ k +1
флаг переноса
Переход, если очищен
k
Нет
1/2
Если (C = 0) PC  PC+ k+1
флаг переноса
k
Переход, если ≥
Нет
1/2
Если (C = 0) PC  PC+ k+1
k
Переход, если меньше Если (C = 1) PC  PC+ k +1
Нет
1/2
k
Переход, если минус
Нет
1/2
Если (N = 1) PC  PC+ k+1
k
Переход, если плюс
Нет
1/2
Если (N = 0) PC  PC+ k+1
k
Перех. если ≥ (со знаком) Если (S = 0) PC  PC+ k+1
Нет
1/2
k
Перех.,если ≤ (со знаком) Если (S = 1) PC  PC+ k+1
Нет
1/2
Переход, если установл.
k
Нет
1/2
Если (H = 1) PC  PC+ k+1
флаг доп. переноса
Переход, если очищен
k
Нет
1/2
Если (H = 0) PC  PC+ k+1
флаг дополн. переноса
Переход, если
k
Нет
1/2
Если (T = 1) PC  PC+ k+1
установлен флаг T = 1
k
Переход, если флаг T=0 Если (T = 0) PC  PC+ k+1
Нет
1/2
Переход по переполнен.
k
Нет
1/2
Если (V = 1) PC  PC+ k+1
дополнительного кода
Переход, если нет переk
Нет
1/2
Если (V = 0) PC  PC+ k+1
полнен. дополнит. кода
Переход, если прерываk
Нет
1/2
Если (I = 1) PC  PC+ k+ 1
ния разрешены
Переход, если заблокиk
Нет
1/2
Если (I = 0) PC  PC+ k+ 1
рованное прерывание
k
Нет
* Для команд CALL, ICALL, EICALL, RCALL, RET и RETI добавляют три
цикла плюс два цикла для каждого состояния ожидания в устройствах с
память программы 128КБ.
90
Команды передачи данных
Мне- Опемокод ранды
Описание
MOV Rd, Rr Пересылка с регистра Rr в рег. Rd
Пересылка пары рег. (Rr, Rr + 1) в рег.
MOVW Rd, Rr
(Rd, Rd+1)
LDI Rd, K8 Непосредственная загрузка
LDS Rd, k Прямая загрузка
LD Rd, X Косвенная загрузка
LD Rd, X+ Косвенная загрузка с постдополнением 1
LD Rd, - X Косвенная загрузка с предуменьшен на 1
LD Rd, Y Косвенная загрузка
LD Rd, Y+ Косвенная загрузка с постдополнением 1
LD Rd, - Y Косвен.загрузка с предуменьшением на 1
LDD Rd,Y+q Косвенная загрузка со смещением
LD
Rd, Z Косвенная загрузка
LD Rd, Z+ Косвенная загрузка с постдополнением 1
LD Rd, - Z Косвенная загрузка с предуменьшен. на1
LDD Rd,Z+q Косвенная загрузка со смещением
STS k, Rr Непосредственная запись в ОЗУ
ST
X, Rr Пересылка по косвенному адресу
ST X+, Rr Косвенная загрузка с постдополнением 1
ST -X, Rr Косвен.загрузка с предуменьшением на 1
ST
Y, Rr Пересылка по косвенному адресу
ST Y+, Rr Косвенная загрузка с постдополнением 1
ST -Y, Rr Косвен.загрузка с предуменьшением на 1
ST Y+q, Rr Косвенная загрузка со смещением
ST
Z, Rr Пересылка по косвенному адресу
ST Z+, Rr Косвенная загрузка с постдополнением 1
ST -Z, Rr Косвен.загрузка с предуменьшением на 1
ST Z+q, Rr Косвенная пересылка со смещением
LPM
Нет Пересылка мз памяти программ (ПП)
LPM Rd, Z Пересылка мз памяти программ
LPM Rd, Z+ Пересылка из ПП с постдополнен. на 1
Расширеная пересылка из памяти
ELPM Нет
программ в регистр R0
Расширеная пересылка из памяти
ELPM Rd, Z
программ в регистр Rd
Расширеная пересылка из памяти проELPM Rd, Z+
грамм в регистр Rd с постдополнением1
Пересылка мз регистра R0 в память
SPM
Нет
программ
ESPM Нет Расширеная пересылка из регистра R0
IN
Rd, P Пересылка из порта P в регистр Rd
OUT P, Rr Пересылка из регистра Rr в порт P
PUSH
Rr
Запись регистра Rr в стек
POP
Rd Выталкивание регистра Rd из стека
Исполь- Кол.
зуемые цикфлаги лов
Нет
1
Выполняемая
операция
Rd  Rr
Rd+1:Rd  Rr+1: Rr, r,
Нет
1
Rd  K8
Rd  (k)
Rd  (X)
Rd  (X), X  X + 1
X  X -1, Rd  (X)
Rd  (Y)
Rd  (Y), Y  Y + 1
Y  Y - 1, Rd  (Y)
Rd  (Y + q)
Rd  (Z)
Rd  (Z), Z  Z+ 1
Z  Z-1, Rd  (Z)
Rd  (Z+ q)
(k)  Rr
(X)  Rr
(X)  Rr, X  X + 1
(X)  Rr, X  X - 1
(Y)  Rr
(Y)  Rr, Y  Y + 1
Y  Y - 1, (Y)  Rr
(Y + q)  Rr
(Z)  Rr
(Z) = Rr, Z = Z + 1
Z  Z - 1, (Z)  Rr
(Z + q)  Rr
R0  (Z)
Rd  (Z)
Rd  (Z), Z  Z + 1
Нет
Нет
Нет
Нет
Нет
Нет
Нет
Нет
Нет
Нет
Нет
Нет
Нет
Нет
Нет
Нет
Нет
Нет
Нет
Нет
Нет
Нет
Нет
Нет
Нет
Нет
Нет
Нет
1
2*
2*
2*
2*
2*
2*
2*
2*
2*
2*
2*
2*
2*
2*
2*
2*
2*
2
2
2
2
2
2
2
3
3
3
R0  (RAMP Z: Z)
Нет
3
Rd  (RAMP Z: Z)
Нет
3
Нет
3
(Z)  R0
Нет
-
(RAMP Z: Z)  R0
Rd  P
P  Rr
STACK  Rr
Rd  STACK
Нет
Нет
Нет
Нет
Нет
1
1
2
2
Rd  (RAMP Z: Z),
Z+1
Z
* Для LD, C - , LDD, STD, LDS, C-, команды PUSH и POP, добавляют один цикл
плюс один цикл для каждого состояния ожидания.
91
Команды операций с битами
LSL
Rd
Использу- Кол.
емые
цикфлаги
лов
Логический сдвиг влево Rd(n+1)Rd(n), Rd(0) 0,CRd(7) Z,C,N,V,H,S 1
LSR
Rd
Логический сдвиг вправо
ROL
Rd
ROR
Rd
ASR
Rd
SWAP
Rd
BSET
BCLR
S
S
SBI
P, b
CBI
P, b
Мнемо Опер
код атор
BST Rr, b
BLD Rd, b
SEC
Нет
CLC
Нет
SEN
Нет
CLN
Нет
SEZ
CLZ
Нет
Нет
SEI
Нет
CLI
Нет
SES
CLN
Нет
Нет
SEV
Нет
CLV
Нет
SET
CLT
Нет
Нет
SEH
Нет
CLH
Нет
NOP Нет
SLEEP Нет
WDR Нет
Описание
Выполняемая операция
Rd(n)  Rd (n + 1), Rd(7)  0,
C  Rd (0)
Вращение по левому
переносу
Вращение по правому
переносу
Арифметический сдвиг
вправо
Обмен тетрадами
Установка флага
Сброс флага
Установка бита в регистре ввода - вывода
Очистка бита в регистре
ввода - вывода
Пересылка раз. бита в Т
Пересылка бита Т в
разряд регистр Rd
Установка флага переноса
Очистка флага переноса
Установка флага отрицательного числа
Очистка флага отрицательного числа
Установка флага нуля
Очистка флага нуля
Установк флага (разрешен)общего прерывания
Сброс флага общего
прерывания (запрещен.)
Установка флага знака
Очистка флага знака
Установка флага переполнения дополнит. кода
Очистка флага переполнения дополнит. кода
Установка флага T
Очистка флага T
Установка флага вспомогательного переноса
Очистка флага вспомогательного переноса
Нет операции
Бездействие
Контрольный сброс
Rd(0)  C, Rd(n+1)  Rd(n),
C  Rd(7)
Rd(7)  C, Rd(n)  Rd(n+1),
C  Rd(0)
Rd (n)  Rd (n + 1), n  0,...,6
Z,C,N,V,S
1
Z,C,N,V,H,S
1
Z,C,N,V,S
1
Z,C,N,V,S
1
Rd (3...0)  Rd(7..4), Rd (7...4)Rd
(3...0)
SREG (S)  1
SREG (S)  0
Нет
1
SREG (s)
SREG (s)
1
1
I/O (P, b)  1
Нет
2
I/O (P, b)  0
Нет
2
T  Rr (b)
T
1
Rd (b)  T
Нет
1
C1
C
1
C0
C
1
N=1
N
1
N=0
N
1
Z=1
Z=0
Z
Z
1
1
I=1
I
1
I=0
I
1
S=1
S=0
S
S
1
1
V=1
V
1
V=0
V
1
T= 1
T= 0
T
T
1
1
H=1
H
1
H=0
H
1
Нет
См. инструкцию
См. инструкцию
Нет
Нет
Нет
1
1
1
92
Назначение операндов:
Rd - Регистр данных – аккумулятор (А – источник первого операнда)
Rr - Обобщенное имя рабочего регистра
b - Обобщённое имя бита – 0 - 7
P - Константа, значение – 0 - 31 / 63
K6 - Константа, значение – 0 - 63
K8 - Константа, значение – 0 - 255
k - Константа, значение в зависимости от типа команды
q - Константа, значение – 0 - 63
Rdl - R24, R26, R28, R30. для команд ADIW и SBIW
X, Y, Z - Регистры косвенного адреса: X = R27 и R26, Y = R29 и R28, Z =
R31 и R30.
Директивы Ассемблера
Краткий обзор директив дается в следующей таблице
Директивы
BYTE
CSEG
DB
DEF
DEVICE
DSEG
DW
EQU
Описание
Директивы
Описание
Резервирование байта для
ESEG
EEPROM сегмент
переменной
EXIT
Сегмент кода
Выход с файла
Определитель 8-битных данных INCLUDE Источник читайте с другого файла
Определитель символического
LIST
Распечатка листинга файла
имени регистра
Определитель для устройства
Макрорасширение поворота в
LISTMAC
трансляции
списке файла
NOLIST
Сегмент данных
Листинг файла не печатать
ORG
Определитель 16-битных данных
Адрес начала программы
Установка символа,
SET
Установка символа в выражение
равняющегося выражению
BYTE - Reserve bytes to a variable
(БАЙТ – резервирование байтов для переменных)
Директива имеет один параметр, который является числом резервируемых
байтов в SRAM. Чтобы обратиться к установленным данным BYTE директивой, BYTE директиве должна предшествовать метка. Директива может использоваться только в пределах сегмента данных (см. директивы CSEG и DSEG).
Обратите внимание, что параметр директиве нужно задать.
Синтаксис:
LABEL: .BYTE (запись выражения)
Пример:
.DSEG
; Сегмент данных
vr1: .BYTE 1 ;Резервирование 1 байта для переменной vr1
table: .BYTE tab_size ;Резервирование кол. байт таблицы
.CSEG
; Сегмент команд
ldi r30,low(vr1) ;Загрузка в Z регистр младшего адреса
93
;переменной vr1
ldi r31,high(vr1) ;Загрузка в Z регистр старшего адреса
;переменной vr1
ld r1,Z
;Загрузка переменной VR1 в регистр r1
CSEG – Code segment (CSEG – сегмент кода)
CSEG директива определяет начало сегмента кода (команд). Файл Ассемблера может состоять из нескольких сегментов кода, которые могут быть связаны
в один сегмент кода. Заданный по умолчанию тип сегмент - кодов. Сегменты
кода имеют собственный счетчик расположения, который является счетчиком
команд. Директива не имеет никаких параметров. Директива ORG может
использоваться для размещения кодов (команд) и констант в определенных
местах расположения в памяти программ.
Синтаксис:
.CSEG
Пример:
.DSEG
;Старт сегмента данных
vartab: .BYTE 4 ;Резервирование 4 bytes в памяти SRAM
.CSEG
;Старт кодового сегмента
const: .DW 2
;Присвоение имени двухбайтовой
;константе(const)изначения 0x0002in prog.mem.
mov r1,r0
;Пересылка данных регистра r0 в рег. r1.
DB – Define constant byte(s) in program memory and EEPROM
(DB – определитель постоянного байта/байтов в памяти программы и
EEPROM)
Чтобы обратиться к установленным данным DB директивой, DB директиве
должна предшествовать метка. Директива DB должна быть помещена в сегмент
кода или сегмент EEPROM.
Список выражения – последовательность значений, разграниченных запятыми. Каждое выражение должно быть в пределах от – 128 до +255.
Если DB директива даётся в сегменте кода, и запись выражения содержит
больше чем одно значение, выражения упаковываются так, чтобы два байта были
помещены в одно слово памяти программы. Если запись выражения содержит
нечётное число значений, последнее значение будет помещено в собственное
слово памяти программы, даже если следующая строка в коде содержит DB
директиву.
Синтаксис:
LABEL: .DB (запись выражения)
Пример:
.CSEG
consts: .DB 0, 255, 0b01010101, -128, 0xaa
.ESEG
const2: .DB 1,2,3
94
DEF – Set a symbolic name on a register
(DEF – установка символического названия регистра)
DEF директива позволяет регистрам быть выраженными через символы.
Заданный символ может использоваться в программе для обращения к
регистру, которым он обозначен. Регистр может иметь несколько символических названий. Символ может быть переопределен позже в программе.
Синтаксис:
.DEF Symbol=Register
Пример:
.DEF temp=R16
.DEF ior=R0
.CSEG
ldi temp,0xf0 ;Записать значение 0xf0 в регистр с
;символическим именем temp (регистр R16)
in ior,0x3f
;Записать значение SREG в в регистр ior
eor temp,ior ;Логическое ИЛИ регистров temp и ior
DEVICE – Define which device to assemble for
(УСТРОЙСТВО – определяет устройство для трансляции)
Директива УСТРОЙСТВО позволяет пользователю сообщить Ассемблеру,
для какого устройства (микроконтроллера) будет осуществляться ассемблирование исходной программы. Если сегмент кода или сегмент EEPROM исходной
программы больше чем располагает устройство, то даётся предупреждающее
сообщение.
Синтаксис:
.DEVICE AT90S1200 |AT90S2313 | AT90S2323 | AT90S2333 |
AT90S2343 | AT90S4414 | AT90S4433 | AT90S4434 |
AT90S8515 | AT90S8534 | AT90S8535 | ATtiny11 | ATtiny12
| ATtiny22 | ATmega603 | ATmega103
Пример:
.DEVICE AT90S8535 ;Для микроконтроллера AT90S8535
.CSEG
push r30
;Сохранить в стеке данные регистра r30
DSEG – Data Segment
(DSEG – сегмент данных)
DSEG директива определяет начало сегмента данных. Файл Ассемблера
может состоять из нескольких сегментов данных, которые могут быть связаны в
один сегмент данных. Сегмент данных обычно состоит только из директив и
метки. Сегменты данных имеют собственный счетчик расположения, который
является счетчиком байт. Директива ORG может использоваться, чтобы размес95
тить переменные в определенные адреса SRAM. Директива не имеет никаких
параметров.
Синтаксис:
.DSEG
Пример:
.DSEG
; Сегмент данных
var1: .BYTE 1 ;Резервирование 1 байта для переменной
;var1
table: .BYTE tab_size ; Резервирование количество байт
;для таблицы
.CSEG
; Сегмент команд
ldi r30,low(vr1) ;Загрузка в Z регистр младшего адреса
;переменной var1
ldi r31,high(var1);Загрузка в Z регистр ст. адреса
;переменной var1
ld r1,Z
;Загрузка переменной VAR1 в регистр 1
DW – Define constant word(s) in program memory and EEPROM
(DW – определитель постоянного слова/слов в памяти программ и EEPROM)
Чтобы обратиться к установленным данным DW директивой, DW директиве
должна предшествовать метка. Директива DW должна быть помещена в сегмент
кода или сегмент EEPROM.
Список выражения – последовательность значений, разграниченных запятыми. Каждое выражение должно быть в пределах от – 32768 и до +65535.
Синтаксис:
LABEL: .DW (запись выражения)
Пример:
.CSEG
varlist: .DW 0, 0xffff,0b1001110001010101,-32768,65535
.ESEG
eevarlst: .DW 0,0xffff,10
96
Download