- •3.4.1 Введение 65
- •Содержание курса
- •Введение в системы управления
- •Датчики
- •Принципы построения систем управления и контроля рэсбн
- •Однокристальные контроллеры
- •Системы дистанционного управления
- •Определения и термины
- •Характеристика системы ду rc-5
- •Архитектура системы ду по протоколу rc-5
- •Система дистанционного управления по протоколу rc-5
- •Протокол передачи в системе ду rc-5
- •Пульт ду на основе контроллера рса84с122а
- •Передатчик команд ду по протоколу rc-5 saa3010
- •Приемная часть системы ду
- •Система rc-5 и распределение команд
- •Система дистанционного управления по протоколу itt
- •Архитектура системы ду
- •Синтез сигналов ду по протоколу itt
- •Пульт ду на основе передатчика команд saa1250
- •Приемная часть системы ду
- •Шины управления и обмена информацией
- •Введение
- •Шина i2c
- •Концепция i2c-шины
- •Общие характеристики
- •Передача бита
- •Условия start и stop
- •Передача данных в i2c – шине
- •Байтовый формат
- •Подтверждение приема (квитирование)
- •Синхронизация
- •Арбитраж
- •Формат 7-и битной адресации
- •Особенности 7-и битной адресации
- •Расширенная спецификация i2c-шины
- •Введение
- •Электрические и временные характеристики i2c-шины
- •Адаптер параллельного порта принтера
- •Однокристальная эвм архитектуры mcs-51
- •Структура оэвм км1816ве51
- •Организация памяти мк51
- •Память программ
- •Память данных
- •Регистры специального назначения
- •Устройство управления и синхронизации
- •Порты ввода/вывода
- •Доступ к внешней памяти
- •Доступ к внешней памяти программ
- •Доступ к внешней памяти данных
- •Совмещение адресов впп и впд
- •Таймеры/счетчики
- •Последовательный порт
- •Режимы работы уапп
- •Скорость передачи
- •Режимы пониженного энергопотребления
- •Система прерываний
- •Источники прерываний
- •Приоритеты прерываний
- •Процесс прерывания
- •Запись в память программ мк51
- •Система команд оэвм кр1816ве51
- •Команды передачи данных
- •Арифметические команды
- •Логические команды
- •Команды операций с битами
- •Команды передачи управления
- •Пример составления простейших программ для оэвм кр1816ве51
- •Микропроцессорная система на основе оэвм кр1816ве51
- •Развитие архитектуры mcs-51
- •Отображение и ввод информации в брэа
- •Термины и определения
- •Вакуумные люминесцентные индикаторы
- •Жидкокристаллические индикаторы
- •Принцип действия и конструктивные модификации
- •Управление жки
- •Долговечность жки
- •Полупроводниковые знакосинтезирующие индикаторы
- •Единичные ппзси
- •Многоэлементные ппзси
- •Другие типы индикаторов
- •Ввод информации в микро-эвм
Команды передачи данных
Команды передачи данных не влияют на флаги результата.
На графе возможных путей передачи данных в МК (рисунок 4.19) аккумулятор представлен отдельной вершиной, поскольку многие команды используют его при передаче данных.
Рисунок 4.19 - Граф путей передачи данных в МК51
Большую часть команд данной группы (таблица 4.14) составляют команды передачи и обмена байтами. Столбец «Байты» показывает количество байтов в команде, а «Циклы» - это количество машинных циклов на выполнение команды.
Таблица 4.14 - Команды передачи данных
Арифметические команды
В данную группу команд (таблица 4.15) входят команды сложения, вычитания, умножения и деления байтов. Имеются команды десятичной коррекции результата сложения, увеличения на единицу как 8-битовых, так и 16-битовых операндов, уменьшения на единицу для 8-битовых операндов.
Таблица 4.15 - Группа арифметических операций
Все команды этой группы используют АЛУ и влияют на состояние флагов.
Логические команды
В данную группу (таблица 4.16) входят команды, выполняющие логические операции вида «И», «ИЛИ», «Исключающее ИЛИ» над операндом в аккумуляторе и в любом байте РПД или в регистрах специальных функций. Сюда же входят команды сдвига аккумулятора влево и вправо, а также сброса и инверсии аккумулятора.
Таблица 4.16 - Группа логических операций
Все команды этой группы используют АЛУ и влияют на состояние флагов.
Команды операций с битами
Данные команды (таблица 4.17) оперируют с однобитовыми операндами. Биты расположены в области битовой адресации (128 битов пользователя) и в области регистров специальных функций. Для адресации бит используется прямой 8-битовый адрес (bit). Косвенная адресация бит невозможна.
Таблица 4.17 - Битовые операции
Команды передачи управления
Данная группа команд (таблица 4.18) содержит команды условных и безусловных переходов, вызовы подпрограмм и возврат из них, команды сравнения и цикла. Для выполнения условных переходов можно проверять разнообразные условия, а безусловные переходы и вызовы подпрограмм различаются по предельной удаленности перехода.
Таблица 4.18 - Группа команд передачи управления
В приложении А приведена система команд МК51 в табличной форме. По номеру строки (старшая тетрада) и столбца (младшая тетерада) можно определить байт кода операции любой команды.
В приложении Б система команд МК51 разделена на функциональные группы и представлена в списочной форме с описанием команд.
Пример составления простейших программ для оэвм кр1816ве51
Составление простейших программ и фрагментов для решения типовых задач пользователя способствует лучшему усвоению методики программирования микропроцессорных систем на основе МК51. Программы сопровождаются подробными комментариями и содержат список начальных условий и результатов.
Использование команд передачи данных. Одной из типовых задач является инициализация некоторой области резидентной памяти данных, например, ее очистка. Примером такой задачи является фрагмент программы (таблица 4.19), выполняющей сброс всех 128 флагов пользователя, расположенных в резидентной памяти данных.
Таблица 4.19 - Фрагмент программы сброса флагов пользователя
Использование команд передачи управления. Одной из типовых для микропроцессорной системы является задача обработки поступающей с внешних источников информации.
Допустим, во внешней памяти данных с некоторого датчика порциями по 60 байтов записывается информация. После записи последнего байта, на вывод Р1.2 порта Р1 поступает положительный импульс длительностью около 10·10-6 с, что гарантирует его обнаружение в МК. Требуется обнаружить входной импульс и, по его окончанию, перенести массив из ВПД в РПД с очисткой исходной области во внешней памяти.
Для обнаружения импульса готовности данных в программе (таблица 4.20) сначала выполняется поиск положительного фронта импульса. Команда условного перехода опрашивает значение заданного бита и выполняет переход на саму себя. Другая условная команда предназначена для обнаружения спада импульса. Две условные команды последовательно позволят обнаружить импульс управления.
Таблица 4.20 - Перенос массива из ВПД в РПД
Использование арифметических и битовых команд. Использование арифметических и битовых команд удобно показать на примере подпрограммы табличного вычисления функции sin(x). В памяти программ записана таблица значений синуса от 0º до 89º в виде байтов дробных значений. Значение угла в градусах задается старшей частью в регистре В, а младшей - в аккумуляторе.
Значения синуса угла в 3 и 4 квадранте отличается только знаком от значения угла 1 и 2 квадрантов. Значения из 2 квадранта соответствуют дополнительным значениям из 1 квадранта. Поэтому при преобразовании значения угла использовались следующие формулы:
|
|
При вычислении функции (таблица 4.21) для определения значения угла, превышающего 180º, старший бит значения угла из регистра В копируется во флаг переноса. Затем этот бит вдвигается в аккумулятор. Полученное половинное значение угла сравнивается с половинным значением от 180. Далее, при необходимости, вычитаем 180 для перехода в 1, 2 квадрант. Аналогично происходит переход в 1 квадрант. Затем значение берется из таблицы.
Таблица 4.21 - Табличное вычисление sin(x)
Использование подпрограмм. Одной из типовых задач является процедура формирования программной задержки. Примером такой задачи является фрагмент программы (таблица 4.22), выполняющей задержку на 1 секунду. Во фрагменте задана подпрограмма DELAY, выполняющая задержку примерно на 0,1 сек. За счет повторных вызовов подпрограммы задержка доводится до 1 сек.
Таблица 4.22 - Фрагмент программы формирования задержки
Коэффициенты для счетчиков подбирались исходя из требуемого числа машинных циклов. При тактовой частоте 12 МГц длительность машинного цикла равна 1·10-6 с. С учетом длительности команд и повторения циклов получается около 100 тысяч машинных циклов. Это приближенно дает задержку в 0,1 секунды.
Безусловно, задачу можно решать с использованием таймера / счетчика. При этом нужно использовать режим 16 битового делителя. Максимальный интервал задержки от таймера можно получить около 0,05 сек.
Если на внешний вход таймера подавать низкочастотные импульсы, можно с помощью больших коэффициентов деления получать огромные длительности задержки. Это решение потребует наличия внешнего генератора, что весьма неудобно. Вышеприведенный программный вариант не требует больших затрат, позволяет перестраивать задержку в больших пределах и достаточно привлекателен.
