- •Кузнецов в.Н., Лисютченков с.Н. Цифровые и микропроцессорные устройства
- •Часть 3
- •220301– Автоматизация технологических процессов и производств
- •Содержание
- •Предисловие
- •Лабораторная работа №1 «Освоение среды разработки vmlab 3.12»
- •1.2 Теоретическое введение
- •1.2.1 Общие сведения
- •1.2.2 Среда разработки vmlab
- •1.2.3 Описание пользовательского интерфейса
- •1.2.4 Команды меню
- •Save All − сохранить все файлы Save As − сохранить файл текущего окна под новым именем
- •1.2.5 Доступные окна
- •1.2.6 Аппаратные компоненты
- •1.2.7 Формат программы на ассемблере
- •1.3 Порядок выполнения лабораторной работы
- •1.3.1 Создание нового проекта
- •1.3.2 Редактирование файла ассемблера
- •1.3.3 Ассемблирование и выполнение программы
- •1.4 Задание на лабораторную работу
- •1.5 Контрольные вопросы
- •1.6 Содержание отчета по лабораторной работе
- •Лабораторная работа №2 «Изучение микроконтроллера aTmega128 и основы программирования»
- •2.2.1 Общие сведения о микроконтроллере aTmega128
- •Регистры ввода/вывода (рвв)
- •Организация памяти
- •Внешние прерывания
- •2.2.9 Директивы транслятора ассемблера
- •2.2.10 Выражения
- •2.2.11 Операнды
- •2.2.12 Функции
- •2.2.13 Операции
- •2.3 Порядок выполнения лабораторной работы
- •2.4 Задание на лабораторную работу
- •Задание для индивидуальной работы
- •2.5 Контрольные вопросы
- •2.6 Содержание отчета по лабораторной работе
- •3.2.2 Адресация в микроконтроллере
- •3.2.3 Команды пересылки данных
- •Mov Rd,Rr(пересылка между рон) – копирует содержимое регистра Rrв регистр Rd. Регистр-источник Rrне изменяется.
- •3.2.4 Команды передачи управления
- •3.3 Порядок выполнения лабораторной работы
- •3.4 Задание на лабораторную работу
- •3.5 Контрольные вопросы
- •3.6 Содержание отчета по лабораторной работе
- •Лабораторная работа №4 «Выполнение арифметических операций»
- •4.2 Теоретическое введение
- •4.3 Порядок выполнения лабораторной работы
- •4.4 Задание на лабораторную работу
- •4.5 Контрольные вопросы
- •4.6 Содержание отчета по лабораторной работе
- •Лабораторная работа №5 «Изучение логических операций»
- •5.2 Теоретическое введение
- •Управление энергопотреблением и режимы сна.
- •5.3 Порядок выполнения лабораторной работы
- •5.4 Задания на лабораторную работу
- •5.5 Контрольные вопросы
- •5.6 Содержание отчета по лабораторной работе
- •Лабораторная работа №6 «Изучение портов ввода/вывода и их программирование»
- •6.2 Теоретическое введение
- •6.2.1 Общие сведения
- •6.2.2 Порты в качестве универсального цифрового ввода-вывода
- •6.2.3 Настройка выводов
- •6.2.4 Неподключенные выводы
- •6.2.5 Альтернативные функции порта
- •6.2.5.1 Альтернативные функции порта a
- •6.2.5.2 Альтернативные функции порта в
- •6.2.5.3 Альтернативные функции порта c
- •6.2.5.4 Альтернативные функции порта d.
- •6.2.5.5 Альтернативные функции порта e
- •6.2.5.6 Альтернативные функции порта f
- •6.2.5.1 Альтернативные функции порта g
- •6.2.6 Описание регистров портов ввода-вывода
- •6.2.7 Обращение к портам ввода/вывода
- •6.3 Порядок выполнения лабораторной работы на симуляторе
- •6.4 Задание на лабораторную работу
- •Задания для индивидуальной работы
- •Контрольные вопросы
- •6.6 Содержание отчета по лабораторной работе
- •Лабораторная работа №7.
- •7.2.1 Общие сведения о Память
- •7.2.2 Статическое озу памяти данных
- •7.2.3 Организация памяти
- •7.2.4 Запоминающее устройство sram
- •7.2.5 Временная диаграмма доступа к памяти
- •7.3 Память данных на эсппзу
- •7.3.1 Чтение и запись эсппзу
- •7.3.2 Адресные регистры эсппзу
- •Порядок выполнения
- •7.4 Память ввода-вывода
- •Порядок выполнения
- •Порядок выполнения
- •7.5 Задание на лабораторную работу
- •Задание для индивидуальной работы
- •7.6 Контрольные вопросы
- •7.7 Содержание отчета по лабораторной работе
- •Генерация тактовых импульсов
- •Инициализация усапп
- •8.2.2 Передача данных - Передатчик усапп
- •8.2.3 Прием данных - Приемник усапп
- •Асинхронный прием данных
- •8.2.4 Многопроцессорный режим связи
- •8.2.5 Описание регистров усапп
- •8.2.6 Последовательный периферийный интерфейс - spi
- •8.2.7 Функционирование вывода ss
- •8.2.8 Связь двух мк
- •8.3 Задание на лабораторную работу
- •Задание для индивидуальной работы
- •8.6 Контрольные вопросы
- •Лабораторная работа №9 «Изучение принципа работы таймеров/счетчиков микроконтроллера»
- •9.2 Теоретическое введение
- •9.2.1 Общие сведения о таймерах/счетчиках
- •9.2.2 Назначение выводов таймеров/счетчиков
- •9.2.5 Выбор источника тактового сигнала
- •9.2.6 Режим таймера
- •9.2.7 Функция захвата (Capture)
- •9.2.8 Функция сравнения (Compare)
- •9.2.9 Режим шим
- •9.2.10 Сторожевой таймер
- •9.2.11 Общие сведения о работе клавиатуры
- •9.2.12 Ввод кода нажатой клавиши
- •9.2.13 Сканирование и идентификация
- •Листинг проектного файла №9
- •На эмуляторе
- •9.4 Задание на лабораторную работу
- •Задания для индивидуальной работы
- •9.5 Контрольные вопросы
- •10.2.2 Функционирование модуля ацп
- •10.2.3 Принцип действия
- •10.2.4 Каналы дифференциального усиления
- •10.2.5 Изменение канала или выбор опорного источника
- •10.2.6 Входные каналы ацп
- •10.2.7 Источник опорного напряжения ацп
- •10.2.8 Повышение точности преобразования
- •10.2.9 Методы компенсации смещения
- •10.2.10 Описание получения результата преобразования
- •10.2.5 Параметры ацп
- •10.2 Порядок выполнения работы на симуляторе
- •На эмуляторе
- •10.3 Задание на лабораторную работу
- •Задания для индивидуальной работы
- •10.4 Контрольные вопросы
- •Приложение
- •Список литературы
1.3.2 Редактирование файла ассемблера
На этом этапе в окно кодов нужно ввести программу. В качестве примера студентам предложена программа умножения двух чисел. Рассмотрим простейший способ умножения восьмиразрядных целых двоичных чисел без знака суммированием с накоплением. Множитель А находится в регистре R16, множимое В – в регистре R17. Для формирования результата воспользуемся однобайтной командой сложения двух регистров ADD. Результат будет находиться в регистре R18. Множитель А и множимое В нужно задать любыми числовыми значениями.
Листинг программы №1
.include "C:\VMLAB\include\m128def.inc"; определение библиотеки МК ;ATmega128, при условии расположения программы VMLAB на ;локальном диске С
reset: ; начальная метка
rjmp start ; Переход на начало основной программы
reti ; Addr $01
reti ; Addr $02
reti ; Addr $03 Вектора прерываний МК ATmega128.
reti ; Addr $04 Приведены вектора с адреса $01 по адрес $10.
reti ; Addr $05 Полностью вектора прерываний представлены
reti ; Addr $06 в приложении с назначением прерываний
reti ; Addr $07 (внешних и внутренних).
reti ; Addr $08
reti ; Addr $09
reti ; Addr $0A
reti ; Addr $0B
reti ; Addr $0C
reti ; Addr $0D
reti ; Addr $0E
reti ; Addr $0F
reti ; Addr $10
start: clr r18 ; очистка регистра
ldi r16,А ; загрузка множителя
ldi r17,В ; загрузка множимого
clz ; сброс флага Z
m1: breq done ; проверка завершения умножения
add r18,r17 ; суммирование множимого
dec r16 ; декремент множителя
rjmp m1 ; переход на следующий цикл
done: rjmp done ; пустой цикл (конец программы)
Блок схема к данной программе:
нет
1.3.3 Ассемблирование и выполнение программы
Подготовленный текст программы на языке ассемблера должен быть преобразован в форму двоичных команд, которые могут быть выполнены микроконтроллером. Ассемблирование можно выполнить командой Project/Build (F9). При отсутствии ошибок отладчик в рабочей папке создаст файлы с именем Project и расширениями .asm, .hex, .prj, .lis, .ly1, .map, .obj. Если же ошибка возникла, то она будет обозначена восклицательным знаком. После устранения ошибки нужно будет снова выполнить команду Project/Build (F9).
Выполнение программы можно производить в автоматическом или же пошаговом режиме при помощи соответствующих команд. Для выполнения программы можно использовать следующие режимы:
Автоматический. Этот режим можно задать, вызвав команду Go/Continue (F5) из падающего меню Run;
Пошаговый без входа в подпрограммы. Режим задается командой Step over (F6) из падающего меню Run;
Пошаговый с входом в подпрограммы. Режим задается командой Step into (F7) из падающего меню Run;
Пошаговый с входом в подпрограммы и с автоматическим выполнением команд. Режим задается командой Step out (Shift+F7) из падающего меню Run;
Автоматический пошаговый режим. Для входа в этот режим нужно сначала установить команду Animate code из падающего меню Run, а после этого вызвать команду Go/Continue (F5) из того же падающего меню. Для отключения автоматического пошагового режима необходимо снова выполнить команду Animate code.
C этого шага можно наблюдать за изменениями переменных, аппаратных сигналов, регистров, памяти и состояний периферийных устройств.
В выполняемой программе нужно в окне регистров проследить за изменением значений регистров общего назначения (РОН) r16, r17 и r18. Окно регистров вызывается через меню View/Register/flags (Alt+Shift+R). Там же можно посмотреть за изменением флагов регистра SREG (флаг Z).
Остановить выполнение программы можно через меню Run/Pause program (Shift+F5). Если необходимо сделать рестарт с сохранением текущих значений регистров, флагов и т.д., можно вызвать из меню Run команду Restart light (F8). Для полного рестарта МК в первоначальное состояние нужно воспользоваться командой Run/ Restart deep (Shift+F8).
Часто возникает необходимость прервать выполнение программы в каком-то определенном месте. Это можно сделать при помощи точек останова. Команды работы с точками останова находятся в падающем меню Debug. Для установки точки останова нужно поставить курсор в той строке, где будет останов, и вызвать команду Toggle breakpoint (Ctrl+P). Есть более простой способ установки точки: в левой части окна кодов можно видеть напротив команд квадраты зеленым цветом − это и есть точки останова. Остается только нажать курсором на него и точка будет установлена. Для снятия точки нужно снова нажать зеленый квадрат.