Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

BANKISEL - Выбор банка для косвенной адресации




Синтаксис bankisel <label>

Описание Используется при генерации объектного файла. Директива дает команду компилятору сгенерировать код настройки банка памяти данных для косвенного обращения к регистру <label>. Только одна метка может быть указана в директиве. Предварительно метка <label> должна быть объявлена, и соответствовать назначению директивы. Линкер генерирует соответствующий код для выбора банка памяти. Для 14 - разрядных микроконтроллеров выполняется воздействие на бит IRP в регистре STATUS в соответствии с банком размещения регистра. Для 16-разрядных микроконтроллеров генерируются команда MOVLB или MOVLR. Если пользователь сам выбирает рабочий банк памяти, то никаких дополнительных инструкций в код программы добавлено не будет.

Пример:

movlw Varl

movwf FSR

bankisel Varl

movwf INDF

 

BANKSEL - Выбор банка для прямой адресации

Синтаксис banksel <label>

Описание

Используется при генерации объектного файла. Директива дает команду компилятору сгенерировать код настройки банка памяти данных для прямого обращения к регистру <label>. Только одна метка может быть указана в директиве. Предварительно метка <label> должна быть объявлена, и соответствовать назначению директивы.

Линкер генерирует соответствующий код для выбора банка памяти. Для 12-разрядных микроконтроллеров устанавливает/сбрасывает бит в регистре FSR. Для 14-разрядных микроконтроллеров - изменяются биты в регистре STATUS. Для 16-разрядных микроконтроллеров генерируются команда MOVLB или MOVLR. Для усовершенствованных 16-разрядных микроконтроллеров будет сгенерированна команда MOVLB. Если в микроконтроллере только один банк памяти никакой дополнительный код генерироваться не будет.

 

banksel Varl
movwf Varl

 

CBLOCK- Определение блока констант

Синтаксис cblock [<ехрг>] <label>[:<increment>][,<label>[:<increment>]] endc

Описание Определить список именованных констант. Каждая именованная константа <label> имеет некоторое значение, описанное выше по тексту программы. Цель данной директивы состоит в том, чтобы указать адреса размещения нескольких констант. Список именованных констант заканчивается директивой ENDC. <ехрг> - указывает стартовый адрес для первой константы. Если адрес не указан, то используется заключительное значение предыдущего CBLOCK. Если первый CBLOCK не имеет никакого значения <ехрг>, то размещение начинается с нулевого адреса. <increment> - указывает приращения адреса для текущей именованной константы. Именованные константы в одной строке разделяются запятыми. Директива CBLOCK используется для размещения констант в памяти программ и памяти данных.

Пример

cblock 0x2 0; name_1 будет иметь адрес 20

name_1, name_2; name_2, 21, name_3, 22

name_3, name_4; паmе_4 адрес 23.

endc

 

cblock 0x30

TwoByteVar: 0, TwoByteHigh, TwoByteLow

Queue: QUEUE_SIZE

QueueHead, QueueTail

Doublel:2, Double2:2

endc

 

CODE - Начало кода объектного файла в памяти программ

Синтаксис [<label>] code [<R0M address>]

Описание Используется при генерации объектного файла. Объявляет начало секции кода программы. Если <label> не указана, секции присваивается имя.code. Если не указан адрес секции, то ей будет присвоено текущее значение адреса в памяти программ.

Пример RESET code H'01FF' goto START

 

CONFIG - Установка битов конфигурации микроконтроллера

Синтаксис _ _config <expr> OR _ _config <addr>, <expr>

Описание Устанавливает биты конфигурации микроконтроллера в соответствии со значением <ехрг>. Для микроконтроллеров семейства PIC18CXXX дополнительно указывается адрес <addr> размещения конфигурационных битов. Подробное описание конфигурационных битов смотрите в технической документации на соответствующий микроконтроллер. Предварительно, перед директивой CONFIG, надо указать тип микроконтроллера с помощью директивы LIST или PROCESSOR. Для микроконтроллеров семейства PIC17CXXX в директиве LIST необходимо указать выходной формат HEX файла INHX32.

