Студопедия

КАТЕГОРИИ:


Архитектура-(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)

GLOBAL - Внешняя метка




FILL - Запись значения в память программ

5.30.1 Синтаксис

[<label>] fill <expr>, <count>

5.30.2 Описание

Записывает <count> слов программы (или байт для Р1С18СХХХ) <ехрг>. Инструкция ассемблера может быть указана в круглых скобках.

5.30.3 Пример

fill 0х1009, 5 fill (GOTO RESET_VECTOR), NEXT_BLOCK-$

5.30.4 См. также DATA, DW, ORG

5.31.1 Синтаксис

global <label>[,<label>]

5.3^.2 Описание

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

Дополнительную информацию смотрите в главе 6.

5. 31.3 Пример

udata Varl res 1 Var2 res 1

global Varl, Var2

code AddThree

global AddThree

addlw 3

return

5.3'?. 4 См. также EXTERN, IDATA, TEXT, UDATA, UDATA ACS, UDATA OVR, UDATA SHR


5.32 IDATA - Объявляет начало инициализации данных в объектном файле

5.32.1 Синтаксис

[<name>] idata [<address>]

5.32.2 Описание

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

Данная директива не доступна для 12-разрядных микроконтроллеров.

Директивы RES, DB и DW могут использоваться для резервирования места под переменные. RES произведет установку нуля. DB будет последовательно инициализировать байты ОЗУ. DW - последовательно, пословно инициализирует байты ОЗУ (младший байт/старший байт).

Дополнительную информацию смотрите в главе 6.

5.32.3 Пример

idata LimitL dw 0 LimitH dw D'300' Gain dw D' 5' Flags db 0 String db 'Hi there!'

5.32.4 См. также

EXTERN, GLOBAL, TEXT, UDATA, UDATA_ACS, UDATA_OVR, UDATA_SHR

5.33 _ JDLOCS - Установка значения ID

5.33.1 Синтаксис

_ _idlocs <expr>

5.33.2 Описание

Для микроконтроллеров Р1С12СХХХ, Р1С14000 и Р1С16ХХХ указывается 4 шестнадцатиразрядных полубайта ID. Для микроконтроллеров семейства Р1С18СХХХ указывается два шестнадцатиразрядных значения ID <expr1> и <ехрг2>. Данная директива не имеет силу для микроконтроллеров Р1С17СХХХ.

Например, если значение <ехрг> равно 1AF, то первое значение - нуль (в младшем адресе); второе - один; третье - десять; четвертое - пятнадцать. Прежде чем использовать эту директиву необходимо указать тип микроконтроллера директивой LIST или PROCESSOR.

5.33.3 Пример

_ _idlocs H'1234'

5.33.4 См. также

LIST, PROCESSOR, __CONFIG

5.34 IF - Начало блока условия

5.34.1 Синтаксис

if <expr>

5.34.2 Описание

Начало выполнения условного блока. Если выражение <ехрг> оценивается истинным, то выполняется код программы после директивы IF. Иначе последующий текст программы игнорируется, пока не встретится директива ELSE или ENDIF.

Выражение, которое имеет значение нуль, рассматривается как логическая ЛОЖЬ. Выражение, имеющее любое другое значение, рассматривается как логическая ИСТИНА. Директивы IF и WHILE работают с логическим значением выражения. Логическая ИСТИНА гарантирует не нулевой результат выражения, а логическая ЛОЖЬ нулевой результат.

5.34.3 Пример

if version == 100

movlw OxOa

movwf io_l else

movlw 0х0 la

movwf io_2 endif

5.34.4 См. также ELSE, ENDIF


5.35 IFDEF- Выполнение, если определена символьная метка

5.35.1 Синтаксис

ifdef <label>

5.35.2 Описание

