Синтаксис: |
Операнды: |
Счетчик программ: |
SBR Rd,K |
16 < d < 31, 0 < K < 255 |
PC <- PC + 1 |
S N V, для проверок со знаком.
V 0, очищен.
NУстанавливается, если в результате установлен MSB, в ином случае очищается.
Z Устанавливается, если результат $00, в ином случае очищается.
Пример:
sbr r16, 3F0 ; Установить биты 0 и 1 в r16. sbr r17, $F0 ; Установить старшие 4 бита в r17.
Слов: 1 (2 байта). Циклов: 1.
Команда SBRC – пропустить, если бит в регистре очищен
Описание:
Команда проверяет состояние бита в регистре и, если этот бит очищен, пропускает следующую команду.
Операция: If Rr (b) = 0 then PC <-- PC + 2 (or 3) else PC <-- PC + 1
Синтаксис: |
Операнды: |
Счетчик программ: |
|
SBRC Rr,b |
0 |
< r < 31, |
PC <-- PC + 1, если условия |
|
0 |
< b < 7 |
не соблюдены, нет пропуска. |
|
|
|
PC <-- PC + 2, если следующая |
|
|
|
команда длиной в 1слово. |
|
|
|
PC <-- PC + 3, если следующие |
|
|
|
команды JMP или CALL. |
Пример:
sub |
r0, |
r1 |
; Вычесть r1 из r0. |
||
sbrc r0, 7 |
; |
Пропустить, |
если бит 7 в r0 очищен. |
||
sub |
r0, |
r1 |
; |
Выполняется |
только, если бит 7 в r0 |
nop |
;не очищен. |
; Продолжать (пустая операция). |
Слов: 1 (2 байта). Циклов: 1, если условия не соблюдены, нет пропуска, 2, если условия соблюдены, выполняется пропуск.
Команда SBRS – пропустить, если бит в регистре установлен
Описание:
Команда проверяет состояние бита в регистре и, если этот бит установлен, пропускает следующую команду.
Операция: If Rr(b) = 1 then PC <-- PC + 2 (or 3) else PC <-- PC + 1
100
Синтаксис: |
Операнды: |
Счетчик программ: |
|
SBRS Rr,b |
0 < r < 31, |
PC <-- PC + 1, если условия |
|
|
|
0 < b < 7 |
не соблюдены, нет пропуска. |
|
|
|
PC <-- PC + 2, если следующая |
|
|
|
команда длиной в 1слово. |
|
|
|
PC <-- PC + 3, если следующие |
Пример: |
|
команды JMP или CALL. |
|
|
|
||
sub |
r0, r1 ; Вычесть r1 из r0. |
||
sbrs |
r0, 7 ; Пропустить, если бит 7 в r0 установлен. |
||
neg |
r0 |
; Выполняется только, если бит 7 в r0 |
|
Nop |
|
;не установлен. |
|
|
; Продолжать (пустая операция). |
||
Слов: 1 (2 байта). Циклов: 1, если условия не соблюдены, нет пропуска, 2, если условия соблюдены, выполняется пропуск.
Команда SEC – установить флаг переноса
Описание:
Команда устанавливает флаг переноса (C) в регистре статуса (SREG)
Операция: C <-- 1
Синтаксис: |
Операнды: |
Счетчик программ: |
SEC |
нет |
PC <-- PC + 1 |
C = 1. Флаг переноса установлен. |
|
|
Пример: |
; Установить флаг переноса. |
|
sec |
||
adc r0, r1 |
; r0 = r0 + r1 + 1. |
|
Слов: 1 (2 байта). Циклов: 1. |
|
|
Команда SEH – установить флаг полупереноса
Описание:
Команда устанавливает флаг полупереноса (H) в регистре статуса (SREG).
Операция: H <-- 1
Синтаксис: |
Операнды: |
Счетчик программ: |
SEH |
нет |
PC <-- PC + 1 |
H=1. Флаг полупереноса установлен.
Пример:
seh ; Установить флаг полупереноса.
Слов: 1 (2 байта). Циклов: 1.
101
Команда SEI – установить флаг глобального прерывания
Описание:
Команда устанавливает флаг глобального прерывания (I) в регистре
статуса (SREG). |
|
|
Операция: I <-- 1 |
|
|
Синтаксис: |
Операнды: |
Счетчик программ: |
SEI |
нет |
PC <-- PC + 1 |
I = 1. Флаг глобального прерывания установлен. |
||
Пример: |
; Запретить прерывания. |
|
cli |
||
in r13, $16 ; Считать порт B. |
|
|
sei |
; Разрешить прерывания. |
|
Слов: 1 (2 байта). Циклов: 1. |
|
|
Команда SEN – установить флаг отрицательного значения
Описание:
Команда устанавливает флаг отрицательного значения (N) в регистре
статуса (SREG). |
|
|
Операция: N <-- 1 |
|
|
Синтаксис: |
Операнды: |
Счетчик программ: |
SEN |
нет |
PC <-- PC + 1 |
N = 1. Флаг переноса установлен.
Пример:
add r2, r19 ; Сложить r19 с r2.
sen ; Установить флаг отрицательного значения.
Слов: 1 (2 байта). Циклов: 1.
Команда SER – установить все биты регистра
Описание:
Значение $FF заносится непосредственно в регистр назначения Rd.
Операция: |
Rd <-- $FF |
|
|
Синтаксис: |
Операнды: |
Счетчик программ: |
|
Пример: |
SER Rd |
16 < d < 31 |
PC <-- PC + 1 |
r16 |
; Очистить r16. |
|
|
clr |
|
||
ser |
r17 |
; Установить r17. |
|
out |
#18, r16 ; Записать нули в порт B. |
||
nop |
|
; Задержка (пустая операция). |
|
out |
#18, r17 ; Записать единицы в порт B. |
||
Слов: 1 (2 байта). Циклов: 1.
102
Команда SES – установить флаг знака
Описание:
Команда устанавливает флаг учета знака (S) в регистре статуса (SREG).
Операция: :S <-- 1
Синтаксис: |
Операнды: |
Счетчик программ: |
SES |
нет |
PC <-- PC + 1 |
S = 1. Флаг учета знака установлен.
Пример:
add r2, r19 ; Сложить r19 с r2.
ses |
; Установить флаг отрицательного значения. |
Слов: 1 (2 байта). Циклов: 1. |
|
Команда SET – установить флаг T
Описание:
Команда устанавливает флаг пересылки (T) в регистре статуса (SREG).
Операция: T <-- 1
Синтаксис: |
Операнды: |
Счетчик программ: |
SET |
нет |
PC <-- PC + 1 |
T = 1. Флаг пересылки установлен. |
|
|
Пример: |
|
|
set ; Установить T флаг. |
|
|
Слов: 1 (2 байта). Циклов: 1. |
|
|
Команда SEV – установить флаг переполнения
Описание:
Команда устанавливает флаг переполнения (V) в регистре статуса (SREG).
Операция: V <-- 1
Синтаксис: |
Операнды: |
Счетчик программ: |
SEV |
нет |
PC <-- PC + 1 |
V = 1. Флаг переполнения установлен. |
|
|
Пример: |
|
|
add r2, r19 ; Сложить r19 с r2 |
|
|
sev |
; Установить флаг переполнения |
|
Слов: 1 (2 байта). Циклов 1.
Команда SEZ – установить флаг нулевого значения
Описание:
Команда устанавливает флаг нулевого значения (Z) в регистре статуса
(SREG).
103
Операция: Z <-- 1 |
|
|
Синтаксис: |
Операнды: |
Счетчик программ: |
SEZ |
нет |
PC <-- PC + 1 |
Z = 1. Флаг нулевого значения установлен.
Пример: |
|
add |
r2, r19 ; Сложить r19 с r2. |
sez |
; Установить флаг нулевого значения. |
Слов: 1 (2 байта). Циклов: 1.
Команда SLEEP – установить режим SLEEP
Описание:
Команда устанавливает схему в SLEEP режим, определяемый регистром управления центрального процессорного устройства (ЦПУ). Когда прерывание выводит ЦПУ из режима SLEEP, команда, следующая за командой SLEEP, будет выполнена прежде, чем отработает обработчик прерывания.
Операция: См. описание режима пониженного энергопотребления в документации.
Синтаксис: |
Операнды: |
Счетчик программ: |
SLEEP |
нет |
PC <-- PC + 1 |
Пример: |
r0, r11 ; |
Копировать r11 в r0. |
|
mov |
|||
sleep |
; |
Перевести MCU в режим sleep. |
|
Слов: 1 (2 байта). Циклов: 1.
Команда ST – записать косвенно из регистра в ОЗУ с использованием индекса X
Описание:
Записывается косвенно один байт из регистра в ОЗУ. Положение байта в ОЗУ указывается 16-разрядным регистром-указателем X в регистровом файле. Обращение к памяти ограничено текущей страницей объемом 64 Кбайта. Для обращения к другой странице ОЗУ необходимо изменить регистр RAMPX в области ввода/вывода. Регистр-указатель X может остаться неизменным после выполнения команды, но может быть инкрементирован или декрементирован. Эта особенность очень удобна при использовании регистра-указателя X в качестве указателя стека.
Использование X-указателя:
|
Операция: |
|
Комментарий: |
(i) |
(X) <-- Rr |
|
X: Неизменен. |
(ii) |
(X) <-- Rr |
X <-- X + 1 |
X: Инкрементирован впоследствии. |
(iii) X <-- X - 1 |
( X) <-- Rr |
X: Предварительно декрементирован. |
|
104