Учебное методическое пособие. – Томск

advertisement
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
Федеральное государственное бюджетное образовательное
учреждение высшего профессионального образования
«ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ
УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ»
(ТУСУР)
Кафедра телевидения и управления
(ТУ)
УТВЕРЖДАЮ
Заведующий кафедрой ТУ, профессор
_________________И.Н. Пустынский
«______»___________________2012 г.
УСТРОЙСТВА УПРАВЛЕНИЯ БЫТОВОЙ
РАДИОЭЛЕКТРОННОЙ АППАРАТУРОЙ
Учебное методическое пособие
РАЗРАБОТАЛ
_________ В.А. Кормилин
«______»_________2012 г.
2012
2
Кормилин В.А. Устройства управления бытовой радиоэлектронной
аппаратурой: Учебное методическое пособие. – Томск: кафедра ТУ,
ТУСУР, 2012. – 25 с.
Пособие предназначено для студентов радиотехнических
специальностей ВУЗа, обучающихся на всех формах обучения с
использованием дистанционных образовательных технологий, и
содержит методические указания для организации самостоятельной
работы при изучении дисциплины.
В пособии рассмотрены все этапы процедуры создания программ
для микроконтроллеров и микро-ЭВМ, используемых для управления
бытовой радиоэлектронной аппаратурой и различными бытовыми
устройствами, изучены вопросы организации взаимодействия
микроконтроллеров с датчиками и объектами управления, указаны
необходимые справочные данные, приведены примеры диалоговых
процедур, даны задания и вопросы для выполнения компьютерных
лабораторных работ.
© Кормилин В.А., 2012
© Кафедра Телевидения и управления, ТУСУР, 2012
3
СОДЕРЖАНИЕ
Введение ................................................................................................................................................................. 4
Содержание лекционного курса ........................................................................................................................... 4
Создание программ для управляющих микро-ЭВМ и микроконтроллеров ..................................................... 4
Определения и термины .................................................................................................................................. 4
Редактор текста ................................................................................................................................................ 6
Кросс-транслятор программ ............................................................................................................................ 7
Кросс-компоновщик ........................................................................................................................................ 8
Кросс-отладчик................................................................................................................................................. 8
Дополнительные функции кросс-отладчика ................................................................................................ 12
Полноэкранное редактирование ................................................................................................................ 12
Режим ассемблера ....................................................................................................................................... 12
Работа с точками прерывания .................................................................................................................... 12
Знакомство с пакетом кросс-программ (Лабораторная работа 1) ................................................................... 13
Цель работы .................................................................................................................................................... 13
Лабораторное задание .................................................................................................................................... 13
Контрольные вопросы ................................................................................................................................... 14
Формирование выходных управляющих сигналов в микро-ЭВМ (Лабораторная работа 2) ........................ 15
Цель работы .................................................................................................................................................... 15
Электронный светофор .................................................................................................................................. 15
Лабораторное задание .................................................................................................................................... 15
Контрольные вопросы ................................................................................................................................... 15
Обработка входных данных в управляющей микро-ЭВМ (Лабораторная работа 3) ......................................... 16
Цель работы .................................................................................................................................................... 16
Поиск экстремального значения ................................................................................................................... 16
Лабораторное задание .................................................................................................................................... 17
Контрольные вопросы ................................................................................................................................... 17
Электронный кодовый замок (Лабораторная работа 4) ................................................................................... 17
Цель работы .................................................................................................................................................... 17
Общие положения .......................................................................................................................................... 18
Структура кодового замка .......................................................................................................................... 18
Алгоритм работы кодового замка .............................................................................................................. 19
Лабораторное задание .................................................................................................................................... 19
Контрольные вопросы ................................................................................................................................... 19
Приложение .......................................................................................................................................................... 20
4
Введение
Курс «Устройства управления бытовой радиоэлектронной аппаратурой» изучается в цикле
специальных дисциплин специальностей 201400 «Аудиовизуальная техника», 201500 «Бытовая
радиоэлектронная аппаратура», 230200 «Сервис БРЭА», 230705 «Сервис» и предназначен для освоения
общих принципов построения систем управления и контроля бытовой радиоэлектронной аппаратуры
(БРЭА).
В рамках курса рассматриваются микроконтроллеры и однокристальные микро-ЭВМ, применяемые в
системах управления РЭА. Изучаются методы обработки данных в микроконтроллерах и вопросы
организации взаимодействия микроконтроллера с объектами управления.
В процессе обучения студент должен выполнить 4 компьютерных лабораторных работы по разработке
программ для однокристальной ЭВМ (ОЭВМ) серии КМ1816ВЕ51 и две контрольные работы. Изучение
дисциплины заканчивается экзаменом.
Содержание лекционного курса
Устройства управления БРЭА. Принципы построения систем управления и контроля БРЭА. Датчики.
Управляющие микроконтрол-леры и однокристальные микро-ЭВМ.
Системы дистанционного управления. Термины и определения. Характеристика,
архитектура системы ДУ по протоколу RC-5. Распределение команд системы RC-5.
Характеристика, архитектура системы ДУ по протоколу ITT. Построение пультов ДУ.
Шины управления и обмена информацией. Шина I2C. Концепция, характеристики,
форматы передачи, синхронизация, арбитраж в шине. IM-шина.
Однокристальная микро-ЭВМ серии MCS-51. Организация памяти. Регистры
специального назначения. Порты ввода/вывода. Таймеры/счетчики. Последовательный
порт. Система прерываний. Система команд ОЭВМ КМ1816ВЕ51. Пример составления
простейших программ.
Отображение и ввод информации в БРЭА. Вакуумные люминесцентные индикаторы.
Жидкокристаллические
индикаторы.
Полупроводниковые
знакосинтезирующие
индикаторы. Ввод информации в микро-ЭВМ.
Создание программ для управляющих микро-ЭВМ и
микроконтроллеров
Определения и термины
Управляющие микро-ЭВМ и микроконтроллеры отличаются от обычных микро-ЭВМ способом
разработки программного обеспечения. Микро-ЭВМ, встроенные в оборудование, не имеют
соответствующего набора внешних устройств (дисплеи, принтеры, внешние накопители и т.д.) и поэтому
непригодны для разработки и отладки программного обеспечения. Часто в этом случае программы
разрабатываются и отлаживаются на универсальных ЭВМ с использованием пакета специальных программ.
При этом обычно приходится разрабатывать программы на языке ассемблера. Отладку выполняют с помощью
симулятора – программной модели управляющей микро-ЭВМ или контроллера.
Этот способ разработки программного обеспечения называется кросс-технологией, в противовес
резидентной технологии. При разработке программ на языке ассемблера используют различные служебные
программы – редакторы текста, трансляторы, компоновщики, отладчики программ.
В кросс-технологии применяются: кросс-транслятор, кросс-компоновщик, кросс-отладчик. В
минимальный пакет кросс-программ разработки программного обеспечения (ПО) для управляющей микроЭВМ входят:
 редактор текста, обеспечивающий ввод программы на языке ассемблера управляющей микроЭВМ, редактирование и запись файла программы;
 кросс-транслятор, преобразующий исходный текст программы в файл объектного кода,
содержащего коды команд управляющей микро-ЭВМ, информацию для редактора связей, предупреждения
и сообщения об ошибках;
 кросс-компоновщик объектных модулей (кросс-редактор связей). Компоновщик связывает
несколько объектных модулей в единую программу, добавляет вызываемые из программы библиотечные
файлы, подставляет вместо ссылок на объекты их реальные или относительные адреса и формирует
исполняемый файл в кодах управляющей микро-ЭВМ;
 кросс-отладчик (симулятор), описывающий программную логическую модель управляющей
микро-ЭВМ. При работе симулятор дает эффективный и удобный механизм покомандной и модульной
5
отладки компонентов программы с доступом к программно эмулируемым ресурсам управляющей микроЭВМ: регистрам, ячейкам памяти, таймерам, портам и т.д.;
 справочник по каждой из применяемых программ.
