Разделы

В сети

Пользователей: 192
Из них просматривают:
Аналоги: 83. Видео: 1. Даташиты: 82. Новости: 9. Обзор: 1. Остальное: 3. Производители: 2. Расчёты: 1. Форум: 10.
Участников: 1
Гостей: 191

Google , далее...
Рекорд 2375 человек онлайн установлен 26.12.2015.

Партнёры


Партнёры

Новые объявления

В настоящее время нет объявлений.

ATmega128. Набор инструкций

Написал MACTEP 31.03.2010 1:10:00 (Просмотров: 6476)

Набор инструкций



 

Мнемокод Операнды Описание Действие Флаги Кол. машинных циклов
Арифметические и логические инструкции
ADD1 Rd, Rr Сложить два регистра Rd <— Rd + Rr Z,C,N,V,H 1
ADC Rd, Rr Сложить два регистра с переносом Rd <— Rd + Rr + C Z,C,N,V,H 1
ADIW Rdl,K Сложить слово с константой Rdh:Rdl <— Rdh:Rdl + K Z,C,N,V,S 2
SUB Rd, Rr Вычесть два регистра Rd <— Rd - Rr Z,C,N,V,H 1
SUBI Rd, K Вычесть константу из регистра Rd <— Rd - K Z,C,N,V,H 1
SBC Rd, Rr Вычесть два регистра с учетом переноса Rd <— Rd - Rr - C Z,C,N,V,H 1
SBCI Rd, K Вычесть константу из регистра с учетом переноса Rd <— Rd - K - C Z,C,N,V,H 1
SBIW Rdl,K Вычесть константу из слова Rdh:Rdl <— Rdh:Rdl-K Z,C,N,V,S 2
AND Rd, Rr Логическое И между регистрами Rd <— Rd · Rr Z,N,V 1
ANDI Rd, K Логическое И между регистром и константой Rd <— Rd · K Z,N,V 1
OR Rd, Rr Логическое ИЛИ между регистрами Rd <— Rd v Rr Z,N,V 1
ORI Rd, K Логическое ИЛИ между регистром и константой Rd <— Rd v K Z,N,V 1
EOR Rd, Rr Искл. ИЛИ между регистрами Rd <— Rd Е Rr Z,N,V 1
COM Rd Дополнение до 0b11111111 ($FF), инверсия Rd <— $FF - Rd Z,C,N,V 1
NEG Rd Дополнение до 0b00000000 ($00) Rd <— $00 - Rd Z,C,N,V,H 1
SBR Rd, K Установка бит (бита) в регистре Rd <— Rd v K Z,N,V 1
CBR Rd, K Сброс бит (бита) в регистре Rd <— Rd · ($FF - K) Z,N,V 1
INC Rd Инкремент Rd <— Rd + 1 Z,N,V 1
DEC Rd Декремент Rd <— Rd - 1 Z,N,V 1
TST Rd Проверка на ноль или минус Rd <— Rd . Rd Z,N,V 1
CLR Rd Сброс регистра Rd <— Rd Е Rd Z,N,V 1
SER Rd Установка регистра Rd <— $FF Нет 1
MUL Rd, Rr Умножение без знака R1:R0 <— RdxRr Z, C 2
MULS Rd, Rr Умножение со знаком R1:R0 <— RdxRr Z, C 2
MULSU Rd, Rr Умножение знакового с беззнаковым числом R1:R0 <— Rd x Rr Z, C 2
FMUL Rd. Rr Дробное умножение без знака R1:R0 <— (RdxRr) << 1 Z, C 2
FMULS Rd, Rr Дробное умножение со знаком R1:R0 <— (RdxRr) << 1 Z, C 2
FMULSU Rd, Rr Дробное умножение знакового с беззнаковым числом R1:R0 <— (RdxRr) << 1 Z, C 2
Инструкции перехода
RJMP k Относительный переход PC <— PC + k +1 Нет 2
IJMP   Косвенный переход по указателю (Z) PC <— Z Нет 2
JMP k Безусловный переход PC <— k Нет 3
RCALL k Относительный вызов процедуры PC <— PC + k + 1 Нет 3
ICALL   Косвенный вызов процедуры по указателю (Z) PC <— Z Нет 3
CALL k Безусловный вызов процедуры PC <— k Нет 4
RET   Возврат из подпрограммы PC <— STACK Нет 4
RETI   Возврат из прерывания PC <— STACK I 4
CPSE Rd,Rr Сравнение и пропуск, если равно if (Rd = Rr) PC <— PC + 2 или 3 Нет 1/2/3
CP Rd,Rr Сравнение Rd-Rr Z, N,V,C,H 1
CPC Rd,Rr Сравнение с учетом переноса Rd - Rr-C Z, N,V,C,H 1
CPI Rd,K Сравнение регистра с константой Rd-K Z, N,V,C,H 1
SBRC Rr,b Пропуск, если бит в регистре сброшен if (Rr(b)=O)PC <— PC + 2 или 3 Нет 1 /2/3
SBRS Rr, b Пропуск, если бит в регистре установлен if (Rr(b)=1)PC <— PC+ 2 или 3 Нет 1/2/3
SBIC P, b Пропуск, если бит в регистре ввода-вывода сброшен if (P(b)=O)PC <— PC + 2 или 3 Нет 1 /2/3
SBIS P, b Пропуск, если бит в регистре ввода-вывода установлен if (P(b)=1)PC <— PC + 2 или 3 Нет 1 /2/3
BRBS s, k Переход, если флаг состояния установлен if (SREG(s) = 1) then PC <— PC+k + 1 Нет 1/2
BRBC s, k Переход, если флаг состояния сброшен if (SREG(s) = 0) then PC <— PC+k + 1 Нет 1 /2
BREQ k Переход, если равно if (Z = 1) then PC <— PC + k + 1 Нет 1 /2
BRNE k Переход, если не равно if (Z = 0) then PC <— PC + k + 1 Нет 1 /2
BRCS k Переход, если перенос установлен if (C = 1)then PC <— PC + k+ 1 Нет 1 /2
BRCC k Переход, если перенос сброшен if (C = 0) then PC <— PC + k + 1 Нет 1 /2
BRSH k Переход, если больше или равно if (C = 0) then PC <— PC + k + 1 Нет 1 /2
BRLO k Переход, если меньше if (C = 1) then PC <— PC + k+ 1 Нет 1 /2
BRMI k Переход, если минус if (N = 1)then PC <— PC + k + 1 Нет 1 /2
BRPL k Переход, если плюс if (N = 0) then PC <— PC + k + 1 Нет 1 /2
BRGE k Переход, если больше или равно с учетом знака if (N e V= 0) then PC <— PC + k + 1 Нет 1 /2
BRLT k Переход, если меньше нуля с учетом знака if (N e V= 1) then PC <— PC + k + 1 Нет 1 /2
BRHS k Переход, если флаг Н установлен if (H = 1)then PC <— PC + k + 1 Нет 1 /2
BRHC k Переход, если флаг Н сброшен if (H = 0) then PC <— PC + k + 1 Нет 1 /2
BRTS k Переход, если флаг Т установлен if (T = 1)then PC <— PC + k +1 Нет 1 /2
BRTC k Переход, если флаг Т сброшен if (T = 0) then PC <— PC + k + 1 Нет 1 /2
BRVS k Переход, если флаг V установлен if (V = 1)then PC <— PC + k+ 1 Нет 1 /2
BRVC k Переход, если флаг V сброшен if (V = 0) then PC <— PC + k + 1 Нет 1 /2
BRIE k Переход, если прерывания разрешены if ( I = 1)then PC <— PC + k + 1 Нет 1 /2
BRID k Переход, если прерывания запрещены if ( I = 0) then PC <— PC + k + 1 Нет 1 /2
Инструкции передачи данных
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
LDD 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
LDD 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
STD 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
STD 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+ Чтение из памяти программ и последующий инкремент Rd <— (Z), Z <— Z+1 Нет 3
ELPM   Расширенное чтение из памяти программ R0 <— (RAMPZ:Z) Нет 3
ELPM Rd, Z Расширенное чтение из памяти программ Rd <— (RAMPZ:Z) Нет 3
ELPM Rd, Z+ Расширенное чтение из памяти программ и последующие инкремент Rd <— (RAMPZ:Z), RAMPZ:Z <— RAMPZ:Z+1 Нет 3
SPM   Запись в память программ (Z) <— R1 :R0 Нет -
IN Rd, P Считывание из порта ввода-вывода в регистр Rd <— P Нет 1
OUT P, Rr Запись из регистра в порт ввода-вывода P <— Rd Нет 1
PUSH Rr Помещение содержимого регистра в стек STACK <— Rr Нет 2
POP Rd Извлечение из стека в регистр Rd <— STACK Нет 2
Битовые инструкции и инструкции тестирования бит
SBI P,b Установка бита в регистре ввода-вывода l/O(P,b) <— 1 Нет 2
CBI P,b Сброс бита в регистре ввода-вывода l/O(P,b) <— 0 Нет 2
LSL Rd Логический сдвиг влево Rd(n+1) <— Rd(n), Rd(0) <— 0 Z,C,N,V 1
LSR Rd Логический сдвиг вправо Rd(n) <— Rd(n+1), Rd(7) <— 0 Z,C,N,V 1
ROL Rd Вращение влево через перенос Rd(0)<— C,Rd(n+1)<— Rd(n),C <— Rd(7) Z,C,N,V 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), Rd(7..4) <— Rd(3..0) Нет 1
BSET s Установка флага регистра SREG SREG(s) <— 1 SREG(s) 1
BCLR s Сброс флага регистра SREG SREG(s) <— 0 SREG(s) 1
BST Rr, b Запись бита регистра в T T <— Rr(b) T 1
BLD Rd, b Чтение из T в бит регистра Rd(b) <— T Нет 1
SEC   Установка переноса C <— 1 C 1
CLC   Сброс переноса C <— 0 C 1
SEN   Установка флага N N <— 1 N 1
CLN   Сброс флага N N <— 0 N 1
SEZ   Установка флага нуля Z Z <— 1 Z 1
CLZ   Сброс флага нуля Z Z <— 0 Z 1
SEI   Общее разрешение прерываний l<— 1 I 1
CLI   Общий запрет прерываний l <— 0 I 1
SES   Установка флага S S <— 1 S 1
CLS   Сброс флага S S <— 0 S 1
SEV   Установка флага V в регистре SREG V <— 1 V 1
CLV   Сброс флага V в регистре SREG V <— 0 V 1
SET   Установка флага T в регистре SREG T <— 1 T 1
CLT   Сброс флага T в регистре SREG T <— 0 T 1
SEH   Установка флага Н в регистре SREG H <— 1 H 1
CLH   Сброс флага Н в регистре SREG H <— 0 H 1
Инструкции управления микроконтроллером
NOP   Нет операции   Нет 1
SLEEP   Перевод в режим сна (см. подробное описание режима сна) Нет 1
WDR   Сброс сторожевого таймера (см. подробное описание сторожевого таймера) Нет 1
BREAK   Прерывание Только для встроенной отладки Нет -
4

Теги:

Комментарии принадлежат их авторам. Мы не несем ответственности за их содержание.

Разное

Интересно

Крупную деталь можно паять и обычным паяльником (25-40 Вт), если разогреть ее, например, на газовой плите.

Похожие статьи