русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Система команд микроконтроллеров семейства AVR

3. Система команд микроконтроллеров семейства AvR

Таблица 3.1. Арифметические и логические команды


Мнемо-ника

Операнды

Описание

Операция

Флаги

Кол-во циклов

ADD

       Rd,Rr
0<=d<=31
0<=r<=31

Сложить без переноса

Rd <-Rd + Rr

Z, C, N, v, H

1

ADC

Rd.Rr
0<=d<=31
0<=r<=31

Сложить с переносом

Rd <- Rd + Rr+ С

Z, C, N, v, H

1

ADIW

Rd,K
dE{24,26,28,30}
0<=K<=63

Сложить непосредственное значение со словом

Rdh:Rdl<-Rdh:Rdl+ К

Z, C, N, v

2

SUB

Rd,Rr
0<=d<=31
0<=r<=31

Вычесть без заема

Rd <- Rd – Rr

Z, C, N, v, H

1

SUBI

Rd, К
16<=d<=31 0<=K<=255

Вычесть непосредственное значение

Rd <- Rd – К

Z, C, N, v, H

1

SBC

Rd, Rr
0<=d<=31
0<=r<=31

Вычесть с заемом

Rd<--Rd-Rr-C

Z, C, N, v, H

1

SBCI

Rd, К
16<=d<=32
0<=K<=255

Вычесть непосредственное значение с заемом

Rd<--Rd-K-C

Z, C, N, v, H

1

SBIW

Rd, К dE{24,26,28,30} О<=К<=бЗ

Вычесть непосредственное значение из слова

Rdh:Rdl<--Rdh:Rdl-K

Z, C, N, v

2

AND

Rd, Rr
0<=d<=31
0<=r<=31

Выполнить логическое AND

Rd <-- Rd * Rr

Z, N, v

1

ANDI

Rd, К
16<d<31 0<k<=255

Выполнить логическое AND

Rd <-- Rd * К

Z, N, v

1

OR

Rd, Rr
0<=d>=31
0<=r<=31

Выполнить логическое OR

Rd <--Rd v Rr

Z, N, v

1

ORI

Rd, К
16<=d<=31
0<=K<=255

Выполнить логическое OR с непосредственным значением

Rd <--Rd v К

Z, N, v

1

EOR

Rd, Rr
0<=d<=31
0<=г<=31

Выполнить исключающее OR

Rd <--Rd Rr

Z, N, v

1

СОМ

Rd
0<=d<=31

Выполнить дополнение до единицы

Rd<--SFF-Rd

Z, C, N, v

1

NEG

Rd
0<=d<=31

Выполнить дополнение до двух

Rd <-- S00 - Rd

Z, C, N, v, H

1

SBR

Rd, К
16<=d<=31
0<=K<=255

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

Rd <-- Rd v К

Z, N,v

1

 

 

Мнемо­ника

Операнды

Описание

Операция

Флаги

Кол-во циклов

CBR

Rd, К
16<=d<=31 O<=K<=255

Очистить биты в регистре

Rd <--Rd * (SFF - К)

Z, N, v

1

INC

Rd
0<=d<=31

Инкрементировать

Rd <--Rd + 1

Z, N,v

1

DEC

           Rd
0<=d<=31

Декрементировать

Rd <-- Rd - 1

Z, N,v

1

TST

Rd
0<=r<=31

Проверить на ноль или минус

Rd<--Rd.Rd

Z, N, v

1

CLR

Rd
0<=d<=31

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

Rd <-- Rd (+) Rd

Z, N, v

1

SER

Rd
16<=d<=31

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

Rd <--SFF

нет

1

CP

Rd, Rr
0<=d<=31
0<=r<=31

Сравнить

Rd-Rr

Z, C, N, v, H

1

CPC

Rd, Rr
0<=d<=31
0<=r<=31

Сравнить с учетом переноса

Rd-Rr-C

Z, C, N, v, H

1

CPI

Rd, К
16<=d<=31 0<=K<=255

