бесплано рефераты

Разделы

рефераты   Главная
рефераты   Искусство и культура
рефераты   Кибернетика
рефераты   Метрология
рефераты   Микроэкономика
рефераты   Мировая экономика МЭО
рефераты   РЦБ ценные бумаги
рефераты   САПР
рефераты   ТГП
рефераты   Теория вероятностей
рефераты   ТММ
рефераты   Автомобиль и дорога
рефераты   Компьютерные сети
рефераты   Конституционное право
      зарубежныйх стран
рефераты   Конституционное право
      России
рефераты   Краткое содержание
      произведений
рефераты   Криминалистика и
      криминология
рефераты   Военное дело и
      гражданская оборона
рефераты   География и экономическая
      география
рефераты   Геология гидрология и
      геодезия
рефераты   Спорт и туризм
рефераты   Рефераты Физика
рефераты   Физкультура и спорт
рефераты   Философия
рефераты   Финансы
рефераты   Фотография
рефераты   Музыка
рефераты   Авиация и космонавтика
рефераты   Наука и техника
рефераты   Кулинария
рефераты   Культурология
рефераты   Краеведение и этнография
рефераты   Религия и мифология
рефераты   Медицина
рефераты   Сексология
рефераты   Информатика
      программирование
 
 
 

Микроконтроллеры семейства AVR фирмы Atmel

Таблица 4

Операция Мнемокод команды Признаки результата
H S V N Z C
32 (Rd+1, Rd)+K→ Rd+1,Rd ADIWRd, K + + + + +
33 (Rd+1,Rd)-K→ Rd+1,Rd SBIW Rd, K + + + + +
d=24, 26, 28,30; K=0-63

6.2 Система команд

Таблица 5

Операция Мнемокод команды Операция Мнемокод команды
34 (Ячk) → Rd LDS Rd, K 35 (Rr) →Ячk STS k, Rr
d, r=0-31; k – адрес из адресного пространства SRAM

 

Таблица 6

Операция Мнемокод команды Операция Мнемокод команды
36 (Яч(X)) → Rd LD Rd, X 37 (Rr) →Яч(X) ST X, Rr
38 (Яч(Y)) → Rd LD Rd, Y 39 (Rr) →Яч(Y) ST Y, Rr
40 (Яч(Z)) → Rd LD Rd, Z 41 (Rr) →Яч(Z) ST Z, Rr
42 1.(Яч(X)) → Rd2. (X)+1→X LD Rd, X+ 43 1.(Rr)→Яч(X) 2.(X)+1→X ST X+, Rr
44 1.(Яч(Y)) → Rd2. (Y)+1→Y LD Rd, Y+ 45 1.(Rr)→Яч(Y) 2.(Y)+1→Y ST Y+, Rr
46 1.(Яч(Z)) → Rd2. (Z)+1→Z LD Rd, Z+ 47 1.(Rr)→Яч(Z) 2.(Z)+1→Z ST Z+, Rr
48 1.(X)-1→X              2. (Яч(X))→ Rd LD Rd, -X 49 1.(X)-1 →X 2.(Rr)→Яч(X) ST -X, Rr
50 1.(Y)-1→Y              2. (Яч(Y))→ Rd LD Rd, -Y 51 1.(Y)-1 →Y 2.(Rr)→Яч(Y) ST -Y, Rr
52 1.(Z)-1→Z              2. (Яч(Z))→ Rd LD Rd, -Z 53 1.(Z)-1 →Z 2.(Rr)→Яч(Z) ST -Z, Rr
54 (Яч(Y)+q) → Rd LDD Rd, Y+q 55 (Rr)→Яч(Y)+q STDY+q, Rr
56 (Яч(Z)+q) → Rd LDD Rd, Z+q 57 (Rr)→Яч(Z)+q STDZ+q, Rr
58 1.(SP)+1→SP              2. (СТЕК)→ Rd POP Rd 59 1.(Rr)-1→СТЕК 2.(SP)-1→SP PUSH Rr
d, r = 0-31; q=0-63

Таблица 7