Перед составлением текста программы необходимо разработать алгоритм решения поставленной
задачи. Алгоритмом можно назвать последовательный набор шагов (элементарных действий), позволяющий
решить требуемую задачу. Самой простой формой записи алгоритма является словесный формат. В этом
случае в простой словесной форме нужно расписать этапы решения задачи с последовательной нумерацией.
Пример алгоритма. Человек, приехавший из другого города, собрался посетить Вашу любимую
дискотеку. Туда нет прямого автобуса, нужны пересадки, остановка находится в стороне, а вы должны
объяснить маршрут. Распишите на бумаге по пунктам все действия – это будет словесный алгоритм. Рецепт
приготовления блюда – другой пример алгоритма.
Далее распишем каждую строку алгоритма в виде команд – текст программы готов. С этого момента
нужны специальные программные средства.
Общая процедура создания и отладки программ для управляющей микро-ЭВМ включает следующие этапы,
показанные на рисунке 1. Это пример графической формы алгоритма создания программ.
Ошибки
трансляции
Редактор
текста
Ошибки
компоновки
Кросстранслятор
Ввод
текста
Исходный
програмтекст на языке
мы
управляющей
микро-ЭВМ
Кросскомпоновщик
Объектный
файл
Ошибки
отладки
Кроссотладчик
Исполняемый Программатор
файл в кодах
ПЗУ
управляющей
микро-ЭВМ
Рисунок 1 – Этапы процедуры создания ПО для управляющей микро-ЭВМ
Исходный текст программы с помощью редактора текста вводится в память универсальной ЭВМ и
записывается в файл. Затем с помощью кросс-транслятора этот файл переводится в промежуточную форму –
объектный файл. Объектный файл требует дополнительной обработки, которая выполняется с помощью
программы – кросс-редактора связей. На выходе редактора связей формируется двоичный файл, который
может быть выполнен на реальной микро-ЭВМ. Для проверки функционирования созданной программы
можно выполнить ее отладку в симуляторе. Отлаженный файл программы в кодах микро-ЭВМ записывается
с помощью программатора в постоянную память (ПЗУ) системы управления.
В простейших случаях операции трансляции и компоновки могут выполняться совместно без записи
объектного файла на диск. При этом транслятор и компоновщик объединяются в одной программе, которая
выполняет несколько последовательных проходов (просмотров) файла и преобразует исходный текст
программы в исполняемый код.
На каждом из этапов создания программного обеспечения могут быть обнаружены различные ошибки.
Это приводит к необходимости возврата к исходному тексту программы, исправления его и повторения всей
процедуры преобразования.
Ошибки трансляции связаны с неправильными типами операндов команд, пропуском необходимых
элементов оформления текста программы, опечатками, синтаксическими ошибками записи команд и
другими ошибками, обнаруживаемыми по внешнему виду команды. Эти ошибки являются самыми
простыми и легко устраняются при внимательном прочтении указанной транслятором ошибочной строки.
Ошибки компоновки проявляются на этапе работы редактора связей и означают неправильные
указания для объединения нескольких модулей подпрограмм в единую общую программу. Здесь
встречаются ссылки на неизвестные программы и метки, ошибки в именах программных модулей,
неправильное использование библиотечных функций. Осознание и устранение подобных ошибок, как
правило, требует простой внимательности и не вызывает больших трудностей.
Нередко компоновщики при обнаружении ошибок, которые на их взгляд не являются критическими,
выдают просто предупреждения. При этом они создают исполняемый файл. В таком файле ошибочные
ссылки заменяются стандартными значениями, например, нулями. Опасность скрывается в игнорировании
предупреждений компоновщика и использовании исполняемого файла с ошибками связей. В этом случае
результат работы программы непредсказуем.
Ошибки исполняемого файла связаны с ошибками алгоритма, неправильной работой программы,
зацикливаниями, ошибками счета, ошибками преобразования и другими ошибками. Такие ошибки
проявляются и обнаруживаются только при исполнении программы. Как правило, это самые трудные для
диагностирования и устранения ошибки. Анализ сложной и громоздкой управляющей программы требует
6
внимательности, памяти, хороших знаний поведения объекта управления и занимает продолжительное
время.
Ситуация несколько упрощается при использовании программных моделей – симуляторов. Перед
записью программы в ПЗУ ошибки данного этапа можно обнаружить, исследовать и найти пути устранения
с помощью программы кросс-отладчика. Программная модель микро-ЭВМ позволяет проводить анализ
исполняемого кода с использованием большого числа сервисных возможностей, которые отсутствуют в
реально работающей аппаратной ЭВМ.
Перечисленные выше возможности обеспечивают на разных этапах создания и преобразования
программ выявление и устранение большинства ошибок. Однако нельзя гарантировать устранение всех
ошибок на 100%. Кроме перечисленных, остаются еще динамические ошибки, проявляющие себя лишь при
реальной работе аппаратной микро-ЭВМ. Эти ошибки могут быть связаны с реальными режимами
прерываний, условиями функционирования портов, таймеров, ячеек памяти. По этой причине достаточно
сложные программные модули даже после тщательной отладки могут еще содержать невыявленные ошибки
и обычно их содержат.
При создании программ для однокристальной ЭВМ серии MCS-51 КМ1816ВЕ51 мы будем использовать
пакет кросс-программ, работающих на компьютере типа IBM PC. Перепишите с рабочего диска на Ваш
винчестер рабочий каталог LANQ, где записаны программы всего кросс-пакета. Название этого каталога
можно заменить на любое другое.
Редактор текста
Для создания файла с программой можно использовать любой редактор, позволяющий вводить и
записывать в файл текст в виде ASCII (American Standard Code for Information Interchange) символов.
Редактор не должен кодировать вводимые символы, записывать служебные комбинации, производить
подстановку и переключение шрифтов.
Для наших целей наиболее подходят DOS-редакторы текста, например Norton Editor, PE2, NE, ME,
Lexicon, редакторы, встроенные в оболочку Norton Commander, FAR и т.д. Можно применить и редакторы
системы WINDOWS типа Блокнот или WordPad.
При наборе текста программы следует избегать использования символов табуляции. Они не всегда
правильно обрабатываются в трансляторах.
В выбранном текстовом редакторе нужно создать символьный файл программы. При закрытии
программы редактора текста нужно не забыть записать созданную программу в виде файла с произвольным
именем и расширением *.ASM или *.ASS. Эти расширения являются общепринятыми для файлов на языке
ассемблера. Само имя должно быть написано английскими буквами и длина его не должна превышать 8
символов, например, Tablic.ASM (Tablic.ASS).
При использовании программы «Блокнот» файл нужно записать в кодировке ANSI. При
использовании кодировки Юникод или UTF в файл записываются служебные символы, которые не
распознаются транслятором. После вызова в программе «Блокнот» окна сохранения документа
«СОХРАНИТЬ КАК…» в поле «ИМЯ ФАЙЛА» необходимо указать английскими буквами желаемое имя с
расширением «*.ASM» или «*.ASS». В поле «ТИП ФАЙЛА» желательно указать «ВСЕ ФАЙЛЫ». В этом
случае удается сохранить указываемое расширение ASM (ASS). Для файлов с типом «Текстовый» будет
добавлено расширение *.TXT, которое придется убирать вручную.
Редактор WordPad также позволит создать и записать текст программы. При сохранении тип файла
должен быть указан как «Текстовый документ» или «Текстовый документ MS-DOS». У сохраненного файла
к предложенному Вами имени и расширению добавится дополнительное расширение *.TXT. С таким
дополнительным расширением трансляция программы невозможна. Поэтому после выхода из редактора имя
файла придется скорректировать и убрать добавку «.TXT».
При затруднениях в выборе редактора можно использовать несложный в освоении и компактный
редактор NE.COM, записанный в рабочем каталоге LANQ. Помните, что данный редактор не
поддерживает длинные и русские имена файлов и каталогов. Он откажется работать, если в пути
его размещения будут русские или длинные имена.
Для вызова редактора наберите в командной строке DOS команду
>NE
В ответ на приглашение «Enter file name» введите имя файла с расширением. Если этот файл уже
существует и находится в данном каталоге, он будет открыт. В противном случае будет создан и открыт
новый файл с указанным именем.
Ввод текста в редакторе производится обычным образом алфавитно-цифровыми клавишами. Для
управления перемещением курсора используются клавиши со стрелками, однако курсор не будет
перемещаться по экрану за пределы занятой символами области.
Вызов команд редактора потребуется только при записи файла, организации поиска в файле, при
работе с блоками текста, при работе с двумя окнами. Клавишей [F1] можно вызвать текст справки о
допустимых командах редактора. Почти все команды начинаются с нажатия одной из функциональных
клавиш [F3] – [F7] и буквы латинского алфавита.
7
Наиболее важные команды текстового редактора описаны в таблице 1.
Таблица 1 – Наиболее важные команды редактора NE
Файловые команды
Блочные команды
Запись файла и выход в
Установить
маркер
F3 E
F4 S
DOS
начала/конца блока
F3 S
Запись файла без выхода F4 R
Снять маркер блока
F3 Q
Выход без записи файла
F4 L
Пометить всю строку
Добавить
указанный
Копировать блок в
F3 A
F4 C
файл в конец текущего
текущую позицию
Включить другое окно и
Переслать блок в
F3 X
F4 M
перейти в него
текущую позицию
Команды удаления
Удалить символ слева
Удалить
текущий
Backspace
DEL
символ
Вернуть удаленное
Стереть выделенный
CTRL U
F4 D
блок
При сохранении файла редактор NE может предложить заменить символы табуляции на пробелы
«Should tabs be expanded to spacec? (Y or N)». Остается только согласиться и ввести символ Y.
Кросс-транслятор программ
При преобразовании программы, написанной на языке ассемблера управляющей микро-ЭВМ,
используется кросс-транслятор.
Для управления процессом трансляции при вызове программы транслятора указываются ключи. В
общем случае, для простых программ можно использовать только стандартные функции транслятора.
Поэтому процесс трансляции часто выполняется либо вообще без ключей, либо с ключами, подставляемыми
автоматически по умолчанию.
Для трансляции программ, написанных на языке ассемблера MCS-51, фирмами-разработчиками
предложено большое число кросс-трансляторов, работающих на IBM PC компьютерах: ASM51.EXE,
TASM.EXE, X8051.EXE, PETPO.EXE, COMP51.EXE и другие. Нет смысла знакомиться со всеми кросстрансляторами. Для наших учебных целей вполне подойдет простой и надежный кросс-транслятор
COMP51.EXE.
Формат вызова транслятора в командной строке:
>COMP51 input_file[.ass] [/ключи]
Информация в квадратных скобках является необязательной и должна задаваться пользователем по
необходимости. При пропуске этой информации используются значения по умолчанию. Поэтому при
запуске транслятора для файла со стандартным расширением *.ASS достаточно указать только имя файла
без расширения.
Список ключей кросс-транслятора:
/M:nnn  максимальный размер выходного файла, по умолчанию 4096;
/S:nnn  начальный адрес выходного кода, по умолчанию 0;
/D:out_file[.tsk]  имя выходного файла, по умолчанию input_file.tsk;
/L:list_file[.lst]  имя файла листинга, по умолчанию не создается;
/С:n  тип микроконтроллера, где n имеет возможные значения:
0 - 8x51 (1830ВЕ51) (по умолчанию)
1 - 8x52
2 - 8xC51
3 - 8xC52
4 - 8xC51Fx
В большинстве случаев нас устраивают значения параметров, которые заданы по умолчанию.
При обнаружении ошибок кросс-транслятор выдает сообщения, указывающие номер прохода, код
ошибки, номер строки с ошибкой, тип ошибки, текст ошибочной строки и указатель-стрелку. Рассмотрим
несколько примеров процесса трансляции программы, имеющей имя Tablic.asm.
Синтаксическая ошибка в тексте:
C:\LANQ>COMP51 Tablic.asm
Проход:1 строк: 11
ОШИБКА 26 в строке 13: Неверная команда или директива
RED
; Возврат из подпрограммы
^
8
Опечатка в команде RET не позволила транслятору опознать команду.
Ошибочный операнд:
C:\LANQ>COMP51 Tablic.asm
Проход:2 строк: 1, байт:0
ОШИБКА 19 в строке 3: Значение выражения > 255
MOV R4,#310
^
В этом примере в строке 3 обнаружена попытка занесения в байтовый регистр числа, превышающего
максимально допустимое значение.
Вызов несуществующей подпрограммы:
C:\LANQ>COMP51 Tablic.asm
Проход:2 строк: 1, байт:0
ОШИБКА 5 в строке 7: Имя не определено
LCALL DELAU
^
В строке 7 обнаружена ссылка на программу, имя которой не совпадает ни с одной из используемых
подпрограмм. В данном примере была допущена описка в имени DELAY. Транслятор не смог сопоставить
имя вызываемой подпрограммы с имеющимся набором имен подпрограмм.
Неправильное имя регистра:
C:\LANQ>COMP51 Tablic.asm
Проход:2 строк: 11, байт:20
ОШИБКА 5 в строке 12: Имя не определено
DJNZ R8, HAP
^
В строке 12 использовано имя регистра R8, который не существует.
Результат правильной трансляции без ошибок.
C:\LANQ>COMP51 Tablic.asm
Проход:2 строк: 13, байт:20
Транслятор сообщил количество строк кода (13) и длину программы в байтах (20).
Данный кросс-транслятор удачно сочетает простоту и оптимальность набора сервисных функций. Он
не поддерживает библиотеки пользовательских подпрограмм. Транслятор содержит мало ключей для
настройки и совмещает процесс трансляции с процессом компоновки. Поэтому на выходе транслятора сразу
создается двоичный исполняемый файл в кодах микро-ЭВМ. По умолчанию для данного файла задается
расширение *.TSK.
Кросс-компоновщик
Необходимость в компоновщике возникает при создании программ с большим числом подпрограмм.
Причем эти подпрограммы обычно создаются и отлаживаются отдельно и независимо друг от друга. Затем
их часто объединяют в библиотечные модули. Для управления процессом создания библиотек применяется
дополнительная программа – библиотекарь.
Задачей компоновщика является выбор из доступных библиотек и подключение только необходимых
программных модулей.
Структура наших программ достаточно проста, поэтому отдельно компоновка не выполняется,
библиотеки не применяются. По этой причине программы компоновщика и библиотекаря нами не
используются.
Кросс-отладчик
Полноэкранный отладчик-симулятор FD51.EXE для программ, написанных на языке ассемблера
однокристальных микро-ЭВМ КР1816ВЕ51/ КМ1816ВЕ31/КM1816ВЕ51, предназначен для логической
отладки программ, используемых указанными микро-ЭВМ. Каких-либо аппаратных средств отладчик не
поддерживает.
Отладчик работает на персональных ЭВМ типа IBM PC XT/AT и совместимых с ними ЭВМ и требует
для работы не менее 256 Кбайт оперативной памяти.
Отладчик позволяет:
9
 загрузить для отладки 16-ричные файлы, вырабатываемые имеющимися кросс-средствами
