- •Вступление
- •1 Программная среда avr Studio
- •1.1 Общие сведения
- •1.1.1 Отладка программы
- •1.1.2 Программный отладчик
- •1.1.3 Аппаратный отладчик
- •1.1.4 Полнофункциональные программные имитаторы электронных устройств
- •1.1.5 Внутренний отладчик микроконтроллеров avr
- •1.1.6 Программная среда «avr Studio»
- •1.2 Описание интерфейса. Главная панель программы «avr Studio»
- •1.3 Создание проекта
- •1.4 Трансляция программы
- •1.4.1 Форматы файлов
- •1.4.2 Формат нех-файла
- •1.4.3 Процедура трансляции
- •1.5 Отладка разрабатываемой программы
- •1.5.1 Ошибки алгоритма и его реализации
- •1.5.2 Этапы процесса отладки
- •1.5.3 Применение точек останова
- •1.5.4 Просмотр и изменение содержимого введенных переменных
- •1.6 Исправление ошибок
- •2. Лабораторные работы
- •2.1 Лабораторная работа №1
- •1 Принципиальная электрическая схема
- •2 Алгоритм
- •3 Программа на Ассемблере
- •4 Директивы
- •5 Операторы
- •6 Описание программы (листинг 1.1)
- •7 Задания для самостоятельной работы
- •8 Задания к лабораторной работе
- •9 Содержание отчета
- •2.2 Лабораторная работа №2
- •1 Принципиальная электрическая схема
- •2 Алгоритм
- •Программа на Ассемблере
- •3 Описание программы (листинг 2.1)
- •4 Задания для самостоятельной работы
- •1 Постановка задачи
- •2 Схема
- •3 Алгоритм
- •4 Программа на Ассемблере
- •5 Описание программы (листинг 3.1)
- •6 Задания для самостоятельной работы
- •7 Задания к лабораторной работе
- •8 Содержание отчета
- •9 Контрольные вопросы
- •3. Сводная таблица команд Ассемблера микроконтроллеров avr
- •Проектирование микропроцессорных систем
- •65044, Украина, Одесса, пр. Шевченко, 1
- •65044, Украина, г.Одесса, пр. Шевченко, 1, корп. 5
6 Задания для самостоятельной работы
6.1 Изучить особенности функционирования микроконтроллеров при получении информации от механических датчиков;
6.2 Указать назначение и продолжительность циклов ожидания событий замыкания и размыкания контактов в алгоритме работы микроконтроллера;
6.3 Описать алгоритм работы разрабатываемой микропроцессорной системы с учетом борьбы с дребезгом;
6.4 Изучить команды AVR-ассемблера, представленные в лабораторной работе;
6.5 Выполнить следующие пункты задания к лабораторной работе: 7.1 – 7.4.
7 Задания к лабораторной работе
7.1 Разработать вариант основного цикла программы с включением подпрограммы задержки
№ варианта |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
Временная Задержка, мкс |
176 |
187 |
191 |
213 |
218 |
228 |
278 |
298 |
303 |
312 |
7.2 Разработать программу для работы устройства в в соответствии с приведенным примером;
7.3 Привести описание программы;
7.4 С помощью программного комплекса «AVR Studio» создайте собственный проект.
8 Содержание отчета
8.1 Цель работы;
8.2 Принципиальная схема микропроцессорного устройства;
8.3 Листинг программы по пунк. 7.2 в соответствии с принятыми требованиями
8.4 Описание программы;
8.5 Выводы.
9 Контрольные вопросы
9.1 Дребезг контактов и его влияние на работу схемы;
9.2 Опишите способы борьбы с дребезгом;
9.3 Как реализуется временная задержка аппаратными методами?
9.4 Как реализуется временная задержка программными методами?
9.5 Дайте характеристику командам push и pop работы со стеком;
9.6 Дайте характеристику командам rcall и ret работы с подпрограммами;
9.7 Дайте характеристику команде условного перехода brne;
9.8 Как рассчитывать программно-управляемые временные задержки?
9.9 Опишите алгоритм работы микропроцессорного устройства.
3. Сводная таблица команд Ассемблера микроконтроллеров avr
группа команд логических операций
группа команд арифметических операций
группа команд операций с разрядами
группа команд сравнения
группа команд операций сдвига
группа команд пересылки данных
группа команд управления системой
группа команд передачи управления
(безусловная передача управления)
группа команд передачи управления
(пропуск команды по условию)
группа команд передачи управления
(передача управления по условию)
Сводная таблица команд Ассемблера микроконтроллеров AVR
Группа команд логических операций
Мнемоника |
Описание |
Операция |
Такты |
Флаги |
AND Rd, Rr |
«Логическое И» двух РОН |
Rd←Rd •Rr |
1 |
Z,N,V |
ANDI Rd, K |
«Логическое И» РОН и константы |
Rd←Rd •K |
1 |
Z,N,V |
EOR Rd, Rr |
«Исключающее ИЛИ» двух РОН |
Rd←Rd Rr |
1 |
Z,N,V |
OR Rd, Rr |
«Логическое ИЛИ» двух РОН |
Rd←Rd v Rr |
1 |
Z,N,V |
ORI Rd, K |
Логическое ИЛИ» РОН и константы |
Rd←Rd vK |
1 |
Z,N,V |
COM Rd |
Перевод в обратный код |
Rd←0FFH–R |
1 |
Z,C,N,V |
NEG Rd |
Перевод в дополнительный код |
Rd←00H–Rd |
1 |
Z,C,N,V,H |
CLR Rd |
Сброс всех разрядов РОН |
Rd←Rd Rd |
1 |
Z,N,V |
SER Rd |
Установка всех разрядов РОН |
Rd←0FFH |
1 |
– |
TST Rd |
Проверка РОН на отрицательное (нулевое) значение |
Rd←Rd • Rd |
1 |
Z,N,V |
Группа команд арифметических операций
Мнемоника |
Описание |
Операция |
Такты |
Флаги |
ADD Rd, Rr |
Сложение двух РОН |
Rd←Rd+Rr |
1 |
Z,C,N,V,H |
ADC Rd, Rr |
Сложение двух РОН с переносом |
Rd←Rd+Rr+C |
1 |
Z,C,N,V,H |
ADIW Rd, K |
Сложение регистровой пары с константой |
Rdh:Rdl←Rdh: Rdl+K |
2 |
Z,C,N,V,S |
SUB Rd, Rr |
Вычитание двух РОН |
Rd←Rd–Rr |
1 |
Z,C,N,V,H |
SUB| Rd, K |
Вычитание константы из РОН |
Rd←Rd–K |
1 |
Z,C,N,V,H |
SBC Rd, Rr |
Вычитание двух РОН с заемом |
Rd←Rd–Rr–C |
1 |
Z,C,N,V,H |
SBCI Rd, K |
Вычитание константы из РОН с заемом |
Rd←Rd–K– C |
1 |
Z,C,N,V,H |
SBIW Rd, K |
Вычитание константы из регистровой пары |
Rdh:Rdl← Rdh: Rdl–K |
2 |
Z,C,N,V,S |
DEC Rd |
Декремент РОН |
Rd←Rd – 1 |
1 |
Z,N,V |
INC Rd |
Инкремент РОН |
Rd←Rd + 1 |
1 |
Z,N,V |
Группа команд операций с разрядами
Мнемоника |
Описание |
Операция |
Такты |
Флаги | ||
CBRRd,K |
Сброс разряда(ов) POH |
Rd←Rd•(OFFH–K) |
1 |
Z,N,V | ||
SBRRd,K |
Установка разряда(ов) POH |
Rd←RdvK |
1 |
Z,N,V | ||
CBI A, b |
Сброс разряда РВВ |
A.b←0 |
2 |
- | ||
SBI A, b |
Установка разряда РВВ |
A.b←1 |
2 |
- | ||
BCLR s |
Сброс флага |
SREG.s←0 |
1 |
SREG.s | ||
BSЕТ s |
Установка флага |
SREG.s←1 |
1 |
SREG.s | ||
BLD Rd, b |
Загрузка разряда РОН из флага T(SREG) |
Rd.b←T |
1 |
- | ||
BST Rr, b |
Запись разряда РОН в флаг T(SREG) |
T←Rr.b |
1 |
T | ||
CLC |
Сброс флага переноса |
C←0 |
1 |
C | ||
SEC |
Установка флага переноса |
C←1 |
1 |
C | ||
CLN |
Сброс флага отрицательного числа |
N←0 |
1 |
N | ||
SEN |
Установка флага отрицательного числа |
N←1 |
1 |
N | ||
CLZ |
Сброс флага нуля |
Z←0 |
1 |
Z | ||
SEZ |
Установка флага нуля |
Z←1 |
1 |
Z | ||
CU |
Общий запрет прерываний |
I←0 |
1 |
I | ||
SEI |
Общее разрешение прерываний |
I←1 |
1 |
I | ||
CLS |
Сброс флага знака |
S←0 |
1 |
S | ||
SES |
Установка флага знака |
S←1 |
1 |
S | ||
CLV |
Сброс флага переполнения дополнительного кода |
V←0 |
1 |
V | ||
SEV |
Установка флага переполнения дополнительного кода |
V←1 |
1 |
V | ||
CLT |
Сброс пользовательского флага T |
T←0 |
1 |
T | ||
SET |
Установка пользовательского флага T |
T←1 |
1 |
T | ||
CLH |
Сброс флага половинного переноса |
H←0 |
1 |
H | ||
SEH |
Установка флага половинного переноса |
H←1 |
1 |
H |
Группа команд сравнения
Мнемоника
|
Описание |
Операция |
Такты |
Флаги |
СP Rd, Rr
|
Сравнение двух РОН |
?(Rd Rr) |
1 |
Z,N,V,C,H |
CPC Rd, Rr
|
Сравнение двух РОН с учетом переноса |
?(Rd Rd C) |
1 |
Z,N,V,C,H |
CPIRd,K
|
Сравнение РОН с константой |
?(Rd K) |
1 |
Z,N,V,C,H |
Группа команд операций сдвига
Мнемоника
|
Описание |
Операция |
Такты |
Флаги |
SR RdA
|
Арифметический сдвиг вправо |
Rd7→Rd6→Rd5→Rd4→Rd3→Rd2→Rd1→Rd0 |
1 |
Z,C,N,V |
LSL Rd
|
Логический сдвиг влево |
C←Rd7←Rd6←Rd5←Rd4← Rd3←Rd2←Rd1←Rd0←0 |
1 |
Z,C,N,V |
LSR Rd
|
Логический сдвиг вправо |
0→Rd7→Rd6→Rd5→Rd4→ Rd3→Rd2→Rd1→Rd0→C |
1 |
Z,C,N,V |
ROL Rd
|
Сдвиг влево через перенос |
C←Rd7←Rd6←Rd5←Rd4← Rd3←Rd2←Rd1←Rd0←C |
1 |
Z,C,N,V |
ROR Rd
|
Сдвиг вправо через перенос |
C→Rd7→Rd6→Rd5→Rd4→ Rd3→Rd2→Rd1→Rd0→C |
1 |
Z,C,N,V |
SWAP Rd
|
Обмен местами тетрад |
Rd(3 0)↔Rd(7 4) |
1 |
|
Группа команд пересылки данных
Мнемоника
|
Описание |
Операция |
Такты |
Флаги |
MOV Rd, Rr |
Пересылка между РОН |
Rd←Rr |
1 |
- |
MOVW Rd, Rr |
Пересылка между парами регистров |
Rd+1:Rd←Rr+1:Rr |
1 |
- |
LDI Rd, K |
Загрузка константы в РОН |
Rd←K |
1 |
- |
LD Rd, X |
Косвенное чтение |
Rd←[X] |
2 |
- |
LD Rd, X+ |
Косвенное чтение с постинкрементом |
Rd←[X],X←X+1 |
2 |
- |
LD Rd, -X |
Косвенное чтение с преддекрементом |
X←X-1,Rd←[X] |
2 |
- |
LD Rd, Y |
Косвенное чтение |
Rd←[Y] |
2 |
- |
LD Rd, Y+ |
Косвенное чтение с постинкрементом |
Rd←[Y],Y←Y+1 |
2 |
- |
LD Rd, -Y |
Косвенное чтение с преддекрементом |
Y←Y-1,Rd←[Y] |
2 |
- |
LD Rd, Y+q |
Косвенное относительное чтение |
Rd←[Y+q] |
2 |
- |
LD Rd, Z |
Косвенное чтение |
Rd←[Z] |
2 |
- |
LD Rd, Z+ |
Косвенное чтение с постинкрементом |
Rd←[Z],Z←Z+1 |
2 |
- |
LD Rd, -Z |
Косвенное чтение с преддекрементом |
Z←Z-1,Rd←[Z] |
2 |
- |
LD Rd, Z+q |
Косвенное относительное чтение |
Rd←[Z+q] |
2 |
- |
LDS Rd, k |
Непосредственное чтение из ОЗУ |
Rd←[k] |
2 |
- |
ST X, Rr |
Косвенная запись |
[X]←Rr |
2 |
- |
ST X+, Rr |
Косвенная запись с постинкрементом |
[X]←Rr,X←X+1 |
2 |
- |
ST –X,Rr |
Косвенная запись с преддекрементом |
X←X+1,[X]←Rr |
2 |
- |
ST Y, Rr |
Косвенная запись |
[Y]←Rr |
2 |
- |
ST Y+, Rr |
Косвенная запись с постинкрементом |
[Y]←Rr,Y←Y+1 |
2 |
- |
ST –Y, Rr |
Косвенная запись с преддекрементом |
Y←Y-1,[Y]←Rr |
2 |
- |
ST Y+q, Rr |
Косвенная относительная запись |
[Y+q]←Rr |
2 |
- |
ST Z, Rr |
Косвенная запись |
[Z]←Rr |
2 |
- |
ST Z+, Rr |
Косвенная запись с постинкрементом |
[Z]←Rr,Z←Z+1 |
2 |
- |
ST -Z, Rr |
Косвенная запись с преддекрементом |
[Z]←Z-1, [Z]←Rr |
2 |
- |
ST Z+q, Rr |
Косвенная относительная запись |
[Z+q]←Rr |
2 |
- |
STS k, Rr |
Непосредственная запись в ОЗУ |
[k]←Rr |
2 |
- |
LPM |
Загрузка данных из памяти программ |
R0←{Z} |
3 |
- |
LPM Rd, Z |
Загрузка данных из памяти программ |
Rd←{Z} |
3 |
- |
LPM Rd, Z+ |
Загрузка данных из памяти программ и постдекремент Z |
Rd←{Z},Z←Z +1 |
3 |
- |
SPM |
Запись в программную память |
{Z} ← R1:R0 |
- |
- |
IN Rd, P |
Пересылка из РВВ в РОН |
Rd ←P |
1 |
- |
OUT P, Rr |
Пересылка из РОН в РВВ |
P←Rr |
1 |
- |
PUSH Rr |
Сохранение байта в стеке |
STACK ← Rr |
2 |
-- |
POP Rd |
Извлечение байта из стека |
Rd←STACK |
2 |
- |
Группа команд управления системой
Мнемоника |
Описание |
Операция |
Такты |
Флаги |
NOP |
Нет операции |
- |
1 |
- |
SLEEP |
Переход в спящий режим |
- |
3 |
- |
WDR |
Сброс сторожевого таймера |
- |
1 |
- |
BREAK |
Приостановка программ |
Используется только при отладке |
- |
- |
Группа команд передачи управления (безусловная передача управления)
Мнемоника |
Описание |
Операция |
Такты |
Флаги |
RJMP |
Относительный безусловный переход |
PC←PC←K+1 |
2 |
- |
IJMP |
Косвенный безусловный переход |
PC←Z |
2 |
- |
RCALL |
Относительный вызов подпрограммы |
PC←PC+K+1 |
3 |
- |
ICALL |
Косвенный вызов подпрограммы |
PC←Z |
3 |
- |
RET |
Возврат из подпрограммы
|
PC←STACK |
4 |
- |
RETI |
Возврат из подпрограммы обработки прерываний |
PC←STACK |
4 |
I |
Группа команд передачи управления (пропуск команды по условию)
Мнемоника |
Описание |
Условие |
Такты |
Флаги |
Все команды этой группы пропускают следующую за ней команду (PC←PC+1) при разных условиях: | ||||
| ||||
CPSE Rd, Rr |
Сравнение и пропуск следующей команды при равенстве |
Если Rd=Rr |
1/2/3 |
- |
SBRC Rr, b |
Пропуск следующей команды, если разряд РОН сброшен |
Если Rr.b=0 |
1/2/3 |
- |
SBRSRr,b |
Пропуск следующей команды, если разряд РОН установлен |
Если Rrb=1 |
1/2/3 |
- |
SBICA,b |
Пропуск следующей команды, если разряд РВВ сброшен |
Если A.b=0 |
1/2/3 |
- |
SBISA,b |
Пропуск следующей команды, если разряд РВВ установлен |
Если A.b=1 |
1/2/3 |
- |
Группа команд передачи управления (передача управления по условию)
Мнемоника |
Описание |
Условие |
Такты |
Флаги |
Все команды этой группы пропускают следующую за ней команду (PC←PC+k+1) при разных условиях: | ||||
| ||||
BRBC s,k |
Переход, если флаг sрегистра SREGсброшен |
Если SREG.s=0 |
1/2 |
- |
BRBS s,k |
Переход, если флаг sрегистра SREGустановлен |
Если SREG.s=1 |
1/2 |
- |
BRCS k |
Переход по переносу |
Если C=1 |
1/2 |
- |
BRCC k |
Переход если нет переноса |
Если C=0 |
1/2 |
- |
BREQ k |
Переход по условию «равно» |
Если Z=1 |
1/2 |
- |
BRNE k |
Переход по условию «не равно» |
Если Z=0 |
1/2 |
- |
BRSH k |
Переход по условию «больше или равно» |
Если C=0 |
1/2 |
- |
BRLO k |
Переход по условию «меньше» |
Если C=1 |
1/2 |
- |
BRMI k |
Переход по условию «отрицательное значение» |
Если N=1 |
1/2 |
- |
BRPL k |
Переход по условию «положительное значение» |
Если N=0 |
1/2 |
- |
BRGE k |
Переход по условию «больше или равно»(со знаком) |
Если (N V)=0 |
1/2 |
- |
BRLT k |
Переход по условию «меньше»(со знаком) |
Если (N V)=1 |
1/2 |
- |
BRHS k |
Переход по половинному переносу |
Если H=1 |
1/2 |
- |
BRHC k |
Переход, если нет половинного переноса |
Если H=0 |
1/2 |
- |
BRTS k |
Переход, если флаг Т установлен |
Если T=1 |
1/2 |
- |
BRTC k |
Переход, если флаг Т сброшен |
ЕслиT=0 |
1/2 |
- |
BRVS k |
Переход по переполнению дополнительного кода |
Если V=1 |
1/2 |
- |
BRVC k |
Переход , если нет переполнения дополнительного кода |
Если V=0 |
1/2 |
- |
BRID k |
Переход, если прерывания запрещены |
Если I=0 |
1/2 |
- |
BRIE k |
Переход, если прерывания разрешены |
Если I=1 |
1/2 |
- |
Литература
1. Евстифеев А.В. Микроконтроллеры AVR семейства Mega. Руководство пользователя. – М.: Издательский дом «Додэка – XXI», 2007. – 592 с.: ил.
2. Евстифеев А.В. Микроконтроллеры AVR семейства Tiny. Руководство пользователя. – М.: Издательский дом «Додэка – XXI», 2007. – 432 с.: ил.
3. Евстифеев А.В. Микроконтроллеры AVR семейства Classic фирмы ATMEL – 3-е изд., стер. – М.: Издательский дом «Додэка – XXI», 2006. – 288 с.: ил.
4. Баранов В.Н.Применение микроконтроллеров AVR: схемы, алгоритмы, программы. – М.: Издательский дом «Додэка – XXI», 2004. – 288 с.: ил.
5. Голубцов М.С., Кириченкова А. В. Микроконтроллеры AVR: от простого к сложному. Изд.2-е, испр. и доп. – М.: СОЛОН-Пресс, 2004. – 304 с.
6. Трамперт В. Измерение, управление и регулирование с помощью AVR микроконтроллеров.: Пер. с нем. – К.: «МК-Пресс», 2006. – 208 с., ил.
7. Швец В.А. и др. Одноплатные микроконтроллеры. Проектирование и применение. – К.: «МК-Пресс», 2006. – 304 с., ил.
8. Мортон Дж. Микроконтроллеры AVR. Вводный курс/Пер. с англ. – М.: Издательский дом «Додэка – XXI», 2006. – 272 с.: ил.
9. Гребнев В.В. Микроконтроллеры семейства AVR фирмы ATMEL. – М.: ИП РадиоСофт, 2002 – 176 с.: ил.
10.Бродин В.Б., Калинин А.В. Системы на микроконтроллерах и БИС программируемой логики – М.: Издательство ЭКОМ, 2002. – 400 с.: ил.
11.Рюмик С.М. Микроконтроллеры AVR. Ступени 1 – 7. Электроника и компьютер. РА 1 – 2005
12.Белов А.В. Микроконтроллеры AVR. – СПб.: Наука и Техника,2007. – 352 с.
13.Белов А.В.Создаем устройства на микроконтроллерах. – СПб.: Наука и Техника, 2007. – 304 с.: ил.
14.Великий В.І. Мікропроцесорні системи в САУ: Курс лекцій. Навч. посібник. – О.: Наука і техніка, 2006. – 192 с.: ил.
15.Великий В.І., Препелиця Г.П. Мікропроцесорні системи обробки даних та управління. Навчальний посібник. – Одеса: Вид-во «ТЭС», 2004. – 212 с.: ил
Электронные копии литературных источников 2 – 11 можно получить в лаборатории кафедры, пособия 14,15 – в библиотеке института
Учебное издание