Команда
brbs b, к
brbc b, к
breq к
brnek
brcc к (brio к)
Продолжение табл. 4
|
Описание |
Флаги |
[ |
Условный переход (измене |
|
|
ние PC на к), если бит b в |
Нет |
|
SREG установлен, PC <— |
|
|
|
|
|
PC+1-fk, если8ЯЕО(Ь)==1 |
|
1 |
Условный переход (изме |
|
|
нение PC на к), если бит b |
Нет |
|
SREG очищен, PC <- |
|
|
|
|
|
РС+1 +к, если SREG(b)=0 |
|
|
Условный переход (изме |
Нет |
|
нение PC на к), если равно, |
|
PC <- РС+Нк, если флаг Z=l |
|
|
Переход (изменение PC на к),
если не равно, PC <— PC+1 +к, Нет
если флаг Z=0 |
|
Условный переход на к по |
Нет |
флагу С=0, PC <- РС+1+к, |
|
если флаг С=0 |
|
Примечание
-6 4 < к < 6 3
-6 4 < к < 6 3
-6 4 < к < 6 3
-6 4 < к < 6 3
-6 4 < k < 6 3
brmi к |
N=1 |
Условный переход на |
Нет |
- 6 4 < k < 6 3 |
|
|Ьф1к |
N=0 |
к по флагу N |
|||
|
|
||||
brvs к |
V=l |
Условный переход на |
Нет |
- 6 4 < k < 6 3 |
|
brvck |
V=0 |
к по флагу V |
|||
|
|
||||
brge к |
S=l |
Условный переход на |
Нет |
- 6 4 < k < 6 3 |
|
brltk |
, S=0 |
к по флагу S |
|||
|
|
||||
brhs к |
H=l |
Условный переход на |
Нет |
- 6 4 < k < 6 3 |
|
brhc к |
H=0 |
к по флагу Н |
|||
|
|
||||
bits к |
1 T=l |
Условный переход на |
Нет |
- 6 4 < k < 6 3 |
|
brtck |
1 т=о |
к по флагу Т |
|||
|
|
||||
brie к |
1=1 |
Условный переход на |
Нет |
- 6 4 < k < 6 3 |
|
bridk |
1 1=0 |
к по флагу I |
|||
|
|
85
Окончание табл. 4
Команда |
Описание |
Флаги |
Примечание |
1 Следующие команды пропускают одну операцию в программе, если ус ловие выполняется
sbrs Rr, b
sbrc Rr, b
sbis P, b
cpse Rd, Rr
Пропустить, если бит Ь в регистре Rr установлен, PC <- РС+2(3),
если Rr(b) = 1
Пропустить, если бит b в регистре Rr очищен,
PC *~ РС+2(3), если Rr(b) = 0
Пропустить, если бит b в регистре ввода-вывода Р установлен,
PC — РС+2(3), если Р(Ь) = 1
Пропустить, если Rd = Rr, PC« - РС+2(3), если Rd = Rr
Нет
Нет
Нет |
Р = (0 - 31) |
Нет
Команды управления необходимы для программной реализации алго ритмов со сложной и неоднозначной последовательностью действий. Эти команды позволяют обеспечить циклическое повторение отдельных фраг ментов программ, ветвление программ с анализом выполнения определен ных условий, вызов подпрограмм, в том числе и для обслуживания преры ваний, возврат из подпрограмм с корректным продолжением выполнения прерванной программы. Основные действия при исполнении команд управления - изменение состояния программного счетчика (PC), которым производится адресация во флэш-памяти (РМ).
Особенностью команд управления микроконтроллеров AVR является не абсолютная, а относительная адресация передачи управления (изменение текущего содержимого программного счетчика на величину указываемого в команде параметра к). Компиляторы при обработке текстов программ не требуют обязательного определения численного значения этого параметра.
При программировании на ассемблере в командах управления параметр к может быть заменен меткой. Ограничения на величину смещения к в ко-
86
мандах rjmp к, rcall к в микроконтроллере 8535 практически не имеют ни какого значения, так как размер адресного пространства памяти программ РМ составляет 4096 двухбайтовых ячеек (8 Кбайт). Если в командах услов ных переходов требуется смещение больше, чем указано в примечании, можно использовать для перехода промежуточную команду rjmp.
Пример:
ср RO, R21 ; сравнить содержимое регистров RO, R21 breq inter ; если равно, перейти к inter (смещение не более 63)
inter: rjmpfin ; перейти к fin (смещение в пределах адр. простр. РМ)
fin: nop |
;программа выполняется по равенству R0-R21 |
Команды "пропустить" (последние пять команд) выполняют условный переход со смещением только на одну команду. В комбинации с командами rjmp или rcall позволяют реализовать переход в любую часть программы аналогично приведенному выше примеру.
4.1.4. Команды преобразования битов в регистрах
Таблица 5
Команда
sbr Rd, К cbr Rd, К
sbi P, b cbi P, b bst Rr, b bid Rd, b
swap Rd
Описание
Установить в регистре Rd би ты по маске К
Очистить в регистре Rd биты по маске К
Установить в регистре вводавывода Р бит b, P(b)=l
Очистить в регистре вводавывода Р бит b, Р(Ь)=0
Пересылка бита b из регистра
Rr во флаг Т, |
Т <- Rr(b) |
Пересылка бита b в регистр |
|
Rd из флага Т, |
Rr(b) <- Т |
Поменять местами старшую и младшую тетрады в регистре Rd
Флаги |
Примечание |
Нет |
d = (16-31) |
Нет |
d = (16-31) |
Нет |
Р = (0-31) |
Нет |
Р = (0-31) |
Т |
|
Нет |
|
Нет |
|
87
Команда serRd clrRd bsetb
bclr b clc sez clz sen cln sev civ ses els
seh
1cUl
set
! clt
sei
cli
|
Описание |
|
1 Установить все биты регист |
||
ра Rd, |
|
Rd — $ff |
1 Очистить все биты регистра |
||
Rd, |
|
Rd«- $00 |
Установить бит b в регистре |
||
SREG, |
SREG(b) «- 1 |
|
Очистить бит b в регистре |
||
1 SREG, |
SREG(b) «- 0 |
|
Очистить флаг С, |
С <— 0 |
|
Установить флаг Z, |
Z <— 1 |
|
Очистить флаг Z, |
Z«— 0 |
|
Установить флаг N, |
N <— 1 |
|
Очистить флаг N, |
N <— 0 |
|
Установить флаг V, |
V <— 1 |
|
Очистить флаг V, |
V <— 0 |
|
Установить флаг S, |
S <— 1 |
|
Очистить флаг S, |
S *— 0 |
|
Установить флаг Н, |
Н <•— 1 |
|
Очистить флаг Н, |
Н *— 0 |
|
Установить флаг Т, |
Т <— 1 |
|
Очистить флаг Т, |
Т <— 0 |
|
Установить флаг I, |
I *- 1 |
|
I Очистить флаг I, |
I <— 0 |
|
Окончание табл. 5
Флаги Примеч.
Нет |
d = (16-31) |
VNZ
SREG(b)
SREG(b)
С
Z
Z
N
N
V
V
S
S
н
н
т
т1
I
I I
Команды преобразования битов позволяют определять значения от дельных битов в регистрах общего назначения (с ограничениями, указан ными в примечании), в первых 32 регистрах ввода-вывода (0-31) и в реги стре состояния SREG. Флаг глобального разрешения прерывания I управ ляет всеми аппаратными прерываниями микроконтроллера и может в лю88
бой части программы определять разрешение (команда sei) или запрет (ко манда cli) прерываний. Флаг копирования бита Т обеспечивает передачу любого бита одного регистра в любой бит другого (или того же самого) ре гистра общего назначения без изменения остальных битов:
bst R12, 4 ;пересылка бита 4 регистра R12 во флаг Т bidR16, 0 ;пересылка флага Те бит 0регистра R16
Команды sbr и cbr по маске К определяют биты в регистре Rd, соответ ствующие единичным значениям битов константы К:
cbr R16, ОЬЮЮОПО ;очистка битов 7, 5, 2, 1 в регистре R16 sbr R17, $0f установка 4 младших битов в регистре RI7
Команды sbi и сЫ позволяют задавать значения произвольных битов в регистрах ввода-вывода (0-31), например, sbi PORTC, РСО устанавливает бит 0 регистра PORTC.
4.1.5. Прочие команды
|
|
|
Таблица 6 |
Команда |
Описание |
Флаги |
Примечание |
пор |
Нет операции |
Нет |
|
sleep |
Переход в режим sleep |
Нет |
|
wdr |
Сброс сторожевого таймера |
Нет |
|
Эти команды служат для управления специальными режимами микро контроллера. Команда sleep переводит микроконтроллер в состояние покоя (sleep mode) с пониженным энергопотреблением и ограниченным функ ционированием его элементов, если в управляющем регистре ввода-вывода MCUCR этот режим разрешен. Команда wdr осуществляет программный сброс сторожевого таймера и используется в контрольных точках програм мы, когда работа сторожевого таймера разрешена.
89