(транслятором с языка ассемблера), а также файлы чистого двоичного кода, считанные, например, из ПЗУ;
 просмотреть на экране дизассемблированный текст загруженной программы, включая адреса и коды
команд, область имитируемого ОЗУ данных, область внешней памяти, памяти программ, содержимое всех
регистров ОЭВМ;
 выполнить загруженную программу по шагам с просмотром результатов после каждого шага и в
непрерывном режиме с остановом по точкам прерывания при достижении задаваемых пользователем адресов;
 внести изменения в загруженную программу в мнемонических обозначениях языка ассемблера, а
также в машинных кодах;
 внести изменения в содержимое регистров, флагов и памяти в командном режиме и в режиме
полноэкранного редактирования;
 вывести на печать или дисковые носители дизассемблированный текст, дампы памяти;
 сохранить содержимое любой области памяти в файле на дисковом носителе;
 загрузить память из дискового файла;
 получить трассировку программы;
 определить время выполнения загруженной программы и ее частей по встроенному счетчику.
Для запуска отладчика необходимо в командной строке набрать команду следующего содержания.
> FD51.EXE
Программа выдает входную заставку и через пять секунд включает рабочий режим. При этом на
дисплей выводится (рисунок 2) основное окно программы, отображающее возможности многооконного
взаимодействия с пользователем в режиме прямого доступа к элементам информации, а также сведения о
назначении функциональных клавиш.
В верхней части окна программы показаны имена и значения регистров всех 4-х регистровых банков,
обозначенных как «Банк 0», «Банк 1», «Банк 2», «Банк 3». Активный банк регистров выделен с помощью
увеличенной яркости значений регистров. В правой верхней части окна программы также показаны имена и
значения всех доступных регистров специальных функций: таймеров/счетчиков, портов ввода/вывода,
регистров последовательного порта, регистров прерываний и других.
Банк 0
Банк 1
Банк 2
Банк 3
Регистры специал. функций
R0=00->00
R0=00->00
R0=00->00
R0=00->00
TH0= 00
TL0= 00
R1=00->00
R1=00->00
R1=00->00
R1=00->00
TH1= 00
TL1= 00
R2=00
R2=00
R2=00
R2=00
P0= FF
P1= FF
R3=00
R3=00
R3=00
R3=00
P2= FF
P3= FF
R4=00
R4=00
R4=00
R4=00
DPH= 00
DPL= 00
R5=00
R5=00
R5=00
R5=00
SP= 07
IP= 10100000
R6=00
R6=00
R6=00
R6=00
TMOD=00000000 IE= 01000000
R7=00
R7=00
R7=00
R7=00
TCON=00000000 SCON=00000000
A=00
B=00
PC=0000
SBUF=00
PSW= 02
------------------------------------------- INT RAM ---------- P S W ------|0000 00 00 00 00 00 00 | C AC F0 S1 S0 OV ** P
0000 7C0A
MOV
R4,#0A
|0006 00 00 00 00 00 00 | 0 0 0 0 0 0 1 0
0002 12000B LCALL 000B
|000C 00 00 00 00 00 00 |---- PGM ROM ---| Стек-0005 DCFB
DJNZ R4,0002
|0012 00 00 00 00 00 00 |0000 7C 0A 12 00| 07 00
0007 020007 LJMP 0007
|0018 00 00 00 00 00 00 |0004 0B DC FB 02| 06 00
000A 00
NOP
|001E 00 00 00 00 00 00 |0008 00 07 00 7B| 05 00
000B 7BFA
MOV
R3,#FA
|0024 00 00 00 00 00 00 |000C FA 00 79 24| 04 00
000D 00
NOP
|002A 00 00 00 00 00 00 |0010 7A 04 DA FE|Входы:000E 7924
MOV
R1,#24
|0030 00 00 00 00 00 00 |0014 D9 FA DB F5|INT0= 0
0010 7A04
MOV
R2,#04
|0036 00 00 00 00 00 00 |0018 22 00 00 00|INT1= 0
0012 DAFE
DJNZ R2,0012
|------------------------|----|-s--ms--mcs| T0 = 0
0014 D9FA
DJNZ R1,0010
| CMD >
|000 000 000| T1 = 0
0016 DBF5
DJNZ R3,000D
|-----------------------------|-----------|------1 Шаг
2 Цикл 3Рег:DEC4 In/Ex 5УстBrk 6Пам:BIN7 I/E  8 Меню 9 I/E  0 Помощь
Рисунок 2 – Вид окна программы кросс-отладчика (симулятора)
В нижней половине окна отладчика слева показан дизассемблированный текст загруженной
исполняемой программы с указанием адресов и кодов команд. Каждая строка соответствует одной команде
и занимает от 1 до 3 адресов.
В центре нижней части экрана отладчика показано окно значений байтов внутренней/внешней памяти
данных. Название окна – INT RAM или EXT RAM. В левой колонке этого окна показаны адреса ячеек
памяти с шагом значений по 6 единиц, а справа группами по 6 байтов приведены значения ячеек памяти
данных. Внутреннюю и внешнюю память можно отображать только поочередно путем переключения
клавишей F4.
Под этим окном находятся строка ввода команд отладчика CMD > и окно счетчика времени
выполнения программы s–ms–mcs. Время отображается в секундах, миллисекундах и микросекундах.
Счетчик настроен на вариант микро-ЭВМ, работающей с тактовой частотой 12 МГц. Для анализа времени
выполнения программы на микро-ЭВМ с другой тактовой частотой полученное значение времени
выполнения программы нужно умножить на коэффициент отношения k.
k
12
,
R
10
где R – реальная тактовая частота в МГц.
В правой нижней части экрана в окне PSW показаны названия и значения битов регистра флагов,
содержание байтов памяти программ показано в окне PRG ROM, текущее состояние стека приведено в окне
СТЕК, состояние входов микро-ЭВМ INT0, INT1, T0 и T1 показано в окне Входы.
В нижней строке экрана имеется меню функциональных клавиш [F1] – [F10]. Они настроены на
выполнение наиболее употребительных команд. Остальные команды вводятся пользователем в командной
строке с клавиатуры при помощи алфавитно-цифровых клавиш. При вводе этих команд можно применять
для редактирования клавиши [Ins], [Del], [BackSpace], [Home], [End], [Esc]. Помните, что после начала
ввода команды и до нажатия клавиши [Enter] функциональные клавиши [F1] – [F10] недоступны. Для
неверных команд выдается сообщение об ошибке и звуковой сигнал.
Рассмотрим действие команд, активизируемых функциональными клавишами.
F1  выполнить текущую инструкцию загруженной программы. Текущая инструкция  это инструкция,
выделенная в окне дизассемблированного текста светлым прямоугольником. После выполнения на экране
можно сразу наблюдать результаты ее работы.
F2  выполнить текущую инструкцию до ее завершения. Клавиша позволяет выполнить подпрограмму
или цикл как одну инструкцию. Это удобно, так как не нужно выполнять пошагово уже отлаженные
подпрограммы.
F3 – циклическое переключение представления числовой информации на экране (содержимого
регистров и памяти) в десятичную, двоичную или шестнадцатеричную формы.
F4  переключение большого окна памяти с внутренней (INT RAM) на внешнюю память (EXT RAM) и
обратно.
F5  установка точек прерывания.
F6  переключение формы представления данных из памяти в окне (INT/EXT RAM) в двоичную или
шестнадцатеричную.
F7  листать окно памяти данных вверх на одну строку.
F8 – вызвать меню команд FD51.
F9  листать окно памяти данных вниз на одну строку.
F10  справочная информация.
Для пролистывания в окне INT/EXT RAM памяти данных вверх на один кадр используется клавиша
[Home], на один кадр вниз – клавиша [End]. Просмотр памяти программ в окне PGM ROM можно
осуществить с клавишами [PageUp] и [PageDown].
Остальные команды вводятся в командной строке. Для получения справки по командам можно ввести
команду «Н» в виде одной буквы без кавычек или нажать комбинацию клавиш «[Ctrl] – [H]».
Все вводимые в программе числовые значения должны иметь шестнадцатеричный формат, при этом не
требуется указывать букву «h». Рассмотрим (таблица 2) допустимые в отладчике команды.
Таблица 2 – Команды отладчика FD51
L <тип памяти><нач. адрес>, <файл. спец.>
Загрузить файл в память. <Тип памяти> может быть I, E или P.
Соответственно файл загружается во внутреннюю (Int), внешнюю
(Ext) или программную (Pgm) память.
Пример 1: L I 01F,С:\PGM\T1 – загрузить двоичный файл
С:\PGM\T1 во внутреннюю память данных, начиная с адреса 01F.
Пример 2: L P 0,Tablic.tsk – загрузить двоичный файл
программы Tablic.tsk в программную память с адреса 0.
S <тип памяти><нач. адрес>-<кон. Адрес>,<файл. спец.>
Сохранить область памяти в дисковом файле. В качестве <файл.
спец.> допускается любая корректная в DOS спецификация файла.
Параметры <нач.адрес> - <кон.адрес> указывают соответственно
начало и конец сохраняемой области. Сохраненный командой S файл
можно потом снова загрузить командой L.
Пример: S P 20-642,C:\PGMLIB\MYFILE – сохранить в
двоичном виде область памяти программ с начального адреса 20h до
конечного адреса 642h в файле C:\PGMLIB\MYFILE
PRT <тип памяти><нач. адрес>-<кон. адрес>[,<файл. Спец.>]
Записать в файл дамп области памяти в шестнадцатеричном формате.
Если не указана <файл. спец.>, то дамп выводится на принтер.
Пример: PRT P 20-642,C:\PGMLIB\MYFILE – сохранить в
шестнадцатеричном формате область памяти программ с 20h по 642h
адрес в файле C:\PGMLIB\MYFILE
11
PRTD <нач. адрес>,<количество команд>[,<файл. спец.>]
Распечатать дизассемблированный текст, начиная с <нач. адреса>.
Вывод по умолчанию направляется на принтер.
R<номер регистра>=<число>
Занести число в указанный регистр текущего банка. Число должно
быть байтом.
Пример: R4=FF
Продолжение
табл. 2
<Имя флага>=<число>
Установить или сбросить указанный флаг в PSW. Можно
использовать следующие имена флагов: C, AC, F0, S1, S0,
OV, P. Если число равно 0, то флаг сбрасывается, иначе 
устанавливается.
Пример: S1=0
<Имя регистра>=<число>
Занести число в регистр специального назначения. Можно
использовать следующие имена: A, B, TH0, TH1, TL0, TL1, DPH,
DPL, DPTR, SP, IP, IE, TMOD, TCON, SCON, SBUF, PC. Число для
PC и DPTR может быть двухбайтовой величиной. Для остальных
регистров указывается один байт в шестнадцатеричной форме.
Пример: SP=20 или DPTR=FF00
PO<номер порта>=<число> Занести число в порт. Номер порта –
это число от 0 до 3.
Пример: PO2=12
D<адрес> Установить адрес дизассемблированного текста в окне.
Пример: D 0240
<Тип памяти><адрес>[-<кон. адрес>]=<число>
Занести число в память. Если указан <кон. адрес>, то заполняется
целая область.
Пример: I 22=55 или P 0-40=FF
<Тип памяти><адрес>.<номер бита>=<число>
Установить или сбросить бит в памяти. <Номер бита> может быть
числом от 7 до 0 (старший бит  7).
Пример: I 20.6=1
<Имя регистра>.<номер бита>=<число>
Установить или сбросить бит в регистре специального назначения (A,
B, PO0-PO3, IP, IE, TMOD, TCON, SCON).
Пример: TMOD.3=0
M <тип памяти><нач. адрес>
Установить начальный адрес памяти в окне.
Примеры: M I 20 или
M E 0FF
или
MP0
G [<нач. адрес>[,<кон. адрес>]]
Выполнить программу с <нач. адреса> до <кон. адреса>. Если <нач.
адрес> пропущен, выполнение начинается с текущей команды,
которая выделена белым прямоугольником. <Кон. адрес> можно не
указывать, если используются точки прерывания. Выполняющуюся
программу можно остановить нажатием любой клавиши.
Пример: G 10, F0 или G или G ,2E
Окончание табл. 2
T ON [,<файл. спец.>] Включить трассировку программы, т.е. запись
промежуточных результатов.
Осторожно! Без имени файла поток данных трассировки
направляется на принтер.
T OFF Выключить трассировку.
INT<0/1>=<число>
Имитировать высокий или низкий уровень на входах INT0 или INT1
Пример: INT1=0
BA=<адрес>
Установить новую «точку отсчета» для дизассемблирования. Эта
команда полезна при просмотре таблиц, зашитых в памяти программ,
когда при дизассемблировании «назад» неизвестно, откуда вести
12
дизассемблирование.
RSTC Сбросить счетчик времени выполнения программы.
QUIT Выход в DOS.
RST Имитируется сброс процессора.
N Заново запускается FD51.
Почти все команды можно активизировать через меню команд, вызываемое с помощью клавиши [F8].
Дополнительные функции кросс-отладчика
Полноэкранное редактирование
Переход в режим полноэкранного редактирования осуществляется нажатием клавиши [Enter] без ввода
команды. Теперь можно перемещать курсор по экрану с помощью клавиш управления курсором и изменять
содержимое регистров, памяти и флагов набором чисел на клавиатуре. Можно изменить также начальный
адрес дисассемблированного текста (текущей инструкции) и начальные адреса окон памяти (в первых
строках окон). Полноэкранное редактирование можно производить и при десятичном, и при двоичном
представлении информации на экране. Во время редактирования остаются доступными все команды,
вводимые функциональными клавишами. Чтобы вернуться в командную строку, нажмите [Enter] снова. Для
быстрого перемещения курсора по экрану можно пользоваться клавишами [Tab] и [Shift]-[Tab].
Режим ассемблера
Для перехода в режим ассемблера (ввода команд отлаживаемой программы в мнемонических
обозначениях) нужно в режиме полноэкранного редактирования поместить курсор в поле текущей
инструкции загруженной программы. Теперь наберите мнемонику (например, «MOV A,#45») и нажмите
[Enter]. Если мнемоника верна, то соответствующие ей коды заносятся в память программ, а окно
устанавливается на следующий адрес. Числа набираются только в шестнадцатеричной форме. Для
исправления ошибочного набора до нажатия [Enter] переместите курсор с помощью клавиш «» и «» в
желаемую позицию и повторите ввод. В этом режиме не поддерживаются клавиши [Ins], [Del], [BackSpace],
[Esc].
При ассемблировании можно указывать имена регистров специального назначения. При возникновении
неоднозначности следует числовые значения предварять нулем. Для выхода из режима ассемблера нажмите
клавишу [Q] или уведите курсор из поля текущей инструкции.
Работа с точками прерывания
Меню точек прерывания (останова) вызывается клавишей [F5]. Можно установить одновременно до 8
точек прерывания. Прерывание (останов) выполняющейся программы происходит при достижении
указанного в колонке «PC» адреса при выполнении условия «Счетчик» = «Проход». «Счетчик»  это
десятичное число, значение которого определяет номер прохода через заданный адрес, в котором будет
выполнен останов. «Проход» показывает, сколько раз программа проходила через указанный адрес.
Для задания точки прерывания в колонке «PC» необходимо записать в шестнадцатеричной форме
адрес команды, на которой должен произойти останов, и задать значение в колонке «Счетчик».
Минимальное значение счетчика равно 1. В этом случае прерывание произойдет при первом
обращении к этому адресу. Точка прерывания становится пассивной при задании счетчика в 0.
После окончания редактирования текущие значения точек прерывания можно сохранить на диске в
виде одного из 10 наборов, используя клавишу F2. У пользователя запрашивается номер набора точек
прерывания (0-9). Информация записывается в один файл с именем FD51.BRK. Восстановить таблицу
значений точек прерывания можно клавишей F1, также указав номер набора.
Для возврата в основное меню нажмите [F5]. После задания точек прерывания можно запустить
программу командой G без параметров. Предварительно требуется установить начальный адрес запуска с
помощью команды D <адрес>, иначе программа будет запущена с текущего адреса. При останове
программы по прерыванию выдается сообщение с указанием номера точки прерывания.
13
Знакомство с пакетом кросс-программ
(Лабораторная работа 1)
Цель работы
Целью работы является знакомство с этапами разработки, написания, трансляции и отладки программ
для управляющих микро-контроллеров и однокристальных микро-ЭВМ на примере ОЭВМ КМ1816ВЕ51. В
работе используется пакет кросс-программ: редактор текста NE.COM, кросс-транслятор COMP51.EXE,
кросс-отладчик FD51.EXE.
Процесс программирования на ассемблере считается трудным, хотя трудности могут носить чисто
психологический характер. Поэтому для начала создадим и исполним простую программу, которая с
помощью подпрограммы DELAY формирует задержку в доли секунды.
Лабораторное задание
1. Ознакомьтесь с описанием работы всех программ, используемых при создании ПО для ОЭВМ
КМ1816ВЕ51.
2. Проанализируйте приведенный ниже алгоритм программы формирования программной задержки.
Предложите свои варианты реализации программной задержки.
Головная программа:
a) задаем счетчик вызовов подпрограммы задержки;
b) вызываем подпрограмму задержки;
c) уменьшаем на 1 счетчик вызовов. Выполняем в цикле пункты (b, c) до обнуления счетчика
вызовов;
d) организуем программную ловушку для останова программы.
Подпрограмма задержки на интервал времени N:
задаем начальное значение счетчика внешнего цикла;
задаем начальное значение счетчика среднего цикла;
задаем начальное значение счетчика внутреннего цикла;
уменьшаем на 1 счетчик внутреннего цикла. Повторяем в цикле пункт (d) до обнуления
счетчика внутреннего цикла;
e) уменьшаем на 1 счетчик среднего цикла. Повторяем в цикле пункты (c, d, e) до обнуления
счетчика среднего цикла;
f) уменьшаем на 1 счетчик внешнего цикла. Повторяем в цикле пункты (b, c, d, e, f) до обнуления
счетчика внешнего цикла;
g) возврат из подпрограммы.
3. Введите текст предлагаемой ниже пробной программы (таблица 3). Не забудьте сохранить
введенный текст в виде файла с произвольным именем формата DOS длиной до 8 символов и расширением
*.ASS.
a)
b)
c)
d)
Таблица 3 – Программа пробной задержки
Метки
MAIN:
SNOV:
DELAY:
HAP:
CP:
WH:
STOP:
Команды
MOV R4,#1
LCALL DELAY
DJNZ R4,SNOV
SJMP STOP
NOP
NOP
NOP
NOP
MOV R3,#4
MOV R1,#3
MOV R2,#2
DJNZ R2,WH
DJNZ R1,CP
DJNZ R3,HAP
RET
SJMP STOP
END
Комментарии
; Вызов задержки
; Переход на продолжение программы
; Подпрограмма задержки
; R3  счетчик внешнего цикла
; R1  счетчик среднего цикла
; R2  счетчик внутреннего цикла
; Повтор цикла до обнуления счетчика R2
; Повтор цикла до обнуления счетчика R1
; Повтор цикла до обнуления счетчика R3
; Возврат из подпрограммы
; Программная ловушка
; Программа завершена
14
4. Выполните трансляцию введенной программы с помощью кросс-транслятора COMP51.EXE и
исправьте возможные ошибки. При необходимости повторите трансляцию, чтобы получить загрузочный
файл без ошибок.
5. Запустите программу отладчика FD51.EXE.
6. Командой L P 0, имя_файла.TSK загрузите в программную память отладчика файл программы
задержки.
7. Выполните программу по шагам. Учтите, что команд останова в системе команд данной ОЭВМ не
предусмотрено. Поэтому завершением программы надо считать вхождение в программную ловушку
(бесконечный цикл) вида STOP: SJMP STOP.
8. Проанализируйте время выполнения данного фрагмента до входа в бесконечный цикл. В отчете
укажите время выполнения данного фрагмента в микросекундах.
9. Завершите работу в отладчике командой QUIT.
10. Запишите другой файл с рабочей программой (таблица 4)
Таблица 4 – Программа рабочей задержки в 1 секунду
Метки
Команды
MAIN:
SNOV:
DELAY_1C:
MOV R4,#1
LCALL DELAY_1C
DJNZ R4,SNOV
SJMP STOP
NOP
NOP
CP:
MOV R3,#50
NOP
NOP
MOV R1,#43
MOV R2,#231
WH:
DJNZ R2,WH
HAP:
DJNZ R1,CP
DJNZ R3,HAP
STOP:
RET
SJMP STOP
END
Комментарии
; Вызов задержки в 1 сек
; Переход
программы
на
продолжение
; Подпрограмма задержки на
1 сек
; R3  счетчик внешнего цикла
; R1  счетчик среднего цикла
; R2  счетчик внутреннего
цикла
; Повтор цикла до обнуления
счетчика R2
; Повтор цикла до обнуления
счетчика R1
; Повтор цикла до обнуления
счетчика R3
; Возврат из подпрограммы
; Программная ловушка
; Программа завершена
11. Создайте исполняемый файл, загрузите его в отладчик. Установите контрольную точку останова на
адресе команды бесконечного цикла. Запустите программу на выполнение командой G.
12. После останова программы определите по счетчику точное время ее выполнения. В отчете
укажите время выполнения данного фрагмента в секундах, миллисекундах и микросекундах.
Рассчитайте в процентах ошибку формирования задержки в 1 секунду, укажите в отчете величину
ошибки в процентах.
13. Оформите отчет по данной работе с титульным листом. В отчете укажите цель работы, тексты
программ, полученные числовые параметры времени выполнения и ошибки. В заключение приведите
ответы на контрольные вопросы.
14. Файл отчета необходимо переслать в Томск для зачета выполнения лабораторной работы № 1.
Контрольные вопросы
1. Сколько байтов занимает каждая из двух программ?
2. Сколько строк в отладчике занимает каждая из двух программ?
3. Для какой цели в программе используется конструкция
STOP:
SJMP STOP
4. Какой из трех счетчиков в подпрограмме имеет наибольший вес единицы, влияющей на
длительность формируемой задержки, и почему? Для обоснования укажите проценты ошибки при
изменении каждого из счетчиков на единицу.
15
Формирование выходных управляющих сигналов в микро-ЭВМ
(Лабораторная работа 2)
Цель работы
Целью работы является дальнейшее изучение этапов создания, методов отладки программ для
управляющих микро-ЭВМ, знакомство со способами формирования выходных управляющих сигналов на
примере программы электронного светофора.
Электронный светофор
Для работы электронного светофора необходимо выдавать в определенной последовательности
управляющие сигналы включения и выключения на каждый из трех излучателей-цветов светофора. Зеленый и
красный сигналы должны быть активны по 15 секунд, а желтый – 5 секунд. Для работы светофора не нужны
никакие входные сигналы.
Подобную задачу можно решать при разработке устройства управления, например, елочной гирляндой
и т.п.
В предыдущей лабораторной работе мы создали программу задержки на 1 секунду. Необходимо на ее
основе получить задержки в 15 и 5 секунд.
Для управления включением и выключением света будем использовать 3 младших бита порта 1.
Допустим, бит P1.0 подключен к зеленому сигналу светофора, бит P1.1 управляет желтым сигналом, а P1.2
соединен с красным цветом. Единичное состояние бита включает свечение, а нулевое – выключает.
Лабораторное задание
1. Разработайте алгоритм и составьте текст программы, управляющей сигналами
светофора. Зеленый свет горит 15 секунд, затем на 5 секунд включается желтый, потом на
15 секунд зажигаем красный. Цикл завершаем желтым сигналом на 5 секунд.
2. Запишите программу в файл на диске, обязательно укажите комментарии к
командам. Выполните трансляцию программы, устраните возможные ошибки.
3. Выполните отладку Вашей программы.
4. Оформите отчет по данной работе с титульным листом. В отчете укажите цель
работы, алгоритм и текст программы, дайте ответы на контрольные вопросы.
5. Файл отчета необходимо переслать в Томск для зачета выполнения лабораторной работы № 2.
Контрольные вопросы
1. Допустим, мы реализуем алгоритм управляемого пешеходного перехода. В
исходном состоянии светофор показывает зеленый свет. На бит порта Р1.7 заведен
единичный сигнал от нормально разомкнутой кнопки. Пешеход нажимает на кнопку
только тогда, когда желает перейти дорогу. При нажатии на кнопку на бит порта
поступает сигнал нулевого уровня.
Светофор должен выполнить один полный цикл переключений и снова ждать нажатия кнопки. Можно
ли добавкой 2-3 команд в Вашу программу реализовать алгоритм управляемого пешеходного перехода и
как?
2. Сложно ли модернизировать Вашу программу для управления переключением
елочной гирлянды? Что в программе прибавится или убавится?
16
3. Какой максимальный объем внешней памяти программ доступен в однокристальной микро-ЭВМ
КМ1816ВЕ51 и при каких условиях?
Обработка входных данных в управляющей микро-ЭВМ
(Лабораторная работа 3)
Цель работы
Целью работы является дальнейшее изучение этапов создания и методов отладки программ
управляющих микро-ЭВМ, которые для решения задач управления используют обработку входных данных,
на примере программы, выполняющей поиск максимального значения в массиве чисел.
Поиск экстремального значения
Одной из задач, решаемых при управлении как бытовой, так и специальной промышленной
аппаратурой является обработка информации, поступающей в систему с датчиков. Виды датчиков весьма
разнообразны, а характер информации, требующей обработки, еще более многообразен.
При обработке данных часто решается задача определения экстремального значения среди набора
однотипных величин. Числовые величины поступают потоком в порт микро-ЭВМ с выхода датчика. В
учебном примере тяжело моделировать для программы-симулятора поток данных. Проще допустить, что
данные заранее записаны в виде массива чисел. Для хранения массива можно использовать внешнюю
память данных однокристальной микро-ЭВМ. Такое допущение вполне корректно. Например, запись во
внешнюю память используют в случае невозможности обработки данных в темпе поступления отсчетов. В
этом случае обработка состоит из фазы накопления чисел в памяти данных и фазы обработки данных,
считываемых из ячеек ВПД.
Задачу поиска максимума (минимума) приходится решать довольно часто: в визуальных устройствах
контроля доступа, в видеосистемах охраны, в устройствах считывания штрихового кода, в сканерах, в
аппаратуре определения положения объекта и т.д.
Рассмотрим задачу точной автоматической настройки радиоприема на сигнал радиостанции. Эта задача
формально является задачей определения максимума амплитуд сигналов.
Информация об амплитудах принимаемых радиосигналов поступает в микро-ЭВМ с выхода
амплитудного детектора. Входной блок приема радиосигналов при поиске радиостанции получает с
управляющей микро-ЭВМ команды для перестройки входного частотного фильтра. Таким способом
сканируется весь диапазон радиочастот.
В окрестности несущей частоты передающей станции амплитуда принимаемых радиосигналов плавно
нарастает и достигает максимума в момент точной настройки. По мере ухода от несущей частоты амплитуда
принимаемых сигналов плавно уменьшается.
График распределения амплитуд сигналов вблизи несущей частоты в идеальном случае имеет
гауссоидальную форму, вид которой показан на рисунке 3. Реально такую гладкую форму распределения
можно получить только при статистической обработке данных для множества выборок.
В реальной форме графика распределения амплитуд кроме глобального максимума будут локальные
максимумы и минимумы. Это необходимо учитывать при обработке данных.
Рисунок 3 – Распределение амплитуд радиосигналов
17
Для точной настройки приемника на частоту станции необходимо определить в частотной области
точку с экстремальным уровнем амплитуды сигналов и настроить входной частотный фильтр на это
значение. В нашем случае необходимо определить номер ячейки памяти, в которой записан максимальный
по значению элемент.
Примем, что каждый элемент массива данных записан в виде одного байта, в массиве задана 256
элементов. Для простоты массив расположен с нулевого адреса внешней памяти данных однокристальной
микро-ЭВМ. Вдали от максимума величина записанных значений близка к нулю.
Лабораторное задание
1. Разработайте алгоритм и составьте текст программы, считывающей 256 элементов
массива, записанного с 0 адреса внешней памяти данных. Программа должна определить
адрес максимального по амплитуде элемента. Этот элемент должен быть максимальным
из всего массива, а не первым из найденных локальных максимумов. Адрес элемента
памяти, содержащего максимальный элемент, должен быть записан в регистр B. Для
обращения к внешней памяти данных обязательно используйте регистр DPTR.
2. Запишите программу в файл на диске, обязательно укажите комментарии к
командам.
3. Выполните трансляцию введенной программы и исправьте возможные ошибки.
4. В рабочем подкаталоге SIGNAL заданы 10 файлов реальных сигналов, каждый из
которых имеет гауссоидальную форму, но разное расположение максимума. Имена
файлов – IMP0.BIN, IMP1.BIN, …, IMP9.BIN. Конкретный файл данных для каждого
студента определяется по последней цифре личного пароля. Перепишите свой файл
сигнала IMP?.BIN в Ваш рабочий каталог.
5. Загрузите исполняемый файл программы в симулятор FD51.
6. Во внешнюю память данных командой L E 0, IMP?.BIN загрузите свой файл
данных.
7. Переключите клавишей [F4] окно памяти данных на EXT RAM. С помощью
функциональных клавиш [F7] и [F9] можно пролистать память данных и найти область
данных с отсчетами. Зрительно можно определить максимальный элемент и его адрес. Это
позволит Вам проверить работу Вашей программы.
8. Выполните отладку программы поиска максимума. Запишите значение и адрес
максимума, определенный программой.
9. Составьте отчет установленной формы по лабораторной работе. В отчете должна быть указана цель
работы, приведен алгоритм, текст исходной программы с комментариями, имя и номер файла данных,
результаты работы: адрес и значение максимального элемента, определенные Вашей программой.
Обязательно дайте ответы на контрольные вопросы.
10. Файл отчета необходимо переслать в Томск для зачета выполнения лабораторной
работы № 3.
Контрольные вопросы
1. Как перестроить Вашу программу на поиск минимального элемента?
2. Какой максимальный объем внешней памяти данных доступен в однокристальной микро-ЭВМ
КМ1816ВЕ51?
3. Укажите возможные области применения устройства, решающего данную задачу.
Электронный кодовый замок
(Лабораторная работа 4)
Цель работы
18
Целью работы является комплексное освоение методов организации взаимодействия с объектами
управления и датчиками, углубленное изучение этапов создания и методов отладки программ на примере
программы, управляющей работой цифрового электронного кодового замка.
Общие положения
Структура кодового замка
Однокристальная микро-ЭВМ и микроконтроллер могут использоваться для управления различными
устройствами. Рассмотрим построение на базе ОЭВМ КМ1816ВЕ51 цифрового электронного кодового
замка. Для реализации устройства, кроме ОЭВМ, необходимы некоторые дополнительные блоки:
клавиатура для ввода кодового слова, усилитель управляющего сигнала для открывания механизма замка,
схема управления сигналом тревоги, срабатывающая при многократном ошибочном наборе кода.
На рисунке 4 показана предполагаемая схема подключения указанных устройств к разрядам порта P1
ОЭВМ.
К младшим разрядам P1.0 – P1.3 подключены цифровые выходы клавиатуры DK0–DK3, на которых
формируется код вводимой цифры. Для синхронизации процесса ввода цифр на выводе клавиатуры U,
подключенном к разряду P1.4, формируется импульс готовности текущей цифры.
Для открывания замка используется низкий уровень сигнала разряда P1.7. Сигнал открывания
проходит через усилитель и включает соленоид ригеля замка, который втягивает защелку и открывает
замок. Для включения сигнала тревоги разряд P1.6 подключен к входу логического элемента ИЛИ, на
другой вход которого поступает частота F с генератора G. Изменяя сигнал на входе логического элемента с
1 на 0 и обратно, можно включать и выключать сигнал тревоги. Элемент ИЛИ выбран по причине исходного
единичного значения битов порта Р1.
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
DK0
DK1
DK2
DK3
7
8
9
4
5
6
1
2
3
0
ENTER
U
1
G
F
УСИЛИТЕЛЬ
Электромагнит
замка
Рисунок 4 – Схема электронного замка
Поясним процесс ввода цифр. Диаграмма сигналов, приведенная на рисунке 5, показывает
формирование цифры 5. Двоичный код цифры 5 равен 0101. Для синхронизации ввода код цифры
сопровождается импульсом U. Длительность импульсных сигналов равна 1–2 миллисекундам, что вполне
достаточно для их обнаружения и обработки на ОЭВМ. Положительный фронт импульса U соответствует
правильному значению двоичного кода цифры.
DKO
DK1
DK2
DK3
U
Нажатие
цифры 5
Значение кода
истинно!
Рисунок 5 – Диаграмма сигналов на выводах клавиатуры
при вводе цифры 5
19
Алгоритм работы кодового замка
Для работы электронного замка необходим эталонный код. Эталонный код хранится во внешней
памяти данных, в двух последовательных ячейках с адресами 100H (младшие 2 цифры) и 101Н (старшие 2
цифры). Задание эталона осуществляется с помощью 16-разрядного DIP-переключателя.
На рисунке 6 показан возможный вариант реализации формирователя эталонного кода.
DIP1
+5В B7
B6
B5
B4
B3
DIP2
B0
B7
DIP3
B3
D0
BF
D1
D0 D0 D2
D1 D1 D3
D2 D2
D4
D3 D3 D5
D4 D4
D6
D5 D5
D6 D6 D7
D5
D7 D7 D6
Адрес 101Н
CS
D6 D7
D7 D7
CS
Адрес 100Н
DIP4
B0
Рисунок 6 – Схема формирования эталонного кода
Сигналы выборки адресов ВПД 0100h и 0101h формируются с помощью дешифратора адреса, схема
которого не приведена. Комбинация включенных и выключенных DIP-переключателей при чтении адресов
100Н и 101Н из ВПД формирует на выходе шинных формирователей BF два байта эталонного кода по две
шестнадцатеричных цифры в каждом.
Для открывания замка нужно набрать код, содержащий минимум 4 цифры, и нажать клавишу
<ENTER>. Максимальное количество набираемых цифр не ограничено. Программа должна сохранять
только 4 последние цифры. При ошибке в наборе до нажатия <ENTER> можно набирать любое число цифр.
При нажатии <ENTER> проверяются только четыре последние цифры.
После нажатия <ENTER> программа должна сравнить введенный код с эталонными цифрами. При
совпадении кодов на 5 секунд формируется сигнал низкого уровня на разряде P1.7. Этот сигнал приводит к
открыванию замка. Затем программа переходит в исходное состояние и готова принимать новые цифры.
При вводе неправильного кода нужно просто считать попытки. Пять ошибок подряд говорят о
возможном подборе кода. Поэтому после пяти несовпадений нужно на 5 секунд включить звуковой сигнал.
Далее замок переходит в исходное состояние.
Коды цифр, формируемых на выходах DK0 – DK3 клавиатуры, соответствуют их двоичным 4-битовым
эквивалентам. Код <ENTER> равен 0Fh.
Замок должен быть всегда готов ко вводу новых цифр.
Лабораторное задание
1. Разработайте алгоритм и составьте текст программы, управляющей работой кодового замка.
Программа должна быть синхронизована по импульсу управления U. Паузы в 5 секунд формируйте с
помощью подпрограммы DELAY_1C, испытанной в первой лабораторной работе.
2. Введите программу, выполните ее трансляцию и создайте исполняемый двоичный файл.
3. Загрузите в отладчик FD51.EXE исполняемую программу.
4. Выполните отладку Вашей программы. При отладке придется часто использовать пошаговый
режим. Для задания кода на входе порта P1 используется команда отладчика PO1=<число>. Для смены
состояния определенного бита порта 1 используется команда PO1.<номер бита>=0 или 1, например
PO1.4=1.
5. Подготовьте отчет о работе по стандартной форме. В отчете должна быть приведена цель работы,
записан алгоритм, текст исходной программы с комментариями, даны ответы на контрольные вопросы.
6. Файл отчета необходимо переслать в Томск для зачета выполнения лабораторной работы № 4.
Контрольные вопросы
1. Как можно повысить защищенность устройства от «взлома» и подбора кода? Сформулируйте Ваши
рекомендации.
2. Предложите способ задания эталонного кода без использования аппаратных переключателей.
3. Как можно организовать ввод цифр с клавиатуры без использования синхросигнала U?
20
Приложение
(справочное)
МНЕМОКОД
НАЗВАНИЕ
БАЙТЫ
ЦИКЛЫ
Список команд ОЭВМ КМ1816ВЕ51
ОПЕРАЦИЯ
ГРУППА КОМАНД ПЕРЕДАЧИ ДАННЫХ
ПЕРЕСЫЛКА В РПД
MOV @RI,#D
2 1 ((RI))#D
КОНСТАНТЫ
ПЕРЕСЫЛКА В РПД БАЙТА
MOV @RI,A
1 1 ((RI))(А)
ИЗ АККУМУЛЯТОРА
ПЕРЕСЫЛКА В РПД
MOV
БАЙТА, ВЗЯТОГО ПО
2 2 ((RI))(AD)
@RI,AD
АДРЕСУ AD
ЗАГРУЗКА В
MOV A,#D
АККУМУЛЯТОР
2 1 (А)#D
КОНСТАНТЫ
ПЕРЕСЫЛКА В
MOV A,@RI
АККУМУЛЯТОР БАЙТА ИЗ 1 1 (А)((RI))
РПД (I=1,2)
ПЕРЕСЫЛКА В
MOV A,AD
АККУМУЛЯТОР БАЙТА С
2 1 (А)(AD)
АДРЕСА AD
ПЕРЕСЫЛКА В
АККУМУЛЯТОР БАЙТА ИЗ 1 1 (А)(RN)
MOV A,RN
РЕГИСТРА (N=07)
ПЕРЕСЫЛКА ПО
MOV AD,#D
ПРЯМОМУ АДРЕСУ
3 2 (AD)#D
КОНСТАНТЫ
ПЕРЕСЫЛКА ПО
MOV
ПРЯМОМУ АДРЕСУ
2 2 (AD)((RI))
AD,@RI
БАЙТА ИЗ РПД
ПЕРЕСЫЛКА ПО
MOV AD,A
ПРЯМОМУ АДРЕСУ
2 1 (AD)(А)
АККУМУЛЯТОРА
ПЕРЕСЫЛКА ПО
MOV AD,RN ПРЯМОМУ АДРЕСУ
2 2 (AD)(RN)
РЕГИСТРА (N=07)
ПЕРЕСЫЛКА
MOV
ПРЯМОАДРЕСУЕМОГО
3 2 (ADD)(ADS)
ADD,ADS
БАЙТА ПО ПРЯМОМУ
АДРЕСУ
MOV
ЗАГРУЗКА УКАЗАТЕЛЯ
3 2 (DPTR)#D16
DPTR,#D16
ДАННЫХ
ЗАГРУЗКА В РЕГИСТР
MOV RN,#D
2 1 (RN)#D
(N=07) КОНСТАНТЫ
ПЕРЕСЫЛКА В РЕГИСТР
MOV RN,A
1 1 (RN)(А)
(N=07) БАЙТА ИЗ
АККУМУЛЯТОРА
ПЕРЕСЫЛКА В РЕГИСТР
(N=07)
MOV RN,AD
2 2 (RN)(AD)
ПРЯМОАДРЕСУЕМОГО
БАЙТА
ПЕРЕСЫЛКА В
MOVC
АККУМУЛЯТОР БАЙТА ИЗ 1 2 (А)((А)+(DPTR))
A,@A+DPTR
ПП
МНЕМОКОД
MOVC
A,@A+PC
MOVX
@DPTR,A
MOVX
A,@DPTR
MOVX
@RI,A
MOVX
A,@RI
НАЗВАНИЕ
ПЕРЕСЫЛКА В
АККУМУЛЯТОР БАЙТА ИЗ
ПП
ПЕРЕСЫЛКА В
РАСШИРЕННУЮ ВПД ИЗ
АККУМУЛЯТОРА
ПЕРЕСЫЛКА В
АККУМУЛЯТОР БАЙТА ИЗ
РАСШИРЕННОЙ ВПД
ПЕРЕСЫЛКА В ВПД ИЗ
АККУМУЛЯТОРА
ПЕРЕСЫЛКА В
АККУМУЛЯТОР БАЙТА ИЗ
ВПД
БАЙТЫ
ЦИКЛЫ
21
ОПЕРАЦИЯ
1 2 (А)((А) +(PC))
1 2 ((DPTR))(А)
1 2 (А)((DPTR))
1 2 ((RI))(А)
1 2 (А)((RI))
POP AD
ИЗВЛЕЧЬ ИЗ СТЕКА
2 2
PUSH AD
ЗАГРУЗИТЬ В СТЕК
2 2
(AD)((SP))
(SP)(SP)-1
(SP)(SP)+1
((SP))(AD)
ОБМЕН АККУМУЛЯТОРА
1 1 (А)((RI))
С БАЙТОМ ИЗ РПД
ОБМЕН АККУМУЛЯТОРА
XCH A,AD
С ПРЯМОАДРЕСУЕМЫМ
2 1 (А)(AD)
БАЙТОМ
ОБМЕН АККУМУЛЯТОРА
XCH A,RN
1 1 (А)(RN)
С РЕГИСТРОМ
ОБМЕНЯТЬ МЛ. ТЕТРАДУ
XCHD A,@RI АККУМУЛЯТОРА С МЛ.
1 1 (А0-3)((RI)0-3)
ТЕТРАДОЙ БАЙТА РПД
ОБМЕНЯТЬ ТЕТРАДЫ В
SWAP A
1 1 (А0-3)(А4-7)
АККУМУЛЯТОРЕ
ГРУППА АРИФМЕТИЧЕСКИХ ОПЕРАЦИЙ
СЛОЖИТЬ
ADD A,#D
АККУМУЛЯТОР С
2 1 (А)(А)+#D
КОНСТАНТОЙ
СЛОЖИТЬ
ADD A,@RI
АККУМУЛЯТОР С
1 1 (А)(А)+((RI))
БАЙТОМ ИЗ РПД (I=0,1)
СЛОЖИТЬ
ADD A,AD
АККУМУЛЯТОР С
2 1 (А)(А)+(AD)
БАЙТОМ ПО АДРЕСУ AD
СЛОЖИТЬ
ADD A,RN
АККУМУЛЯТОР С
1 1 (А)(А)+(RN)
РЕГИСТРОМ
СЛОЖИТЬ
АККУМУЛЯТОР С
ADDC A,#D
2 1 (А)(А)+#D+(C)
КОНСТАНТОЙ И
ПЕРЕНОСОМ
СЛОЖИТЬ
АККУМУЛЯТОР С
ADDC A,@RI
1 1 (А)(А)+((RI))+(C)
БАЙТОМ ИЗ РПД (I=0,1) И
ПЕРЕНОСОМ
СЛОЖИТЬ
АККУМУЛЯТОР С
ADDC A,AD
2 1 (А)(А)+(AD)+(C)
БАЙТОМ ПО АДРЕСУ AD И
ПЕРЕНОСОМ
XCH A,@RI
МНЕМОКОД
ADDC A,RN
DA A
SUBB A,#D
SUBB A,@RI
SUBB A,AD
SUBB A,RN
INC @RI
INC A
INC AD
INC DPTR
INC RN
DEC @RI
DEC A
DEC AD
DEC RN
MUL AB
DIV AB
ANL A,#D
ANL A,@RI
ANL A,AD
ANL A,RN
ANL AD,#D
НАЗВАНИЕ
БАЙТЫ
ЦИКЛЫ
22
ОПЕРАЦИЯ
СЛОЖИТЬ
АККУМУЛЯТОР С
1 1 (А)(А)+(RN)+(C)
РЕГИСТРОМ (N=07) И
ПЕРЕНОСОМ
ДЕСЯТИЧНАЯ
КОРРЕКЦИЯ
1 1
АККУМУЛЯТОРА
ВЫЧЕСТЬ ИЗ
АККУМУЛЯТОРА
2 1 (А)(А)-#D-(C)
КОНСТАНТУ И ЗАЕМ
ВЫЧЕСТЬ ИЗ
АККУМУЛЯТОРА БАЙТ ИЗ 1 1 (А)(А)-((RI))-(C)
РПД (I=0,1) И ЗАЕМ
ВЫЧЕСТЬ ИЗ
АККУМУЛЯТОРА БАЙТ
2 1 (А)(А)-(AD)-(C)
ПО АДРЕСУ AD И ЗАЕМ
ВЫЧЕСТЬ ИЗ
АККУМУЛЯТОРА
1 1 (А)(А)-(RN)-(C)
РЕГИСТР (N=07) И ЗАЕМ
ИНКРЕМЕНТ БАЙТА В РПД 1 1 ((RI))((RI))+1
ИНКРЕМЕНТ
1 1 (А)(А)+1
АККУМУЛЯТОРА
ИНКРЕМЕНТ БАЙТА ПО
2 1 (AD)(AD)+1
АДР. AD
ИНКРЕМЕНТ УКАЗАТЕЛЯ
1 2 (DPTR)(DPTR)+1
ДАННЫХ
ИНКРЕМЕНТ РЕГИСТРА
1 1 (RN)(RN)+1
ДЕКРЕМЕНТ БАЙТА В РПД 1 1 ((RI))((RI))-1
ДЕКРЕМЕНТ
1 1 (А)(А)-1
АККУМУЛЯТОРА
ДЕКРЕМЕНТ БАЙТА ПО
2 1 (AD)(AD)-1
АДРЕСУ AD
ДЕКРЕМЕНТ РЕГИСТРА
1 1 (RN)(RN)-1
УМНОЖЕНИЕ
АККУМУЛЯТОРА НА
1 4 (B)(A)(A)·(B)
РЕГИСТР B
ДЕЛЕНИЕ
АККУМУЛЯТОРА НА
1 4 (A).(B)(A)/(B)
РЕГИСТР B
ГРУППА ЛОГИЧЕСКИХ ОПЕРАЦИЙ
ЛОГИЧЕСКОЕ И БАЙТА ИЗ
АККУМУЛЯТОРА С
2 1 (А)(А)#D
КОНСТАНТОЙ
ЛОГИЧЕСКОЕ И
АККУМУЛЯТОРА С
1 1 (А)(А)((RI))
БАЙТОМ ИЗ РПД (I=0,1)
ЛОГИЧЕСКОЕ И
АККУМУЛЯТОРА С
2 1 (А)(А)(AD)
БАЙТОМ ПО АДРЕСУ AD
ЛОГИЧЕСКОЕ И
АККУМУЛЯТОРА С
1 1 (А)(А)(RN)
РЕГИСТРОМ (N=07)
ЛОГИЧЕСКОЕ И БАЙТА
ПО АДРЕСУ AD С
3 2 (AD)(AD)#D
КОНСТАНТОЙ
МНЕМОКОД
ANL AD,A
ORL A,#D
ORL A,@RI
ORL A,AD
ORL A,RN
ORL AD,#D
ORL AD,A
XRL A,#D
XRL A,@RI
XRL A,AD
XRL A,RN
XRL AD,#D
XRL AD,A
CLR A
CPL A
RL A
RR A
RLC A
RRC A
MOV BIT,C
MOV C,BIT
НАЗВАНИЕ
БАЙТЫ
ЦИКЛЫ
23
ЛОГИЧЕСКОЕ И БАЙТА
ПО АДРЕСУ AD С
2 1
АККУМУЛЯТОРОМ
ЛОГИЧЕСКОЕ ИЛИ
АККУМУЛЯТОРА С
2 1
КОНСТАНТОЙ
ЛОГИЧЕСКОЕ ИЛИ
АККУМУЛЯТОРА С
1 1
БАЙТОМ ИЗ РПД (I=0,1)
ЛОГИЧЕСКОЕ ИЛИ
АККУМУЛЯТОРА С
2 1
БАЙТОМ ПО АДРЕСУ AD
ЛОГИЧЕСКОЕ ИЛИ
АККУМУЛЯТОРА С
1 1
РЕГИСТРОМ (N=07)
ЛОГИЧЕСКОЕ ИЛИ БАЙТА
ПО АДРЕСУ AD С
3 2
КОНСТАНТОЙ
ЛОГИЧЕСКОЕ ИЛИ БАЙТА
ПО АДРЕСУ AD С
2 1
АККУМУЛЯТОРОМ
ИСКЛЮЧАЮЩЕЕ ИЛИ
АККУМУЛЯТОРА С
2 1
КОНСТАНТОЙ
ИСКЛЮЧАЮЩЕЕ ИЛИ
АККУМУЛЯТОРА С
1 1
БАЙТОМ ИЗ РПД (I=0,1)
ИСКЛЮЧАЮЩЕЕ ИЛИ
АККУМУЛЯТОРА С
2 1
БАЙТОМ ПО АДРЕСУ AD
ИСКЛЮЧАЮЩЕЕ ИЛИ
АККУМУЛЯТОРА С
1 1
РЕГИСТРОМ (N=07)
ИСКЛЮЧАЮЩЕЕ ИЛИ
БАЙТА ПО АДРЕСУ AD С
3 2
КОНСТАНТОЙ
ИСКЛЮЧАЮЩЕЕ ИЛИ
БАЙТА ПО АДРЕСУ AD С
2 1
АККУМУЛЯТОРОМ
СБРОС АККУМУЛЯТОРА
1 1
ИНВЕРСИЯ
1 1
АККУМУЛЯТОРА
СДВИГ АККУМУЛЯТОРА
1 1
ВЛЕВО ПО ЦИКЛУ
СДВИГ АККУМУЛЯТОРА
1 1
ВПРАВО ПО ЦИКЛУ
СДВИГ АККУМУЛЯТОРА
1 1
ВЛЕВО ЧЕРЕЗ ПЕРЕНОС
СДВИГ АККУМУЛЯТОРА
1 1
ВПРАВО ЧЕРЕЗ ПЕРЕНОС
ГРУППА БИТОВЫХ ОПЕРАЦИЙ
ПЕРЕСЫЛКА РАЗРЯДА
2 2
ПЕРЕНОСА В БИТ
ПЕРЕСЫЛКА БИТА В
2 1
РАЗРЯД ПЕРЕНОСА
ОПЕРАЦИЯ
(AD)(AD)(А)
(А)(А)#D
(А)(А)((RI))
(А)(А)(AD)
(А)(А)(RN)
(AD)(AD)#D
(AD)(AD)(А)
(А)(А)#D
(А)(А)((RI))
(А)(А)(AD)
(А)(А)(RN)
(AD)(AD)#D
(AD)(AD)(А)
(А)0
(А)( A )
(АN+1)(АN), N=06
(А0)(А7)
(АN)(АN+1), N=06
(А7)(А0)
(АN+1)(АN), N=06
(А0)(C) (C)(А7)
(АN)(АN+1), N=06
(А7)(C) (C)(А0)
(B)(C)
(C)(B)
МНЕМОКОД
НАЗВАНИЕ
БАЙТЫ
ЦИКЛЫ
24
ОПЕРАЦИЯ
ЛОГИЧЕСКОЕ И БИТА И
2 2 (C)(C)(B)
ПЕРЕНОСА
ЛОГИЧЕСКОЕ И
ANL C,/BIT
ИНВЕРСИИ БИТА И
2 2 (C)(C)( b )
ПЕРЕНОСА
ЛОГИЧЕСКОЕ ИЛИ БИТА
ORL C,BIT
2 2 (C)(C)(B)
И ПЕРЕНОСА
ЛОГИЧЕСКОЕ ИЛИ
ORL C,/BIT
ИНВЕРСИИ БИТА И
2 2 (C)(C)( b )
ПЕРЕНОСА
CLR BIT
СБРОС БИТА
2 1 (B)0
CLR C
СБРОС ПЕРЕНОСА
1 1 (C)0
SETB BIT
УСТАНОВКА БИТА
2 1 (B)1
SETB C
УСТАНОВКА ПЕРЕНОСА
1 1 (C)1
CPL BIT
ИНВЕРСИЯ БИТА
2 1 (B)( b )
CPL C
ИНВЕРСИЯ ПЕРЕНОСА
1 1 (C)( C )
ГРУППА КОМАНД ПЕРЕДАЧИ УПРАВЛЕНИЯ
ANL C,BIT
LCALL AD16
ДЛИННЫЙ ВЫЗОВ
ПРОГРАММЫ
3 2
ACALL
AD11
АБСОЛЮТНЫЙ ВЫЗОВ
ПОДПРОГРАММЫ В
СТРАНИЦЕ 2 КБАЙТА
2 2
LJMP AD16
AJMP AD11
SJMP REL
CJNE
A,AD,REL
CJNE
@RI,#D,REL
CJNE
A,#D,REL
CJNE
RN,#D,REL
DJNZ
AD,REL
ДЛИННЫЙ ПЕРЕХОД
АБСОЛЮТНЫЙ ПЕРЕХОД
В СТРАНИЦЕ РАЗМЕРОМ 2
КБАЙТ
КОРОТКИЙ
ОТНОСИТЕЛЬНЫЙ
ПЕРЕХОД
СРАВНЕНИЕ
АККУМУЛЯТОРА С
БАЙТОМ ПО АДРЕСУ AD И
ПЕРЕХОД, ЕСЛИ НЕ
РАВНО
СРАВНЕНИЕ БАЙТА ИЗ
РПД С КОНСТАНТОЙ И
ПЕРЕХОД, ЕСЛИ НЕ
РАВНО
СРАВНЕНИЕ
АККУМУЛЯТОРА С
КОНСТАНТОЙ И
ПЕРЕХОД, ЕСЛИ НЕ
РАВНО
СРАВНЕНИЕ РЕГИСТРА С
КОНСТАНТОЙ И
ПЕРЕХОД, ЕСЛИ НЕ
РАВНО
ДЕКРЕМЕНТ БАЙТА ПО
АДРЕСУ AD И ПЕРЕХОД,
ЕСЛИ НЕ НУЛЬ
3 2
(PC)(PC)+3,
(SP)(SP)+2,
(SP-1)(PC0-7),
(SP)(PC8-15),
(PC)AD16
(PC)(PC)+2,
(SP)(SP)+2,
(SP-1)(PC0-7),
(SP)(PC8-15),
(PC0-10)AD11
(PC)AD16
2 2 (PC0-10)AD11
2 2 (PC)(PC)+2+REL
(PC)(PC)+3,
3 2 ЕСЛИ (А)(AD), ТО
(PC)(PC)+REL
(PC)(PC)+3,
3 2 ЕСЛИ ((RI))#D, ТО
(PC)(PC)+REL
(PC)(PC)+3,
3 2 ЕСЛИ (А)#D, ТО
(PC)(PC)+REL
(PC)(PC)+3,
3 2 ЕСЛИ (RN)#D, ТО
(PC)(PC)+REL
3 2
(PC)(PC)+2,
(AD)(AD)-1,
ЕСЛИ (AD)0, ТО
(PC)(PC)+REL
МНЕМОКОД
НАЗВАНИЕ
БАЙТЫ
ЦИКЛЫ
25
ОПЕРАЦИЯ
(PC)(PC)+2,
(RN)(RN)-1,
ЕСЛИ (RN)0, ТО
(PC)(PC)+REL
(PC)(PC)+3,
ЕСЛИ (B)=1, ТО
(PC)(PC)+REL
(PC)(PC)+3,
ЕСЛИ (B)=1, ТО
(B)0,
(PC)(PC)+REL
(PC)(PC)+2,
ЕСЛИ (C)=1, ТО
(PC)(PC)+REL
DJNZ
RN,REL
ДЕКРЕМЕНТ РЕГИСТРА И
ПЕРЕХОД, ЕСЛИ НЕ НУЛЬ
2 2
JB BIT,REL
ПЕРЕХОД, ЕСЛИ БИТ
РАВЕН ЕДИНИЦЕ
3 2
JBC BIT,REL
ПЕРЕХОД, ЕСЛИ БИТ
УСТАНОВЛЕН, С
ПОСЛЕДУЮЩИМ
СБРОСОМ БИТА
3 2
JC REL
ПЕРЕХОД, ЕСЛИ ПЕРЕНОС
РАВЕН ЕДИНИЦЕ
2 2
JMP
@A+DPTR
КОСВЕННЫЙ
ОТНОСИТЕЛЬНЫЙ
ПЕРЕХОД
1 2 (PC)(А)+(DPTR)
JNB BIT,REL
ПЕРЕХОД, ЕСЛИ БИТ
РАВЕН НУЛЮ
3 2 ЕСЛИ (B)=0, ТО
ПЕРЕХОД, ЕСЛИ ПЕРЕНОС
РАВЕН НУЛЮ
2 2
JNC REL
JNZ REL
JZ REL
RET
RETI
NOP
ПЕРЕХОД, ЕСЛИ
АККУМУЛЯТОР НЕ РАВЕН
НУЛЮ
ПЕРЕХОД, ЕСЛИ
АККУМУЛЯТОР РАВЕН
НУЛЮ
ВОЗВРАТ ИЗ
ПОДПРОГРАММЫ
ВОЗВРАТ ИЗ
ПОДПРОГРАММЫ
ОБРАБОТКИ
ПРЕРЫВАНИЯ
НЕТ ОПЕРАЦИИ
(PC)(PC)+3,
2 2
(PC)(PC)+REL
(PC)(PC)+2,
ЕСЛИ (C)=0, ТО
(PC)(PC)+REL
(PC)(PC)+2,
ЕСЛИ (А)0, ТО
(PC)(PC)+REL
(PC)(PC)+2,
2 2 ЕСЛИ (А)=0, ТО
1 2
(PC)(PC)+REL
(PC8-15)((SP))
(PC0-7)((SP)-1)
(SP)(SP)-2.
(PC8-15)((SP))
1 2 (PC0-7)((SP)-1)
(SP)(SP)-2.
1 1 (PC)(PC)+1
Download