Пример

list p=17c42,f=INHX32

config h'ffff'; Конфигурация по умолчанию

 

CONSTANT- Определить символьную константу

Синтаксис constant <label>[=<expr>,...,<label>[=<expr>] ]

Описание Создает символьную константу для использования в выражениях MPASM. Существующая константа не может быть определена повторно, а выражения используемые при определении константы должны быть полностью разрешимы. Это основное отличие между константами определенными директивой CONSTANT и VARIABLE, SET. Иначе, константы и переменные могут поочередно использоваться в выражениях.

Пример

variable RecLength=64

constant BufLength=512

constant MaxMem=RecLength+BufLength

 

DA - Сохранение строки в памяти программ

Синтаксис da <expr> [, <expr2>,..., <exprn>]

Описание Упаковывает в 14-битный формат два 7-битных символа ASCII. Используется для сохранения символьной строки в FLASH памяти программ микроконтроллера.

Пример

da "abcdef"

ВПаМЯТИПрограмм - 30Е2 31Е4 32Е6 3380

da "12345678",0

ВПаМЯТИПрограмм - 18В2 19В4 1АВ6 0 00 0

da OxFFFF

В памяти программ - 0x3fff

 

DATA - Сохранение значений или текста в памяти программ

Синтаксис [<label>] data <expr>,[,<expr>,...,<expr>] [<label>] data "<text_string>"[,"<text_string>",...]

Описание Инициализирует одно или более слов памяти программ. Данные могут быть в виде констант, внутренних/внешних меток или их выражений. Данные также могут состоять из цепочки (одного) символов ASCII <text_string>. Один символ сохраняется в младшем байте памяти программ, в случае сохранения нескольких символов они упаковываются в слова по два знака. Если сохраняется нечетное число символов, то заключительный байт равен нулю. Во всех семействах микроконтроллеров, кроме PIC18CXXX, первый символ сохраняется в старшем байте слова. Для PIC18CXXX первый символ сохраняется в младшем байте слова. Эта директива может использоваться при генерации объектного файла. Дополнительную информацию смотрите в описании директивы IDATA.

Пример

data reloc_label+10 data l,2,ext_label data "testing 1,2,3" data 'N' data start_of_program

 

DB - Побайтное сохранение данных в памяти программ

Синтаксис db <expr>[,<expr>,...,<expr>]

Описание Резервирует слово в памяти программ с сохранением 8-битного значения. Многозначные выражения последовательно заполняют слова памяти программ. В случае нечетного числа значений последний байт будет равен нулю. Эта директива может использоваться при генерации объектного файла. Дополнительную информацию смотрите в описании директивы IDATA.

Пример db 't', OxOf, 'e', OxOf, 's', OxOf, 't', '\n'

 

DE - Резервирует 8-разрядное значение в EEPROM памяти

Синтаксис de <expr>[,<expr>,...,<expr>]

Описание Резервирует слово в EEPROM памяти для сохранения 8-битное значения <ехрг>. Старшие биты слова равны нулю. Каждое 8-разрядное значение сохраняется в отдельном слове. Директива была разработана для PIC16F8X, но может быть использована и в других микроконтроллерах.

Пример

org H'20'; Инициализация EEPROM

de "My Program", 0

 

#DEFINE - Определить замену текста

Синтаксис #define <name> [<string>] #define <name> [<arg>,...,<arg>] <string>

Описание Данная директива определяет правила замены текста. В тексте программы строка <name> будет заменена последовательностью символов <string>. В случае использования директивы без указания параметра <string> последовательность <name> отмечается MPASM для последующей проверки IFDEF. Эта директива подражает директиве #define стандарта ANSI 'С. Символы, определенные данным методом не доступны для просмотра в среде MPLAB IDE.

Пример

#define length 20

#define control 0x19,7

#define position(X,Y,Z) (Y-(2 * Z +X))

test_label dw position(1, length, 512)

bsf control; установка бита 7 в регистре 0x19

 

DT- Определяет таблицу данных

