Смекни!
smekni.com

AVR микроконтроллер AT90S2333 фирмы Atmel (стр. 21 из 22)

Набор команд

Мнемоника

Операнды

Описание

Действие

Флаги

Цкл

Арифметические команды

ADD

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,l<Rdh,l+K

Z,C,N,V,S

2

SUB

Rd, Rr

Вычесть два регистра

Rd<Rd-Rr

SUBI

Rd, K

Вычесть константу

Rd<Rd-K

SBIW

Rdl,K

Вычесть слово с константой

Rdh,l<Rdh,l-K

SBC

Rd, Rr

Вычесть с переносом

Rd<Rd-Rr-C

SBCI

Rd, K

Вычесть с переносом

Rd<Rd-K-C

AND

Rd, Rr

Логическое И

Rd<Rd AND Rr

ANDI

Rd, K

Логическое И

Rd<Rd AND K

OR

Rd, Rr

Логическое ИЛИ

Rd<Rd OR Rr

ORI

Rd, K

Логическое ИЛИ

Rd<Rd OR K

Z,N,V

1

EOR

Rd, Rr

Исключающее ИЛИ

Rd<Rd XOR Rr

Z,N,V

1

COM

Rd

Дополнение до 1

Rd<$FF - Rd

Z,C,N,V

1

NEG

Rd

Дополнение до 2

Rd<$00 - Rd

Z,C,N,V,H

1

SBR

Rd,K

Установ. бита в регистре

Rd<Rd OR K

Z,N,V

1

CBR

Rd,K

Сброс. бита в регистре

Rd<RdAND(FFh-K)

Z,N,V

1

INC

Rd

Увеличить на 1

Rd<Rd+1

Z,N,V

1

DEC

Rd

Уменьшить на 1

Rd<Rd-1

Z,N,V

1

TST

Rd

Проверить на 0 или 1

Rd<Rd AND Rd

Z,N,V

1

CLR

Rd

Очистить регистр

Rd<Rd XOR Rd

Z,N,V

1

SER

Rd

Установить регистр

Rd<$FF

None

1

КОМАНДЫ ВЕТВЛЕНИЯ

RJMP

k

Относительный переход

PC<PC+k+1

None

2

LJMP

Переход по адресу (Z)

PC<Z

None

2

RCALL

k

Относительный вызов подпрогрограммы

PC<PC+k+1

None

3

ICALL

Вызов подпр по адресу (Z)

PC<Z

None

3

RET

Выход из подпрограммы

PC<STACK

None

4

RETI

Выход из прерывания

PC<STACK

I

4

CPSE

Rd,Rr

Сравнить , пропуск если Rd=Rr

if(Rd=Rr) PC<PC+2 или 3

None

1/2

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

SBRC

Rr,b

Пропуск если бит в регистре сброшен

if(Rr(b)=0)

None

1/2

SBRS

Rr,b

Пропуск если бит в регистре установлен

if(Rr(b)=1)

None

1/2

SBIC

P, b

Пропуск если бит в регистре I&bsol;O сброшен

if(P(b)=0)

None

1/2

SBIS

P, b

Пропуск если бит в регистре I&bsol;O установлен

if(P(b)=1)

None

1/2

BRBS

s, k

Переход если установл флаг s

if(SREG(s)=1)

None

1/2

BRBC

s, k

Переход если сброшен флаг s

if(SREG(s)=0)

None

1/2

BREQ

k

Переход если равно Z=1

if(Z=1)

None

1/2

BRNE

k

Переход если неравно if(Z=0)

if(Z=0)

None

1/2

BRCS

k

Переход если установл перенос

if(C=1)

None

1/2

BRCC

k

Переход если сброшен перенос

if(C=0)

None

1/2

BRSH

k

Переход если равно или больше

if(C=0)

None

1/2

BRLO

k

Переход если меньше

if(C=1) PC<PC+k+1

None

1/2

BRMI

k

Переход если минус

if(N=1) PC<PC+k+1

None

1/2

BRPL

k

Переход если плюс

if(N=0) PC<PC+k+1

None

1/2

BRGE

k

Переход если больше или равно,со знаком

if(N XOR V=0) PC<PC+k+1

None

1/2

BRLT

k

Переход если меньше нуля, со знаком

if(N XOR V=1) PC<PC+k+1

None

1/2

BRHS

k

Переход если установл флаг H

if (H=1) PC<PC+k+1

None

1/2

BRHC

k

Переход если сброшен флаг H

if (H=0) PC<PC+k+1

None

1/2

BRTS

k

Переход если установл флаг T

if (H=1) PC<PC+k+1

None

1/2

BRTC

k

Переход если сброшен флаг T

if (H=0) PC<PC+k+1

None

1/2

BRVS

k

Переход если установл флаг V

if (H=1) PC<PC+k+1

None

1/2

BRVC