Если <label> была предварительно определена (#DEFINE), то выполняется текст программы идущий непосредственно за директивой IFDEF. В противном случае последующий текст программы пропускается пока не встретится директива ELSE или ENDIF.

5.35.3 Пример

ftdefine testing 1; установить testing "on"

ifdef testing

<execute test code>;выполняемый КОД endif

5.35.4 См. также

#DEFINE, ELSE, ENDIF, IFNDEF, #UNDEFINE

5.36 IFNDEF - Выполнение, если символьная метка не определена

5.36.1 Синтаксис

ifndef <label>

5.36.2 Описание

Если <label> не была предварительно определена или определение метки было отменено #UNDEFINE, то выполняется текст программы идущий непосредственно за директивой IFNDEF. В противном случае последующий текст программы пропускается пока не встретится директива ELSE или ENDIF.

5.36.3 Пример

ftdefine testing!; установить testing "on"

ftundefine testingi; установить testing "off ifndef testing:; выполняемый код

endif end; конец условия

5.36.4 См. также

#DEFINE, ELSE, ENDIF, IFDEF, #UNDEFINE

5.37 INCLUDE - Подключение дополнительного исходного файла

5.37.1 Синтаксис

include “include_file” include "<inelude_file>"

5.37.2 Описание

Указанный файл читается как исходный текст программы. Эффект аналогичен копирования полного текста программы указанного файла в место расположения директивы. После окончания компиляции подключенного модуля, компиляция продолжается в исходной программе. Допускается до шести уровней вложения файлов.

<include_file> может быть указан в кавычках или угловых скобках. Если указан полный путь к файлу, то поиск файла будет происходить только в указанной директории. Если путь к подключаемому файлу не указан, то поиск файла будет выполняться в текущей рабочей директории, директории исходного файла и директории выполняемого MPASM.

5.37.3 Пример

include "с:\sys\sysdefs.inc"; системные параметры include <regs.h>; список регистров


5.38 LIST - Список параметров

5.38.1 Синтаксис

list [<list_option>,...,<list_option>]

5.38.2 Описание

Директива LIST должна быть размещена на отдельной строке. Она изменяет параметры компиляции исходного файла и генерации файла листинга. Один или несколько следующих параметров может быть указан в директиве LIST:

Параметр   Значение по умолчанию   Описание  
b=nnn     Число пробелов при табуляции  
c=nnn     Число символов в строке  
f=<format>   INHX8M   Формат выходного HEX файла <format>: INHX32, INHX8M, INHX8S  
free   FIXED   Использование свободного формата печати  
fixed   FIXED   Использование фиксированного формата печати  
mm={ON|OFF}   On   Включать карту памяти в файл листинга программы  
n=nnn     Число строк на одной страницы  
p=<type>   НЕТ   Тип микроконтроллера. Например, Р1С16С54  
r=<radix>   hex   Система счисления по умолчанию: hex, dec, oct  
st={ON|OFF}   On   Включать таблицу символов в файл листинга программы  
t={ON|OFF}   Off   Усечение длинных строк  
w={0|1|2}     Установка уровня сообщений. См. ERRORLEVEL  
x={ON|OFF}   On   Включать полный текст макроса  

 

5.38.3 Пример

list p=17c42, f=INHX32, r=DEC

5.38.4 См. также

ERRORLEVEL, EXPAND, NOEXPAND, NOLIST, PROCESSOR, RADIX

5.39 LOCAL - Объявить локальную переменную макроса

5.39.1 Синтаксис

local <label> [,<label>]

5.39.2 Описание

Объявляет, что указанные элементы данных должны рассматриваться только внутри макроса. <label> может иметь имя идентичное другой метки объявленной в основной программе, при этом ошибки не возникнет.

Если макрокоманда вызывается рекурсивно, то при каждом обращении будет создаватся собственная локальная копия.

5.39.3 Пример

<основная программа>

len equ 10; глобальная версия size equ 20; создание и изменение локальных переменных

; на них не влияет test macro size;

local len, label; локальные len и label len set size label res len len set len-20 endm; конец макроса

5.39.4 См. также ENDM,MACRO


5.40 MACRO - Определить макрос

5.40.1 Синтаксис

<label> macro [<arg>,...,<агд>]

5.40.2 Описание

Макрос - последовательность инструкций, которые могут быть вставлены в код программы, используя единственный макро запрос. Перед началом использования макроса его необходимо определить выше по тексту программы.

В теле макроса можно вызывать другой макрос или этот же макрос рекурсивно.

Дополнительную информацию смотрите в главе 7.

5.40.3 Пример

Read macro device, buffer, count movlw device movwf ram_2 0 movlw buffer movwf ram_21 movlw count call sys_21 endm

5.40.4 См. также

ELSE, ENDIF, ENDM, EXITM, IF, LOCAL

5.41 _ _MAXRAIVI - Определяет максимальный объем ОЗУ

5.41.1 Синтаксис _ _maxram <expr>

5.4^.2 Описание

Директивы _ _MAXRAM и _ J3ADRAM определяют адреса нереализованных регистров ОЗУ. _ _MAXRAM определяет абсолютный максимальный адрес в ОЗУ и инициализирует карту доступного ОЗУ с адресами меньше <ехрг>. Значение <ехрг> должно быть больше или равняться максимальному адресу банка 0 ОЗУ и меньше 1000П. Данная директива предназначена для использования совместно с директивой _ J3ADRAM. После директивы _ _MAXRAM, в тексте программы, точная карта нереализованного ОЗУ создается директивами __BADRAM.

_ _MAXRAM может использоваться более одного раза в тексте программы, при этом повторно пересматривается максимальный объем ОЗУ и сбрасывается карта нереализованных регистров.

5.41.3 Пример

list p=16c622 _ _maxram H'OBF'

_ _badram H'07'-H'09', H'OD'-H'IE' _ _badram H'87'-H'89', H'8D', H'8F'-H'9E' movwf H'07'; Обращение к несуществующей ячейке ОЗУ movwf н'87'; Обращение к несуществующей ячейке ОЗУ; вызовет сообщение об ошибке

5.4^.4 См. также __BADRAM

5.42 MESSG - Сформировать сообщение

5.42.1 Синтаксис

messg "<message_text>"

5.42.2 Описание

Включает информационное сообщение (не более 80 символов) в файл листинга программы. Директива не формирует коды ошибок.

5.42.3 Пример

mssg_macro macro

messg "mssg_macro-001 invoked without argument" endm

5.42.4 См. также ERROR


5.43 NOEXPAND - Не разворачивать текст макроса

5.43.1 Синтаксис

noexpand

5.43.2 Описание

Директива не разрешает разворачивать текст макроса в файле листинга программы при его вызове.

5.43.3 См. также EXPAND

5.44 NOLIST - Выключить вывод в файл листинга

5.44.1 Синтаксис

nolist

5.44.2 Описание

Выключить вывод в файл листинга.

5.44.3 См. также LIST

5.45 ORG - Установить адрес программы

5.45.1 Синтаксис

<label> огд <ехрг>

5.45.2 Описание

Установить <ехрг> адрес программы. Если указана метка <label> то она будет иметь адрес <ехрг>. Если в тексте программы не встречается директива ORG, то считается, что программа начинается с нулевого адреса. Для микроконтроллеров Р1С18СХХХ допускается только значение <ехрг>. Данная директива не может быть использована при генерации объектного файла.

5.45.3 Пример

int_l org 0х20

; Вектор с адресом 20 int_2 org int_l+0xl0

; Вектор с адресом 30

5.45.4 См. также FILL, RES

5.46 PAGE - Вставить страницу в файл листинга программы

5.46.1 Синтаксис page

5.46.2 Описание

Вставить страницу в файл листинга программы.

5.46.3 См. также LIST, SUBTITLE, TITLE


5.47 PAGESEL - Произвести выбор страницы

5.47.1 Синтаксис

pagesel <label>

5.47.2 Описание

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

Для микроконтроллеров с 12-разрядными командами будет изменено значение регистра STATUS. Для микроконтроллеров с 14/16-разрядными будет изменено значение регистра PCLATH командами MOVLW и MOVWF. Если микроконтроллеры содержат только одну страницу памяти программ, то никакой дополнительный код не будет сгенерирован.

Для микроконтроллеров семейства Р1С18СХХХ директива не имеет смысла.

Дополнительную информацию смотрите в главе 6.

5.47.3 Пример

pagesel GotoDest goto GotoDest

pagesel CallDest call CallDest

5.47.4 См. также BANKISEL, BANKSEL

5.48 PROCESSOR - Выбор типа микроконтроллера

5.48.1 Синтаксис

processor <processsor_type>

5.48.2 Описание

Устанавливает тип микроконтроллера <processsor_type>.

5.48.3 Пример

processor 16C54

5.48.4 См. также LIST

5.49 RADIX - Система счисления по умолчанию

5.49.1 Синтаксис

radix <default_radix>

5.49.2 Описание

Указывает системы счисления по умолчанию: hex, dec, oct. Первоначально установлена шестнадцатеричная система счисления (hex).

5.49.3 Пример

radix dec

5.49.4 См. также LIST


5.50 RES - Резервирование памяти

5.50.1 Синтаксис

[<label>] res <mem_units>

5.50.2 Описание

Резервирует <rnem_units> слов программы от текущего местоположения для хранения данных. В неперемещаемом коде программы <label> указывает адрес в памяти программ. В перемещаемом коде программы (при использовании MPLINK) директива RES может использоваться для резервирования памяти данных.

Для всех микроконтроллеров резервируется слово в памяти программ, кроме микроконтроллеров семейства Р1С18, в которых резервируется байт памяти программ.

5.50.3 Пример

buffer res 64

5.50.4 См. также FILL, ORG

5.51 SET - Определение константы

5.51.1 Синтаксис

<label> set <expr>

5.5^.2 Описание

Присваивает <label> значение <ехрг> для использования в выражениях MPASM. Действует аналогично директиве EQU за исключением того, что значение <label> может быть впоследствии переопределено директивой SET.

5.51.3 Пример

area set 0

width set 0х12

length set 0х14

area set length * width

length set length + 1

5.5^.4 См. также EQU, VARIABLE

5.52 SPACE- Вставить пустые строки

5.52.1 Синтаксис

space <expr>

5.52.2 Описание

Вставляет в файл листинга программы <ехрг> пустых строк.

5.52.3 Пример

space 3

5.52.4 См. также LIST

5.53 SUBTITLE - Определение подзаголовка программы

5.53.1 Синтаксис

subtitle "<sub_text>"

5.53.2 Описание

<sub_text> последовательность ASCII символов (не более 60) вставляемая во вторую строку колонтитула страниц файла листинга программ.

5.53.3 Пример

subtitle "diagnostic section"

5.53.4 См. также TITLE


5.54 TITLE - Определение заголовка программы

5.54.1 Синтаксис

title "<title_text>"

5.54.2 Описание

<title_text> последовательность ASCII символов (не более 60) вставляемая в верхнюю строку колонтитула страниц файла листинга программ.

5.54.3 Пример

title "<title_text>"

5.54.4 См. также LIST, SUBTITLE

5.55 UDATA - Начало инициализации данных с обычным размещением в памяти (для объектного файла)

5.55.1 Синтаксис

[<label>] udata [<RAM address>]

5.55.2 Описание

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

Если адрес не определен, то будет назначен текущий адрес инициализации.

Ни какой код не генерируется в данной директиве. Директива RES должна использоваться для резервирования места под данные.

Примечание. В исходном файле две секции не могут иметь одно и тоже имя.

Дополнительную информацию смотрите в главе 6.

5.55.3 Пример

udata Varl res 1 Double res 2

5.55.4 См. также

EXTERN, GLOBAL, IDATA, UDATA_ACS, UDATA_OVR, UDATA_SHR

5.56 UDATA_ACS - Начало инициализации данных быстрого доступа (для объектного файла)

5.56.1 Синтаксис

[<1аЬе1 >] udata_acs [<RAM address>]

5.56.2 Описание

Используется при генерации объектного файла. Объявляет начало секции данных быстрого доступа для микроконтроллеров семейства Р1С18СХХХ. Если секция не названа, ей присваивается имя.udata_acs.

Если адрес не определен, то будет назначен текущий адрес инициализации.

Ни какой код не генерируется в данной директиве. Директива RES должна использоваться для резервирования места под данные.

Примечание. В исходном файле две секции не могут иметь одно и тоже имя.

Дополнительную информацию смотрите в главе 6.

5.56.3 Пример

udata_acs Varl res 1 Double res 2

5.56.4 См. также

EXTERN, GLOBAL, IDATA UDATA, UDATA OVR, UDATA SHR


5.57 UDATA_OVR - Начало инициализации временных данных (для объектного файла)

5.57.1 Синтаксис

[<label >] udata_ovr [<RAM address>]

5.57.2 Описание

Используется при генерации объектного файла. Объявляет начало секции временных данных. Если секция не названа, ей присваивается имя.udata_ovr. Место, зарезервированное в данной секции доступно другими udata_ovr секциями с таким же именем. Это оптимальный метод резервирования памяти под временные переменные.

Если адрес не определен, то будет назначен текущий адрес инициализации.

Ни какой код не генерируется в данной директиве. Директива RES должна использоваться для резервирования места под данные.

Примечание. Исключение к правилу, что две секции не могут иметь одно и тоже имя в одном исходном файле.

Дополнительную информацию смотрите в главе 6.

5.57.3 Пример

Temps udata_ovr

Tempi res 1

Temp2 res 1

ТетрЗ res 1

Temps udata_ovr

LongTernpl res 2; эта переменная имеет тот же адрес что и Tempi, Temp2

LongTemp2 res 2; эта переменная имеет тот же адрес что и ТетрЗ

5.57.4 См. также

EXTERN, GLOBAL, IDATA, UDATA, UDATA_ACS, UDATA_SHR

5.58 UDATA_SHR - Начало инициализации разделяемых данных (для объектного файла)

5.58.1 Синтаксис

[<label >] udata_shr [<RAM address>]

5.58.2 Описание

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

Если адрес не определен, то будет назначен текущий адрес инициализации.

Ни какой код не генерируется в данной директиве. Директива RES должна использоваться для резервирования места под данные.

Примечание. В исходном файле две секции не могут иметь одно и тоже имя.

Дополнительную информацию смотрите в главе 6.

5.58.3 Пример

Temps udata_shr Tempi res 1 Temp2 res 1 ТетрЗ res 1

5.58.4 См. также

EXTERN, GLOBAL, IDATA, UDATA, UDATA_ACS, UDATA_OVR

5.59 #UNDEFINE - Отменить замену текста

5.59.1 Синтаксис

ftundefine <label>

5.59.2 Описание

Отменяет определенную директивой #DEFINE замену текста. Указанная в директивы метка должна быть предварительно определена в MPASM. После выполнения директивы метка удаляется из таблицы символов.

5.59.3 Пример

ftdefine length 20

ftundefine length

5.59.4 См. также

#DEFINE, IFDEF, INCLUDE, IFNDEF


5.60 VARIABLE - Определение символьной переменной

5.60.1 Синтаксис

variable <label> [=<expr>,...,<label>[=<expr>] ]

5.60.2 Описание

Директивой объявляются переменные, используемые в выражениях MPASM. Переменные и константы могут использоваться в выражениях попеременно.

Директива VARIABLE определяет переменную, которая является функциональным эквивалентом созданной директивой SET. Отличием является то, что в директиве VARIABLE не требуется указывать конкретное значение при объявлении.

Примечание. Значение переменных не может быть обновлено в пределах операнда. Изменение переменных должно быть выполнено на отдельных строках программы.

5.60.3 Пример

Пример смотрите в описании директивы CONSTANT

5.60.4 См. также CONSTANT, SET




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


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


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



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




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