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