8-розрядні КМОП RISC мікроконтролери з внутрішньосистемної програмованим Flash ПЗУ

[ виправити ] текст може містити помилки, будь ласка перевіряйте перш ніж використовувати.

скачати


Південно-Уральський державний університет

Заочний інженерно - економічний факультет

Контрольна (курсова) робота № 3

За Інформатиці

Виконав студент-заочник 2 го курсу

Шифр - ЕПА-04-588

Група - 247

«____»___________ 2009р. «____»___________ 2009р.

Термін надання роботи за графіком Дата відправки роботи

_____________ по журналу «____»___________ 2009р.

___________________ Хусаїнов Р.З.

відмітка про залік роботи

Викладач

____________________

Підпис викладача

«____»_____________ 2009р.

  1. ( x )= Sin ( x )+ Sin (3 x )/3 и F(x)=Sin(x)+Sin(3x)/3+Sin(5x)/5+Sin(7x)/7. Побудувати два графіка в одній координатній сітці: функція f (x) = Sin (x) + Sin (3 x) / 3 і F (x) = Sin (x) + Sin (3x) / 3 + ​​Sin (5x) / 5 + Sin (7x) / 7. Діапазон зміни змінної х Є [0; 6.28]. На графіку вивести позначення масштабів змінних, вивести назву графіка.

Програма:

/ * Програма побудови графіків функції * /

/ * F (x) = Sin (x) + Sin (3x) / 3 + ​​Sin (5x) / 5 + Sin (7x) / 7 * /

и f(x)=Sin(x)+Sin(3x)/3*/ / * І f (x) = Sin (x) + Sin (3x) / 3 * /

# Include <conio.h>

# Include <graphics.h>

# Include <math.h>

void main ()

{

/ * Ініціалізація графічного режиму і змінних * /

int i, a, bf = 220, bF = 220;

float x, db;

double dx;

int dr = VGA, mode = VGAHI;

initgraph (& dr, & mode, "c: \ \ TC \ \ BGI");

/ * Initgraph (& dr, & mode, "G: \ \ lang \ \ tc \ \ bgi ");*/

Прорисовка / * Промальовування осей * /

setbkcolor (BLACK); setlinestyle (0,0,2);

line (20,220,640,220) / * X * /

moveto (630,218); lineto (640,220); lineto (630,222); lineto (630,218);

line (20,0,20,440) / * Y * /

moveto (20,0); lineto (18,10); lineto (22,10); lineto (20,0);

Разметка / * Розмітка осей * /

setcolor (WHITE);

for (i = 20; i <440; i = i +20)

{Outtextxy (20, i-3 ,"-");}

outtextxy (30,420, "-1");

outtextxy (30,20, "1");

outtextxy (32,2, "Y");

outtextxy (630,205, "X");

Название / * Назва графіка * /

setfillstyle (1, GREEN);

bar (50,435,68,445);

settextstyle (6,0,1);

Функция f(x)=Sin(x)+Sin(3x)/3"); outtextxy (80,429, "- Функція f (x) = Sin (x) + Sin (3x) / 3");

setfillstyle (1, RED);

bar (50,455,68,465);

Функция F(x)=Sin(x)+Sin(3x)/3+Sin(5x)/5+Sin(7x)/7"); outtextxy (80,450, "- Функція F (x) = Sin (x) + Sin (3x) / 3 + ​​Sin (5x) / 5 + Sin (7x) / 7");

/ * Визначення приросту (x) і координат по осях * /

dx = 6.28/580; / * dx з кроком в 1 піксель по х * /

db = (460-20) / 2;

/ * Побудова графіка Sin (x) + (Sin (3x)) / 3 * /

moveto (20,220);

for (i = 0; i <= 580; i + +)

{

setlinestyle (0,0,4);

setcolor (GREEN);

x = dx * i;

a = 20 + i;

bf = 220-db * (sin (x) + (sin (3 * x)) / 3);

Рисуем f( х )*/ lineto (a, bf) / * Малюємо f (х) * /

moveto (a, bF) / * Переходимо до F (x) * /

/ * Побудова графіка Sin (x) + (Sin (3x)) / 3 + ​​(Sin (5x)) / 5 + (Sin (7x)) / 7 * /

setcolor (RED);

bF = 220-db * (sin (x) + (sin (3 * x)) / 3 + ​​(sin (5 * x)) / 5 + (sin (7 * x)) / 7);

Рисуем F( х )*/ lineto (a, bF) / * Малюємо F (х) * /

moveto (a, bf) / * Переходимо до f (x) * /

/ * Ставимо мітку по осі Х * /

if (i% (580/10) == 0)

{

setcolor (WHITE);

outtextxy (a, 217 ,"|");

moveto (a, bf);

gotoxy (a / 8 +2,15);

printf ("% 3.2f", x);

}

}

getch ();

closegraph ();

}

Приклад виконання:

2.Виполніть розрахунок певного інтеграла функції f (x) = Sin (x) + (Sin (3x)) / 3 методом трапеції. Діапазон зміни змінної х = [0; 6.28]. =20…150. Побудувати графік залежності похибки розрахунку інтеграла від кількості точок розрахунку N = 20 ... 150. Істинне значення розраховується за допомогою формули Ньютона-Лейбніца.

Програма:

/ * Програма побудови графіка залежності похибки розрахунку інтеграла * /

/ * Функції f (x) = Sin (x) + (Sin (3x)) / 3 при х = [0; 6.28], методом трапеції, * /

/ * Від кількості точок розрахунку 'n' = 20 ... 150 * /

# Include <conio.h>

# Include <math.h>

# Include <graphics.h>

void main ()

{

/ * Ініціалізація графічного режиму і змінних * /

int i, n, nn, nx = 150-20, a, a1, b, b1;

float w, da, db, k, ny = 4.45;

double st, sl, y, x, dx;

int dr = VGA, mode = VGAHI;

initgraph (& dr, & mode, "c: \ \ TC \ \ BGI");

/ * Initgraph (& dr, & mode, "G: \ \ lang \ \ tc \ \ bgi ");*/

Прорисовка / * Промальовування осей * /

textcolor (7); setcolor (7); setbkcolor (BLACK); setlinestyle (0,0,2);

line (50,380,640,380) / * X * /

moveto (630,382); lineto (640,380); lineto (630,378); lineto (630,382);

line (50,0,50,380) / * Y * /

moveto (50,0); lineto (48,10); lineto (52,10); lineto (50,0);

/ * Розмітка осей * /

/ * По осі 'Y' * /

for (i = 380, k = 0; i> = 60; i = i-(380-60) / 10, k + = ny/10)

{

outtextxy (45, i-3 ,"-");

gotoxy (1, i/16 +1);

printf ("% 3.2f", k);

}

По / * За осі 'X' * /

for (i = 50, k = 20; i <= 570; i = i + (570-50) / 13, k + = 10)

{

outtextxy (i-3, 380 ,"|");

gotoxy (i / 8 +1,25);

printf ("% 3.0f", k);

}

outtextxy (62,8 ,"%");

outtextxy (630,360, "n");

Название / * Назва графіка * /

settextstyle (6,0,2); setcolor (7);

outtextxy (10,420, "Графік залежності похибки розрахунку інтеграла, методом");

outtextxy (10,438, "трапеції, функції f (x) = Sin (x) + (Sin (3x)) / 3 при х = [0; 6.28]");

outtextxy (10,456, "від кількості точок розрахунку.");

outtextxy (160,8, "Кількість точок розрахунку? (20 ... 150 )-");

gotoxy (70,2); scanf ("% d", & nn);

/ * Визначення збільшення по осях * /

da = (570-50) / nx;

db = (380-60) / ny;

/ * Розрахунок ітеграла f (x) = Sin (x) + (Sin (3x)) / 3 * /

for (n = 20; n <= 150; n + +)

{

dx = 6.28 / n;

st = 0; sl = 0;

for (i = 0; i <n; i + +)

{

x = dx * i;

методом / * Методом трапеції * /

st +=((( sin (x) + (sin (3 * x)) / 3) + (sin (x + dx) + (sin (3 * (x + dx))) / 3)) / 2) * dx;

/ * Методом Ньютона-Лейбніца * /

y = sin (x) + (sin (3 * x)) / 3;

y + = 3 * (sin (x + dx / 3) + (sin (3 * (x + dx / 3))) / 3);

y + = 3 * (sin (x + dx * 2 / 3) + (sin (3 * (x + dx * 2 / 3))) / 3);

y + = (sin (x + dx) + (sin (3 * (x + dx))) / 3);

sl + = y / 8 * dx;

}

/ * Розрахунок похибки * /

w = (sl-st) / sl * 100;

if (n == nn)

{

setcolor (7);

Погрешность "); outtextxy (160,24, "Похибка");

gotoxy (56,3);

printf ("-% 6.4f%", w);

(80,24*2,"Значение интеграла:"); outtextxy (80,24 * 2, "Значення інтеграла:");

(160,24*3,"метод трапеции"); outtextxy (160,24 * 3, "метод трапеції");

(53,6); gotoxy (53,6);

("- %+20.18 f ", st ); printf ("-% +20.18 f", st);

(160,24*4-8,"метод Ньютона-Лейбница"); outtextxy (160,24 * 4-8, "метод Ньютона-Лейбніца");

(53,7); gotoxy (53,7);

printf ("-% +20.18 f", sl);

}

/ * Вивід у графік * /

setlinestyle (0,1,1); setcolor (GREEN);

a = 50 + da * (n-20);

b = 380-db * w;

if (n == 20) {a1 = a; b1 = b;}

else {line (a, b, a1, b1); a1 = a; b1 = b;}

if (n == nn)

{

setlinestyle (1,1,1); setcolor (7);

moveto (a, b); lineto (a, 380); moveto (a, b);

lineto (50, b); moveto (a, b);

}

}

getch ();

closegraph ();

}

Приклад виконання:

Алгоритм:

  1. 90 S \ LS 8535 и AT mega 8535 фирмы Atmel Corporation : параметры , архитектура, система команд. Високопродуктивні 8-разрадние RISC мікроконтролери сімейства AT90S AT 90 S \ LS 8535 і AT mega 8535 фірми Atmel Corporation: параметри, архітектура, система команд.

