Програмування на асемблері для avr-мікроконтролерів (стор

З-за великого обсягу цей матеріал розміщено на декількох сторінках: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

асемблері

Реєстр даних EEPROM

Реєстр керування EEPROM

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

Регістр спрямування даних порту А

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

Регістр спрямування даних порту В

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

Регістр спрямування даних порту С

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

Регістр спрямування даних порту D

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

Реєстр стану SPI

Реєстр керування SPI

Реєстр даних USART

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

Реєстр У керування та стани USART

Реєстр швидкості передачі USART, молодший байт

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

Регістр управління мультиплексором АЦП

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

Регістр даних АЦП, старший байт

Регістр даних АЦП, молодший байт

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

Реєстр стану TWI

Реєстр швидкості передачі TWI

Реєстр керування EECR (EEPROM Control Register) використовується для керування доступом до пам'яті EEPROM.

2. СИСТЕМА КОМАНД AVR-МІКРОКОНТРОЛЕРІВ

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

Ці файли (для кожної моделі мікроконтролерів сімейства) вільно поширюються фірмою Atmel разом із документацією на мікроконтролери (уЗокрема, файли для всіх мікроконтролерів AVR, що випускаються, входять в комплект безкоштовно розповсюджуваного інтегрованого середовища AVRStudio). Для РОН, що використовуються в індексних регістрах, у цих файлах визначаються додаткові символічні імена XH, XL, YH, YL, ZH, ZL.

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

Наприклад, програма для мікроконтролера ATmega8535 повинна містити таку директиву асемблера:

.include "m8535def. inc"

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

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

При виконанні команди відносного переходу вміст лічильника команд змінюється додаванням до нього або відніманням із нього деякого значення, що є операндом команди. Оскільки під значення операнда в слові команди приділяється всього 12 бітів, за допомогою цієї команди можна переходити лише в межах –2+2048 слів. У програмах як операнди цієї команди замість констант використовуються мітки. Асемблер сам обчислює величину переходу і підставляє це значення слово команди.

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

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

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

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

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

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

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

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

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