AVRASM Бібліотека базових макровизначень
Бібліотека «базових макровизначень», що розширює стандартний набір асемблерних інструкцій мікроконтролерів Atmel AVR (8-bit AVR Instruction Set), та рекомендує парадигму програмування: зі зберіганням «моделі прикладних даних» у ОЗП та використанням кількох «тимчасових регістрів»…
Призначення
Ця бібліотека написана мовою асемблера для компілятора AVRASM. Відповідно, вона призначена для розробки програмних прошивок (firmware) мовою асемблер, для мікроконтролерів Atmel AVR (8-bit).
Рекомендую вам використовувати цю бібліотеку в кожній вашій програмі мовою асемблер (для прошивки для AVR), підключаючи її на самому початку головного ASM-файлу, таким чином: Це зробить мета-мову доступною глобально у всій програмі. Також спростить шаблон нового проекту, оскільки дана бібліотека містить також макроси з кодом базової ініціалізації мікроконтролера.
Бібліотека складена з найбільш корисних та компактних шматочків коду, взятих із прикладів та статей «Спільноти EasyElectronics.ru»; з інших сайтів; з datasheet мікроконтролерів і Atmel Appnotes ... зібраних і перероблених мною в єдиний стиль; дописані до функціональної повноти.
Код бібліотеки зараз розміщується в одному файлі "macrobaselib.inc" і поділений за функціональними розділами (Ініціалізація МК, Підтримка Введення-Виведення, Арифметичні операції).
Основні положення: У коді даної бібліотеки, і при роботі з нею, регістри R16, R17, R18, R19 рекомендується використовувати як «тимчасові змінні» – тому, у вашому прикладному коді, не використовуйте їх для зберігання постійних даних ! Як сказав DI HALT: При обчисленнях, регістри можна попередньозаштовхувати у стек… але я дам тобі краще іншу пораду: коли пишеш програму, продумуй алгоритм так, щоб використовувати регістри як суцільний TEMP, дані якого є актуальними тільки тут і зараз. І що з ними буде в наступній процедурі – вже не важливо. А всіперманентні дані слід зберігати в оперативній пам'яті (SRAM). В основу цієї бібліотеки покладено ідеї та досвід DI HALTа до методу використання Макроассемблера, і зокрема директиви MACRO: для створення своєї мета-мови, що розширює стандартний набір директив асемблера AVR, та базових прийомів, що полегшують програмування: MACRO — оператор макропідстановки. Ось уже реально чумова річ! Дозволяє надавати імена цілим шматкам коду, ще, ще параметри ставити можна. Макроси дозволяють натворювати собі зручних команд на всі випадки життя, по суті створити свою мову. Макроасемблер це найпотужніша штука. По ходу п'єси я вводитиму різні макроси і показуватиму приклади роботи макровизначень. Асемблер AVR, хоч і досить розвинений, але як і будь-який асемблер дуже низькорівневий, а тому, з ним, досить складно «вистрілити собі в ногу». Ця бібліотека надає вам деякі деталі для винаходу пістолета (зокрема: кулю і курок). Тепер, вам залишається лише винайти пістолет, і вашу ногу ...
Примітка: GitHub був обраний для поширення коду як найбільш прогресивний, зручний і функціональний метод взаємодії opensource-розробників. Розвивайте та доповнюйте бібліотеку – потім, зможете легко контрибутити.