Операция Мнемокод команды Операция Мнемокод команды
60 (PrP) → Rd IN Rd, P 61 (Pr) →PrP OUT P,Pr
d, r = 0-31; P=0-63=S00-$3F

 

Таблица 8

Операция Мнемокод команды

(Z.15-1) – адрес в FlashROM

Z.0 = 0 – мл. байт; Z.0 =1 –ст. байт

62 (Яч(Z))→ R0 LPM

Таблица 9

Операция Мнемокод команды Операция Мнемокод команды
63 T→ Rd.b BLD Rd, b 64 Rr.b →T BSTRr, b
65 0→ PrP.b CBI P, b 66 1→PrP.b SBI P, b
67 0→ SREG.b BLSR b 68 1→SREG.b SSET b
d, r = 0-31; P=0-31 (!); b= 0-7

 


Таблица 10

Операция Мнемокод команды Операция Мнемокод команды
69 0→I CLI Rd, X 70 1 →I SEI
71 0 →T CLT 72 1 →T SET
73 0→H CLH 74 1 →H SEH
75 0→S CLS 76 1→S SES
77 0→V CLV 78 1→V SEV
79 0→N CLN 80 1→N SEN
81 0→Z CLZ 82 1→Z SEZ
83 0→C CLC 84 1→C SEC

Таблица 11

Операция Мнемокод команды Операция Мнемокод команды
85 (PC)+1+k→PC RJMP k 86 (Z) →PC IJMP
87

(PC)+→СТЕК

(SP)-2→SP

(PC)+1+k→PC

RCALL k 88

(PC)+1→СТЕК

(SP)-2→SP

(Z) →PC

ICALL
89

(SP)+2→ SP

(СТЕК) →PC

RET 90

(SP)+2→SP

(СТЕК) →PC

1→I

RETI
k= -2048 - +2047

 

Таблица 12

Условие Мнемокод команды Условие Мнемокод команды
91 I = 0 BRID k 92 I = 1 BRIE k
93 T = 0 BRTC k 94 T = 1 BRTS k
95 H = 0 BRHC k 96 H = 1 BRHS k
97 S = 02. (X)+1→X BRGE k 98 S = 1 BRLT k
99 V = 0 BRVC 100 V = 1 BRVS k
101 N = 0 BRPL k 102 N = 1 BRMI k
103 Z = 0 BRNE k 104 Z = 1 BREQ k
105 C = 0 BRCC k 106 C = 1 BRCS k
107 C = 0 BRSH k 108 C = 1 BRLO k
109 SREG.b = 0 BRBC b, k 110 SREG.b = 1 BRBS b, k
k= -64 - +63; b = 0 - 7

Таблица 13

Условие Мнемокод команды Условие Мнемокод команды
111 Rr.b = 0 SBRC Rr, b 112 Rrb = 1 SBRS Rr, b
113 PrP.b = 0 SBIC P, b 114 PrP.b = 1 SPIS P, b
115 (Rd) = (Rr) CPSE Rd, Rr
d, r= 0 – 31; P = 0 – 31 (!); b = 0 - 7

Таблица 14

Операция Мнемокод команды
116 MK → режим энергосбережения SLEEP
117 Перезапуск WDT WDR
118 Нет NOP

6.3 Команды регистровых операций

В группу регистровых операций входят пересылочные, арифметические и логические операции. Команды регистровых операций описаны в табл. 2, 3 и 4 Машинные коды всех команд регистровых операций имеют формат «слово», команды №№ 1 – 31 выполняются за один такт, а команды №№ 32 и 33 – за два такта.

При описании операций в табл. 2 – 4 используются следующие обозначения:

▪ Rd, Rr – регистры общего назначения с номерами d и r соответственно;

▪ (Rd), (Rr) – байты в регистрах Rd и Rr соответственно;

▪ Rd.b – разряд b (b = 0 – 7) регистра Rd, бит в разряде Rd.b;

▪ $ - указатель шестнадцатеричного кода;

▪ ^, ˅,            - знаки логических операций И, ИЛИ, исключающее ИЛИ соответственно;

▪ (   ), (   ), (   ) – знаки операций НЕ, сдвиг кода вправо, сдвиг кода влево соответственно.

