
- •1. Теоретическая часть
- •1.1. Методические указания по выполнению лабораторной работы
- •1.1.1. Создайте новый проект.
- •1.1.2. Напишите и отладьте программу lab1
- •Контрольные вопросы.
- •Практическая часть
- •2.1. Задание:
- •Программа lab1:
- •. Содержание отчета
- •Практическая работа №1,2 Изучение методики «сквозного проектирования» мпс на мк
- •Контрольные вопросы
- •Практическая работа №3,4 Изучение команд пересылки данных в мк Организация параллельного обмена данными в мк
- •Контрольные вопросы
- •Лабораторная работа № 2 Изучение команд пересылки данных мк в avr Studio 4
- •Практическая работа №5 Изучение команд арифметики мк
- •Лабораторная работа № 4 Изучение команд битовой обработки данных мк
- •Контрольные вопросы
- •Практическая работа №8 Организация вывода данных в последовательном коде в мк
- •Подпрограмма прерываний
- •Лабораторная работа №5 Организация вывода данных в мк в последовательном коде в режиме реального времени
- •Практическая работа №9 Организация ввода данных в последовательном коде в мк
- •Лабораторная работа №6 Организация ввода данных в мк в последовательном коде в режиме реального времени
- •Практическая работа №10 Организация процесса обмена данными в мк через spi - интерфейс
- •Лабораторная работа №7 Организация обмена данными в мпс через spi – интерфейс
- •Практическая работа №11 Программирование сторожевого таймера (Watch Dog Timer) мк aTmega8515
- •Сброс wdt
- •Инициализация wdt
- •Инициализация портов
- •Лабораторная работа № 8,9 Организация простейших мпс на базе мк
Лабораторная работа № 2 Изучение команд пересылки данных мк в avr Studio 4
Цель работы: знакомство с командами пересылки данных МК, структурой и принципами функционирования портов ввода/вывода МК AVR.
Задание 1.
Создать проект в AVR Studio 4, написать и отладить программу для реализации задачи из практической работы №3.
Пример выполнения задания из практической работы №3 на рис. 10.
Рис. 10. Рабочее окно AVR Studio 4 с результатами проверки задачи
Проверим правильность выставления флагов по выполнению команды сложения (результат на рис. 11) – все арифметические флаги =0, что подтверждает правильность теоретических расчетов в задании 1.
Рис. 11. Рабочее окно AVR Studio 4 с результатами проверки арифметических флагов
Задание 2.
Продемонстрировать преподавателю функционирование МК при отладке программы в AVR Studio 4.
Оформить отчет по лабораторной работе. Требования к содержанию отчета приведены в лаб. раб. №1.
Практическая работа №5 Изучение команд арифметики мк
Цель работы: изучение команд арифметики, формирование массивов данных в МК AVR.
Задание1.
1) Подробно изучить структуру и функции МК AVR ATmega8515.[1]
2) Составить алгоритм, написать программу на ассемблере МК AVR ATmega8515, провести проверку, выставить флаги для выполнения следующей задачи:
Методические рекомендации по выполнению примера.
Реализовать функцию z=3x+2Ah, если x меняется с шагом 1 от 1 до 10h. Запись массива производить в памяти данных, начиная с адреса 0х100h по возрастанию адресов в соседних ячейках памяти. Провести проверку результата и выставить флаги при х=02h.
а) Составим алгоритм задачи.
Рис. 12. Алгоритм рассматриваемой задачи
в) Программа на языке ассемблер:
.include "8515def.inc" ; подключение файла описания МК
М0: LDI R28, $00 ; загрузка младшего байта регистра Y
LDI R29, $01 ; загрузка старшего байта регистра Y
LDI R20, $10 ; загрузка регистра R20 константой $10
LDI R30, $01 ; счетчик (x=1)
М1: MOV R10, R30 ; пересылаем содержимое регистра R30 в регистр R10
;(x => R10)
ADD R10, R10 ; z=2x
ADD R10, R30 ; z=3x
LDI R16, $2A ; загрузка регистра R16 константой $2A
ADD R10, R16 ; z=3x+2Ah
ST Y+, R10 ; z => mem. [Y], y=y+1
CP R20, R30 ;сравниваем регистры R20 и R30 (R20-R30=const.) и ;выставляем флаги
BREQ M0 ; если х=10h, то переход на метку М0 (ZF=1)
INC R30 ; увеличиваем x на единицу (x=x+1) и помещаем в R30
JMP M1 ; переход на метку М1
с) Проведем проверку при x=02h и выставим флаги.
1) ADD R10, R10
В R10 поместим результат (R10=04h).
Выставим флаги по результату действия:
H=0, N=0, C=0, Z=0, V=0, S=0.
2) ADD R10, R30
Результат снова помещаем в R10 (R10=06h)
Выставим флаги по результату действия:
H=0, N=0, C=0, Z=0, V=0, S=0.
3) ADD R10, R16
В R10 поместим окончательный результат (R10=30h).
Выставим флаги по результату действия:
H=1, N=0, C=0, Z=0, V=0, S=0.
Задание 2.
Получить у преподавателя задачу для реализации в соответствии с Вашим вариантом. Составить алгоритм, написать программу на ассемблере МК AVR ATmega8515, провести проверку, выставить флаги для реализации задачи в соответствии с рассмотренными выше методическими указаниями.
Таблица 3. Варианты заданий на практическую работу № 4
№ Вари анта |
Задание на практическую работу |
1 |
Разработать алгоритм, программу на языке ассемблер МК AVR ATmega8515, выполнить проверку и расставить флаги для реализации следующей задачи: Реализовать
функцию
|
2 |
Разработать алгоритм, программу на языке ассемблер МК AVR ATmega8515, выполнить проверку и расставить флаги для реализации следующей задачи: Реализовать функцию z=2x3x, если x меняется с шагом 1 от 1 до 10h. Запись массива производить в памяти данных, начиная с адреса 0х120h по возрастанию адресов в соседних ячейках памяти. Провести проверку результата и выставить флаги при х=04h. |
3 |
Разработать алгоритм, программу на языке ассемблер МК AVR ATmega8515, выполнить проверку и расставить флаги для реализации следующей задачи: Реализовать
функцию
|
4 |
Разработать алгоритм, программу на языке ассемблер МК AVR ATmega8515, выполнить проверку и расставить флаги для реализации следующей задачи: Реализовать функцию z=4x2Ah, если x меняется с шагом 1 от 1 до 1010. Запись массива производить в памяти данных, начиная с адреса 0х150h по убыванию адресов в соседних ячейках памяти. Провести проверку результата и выставить флаги при х=06h. |
5 |
Разработать алгоритм, программу на языке ассемблер МК AVR ATmega8515, выполнить проверку и расставить флаги для реализации следующей задачи: Реализовать
функцию
|
6 |
Разработать алгоритм, программу на языке ассемблер МК AVR ATmega8515, выполнить проверку и расставить флаги для реализации следующей задачи: Реализовать
функцию
|
7 |
Разработать алгоритм, программу на языке ассемблер МК AVR ATmega8515, выполнить проверку и расставить флаги для реализации следующей задачи: Реализовать функцию z=5x-2Bh, если x меняется с шагом 1 от 1 до 1410. Запись массива производить в памяти данных, начиная с адреса 0х170h по возрастанию адресов в соседних ячейках памяти. Провести проверку результата и выставить флаги при х=07h. |
8 |
Разработать алгоритм, программу на языке ассемблер МК AVR ATmega8515, выполнить проверку и расставить флаги для реализации следующей задачи: Реализовать
функцию
|
9 |
Разработать алгоритм, программу на языке ассемблер МК AVR ATmega8515, выполнить проверку и расставить флаги для реализации следующей задачи: Реализовать функцию z=5x2x, если x меняется с шагом 1 от 1 до1710. Запись массива производить в памяти данных, начиная с адреса 0х190h по убыванию адресов в соседних ячейках памяти. Провести проверку результата и выставить флаги при х=1110. |
10 |
Разработать алгоритм, программу на языке ассемблер МК AVR ATmega8515, выполнить проверку и расставить флаги для реализации следующей задачи: Реализовать
функцию
|
11 |
Разработать алгоритм, программу на языке ассемблер МК AVR ATmega8515, выполнить проверку и расставить флаги для реализации следующей задачи: Реализовать функцию z=6x30h, если x меняется с шагом 1 от 1 до 1Ah. Запись массива производить в памяти данных, начиная с адреса 0х190h по убыванию адресов в соседних ячейках памяти. Провести проверку результата и выставить флаги при х=08h. |
12 |
Разработать алгоритм, программу на языке ассемблер МК AVR ATmega8515, выполнить проверку и расставить флаги для реализации следующей задачи: Реализовать
функцию
|
13 |
Разработать алгоритм, программу на языке ассемблер МК AVR ATmega8515, выполнить проверку и расставить флаги для реализации следующей задачи: Реализовать
функцию
|
14 |
Разработать алгоритм, программу на языке ассемблер МК AVR ATmega8515, выполнить проверку и расставить флаги для реализации следующей задачи: Реализовать
функцию
|
15 |
Разработать алгоритм, программу на языке ассемблер МК AVR ATmega8515, выполнить проверку и расставить флаги для реализации следующей задачи: Реализовать функцию z=4Ah-2x, если x меняется с шагом 1 от 1 до 12h. Запись массива производить в памяти данных, начиная с адреса 0х260h по убыванию адресов в соседних ячейках памяти. Провести проверку результата и выставить флаги при х=1010. |
16 |
Разработать алгоритм, программу на языке ассемблер МК AVR ATmega8515, выполнить проверку и расставить флаги для реализации следующей задачи: Реализовать функцию z=11h3x, если x меняется с шагом 1 от 1 до1910. Запись массива производить в памяти данных, начиная с адреса 0х260h по убыванию адресов в соседних ячейках памяти. Провести проверку результата и выставить флаги при х=08h. |
17 |
Разработать алгоритм, программу на языке ассемблер МК AVR ATmega8515, выполнить проверку и расставить флаги для реализации следующей задачи: Реализовать
функцию
|
18 |
Разработать алгоритм, программу на языке ассемблер МК AVR ATmega8515, выполнить проверку и расставить флаги для реализации следующей задачи: Реализовать
функцию
|
19 |
Разработать алгоритм, программу на языке ассемблер МК AVR ATmega8515, выполнить проверку и расставить флаги для реализации следующей задачи: Реализовать
функцию
|
20 |
Разработать алгоритм, программу на языке ассемблер МК AVR ATmega8515, выполнить проверку и расставить флаги для реализации следующей задачи: Реализовать
функцию
|
Задание 3. Оформить отчет по работе. Продемонстрировать отчет преподавателю.
Лабораторная работа № 3
Изучение арифметических команд МК в AVR Studio 4
Цель работы: изучение арифметических команд МК AVR ATmega8515.
Задание 1.
Провести отладку программы и детальную трассировку задания из практической работы №4 в AVR Studio 4, в соответствии с рекомендациями из лаб. раб. №1, описать каждый шаг выполняемой программы. Проверить все возможные условия задачи. Составить отчёт по трассировке. Ответить на контрольные вопросы.
Контрольные вопросы
Команды арифметики и косвенной адресации МК ATmega8515.
Методика работы в AVR Studio 4.
Практическая работа №6,7
Изучение структуры, функционирования и программирования
таймеров/счетчиков МК
Цель работы: изучение функционирования и программирования таймеров-счетчиков. Обслуживание прерываний от таймеров-счетчиков в МК ATmega8515.
Методические рекомендации по выполнению практической работы
Задание 1.
1)Подробно изучить систему прерываний и функционирование таймера-счётчика T/C0 МК AVR ATmega8515.[1]
2)Необходимо составить алгоритм, написать программу на ассемблере МК AVR ATmega8515, провести проверку, выставить флаги для выполнения следующей задачи:
Пример выполнения задачи:
Организовать вывод функции z=2x в порт РВ с минимальной задержкой 8 тактов:
1)Задержку организовать с помощью таймера-счётчика T/C0 (реализовать скорость подачи тактовых сигналов CLKI/O/8 в режиме Normal).
2)Вывод функции z в порт РВ при событии совпадения T/C0 через подпрограмму прерываний.
а) Составим алгоритм задачи
Рис. 13. Алгоритм рассматриваемой задачи
в) Программа на языке ассемблер:
.include"8515def.inc"; подключение файла описания МК
.def temp = R16; задание переменной temp в R16
.org 0x000; обращение к вектору сброса
Rjmp M0; безусловный переход на М0
.org 0x00E; обращение к вектору прер. от Т/С0 по Rg счета=Rg сравнения
Rjmp M1; безусловный переход на М1 (п/прогр. обработки прерывания)
M0:
SEI; разрешение глобальных прерываний (I=1 в Rg Sreg)
Ldi temp,$5f; загрузка const 5f в temp
Out SPL,temp; организация стека в верхних ячейках пам. данных ОЗУ
Ldi temp,$02; загрузка const 02 в temp
Out SPH,temp; организация стека в верхних ячейках пам. данных ОЗУ
Ldi temp,$ff; загрузка const ff в temp
Out DDRB, temp; порт В настроен на вывод данных
M3: Ldi temp,$02; загрузка const 02 в temp
Out 0x33,temp; в Rg TCCR0 выбор реж нормал и упр такт сигналом clk/8
Ldi temp,$05; загрузка const 05 в temp
Out 0x31,temp; загрузка const=5 в регистр сравнения (Rg OCR0)
Ldi temp,$01; загрузка const 01 в temp
Out 0x39,temp; в RgTIMSK разреш. прер. от Т/С0 по Rg счета=Rg сравнения
Ldi temp,$00; загрузка const 00 в temp
Out PORTB,temp; обнуление выводов порта В
Rjmp M3; безусловный переход на М3
; подпрограмма обработки прерывания
M1: Ldi temp,$00; загрузка const 00 в temp
Out 0x33,temp; останов T/C0
Out 0x32,temp; обнуление Rg счета (TCNT0)
Ldi R20,$06; вычисление заданной функции z (х для примера взят 06h)
Add R20,R20; вычисление заданной функции z
Out PORTB,R20; вывод заданной функции z в порт В
Reti; возвращение в основную программу
с) Проведем проверку при x=06h и выставим флаги.
1) ADD R20, R20
В порт PB поместим результат z=0Ch
Выставим флаги по результату действия:
H=0, N=0, C=0, Z=0, V=0, S=0.
Задание 2.
Получить у преподавателя задачу для реализации в соответствии с Вашим вариантом. Составить алгоритм, написать программу на ассемблере МК AVR ATmega8515, провести проверку, выставить флаги для решения задачи в соответствии с рассмотренными выше методическими указаниями.
Таблица 4. Варианты заданий на практическую работу № 6,7
№ варианта |
Задание на практическую работу. |
1 |
Разработать алгоритм, программу на языке ассемблер МК AVR ATmega8515, выполнить проверку и расставить флаги для реализации следующей задачи: Организовать вывод функции z=2x+y в порт РA с минимальной задержкой 4 тактa: 1)Задержку организовать с помощью таймера-счётчика T/C0; x – ввести с порта PD; y – порта PC. 2)Вывод функции z в порт РA при событии совпадения T/C0 через подпрограмму прерываний. 3) Сделать проверку при х=02, y=03. |
2 |
Разработать алгоритм, программу на языке ассемблер МК AVR ATmega8515, выполнить проверку и расставить флаги для реализации следующей задачи: Организовать вывод функции z=3x+2y в порт РD с минимальной задержкой 8 тактов: 1)Задержку организовать с помощью таймера-счётчика T/C0; x – ввести с порта PВ; y – порта PC. 2)Вывод функции z в порт РD при событии совпадения T/C0 через подпрограмму прерываний. 3) Сделать проверку при х=03, y=03. |
3 |
Разработать алгоритм, программу на языке ассемблер МК AVR ATmega8515, выполнить проверку и расставить флаги для реализации следующей задачи: Организовать вывод функции z=x+3y в порт РA с минимальной задержкой 9 тактов: 1)Задержку организовать с помощью таймера-счётчика T/C0; x – ввести с порта PC; y – порта PB. 2)Вывод функции z в порт РA при событии совпадения T/C0 через подпрограмму прерываний. 3) Сделать проверку при х=04, y=02. |
4 |
Разработать алгоритм, программу на языке ассемблер МК AVR ATmega8515, выполнить проверку и расставить флаги для реализации следующей задачи: Организовать вывод функции z=2x^2y в порт РC с минимальной задержкой 3 тактa: 1)Задержку организовать с помощью таймера-счётчика T/C0; x – ввести с порта PA; y – порта PB. 2)Вывод функции z в порт РC при событии совпадения T/C0 через подпрограмму прерываний. 3) Сделать проверку при х=01, y=06. |
5 |
Разработать алгоритм, программу на языке ассемблер МК AVR ATmega8515, выполнить проверку и расставить флаги для реализации следующей задачи: Организовать вывод функции z=3xV2y в порт РD с минимальной задержкой 5 тактов: 1)Задержку организовать с помощью таймера-счётчика T/C0; x – ввести с порта PB; y – порта PC. 2)Вывод функции z в порт РD при событии совпадения T/C0 через подпрограмму прерываний. 3) Сделать проверку при х=01, y=05. |
6 |
Разработать алгоритм, программу на языке ассемблер МК AVR ATmega8515, выполнить проверку и расставить флаги для реализации следующей задачи: Организовать вывод функции z=x+5y в порт РA с минимальной задержкой 6 тактов: 1)Задержку организовать с помощью таймера-счётчика T/C0; x – ввести с порта PD; y – порта PВ. 2)Вывод функции z в порт РA при событии совпадения T/C0 через подпрограмму прерываний. 3) Сделать проверку при х=04, y=02. |
7 |
Разработать алгоритм, программу на языке ассемблер МК AVR ATmega8515, выполнить проверку и расставить флаги для реализации следующей задачи: Организовать вывод функции z=2x-y в порт РВ с минимальной задержкой 9 тактов: 1)Задержку организовать с помощью таймера-счётчика T/C0; x – ввести с порта PD; y – порта PА. 2)Вывод функции z в порт РВ при событии совпадения T/C0 через подпрограмму прерываний. 3) Сделать проверку при х=04, y=02. |
8 |
Разработать алгоритм, программу на языке ассемблер МК AVR ATmega8515, выполнить проверку и расставить флаги для реализации следующей задачи: Организовать вывод функции z=3x-2y в порт РВ с минимальной задержкой 10 тактов: 1)Задержку организовать с помощью таймера-счётчика T/C0; x – ввести с порта PD; y – порта PC. 2)Вывод функции z в порт РВ при событии совпадения T/C0 через подпрограмму прерываний. 3) Сделать проверку при х=05, y=02. |
9 |
Разработать алгоритм, программу на языке ассемблер МК AVR ATmega8515, выполнить проверку и расставить флаги для реализации следующей задачи: Организовать вывод функции z=4x+3y в порт РА с минимальной задержкой 11 тактов: 1)Задержку организовать с помощью таймера-счётчика T/C0; x – ввести с порта PD; y – порта PC. 2)Вывод функции z в порт РА при событии совпадения T/C0 через подпрограмму прерываний. 3) Сделать проверку при х=02, y=03. |
10 |
Разработать алгоритм, программу на языке ассемблер МК AVR ATmega8515, выполнить проверку и расставить флаги для реализации следующей задачи: Организовать вывод функции z=4x^2y в порт РВ с минимальной задержкой 12 тактов: 1)Задержку организовать с помощью таймера-счётчика T/C0; x – ввести с порта PА; y – порта PD. 2)Вывод функции z в порт РВ при событии совпадения T/C0 через подпрограмму прерываний. 3) Сделать проверку при х=02, y=07. |
11 |
Разработать алгоритм, программу на языке ассемблер МК AVR ATmega8515, выполнить проверку и расставить флаги для реализации следующей задачи: Организовать вывод функции z=3x-2y в порт РD с минимальной задержкой 13 тактов: 1)Задержку организовать с помощью таймера-счётчика T/C0; x – ввести с порта PА; y – порта PВ. 2)Вывод функции z в порт РD при событии совпадения T/C0 через подпрограмму прерываний. 3) Сделать проверку при х=04, y=02. |
12 |
Разработать алгоритм, программу на языке ассемблер МК AVR ATmega8515, выполнить проверку и расставить флаги для реализации следующей задачи: Организовать вывод функции z=xV5y в порт РА с минимальной задержкой 8 тактов: 1)Задержку организовать с помощью таймера-счётчика T/C0; x – ввести с порта PD; y – порта PВ. 2)Вывод функции z в порт РА при событии совпадения T/C0 через подпрограмму прерываний. 3) Сделать проверку при х=03, y=04. |
13 |
Разработать алгоритм, программу на языке ассемблер МК AVR ATmega8515, выполнить проверку и расставить флаги для реализации следующей задачи: Организовать вывод функции z=x+3y в порт РС с минимальной задержкой 8 тактов: 1)Задержку организовать с помощью таймера-счётчика T/C0; x – ввести с порта PD; y – порта PА. 2)Вывод функции z в порт РС при событии совпадения T/C0 через подпрограмму прерываний. 3) Сделать проверку при х=05, y=04. |
14 |
Разработать алгоритм, программу на языке ассемблер МК AVR ATmega8515, выполнить проверку и расставить флаги для реализации следующей задачи: Организовать вывод функции z=4x-3y в порт РВ с минимальной задержкой 14 тактов: 1)Задержку организовать с помощью таймера-счётчика T/C0; x – ввести с порта PА; y – порта PD. 2)Вывод функции z в порт РВ при событии совпадения T/C0 через подпрограмму прерываний. 3) Сделать проверку при х=06, y=04. |
15 |
Разработать алгоритм, программу на языке ассемблер МК AVR ATmega8515, выполнить проверку и расставить флаги для реализации следующей задачи: Организовать вывод функции z=4x-y в порт РА с минимальной задержкой 15 тактов: 1)Задержку организовать с помощью таймера-счётчика T/C0; x – ввести с порта PВ; y – порта PC. 2)Вывод функции z в порт РА при событии совпадения T/C0 через подпрограмму прерываний. 3) Сделать проверку при х=01, y=03. |
16 |
Разработать алгоритм, программу на языке ассемблер МК AVR ATmega8515, выполнить проверку и расставить флаги для реализации следующей задачи: Организовать вывод функции z=3x+3y в порт РD с минимальной задержкой 16 тактов: 1)Задержку организовать с помощью таймера-счётчика T/C0; x – ввести с порта PC; y – порта PA. 2)Вывод функции z в порт РD при событии совпадения T/C0 через подпрограмму прерываний. 3) Сделать проверку при х=02, y=03. |
17 |
Разработать алгоритм, программу на языке ассемблер МК AVR ATmega8515, выполнить проверку и расставить флаги для реализации следующей задачи: Организовать вывод функции z=4x-3y в порт РВ с минимальной задержкой 14 тактов: 1)Задержку организовать с помощью таймера-счётчика T/C0; x – ввести с порта PD; y – порта PА. 2)Вывод функции z в порт РВ при событии совпадения T/C0 через подпрограмму прерываний. 3) Сделать проверку при х=03, y=02. |
18 |
Разработать алгоритм, программу на языке ассемблер МК AVR ATmega8515, выполнить проверку и расставить флаги для реализации следующей задачи: Организовать вывод функции z=x-2y в порт РВ с минимальной задержкой 11 тактов: 1)Задержку организовать с помощью таймера-счётчика T/C0; x – ввести с порта PА; y – порта PC. 2)Вывод функции z в порт РВ при событии совпадения T/C0 через подпрограмму прерываний. 3) Сделать проверку при х=05, y=02. |
19 |
Разработать алгоритм, программу на языке ассемблер МК AVR ATmega8515, выполнить проверку и расставить флаги для реализации следующей задачи: Организовать вывод функции z=7x-y в порт РА с минимальной задержкой 10 тактов: 1)Задержку организовать с помощью таймера-счётчика T/C0; x – ввести с порта PD; y – порта PC. 2)Вывод функции z в порт РА при событии совпадения T/C0 через подпрограмму прерываний. 3) Сделать проверку при х=05, y=01. |
20 |
Разработать алгоритм, программу на языке ассемблер МК AVR ATmega8515, выполнить проверку и расставить флаги для реализации следующей задачи: Организовать вывод функции z=x+3y в порт РD с минимальной задержкой 10 тактов: 1)Задержку организовать с помощью таймера-счётчика T/C0; x – ввести с порта PА; y – порта PC. 2)Вывод функции z в порт РD при событии совпадения T/C0 через подпрограмму прерываний. 3) Сделать проверку при х=03, y=02. |
Задание 3. Оформить отчет по работе. Продемонстрировать отчет преподавателю.