Работа с MPASM в интегрированной среде MPLAB IDE
MPLAB проект состоит из узлов, показанных на рисунке 4-2, которые представляют файлы используемые в проекте:
Целевой узел - заключительный вывод
- Шестнадцатеричный файл кода
Узлы проекта - компоненты
- Исходные файлы проекта
В этой главе рассмотрены аспекты взаимодействия MPLAB и MPASM. Дополнительную информацию о создании проектов в среде MPLAB смотрите в технической документации MPLAB User's Guide (DS51025).
Рис 4.2
Создание проекта необходимо для того, что бы объединить работу компилятора и линкера в генерации кода программы (.HEX) из исходных файлов. На диаграмме показано соотношение заключительного файла кода .HEX и исходного фала .ASM.
4.5 Настройка MPLAB IDE для работы с MPASM
Необходимо выполнить следующие шаги для работы с MPASM в среде MPLAB:
1. После создания проекта (Project>New Project), откроется диалоговое окно настройки проекта. Выберите HEX файл (например, tutor84.hex) в списке файлов проекта Project Files и нажмите кнопку Node Properties для настройки параметров компиляции.
рис 4.2
2. В диалоговом окне настройки параметров укажите MPASM как средство компиляции, а так же если необходимо, настойте другие параметры компиляции.
Рис 4.4 3. Присоедините исходный файл к проекту (нажмите кнопку Add Node в диалоговом окне настройки проекта).
рис 4.5
4. Нажмите ОК для подтверждения настроек.
рис 4.6
4.6 Компиляция исходного текста программы
Запуск компиляции проекта выполняется в MPLAB IDE командой Project>Make Project. HEX файлы автоматически загружаются в память программ.
Вместе с файлом кода создаются дополнительные файлы. Подробную информацию о дополнительных файлах генерируемых при компиляции исходного файла смотрите в разделе 2.5.
4.7 Возможные ошибки
В случае возникновения ошибок в работе MPASM при компиляции проекта рекомендуется проверить следующие параметры:
Выберите пункт меню Project>lnstall Language Tool... и проверьте правильность указания пути к файлу MPASMWIN.EXE и установку флага Windowed. Как альтернатива, может быть указан файл MPASM.EXE, но в этом случае должен быть установлен флаг Command-Line.
рис 4.7
Если Вы используете MPASM.EXE DOS версии и получаете предупреждение о нехватки памяти в компьютере проверьте параметры работы DOS программы в среде Windows. Используя программу “Проводник”, включаемую в операционную систему Windows, нажмите правой кнопкой “мыши” на файле MPASM.EXE и выберите пункт “Свойства”.
рис 4.8
Выберите параметр “переменные среды” (Initial Environment) равный 2048. Если одновременно используется большое количество приложений, параметры которых указаны в файле Autoexec.bat, необходимо выбрать большее значение параметра “ переменные среды”.
5. Директивы MPASM 5.1 Введение
В этой главе будут подробно описаны все директивы MPASM.
Директивы MPASM - команды, которые входят в состав исходного текста программы, но непосредственно не включаются в выходной код. Они используются для управления MPASM, параметрами ввода-вывода и распределением данных.
Многие директивы ассемблера имеют дополнительные имена и форматы. Они предназначены для обеспечения совместимости с более ранними версиями ассемблера и индивидуальными методами программирования. Для получения минимального объема кода программы рекомендуется использовать директивы MPASM, описанные в данном документе.
5.2 Типы директив MPASM
Существует пять основных типов директив:
директивы контроля - управляют созданием разделов условно компилированного кода;
директивы данных - управляют распределением памяти и назначением символических имен переменным и константам;
директивы листинга - определяют формат и состав файла листинга. Эти директивы позволяют: указывать заголовки, нумеровать страницы и настраивать другие параметры;
макро директивы - управляют работой макросов и распределением данных в теле макроса;
директивы объектного файла - используются только при создании объектного файла.
5.3 Список директив MPASM
В таблице представлен список директив поддерживаемых MPASM. В остальной части этой главы будет подробно описана каждая директива. В описании всех директив будут содержаться пункты:
• синтаксис;
• описание;
• пример.
Директива | Описание | Синтаксис | ||
BADRAM | Идентификация нереализованного ОЗУ | badram <expr>[-<expr>][, <ехрг> [-<ехрг>]] | ||
BANKISEL | Выбор банка для косвенной адресации | bankisel <label> | ||
BANKSEL | Выбор банка для прямой адресации | banksel <label> | ||
CBLOCK | Определение блока констант | cblock [<expr>] | ||
CODE | Начало кода объектного файла в памяти программ | [<name>] code [<address>] | ||
CONFIG | Установка битов конфигурации м и кроконтроллера | config <expr> OR config <addr>, <expr> | ||
CONSTANT | Определить символьную константу | constant <label> [-<expr>,...,<label> [-<expr>] ] | ||
DA | Сохранение строки в памяти программ | [<label>] da <expr> [, <expr2>, ..., <exprn>] | ||
DATA | Сохранение значений или текста в памяти программ | [<label>] data <expr>,[,<expr>,...,<expr>] [<label>] data "<text string>" [,"<text string>",...] | ||
Побайтное сохранение данных в | [<label>] db <expr>[,<expr>,...,<expr>] | |||
DB | памяти программ | [<label>] db "<text string>" [,"<text string>",...] | ||
DE #DEFINE | Резервирует 8-разрядное значение в EEPROM памяти Определяет замену текста | [<label>] de <expr>[,<expr>,...,<expr>] [<label>] de "<textstring>"[,"<textstring>",...] ttdefine <name> [<string>] ^define <name> [<arg>,. . .,<arg>] <string> | ||
DT | Определяет таблицу данных | [<label>] dt <expr>[,<expr>,...,<expr>] [<label>] dt "<text string>"[,"<text string>",...] | ||
DW | Резервирует слова памяти программ | [<label>] dw <expr>[,<expr>,...,<expr>] [<label>] dw "<text string>" [,"<text string>",...] | ||
ELSE | Начало альтернативного блока программы условия IF | else | ||
END | Окончание программы | end | ||
EN DC | Окончание автоматического блока констант | endc | ||
ENDIF | Окончание условного блока программы | endif | ||
ENDM | Окончание макроса | endm | ||
ENDW | Завершает цикл While | endw | ||
EQU | Определение константы ассемблера | <label> equ <expr> | ||
ERROR | Формирует сообщение об ошибке | error "<text string>" | ||
ERRORLEVEL EXITM | Настройка параметров вывода сообщений об ошибках Выход из макроса | errorlevel 0 l|2 <+ -xmessage number> exitm | ||
EXPAND | Включение текста макроса в файл листинга программы | expand | ||
EXTERN | Определение внешних меток | extern <label> [ ,<label>] | ||
FILL | Запись значения в память программ | [<label>] fill <expr>, <count> | ||
GLOBAL I DATA | Внешняя метка Объявляет начало инициализации данных в объектном файле | global <label> [ ,<label>] [<name>] idata [<address>] | ||
IDLOCS | Установка значения ID | idlocs <expr> | ||
IF | Начало блока условия | if <expr> | ||
IFDEF | Выполнение, если определена символьная метка | ifdef <label> | ||
IFNDEF | Выполнение, если символьная метка не определена | ifndef <label> | ||
INCLUDE | Подключение дополнительного исходного файла | include “include file” |"<include file>" | ||
LIST | Список параметров | list [<list option>,...,<list option>] | ||
LOCAL | Объявить локальную переменную макроса | local <label>[,<label>] | ||
MACRO | Определить макрос | <label> macro [<arg>,...,<arg>] | ||
MAXRAM | Определяет максимальный объем ОЗУ | maxram <expr> | ||
MESSG | Сформировать сообщение | messg "<message text>" | ||
NOEXPAND | Не разворачивать текст макроса | noexpand | ||
NOLIST | Выключить вывод в файл листинга | nolist | ||
ORG | Установить адрес программы | <label> org <expr> | ||
PAGE | Вставить страницу в файл листинга программы | page | ||
PAGESEL PROCESSOR | Произвести выбор страницы Выбор типа микроконтроллера | pagesel <label> processor <processsor type> | ||
RADIX | Система счисления по умолчанию | radix <default radix> | ||
RES | Резервирование памяти | [<label>] res <mem units> | ||
SET | Определение константы | <label> set <expr> | ||
SPACE | Вставить пустые строки | space <expr> | ||
SUBTITLE | Определение подзаголовка программы | subtitle "<sub text>" | ||
TITLE | Определение заголовка программы | title "<title text>" | ||
UDATA | Начало инициализации данных с обычным размещением в памяти (для объектного файла) | [<label>] udata [<RAM address>] | ||
UDATAACS | Начало инициализации данных быстрого доступа (для объектного файла) | [<label >] udata acs [<RAM address?] | ||
UDATAOVR | Начало инициализации временных данных (для объектного файла) | [<label >] udata ovr [<RAM address>] | ||
UDATASHR | Начало инициализации разделяемых данных (для объектного файла) | [<label >] udata shr [<RAM address;”] | ||
#UNDEFINE VARIABLE | Отменить замену текста Определение символьной | ftundefine <label> | ||
переменной | ||||
WHILE | Цикл While | while <expr> | ||