Материал: Микропроцессорные устройства систем управления (2005)

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Регистр состояния микроконтроллера SREG I T H S V N Z C

Флаги регистра SREG (начиная со старшего бита):

I- флаг глобального разрешения прерывания, разрешает (1) или запрещает

(0) все аппаратные прерывания.

Т- флаг копирования бита, может быть скопирован из любого бита (или в любой бит) любого регистра общего назначения.

Н - флаг переноса между младшей и старшей тетрадой байта данных.

S - флаг знака, определяется суммой по mod 2 флагов N ® V. V - флаг переполнения (дополнения до двух).

N - флаг отрицательного результата (соответствует значению бита 7 ре­ зультата операции).

Z - флаг нулевого результата операции. С - флаг переноса.

При использовании команд с анализом флагов регистра SREG необходимо учитывать, что эти флаги формируются не всеми операциями, например, операции пересылки данных флаги не изменяют.

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

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

Rd - регистр, в который помещается результат операции (любой регистр общего назначения).

Rr - регистр, из которого поступает байт данных для операции (любой ре­ гистр общего назначения).

К- константа (байт данных), число в десятичном формате от 0 до 255, в шестнадцатеричном формате могут использоваться два варианта обо­ значения: 0x00 - Oxff или $00 - $ff, в двоичном формате - следующее обозначение: 0Ь00000000 — 0Ы1111111.

к- константа адрес (два байта в пределах каждого адресного пространст­ ва), также может указываться в десятичном, шестнадцатеричном или двоичном формате.

X, Y, Z - регистры косвенной адресации (в файле регистров общего назна­ чения регистр X - R27,R26; регистр Y - R29,R28; регистр Z - R30,R31).

Р - регистр файла регистров ввода-вывода.

75

b - бит от 0 до 7 в любом регистре (старший бит - 7, младший бит - 0). PC - программный счетчик.

STACK - стек.

РМ - память программ (FLASH).

4.1.1. Арифметические и логические команды

Команда

add Rd, Rr

adc Rd, Rr

adiwRd, К

sub Rd, Rr

subi Rd, К

sbc Rd, Rr

sbci Rd, К

sbiwRd, К

incRd Idee Rd

and Rd, Rr

andi Rd, К

or Rd, Rr

Описание

Флаги

Сложение,

HVNCZ

Rd <- Rd+Rr

 

Сложение с переносом,

HVNCZ

Rd «- Rd+Rr+C

 

Сложение слова (2 байта,

SVNCZ

R(d+l)Rd) с константой К,

R(d+l)Rd <- R(d+l)Rd+K

 

Вычитание,

HVNCZ

Rd <- Rd-Rr

 

Вычитание константы,

HVNCZ

Rd +- Rd-K

 

Вычитание с переносом,

HVNCZ

Rd «- Rd-Rr-C

 

Вычитание константы с пе­

HVNCZ

реносом,

Rd«- Rd-K-C

 

Вычитание из слова (2 байта,

SVNCZ

R(d-H)Rd) константы К,

R(d+l)Rd+-R(d+l)Rd-K

 

Инкремент,

Rd«— Rd+1

VNZ

Декремент,

Rd <— Rd-1

VNZ

Логическое И,

VNZ

Rd «- Rd*Rr

 

Логическое И с константой,

VNZ

Rd +- Rd*K

 

Логич. ИЛИ,

VNZ

Rd<-RdVRr

 

Таблица 2

Примечание

d=(24,26,28,30), K=(0-63)

d=(16~31)

d=(16-31)

d=(24,26,28,30), K=(0-63)

d=(16-31)

76

Команда ori Rd, К

eor Rd, Rr

com Rd neg Rd

asr Rd

lsl Rd

lsr Rd

rol Rd

ror Rd

Описание

Логическое ИЛИ с констан­ той, R d ^ R d V K

Исключающее ИЛИ,

1 Rcl«-Rd©Rr

Инверсия, Rd «- $ff-Rd

Дополнение, Rd *- $00-Rd

Арифметический сдвиг вправо, старший бит Rd(7) не изменяется, остальные биты Rd сдвигаются вправо, флаг С <- Rd(0)

Логический сдвиг влево, все биты Rd смещаются влево, младший бит Rd(0) <— 0. флаг С • - Rd(7)