AT mega8535

AT mega8535L

микроконтроллеры с внутрисистемно программируемым Flash ПЗУ 8-розрядні КМОП RISC мікроконтролери з внутрішньосистемної програмованим Flash ПЗУ

Загальні відомості

фирмы « Atmel », микроконтроллеры семейства Mega являются 8-разрядными микроконтроллерами, предназначенными для встраиваемых приложений. Як і всі мікроконтролери AVR фірми «Atmel», мікроконтролери сімейства Mega є 8-розрядними мікроконтролера, призначеними для вбудованих додатків. - архитектурой позволяет достичь наилучшего соотношения быстродействие/энергопотребление. Вони виготовляються за малопотребляющей КМОП-технології, яка у поєднанні з удосконаленою RISC - архітектурою дозволяє досягти найкращого співвідношення швидкодія / енергоспоживання. . Контролери описуваного сімейства є найбільш розвиненими представниками мікроконтролерів AVR.

Відмінні особливості

семейства Mega относятся: До числа особливостей мікроконтролерів AVR сімейства Mega відносяться:

-память программ объемом 8 Кбайт (число цикле стирания/записи не менее 1000); • FLASH-пам'ять програм обсягом 8 Кбайт (число циклі стирання / запису не менш 1000);

оперативна пам'ять (статичне ОЗУ) об'ємом 512 байт;

) объем 512 байт (число циклов стирания/записи не мене 100000); • пам'ять даних на основі ЕСППЗУ (EEPROM) обсяг 512 байт (число циклів стирання / запису не менше 100000);

можливість захисту від читання і модифікації пам'яті програм і даних;

и JTAG ; • можливість програмування безпосередньо в системі через послідовні інтерфейси SPI і JTAG;

можливість самопрограмування;

1149.1 ( JTAG ); • можливість внутрішньосхемного налагодження відповідно до стандарту IEEE 1149.1 (JTAG);

-генератор с внутренней или внешней времязадающей RC -цепочкой или с внешним резонатором (пьезокерамическим или кварцевым); внешний сигнал синхронизации; • різні способи синхронізації: вбудований RC-генератор з внутрішньої чи зовнішньої времязадающей RC-ланцюжком або з зовнішнім резонатором (п'єзокерамічним або кварцовим); зовнішній сигнал синхронізації;

наявність декількох режимів зниженого енергоспоживання;

- out detector , BOD ); • наявність детектора зниження напруги живлення (brown - out detector, BOD);

можливість програмного зниження частоти тактового генератора.

Характеристики процесора

такие же, что и у микроконтроллеров других семейств — Classic и Tiny : Переважна більшість основних характеристик процесора мікроконтролерів сімейства Mega такі ж, що і у мікроконтролерів інших сімейств - Classic і Tiny:

повністю статична архітектура; мінімальна тактова частота дорівнює нулю;

АЛУ підключено безпосередньо до регістрів загального призначення;

багаторівнева система переривань; підтримка черги переривань.

имеет ряд характеристик, присущих именно этому семейству: У той же час процесор мікроконтролерів сімейства Mega має ряд характеристик, притаманних саме цього сімейства:

130 команд, більшість команд виконуються за один машинний цикл;

17 внутрішніх +3 зовнішніх джерел переривань;

наявність програмного стека у всіх моделях сімейства;

наявність апаратного помножувача.

Характеристики підсистеми вводу / виводу

такие же, как и у микроконтроллеров других семейств: Всі характеристики підсистеми вводу / виводу мікроконтролерів сімейства Mega такі ж, як і у мікроконтролерів інших родин:

програмне конфігурування і вибір портів введення / виводу;

висновки можуть бути запрограмовані як вхідні або як вихідні незалежно один від одного;

вхідні буфери з тригером Шмітта на всіх висновках;

можливість підключення до всіх входів внутрішніх підтягаючих резисторів (опір резисторів становить 35 ... 120ком).

Периферійні пристрої

имеют наиболее богатый набор периферийных устройств (ПУ). Мікроконтролери сімейства Mega мають найбільш багатий набір периферійних пристроїв (ПУ). . При цьому в більшості моделей є всі ПУ, які взагалі зустрічаються у складі мікроконтролерів AVR. Цими пристроями є:

2 а 8-розрядних таймера / лічильника (таймери ТО і Т2

16-розрядний таймер / лічильник (таймер ТЗ);

4 генератора сигналу з ШІМ розрядністю 8 біт (один з режимів роботи 8-розрядних таймерів / лічильників ТО і Т2);

аналоговий компаратор;

багатоканальний 10-розрядний АЦП як з несиметричними, так і з диференціальними входами;

); • повнодуплексний універсальний синхронний / асинхронний приймач (USART);

; • послідовний синхронний інтерфейс SPI;

(аналог интерфейса 1 2 С). • послідовний двопровідний інтерфейс TWI (аналог інтерфейсу 1 2 С).

Архітектура ядра

семейства Mega выполнено по усовершенствованной RISC -архитектуре ( enhanced RISC ). Ядро мікроконтролерів AVR сімейства Mega виконано за вдосконаленою RISC-архітектурі (enhanced RISC). Арифметико-логічний пристрій (АЛП), що виконує усі обчислення підключено безпосередньо до 32-м робочих регістрів, об'єднаним у регістровий файл. Завдяки цьому АЛУ виконує одну операцію (читання вмісту регістрів, виконання операції і запис результату назад у регістровий файл) за один машинним цикл. Практично кожна з команд (за винятком команд у яких одним з операндів є 16-розрядний адреса) займає одну комірку пам'яті програм.

90 S 8535 AT 90 S 8535

90 LS 8535 AT 90 LS 8535

8-розрядні КМОП RISC

ПЗУ мікроконтролери з внутрішньосистемної програмованим Flash ПЗУ

Відмінні особливості

архитектура - архитектура высокой производительности и малого потребления • AVR RISC архітектура - архітектура високої продуктивності та малого споживання

118 команд, більшість яких виконується за один машинний цикл

ПЗУ программ, с возможностью внутрисистемного перепрограммирования и загрузки через SPI последовательный канал,1000 циклов стирание/запись • 8 Кбайт Flash ПЗУ програм, з можливістю внутрішньосистемного перепрограмування і завантаження через SPI послідовний канал, 1000 циклів стирання / запис

последовательный канал, 100000 циклов стирание/запись • 512 байтів ЕСППЗУ даних, з можливістю внутрішньосистемного перепрограмування і завантаження через SPI послідовний канал, 100000 циклів стирання / запис

512 байтів вбудованого СОЗУ

8 бит регистра общего назначения • 32 x 8 біт регістра загального призначення

32 програмовані лінії вводу / виводу

8-канальний 10-розрядний аналого-цифровий перетворювач

16-розрядний і 32-розрядний формат команд

Програмований повний дуплексний UART

90 LS 8535) и от 4,0 В до 6,0 В ( AT 90 S 8535) • Діапазон напруг живлення від 2,7 В до 6,0 В (AT 90 LS 8535) і від 4,0 В до 6,0 В (AT 90 S 8535)

Повністю статичний прилад - працює при тактовій частоті від 0 Гц до 8 МГц

90 S 8535) и при тактовой частоте от 0 Гц до 4 МГц ( AT 90 LS 8535) (AT 90 S 8535) і при тактовій частоті від 0 Гц до 4 МГц (AT 90 LS 8535)

при частоте 8 МГц • Продуктивність до 8 MIPS при частоті 8 МГц

Два 8-розрядних таймера / лічильника з окремим прескалером і режимом порівняння

16-розрядний (з режимами порівняння і захоплення) таймер / лічильник з окремим прескалером

Три ШІМ каналу

Зовнішні та внутрішні джерела сигналів переривання

Програмований сторожовий таймер з власним вбудованим генератором

Вбудований аналоговий компаратор

Вбудований годинник реального часу з власним вбудованим генератором і режимом лічильника

Блокування режиму програмування

), экономичный ( power save ) и стоповый( power down ) • Режими енергозбереження: пасивний (idle), економічний (power save) і стоповий (power down)

Вбудована схема скидання з подачі харчування

...85° C ) и коммерческий (0° C ...70° C ) диапазоны температур • Промисловий (-40 ° C ... 85 ° C) і комерційний (0 ° C ... 70 ° C) діапазони температур

и 44-выводные PLCC и TQFP • 40-вивідний корпус PDIP і 44-вивідні PLCC та TQFP

Архітектура мікроконтролерів сімейства Mega

семейства Mega являются 8-разрядными микроконтроллерами с RISC -архитектурой. Мікроконтролери AVR сімейства Mega є 8-розрядними мікроконтролера з RISC-архітектурою. ) и данных ( EEPROM ), а также разнообразные периферийные устройства. Вони мають електрично зникає пам'ять програм (FLASH) і даних (EEPROM), а також різноманітні периферійні пристрої. имеют самый богатый набор периферийных устройств по сравнению с микроконтроллерами других семейств. Слід зазначити, що мікро контролери сімейства Mega мають найбагатший набір периферійних пристроїв у порівнянні з мікроконтролера інших сімейств. Більш того, склад цих пристроїв від моделі до моделі практично не змінюється (змінюються лише їх функціональні можливості). 1 ( Two Wire Interface , аналог шины 1 2 С), а также модуль интерфейса JTAG . До пристроїв, присутнім не у всіх моделях сімейства, відносяться АЦП, модуль двопровідного інтерфейсу TW 1 (Two Wire Interface, аналог шини 1 2 С), а також модуль інтерфейсу JTAG. приведена на Рис. Структурна схема мікроконтролерів сімейства Mega наведена на Рис.

Організація пам'яті

реализована Гарвардская архитектура, в соответствии с которой разделены не только адресные пространства памяти программ и памяти данных, но также и шины доступа к ним. У мікроконтролерах AVR реалізована Гарвардська архітектура, відповідно до якої розділені не тільки адресні простори пам'яті програм і пам'яті даних, але також і шини доступу до них. Способи адресації і доступу до цих областей пам'яті також різні. Така структура дозволяє центральному процесору працювати одночасно як з пам'яттю програм, так і з пам'яттю даних, що істотно обмежує продуктивність. ) также расположена в своем адресном пространстве. Кожна з областей пам'яті даних (ОЗУ і EEPROM) також розташована в своєму адресному просторі.

