- •Практическая работа № 13
- •Оглавление
- •1. Цель и содержание работы
- •2. Архитектура микроконтроллера at90s2313
- •2.1. Регистры общего назначения
- •2.2. Арифметико-логическое устройство
- •2.3. Загружаемая память программ
- •2.4. Eeprom память данных
- •2.5. Статическое озу данных
- •2.6. Время выполнения команд
- •2.7. Пространство ввода/вывода
- •Пространство ввода/вывода at90s2313
- •2.8. Регистр состояния – sreg
- •2.9. Ук а з ат е л ь стека spl
- •2.10. Регистр управления микроконтроллером - mcucr
- •2.11. Режимы пониженного энергопотребления
- •2.12. Таймеры/счетчики
- •2.12.1. Регистр управления t/c 0 - tccr0
- •Выбор коэффициента предварительного деления
- •2.12.2. Таймер/счетчик 0 - tcnt0
- •2.12.3. Регистр a управления т/с 1 – tccr1a
- •Ус т а н о в к а режима совпадения
- •Установка режима работы шим
- •2.12.6. Регистр совпадения a т/с1 – ocr1ah и ocr1al
- •2.12.7. Регистр захвата т/с 1 – icr1h и icr1l
- •2.12.8. Т/с 1 в режиме шим
- •Конечное значение таймера и частота шим
- •Ус т а н о в к а режима совпадения при работе шим
- •2.12.9. Регистр управления сторожевым таймером - wdtcr
- •3. Запуск среды раз ра б о т к и avrstudio
- •4. Компиляция и компоновка
- •5. Тестирование и отладка
- •6. Задание для самостоятельной работы
- •7. Лабораторные задания
- •8. Содержание отчета
- •9. Контрольные вопросы
- •Система команд at90s2313
- •I/o регистры
4. Компиляция и компоновка
Выберите из меню Project пункт Build. В окне под названием Output, которое находится внизу окна среды разработчика нужно открыть закладку Build. В случае успешной компиляции в нем должно быть сообщение: Assembly Complete with no errors.
В окне рабочего пространства Workspace нужно открыть закладку [I/O]. В появившемся окне ввода/вывода можно наблюдать различные ре-гистры микропроцессора и редактировать их содержание. Редактирование доступно только при запущенном режиме отладки.
5. Тестирование и отладка
Запуск отладчика осуществляется выбором Start Debugging из меню Debug. При этом в окне редактируемого кода появляется указатель, в виде желтой стрелки. Этот указатель показывает на ту команду, которая должна будет выполниться в следующем шаге отладки. Выполнение программы можно осуществлять по отдельным командам нажатием клавиши F11, по отдельным функциям и подпрограммам не входя в них, нажатием клавиши F10. Можно запустить автоматическое выполнение программы командой Run из меню Debug, или клавишей F5.
При отладке примеров нужно модифицировать соответствующие ре-гистры, путем двойного клика по пункту V a l u e в окне Workspace, и запол-нению появившегося окна, показанного на рис. 9. Редактирование значения регистров нужно произвести до выполнения первой из команд, в которой эти регистры являются операндами.
Полезно посмотреть и пройти в пошаговом режиме выполнение про-граммы в окне дизассемблера. Для того чтобы его открыть, нужно выбрать пункт Disassembler из меню Vi e w.
Выход из отладчика
Для завершения работы с отладчиком в любой момент времени вы мо-жете выбрать Exit Debugging из меню Debug, или нажать клавиши Ctrl+Alt+F5.
6. Задание для самостоятельной работы
Для углубленного изучения возможностей AVRStudio и ее компонен-тов самостоятельно изучите содержание и смысл всех пунктов меню, кно-пок инструментальной панели, окон и настроек. Для этого воспользуйтесь встроенной справочной системой, которая вызывается через меню Help. Эти знания потребуются при выполнении следующих лабораторных работ.
7. Лабораторные задания
Используя систему команд микроконтроллера, приведенную в прило-жении, составить следующие примеры коротких программ, в пошаговом ре-жиме оттестировать их.
• СЛОЖИТЬ НЕПОСРЕДСТВЕННО ЗНАЧЕНИЕ СО СЛОВОМ
Adiw r24, 1 ; Сложить 1 с r25:r24
Adiw r30, 63 ; Сложить 63 с Z указателем (r31 : r30)
• ВЫЧЕСТЬ КОНСТАНТУ
ldi r17,$10 ; загрузить в r17 константу $10
subi r17,$12 ; вычесть константу $12 из r17 результат в r17
• ВЫПОЛНИТЬ ЛОГИЧЕСКОЕ И
and r2, r3 ; Поразрядное и регистров r2 и r3, результат в r2 ldi r16, 1 ; Установить маску 0000 0001 в r16 and r2, r16 ; Выделить бит 0 в r2
• АРИФМЕТИЧЕСКИ СДВИНУТЬ ВПРАВО
Ldi r16, 16 ; Загрузить десятичное значение 16 в r16
Asr r16 ; r16=r16 / 2
Ldi r17, $FC ; Загрузить -4 в r17
Asr r17 ; r17=r17/2
• ДЕКРЕМЕНТИРОВАТЬ ЗНАЧЕНИЕ РЕГИСТРА
ldi r17, $10 ;Загрузить константу в r17 loop: add r1, r2 ;Сложить r2 с r1
dec r17 ;Уменьшить на 1 r17 brne loop ; перейти если r17 <> 0.
• ИНКРЕМЕНТ
clr r22 ; Очистить r22 loop: inc r22 ; Увеличить на 1 r22
• КОПИРОВАТЬ РЕГИСТР
ldi r17,$10; загрузить константу mov r19,r17; копировать r17 в r19
• ЗАГРУЗИТЬ РЕГИСТР ИЗ СТЕКА
ldi r17,$10 ldi r16,$11
• ПРОВЕРИТЬ НА НОЛЬ ИЛИ ОТРИЦАТЕЛЬНОЕ ЗНАЧЕНИЕ
ldi r17,$10 ; Загрузить r17
mov r0,r17 ; Копировать r17 в r0
ldi r17,$10 ; Загрузить r17
sub r0,r17 ; Вычесть r17 из r0, результат в r0
tst r0 ; Проверить r0
breq zero ; Перейти если r0 = 0 zero: nop ; (пустая операция)
(модифицировать пример для проверки на отрицательное значение, используя систему команд, приведенную в приложении).
