Читаем Микроконтроллеры AVR: от простого к сложному полностью

2. [метка: ] мнемоника команды [аргументы команды] [комментарий]

3. Комментарий

4. Пустая строка

Комментарии всегда начинаются с символа «;».

Элементы, заключенные в квадратные скобки, могут отсутствовать. Текст, расположенный после символа «точка с запятой» до конца строки, полностью игнорируется ассемблером. Использование меток, мнемоник команд микроконтроллера и директив ассемблера подробнее будет рассмотрено чуть позднее.

Примеры записи строк:

label1:.EQU var1=100; Директива определения символьного

                                ; имени var1, эквивалентного записи ”100"

          .EQU var2=200; Определение имени var2, соответствующего "200"

test: rjmp test; Бесконечный цикл (мнемоника команды микроконтроллера)

; Пустая строка

Обратите внимание, что не играет никакой роли, в каких местах расположены метки, команды ассемблера и директивы, важен только их порядок.

Команды микроконтроллера

Транслятор ассемблера позволяет использовать в тексте программы мнемоники (обозначения команд микроконтроллера), полностью совпадающие с их названием в системе команд микроконтроллера.

Команды микроконтроллеров семейства AVR делятся на несколько групп:

• арифметические и логические;

• команды условных и безусловных переходов;

• команды передачи данных;

• команды для работы с битами.

Краткое описание команд микроконтроллера можно найти в главе 2.

Для транслятора ассемблера нет разницы, какими буквами написаны слова, т. е. rjmp и RJMP совершенно равнозначны. Однако для удобства понимания программы рекомендуется все мнемоники и метки записывать строчными (маленькими) буквами, а директивы прописными (большими).

Директивы транслятора ассемблера

Транслятор ассемблера поддерживает достаточно много директив. Директивы не транслируются в программу для микроконтроллера. Они используются для указания транслятору ассемблера данных о расположении программы в памяти микроконтроллера, определения макросов и т. д.

Ниже приведен перечень директив транслятора ассемблера:

.BYTE — резервирует 1 байт для использования в качестве переменной;

.CSEG — сегмент программ;

.DB — определяет байт-константу;

.DEF — определяет символическое имя для регистра;

.DEVICE — задает тип целевого микроконтроллера;

.DSEG — сегмент данных;

.DW — определяет слово-константу;

.ENDMACRO — конец определения макроса;

.EQU — сопоставляет символьному имени арифметическое выражение;

.ESEG — сегмент EEPROM;

.EXIT — выйти из файла (конец текста программы);

.INCLUDE — загрузить исходный текст из другого файла;

.LIST — включить генерацию листинга;

.LISTMAC — включить печать содержимого макросов в листинге;

.MACRO — начать определение макроса;

.NOLIST — выключить генерацию листинга;

.ORG — установить расположение;

.SET — сопоставить символу выражение.

Обратите внимание, что все директивы должны начинаться с точки.

.BYTEрезервирует место (или несколько мест) размером 1 байт для переменной.

Директива BYTE резервирует один байт в памяти SRAM для реализации переменной. Для того чтобы иметь возможность обращаться к этой переменной, перед директивой BYTE должна стоять метка. Директива имеет один параметр — количество байтов для резервирования. Директива может использоваться только для резервирования места в памяти данных (смотри директивы CSEG, DSEG и ESEG).

Синтаксис:

Метка:.BYTE числовое выражение

Примеры:

.DSEG

var1:.BYTE 1; Резервируем 1 байт для переменной var1

able:.BYTE tab_size; Резервируем tab_size байт

.CSEG

    ldi r30,low(var1); Загружаем младший байт Z-регистра

    ldi r31,high(var1); Загружаем старший байт Z-регистра

    Id r1,Z; Загрузить содержимое переменной var1 в r1

.CSEG — сегмент кода.

Директива CSEG определяет начало сегмента кода (программ). В исходном тексте программы может быть несколько сегментов кода. Транслятор ассемблера в процессе компиляции программы объединяет все сегменты кода в один. Директива BYTE не может быть использована в сегменте кода. Если в программе нет явного указания названия сегмента, по умолчанию считается, что это сегмент кода. Директива CSEG не имеет никаких параметров. Сегмент кода имеет свой счетчик слов. Директива-ORG может быть использована для размещения кода или констант в определенном программистом месте памяти программ.

Синтаксис:

.CSEG

Перейти на страницу:

Все книги серии Библиотека инженера

Похожие книги

Электроника для начинающих (2-е издание)
Электроника для начинающих (2-е издание)

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

Чарльз Платт

Радиоэлектроника / Технические науки
PIC-микроконтроллеры. Все, что вам необходимо знать
PIC-микроконтроллеры. Все, что вам необходимо знать

Данная книга представляет собой исчерпывающее руководство по микроконтроллерам семейства PIC компании Microchip, являющегося промышленным стандартом в области встраиваемых цифровых устройств. В книге подробно описывается архитектура и система команд 8-битных микроконтроллеров PIC, на конкретных примерах изучается работа их периферийных модулей.В первой части излагаются основы цифровой схемотехники, математической логики и архитектуры вычислительных систем. Вторая часть посвящена различным аспектам программирования PIC-микроконтроллеров среднего уровня: описывается набор команд, рассматривается написание программ на ассемблере и языке высокого уровня (Си), а также поддержка подпрограмм и прерываний. В третьей части изучаются аппаратные аспекты взаимодействия микроконтроллера с окружающим миром и обработки прерываний. Рассматриваются такие вопросы, как параллельный и последовательный ввод/вывод данных, временные соотношения, обработка аналоговых сигналов и использование EEPROM. В заключение приводится пример разработки реального устройства. На этом примере также демонстрируются простейшие методики отладки и тестирования, применяемые при разработке реальных устройств.Книга рассчитана на самый широкий круг читателей — от любителей до инженеров, при этом для понимания содержащегося в ней материала вовсе не требуется каких-то специальных знаний в области программирования, электроники или цифровой схемотехники. Эта книга будет также полезна студентам, обучающимся по специальностям «Радиоэлектроника» и «Вычислительная техника», которые смогут использовать ее в качестве учебного пособия при прослушивании соответствующих курсов или выполнении курсовых проектов.

Сид Катцен

Радиоэлектроника
Электроника для начинающих
Электроника для начинающих

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

Паоло Аливерти , Чарльз Платт

Радиоэлектроника / Технические науки