Пам'ять програм

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

-ПЗУ). Як вже було сказано, пам'ять програм являє собою електрично стирані ППЗУ (FLASH-ПЗУ). У зв'язку з тим що довжина всіх команд кратна одному слову (16 біт), пам'ять програм має 16-розрядну організацію. Відповідно, обсяг пам'яті мікроконтролерів сімейства становить 8К (8x1024) 16-розрядних слів. Логічно пам'ять програм розділена на дві нерівні частини - область прикладної програми і область завантажувача. В останній може розташовуватися спеціальна програма (завантажувач), що дозволяє мікроконтролеру самостійно управляти завантаженням і вивантаженням прикладних програм. Якщо ж можливість самопрограмування мікроконтролера не використовується, прикладна програма може розташовуватися і в області завантажувача.

— Program Counter ). Для адресації пам'яті програм використовується лічильник команд (PC - Program Counter). Розмір лічильника команд складає 12разрядов

За адресою $ 0000 пам'яті програм знаходиться вектор скидання. Після ініціалізації (скидання) мікроконтролера виконання програми починається з цієї адреси (за цією адресою має розміщуватись команда переходу до ініціалізаційний частини програми). Починаючи з адреси $ 001 пам'яті програм, розташовується таблиця векторів переривань. Розмір цієї області 20 байт ($ 001 ... $ 014).

У разі переривання після збереження в стеці поточного значення лічильника команд відбувається виконання команди, розташованої за адресою відповідного вектора. Тому за цими адресами розташовуються команди переходу до підпрограм обробки переривань. . В якості цих команд використовуються команди відносного переходу (RJMP.

Якщо переривання в програмі не використовуються або таблиця векторів переривань розташовується в області завантажувача, то основна програма може починатися безпосередньо з адреси $ 0001.

Як відомо, пам'ять програм може використовуватися не тільки для зберігання коду програми, але також і для зберігання різних констант. . Для пересилання байта з пам'яті програм у пам'ять даних є спеціальна команда - LPM. адрес, по которому производится чтение, определяется содержимым индексного регистра Z . При використанні команди LPM адреса, за якою проводиться читання, визначається вмістом індексного регістра Z. При цьому старші 15 розрядів вмісту регістра будуть визначати адресу слова (0 ... 32К), а молодший розряд буде визначати, який з байтів буде прочитаний: «О» - молодший байт, «1» - старший байт

-ПЗУ, используемое в микроконтроллерах AVR , рассчитано как минимум на 1000 циклов стирания/записи. На закінчення слід зазначити, що FLASH-ПЗУ, що використовується в мікроконтролерах AVR, розрахований як мінімум на 1000 циклів стирання / запису.

Пам'ять даних

). Пам'ять даних мікроконтролерів розділена на три частини: реєстрова пам'ять, оперативна пам'ять (статичне ОЗУ) та енерго незалежне ЕСППЗУ (EEPROM).

Реєстрова пам'ять включає 32 регістри загального призначення (РОН), об'єднаних у файл, і службові регістри введення / виводу (РВВ).

У обох областях регістрів вводу / виводу розташовуються різні службові регістри (регістр управління микроконтроллером, регістр стану і т. п.), а також регістри управління периферійними пристроями, що входять до складу мікроконтролера

Для зберігання змінних програм крім регістрів загального призначення також може використовуватися статичне ОЗУ об'ємом 512 байт.

-память. Для довготривалого зберігання різної інформації, яка може змінюватися в процесі функціонування готової системи (калібровані константи, серійні номери, ключі і т. п.), в мікроконтролерах використовується EEPROM-пам'ять. Її обсяг становить 512 байт. Ця пам'ять розташована в окремому адресному просторі, а доступ до неї здійснюється за допомогою певних РВВ.

Статичне ОЗП

используется линейная организация памяти. Перш за все, слід сказати, що в мікроконтролерах AVR використовується лінійна організація пам'яті. Обсяг статичного ОЗУ складає 512 байт

У адресному просторі ОЗУ також розташовані всі регістри мікроконтролерів, під них відведено молодші 96 адрес. Інші адреси відведені під 512ячеек статичного ОЗУ

Кожен регістр має свою власну адресу в просторі пам'яті даних. Тому до них можна звертатися двома способами (як до регістрів і як до пам'яті), незважаючи на те що фізично ці регістри не є осередками ОЗУ. , повышаю щей эффективность работы микроконтроллера и его производительность. Таке рішення є ще однією характерною особливістю архітектури AVR, підвищую щей ефективність роботи мікроконтролера і його продуктивність.

. Регістри введення / виводу

Всі регістри введення / виведення умовно можна розділити на дві групи - службові регістри мікроконтролера і регістри, відносячи щиеся до конкретних периферійних пристроїв (в т. ч. регістри портів введення / виводу).

(как и в микроконтрол лерах остальных семейств) регистры ввода/вывода располагаются в так называемом пространстве ввода/вывода размером 64 байта У всіх мікроконтролерах сімейства Mega (як і в Мікроконтрол лерах інших сімейств) регістри введення / виводу розташовуються в так званому просторі введення / виведення розміром 64 байта

и OUT , выполняющих пересылку данных между одним из 32-х РОН и пространством ввода/вывода. До РВВ, розташованим в основному просторі введення / виведення, можна безпосередньо звернутися за допомогою команд IN і OUT, що виконують пересилання даних між одним з 32-х РОН і простором введення / виводу. и CBI ) и команды проверки состояния отдельного бита ( SBIS и SBIC ). У системі команд є також чотири команди порозрядного доступу, що використовують в якості операндів регістри введення / виводу: команди установки / скидання окремого біта (SBI і CBI) та команди перевірки стану окремого біта (SBIS і SBIC). ). На жаль, ці команди можуть звертатися тільки до 1-ій половині основних регістрів вводу / виводу (адреси $ 00 ... $ 1 F).

и OUT ), к РВВ можно обращаться и как к ячейкам ОЗУ с помощью соответствующих команд ST / SD / SDD и LD / LDS / LDD Крім безпосередньої адресації (за допомогою команд IN і OUT), до РВВ можна звертатися і як до осередків ОЗУ за допомогою відповідних команд ST / SD / SDD і LD / LDS / LDD

). У першому випадку використовуються адреси РВВ, що належать основному простору вводу / виводу ($ 00 ... $ 3 F). У другому випадку адреса РВВ необхідно збільшити на $ 20.

Серед всіх РВВ є один регістр, використовуваний найбільш часто в процесі виконання програм. . Цим регістром є регістр стану SREG. ($5 F ) и содержит набор флагов, показывающих текущее состояние микроконтроллера. Він розташовується за адресою $ 3 F ($ 5 F) і містить набір прапорів, що показують поточний стан мікроконтролера. Більшість прапорів автоматично встановлюються в «1» або скидаються в «О» при настанні певних подій (відповідно до результату виконання команд). Всі розряди цього регістра доступні як для читання, так і для запису; після скидання мікроконтролера всі розряди регістра скидаються в «О».

Способи адресації пам'яті даних

Мікроконтролери підтримують 8 способів адресації для доступу до різних областей пам'яті даних (РОН, РВВ, ОЗУ).

Взагалі кажучи, в дійсності способів адресації всього два: пряма адресація і непряма. Проте кожен спосіб адресації має декілька різновидів залежно від того, до якої області пам'яті проводиться звернення (при прямій адресації) або які додаткові дії виконуються над індексним регістром (при непрямій адресації).

Пряма адресація

При прямої адресації адреси операндів містяться безпосередньо в слові команди. У відповідності зі структурою пам'яті даних існують такі різновиди прямої адресації: пряма адресація одного РОН, пряма адресація двох РОН, пряма адресація РВВ, пряма адресація ОЗУ.

Непряма адресація

При використанні команд непрямої адресації з інкрементом поста після звернення за адресою, що знаходиться в індексному регістрі, вміст індексного регістра збільшується на 1.

Адресація ОЗУ

, X +/ Y +/ Z + (пересылка байта из ОЗУ в РОН) и ST X +/ Y +/ Z +, Rd (пересылка байта из РОН в ОЗУ). Мікроконтролери сімейства підтримують 6 команд (по 2 для кожного індексного регістра) непрямої адресації з інкрементом поста: LD Rd, X + / Y + / Z + (пересилання байта з ОЗУ в РОН) і ST X + / Y + / Z +, Rd ( пересилання байта з РОН в ОЗУ). Адреса регістра загального призначення міститься в розрядах 8 ... 4 слова команди.

) Незалежна пам'ять даних (EEPROM)

имеют в своем составе энергонезависимую память ( EEPROM -память). Всі мікроконтролери сімейства Mega мають у своєму складі енергонезалежну пам'ять (EEPROM-пам'ять). -память расположена в своем адресном пространстве и так же, как и ОЗУ, организована линейно. Обсяг цієї пам'яті 512 байт. EEPROM-пам'ять розташована в своєму адресному просторі і так само, як і ОЗУ, організована лінійно. -памятью используются три регистра ввода/вывода: регистр адреса, регистр данных и регистр управления. Для роботи з EEPROM-пам'яті використовуються три регістра введення / виводу: регістр адреси, регістр даних і регістр управління.

Регістр адреси

-памяти EEAR ( EEPROM Address Register ) физически размещается в двух РВВ EEARH : EEARL , расположенных по адресам $1 F ( S 3 F ) и $1Е ($ЗЕ) соответственно. Регістр адреси EEPROM-пам'яті EEAR (EEPROM Address Register) фізично розміщується у двох РВВ EEARH: EEARL, розташованих за адресами $ 1 F (S 3 F) і $ 1Е ($ ЗЕ) відповідно. У цей регістр завантажується адреса комірки, до якої буде здійснюватись звернення. Регістр адреси доступний як для запису, так і для читання. задействуются только младшие разряды (количество задействованных разрядов зависит от объема EEPROM -памяти). При цьому в регістрі EEARH задіюються лише молодші розряди (кількість задіяних розрядів залежить від обсягу EEPROM-пам'яті). доступны только для чтения и содержат «О». Незадіяні розряди регістра EEARH доступні тільки для читання і містять «О».

