Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Лабораторная работа №2. Изучение работы с портами ввода/вывода МК AVR



Изучение работы с портами ввода/вывода МК AVR

Цель работы: знакомство со структурой и принципами функционирования портовввода/вывода МК AVR.

Задание 1.

Необходимо для рассмотренной в практической работе задачи написать программу на ассемблере, провести проверку, выставить флаги

Методические рекомендации по выполнению примера.

Создать проект в AVR Studio 4, написать и отладить программу, продемонстрировать преподавателю функционирование МК для данной задачи.

Пример выполнения задания на рис. 34.

Рис. 34. Рабочее окно AVR Studio 4 с результатами проверки задачи

Проверим правильность выставления флагов по выполнению команды сложения (результат на рис. 35) – все арифметические флаги =0, что подтверждает правильность теоретических расчетов в задании 1.

Рис. 35. Рабочее окно AVR Studio 4 с результатами проверки арифметических флагов

Задание 3. Получить у преподавателя задачу для реализации, выполнить задания № 1, 2 в соответствии с указанной методикой.

Ответить на контрольные вопросы.

Контрольные вопросы

1. Методика выставления арифметических флагов МК.

2. Методика работы в AVR Studio 4.

Литература

1. Микроконтроллеры AVR семейств Tiny и Mega фирмы ATMEL. Евстифеев А.В., 2-е изд., стер. – М.: Издательский дом «Додека – XXI», 2005. – 560с.

ПРИЛОЖЕНИЕ 1

Таблица 25. Система команд МК ATmega8515