k

Переход если сброшен флаг V

if (H=0) PC<PC+k+1

None

1/2

BRIE

k

Переход если разрешены прерывания

if(I=1) PC<PC+k+1

None

1/2

BRID

k

Переход если запрещены прерывания

if(I=1) PC<PC+k+1

None

1/2

КОМАНДЫ ПЕРЕСЫЛКИ

MOV

Rd,Rr

Пересылка между рег.

Rd<Rr

None

1

LDI

Rd,K

Загрузить константу

Rd<K

None

1

LD

Rd,X

Загрузить регистр непосредственно

Rd<(X)

None

2

LD

Rd,X+

Загрузить регистр непосредст. c постинкрем

Rd<(X),X<X+1

None

2

LD

Rd,-X

Загрузить регистр непоср. с предв.декрем

X<X-1,Rd<(X)

None

2

LD

Rd,Y

Загрузить регистр непосредственно

Rd<(Y)

None

2

LD

Rd,Y+

Загрузить регистр непоср. c пост инкрем

Rd<(Y),Y<Y+1

None

2

LD

Rd,-Y

Загрузить регистр непоср. с предв.декрем

Y<Y-1,Rd<(Y)

None

2

LDD

Rd,Y+q

Загрузить регистр непоср. со смещением

Rd<(Y+q)

None

2

LD

Rd,Z

Загрузить регистр непосредственно

Rd<(Z)

None

2

LD

Rd,Z+

Загрузить регистр непоср. c пост инкрем

Rd<(Z),Z<Z+1

None

2

LD

Rd,-Z

Загрузить регистр непоср. с предв.декрем

Z<Z-1,Rd<(Z)

None

2

LDD

Rd,Z+q

Загрузить регистр непоср. со смещением

Rd<(Z+q)

None

2

LDS

Rd,k

Загрузить из ОЗУ

Rd<(k)

None

3

ST

X,Rr

Записать регистр непосредственно

(X)<Rr

None

2

ST

-X,Rr

Записать регистр непоср.c пред.декрем.

X<X-1,(X)<Rr

ST

Y,Rr

Записать регистр непосредственно

(Y)<Rr

ST

Y+,Rr

Записать регистр непоср.c пост инкр

(X)<Rr,X<X+1

ST

-Y,Rr

Записать регистр непоср.c пред.декрем

Y<Y-1,(Y)<Rr

None

2

STD

Y+q,Rr

Запис.рег.непоср.сосмещением

(Y+q)<Rr

None

2

ST

Z,Rr

Записать регистр непосредственно

(Y)<Rr

None

2

ST

Z+,Rr

Записать регистр непоср.c пост инкр

(Y)<Rr,Y<Y+1

None

2

ST

-Z,Rr

Записать регистр непоср.c пред.декрем

Z<Z-1,(Z)<Rr

None

2

STD

Y+q,Rr

Запис.рег.непоср.сосмещением

(Y+q)<Rr

None

2

STS

k,Rr

Записать в ОЗУ

(k)<Rr

None

3

LPM

Загр.из памяти программ

R0<(Z)

None

3

IN

Rd, P

Ввод из порта

Rd<P

None

1

OUT

P, Rr

Вывод в порт

P<Rr

None

1

PUSH

Rr

Записать в стек

STACK<Rr

None

2

POP

Rr

Прочитать из стека

Rr<STACK

None

2

КОМАНДЫ РАБОТЫ С БИТАМИ

SBI

P,b

Установить бит в регистре ввода/вывода

I/O(P,b)<1

None

2

CBI

P,b

Сбросить бит в регистре ввода/вывода

I/O(P,b)<0

None

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

сдвиг влево через C

Rd(0)<C,Rd(n+1)<Rd(n), C<Rd(7)

Z,C,N,V

1

ROR

Rd

сдвиг вправо через C

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)

None

1

BSET

s

Установить флаг

SREG(s)<1

SREG(s)

1

BCLR

s

Сбросить флаг

SREG(s)<0

SREG(s)

1

BST

Rr,b

Запомнить бит в T

T<Rr(b)

T

1

BLD

Rd, b

Прочитать бит из T

Rd(b)<T

None

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

Разрешить прерывания

I<1

I

1

CLI

Запретить прерывания

I<0

I

1

SES

Установить флаг S

S<1

S

1

CLS

Сбросить флаг S

S<0

S

1

SEV

Установить флаг V

V<1

V

1

CLV

Сбросить флаг V

V<0

V

1

SET

Установить флаг T

T<1

T

1

CLT

Сбросить флаг T

T<0

T

1

SEH

Установить флаг H

H<1

H

1

CLH

Сбросить флаг H

H<0

H

1

NOP

Нет операции

None

1

SLEEP

Останов

None

3

WDR

Сброс сторожевого таймера

None

1

Подготовил Матвеев Дмитрий