Регістр даних

-памяти EEDR ( EEPROM Data Register ) расположен по адресу $1 D ($3 D ). Регістр даних EEPROM-пам'яті EEDR (EEPROM Data Register) розташований за адресою $ 1 D ($ 3 D). . При записі в цей регістр завантажуються дані які повинні бути завантажені в EEPROM. . При читанні містяться дані лічені з EEPROM.

Регістр управління

-памяти EECR ( EEPROM control Register ) расположен по адресу $1С ($3 C ). Регістр управління EEPROM-пам'яті EECR (EEPROM control Register) розташований за адресою $ 1С ($ 3 C). -памяти Цей регістр використовується для управління доступом до EEPROM-пам'яті

Переривання

Загальні відомості

Переривання припиняє нормальний хід програми для виконання пріоритетного завдання, визначається внутрішнім або зовнішнім подія »мікроконтролера. и загружает в него адрес соответствующего вектора прерывания. У разі переривання мікроконтроллер зберігає в стеку вміст лічильника команд PC і завантажує в нього адресу відповідного вектора переривання. За цією адресою, як правило, знаходиться команда безумовного переходу до підпрограми обробки переривання. , которая обеспечивает возврат в основную программу и восстановление предварительно сохраненного счетчика команд. Останньою командою підпрограми обробки переривання повинна бути команда RETI, яка забезпечує повернення в основну програму і відновлення попередньо збереженого лічильника команд.

Оскільки джерелами переривань, зокрема, є різні периферійні пристрої мікроконтролерів, кількість переривань залежить від конкретної моделі.

Таблиця векторів переривань

, микроконтроллеры семейства Mega имеют многоуровневую систему приоритетных прерываний. Як і всі мікроконтролери AVR, мікроконтролери сімейства Mega мають багаторівневу систему пріоритетних переривань. Молодші адреси пам'яті програм починаючи з адреси $ 0001 відведені під таблицю векторів переривання. Кожному переривання відповідає адреса в цій таблиці, який завантажується в лічильник команд при виникненні переривання. Положення вектора в таблиці також визначає і пріоритет відповідного переривання: чим менше адресу, тим вищий пріоритет переривання. Розмір вектора переривання залежить від обсягу пам'яті програм мікроконтролера і становить 1 байт. . Відповідно для переходу до підпрограм обробки переривань використовуються команди RJMP.

Таблиця може розташовуватися не тільки і початку пам'яті програм, а також і на початку області завантажувача. Причому переміщення таблиці може бути здійснено безпосередньо в ході виконання програми.

: IVSEL (1-й разряд) и IVSE (0-й разряд). Управління розміщенням таблиці переривань здійснюється двома молодшими розрядами регістрів GICR: IVSEL (1-й розряд) та IVSE (0-й розряд). определяет положение таблицы в памяти программ. Стан прапора IVSEL визначає положення таблиці в пам'яті програм. Якщо прапор скинутий в «О», таблиця векторів переривань розташовується на початку пам'яті програм, якщо прапорець встановлений в «1» - на початку області завантажувача. 1 и BOOTSZO . Конкретне значення початкового адреси області завантажувача залежить від установок конфігураційних осередків BOOTSZ 1 і BOOTSZO. СЕ предназначен для разрешения изменения флага IVSEL . Розряд IV РЄ призначений для вирішення зміни прапора IVSEL.

СЕ в «1» и затем в течение следующих четырех машинных циклов занести требуемое значение в разряд IVSEL . Для зміни положення таблиці векторів переривань необхідно встановити розряд IV РЄ в «1» і потім протягом наступних чотирьох машинних циклів занести необхідну значення в розряд IVSEL. сбрасывается в «О». При цьому розряд IVCE скидається в «О». СЕ будет сброшен аппаратно по истечении четырех машинных циклов, запрещая дальнейшее изменение флага IVSEL . В іншому випадку розряд IV РЄ буде скинутий апаратно після закінчення чотирьох машинних циклів, забороняючи подальша зміна прапора IVSEL.

. На час виконання описаної послідовності переривання автоматично забороняються і дозволяються тільки після скидання прапора IVCE. регистра SREG при этом не меняется. Стан прапора I регістру SREG при цьому не змінюється. Якщо переривання в роботі мікроконтролера не передбачаються, то на місці таблиці векторів переривань може бути розміщена частина основної програми

Лічильник команд та виконання програми

Лічильник команд

Лічильник команд представляє собою регістр, в якому міститься адреса наступної виконуваної команди. Напряму з програми він недоступний. Розмір лічильника команд залежить від обсягу наявної пам'яті програм і становить 12 розрядів.

При нормальному виконанні програми вміст лічильника команд автоматично збільшується на 1 або на 2 (залежно від виконуваної команди) у кожному машинному циклі. Цей порядок порушується при виконанні команд переходу, виклику і повернення з підпрограм, а також при виникненні переривань.

Після включення живлення, а також після скидання мікроконтролера в лічильник програм автоматично завантажується стартовий адреса $ 0000 або початковий адресу сектора завантажувача. Як правило, за цією адресою розташовується команда безумовного переходу до ініціалізаційний частини програми.

У разі переривання в лічильник команд завантажується адреса відповідного вектора переривання. Якщо переривання використовуються в програмі, за адресами векторів переривань повинні розміщатися команди переходу до підпрограм обробки переривань.

, в микроконтроллерах семейства Mega используется конвейерная обработка команд. Як і у всіх мікроконтролерах AVR, в мікроконтролерах сімейства Mega використовується конвеєрна обробка команд.

Абсолютний виклик підпрограми - команда CALL

При виконанні команди після збереження в стеці поточного значення лічильника команд в останній завантажується число, що є операндом команди. . За допомогою цієї команди можна здійснювати виклик в межах всього адресного простору наявних на сьогоднішній день мікроконтролерів AVR.

Команда абсолютного виклику підпрограм виконується за 4 машинних циклу.

Непрямий виклик підпрограми - команда ICALL

сначала сохраняет в стеке значение счетчика команд. Команда ICALL спочатку зберігає в стеку значення лічильника команд. Потім в лічильник команд завантажується вміст індексного регістра. Максимально можлива величина переходу становить 64К слів (128 Кбайт), тому дана команда також не має обмежень по області дії.

, команда косвенного вызова подпрограмм выполняется за 3 машинных цикла. Як і команда RCALL, команда непрямого виклику підпрограм виконується за 3 машинних циклу.

Команди повернення з підпрограм

В кінці кожної підпрограми обов'язково повинна перебувати команда повернення з неї. У системі команд мікроконтролерів сімейства є дві такі команди. , используется команда RET . Для повернення зі звичайної підпрограми, що викликається командою RCALL, використовується команда RET. . Для повернення з підпрограми обробки переривання використовується команда RETI.

Обидві команди відновлюють з стека вміст лічильника команд, збережене там перед переходом до підпрограми. дополнительно устанавливает в «1» флаг общего разрешения прерываний I регистра SREG , сбрасываемый аппаратно при возникновении прерывания. Команда повернення з підпрограми RETI додатково встановлює в «1» прапор загального дозволу переривань I регістру SREG, що скидається апаратно при виникненні переривання.

На виконання кожної з команд повернення з підпрограми потрібно 4 машинних циклу.

Стек

У всіх мікроконтролерах сімейства стек реалізований програмно. Він розміщується в пам'яті даних, і його глибина визначається тільки розміром вільної області пам'яті програм. : SPL , расположенных по адресам $ЗЕ ($5Е) и $3 D ($5 D ) соответственно. В якості покажчика стека у всіх моделях використовується пара регістрів вводу / виводу SPH: SPL, розташованих за адресами $ ЗЕ ($ 5Е) і $ 3 D ($ 5 D) відповідно. Так як після подачі напруги живлення (або після скиду) в регістрах міститься нульове значення, на самому початку програми покажчик стека необхідно проініціалізувати, записавши в нього значення верхньої адреси пам'яті даних.

При виклику підпрограм адреса команди, розташованої за командою виклику, зберігається в стеку. Значення покажчика стека при цьому зменшується на 2, тому що для зберігання лічильника команд потрібно 2 байта. При поверненні з підпрограми цю адресу вилучають із стека і завантажується в лічильник команд. Значення покажчика стека відповідно збільшується на 2. Те ж відбувається і під час переривання. При генерації переривання адреса наступної команди зберігається в стеку, а при поверненні з підпрограми обробки переривання він відновлюється з стека.

У всіх моделях мікроконтролерів сімейства стек доступний програмно. ) и команда извлечения из стека ( POP ). Для роботи зі стеком у наборі команд є дві команди: команда занесення в стек (PUSH) і команда вилучення зі стека (POP).

Порти введення / виводу

Загальні відомості

Кожен порт мікроконтролерів складається з певної кількості висновків, через які мікроконтроллер може здійснювати прийом і передачу цифрових сигналів. Завдання напрями передачі даних через будь-який контакт введення / виведення може бути вироблено програмно в будь-який момент часу.

Вихідні буфери всіх портів, маючи симетричні характеристики навантажень, забезпечують високу навантажувальну здатність при будь-якому рівні сигналу. Навантажувальної здатності достатньо для безпосереднього управління світлодіодними індикаторами.

Вхідні буфери всіх висновків побудовані за схемою тригера Шмітта. Для всіх входів є можливість підключення внутрішнього подтягивающего резистора між входом і шиною живлення.

(как и всех микроконтроллеров AYR ) при использовании их в качестве цифровых портов ввода/вывода общего назначения является реализация истинной функциональности вида «чтение/модификация/запись». Відмінною особливістю портів мікроконтролерів сімейства Mega (як і всіх мікроконтролерів AYR) при використанні їх в якості цифрових портів введення / виведення загального призначення є реалізація істинної функціональності виду «читання / модифікація / запис». и CBI ), не влияя на другие выводы порта. Завдяки цьому можна виконувати операції над будь-яким висновком (за допомогою команд SBI і CBI), не впливаючи на інші висновки порту. Це відноситься до зміни режиму роботи контакту вводу / виводу, до зміни стану вихідного буфера (для виходів) і до зміни стану внутрішнього подтягивающего резистора (для входів).

