AVRASM: Библиотека базовых Макроопределений «MACROBASELIB.INC»

Библиотека «базовых Макроопределений», расширяющая стандартный набор ассемблерных инструкций микроконтроллеров Atmel AVR (8-bit AVR Instruction Set), и рекомендующая парадигму программирования: с хранением «модели прикладных данных» в ОЗУ и использованием нескольких «временных регистров»…

Назначение

Данная библиотека написана на языке ассемблера, для компилятора AVRASM. Соответственно, она предназначена для разработки программных прошивок (firmware) на языке ассемблер, для микроконтроллеров Atmel AVR (8-bit).

Рекомендую вам использовать данную библиотеку в каждой вашей программе на языке ассемблер (для прошивки для AVR), подключая её в самом начале главного ASM-файла, следующим образом: .include "macrobaselib.inc" ; Библиотека базовых Макроопределений.Это сделает мета-язык доступным глобально во всей программе. А также, упростит шаблон нового проекта, поскольку данная библиотека содержит также макросы с кодом базовой инициализации микроконтроллера.

Библиотека составлена из наиболее полезных и компактных кусочков кода, взятых из примеров и статей «Сообщества EasyElectronics.ru»; с других сайтов; из datasheet микроконтроллеров и Atmel Appnotes… собранных и переработанных мною в единый стиль; дописанных до функциональной полноты.

Код библиотеки сейчас размещается в одном файле «macrobaselib.inc» и разделён по функциональным разделам (Инициализация МК, Поддержка Ввода-Вывода, Арифметические операции).

Для улучшения читабельности, код отформатирован в едином стиле (инспирированном «Atmel appnotes» и авторским чувством целесообразности). На каждый макрос имеются комментарии (на диком суржике из русско-английского): по Назначению, Параметрам и Побочным Эффектам (какие регистры задействованы, и как изменяются в процессе).

Идеология

Основные положения:

В коде данной библиотеки, и при работе с ней, регистры R16,R17,R18,R19 рекомендуется использовать как «временные переменные» — поэтому, в вашем прикладном коде, не используйте их для хранения постоянных данных!

Как сказал DI HALT:

При вычислениях, регистры можно предварительно заталкивать в стек… но я дам тебе лучше другой совет: когда пишешь программу, продумывай алгоритм так, чтобы использовать регистры как сплошной TEMP, данные которого актуальны только здесь и сейчас. И что с ними будет в следующей процедуре — уже не важно. А все перманентные данные — следует сохранять в оперативке (SRAM).

В основу данной библиотеки положены идеи и опыт DI HALTа к методу использования Макроассемблера, и в частности директивы MACRO: для создания своего мета-языка, расширяющего стандартный набор директив ассемблера AVR, и базовых приёмов, облегчающих программирование:

MACRO — оператор макроподстановки. Вот уж реально чумовая вещь! Позволяет присваивать имена целым кускам кода, мало того, еще параметры задавать можно.
Макросы позволяют насоздавать себе удобных команд на все случаи жизни, по сути создать свой язык. Макроассемблер это мощнейшая штука. По ходу пьесы я буду вводить разные макросы и показывать примеры работы макроопределений…

Ассемблер AVR, хоть и довольно развит, но как и любой ассемблер — очень низкоуровневый, а потому, с ним, довольно сложно «выстрелить себе в ногу». Данная библиотека предоставляет вам некоторые детали для изобретения «пистолета» (в частности: «пулю» и «курок»). Теперь, вам остаётся лишь доизобрести «пистолет», и «вашу ногу»…

Код

Код библиотеки «macrobaselib.inc» опубликован на GitHub (это веб-сервис для хостинга IT-проектов и их совместной разработки), на условиях лицензии MIT (разрешительной opensource, т.е. практически без ограничений к использованию). Ответвляйтесь!

Обратите также внимание на «Шаблон нового проекта» — для старта разработки программной прошивки (firmware) на языке ассемблер, в среде «AVR Studio 4», для микроконтроллеров Atmel AVR. Этот код, также, опубликован на GitHub, на условиях лицензии MIT… Вы можете использоваться этот Шаблон для новых проектов прошивок. Код основан на идеях и рекомендациях DI HALT, создан и проверен «в бою»: при работе над реальным проектом. Это чистый шаблон, без прикладного кода. Код Шаблона также содержит единый стиль форматирования, и комментарии с рекомендациями и описанием секций кода…

Примечание: GitHub был выбран для распространения кода — как наиболее прогрессивный, удобный и функциональный метод взаимодействия opensource-разработчиков. Развивайте и дополняйте библиотеку — затем, сможете легко контрибутить…

Ликбез для неискушённых пользователей: те кто не используют системы управления версиями, могут просто скачать архив с кодом: нажав на кнопку «Download ZIP» на странице репозитория GitHub, по ссылкам выше.

Комментарии закрыты.