Сравнить с константой

Rd-K

Z, C, N, v, H

1

 

 

Таблица 3.2. Команды сдвигов и операций с битами


Мнемо­ника

Операн­ды

Описание

Операция

Флаги

Кол-во циклов

LSL

Rd
0<=d<=31

Логически сдвинуть влево

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

Z,C,N,v,H

1

LSR

Rd
0<=d<=31

Логически сдвинуть вправо

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

Z,C,N,v

1

ROL

Rd
0<=d<=31

Сдвинуть влево через перенос

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

Z,C,N,v,H

1

ROR

Rd
0<=d<=31

Сдвинуть вправо через перенос

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

Z,C,N,v

1

ASR

Rd
0<=d<=31

Арифметически сдвинуть вправо

Rd(n)<--Rd(n+1), n=0...6, Rd(0)<--C

Z,C,N,v

1

SWAP

Rd 0<=d<=31

Поменять нибблы местами

Rd(3...0) <–>Rd(7...4)

Нет

1

BSET

    s
0<=s<=7

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

SREG(s)<-- 1

SREG(s)

1

BCLR

   s
0<=s<=7

Очистить флаг

SREG(s)<-- 0

SREG(s)

1

Мне­моника

Операнды

Описание

Операция

Флаги

Кол-во циклов

SBI

P,b
O<=P<=31
0<=b<=7

Установить бит в регистр I/O

l/0(P,b)<-- 1

Нет

2

CBI

P,b
0<=P<=31
0<=b<=7

Очистить бит в регистре I/O

l/0(P,b)<-- 0

Нет

2

BST

Rd,b
0<=d<=31
0<=b<=7

Переписать бит из регистра        во флаг Т

Т<-- Rd(b)

Т

1

BLD

Rd,b
0<=d<=31
0<=b<=7

Загрузить Т флаг в бит регистра

Rd(b) <-- Т

Нет

1

SEC

 

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

С<-- 1

С

1

CLC

 

Очистить флаг переноса

С<--0

С

1

SEN

 

Установить флаг отрицательного значения

М<--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

 

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

T<--1

T

1

CLT

 

Очистить флаг Т

Т<--0

T

1

Мне­моника

Операнды

Описание

Операция

Флаги

Кол-во циклов

SEH

 

Установить флаг полу переноса

Н<-- 1

Н

1

CLH

 

Очистить флаг полу переноса

Н<--0

Н

1

NOP

 

Выполнить холостую команду

 

Нет

1

SLEEP

 

Установить режим SLEEP

 

Нет

1

WDR

 

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

 

Нет

1

 

 

Таблица 3.3. Команды пересылки данных


Мнемо­ника

Операн­ды

Описание

Операция

Флаги

Кол-во циклов

ELPM

 

Расширенная загрузка из памяти программ в регистр RO

R0<-- (Z+RAMPZ)

Нет

3

MOv

Rd,Rr
0<=d<=31
0<=r<=31

Копировать регистр

Rd<--Rr

Нет

1

LDI

Rd,k
16<=d<=31 0<=k<=255

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

Rd<--K

Нет

1

LDS

Rd,k
0<=d<=31 0<=k<=65535

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

Rd<--(k)

Нет

3

LD

Rd,X
0<=d<=31

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

Rd <-- (X)

Нет

2

LD

Rd,X+
0<=d<=31

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

Rd <-- (X),
X<--X+1

Нет

2

LD

Rd,X-
0<=d<=31

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

X<--X-1,
Rd <-- (X)

Нет

2

LD

Rd,Y
0<=d<=31

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

Rd<--(Y),

Нет

2

LD

Rd,Y+
0<=d<=31

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

Rd<--(Y), Y<--Y+1

Нет

2

LD

Rd,Y
0<=d<=31

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

Y<--Y-1, Rd <-- (Y)

Нет

2

LDD

Rd,Y+q
0<=d<=31
0<=q<=63

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

Rd<--(Y+q)

Нет

2