Регістри портів введення / виводу

Звернення до портів проводиться через регістри введення / виводу. , регистр направления данных DDRx и регистр выводов порта PINx . Під кожен порт в адресному просторі вводу / виводу зарезервовано по 3 адреси, за якими розміщені такі регістри: регістр даних порту PORTx, регістр напрями даних DDRx і регістр висновків порту PINx. , DDRA , PINA , порта В — PORTB , DDRB , PINB и т. д. Поскольку с помощью регистров PIN * осуществляется доступ к физическим значениям сигналов на выводах порта, они доступны только для чтения, тогда как остальные два регистра доступны и для чтения, и для записи. Дійсні назви регістрів виходять підстановкою назви порту замість символу «х», відповідно регістри порту А називаються PORTA, DDRA, PINA, порту В - PORTB, DDRB, PINB і т. д. Оскільки з допомогою регістрів PIN * здійснюється доступ до фізичним значенням сигналів на висновках порту, вони доступні лише для читання, тоді як інші два регістри доступні і для читання, і для запису.

Таймери

Таймер / лічильник ТО має мінімальний набір функцій. Він може використовуватися тільки для відліку і виміру тимчасових інтервалів або як лічильник зовнішніх подій, можливість генерації сигналів з ​​широтно-імпульсною модуляцією (ШІМ) фіксованої розрядності, а також можливість працювати в асинхронному режимі як годин реального часу.

Таймер / лічильник Т2 повністю аналогічний таймеру / лічильнику ТО

Таймер / лічильник ТЗ має ті ж функціональні можливості, що і ТО, він може працювати в якості широтно-імпульсного модулятора, але вже змінної розрядності і до того ж багатоканальний.

Сторожовий таймер

имеют в своем составе сторожевой таймер, предназначенный для защиты микроконтроллера от сбоев в процессе работы. Як і мікроконтролери інших сімейств, всі мікроконтролери сімейства Mega мають у своєму складі сторожовий таймер, призначений для захисту мікроконтролера від збоїв у процесі роботи. Виконання сторожового таймера однаково для всіх моделей сімейства.

Сторожовий таймер має незалежний тактовий генератор, тому він працює навіть під час перебування мікроконтролера в будь-якому з сплячих режимів. с =5.0В. Типове значення частоти цього генератора дорівнює 1 МГц при V c з = 5.0В. т напряжения питания устройства, температуры, технологического разброса. Фактична частота генератора залежить o т напруги живлення пристрою, температури, технологічного розкиду.

Якщо сторожовий таймер включено, то через проміжки часу рівні його періоду, він виконує скидання мікроконтролера. Щоб уникнути скидання при нормальному виконанні програми, сторожовий таймер необхідно регулярно скидати через проміжки часу, менші його періоду. . Скидання сторожового таймера здійснюється командою WDR.

, который во всех моделях расположен по адресу $21 ($41). Для управління сторожовим таймером призначений регістр WDTCR, який у всіх моделях розташований за адресою $ 21 ($ 41).

Призначення висновків таймерів / лічильників

Кожен таймер / лічильник використовує один або більше висновків мікроконтролера. Ці висновки - лінії портів введення / виведення загального призначення, а функції, що реалізуються цими висновками при роботі разом з таймерами / лічильниками, є їх альтернативними функціями.

Аналоговий компаратор

. Модуль аналогового компаратора входить до складу всіх без винятку мікроконтролерів сімейства Mega. Будучи включеним, компаратор дозволяє порівнювати значення напружень, присутніх на двох висновках мікроконтролера. Результатом порівняння є логічне значення, яке може бути прочитане з програми. За результатом порівняння може бути згенеровано переривання, а також здійснено захоплення стану таймера / лічильника Т1. Остання функція дозволяє, зокрема, вимірювати тривалості аналогових сигналів.

Використовувані компаратором висновки є контактами портів введення / виведення загального призначення

установлен в «1»). Щоб зазначені висновки могли використовуватися аналоговим компаратором, вони повинні бути налаштовані як входи (відповідний розряд регістра DDRx встановлений в «1»). Крім того, необхідно відключити внутрішні підтягують резистори записом лот. х. 0 у відповідний розряд регістра PORT х.

Аналого-цифровий перетворювач

Модуль 10-розрядного АЦП послідовного наближення входить до складу моделей має наступні основні параметри:

абсолютна похибка: ± 2 МЗР;

інтегральна нелінійність: ± 0.5 МЗР;

швидкодію: до 15 тис. вибірок / с.

На вході модуля АЦП всіх моделей є 8-канальний аналоговий мультиплексор, що надає в розпорядження користувача 8 каналів з ​​несиметричними входами.

В якості джерела опорної напруги для АЦП може використовуватися як напруга живлення мікроконтролера, так і внутрішній, або зовнішній джерело опорної напруги.

У процесі роботи АЦП може функціонувати в двох режимах:

режим одиночного перетворення, коли запуск кожного перетворення ініціюється користувачем;

режим безперервного перетворення, коли запуск перетворень виконується безперервно через певні інтервали часу.

Універсальний асинхронний (синхронний / асинхронний) приймач

имеют в своем составе модули либо универсального асинхронного ( UART ), либо универсального синхронно/асинхронного ( USART ) приемопередатчика. Усі без винятку мікроконтролери сімейства Mega мають у своєму складі модулі або універсального асинхронного (UART), або універсального синхронно / асинхронного (USART) прийомопередавача. Більш того, в деяких моделях є по два таких модуля. при работе в асинхронном режиме совместимы с модулями UART как по расположению разрядов управляющих регистров, так и по функционированию. Зауважимо, що модулі USART при роботі в асинхронному режимі сумісні з модулями UART як по розташуванню розрядів керуючих регістрів, так і з функціонування. Невеликі відмінності є тільки в роботі схеми буферизації блоку приймача модулів і в назві (але не в призначенні) деяких розрядів керуючих регістрів.

Всі модулі прийомопередавачів забезпечують повнодуплексний обмін по послідовному каналу, при цьому швидкість передачі даних може варіюватися в досить широких межах. посылка может быть 8- или 9-разрядной, а в модулях USART ее длина может составлять от 5 до 9 разрядов. У модулях UART посилка може бути 8 - або 9-розрядної, а в модулях USART її довжина може становити від 5 до 9 розрядів. является наличие схем формирования и контроля четности. Ще однією особливістю модулів USART є наявність схем формування та контролю парності.

/ UART , реализованные в микроконтроллерах семейства, могут обнаруживать следующие внештатные ситуации: Модулі USART / UART, реалізовані в мікроконтролерах сімейства, можуть виявляти такі позаштатні ситуації:

переповнювання;

помилка кадрування;

невірний старт-біт.

Для зменшення ймовірності збоїв в модулях також реалізована така корисна функція, як фільтрація перешкод.

Для взаємодії з програмою в модулях передбачені 3 переривання, запит на генерацію яких формується при настанні наступних подій: «передача завершена», «регістр даних передавача порожній» і «прийом завершений».

/ UART , являются линиями портов ввода/вывода общего назначения. Як завжди, висновки мікроконтролера, використовувані модулями USART / UART, є лініями портів введення / виведення загального призначення.

Послідовний периферійний інтерфейс SPI

( Serial Peripheral In - lerface ), имеет двоякое назначение. Послідовний периферійний інтерфейс SPI (Serial Peripheral In - lerface), має подвійне призначення. -ПЗУ и др. Посредством этого интерфейса также может производиться обмен данными между несколькими микроконтроллерами AVR . По-перше, з його допомогою може здійснюватися обмін даними між мікроконтролером і різними периферійними пристроями, такими, як цифрові потенціометри, ЦАП / АЦП, FLASH-ПЗУ та ін За допомогою цього інтерфейсу також може вироблятися обмін даними між декількома мікроконтролера AVR. может быть осуществлено программирование микроконтроллера (т. е. режим последовательного программирования). Крім того, через інтерфейс SPI може бути здійснене програмування мікроконтролера (тобто режим послідовного програмування). микроконтроллер AVR может работать как ведущий (режим « Master ») либо как ведомый (режим « Slave »). При обміні даними по інтерфейсу SPI мікроконтроллер AVR може працювати як провідний (режим "Master") або як ведений (режим «Slave»). При цьому користувач може задавати швидкість передачі (сім програмованих значень) і формат передачі (від молодшого розряду до старшого або навпаки).

является «пробуждение» микроконтроллера из режима Idle при поступлении данных. Додатковою можливістю підсистеми SPI є «пробудження» мікроконтролера з режиму Idle при надходженні даних.

использует четыре вывода микроконтроллера. Модуль SPI використовує чотири виводу мікроконтролера. Як і для більшості інших периферійних пристроїв, ці висновки є лініями портів введення / виведення загального призначення.

Послідовний двопровідний інтерфейс

- wire Serial Interface , TWI ) является полным аналогом базовой версии интерфейса 1 2 С фирмы « Philips ». Модуль двопровідного послідовного інтерфейсу (Two - wire Serial Interface, TWI) є повним аналогом базової версії інтерфейсу 1 2 З фірми «Philips». позволяет объединить вместе до 128 различных устройств с помощью двунаправленной шины, состоящей всего из двух линий: линии тактового сигнала ( SCL ) и линии данных ( SDA ). Інтерфейс TWI дозволяє об'єднати разом до 128 різних пристроїв з допомогою двобічної шини, що складається всього з двох ліній: лінії тактового сигналу (SCL) і лінії даних (SDA). Єдиними додатковими елементами для реалізації шини є два підтягаючих резистора, по одному на кожну лінію.

-совместимых устройств выполняются по схеме с открытым коллектором (стоком), что позволяет реализовать функцию «монтажное И». Шинні формувачі всіх TWI-сумісних пристроїв виконуються за схемою з відкритим колектором (стоком), що дозволяє реалізувати функцію «монтажне И». Відповідно, НИЗЬКИЙ рівень на лінії встановлюється тоді, коли одна чи більше пристроїв виставляють на лінію сигналу лог. 0, а ВИСОКИЙ рівень на лінії встановлюється тоді, коли всі пристрої, підключені до неї, встановлюють свої виходи в третій стан.