Арифметические операции – сложение и вычитание – могут выполняться с числами без знака в двоичном коде и с числами со знаком в дополнительном двоичном коде. В отличие от микроконтроллеров многих других семейств, в которых вычитание сводится к сложению с числом с изменённым знаком (X–Y = X + (-Y)), в микроконтроллерах семейства AVR вычитание выполняется с помощью аппаратного двоичного вычитателя.

При выполнении арифметических и логических операций кроме кода результата формируются значения признаков результата. При выполнении операций сравнения (команды №№ 18, 19 и 27) формируются только значения признаков результата.

Значения признаков результата представлены состоянием разрядов регистра состояния SREG (№$33F). Используются шесть признаков результата, которым присвоены имена C (SREG.0), Z(SREG.1) N (SREG.2), V (SREG.3, S (SREG.4) и H (SREG.5). В табл. 2.1 – 2.3 признаки, значения которых формируются при выполнении команд, отмечены знаком «+» или указано их название.

При выполнении разных операций значение признаков формируется по разным правилам.

Признак C принимает единичное значение:

▪ при появлении единицы переноса из старшего разряда при выполнении операции сложения (команды №№ 14, 15 и 32);

▪ при появлении единицы займа в старший разряд при выполнении операции сложения (команды №№ 4, 16, 17, 18, 19, 25, 26, 27 и 33);

▪ при выходе единицы за пределы разрядной сетки при выполнении операции сдвига (команды №№ 7, 8, 9, 10 и 11).

Единичное значение признака C при выполнении операций сложения и вычитания с числами без знака свидетельствует о получении неправильного результата операции  вследствие переполнения разрядной сетки.

Признак Z принимает единичное значение при получении нулевого результата операции. При выполнении операции вычитания с учётом займа (команды №№ 17, 19 и 26) Z = 1, если нулевой результат получен при выполнении данной и предшествующей операций.

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

Признак V принимает единичное значение, если при выполнении арифметической операции с числами со знаком возникло переполнение разрядной сетки.

Признак S = NV представляет знак результата при выполнении арифметических операций с числами со знаком вне зависимости от переполнения разрядной сетки. При переполнении разрядной сетки (V = 1) знак результата противоположен значению в старшем разряде кода результата.

Признак H принимает единичное значение при наличии единицы переноса из разряда D3 в разряд D4 при выполнении операции вычитания и при передаче единицы из разряда D3 в разряд D4 при выполнении операции кода влево.

6.4 Команды с обращением по адресу SRAM

По командам с обращением по адресу в адресном пространстве SRAM выполняются операции пересылки (копирования) байта между регистром общего назначения и элементом, которому соответствует адрес в адресном пространстве SRAM. Таким элементом может быть регистр общего назначения (адреса от $00 до $1F), регистр ввода-вывода (адреса от $20 до $5F), ячейка памяти в SRAM (адреса от $60 до максимального адреса в SRAM), ячейка памяти в ERAM(адреса от максимального адреса в SRAM +1 до максимального адреса в ERAM).

Команды с обращением по адресу в адресном пространстве SRAM описаны в табл. 2.4 и 2.5.

Машинные коды команд №№ 34 и 35 имеют формат «2 слова», машинные коды остальных команд – формат «слово». Команды выполняются за 2 такта, а при обращении к ячейкам в ERAM–за 3 такта. В случае необходимости в цикл выполнения команды при обращении к ERAM может быть введён дополнительный такт ожидания.

В табл.2.4 и 2.5 используются следующие новые обозначения:

▪ ЯчА – регистр общего назначения, регистр ввода-вывода, ячейка памяти в SRAM, ячейка памяти в ERAM, к которым производится обращение с использованием адреса А из адресного пространства SRAM;

▪ (ЯчА) – байт в ЯчА;

▪X, Y, Z – пара регистров общего назначения X (R26, R27), Y (R28, R29), Z (R30, R31) соответственно;

▪ (X), (Y), (Z) – слово в паре регистров X, Y, Z соответственно;

▪ СТЕК – ЯчА, к которой производится обращение с использованием адреса, хранящегося в регистре – указателе стека SP;

▪ (СТЕК) – байт в СТЕК, е;

▪ (SP) – код числа в регистре SP.

В командах №№ 34 и 35 реализуется прямая адресация. Адрес байта (A = k) указывается в коде команды.

В командах №№ 36 – 57 реализуется косвенная адресация. Адрес байта находится в паре регистров X, Y или Z. При выполнении команд №№ 48 – 53 до выполнения пересылки адрес в паре регистров аппаратно уменьшается на единицу. При выполнении команд №№ 54 – 57 адрес, по которому производится обращение, равен адресу в паре регистров Y или Z, увеличенному на единицу q, которое указано в коде команды. Адрес в паре регистров остаётся без изменения.

В командах №№ 58 и 59 в качестве кода адреса используется код, находящейся в регистре-указателе стека. При запуске микроконтроллера в регистр-указатель стека заносится код числа 0. Для нормальной работы стека в регистр – указатель стека в начале программы необходимо занести код другого числа. Обычно в качестве такого числа используют старший адрес в SRAM. Например, для микроконтроллера типа 8515 таким адресом является число $025F.

6.5 Команды с обращением к регистрам ввода-вывода

По командам с обращением к регистрам ввода-вывода выполняются операции пересылки (копирования) байта между регистром общего назначения и регистром ввода-вывода с использованием для выбора регистра ввода-вывода его номера ($00 - $3F). Команды с обращением к регистрам ввода-вывода описаны в табл. 6. Машинные коды команд имеют формат «слово». Команды выполняются за один такт.

В табл. 6 используются следующие новые обозначения:

▪ PrP – регистр ввода-вывода с номером P;

▪ (PrP) – байт в регистре PrP.

При записи мнемокода команды вместо конкретного номера регистра может использоваться его символическое имя. Все регистры ввода-вывода имеют штатные имена. У микроконтроллеров разных типов регистры ввода-вывода, имеющие одинаковые имена, могут иметь разные имена. При записи в мнемокодах имён регистров вместо их номера необходимо использовать версию AVR-Ассемблера для микроконтроллера данного типа.

6.6 Команда с обращением к FlashROM

По команде с обращением к FlashROM выполняется пересылка (копирование) байта из половины ячейки памяти в FlashROM в регистр общего назначения R0. Команда описана в табл. 2.7. Машинный код команды имеет формат «слово». Команда выполняется за три такта.

До выполнения команды необходимо адрес, соответствующий ячейке памяти в FlashROM, в которой хранится константа, умножить на 2 и записать в пару регистров Z (№№ $30, $31).

При умножении на 2 (сдвиг кода влево на один разряд) в младшем разряде регистра ZL ($30) оказывается цифра 0. При нулевом значении младшего разряда выбирается байт из младшей половины ячейки FlashROM. Для выбора байта из старшей половины ячейки необходимо число, код которого находится в паре регистров Z, увеличить на 1 с использованием команды № 33 с мнемокодом ADIWR30, 1 или ADIWZL, 1.

Запись констант в FlashROM выполняется при программировании микроконтроллера.

6.7 Команды операций с битами

Команды операций с битами описаны в табл. 2.8 и 2.9. Машинные коды всех команд имеют формат «слово». Команды №№ 65 и 66 выполняются за 2 такта, остальные команды – за 1 такт.

В табл. 2.8 используется следующее новое обозначение:

▪ PrP.b – разряд b (b = 0 – 7) регистра ввода-вывода с номером P (P = $00 - $1F (!)), бит в разряде PrP.b.

По командам №№ 63 и 64 выполняется пересылка (копирование) бита между указанным разрядом регистра общего назначения и разрядом Tрегистра SREG.

По командам №№ 65 и 66 устанавливается в требуемое состояние (0 или 1 соответственно) указанный разряд регистра ввода-вывода, а по командам №№ 67 и 68 – указанный разряд регистра SREG.

При записи мнемокода команд №№ 65 и 66 вместо номера регистра (P) может быть указанно его символическое имя, а вместо номера разряды (b) –символическое имя разряда. В микроконтроллерах семейства AVR разряды многих регистров ввода-вывода имеют штатные имена. Эти имена приводятся в тексте при рассмотрении устройств, в которых эти разряды используются.

В микроконтроллерах некоторых типов разряды одноимённых регистров с одинаковыми именами имеют разные номера. При использовании штатных имён регистров ввода-вывода в штатных имён разрядов в них необходимо использовать версию AVR Ассемблера для микроконтроллера соответствующего типа.

При назначении штатного имени разряда подразумевалось, что этот разряд принадлежит определённому регистру ввода-вывода, однако в мнемокоде команд №№ 65 и 66 необходимо указывать и имя/номер регистра и имя разряда.

Требуемое значение бита (0 или 1) в разрядах регистров ввода-вывода с номерами от $20 до $3Fустанавливается с использованием команд регистровых операций с мнемокодами CBR (№ 29) и SBR (№ 31) соответственно.

В табл. 10 приведены мнемокоды команд, по которым устанавливаются в определённое состояние (0 или 1) разряды регистра SREG без указания в мнемокоде команды номера разряда.

6.8 Команды управления ходом программы

В группу команд управления ходом программы входят команды безусловного и условного переходов, перехода в энергосберегающий режим, перезапуска сторожевого таймера и «холостая» команда.

В табл. 11 описаны команды безусловного перехода (№№ 85 и 86), безусловного перехода с возвратом (№№ 87 и 88), возврата из подпрограммы (№89) и возврата из прерывающей программы (№90). В таблице используются следующие новые обозначения:

▪ PC – счётчик команд;

▪ (PC) – код числа в счётчике команд;

▪ k – приращение числа в счётчике команд.

При записи программы на языке ассемблера в мнемокодах команд №№85 и 87 вместо приращения k указывается метка (символический адрес), записанная перед мнемокодом команды, к выполнению которой нужно перейти. Приращение вычисляется и помещается в машинный код команды в процессе ассемблирования.

Машинные коды команд, описанные в табл. 11, имеют формат «слово». Команды безусловного перехода (№№ 85 и 86) выполняются за 2 такта, команды безусловного перехода а возвратом (№№ 87 и88) – за 3 такта, команды возврата (№№89 и 90) – за 4 такта.

Группа команд условного перехода делится на две группы. В командах первой подгруппы в качестве условия используется равенство нулю или равенство единице одного из битов в регистре SREG. Условия и мнемокоды команд первой подгруппы приведены в табл. 12. Если условие выполняется, совершается переход по адресу, который формируется с использованием приращения k, указанного в коде команды ((PC) + 1 +k→PC; -64 ≤k≤ 63).

Если условие не выполняется, происходит переход к следующей команде в программе ((PC) + 1→PC).

При записи программы на языке ассемблера в мнемокоде команд вместо приращения k указывается метка (символический адрес), записанная перед мнемокодом команды, к выполнению которой нужно перейти, если условие выполняется.

Машинные коды команд первой подгруппы имеют формат «слово». При выполнении условия команда выполняется за 2 такта, при выполнении условия – за 1 такт.

Если условие не выполняется, совершается переход к очередной команде в программе ((PC) +1→PC). Если условие выполняется, происходит переход к выполнению команды, следующей за очередной ((PC) + 1 + 1/2→PC). Приращение числа в счётчике команд (1 или 2) определяется форматом машинного кода очередной команды (1 слово или 2 слова соответственно).

Машинные коды команд условного перехода второй подгруппы имеют формат «слово». Команды выполняются за один такт, если условие не выполняется, за 2 такта, если условие выполняется и очередная команда (K1) имеет формат «слово», или за 3 такта, если условие не выполняется и очередная команда (K1) имеет формат «2 слова».


Список литературы

1.  Белов А.В. Самоучитель разработчика устройств на микроконтроллерах AVR . – Санкт-Петербург, «Наука и техника» 2010 г.

2.  http://www.atmel.ru/

3.  ATtiny 2313 Data Sheet.

4.  Гребнев В.В. Микроконтроллеры семейства AVRфирмы Atmel. –М. «ИП РадиоСофт» 2002 г.


Страницы: 1, 2, 3


© 2010 САЙТ РЕФЕРАТОВ