LD

Rd,Z
0<=d<=31

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

Rd <-- (Z)

Нет

2

Мнемо­ника

Операн­ды

Описание

Операция

Флаги

Кол-во циклов

LD

Rd,Z+
0<=d<=31

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

Rd <-- (Z), Z<--Z+1

Нет

2

LD

Rd,-Z
0<=d<=31

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

Z<--Z-1, Rd<--(Z)

Нет

2

LDD

Rd,Z+q
0<=d<=31
0<=q<=31

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

Rd <-- (Z+q)

Нет

2

STS

k,Rr
0<=d<=31 0<=k<=65535

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

(k) <--Rr

Нет

3

ST

X,Rr
0<=r<=31

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

(X) <-- Rr

Нет

2

ST

X+,Rr
0<=r<=31

Записать косвенно с постинкрементом

(X) <--Rr, X<--X+ 1

Нет

2

ST

-X,Rr
0<=r<=31

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

X<--X-1, (X) <--Rr

Нет

2

ST

Y,Rr
0<=r<=31

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

(Y) <--Rr

Нет

2

ST

Y+,Rr
0<=r<=31

Записать косвенно с постинкрементом

(Y) <-- Rr, Y<--Y+ 1

Нет

2

ST

-Y,Rr
0<=r<=31

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

Y<--Y-1, (Y) <-- Rr

Нет

2

STD

Y+q,Rr
0<=r<=31
0<=q<=63

Записать косвенно со смещением

(Y+q)<--Rr

Нет

2

ST

Z,Rr
0<=r<=31

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

(Z) <--Rr

Нет

2

ST

Z+,Rr
0<=r<=31

Записать косвенно с постинкрементом

(Z) <-- Rr, Z<--Z+ 1

Нет

2

ST

-Z,Rr
0<=r<=31

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

Z<--Z-1, (Z) <-- Rr

Нет

2

STD

Z+q,Rr
0<=r<=31
0<=q<=63

Записать косвенно со смещением

(Z+q)<--Rr

Нет

2

LPM

 

Загрузить байт из памяти программ

R0 <-- (Z)

Нет

3

IN

Rd,P
0<=d<=31
0<=P<=63

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

Rd<--P

Нет

1

OUT

P,Rr
0<=r<=31
0<=P<=63

Записать данные из регистра в порт I/O

P<--Rr

Нет

1

PUSH

Rr
0<=r<=31

Сохранить регистр в стеке

STACK <--Rr

Нет

2

 

 

 

Таблица 3.4. Команды переходов


Мнемо­ника

Операн­ды

Описание

Операция

Флаги

Кол-во циклов

RJMP

k
-2K<k<2K

Перейти относительно

PC <--PC + k + 1

Нет

2

LJMP

 

Перейти косвенно

PC<--Z

Нет

2

JMP

k
0<k<4M

Перейти

PC<--k

Нет

3

RCALL

k
-2K<=k<=2K

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

PC <-- PC + k + 1

Нет

3

ICALL

 

Вызвать подпрограмму косвенно

PC<--Z

Нет

3

CALL

k
0<=k<=64K

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

PC<--k

Нет

4

RET

 

Вернуться из подпрограммы

PC <-- STACK

Нет

4

RETI

 

Вернуться из прерывания

PC <-- STACK

I

4

CPSE

Rd,Rr
0<=d<=31,
0<=r<=31

Сравнить и пропустить, если равно

If Rd=Rr then
PC <-- PC + 2 (or 3)

Нет

(1/2)/3

SBRC

Rr,b
0<=r<=31
0<=b<=7

Пропустить, если бит в регистре очищен

if Rr(b)=0 then
PC <-- PC + 2 (or 3)

Нет

(1/2)/3

SBRS

Rr,b
0<=r<=31
0<=b<=7

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

If Rr(b)=1 then
PC <--PC + 2 (or 3)

Нет

(1/2)/3

SBIC

P,b
0<=P<=31
0<=b<=7