Загальні відомості про систему команд

Введення в систему команд

Система команд мікроконтролерів вельми розвинена і налічує до 130 різних інструкцій. являются микроконтроллерами с RISC -архитектурой (процессор с сокращенным набором команд), по количеству реализованных инструкций и их разнообразию они больше похожи на микроконтроллеры с CISC -архитектурой (процессор с полным набором команд). Незважаючи на те що мікроконтролери AVR є мікроконтролера з RISC-архітектурою (процесор зі скороченим набором команд), за кількістю реалізованих інструкцій та їх різноманітності вони більше схожі на мікроконтролери з CISC-архітектурою (процесор з повним набором команд). Практично кожна з команд (за винятком команд, у яких одним з операндів є 16-розрядний адреса) займає тільки одну комірку пам'яті програм. Причому це досягнуто не за рахунок скорочення кількості команд процесора, а за рахунок збільшення розрядності пам'яті програм.

Операнди

Програма для будь-якого мікроконтролера представляє собою послідовність команд, записаних в пам'яті програм. Більшість команд при виконанні змінюють вміст одного або декількох регістрів загального призначення, регістрів вводу / виводу або осередків ОЗУ.

Для звернення до різних областей адресного простору пам'яті даних використовуються різні команди, що реалізують, у свою чергу, різні способи адресації

Доступ до регістрів введення / виводу здійснюється за їхніми адресами, які є операндами команди. Разом з тим при написанні ассемблерних програм набагато зручніше звертатися до регістрів, використовуючи замість числових значень адрес їх стандартні, прийняті символічні імена.

) файл определения адресов регистров ввода/вывода. Щоб задати відповідність цих імен реальним адресами необхідно підключити на початку програми (за допомогою директиви асемблера. INCLUDE) файл визначення адрес регістрів введення / виводу. Крім усього іншого, таке рішення полегшить перенесення програмного забезпечення з одного типу кристалу на інший.

» вместе с документацией на микроконтроллеры (в частности, они, находятся на web -сайте фирмы). Ці файли (для кожної моделі мікроконтролерів сімейства) вільно поширюються фірмою «Atmel» разом з документацією на мікроконтролери (зокрема, вони, знаходяться на web-сайті фірми). Для РОН, що входять до складу індексних регістрів, в цих файлах визначаються також додаткові символічні імена

Додаткові символічні імена індексних регістрів

Регістр

Символічне ім'я

R26

XL

R27

ХН

R28

YL

R29

YH

R30

ZL

R31

ZH

Назви цих файлів уніфіковані і визначаються наступним чином:

. inc <Номер моделі> def. Inc

5 L должна содержать следующую директиву ассемблера: Наприклад, програма для мікроконтролера ATtinyl 5 L повинна містити наступну директиву асемблера:

" tnl 5 def . inc " . Include "tnl 5 def. Inc"

8535: а для мікроконтролера ATmega 8535:

" m 8535 def . inc " . Include "m 8535 def. Inc"

Необхідно тільки пам'ятати, що якщо для звернення до регістру введення / виводу використовуються команди обміну з ОЗУ, то до символічного імені потрібно додати число $ 20.

Як вже було згадано, в мікроконтролерах пам'ять програм є 16-розрядною. Відповідно більшість команд описуються 16-розрядним словом, яке називається також кодом операції (КОП). Код операції - це число, розташоване в пам'яті програм і визначальне дію, яке необхідно зробити між джерелом і приймачем. Деякі команди, у яких один з операндів є 16-розрядним адресою, займають два відділення пам'яті програм. Відповідно, код операції таких команд є 4-байтним числом.

У ряді випадків значення операнда-джерела може міститися безпосередньо в коді операції, а не в регістрі. Це відбувається в тому випадку, коли операндом-джерелом є константа.

Типи команд

Всі безліч команд мікроконтролерів можна розбити на кілька груп:

команди логічних операцій;

команди арифметичних операцій і команди зсуву;

команди операцій з бітами;

команди пересилання даних;

команди передачі управління;

команди управління системою.

Далі детально описана кожна група команд.

Команди логічних операцій

Команди логічних операцій дозволяють виконувати стандартні логічні операції над байтами, такі, як логічне множення (І), логічне додавання (АБО), операція "виключає АБО», а також обчислення зворотного (доповнення до одиниці) і додаткового (додаток до двох) кодів числа . До цієї групи можна віднести також команди очищення / встановлення регістрів і команду перестановки тетрад. Операції проводяться між регістрами загального призначення або між регістром і константою; результат зберігається в РОН. Усі команди з цієї групи виконуються за один машинний цикл.

Команди арифметичних операцій і команди зсуву

До даної групи відносяться команди, що дозволяють виконувати такі базові операції, як додавання, віднімання, зсув (вправо і вліво), інкремент та декремент. также имеются команды, позволяющие осуществлять умножение 8-разрядных значений. У мікроконтролерах сімейства Mega також є команди, що дозволяють здійснювати множення 8-розрядних значень. Всі операції проводяться тільки над регістрами загального призначення. позволяют легко оперировать как знаковыми, так и без знаковыми числами, а также работать с числами, представленными в дополнительном коде. При цьому мікроконтролери AVR дозволяють легко оперувати як знаковими, так і без знаковими числами, а також працювати з числами, представленими в додатковому коді.

Майже всі команди даної групи виконуються за один машинний цикл. Команди множення і команди, які оперують двобайтовими значеннями, виконуються за два цикли.

Команди операцій з битами

До даної групи відносяться команди, що виконують установку або скидання заданого розряду РОН або РВВ. имеются также дополнительные команды (точнее говоря, эквивалентные мнемонические обозначения общих команд), т. к. проверка состояния разрядов именно этого регистра производится чаще всего. Причому для зміни розрядів регістра стану SREG є також додаткові команди (точніше кажучи, еквівалентні мнемонічні позначення загальних команд), тому що перевірка стану розрядів саме цього регістра проводиться найчастіше. Умовно до цієї групи можна віднести також дві команди передачі керування типу «перевірка / перепустку», які пропускають наступну команду в залежності від стану розряду РОН або РВВ.

Всі задіяні розряди РВВ мають свої символічні імена. Визначення цих імен описані в тому ж включається файлі, що і визначення символічних імен адрес регістрів. Таким чином, після включення в програму зазначеного файлу в командах замість числових значень номерів розрядів можна буде вказувати їх символічні імена.

Всім командам даної групи потрібно один машинний цикл для виконання, за винятком випадків, коли в результаті перевірки відбувається пропуск команди. У цьому випадку команда виконується за 2 чи 3 машинних циклу в залежності від пропускається команди.

Команди пересилання даних

Команди цієї групи призначені для пересилання вмісту комірок, що знаходяться в адресному просторі пам'яті даних. Поділ адресного простору на три частини (РОН, РВВ, ОЗУ) визначило розмаїтість команд даної групи. Пересилання даних, виконувана командами групи, може проводитися в наступних напрямках:

РОН <=> РОН;

РОН <=> РВВ;

РОН <=> пам'ять даних.

и POP , позволяющие сохранять в стеке и восстанавливать из стека содержимое РОН. Також до цієї групи можна віднести стекові команди PUSH і POP, що дозволяють зберігати в стеку і відновлювати з стека вміст РОН.

На виконання команд даної групи, потрібно в залежності від команди від одного до трьох машинних циклів.

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

У цю групу входять команди переходу, виклику підпрограм і повернення з них і команди типу «перевірка / перепустку», пропускають наступну за ними команду при виконанні деякої умови. и предназначенные, как правило, для работы совместно с командами условного перехода. Також до цієї групи відносяться команди порівняння, формують прапори регістру SREG і призначені, як правило, для роботи спільно з командами умовного переходу.

У системі команд мікроконтролерів сімейства є команди як безумовного, так і умовного переходів. ), а в микроконтроллерах семейства Mega также косвенного ( IJMP ) и абсолютного ( JMP ) безусловного перехода являются самыми простыми в этой группе. Команди відносного переходу (RJMP), а в мікроконтролерах сімейства Mega також непрямого (IJMP) і абсолютного (JMP) безумовного переходу є найпростішими в цій групі. Їх функція полягає лише в записі нової адреси в лічильник команд. . Команди умовного переходу також змінюють вміст лічильника команд, проте це зміна відбувається тільки при виконанні деякого умови або, точніше, при певному стані різних прапорів регістру SREG.

Усі команди умовного переходу можна розбити на дві підгрупи. Перша підгрупа - команди умовного переходу загального призначення. , k HBRBC s , k , в которых явно задается номер тестируемого флага регистра SREG . У цю підгрупу входять дві команди BRBS s, k HBRBC s, k, в яких явно задається номер тестового прапора регістру SREG. . s = 0 ( brbc ) или SREG . S = I ( brbs ). Відповідно, перехід здійснюється при SREG. S = 0 (brbc) або SREG. S = I (brbs). Іншу підгрупу складають 18 спеціалізованих команд, кожна з яких виконує перехід з якого-небудь конкретного умові («дорівнює», «більше або дорівнює», «був перенесення» і т. п.). Причому одні команди використовуються після порівняння без знакових чисел, інші - після порівняння чисел зі знаком. Можливі перевіряються умови, а також відповідні їм команди умовного переходу наведено в таблиці.

Зведена таблиця команд умовного переходу

Перевірка

Логічне умова

Команда

Зворотній перевірка

Логічне умова

Команда

Тип даних

Rd> Rr

Z »(N © V) = 0

BRLT *

Rd <Rr

Z + (N ® V) = 1

BRGE *

знаком Co знаком

Rd> Rr

(NeV) = 0

BRGE

Rd <Rr

(N © V) = 1

BRLT

знаком Co знаком

Rd = Rr

Z = l

BREQ

Rd ^ Rr

Z = 0

BRNE

знаком Co знаком

Rd <Rr

Z + (N ® V) = 1

BRGE *

Rd> Rr

Z »(N © V) = 0

BRLT *

знаком Co знаком

Rd <Rr

(N ® V) = 1

BRLT

Rd> Rr

(N ® V) = 0

BRGE

знаком Co знаком

Rd> Rr

C + Z = 0

