ПАСМС LW3_MC
.pdf
|
|
грамм с постинкрементом |
|
|
|
|
|
ELPM |
Нет |
Расширенная загрузка |
байта |
R0 |
(RAMPZ:Z) |
Нет |
3 |
из памяти программ |
|
||||||
|
|
|
|
|
|
|
|
ELPM |
Rd, Z |
Расширенная загрузка |
байта |
Rd |
(RAMPZ:Z) |
Нет |
3 |
из памяти программ |
|
||||||
|
|
|
|
|
|
|
|
1 |
|
2 |
|
|
|
3 |
|
|
|
|
4 |
|
|
5 |
6 |
|
|
|
|
|
|
Расширенная |
загрузка байта |
|
Rd |
|
(RAMPZ:Z), |
|
|
|
||||
|
ELPM |
|
Rd, Z+ |
|
из памяти программ с постин- |
|
|
|
Нет |
3 |
|||||||
|
|
|
|
|
крементом |
|
|
|
|
Z |
Z + 1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SPM |
|
Нет |
|
Запись в память программ |
|
(Z) |
|
R1:R0 |
|
|
Нет |
– |
||||
|
IN |
|
Rd, I/O |
|
Чтение |
регистра |
ввода- |
|
Rd |
|
I/O |
|
|
|
Нет |
1 |
|
|
|
|
вывода |
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
OUT |
|
I/O, Rr |
|
Запись в |
|
регистр |
ввода- |
|
I/O |
|
Rr |
|
|
|
Нет |
1 |
|
|
|
вывода |
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
PUSH |
|
Rr |
|
Занесение содержимого РОН |
|
STACK |
Rr |
|
|
Нет |
2 |
|||||
|
|
|
в стек |
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
POP |
|
Rd |
|
Извлечение из стека в РОН |
|
Rd |
|
STACK |
|
|
Нет |
2 |
||||
|
|
|
|
|
|
|
Команды работы с битами |
|
|
|
|
||||||
|
LSL |
|
Rd |
|
Логический сдвиг влево |
|
Rd(n + 1) |
Rd(n), |
|
Z, C, N, V, H, S |
1 |
||||||
|
|
|
|
Rd(0) |
0, C |
Rd(7) |
|
||||||||||
|
LSR |
|
Rd |
|
Логический сдвиг вправо |
|
Rd(n) Rd(n + 1), |
|
Z, C, N, V, H, S |
1 |
|||||||
|
|
|
|
Rd(7) |
0, C |
Rd(0) |
|
||||||||||
|
|
|
|
|
|
||||||||||||
|
ROL |
|
Rd |
|
Циклический сдвиг влево че- |
|
Rd(0) |
C, Rd(n + 1) |
|
Z, C, N, V, H, S |
1 |
||||||
|
|
|
рез флаг переноса |
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
Rd(n), C |
|
Rd(7) |
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
ROR |
|
Rd |
|
Циклический |
сдвиг |
вправо |
|
Rd(7) |
C, Rd(n) |
|
Z, C, N, V, S |
1 |
||||
|
|
|
через флаг переноса |
|
|
Rd(n + 1), C |
|
||||||||||
|
|
|
|
|
|
|
Rd(0) |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
ASR |
|
Rd |
|
Арифметический сдвиг впра- |
|
Rd(n) |
Rd(n + 1), |
|
Z, C, N, V, S |
1 |
||||||
|
|
|
во |
|
|
|
|
n = 0...6 |
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
SWAP |
|
Rd |
|
Поменять |
нибблы |
местами |
|
Rd(3...0) |
Rd(7...4), |
|
Нет |
1 |
||||
|
|
|
(перестановка тетрад) |
|
Rd(7...4) Rd(3...0) |
|
|||||||||||
|
|
|
|
|
|
|
|
|
|||||||||
|
BSET |
|
s |
|
Установить флаг в |
регистре |
|
SREG(s) |
1 |
|
|
SREG(s) |
1 |
||||
|
|
|
|
|
состояния SREG |
|
|
|
|
|
|
|
|
|
|
||
|
BCLR |
|
s |
|
Сбросить флаг в регистре со- |
|
SREG(s) |
0 |
|
|
SREG(s) |
1 |
|||||
|
|
|
|
|
стояния SREG |
|
|
|
|
|
|
|
|
|
|
||
|
SBI |
|
I/O, b |
|
Установить разряд в регистре |
|
I/O(b) |
1 |
|
|
|
Нет |
2 |
||||
|
|
|
|
|
ввода-вывода |
|
|
|
|
|
|
|
|
|
|
|
|
|
CBI |
|
I/O, b |
|
Сбросить |
разряд в |
регистре |
|
I/O(b) |
0 |
|
|
|
Нет |
2 |
||
|
|
|
|
|
ввода-вывода |
|
|
|
|
|
|
|
|
|
|
|
|
|
BST |
|
Rr, b |
|
Сохранить |
разряд |
РОН во |
|
T |
Rr(b) |
|
|
|
T |
1 |
||
|
|
|
флаге T |
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BLD |
|
Rd, b |
|
Загрузить разряд из флага T в |
|
Rd(b) |
T |
|
|
|
Нет |
1 |
||||
|
|
|
РОН |
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SEC |
|
Нет |
|
Установить флаг переноса |
|
C |
1 |
|
|
|
|
C |
1 |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
21 |
|
CLC |
|
Нет |
|
Сбросить флаг переноса |
|
C |
0 |
|
C |
1 |
||
|
SEN |
|
Нет |
|
Установить флаг отрицатель- |
|
N |
1 |
|
N |
1 |
||
|
|
|
|
|
ного числа |
|
|
|
|
|
|
|
|
|
CLN |
|
Нет |
|
Сбросить флаг отрицательно- |
|
N |
0 |
|
N |
1 |
||
|
|
|
|
|
го числа |
|
|
|
|
|
|
|
|
|
SEZ |
|
Нет |
|
Установить флаг нуля |
|
Z |
1 |
|
Z |
1 |
||
|
CLZ |
|
Нет |
|
Сбросить флага нуля |
|
Z |
0 |
|
Z |
1 |
||
|
SEI |
|
Нет |
|
Установить флаг разрешения |
|
I |
1 |
|
I |
1 |
||
|
|
|
|
|
прерываний |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
2 |
|
|
3 |
|
|
|
4 |
|
5 |
6 |
|
CLI |
|
Нет |
|
Сбросить |
флаг |
разрешения |
|
I |
0 |
|
I |
1 |
|
|
|
|
|
прерываний |
|
|
|
|
|
|
|
|
|
SES |
|
Нет |
|
Установить |
флаг |
числа со |
|
S |
1 |
|
S |
1 |
|
|
|
знаком |
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CLS |
|
Нет |
|
Сбросить флаг числа со зна- |
|
S |
0 |
|
S |
1 |
||
|
|
|
|
|
ком |
|
|
|
|
|
|
|
|
|
SEV |
|
Нет |
|
Установить |
флаг |
переполне- |
|
V |
1 |
|
V |
1 |
|
|
|
|
|
ния |
|
|
|
|
|
|
|
|
|
CLV |
|
Нет |
|
Сбросить флаг переполнения |
|
V |
0 |
|
V |
1 |
||
|
SET |
|
Нет |
|
Установить флаг T |
|
T |
1 |
|
T |
1 |
||
|
CLT |
|
Нет |
|
Сбросить флаг T |
|
|
T |
0 |
|
T |
1 |
|
|
SEH |
|
Нет |
|
Установить флаг внутреннего |
|
H |
1 |
|
H |
1 |
||
|
|
|
|
|
переноса |
|
|
|
|
|
|
|
|
|
CLH |
|
Нет |
|
Сбросить флаг внутреннего |
|
H |
0 |
|
H |
1 |
||
|
|
|
|
|
переноса |
|
|
|
|
|
|
|
|
|
NOP |
|
Нет |
|
Нет операции |
|
|
Нет |
|
|
Нет |
1 |
|
|
|
|
|
|
|
|
|
|
См. описание кон- |
|
|
|
|
|
BREAK |
|
Нет |
|
Сброс |
|
|
|
кретного микрокон- |
|
Нет |
1 |
|
|
|
|
|
|
|
|
|
|
троллера |
|
|
|
|
|
|
|
|
|
Уменьшить |
энергопотребле- |
|
См. описание кон- |
|
|
|
||
|
SLEEP |
|
Нет |
|
|
кретного микрокон- |
|
Нет |
1 |
||||
|
|
|
|
|
ние |
|
|
|
троллера |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
См. описание кон- |
|
|
|
|
|
WDR |
|
Нет |
|
Сбросить сторожевой таймер |
|
кретного микрокон- |
|
Нет |
1 |
|||
|
|
|
|
|
|
|
|
|
троллера |
|
|
|
|
|
Условные обозначения: |
|
|
|
|
|
|
|
|||||
|
Rd – результирующий (destination) и исходный РОН; |
|
|
|
|||||||||
|
Rr – исходный (source) РОН; |
|
|
|
|
|
|
|
|||||
|
I/O – регистр ввода-вывода; |
|
|
|
|
|
|
|
|||||
|
b – разряд в регистре общего назначения или регистре ввода-вывода; |
|
s – разряд (флаг) в регистре состояния SREG;
Rdl – регистры R24, R26, R28, R30;
X, Y, Z – регистры-указатели для косвенной адресации (X = R27:R26, Y = R29:R28,
Z = R31:R30);
RAMPX, RAMPY, RAMPZ – регистры, связанные с регистрами-указателями X, Y и Z и
обеспечивающие косвенную адресацию по всему объёму памяти данных (при размере па-
мяти данных более 64 Кбайт) и доступ к размещённым в памяти программ константам в микроконтроллерах с размером памяти программ более 64 Кбайт;
РС – программный счѐтчик (Program Counter);
STACK – стек для хранения адресов возврата и содержимого регистров;
SP – указатель стека (Stack Pointer);
EIND – регистр, связанный с программным счётчиком и обеспечивающий косвенную адресацию по всему объёму памяти программ для микроконтроллеров с размером памяти программ более 64 Кбайт;
K6 – константа (6 разрядов), может быть константное выражение;
K8 – константа (8 разрядов), может быть константное выражение;
k – адресная константа для программного счѐтчика (размер зависит от команды); q – смещение при косвенной адресации (6 разрядов).
Разряды регистра состояния SREG: C – флаг переноса;
Z – флаг нулевого значения;
N – флаг отрицательного значения;
V – флаг переполнения;
S = N V – флаг для проверок со знаком при переполнении;
H – флаг полупереноса (переноса между третьим и четвѐртым разрядами байта);
T – флаг для команд пересылки;
I – флаг глобального разрешения (запрещения) прерываний.
Примечания: 1. Транслятор с языка ассемблера AVR-микроконтроллеров не различает
регистр символов.
2. Мнемокоды ANDI и CBR а также ORI и SBR транслируются в один и тот же машин-
ный код. Выбор между ними производится в зависимости от контекста программы.
3. Длительность выполнения команд условных переходов составляет 1 такт, если усло-
вие ложно (переход не производится), и 2 (3) такта (в зависимости от величины смещения),
если соответствующее условие истинно (производится переход).
4. Для команд доступа к данным длительность выполнения указана при обращении к внутренней оперативной памяти данных.
23
ПРИЛОЖЕНИЕ 3
Директивы ассемблера микроконтроллеров семейства AVR
Директива |
Описание |
|
|
.byte |
Зарезервировать байты в оперативной памяти данных |
|
|
.cseg |
Сегмент программы |
|
|
.db |
Определить (задать) байты в памяти программ или энергонеза- |
|
|
|
висимой памяти данных |
|
|
.def |
Назначить регистру общего назначения символическое имя |
|
|
.device |
Определить устройство, для которого транслируется программа |
|
|
.dseg |
Сегмент данных |
|
|
.dw |
Определить (задать) слова в памяти программ или энергонеза- |
|
|
|
висимой памяти данных |
|
|
.endm, .endmacro |
Конец макроса |
|
|
.equ |
Установить постоянное выражение |
|
|
.eseg |
Сегмент энергонезависимой памяти данных |
|
|
.exit |
Выйти из файла |
|
|
.include |
Вложить другой файл |
|
|
.list |
Включить генерацию листинга |
|
|
.listmac |
Включить разворачивание макросов в листинге |
|
|
.macro |
Начало макроса |
|
|
.nolist |
Выключить генерацию листинга |
|
|
.org |
Установить положение в сегменте |
|
|
.set |
Установить переменный символический эквивалент выражения |
|
|
СПИСОК ЛИТЕРАТУРЫ
Бродин В. Б., Калинин А. В. Системы на микроконтроллерах и БИС программируемой логики. – М.: Эком, 2002. – 400 с.
Виды программ и программных документов: ГОСТ 19.101–77. – Введ. 01.01.80. – М.:
1993. – 6 с. – (Единая система программной документации).
Дианова Р. С. Лабораторные работы по курсу «Микропроцессорные измерительные системы». – М.: Изд-во МАИ, 1995. – 44 с.
Дианова Р. С. Программирование микропроцессорных измерительных систем: Учебное пособие для лабораторных и практических занятий. – М.: Изд-во МАИ, 1993. – 60 с.
Каган Б. М., Сташин В. В. Основы проектирования микропроцессорных устройств автоматики. – М.: Энергоатомиздат, 1987. – 304 с.
Калабеков Б. А. Цифровые устройства и микропроцессорные системы. – М.: Горячая
линия – Телеком, 2000. – 336 с.
Королёв Н., Королёв Д. AVR-микроконтроллеры: программные средства// Компоненты и технологии. – 2000. – № 4.
Олссон Г., Пиани Д. Цифровые системы автоматизации и управления. – СПб.: Невский Диалект, 2001. – 557 с.
Микроконтроллеры фирмы Atmel семейства AVR: Справочник. – 2-е изд. – М.: КТЦ-МК,
1999. – 300 с.
Предко М. Руководство по микроконтроллерам: Пер. с англ. В 2-х т.– М.: Постмаркет,
2001 – т. 1 – 416 с., 2001 – т. 2 – 488 с.
Современные микроконтроллеры: архитектура, средства проектирования, примеры применения, ресурсы сети Интернет / Под ред. И. В. Коршуна. – М.: Аким, 1998. – 272 с.
Солонина А. И., Улахович Д. А., Яковлев Л. А. Алгоритмы и процессоры цифровой обработки сигналов. – СПб.: БХВ-Петербург, 2001. – 464 с.
Сташин В. В., Урусов А. В., Мологонцева О. Ф. Проектирование цифровых устройств на однокристальных микроконтроллерах. – М.: Энергоатомиздат, 1990. – 224 с.
Схемы алгоритмов, программ, данных и систем. Условные обозначения и правила выполнения: ГОСТ 19.701–90. – Введ. 01.01.92. – М.: 1991. – 26 с. – (Единая система программной документации).
Угрюмов Е. П. Цифровая схемотехника. – СПб.: БХВ-Петербург, 2001. – 528 с.
25
Фрунзе А. В. Микроконтроллеры? Это же просто! – М.: ИД Скимен, 2002. – 336 с. (т. 1);
392 с. (т. 2).
ATmega8535 8-bit AVR Microcontroller with 8K bytes In-System Programmable
Flash. – San Jose: Atmel Inc., 2003. – 317 p.
Atmel AVR devices//Atmel Applications Journal. – 2003. – № 1.
AVR Microcontrollers Selection Guide. – San Jose: Atmel Inc., 2003.
Fries R. G. Designing with Atmel’s Flash RISC microcontrollers//Embedded System Programming. –1997. – Vol. 10, № 12.
Turley J. Atmel AVR brings RISC to 8-bit world//Microprocessor Report. – 1997. – Vol. 11, № 9.
8-bit AVR Instruction Set. – San Jose: Atmel Inc., 2002. – 149 p.