Пропустить, если бит в регистре I/O очищен

if l/O P(b)=0 then
PC <-- PC + 2 (or 3)

Нет

(1/2)/3

SBIS

P,b
0<=r<=31
0<=b<=7

Пропустить, если бит в регистре I/O установлен

If l/O P(b)=1 then
PC <--PC + 2 (or 3)

Нет

(1/2)/3

BRBS

s,k
0<=s<=7
-64<=k<=+63

Перейти, если бит в регистре статуса установлен

if SREG(s)=1 then
PC <-- PC + k + 1

Нет

(1/2)

BRBC

s,k
0<=s<=7
-64<=k<=+63

Перейти, если бит в регистре статуса очищен

if SREG(s)=0 then
PC <-- PC + k + 1

Нет

(1/2)

BREQ

k
-64<=k<=+63

Перейти, если равно

if Rd=Rr (Z=1) then
PC <-- PC + k + 1

Нет

(1/2)

BRNE

k
-64<=k<=+63

Перейти, если не равно

if Rd != Rr(Z=0) then PC<<--PC+ k+ 1

Нет

(1/2)

 

Мнемо­ника

Операн­ды

Описание

Операция

Флаги

Кол-во циклов

BRCS

k
-64<=k<=+63

Перейти, если флаг переноса установлен

if C=1 then
PC <-- PC + k + 1

Нет

1/2

BRCC

k
-64<=k<=+63

Перейти, если флаг переноса очищен

if C=0 then
PC <-- PC + k + 1

Нет

1/2

BRSH

K
-64<=k<=+63

Перейти, если равно или больше (без знака)

if Rd<Rr(C=0) then PC<--PC+ k+ 1

Нет

1/2

BRLO

k
-64<=k<=+63

Перейти, если меньше (без знака)

if Rd<Rr (C=1) then   PC <--PC + k + 1

Нет

1/2

BRMI

        k
-64<=k<=+63

Перейти, если минус

if N=1 then
PC <-- PC + k + 1

Нет

1/2

BRPL

k
-64<=k<=+63

Перейти, если плюс

if N=0 then
PC <-- PC + k + 1

Нет

1/2

BRGE

k
-64<=k<=+63

Перейти, если больше или равно (с учетом знака)

if  Rd>Rr (N(+)v=0) then PC <-- PC + k + 1

Нет

1/2

BRLT

k
-64<=k<=+63

Перейти, если меньше чем (со знаком)

if Rd<Rr (N(+)v=1)then PC <--PC + k+ 1

Нет

1/2

BRHS

K
-64<=k<=+63

Перейти, если флаг полупереноса установлен

if H=1 then
PC <-- PC + k + 1

Нет

1/2

 

BRHC

k
-64<=k<=+63

Перейти, если флаг полупереноса очищен

if H=0 then
PC <-- PC + k + 1

Нет

1/2

 

BRTS

k
-64<=k<=+63

Перейти, если флаг Т установлен

if T=1 then
PC <-- PC + k + 1

Нет

1/2

 

BRTC

k
-64<=k<=+63

Перейти, если флаг Т очищен

if T=0 then
PC <-- pc + k + 1

Нет

1/2

 

BRvS

k
-64<=k<=+63

Перейти, если флаг переполнения установлен

if v=1 then
PC <-- PC + k + 1

Нет

1/2

 

BRvC

k
-64<=k<=+63

Перейти, если флаг переполнения очищен

if v=0 then
PC <-- PC + k + 1

Нет

1/2

 

BRIE

        k
-64<=k<=+63

Перейти, если глобальное прерывание разрешено

if I=1 then
PC <-- PC + k + 1

Нет

1/2

 

BRID

k
-64k<=k<=+63

Перейти, если глобальное прерывание запрещено

if I=0 then
PC <-- PC + k + 1

Нет

1/2

 

 

Просмотров: 18482

Вы можете --> Заказать программу или Задать вопрос на форуме

Вернуться воглавление


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Полезен материал? Поделись:

Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.