BRLO *

Rd <Rr

C + Z = l

BRSH *

Без знака

Rd> Rr

C = 0

BRHS / BRCC

Rd <Rr

C = l

BRLO / BRCS

Без знака

Rd = Rr

z-\

BREQ

Rd * Rr

z = o

BRNE

Без знака

Rd <Rr

C = Z = 1

BRSH *

Rd> Rr

c = z = o

BRLO *

Без знака

Rd <Rr

C = l

BRLO / BRCS

Rd> Rr

c = o

BRSH / BRCC

Без знака

«Перенесення»

C = l

BRCS

«Ні перенесення»

c = o

BRCC


«Менше нуля»

N = 1

BRMI

«Більше нуля»

N = 0

BRPL


«Переповнення»

V = l

BRVS

«Ні переповнення»

V = 0

BRVC


«Нуль»

Z = l

BREQ

«Не нуль»

z = o

BRNE


. Rr —> CP Rr . Rd . * Для переходу по цій умові операнди попередньої команди порівняння повинні бути записані у зворотному порядку, тобто замість СР Rd. Rr -> CP Rr. Rd.

, к и BRBC s , к с определенными значениями операнда « s ». Взагалі кажучи, команди, вказані в таблиці, є всього лише еквівалентними мнемонічними позначеннями команд BRBS s, к і BRBC s, до ​​з певними значеннями операнда «s». имеет, например, такой же код операции, что и команда BRBS 1,к, а команда BRGE k - BRBC 4,к. Команда BREQ має, наприклад, такий самий код операції, що і команда BRBS 1, к а команда BRGE k - BRBC 4, к.

, rcall , call ) работают практически так же, как и команды безусловного перехода. Команди виклику підпрограми (icall, rcall, call) працюють практично так само, як і команди безумовного переходу. Відмінність полягає в тому, що, перед тим як виконати перехід, значення лічильника команд зберігається в стеку. . Крім того, підпрограма повинна закінчуватися командою повернення RET.

Очевидно, що команди передачі управління порушують нормальне (лінійне) виконання основної програми. Кожного разу, коли виконується команда з цієї групи (крім команд порівняння), нормальне функціонування конвеєра порушується. Перед завантаженням у конвеєр нової адреси проводиться зупинка і очищення виконуваної послідовності команд. Відповідно, реініціалізація конвеєра приводить до необхідності використання декількох машинних циклів для виконання таких команд.

Команди управління системою

У цю групу входять всього 3 команди:

— пустая команда; • NOP - порожня команда;

— перевод микроконтроллера в режим пониженного энергопотребления; • SLEEP - переклад мікроконтролера в режим зниженого енергоспоживання;

— сброс сторожевого таймера. • wdr - скидання сторожового таймера.

Всі команди цієї групи виконуються за один машинний цикл.

Зведені таблиці команд

У Таблиці вказані всі команди, які мають мікроконтролери. У кожній таблиці команди згруповані за функціональною ознакою. , на которые воздействует эта команда. У таблицях наведені такі основні відомості про команди, як мнемонічне позначення команди, її опис, число машинних циклів, необхідних для її виконання, а також прапори регістру SREG, на які впливає ця команда.

Група команд логічних операцій

Мнемоніка

Опис

Операція

Цикли

Прапори

AND Rd, Rr

«Логічне І» двох РОН

Rd = • Rr Rd • Rr

1

Z, N, V

ANDI Rd, K

«Логічне І» РОН і константи

• К Rd = Rd • До

1

Z, N, V

, Rr EOR Rd, Rr

«Виключає АБО» двох РОН

= Rd ® Rd = Rd ® Rr

1

Z, N, V

OR Rd, Rr

«Логічне АБО» двох РОН

Rd = Rd v Rr

1

Z, N, V

ORI Rd, K

«Логічне АБО» РОН і константи

= Rd v К Rd = Rd v До

1

Z, N, V

COM Rd

Переклад в зворотний код

Rd = $ FF-Rd

1

Z, C, N, V

NEG Rd

Переклад в додатковий код

Rd = $ 00-Rd

1

Z, C, N, V, H

CLR Rd

Скидання всіх розрядів РОН

Rd = Rd ® Rd

1

Z, N, V

SER Rd

Встановлення всіх розрядів РОН

Rd = $ FF

1


TST Rd

Перевірка РОН на негативне або нульове значення

• Rd Rd • Rd

1

Z, N, V

SWAP Rd

Обмін місцями тетрад в РОН

Rd (3 ... O) = Rd (7 ... 4),

Rd (7 ... 4) = Rd (3 ... O)

1


Група команд арифметичних операцій

Мнемоніка

Опис

Операція

Цикли

Прапори

ADD Rd. Rr

Складання двох РОН

Rd = Rd + Rr

1

Z, C, N, V, H

ADC Rd. Rr

Складання двох РОН з перенесенням

Rd = Rd + Rr + C

1

Z, C, N, V, H

ADIW Rd, K

Додавання реєстрової пари з константою

К Rdh: RdI = Rdh: Rdl + К

2

Z, C, N, V, S

SUB Rd, Rr

Віднімання двох РОН

Rd = Rd-Rr

1

Z, C, N, V, H

SUBI Rd, K

Віднімання константи з РОН

Rd = Rd-K

1

Z, C, N, V, H

SBC Rd, Rr

Віднімання двох РОН з заемом

Rd = Rd-Rr-C

1

Z, C, N, V, H

SBCI Rd, K

Віднімання константи з РОН з заемом

Rd = Rd-KC

1

Z, C, N, V, H

SBIW Rd, K

Віднімання константи з реєстрової пари

Rdh: Rdl = Rdh: Rdt-K

2

Z, C, N, V, S

DEC Rd

Декремент РОН

Rd = Rd-l

1

Z, N, V

INC Rd

Інкремент РОН

= Rd + 1 Rd = Rd + 1

1

Z, N, V

ASR Rd

Арифметичний зсув вправо

1), n = 0...6 Rd (n) = Rd (n + 1), n = 0 ... 6

1

Z, C, N, V

LSL Rd

Логічний зсув вліво

Rd (n + l) = Rd (n), Rd (0) = 0

1

Z, C, N, V

LSR Rd

Логічний зсув вправо

Rd (n) = Rd (n + l), Rd (7) = 0

1

Z, C, N, V

Мнемоніка

Опис

Операція

Цикли

Прапори

ROL Rd

Зрушення вліво через перенесення

С = Rd(7) Rd (0) = C, Rd (n + l) = Rd (n), С = Rd (7)

1

Z, C, N, V

ROR Rd

Зрушення вправо через перенесення

С = Rd(0) Rd (7) = C, Rd (n) = Rd (n + l), С = Rd (0)

1

Z, C, N, V

MUL Rd, Rr

Множення беззнакових чисел

Rl: RO = RdXRr

2

Z, C

MULS Rd, Rr

Множення чисел зі знаком

Rl: RO = RdXRr

2

Z, C

MULSU

Rd, Rr

Множення беззнакового числа на число зі знаком

Rl: RO = RdXRr

2

Z, C

FMDL Rd, Rr

Множення дробових беззнакових чисел

Rl: RO = (RdXRr) «l

2

Z, C

FMULS

Rd, Rr

Множення дробових чисел зі знаком

Rl: RO = (RdXRr) «l

2

Z, C

FMULSU

Rd, Rr

Множення дробового беззнакового числа і дробового числа зі знаком

1 Rl: RO = (RdXRr) «1

2

Z, C

Група команд операцій з битами

Мнемоніка

Опис

Операція

Цикли

Прапори

CBR Rd, K

Скидання розряду (ів) РОН

Rd = Rd »($ FF-K)

1

Z, N, V

SBR Rd, K

Установка разрада (ів) РОН

Rd = RdvK

1

Z, N, V

CBI A, b

Скидання розряду РВВ

Ab = 0

2


SBI A, b

Установка розряду РВВ

Ab = l

2


BCLR s

Зброс прапора

- 0 SREG.S - 0

1

SREG.S

BSET s

Установка прапора

SREG.S = l

1

SREG.S

BLD Rd, b

) Завантаження розряду РОН з прапора Т (SREG)

Rd.b = T

1


BST Rr, b

) Запис розряду РОН на прапор Т (SREG)

= Rr.b T = Rr.b

1

T

CLC

Скидання прапора перенесення

0 З = 0

1

З

SEC

Установка прапора перенесення

C = l

1

З

CLN

Скидання прапора отр. числа

N = 0

1

N

SEN

Установка прапора отр. числа

N = 1

1

N

CLZ

Скидання прапора нуля

Z = 0

1

Z

SEZ

Установка прапора нуля

Z = l

1

Z

CLI

Загальна заборона переривань

1 = 0

1

I

SEI

Загальне дозвіл переривань

1 = 1

1

I

CLS

Скидання прапора знака

S = 0

1

S

SES

Установка прапора знака

S = l

1

S

CLV

Скидання прапора переповнення доп. коду

V = 0

1

V

SEV

Установка прапора переповнення доп. коду

V = l

1

V

CLT

Скидання прапора Т

T = 0

1

T

SET

Установка прапора Т

T = l

1

T

CLH

Скидання прапора половинного перенесення

H = 0

1

H

SEH

Установка прапора половинного перенесення

H = l

1

H

Група команд пересилки даних

Мнемоніка

Опис

Операція

Цикли

Прапори

MOV Rd, Rr

Пересилання між РОН

Rd = Rr

1


MOVW

Rd, Rr

Пересилання багатобайтових значень

Rd + l: Rd = Rr + l: Rr

1


LDI Rd, K

Завантаження константи в РОН

Rd = K

1


Мнемоніка

Опис

Операція

Цикли

Прапори

LD Rd, X

Непряме читання

Rd = [X]

2


LD Rd, X +

Непряме читання з інкрементом поста

Rd = [X], X = X + I

2


LD Rd,-X

Непряме читання

з преддекрементом

X = Xl, Rd = [X]

2


LD Rd, Y

Непряме читання

Rd = [Y]

2


LD Rd, Y +

Непряме читання з інкрементом поста

Rd = [Y], Y = Y + l

2


LD Rd,-Y

Непряме читання з преддекрементом

