|
Реферат: AVR микроконтроллер AT90S2333 фирмы Atmel
Примечание: Для совместимости с другими устройствами,
зарезервированные биты при записи необходимо устанавливать в "0".
Данные в зарезервированные ячейки памяти записывать нельзя.
Набор команд
Мнемоника |
Операнды |
Описание |
Действие |
Флаги |
Цкл |
Арифметические команды |
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\O
сброшен |
if(P(b)=0) |
None |
1/2 |
SBIS |
P, b |
Пропуск если бит в регистре I\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 |
Подготовил Матвеев Дмитрий
2003
|
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17
|
|