В HTML      В PDF
микроэлектроника, микросхема, транзистор, диод, микроконтроллер, память, msp430, Atmel, Maxim, LCD, hd44780, t6963, sed1335, avr, mega128
Предприятия Компоненты Документация Применения Статьи Новости

 
Пересюхтюмя


13-я Международная выставка электронных компонентов и комплектующих для электронной промышленности





Выставка Передовые Технологии Автоматизации





Главная страница > Обзоры по типам > Микроконтроллеры > AVR
Пересюхтюмя


13-я Международная выставка электронных компонентов и комплектующих для электронной промышленности





Выставка Передовые Технологии Автоматизации


32. Краткое описание набора инструкций

Мнемокод Операнды Описание Операция Флаги Кол.-во циклов
Арифметические и логические инструкции
ADD Rd, Rr Сложение без учета переноса Rd Rd+Rr Z, C, N, V, S, H 1
ADC Rd, Rr Сложение с учетом переноса Rd Rd+Rr+C Z, C, N, V, S, H 1
ADIW Rd, K Сложение слова с константой Rd Rd+1:Rd+K Z, C, N, V, S 2
SUB Rd, Rr Вычитание без учета переноса Rd Rd-Rr Z, C, N, V, S, H 1
SUBI Rd, K Вычитание константы Rd Rd-K Z, C, N, V, S, H 1
SBC Rd, Rr Вычитание с учетом переноса Rd Rd-Rr-C Z, C, N, V, S, H 1
SBCI Rd, K Вычитание константы с учетом переноса Rd Rd-K-C Z, C, N, V, S, H 1
SBIW Rd, K Вычитание константы из слова Rd+1:Rd Rd+1:Rd-K Z, C, N, V, S 2
AND Rd, Rr Логическое И Rd Rd·Rr Z, N, V, S 1
ANDI Rd, K Логическое И с константой Rd Rd·K Z, N, V, S 1
OR Rd, Rr Логическое ИЛИ Rd Rd v Rr Z, N, V, S 1
ORI Rd, K Логическое ИЛИ с константой Rd Rd v K Z, N, V, S 1
EOR Rd, Rr Исключающее ИЛИ Rd Rd Rr Z, N, V, S 1
COM Rd Дополнение до единицы Rd $FF-Rd Z, C, N, V, S 1
NEG Rd Дополнение до двух Rd $00-Rd Z, C, N, V, S, H 1
SBR Rd, K Установка бита (бит) регистра Rd Rd v K Z, N, V, S 1
CBR Rd, K Сброс бита (бит) регистра Rd Rd·($FF-K) Z, N, V, S 1
INC Rd Инкремент Rd Rd+1 Z, N, V, S 1
DEC Rd Декремент Rd Rd-1 Z, N, V, S 1
TST Rd Проверка на ноль или минус Rd Rd·Rd Z, N, V, S 1
CLR Rd Сброс регистра Rd Rd Rd Z, N, V, S 1
SER Rd Установка регистра Rd $FF Нет 1
MUL Rd, Rr Умножение беззнаковых чисел R1:R0 Rd x Rr (UU) Z, C 2
MULS Rd, Rr Умножение знаковых чисел R1:R0 Rd x Rr (SS) Z, C 2
MULSU Rd, Rr Умножение знакового числа на беззнаковое R1:R0 Rd x Rr (SU) Z, C 2
FMUL Rd, Rr Дробное умножение беззнаковых чисел R1:R0 Rd x Rr<<1 (UU) Z, C 2
FMULS Rd, Rr Дробное умножение знаковых чисел R1:R0 Rd x Rr<<1 (SS) Z, C 2
FMULSU Rd, Rr Дробное умножение знакового числа на беззнаковое R1:R0 Rd x Rr<<1 (SU) Z, C 2
DES K Шифрование данных R15:R0 ENCRYPT(R15:R0,K), если H=0,
R15:R0 DECRYPT(R15:R0,K), если H=1
  1/2
