Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ПАСМС LW3_MC

.pdf
Скачиваний:
13
Добавлен:
30.03.2015
Размер:
1.12 Mб
Скачать

 

 

грамм с постинкрементом

 

 

 

 

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.