Синтаксис [<label>] dt <expr>[,<expr>,...,<expr>] [<label>] dt "<text_string>"[,"<text_string>",...]

Описание Генерирует серию команд RETLW для 8-разрядных значений <ехрг>. Каждое значение <ехрг> сохраняется в отдельной команде RETLW.

Пример

dt "A Message", О

dt FirstValue, SecondValue, EndOfValues

 

DW - Резервирует слова памяти программ

Синтаксис [<label>] dw <expr>[,<expr>,...,<expr>] [<label>] dw "<text_string>"[,"<text_string>",...]

Описание Резервирует слова в памяти программ для данных, заполняя пустые места определенными значениями. Для микроконтроллеров семейства PIC18CXXX директива DW работает подобно DB. Адрес последнего резервирования в памяти программ запоминается и увеличивается на единицу при каждом сохранении значений. Выражения могут быть литеральными с сохранением в памяти программ аналогично директиве DATA.

Эта директива может использоваться при генерации объектного файла. Дополнительную информацию смотрите в описании директивы IDATA.

Пример

dw 39, "diagnostic 39", (d_list*2+d_offset) dw diagbase-1

ELSE - Начало альтернативного блока программы условия IF

Синтаксис else

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

Пример

speed macro rate if rate < 50

dw slow else

dw fast endif endm

 

END - Окончание программы

Синтаксис end

Описание Указывает окончание текста программы.

Пример

list p=17c42

:; текст программы

end; конец всех команд

 

ENDC - Окончание автоматического блока констант

Синтаксис endc

Описание Используется совместно с директивой CBLOCK. Указывает окончание списка констант.

 

ENDIF - Окончание условного блока программы

Синтаксис endif

Описание Указывает окончание условного блока. Директива ENDIF может быть использована внутри регулярного блока программы или макроса.

 

ENDM - Окончание макроса

Синтаксис endm

Описание Завершает макрос, открытый директивой MACRO.

Пример make_table macro argl, arg2 dw argl, 0 res arg2 endm

 

ENDW- Завершает цикл While

Синтаксис endw

Описание Завершает цикл WHILE. Пока условие, указанное в директиве WHILE, остается истинным, программа будет выполняться между директивами WHILE и ENDW. Директива ENDW может быть использована внутри регулярного блока программы или макроса.

 

EQU - Определение константы ассемблера

Синтаксис <label> equ <expr>

Описание Присваивает значение <ехрг> константе <label>.

Пример

four equ 4; присваивает значение 4 константе four

 

ERROR - Формирует сообщение об ошибке

Синтаксис error "<text_string>"

Описание Сообщение <text_string> (длиной от 1 до 80 символов) будет напечатано в списках ошибок MPASM.

Пример

error_checking macro argl

if argl >= 55

error "error_checking-01 arg out of range"

endif endm

 

ERRORLEVEL - Настройка параметров вывода сообщений об ошибках

Синтаксис errorlevel {0|1|2|+<msgnum>|-<msgnum>} [,...]

Описание Указание типов сообщений, которые будут включены в файл списка ошибок.

Параметр Эффект
  Вывод сообщений, предупреждений и ошибок
  Вывод предупреждений и ошибок
  Вывод только ошибок
+<msgnum> Разрешить ВЫВОД Сообщение С КОДОМ <msgnum>
-<msgnum> Запретить ВЫВОД Сообщение С КОДОМ <msgnum>

 

Пример

errorlevel 1, -202

 

EXITM - Выход из макроса

Синтаксис exitm

Описание Принудительный выход из макроса во время его выполнения. Эффект аналогичен выполнению директивы ENDM.

Пример

test macro filereg if filereg == 1

exitm else

error "bad file assignment" endif endm

 

EXPAND - Включение текста макроса в файл листинга программы

Синтаксис expand

Описание Разрешает включение в файл листинга программы полного текста макроса. Действие аналогично команде /т MPASM при его запуске из командной строки. Действует до директивы NOEXPAND.




Поделиться с друзьями:


Дата добавления: 2014-01-11; Просмотров: 1371; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.063 сек.