Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное_пособие.doc
Скачиваний:
70
Добавлен:
10.11.2019
Размер:
8.13 Mб
Скачать

2.6.2 Команды передачи управления

Таблица 5. Команды передачи управления (переходов, вызовов и возвратов подпрограмм)

Мнемоника

Операнды

Описание

Операция

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

RJMP

Adr12

Переход короткий

PCPC+Adr12+1

2

LJMP

Переход косвенный

PCZ

2

JMP

Adr22

Переход длинный

PCAdr22

3

RCALL

Adr12

Вызов подпрограммы короткий

(SP) PCL, SP-1, (SP-1) PCH, SP-1, PCPC+Adr12+1

3

ICALL

Вызов подпрограммы косвенный

(SP) PCL, SP-1, (SP-1) PCH, PCZ

3

CALL

Adr16

Длинный вызов подпрограммы

(SP) PCL, (SP-1) PCH, SP-1, PCAdr16

4

RET

Возврат из подпрограммы

SP+1, PCH  (SP),

SP+1, PCL  (SP)

4

RETI

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

SP+1, PCH  (SP),

SP+1, PCL  (SP)

4

CPSE

Rd,Rr

Если равны, то пропуск следующей команды

если Rd=Rr, то PCPC+2 (или3),иначе PC+1

1/2/3

SBRC

Rr,b

Если бит b в регистре РОН очищен, то пропуск следующей команды

if Rr(b)=0 then PCPC+2 (or 3) else

PC+1

1/2/3

SBRS

Rr,b

Пропуск следующей команды, если бит в регистре установлен

if Rr(b)=1 then PCPC+2 (or 3) else

PC+1

1/2/3

SBIS

I/O,b

Пропуск следующей команды, если бит в регистре I/O равен 1

if I/OP(b)=1 then PCPC+2 (or 3) else

PC+1

1/2/3

SBIC

I/O,b

Пропуск следующей команды, если бит в регистре I/O очищен

if I/OP(b)=0 then PCPC+2 (or 3) else

PC+1

1/2/3

BRBS

s,rel

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

if SREG(s)=1 then PCPC+rel+1

1/2

BRBC

s,rel

Переход, если в регистре SREG очищен бит s

if SREG(s)=0 then PCPC+rel+1

1/2

BREQ

rel

Переход, если результат равен нулю

if Z=1 then PCPC+rel+1

1/2

BRNE

rel

Переход, если резуль- тат не равен нулю

if Z=0 then PCPC+rel+1

1/2

BRCS

rel

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

if С=1 then PCPC+rel+1

1/2

BRCC

rel

Переход, если флаг переноса очищен

if С=0 then PCPC+rel+1

1/2

BRMI

rel

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

if N=1 then PCPC+rel+1

1/2

BRPL

rel

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

if N=0 then PCPC+rel+1

1/2

BRGE

rel

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

if NV=0 then PCPC+rel+1

1/2

BRLT

rel

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

if NV=1 then PCPC+rel+1

1/2

BRHS

rel

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

if H=1 then PCPC+rel+1

1/2

BRHC

rel

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

if H=0 then PCPC+rel+1

1/2

BRTS

rel

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

if Т=1 then PCPC+rel+1

1/2

BRTC

rel

Переход, если флаг Т очищен

if Т=0 then PCPC+rel+1

1/2

BRVS

rel

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

if V=1 then PCPC+rel+1

1/2

BRVC

rel

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

if V=0 then PCPC+rel+1

1/2

BRIE

rel

Переход, если гло- бальное прерывание разрешено

if I=1 then PCPC+rel+1

1/2

BRID

rel

Переход, если гло- бальное прерывание запрещено

if I=0 then PCPC+rel+1

1/2

К этой группе команд относятся команды вызовов и возвратов из подпрограмм и переходов. Команды безусловных переходов и вызовов подпрограмм имеют прямой, относительный и косвенный способы адресации. Командами JMP и CALL обеспечиваются безусловный переход и вызов подпрограммы в пределах всего адресного пространства программной памяти 4М байт микроконтроллеров старших моделей семейства AVR. Длина этих команд составляет два слова (команда занимает две ячейки памяти).

Команды RJMP и RCALL обеспечивают переход и вызов подпрограммы в пределах 2К байт адресного пространства программной памяти. При выполнении этих команд 12-разрядное смещение адреса (Adr12) добавляется к содержимому программного счетчика РС. Формат команд составляет 1 слово.

Команды IJMP и ICALL обеспечивают косвенный переход и вызов подпрограммы по адресу, размещенному в регистре Z (содержимое регистра Z помещается в счетчик команд). Формат команд составляет 1 слово.

В составе команд условных переходов имеется 5 команд, по которым выполняется операция пропуска следующей команды при выполнении условия в команде. В зависимости от выполнения или невыполнения условия, а также от длины пропускаемой следующей команды эти команды могут иметь от одного до трех циклов. Второй цикл необходим для считывания двухбайтной команды, размещенной по адресу перехода. Если длина пропускаемой команды составляет два слова, то при выполнении условия команда выполняется за три цикла. Условия пропуска следующей команды: равенство содержимого двух регистров общего назначения и состояние бита в любом регистре. Обычно в качестве следующей команды используется команда безусловного перехода.

“Классические” условные переходы представлены командами коротких переходов в соответствии с состояниями любого из разрядов регистра состояния SREG. Например: по команде BRNE rel осуществляется переход, если результат операции не равен нулю, т.е. если флаг Z имеет нулевое значение. Если результат операции равен нулю(флаг Z=1), то будет выполняться следующая команда. Условные переходы осуществляются в пределах смещения rel =– 64 ÷ +63 от текущего состояния счетчика команд.

Для обеспечения более длинных переходов по адресу перехода помещают команду безусловного перехода.