Мнемоника Операнды Описание Операция Флаги Кол-во тактов
АРИФМЕТИЧЕСКИЕ И ЛОГИЧЕСКИЕ КОМАНДЫ
ADD Rd, Rr Сложение двух регистров общего назначения без учета переноса Rd Rd + Rr Z,C,N,V,H  
ADC Rd, Rr Сложение двух регистров с учетом переноса Rd Rd+Rr+C Z,C,N,V,H  
ADIW Rdl, K Сложение регистровой пары с константой Rdh:Rdl Rdh:Rdl+K Z,C,N,V,S  
SUB Rd, Rr Разность двух регистров без учета переноса Rd Rd - Rr Z,C,N,V,H  
SUBI Rd*, K Разность регистра и константы Rd Rd - K Z,C,N,V,H  
SBC Rd, Rr Разность двух регистров с учетом переноса RdRd-Rr - C Z,C,N,V,H  
SBCI Rd*, K Разность регистра и константы с учетом переноса RdRd- K - C Z,C,N,V,H  
SBIW Rdl, K Вычитание константы из регистровой пары Rdh:Rdl  Rdh:Rdl - K Z,C,N,V,S  
MUL Rd, Rr Умножение беззнаковых чисел R1:R0  Rd´Rr Z,C  
MULS Rd, Rr Умножение чисел со знаком R1:R0  Rd´Rr Z,C  
AND Rd, Rr Логическое И двух регистров Rd Rd Rr Z,N,V  
ANDI Rd*, K Логическое И регистра и константы RdRd K Z,N,V  
OR Rd, Rr Логическое ИЛИ двух регистров Rd Rd v Rr Z,N,V  
ORI Rd*, K Логическое ИЛИ регистра и константы Rd Rd v K Z,N,V  
EOR Rd, Rr Исключающее ИЛИ двух регистров Rd Rd vRr Z,N,V  
COM Rd Инверсия регистра Rd $FF Rd Z,C,N,V  
NEG Rd Отрицание регистра Rd $00 Rd Z,C,N,V,H  
INC Rd Инкремент Rd Rd + 1 Z,N,V  
DEC Rd Декремент Rd Rd 1 Z,N,V  
TST Rd Тестирование на ноль и минус Rd Rd Rd Z,N,V  
CLR Rd Очистка регистра Rd Rd Rd Z,N,V  
SER Rd Установка регистра в FF Rd $FF None  
CP Rd, Rr Сравнение двух регистров Rd -Rr Z, N,V,C,H  
CPC Rd, Rr Сравнение двух регистров с учетом переноса Rd -Rr -C Z, N,V,C,H  
CPI Rd*, K Сравнение с константой Rd -K Z, N,V,C,H  
КОМАНДЫ ПЕРЕДАЧИ УПРАВЛЕНИЯ
RJMP k Безусловный переход на метку k+1 PC PC + k + 1 None  
IJMP   Переход на указатель (Z) PC Z None  
JMP k Переход на метку k PC k None  
RCALL k Относительный вызов подпрограммы PCPC + k + 1 None  
CALL k Абсолютный вызов подпрограммы PC k None  
ICALL   Косвенный вызов подпрограммы PC Z None  
RET   Возврат из подпрограммы PC STACK None  
RETI   Возврат из подпрограммы обработки прерывания PC STACK I  
CPSE Rd,Rr Пропуск команды при равенстве двух РОН if (Rd = Rr)PC PC + 2 or 3 None 1 / 2 / 3
SBRC Rr, b Пропустить команду, если разряд РОН сброшен if (Rr(b)=0)PC PC + 2 or 3 None 1 / 2
SBRS Rr, b Пропустить команду, если разряд РОН установлен if (Rr(b)=1)PC PC + 2 or 3 None 1 / 2
SBIC P*, b Пропустить команду, если разряд РВВ сброшен if (P(b)=0)PC PC + 2 or 3 None 1 / 2
SBIS P*, b Пропустить команду, если разряд РВВ установлен if (P(b)=1)PC PC + 2 or 3 None 1 / 2
BRBS s, k Переход, если разряд регистра SREG установлен if (SREG(s)=1) then РCPC+k+1 None 1 / 2
BRBC s, k Переход, если разряд регистра SREG сброшен if(SREG(s) = 0) then PCPC+k + 1 None 1 / 2
BREQ k Переход по «равно» if (Z = 1) then PC PC + k + 1 None 1 / 2
BRCS k Переход по переносу if (C = 1) then PC PC + k + 1 None 1 / 2
BRNE k Переход по «не равно» if (Z = 0) then PC PC + k + 1 None 1 / 2
BRCC k Переход, если не было переноса if (C = 0) then PC PC + k + 1 None 1 / 2
BRSH k Переход по «выше или равно» (для беззнаковых данных) if (C = 0) then PC PC + k + 1 None 1 / 2
BRLO k Переход по «меньше» (для беззнаковых данных) if (C = 1) then PC PC + k + 1 None 1 / 2
BRMI k Переход по «отрицательное значение» if (N = 1) then PC PC + k + 1 None 1 / 2
BRPL k Переход по «положительное значение» if (N = 0) then PC PC + k + 1 None 1 / 2
BRGE k Переход по «больше или равно» if (N ÅV= 0) then PCPC+k + 1 None 1 / 2
BRLT k Переход по «меньше» if (N ÅV= 1) then PCPC+k + 1 None 1 / 2
BRHS k Переход по половинному переносу if (H = 1) then PC PC + k + 1 None 1 / 2
BRHC k Переход, если не было половинного переноса if (H = 0) then PC PC + k + 1 None  
BRTS k Переход, если флаг Т установлен if (T = 1) then PC PC + k + 1 None 1 / 2
BRTC k Переход, если флаг Т сброшен if (T = 0) then PC PC + k + 1 None 1 / 2
BRVS k Переход по переполнению дополнительного кода if (V = 1) then PC PC + k + 1 None 1 / 2
BRVC k Переход, если нет переполнения дополнительного кода if (V = 0) then PC PC + k + 1 None 1 / 2
BRIE k Переход, если прерывания разрешены if (I = 1) then PC PC + k + 1 None 1 / 2
BRID k Переход, если прерывания запрещены if (I = 0) then PC PC + k + 1 None 1 / 2
КОМАНДЫ ПЕРЕСЫЛКИ ДАННЫХ
MOV Rd, Rr Пересылка между регистрами Rd Rr None  
LDI Rd*, K Загрузка константы Rd K None  
LD Rd, X Косвенное чтение памяти данных Rd (X) None  
LD Rd, X+ Косвенное чтение памяти данных с постинкрементом Rd (X), X X + 1 None  
LD Rd, - X Косвенное чтение памяти данных с преддекрементом X X – 1, Rd (X) None  
LD Rd, Y Косвенное чтение памяти данных Rd (Y) None  
LD Rd, Y+ Косвенное чтение памяти данных с постинкрементом Rd (Y), Y Y + 1 None  
LD Rd, - Y Косвенное чтение памяти данных с преддекрементом Y Y – 1, Rd (Y) None  
LDD Rd,Y+q Косвенное относительное чтение памяти данных Rd (Y + q) None  
LD Rd, Z Косвенное чтение памяти данных Rd (Z) None  
LD Rd, Z+ Косвенное чтение памяти данных с постинкрементом Rd (Z), Z Z+1 None  
LD Rd, -Z Косвенное чтение памяти данных с преддекрементом Z Z – 1, Rd (Z) None  
LDD Rd, Z+q Косвенное относительное чтение памяти данных Rd (Z + q) None  
LDS Rd, k Непосредственная загрузка из памяти данных Rd (k) None  
ST X, Rr Косвенная запись в память данных (X) Rr None  
ST X+, Rr Косвенная запись в память данных с постинкрементом ST (X) Rr, X X + 1 None  
ST - X, Rr Косвенная запись в память данных с преддекрементом XX – 1, (X) Rr None  
ST Y, Rr Косвенная запись в память данных (Y) Rr None  
ST Y+, Rr Косвенная запись в память данных с постинкрементом (Y) Rr, YY + 1 None  
ST - Y, Rr Косвенная запись в память данных с преддекрементом Y Y – 1, (Y) Rr None  
STD Y+q,Rr Косвенная относительная запись в память данных (Y + q) Rr None  
ST Z, Rr Косвенная запись в память данных (Z) Rr None  
ST Z+, Rr Косвенная запись в память данных с постинкрементом (Z) Rr, ZZ + 1 None  
ST -Z, Rr Косвенная запись в память данных с преддекрементом Z Z – 1, (Z) Rr None  
STD Z+q,Rr Косвенная относительная запись в память данных (Z + q) Rr None  
STS k, Rr Непосредственная запись в память данных (k) Rr None  
LPM   Загрузка данных из памяти программ R0 (Z) None  
ELPM   Расширенная загрузка данных из памяти программ R0 (RAMPZ: Z) None  
IN Rd, P Ввод из порта Rd P None  
OUT P, Rr Вывод в порт P Rr None  
PUSH Rr Сохранение байта в стеке STACK Rr; SPSP-1 None  
POP Rd Извлечение байта из стека SPSP+1, Rd STACK None  
КОМАНДЫ РАБОТЫ С БИТАМИ
SBR Rd*, K Установка бита(тов) в регистре Rd Rd v K Z,N,V  
CBR Rd*, K Очистка бита(тов) в регистре Rd Rd ($FF - K) Z,N,V  
SBI P*,b Установка бита в регистре I/O I/O(P,b) 1 None  
CBI P*,b Очистка бита в регистре I/O I/O(P,b) 0 None  
LSL Rd Логический сдвиг влево Rd(n+1) Rd(n), Rd(0) 0 Z,C,N,V  
LSR Rd Логический сдвиг вправо Rd(n) Rd(n+1), Rd(7) 0 Z,C,N,V  
ROL Rd Циклический сдвиг влево через перенос Rd(0) C, Rd(n+1) Rd(n), CRd(7) Z,C,N,V  
ROR Rd Циклический сдвиг вправо через перенос Rd(7) C, Rd(n) Rd(n+1), C Rd(0) Z,C,N,V  
ASR Rd Арифметический сдвиг вправо Rd(n) Rd(n+1), n=0..6 Z,C,N,V  
SWAP Rd Обмен тетрадами Rd(3..0)Rd(7..4), Rd(7..4)Rd(3..0) None  
BSET s Установка разряда регистра SREG SREG(s) 1 SREG(s)    
BCLR s Сброс разряда регистра SREG SREG(s) 0 SREG(s)    
BLD Rd, b Пересылка флага Т в РОН Rd(b) T None  
BST Rr, b Запись разряда РОН в флаг Т T Rr(b) T  
SEC   Установка флага С C 1 C  
CLC   Очистка флага C C 0 C  
SEN   Установка флага N N 1 N  
CLN   Очистка флага N N 0 N  
SEZ   Установка флага Z Z 1 Z  
CLZ   Очистка флага Z Z 0 Z  
SEI   Разрешение глобальных прерываний I 1 I  
CLI   Запрет глобальных прерываний. I 0 I  
SES   Установка флага S S 1 S  
CLS   Очистка флага S S 0 S  
SEV   Установка флага V V 1 V  
CLV   Очистка флага V V 0 V  
SET   Установка флага T T 1 T  
CLT   Очистка флага T T 0 T  
SEH   Установка флага H H 1 H  
CLH   Очистка флага H H 0 H  
КОМАНДЫ УПРАВЛЕНИЯ СИСТЕМОЙ
NOP   Нет операции None    
SLEEP   Спящий режим None    
WDR   Сброс по сторожевому таймеру None    

Обозначения, используемые в системе команд:

Rd - регистр-приемник результата, 0 £ d £ 31,

Rd* - регистр-приемник результата, 16 £ d £ 31,

Rdl: R24, R26, R28, R30. Для ADIW и SBIW команд,

Rr - регистр-источник,

P- адрес регистра ввода/вывода,

P*- адрес побитно адресуемого регистра ввода/вывода (адреса $00-$1F),

K - символьная или численная константа (8 бит),

k - адресная константа,

b - номер бита в регистре (3 бита),

s - номер бита в регистре статуса (3 бита),

X,Y,Z - регистры косвенной адресации (X=R27:R26, Y=R29:R28; Z=R31:R30).





Дата публикования: 2014-11-03; Прочитано: 383 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.01 с)...