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 "з:syssysdefs.inc"; системні параметри include <regs.h>; список регістрів

 

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

5.38.1 Синтаксис

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

5.38.2 Опис

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

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

 

5.38.3 Приклад

list р=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 р=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