Лекция: Практическая работа №1
Изучение системы команд МК AVR ATmega8515
Цель работы: изучение системы команд МК AVR.
Методические рекомендации по выполнению практической работы
Необходимо составить алгоритм, написать программу на ассемблереМК AVR ATmega8515, провести проверку, выставить флаги для реализации следующей задачи:
В режиме реального времени ввести данные с портов x – (PА), y – (PВ), если состояние портов совпало (x=y), то в порт РС вывести удвоенное входное значение z=2x; если (x¹y), то в порт РС вывести z=xÙy.
а) Составим алгоритм задачи. Данная задача реализуется циклическим (режим реального времени) разветвляющимся (реализуется условие задачи) алгоритмом (рис. 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=xÙy
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. Варианты заданий на практическую работу
№ варианта | Задание на практическую работу |
В режиме реального времени ввести данные с портов x – (PС), y – (PВ), если x≥y, то в порт РD вывести z=2x+2y; если x<y, то в порт РD вывести z=xÅy. Провести проверку при x=55h, y=35h. | |
В режиме реального времени ввести данные с портов x – (PВ), y – (PC), если x≥y, то в порт РD вывести z=x+3y; если x<y, то в порт РD вывести z=xÚy. Провести проверку при x=5Ah, y=25h. | |
В режиме реального времени ввести данные с портов x – (PA), y – (PВ), если y≥x, то в порт РD вывести z=3x+y; если x<y, то в порт РD вывести z=yÙx. Провести проверку при x=78h, y=35h. | |
В режиме реального времени ввести данные с портов x – (PС), y – (PA), если x≥y, то в порт РB вывести z=2x+2y; если x<y, то в порт РB вывести z=xÅy. Провести проверку при x=65h, y=48h. | |
В режиме реального времени ввести данные с портов x – (PA), y – (PD), если x=y, то в порт РB вывести z=3x; если x¹y, то в порт РB вывести z=4xÅy. Провести проверку при x=55h, y=55h. | |
В режиме реального времени ввести данные с портов x – (PD), y – (PC), если x=y, то в порт РA вывести z=3x; если x¹y, то в порт РB вывести z=xÙ3y. Провести проверку при x=75h, y=75h. | |
В режиме реального времени ввести данные с портов x – (PA), y – (PC), если x=y, то в порт РD вывести z=4x; если x¹y, то в порт РB вывести z=2xÙy. Провести проверку при x=75h, y=75h. | |
В режиме реального времени ввести данные с портов x – (PB), y – (PC), если x=y, то в порт РA вывести z=2x; если x¹y, то в порт РD вывести z=xÙ4y. Провести проверку при x=65h, y=65h. | |
В режиме реального времени ввести данные с портов x – (PA), y – (PB), если x=y, то в порт РD вывести z=2x; если x¹y, то в порт РC вывести z=2xÙy. Провести проверку при x=A5h, y=A5h. | |
В режиме реального времени ввести данные с портов x – (PD), y – (PC), если x=y, то в порт РA вывести z=5x; если x¹y, то в порт РB вывести z=2xÙy. Провести проверку при x=95h, y=95h. | |
В режиме реального времени ввести данные с портов x – (PB), y – (PC), если x=y, то в порт РA вывести z=3x; если x¹y, то в порт РD вывести z=xÙ3y. Провести проверку при x=75h, y=75h. | |
В режиме реального времени ввести данные с портов x – (PС), y – (PВ), если x≥y, то в порт РD вывести z=3x+2y; если x<y, то в порт РA вывести z=2xÅy. Провести проверку при x=55h, y=35h. | |
В режиме реального времени ввести данные с портов x – (PA), y – (PВ), если x≥y, то в порт РD вывести z=2x+3y; если x<y, то в порт РC вывести z=3xÅy. Провести проверку при x=75h, y=3Fh. | |
В режиме реального времени ввести данные с портов x – (PС), y – (PA), если x≥y, то в порт РD вывести z=5x+y; если x<y, то в порт РB вывести z=xÚ2y. Провести проверку при x=65h, y=1Ch. | |
В режиме реального времени ввести данные с портов x – (PС), y – (PA), если x≥y, то в порт РD вывести z=2x+4y; если x<y, то в порт РB вывести z=4xÅy. Провести проверку при x=45h, y=1Dh. | |
В режиме реального времени ввести данные с портов x – (PD), y – (PВ), если x≥y, то в порт РA вывести z=2x+5y; если x<y, то в порт РC вывести z=xÅ2y. Провести проверку при x=35h, y=2Eh. | |
В режиме реального времени ввести данные с портов x – (PD), y – (PВ), если x≥y, то в порт РA вывести z=x+6y; если x<y, то в порт РD вывести z=2xÅy. Провести проверку при x=75h, y=35h. | |
В режиме реального времени ввести данные с портов x – (PA), y – (PВ), если x≥y, то в порт РC вывести z=5x+2y; если x<y, то в порт РD вывести z=3xÅy. Провести проверку при x=75h, y=3Ah. | |
В режиме реального времени ввести данные с портов x – (PA), y – (PC), если x≥y, то в порт РD вывести z=2x+2y; если x<y, то в порт РB вывести z=xÅ4y. Провести проверку при x=6Bh, y=3Fh. | |
В режиме реального времени ввести данные с портов x – (PA), y – (PВ), если x≥y, то в порт РD вывести z=3x+2y; если x<y, то в порт РC вывести z=6xÅ3y. Провести проверку при x=25h, y=15h. |
Содержание отчета
· Наименование практической работы.
· Цель практической работы.
· Формулировка задания.
· Блок-схема алгоритма.
· Программа на языке ассемблер.
· Проверка реализуемой задачи (выполнить функции, выставить флаги).