- •Введение
- •1. Омэвм avr семейства Mega
- •1.1. Технические характеристики микроконтроллера avr aTmega8515
- •1.2 Условное графическое обозначение (уго) микроконтроллера avr aTmega8515
- •1.3. Структура микроконтроллера аTmega8515
- •1.4. Организация памяти
- •1.4.1. Карта памяти
- •1.4.2. Память программ (Flash – пзу)
- •1.4.3. Память данных
- •Регистровая память (рон и рвв)
- •Файл регистров общего назначения
- •Регистр X, регистр y и регистр z
- •Регистр статуса – sreg
- •1.4.4. Оперативная память (озу или ram)
- •Регистр управления mcu - mcu Control Register - mcucr
- •1.4.5. Энергонезависимая память данных (eeprom)
- •1.5. Режимы адресации памяти данных
- •1.7. Стек. Указатель стека - Stack Pointer - sp
- •1.8. Тактирование. Режимы пониженного энергопотребления
- •1.8.1. Тактовый генератор
- •Система реального времени (rtc)
- •1.8.2. Сброс. Источники сброса
- •Сброс по включению питания
- •Внешнее управление сбросом
- •Сброс по сторожевому таймеру
- •1.8.3. Режимы энергосбережения (Sleep Modes)
- •1.9. Прерывания (interrupts)
- •Время отклика на прерывание
- •Обработка прерываний и сброса
- •Регистр флагов прерываний – gifr (General Interrupt Flag Register)
- •Регистр управления внешними прерываниями – gicr
- •Регистр масок прерывания по таймерам/счетчикам - timsk (Timer/Counter Interrupt Mask Register)
- •Регистр флагов прерываний по таймерам/счетчикам tifr
- •1.10. Таймеры/счетчики (timer/counters)
- •1.10.1. Таймер/счетчик t/c0
- •Регистр управления т/с0 - tccr0 (The Timer/Counter0 Control Register) Регистр tccr0 предназначен для управления модулем т/c0. Формат регистра tccr0:
- •Регистр сравнения выхода т/с0
- •Режимы работы т/с0
- •Изменение состояния ос0 определяется разрядами сом01:сом00 регистра tccr0 (состояние вывода ос0 изменяется в соответствии с таблицей 11).
- •1.10.2. Таймер/счетчик 1 – t/c1
- •1.11. Сторожевой таймер (Watchdog Timer)
- •Регистр управления сторожевым таймером – wdtcr
- •1.12. Универсальный синхронно-асинхронный приемопередатчик (usart)
- •Регистр данных usart - udr - (usart I/o Data Register)
- •Регистр ucsra
- •Регистр ucsrв
- •Регистр ucsrс
- •Формат кадра
- •Скорость обмена данными
- •Передача данных
- •Прием данных
- •1.13. Последовательный периферийный интерфейс spi
- •1.14. Аналоговый компаратор (Analog Comparator)
- •2. Система команд
- •Команды логических операций
- •Команды арифметических операций и сдвига
- •Команды операций с битами
- •Команды пересылки данных
- •Команды передачи управления
- •Теоретическая часть
- •1.1. Методические указания по выполнению лабораторной работы
- •1.1.1. Создайте новый проект.
- •1.1.2. Напишите и отладьте программу lab1
- •. Содержание отчета
- •3.2. Практическая работа №1 Изучение системы команд мк avr aTmega8515
- •2. Содержание отчета
- •3.3. Лабораторная работа №2 Изучение работы с портами ввода/вывода мк avr
- •Контрольные вопросы
- •Литература
-
. Содержание отчета
-
Наименование лабораторной работы.
-
Цель лабораторной работы.
-
Формулировка задания.
-
Отчет по трассировке.
-
Вычисления и выводы.
-
Электронный вариант выполненной работы.
3.2. Практическая работа №1 Изучение системы команд мк avr aTmega8515
Цель работы: изучение системы команд МК AVR.
Методические рекомендации по выполнению практической работы
Необходимо составить алгоритм, написать программу на ассемблере МК AVR ATmega8515, провести проверку, выставить флаги для реализации следующей задачи:
В режиме реального времени ввести данные с портов x – (PА), y – (PВ), если состояние портов совпало (x=y), то в порт РС вывести удвоенное входное значение z=2x; если (xy), то в порт РС вывести z=xy.
а) Составим алгоритм задачи. Данная задача реализуется циклическим (режим реального времени) разветвляющимся (реализуется условие задачи) алгоритмом (рис. 33):
Рис. 33. Алгоритм рассматриваемой задачи
в) Программа на языке ассемблер:
LDI R20, $00 ; загрузка регистра R20 константой
OUT DDRA, R20 ; инициализация порта РА – ввод данных
OUT DDRB, R20 ; инициализация порта РВ – ввод данных
LDI R21, $FF ; загрузка регистра R21 константой
OUT DDRD, R21 ; инициализация порта РD – вывод данных
M0: IN R10, PINA ; ввод данных х (РА) – в регистр R10
IN R11, PINB ; ввод данных y (PB) – R11
CP R10, R11 ; сравнение x и y
BREQ M1 ; переход на М1, если x=y; иначе выполн. след. ком.
AND R10, R11 ; z=xy
M2: OUT PORTD, R10 ; вывод z в порт PD
JMP M0 ; переход на М0, ввод новых данных с портов
M1: ADD R10, R11 ; z=2x
JMP M2 ; переход на М2, для вывода z в PD
с) Проведем проверку при x=y. Пусть х=35h, тогда z=2x:
, в R10 поместится результат (R10=6Ah).
d) Выставим флаги по результату действия в АЛУ:
H=0, N=0, C=0, Z=0, V=0, S=0.
Задание 1.
Получить у преподавателя задачу для реализации в соответствии с Вашим вариантом. Составить алгоритм, написать программу на ассемблере МК AVR ATmega8515, провести проверку, выставить флаги для реализации задачи в соответствии с рассмотренными выше методическими указаниями.
Таблица 24. Варианты заданий на практическую работу
№ варианта |
Задание на практическую работу |
1 |
В режиме реального времени ввести данные с портов x – (PС), y – (PВ), если x≥y, то в порт РD вывести z=2x+2y; если x<y, то в порт РD вывести z=xy. Провести проверку при x=55h, y=35h. |
2 |
В режиме реального времени ввести данные с портов x – (PВ), y – (PC), если x≥y, то в порт РD вывести z=x+3y; если x<y, то в порт РD вывести z=xy. Провести проверку при x=5Ah, y=25h. |
3 |
В режиме реального времени ввести данные с портов x – (PA), y – (PВ), если y≥x, то в порт РD вывести z=3x+y; если x<y, то в порт РD вывести z=yx . Провести проверку при x=78h, y=35h. |
4 |
В режиме реального времени ввести данные с портов x – (PС), y – (PA), если x≥y, то в порт РB вывести z=2x+2y; если x<y, то в порт РB вывести z=xy. Провести проверку при x=65h, y=48h. |
5 |
В режиме реального времени ввести данные с портов x – (PA), y – (PD), если x=y, то в порт РB вывести z=3x; если xy, то в порт РB вывести z=4xy. Провести проверку при x=55h, y=55h. |
6 |
В режиме реального времени ввести данные с портов x – (PD), y – (PC), если x=y, то в порт РA вывести z=3x; если xy, то в порт РB вывести z=x3y. Провести проверку при x=75h, y=75h. |
7 |
В режиме реального времени ввести данные с портов x – (PA), y – (PC), если x=y, то в порт РD вывести z=4x; если xy, то в порт РB вывести z=2xy. Провести проверку при x=75h, y=75h. |
8 |
В режиме реального времени ввести данные с портов x – (PB), y – (PC), если x=y, то в порт РA вывести z=2x; если xy, то в порт РD вывести z=x4y. Провести проверку при x=65h, y=65h. |
9 |
В режиме реального времени ввести данные с портов x – (PA), y – (PB), если x=y, то в порт РD вывести z=2x; если xy, то в порт РC вывести z=2xy. Провести проверку при x=A5h, y=A5h. |
10 |
В режиме реального времени ввести данные с портов x – (PD), y – (PC), если x=y, то в порт РA вывести z=5x; если xy, то в порт РB вывести z=2xy. Провести проверку при x=95h, y=95h. |
11 |
В режиме реального времени ввести данные с портов x – (PB), y – (PC), если x=y, то в порт РA вывести z=3x; если xy, то в порт РD вывести z=x3y. Провести проверку при x=75h, y=75h. |
12 |
В режиме реального времени ввести данные с портов x – (PС), y – (PВ), если x≥y, то в порт РD вывести z=3x+2y; если x<y, то в порт РA вывести z=2xy. Провести проверку при x=55h, y=35h. |
13 |
В режиме реального времени ввести данные с портов x – (PA), y – (PВ), если x≥y, то в порт РD вывести z=2x+3y; если x<y, то в порт РC вывести z=3xy. Провести проверку при x=75h, y=3Fh. |
14 |
В режиме реального времени ввести данные с портов x – (PС), y – (PA), если x≥y, то в порт РD вывести z=5x+y; если x<y, то в порт РB вывести z=x2y. Провести проверку при x=65h, y=1Ch. |
15 |
В режиме реального времени ввести данные с портов x – (PС), y – (PA), если x≥y, то в порт РD вывести z=2x+4y; если x<y, то в порт РB вывести z=4xy. Провести проверку при x=45h, y=1Dh. |
16 |
В режиме реального времени ввести данные с портов x – (PD), y – (PВ), если x≥y, то в порт РA вывести z=2x+5y; если x<y, то в порт РC вывести z=x2y. Провести проверку при x=35h, y=2Eh. |
17 |
В режиме реального времени ввести данные с портов x – (PD), y – (PВ), если x≥y, то в порт РA вывести z=x+6y; если x<y, то в порт РD вывести z=2xy. Провести проверку при x=75h, y=35h. |
18 |
В режиме реального времени ввести данные с портов x – (PA), y – (PВ), если x≥y, то в порт РC вывести z=5x+2y; если x<y, то в порт РD вывести z=3xy. Провести проверку при x=75h, y=3Ah. |
19 |
В режиме реального времени ввести данные с портов x – (PA), y – (PC), если x≥y, то в порт РD вывести z=2x+2y; если x<y, то в порт РB вывести z=x4y. Провести проверку при x=6Bh, y=3Fh. |
20 |
В режиме реального времени ввести данные с портов x – (PA), y – (PВ), если x≥y, то в порт РD вывести z=3x+2y; если x<y, то в порт РC вывести z=6x3y. Провести проверку при x=25h, y=15h. |