Инструкции перехода
RJMP k Относительный переход PC PC+k+1 Нет 2
IJMP   Косвенный переход по Z-указателю PC(15:0) Z
PC(21:16) 0
Нет 2
EIJMP   Расширенный косвенный переход по Z-указателю PC(15:0) Z
PC(21:16) EIND
Нет 2
JMP k Переход PC k Нет 3
RCALL k Относительный вызов подпрограммы PC PC+k+1 Нет 2/3(1)
ICALL   Косвенный вызов подпрограммы по Z-указателю PC(15:0) Z
PC(21:16) 0
Нет 2/3(1)
EICALL   Расширенный косвенный вызов подпрограммы по Z-указателю PC(15:0) Z
PC(21:16) EIND
Нет 3(1)
CALL k Вызов подпрограммы PC k Нет 3/4(1)
RET   Выход из подпрограммы PC STACK Нет 4/5(1)
RETI   Выход из процедуры обработки прерывания PC STACK I 4/5(1)
CPSE Rd, Rr Сравнение и пропуск, если равно PC PC+2 или 3, если Rd=Rr Нет 1/2/3
CP Rd, Rr Сравнение Rd-Rr Z, C, N, V, S, H 1
CPC Rd, Rr Сравнение с переносом Rd-Rr-C Z, C, N, V, S, H 1
CPI Rd, K Сравнение с константой Rd-K Z, C, N, V, S, H 1
SBRC Rr,b Пропуск, если бит регистра равен нулю PC PC+2 или 3, если Rr(b)=0 Нет 1/2/3
SBRS Rr,b Пропуск, если бит регистра равен единице PC PC+2 или 3, если Rr(b)=1 Нет 1/2/3
SBIC A, b Пропуск, если бит регистра в/в равен нулю PC PC+2 или 3, если I/O(A, b)=0 Нет 2/3/4
SBIS A, b Пропуск, если бит регистра в/в равен единице PC PC+2 или 3, если I/O(A, b)=1 Нет 2/3/4
BRBS s, k Переход, если флаг статуса равен единице PC PC+k+1, если SREG(s) = 1 Нет 1/2
BRBC s, k Переход, если флаг статуса равен нулю PC PC+k+1, если SREG(s) = 0 Нет 1/2
BREQ k Переход, если равно PC PC+k+1, если Z = 1 Нет 1/2
BRNE k Переход, если не равно PC PC+k+1, если Z = 0 Нет 1/2
BRCS k Переход, если флаг переноса равен единице PC PC+k+1, если C = 1 Нет 1/2
BRCC k Переход, если флаг переноса равен нулю PC PC+k+1, если C = 0 Нет 1/2
BRSH k Переход, если больше или равно PC PC+k+1, если C = 0 Нет 1/2
BRLO k Переход, если меньше PC PC+k+1, если C = 1 Нет 1/2
BRMI k Переход, если минус PC PC+k+1, если N = 1 Нет 1/2
BRPL k Переход, если плюс PC PC+k+1, если N = 0 Нет 1/2
BRGE k Переход, если больше или равно с учетом знака PC PC+k+1, если N V = 0 Нет 1/2
BRLT k Переход, если меньше с учетом знака PC PC+k+1, если N V = 1 Нет 1/2
BRHS k Переход, если установлен флаг полупереноса PC PC+k+1, если H = 1 Нет 1/2
BRHC k Переход, если сброшен флаг полупереноса PC PC+k+1, если H = 0 Нет 1/2
BRTS k Переход, если установлен флаг Т PC PC+k+1, если Т = 1 Нет 1/2
BRTC k Переход, если сброшен флаг Т PC PC+k+1, если Т = 0 Нет 1/2
BRVS k Переход, если установлен флаг переполнения PC PC+k+1, если V = 1 Нет 1/2
BRVC k Переход, если сброшен флаг переполнения PC PC+k+1, если V = 0 Нет 1/2
BRIE k Переход, если прерывания разрешены PC PC+k+1, если I = 1 Нет 1/2
BRID k Переход, если прерывания запрещены PC PC+k+1, если I = 0 Нет 1/2
Инструкции передачи данных
MOV Rd, Rr Копирование регистра Rd Rr Нет 1
MOVW Rd, Rr Копирование регистровой пары Rd+1:Rd Rr+1:Rr Нет 1
LDI Rd, K Запись константы в регистр Rd K Нет 1
LDS Rd, k Прямое чтение из памяти данных в регистр Rd (k) Нет 2(1)(2)
LD Rd, X Косвенное чтение Rd (X) Нет 1(1)(2)
LD Rd, X+ Косвенное чтение с последующим инкрементом Rd (X)
X X+1
Нет 1(1)(2)
LD Rd, -X Косвенное чтение с предварительным декрементом X X-1 X-1
Rd X (X)
Нет 2(1)(2)
LD Rd, Y Косвенное чтение Rd (Y) Нет 1(1)(2)
LD Rd, Y+ Косвенное чтение с последующим инкрементом Rd (Y)
Y Y+1
Нет 1(1)(2)
LD Rd, -Y Косвенное чтение с предварительным декрементом Y Y-1 Y-1
Rd Y (Y)
Нет 2(1)(2)
LDD Rd,Y+q Косвенное чтение со смещением Rd (Y+q) Нет 2(1)(2)
LD Rd, Z Косвенное чтение Rd (Z) Нет 1(1)(2)
LD Rd, Z+ Косвенное чтение с последующим инкрементом Rd (Z)
Z Z+1
Нет 1(1)(2)
LD Rd, -Z Косвенное чтение с предварительным декрементом Z Z-1 Z-1
Rd Z (Z)
Нет 2(1)(2)
LDD Rd, Z+q Косвенное чтение со смещением Rd (Z+q) Нет 2(1)(2)
STS k, Rr Прямая запись в память данных (k) Rr Нет 2(1)
ST X, Rr Косвенная запись (X) Rr Нет 1(1)
ST X+, Rr Косвенная запись с последующим инкрементом (X) Rr
X X+1
Нет 1(1)
ST -X, Rr Косвенная запись с предварительным декрементом X X-1
(X) Rr
Нет 2(1)
ST Y, Rr Косвенная запись (Y) Rr Нет 1(1)
ST Y+, Rr Косвенная запись с последующим инкрементом (Y) Rr
Y Y+1
Нет 1(1)
ST -Y, Rr Косвенная запись с предварительным декрементом Y Y-1
(Y) Rr
Нет 2(1)
STD Y+q, Rr Косвенная запись со смещением (Y+q) Rr Нет 2(1)
ST Z, Rr Косвенная запись (Z) Rr Нет 1(1)
ST Z+, Rr Косвенная запись с последующим инкрементом (Z) Rr
Z Z+1
Нет 1(1)
ST -Z, Rr Косвенная запись с предварительным декрементом Z Z-1
(Z) Rr
Нет 2(1)
STD Z+q, Rr Косвенная запись со смещением (Z+q) Rr Нет 2(1)
LPM   Чтение памяти программ R0 (Z) Нет 3
LPM Rd, Z Чтение памяти программ Rd (Z) Нет 3
LPM Rd, Z+ Чтение памяти программ с последующим инкрементом Rd (Z)
Z Z+1
Нет 3
ELPM Rd, Z Расширенное чтение памяти программ Rd (RAMPZ:Z) Нет 3
ELPM Rd, Z+ Расширенное чтение памяти программ с последующим инкрементированием Rd (RAMPZ:Z)
Z Z+1
Нет 3
SPM   Запись в память программ (RAMPZ:Z) R1:R0 Нет -
SPM Z+ Запись в память программ с последующим инкрементированием на 2 (RAMPZ:Z) R1:R0
Z Z+2
Нет -
IN Rd, A Чтение памяти ввода-вывода Rd I/O(A) Нет 1
OUT A, Rr Запись в память ввода-вывода I/O(A) Rr Нет 1
PUSH Rr Поместить регистр в стек STACK Rr Нет 1(1)
POP Rd Извлечение регистра из стека Rd STACK Нет 2(1)
Операции над битами
LSL Rd Логический сдвиг влево Rd(n+1) Rd(n)
Rd(0) 0
C Rd(7)
Z, C, N, V, H 1
LSR1 Rd Логический сдвиг вправо Rd(n) Rd(n+1)
Rd(7) 0
C Rd(0)
Z, C, N, V 1
ROL Rd Циклический сдвиг влево через перенос Rd(0) C
Rd(n+1) Rd(n)
C Rd(7)
Z, C, N, V, H 1
ROR Rd Циклический сдвиг вправо через перенос Rd(7) C
Rd(n) Rd(n+1)
C Rd(0)
Z, C, N, V 1
ASR Rd Арифметический сдвиг вправо Rd(n) Rd(n+1), n=0…6 Z, C, N, V 1
SWAP Rd Обмен тетрад Rd(3…0) Rd(7…4) Нет 1
BSET s Установка флага SREG(s) 1 SREG(s) 1
BCLR s Сброс флага SREG(s) 0 SREG(s) 1
SBI A, b Установка бита в регистре ввода-вывода I/O(A, b) 1 Нет 1
CBI A, b Сброс бита в регистре ввода-вывода I/O(A, b) 0 Нет 1
BST Rr, b Запись бита регистра в бит Т T Rr(b) Т 1
BLD Rd, b Чтение бита Т в бит регистра Rr(b) T Нет 1
SEC   Установка флага переноса C 1 C 1
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
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   Установка бита Т в SREG T 1 T 1
CLT   Сброс бита Т в SREG T 0 T 1
SEH   Установка флага полупереноса в SREG H 1 H 1
CLH   Сброс флага полупереноса в SREG H 0 H 1
Инструкции управления микроконтроллером
BREAK   Останов (см. описание набора инструкций) Нет 1
NOP   Нет операции   Нет 1
SLEEP   Переход в экономичный режим работы (см. описание набора инструкций) Нет 1
WDR   Сброс сторожевого таймера (см. описание набора инструкций) Нет 1

Прим.:

  1. Указанное количество циклов распространяется только на доступ к внутренней памяти и не действительно для доступов, выполняющихся через интерфейс внешней памяти.
  2. На доступ к внутреннему SRAM требуется один дополнительный цикл.


<-- Предыдущая страница Оглавление Следующая страница -->