Y = Yl, Rd = [Y]

2


LDD Rd, Y + q

Непряме відносне читання

Rd = [Y + q]

2


LD Rd, Z

Непряме читання

Rd = [Z]

2


LD Rd, Z +

Непряме читання з інкрементом поста

Rd = [Z], Z = Z + l

2


LD Rd,-Z

Непряме читання з преддекрементом

= Z - 1, Rd = [Z] Z = Z - 1, Rd = [Z]

2


LDD Rd, Z + q

Непряме відносне читання

= [Z + q] Rd = [Z + q]

2


LDS Rd, k

Безпосереднє читання з ОЗУ

= [k] Rd = [k]

2


ST X, Rr

Непряма запис

[X] = Rr

2


ST X +, Rr

Непряма запис з інкрементом поста

[X] = Rr, X = X +1

2


ST-X, Rr

Непряма запис з преддекрементом

X = Xl, [X] = Rr

2


ST Y, Rr

Непряма запис

[Y] = Rr

2


ST Y +, Rr

Непряма запис з інкрементом поста

[Y] = Rr, Y = Y +1

2


, Rr ST-Y, Rr

Непряма запис з преддекрементом

Y = Yl, [X] = Rr

2


STD Y + q, Rr

Непряма відносна запис

= Rr [Y + q] = Rr

2


ST Z, Rr

Непряма запис

[Z] = Rr

2


ST Z +, Rr

Непряма запис з інкрементом поста

[Z] = Rr, Z = Z + l

2


ST-Z , Rr

Непряма запис з преддекрементом

Z = Zl, [Z] = Rr

2


STD Z + q, Rr

Непряма відносна запис

[Z + q] = Rr

2


STS k, Rr

Безпосередня запис в ОЗУ

[K] = Rr

2


LPM

Завантаження даних з пам'яті програм

R0 = {Z}

3


LPM Rd, Z

Завантаження даних з пам'яті програм

Rb = {Z}

3


LPM Rd, Z +

Завантаження даних з пам'яті програм з інкрементом поста

Rb = {Z}, Z = Z +1

3


ELPM

Розширена завантаження даних з пам'яті програм

= {RAMPZ:Z} RO = {RAMPZ: Z}

3


ELPM Rd, Z

Розширена завантаження даних з пам'яті програм

Rb = {RAMPZ: Z}

3


ELPM Rd, Z +

Розширена завантаження даних з пам'яті програм з інкрементом поста

= { RAMPZ : Z }, RAMPZ : Z = RAMPZ : Z +1 Rb = {RAMPZ: Z}, RAMPZ: Z = RAMPZ: Z +1

3


SPM

Запис у пам'ять програм

{Z} = RI: R0



IN Rd, A

Пересьіка з РВВ в РОН

Rd = A

1


OUT A, Rr

Пересилання з РОН в РВВ

A = Rr

1


PUSH Rr

Збереження байта в стеку

- Rr STACK - Rr

2


POP Rd

Витяг байта з стека

Rd = STACK

2


Група команд передачі управління

Мнемоніка

Опис

Операція

Цикли

Прапори

RJMP k

Відносний безумовний перехід

РС = РС + к +1

2


IJMP

Непрямий безумовний перехід

РС = Z

2


Мнемоніка

Опис

Операція

Цикли

Прапори

к JMP до

Абсолютний перехід

РС = до

3


к RCALL до

Етносітельний виклик підпрограми

+ к + 1 PC = PC + до + 1

3


ICALL

Сосвенний виклик підпрограми

PC = Z

3


к CALL до

Абсолютний виклик підпрограми

РС = до

4


RET

Повернення з підпрограми

PC = STACK

4


RETI

Повернення з підпрограми обробки переривання

= STACK PC = STACK

4


СР Rd, Rr

Порівняння РОН

Rd-Rr

1

Z, N, V, C, H

, Rr СРС Rd, Rr

Порівняння РОН з урахуванням перенесення

Rd-Rr-C

1

Z, N, V, C, H

CPI Rd, K

Порівняння РОН з константою

Rd-K

1

Z, N, V, C, H

CPSE

Rd, Rr

Порівняння і пропуск наступної команди при рівності

= Rr , то PC = PC + 2 (3) Якщо Rd = Rr, то PC = PC + 2 (3)

1/2/3


SBRC Rr, b

Пропуск слід. команди, якщо розряд РОН скинутий

. b = 0, то PC = PC + 2 (3) Якщо Rr. B = 0, то PC = PC + 2 (3)

1/2/3


SBRS Rr, b

Пропуск слід. команди, якщо розряд РОН встановлений

. b = l , то PC = PC + 2 (3) Якщо Rr. B = l, то PC = PC + 2 (3)

1/2/3


SBIC A, b

Пропуск слід. команди, якщо розряд РВВ скинутий

. b = 0, то PC = PC + 2 (3) Якщо A. B = 0, то PC = PC + 2 (3)

1/2/3


SBIS A, b

Пропуск слід. команди, якщо розряд РВВ встановлений

= PC + 2 (3) Якщо А.Ь = 1, то PC = PC + 2 (3)

1/2/3


BRBC s, k

регистра SREG сброшен Перехід, якщо прапор s регістру SREG скинутий

. s = 0, то РС = РС + к+1 Якщо SREG. S = 0, то РС = РС + к +1

1 / 2


BRBS s, k

регистра SREG установлен Перехід, якщо прапор s регістру SREG встановлений

. s =1, то РС = РС + к+1 Якщо SREG. S = 1, то РС = РС + к +1

1 / 2


к BRCS до

Перехід по перенесенню

Якщо С = 1, то РС = РС + к +1

1 / 2


к BRCC до

Перехід, якщо немає перенесення

Якщо С = 0, то РС = РС + к +1

1 / 2


к BREQ до

Перехід по «дорівнює»

= l , то РС = РС + к+1 Якщо Z = l, то РС = РС + к +1

1 / 2


к BRNE до

Перехід з «не дорівнює»

= 0, то РС = РС + к+1 Якщо Z = 0, то РС = РС + к +1

1 / 2


к BRSH до

Перехід по «вище або дорівнює»

Якщо С = 0, то РС = РС + к +1

1 / 2


к BRLO до

Перехід по «менше»

Якщо С = 1, то РС = РС + к +1

1 / 2


. BRMI.

Перехід по «негативне значення»

Якщо = 1, то РС = РС + к + N = 1, то РС = РС + до +

1 / 2


BRPL

Перехід по «позитивне значення»

Якщо N = 0, то РС = РС + к +1

1 / 2


BRGE

Перехід по «більше або дорівнює» (числа із знаком)

® V ) = 0, то PC = PC + к + 1 Якщо (N ® V) = 0, то PC = PC + до + 1

1 / 2


BRLT

Перехід по «менше нуля» (числа із знаком)

® V )= l , то PC = PC + к + 1 Якщо (N ® V) = l, то PC = PC + до + 1

1 / 2


BRHS

Перехід по половинному переносу

= PC + к + 1 Якщо М = 1, то PC = PC + до + 1

1 / 2


BRHC

Перехід, якщо немає половинного перенесення

= PC + к + 1 Якщо М = 0, то PC = PC + до + 1

1 / 2


BRTS

Перехід, якщо прапор Т встановлений

Якщо Т = 1, то РС = РС + к +1

1 / 2


BRTC

Перехід, якщо прапор Т скинутий

ЕсліТ = 0, торс = РС + к +1

1 / 2


BRVS

Перехід по переповнення доп. коду

ЕсліУ = 1, торс = РС + к +1

1 / 2


BRVC

Перехід, якщо немає переповнювання доп. коду

ЕсліУ = 0, торс = РС + к +1

1 / 2


BRID

Перехід, якщо переривання заборонені

= 0, тоРС = РС + к+1 Якщо I = 0, торс = РС + к +1

1 / 2


BRIE

Перехід, якщо переривання дозволені

Еслі1 = 1, торс = РС + к +1

1 / 2


Група команд управління системою

Мнемоніка

Опис

Операція

Цикли

Прапори

NOP

Ні операції

порожня команда

1


SLEEP

Перехід в "сплячий" режим

переклад мікроконтролера в режим зниженого енергоспоживання

3


WDR

Скидання сторожового таймера

скидання сторожового таймера

1


Позначення

Опис

Регістр стану

SREG

Регістр стану мікроконтролера

C

Прапор переносу

Z

Прапор нуля

N

Прапор від'ємного значення

V

Прапор переповнення доп. коду

S

= N ® V ) Прапор знака (S = N ® V)

H

Прапор половинного перенесення

T

Прапор користувача

I

Прапор загального дозволу переривань

Регістри і операнди

Rd

Регістр приймач

Rr

Регістр джерело

K

Константа

k

Адреса-коннстанта

b

Номер розряду РОН

s

Номер розряду регістра стану

, Y , Z X, Y, Z

Регістри покажчики

I \ O

Регістр вводу-виводу

A

Адреса в простору вводу-виводу

q

Зміщення при відносній непрямої адресації

ХХ ] [ХХ]

Вміст комірки пам'яті даних за адресою ХХ

ХХ } {ХХ}

Вміст комірки пам'яті програм за адресою ХХ

Операція

Логічне І

v

Логічне АБО

®

Виключне АБО

Система

РС

Лічильник команд

STACK

Поточний рівень стека

SP

Покажчик стека

Прапори

<>

Команда впливає на прапор

0

Прапор скидається командою в «0»

1

Прапор встановлюється командою в «1»


Команда не впливає


Позначення, використовувані при описі команд

Додати в блог або на сайт

Цей текст може містити помилки.

Програмування, комп'ютери, інформатика і кібернетика | Диплом
288.5кб. | скачати


Схожі роботи:
Мікроконтролери RISC архітектури
Спортивний туризм Розрядні вимоги та правила змагань
Мікроконтролери CISC архітектури
Мікроконтролери Z86 фірми ZILOG
Мікроконтролери для початківців І не тільки
Пристрої автоматики на мікросхемах структури КМОП
Вивчення характеристик ключових схем на доповнюють МОП-транзисторах КМОП
Macromedia Flash MX 2
Macromedia Flash MX
© Усі права захищені
написати до нас