Логический сдвиг вправо, все биты Rd смещаются вправо, старший бит

R d ( 7 ) < - 0 ^ a r O - R d ( 0 )

Циклический сдвиг влево с переносом, все биты Rd смещаются влево, младший бит Rd(0) <— С, флаг С «- Rd(7)

Циклический сдвиг вправо с переносом, все биты Rd смещаются вправо, старший бит Rd(7)«— С, флаг С <- Rd(0)

Продолжение табл. 2 Флаги Примечание

VNZ (Н16 - 31)

VNZ

VNZ

HVNCZ

VNCZ

VNCZ

VNCZ

VNCZ

VNCZ

t

77

Команда

tst Rd

ср Rd, Rr

срс Rd, Rr

cpi Rd, К

Описание

Тест на ноль или минус

Rd не изменяется, флаги Z и N определяются содержи­ мым Rd, V <-0

Сравнение, содержимое регистров не изменяется, флаги формиру­ ются в соответствии с ре­ зультатом вычитания

Rd~Rr Сравнение с учетом переноса, содержимое регистров не изменяется, флаги форми­ руются в соответствии с ре­ зультатом вычитания

R d - R r - C

Сравнение с константой, содержимое регистров не изменяет, флаги формиру­ ются в соответствии с ре­ зультатом вычитания

Rd-K

Окончание табл. 2

Флаги Примечание

SVNZ

HVNCZ

HVNCZ

HVNCZ d=(16-31)

Арифметические и логические команды реализуют стандартный набор операций с однобайтовыми данными микроконтроллера с RISC архитекту­ рой.

Примеры:

•команда add R3, R16 выполняет сложение содерэюимого регистров R3 и R16, полученная сумма будет записана в R3, содержимое регистра R16 не изменится, результат сложения определит значения флагов HVNCZ;

•команда subi R21, $F0 выполняет вычитание из содерэюимого регистра R21 числа 240 (в шестнадцатеричном формате $F0), полученная раз­ ность будет записана в R21, результат вычитания определит значения

флагов HVNCZ (в примечании указано ограничение на используемые в этой команде регистры общего назначения R16-R31);

•команда and R3, R4 выполняет поразрядную логическую операцию И (конъюнкцию) содерэюимого регистров R3 и R4, результат будет запи-

78

сан в R3, содержимое R4 не изменится, по результатам операции фор­ мируются только флаги VNZ;

• команда asr R0 выполняет деление на 2 числа со знаком в регистре R0, т. е. выполнится сдвиг вправо на один разряд всех битов регистра R0, кроме старшего знакового бита 7, младший бит 0 будет перемещен во флаг С, остальные флаги VNZ определяются результатом деления.

Некоторые модели микроконтроллеров серии AVR позволяют выполнять и другие операции. Например, модели megaAVR содержат аппаратный ум­ ножитель и выполняют операции умножения.

При подготовке программ необходимо учитывать ограничения, указан­ ные в примечаниях. Например, операции с константами допустимы не для всех регистров общего назначения. Во всех остальных случаях так же, как и в дальнейшем, регистры Rd и Rr - любые из регистров общего назначе­ ния.

Как и обычно, флаги регистра состояния SREG определяются результа­ том выполнения текущей операции. Если какой-либо флаг для команды не указан, это означает, что флаг данной операцией не изменяется. Команды сравнения не изменяют данные в регистрах, но, формируя соответствую­ щие флаги, позволяют использовать команды управления по состоянию этих флагов.

4.1.2. Команды пересылки данных

Таблица 3

Команда

mov Rd, Rr

ldi Rd, К

Ids Rd, k

sts k, Rr

in Rd, P

Описание

Пересылка данных между реги­

страми,

Rd «— Rr

 

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

 

Rd<-K

 

Пересылка данных в Rd

из

ОЗУ (адрес k), Rd <- ОЗУ(к)

Пересылка данных из Rr в

ОЗУ

(адрес к),

ОЗУ(к) <- Rr

 

Пересылка данных из регистра ввода-вывода Р в регистр Rd, Rd< - P

Флаги Примечание

Нет

Нет d=(16-31)

Нет

Нет

Нет

79

Источник: https://studfile.net/preview/16521245/