
1
2
3
4
.
SUBI16 ; Start macro defini
subi @1,low(@0) ; Subtract low byte
sbci @2,high(@0) ; Subtract high byte
.ENDM ; End macro definition
@0, @1, @2 это параметры макроса, они нумеруются тупо по порядку. А при
вызове подставляются в код.
Вызов выглядит как обычная команда:
1
SUBI16 0x1234,r16,r17
После имени через запятую передаются параметры, которые подставятся в
код.
Макросы позволяют создавать себе удобных команд на все случаи жизни, по
сути создать свой язык. Но надо помнить, что каждый макрос это тупо кусок
кода, поэтому если макрос получается большой, то его лучше оформить в
виде процедуры или функции - будет резкая экономия места в памяти, но
выполняться будет чуток медленней.
Макроассемблер это мощнейшая штука. По ходу пьесы я буду вводить
разные макросы и показывать примеры работы макроопределений.
AVR. Учебный курс. Простейшая программа.
Итак, прежде чем что-то делать, надо понять, как вообще выполняется
программа в контроллере, как работает ядро процессора. Для этого нам
хватит AVR Studio и его эмулятора. Не очень интересно, может даже
занудно, но если этот шаг пропустить, то дальнейшие действия будут как бег
в темноте.
Поскольку в демоплате Pinboard используется процессор ATmega16, то
рассматривать мы будем именно его. Впрочем, как я уже говорил, для других