logo search
Ответы_МПС

Директивы языка mpasm

Директивы языка — это ассемблерные команды, которые встречаются в исходном коде, но не транслируются прямо в исполняемые коды. Они используются ассемблером при трактовке мнемоники входного файла, раз­мещении данных и формировании файла листинга.

Существует четыре основных типа директив в MPASM:

Директивы данных управляют распределением памяти и обеспечива­ют доступ к символическим обозначениям данных.

Директивы листинга управляют листингом файла MPASM и форма­том. Они определяют спецификацию заголовков, генерацию страниц и другие функции управления листингом.

Директивы управления позволяют произвести секционирование обыч­ного ассемблерного кода.

Макро-директивы управляют исполнением и распределением данных в пределах определений макротела.

Ниже приводится описание некоторых директив ассемблера MPASM.

CODE - начало секции объектного кода

Синтаксис:

[<label>] code [ROM address>]

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

Пример:

RESET code H'01FF'

goto START

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

Синтаксис:

#define <name> [<string>]

Директива задает строку <string>, замещающую метку <name> всякий раз, когда та будет встречаться в исходном тексте.

Символы, которые определены директивой #DEFINE, не могут быть просмотрены симулятором. Используйте вместо этой директивы EQU.

Пример:

#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 ; установить в 1 бит 7 в f19

END — конец программного блока

Синтаксис:

end

Определяет конец программы. После остановки программы таблица символов сбрасывается в файл листинга. Пример:

start

;исполняемый код

;

end ; конец программы

EQU — определить ассемблерную константу

Синтаксис:

<label> equ <expr>

Здесь <ехрг> - это правильное MPASM выражение. Значение выраже­ния присваивается метке <label>.

Пример:

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

INCLUDE — включить дополнительный файл источника

Синтаксис:

include <<include_file>>

include "<include_file>"

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

Пример:

include "c:\sys\sysclefs.inc"; system defs

include <addmain.asm> ; register defs

LIST — установить параметры листинга

Синтаксис:

list [<list_option>, , <list_option>]

Директива <list> разрешает вывод листинга, если он до этого был зап­рещен. Кроме того, один из параметров листинга может быть изменен для управления процессом ассемблирования в соответствии с табл. 4.

Параметр

Значение по умолчанию

Описание

C=nnn

80

Количество символов в строке

n=nnn

59

Количество строк на странице

t=ON|OFF

OFF

Укорачивать строки листинга

p=<type>

None

Установить тип процессора: PIC16C54, PIC16C84, PIC16F84, Р1С17С42 и др.

r=<radix>

HEX

Установить систему счисления по умолчанию: hex, dec, oct.

w=<level>

0

Установить уровень сообщений диагностики в файле листинга:

0 — выводить все сообщения;

1 — выводить предупреждения и ошибки;

2 - выводить только ошибки.

x=ON|OFF

OFF

Включить или выключить

макрорасширения.

Табл. 4. Параметры, используемые директивой list.

NOLIST - выключить выход листинга

Синтаксис:

NOLIST

ORG - установить начальный адрес программы

Синтаксис:

<label> org <expr>

Устанавливает начальный адрес программы для последующего кода в соответствии с адресом в <ехрr>. MPASM выводит перемещаемый объек­тный код, a MPLINK разместит код по определенному адресу. Если метка <label> определена, то ей будет присвоена величина <ехрr>. По умолча­нию начальный адрес имеет нулевое значение. Директива может не ис­пользоваться, если создается объектный модуль.

Пример:

int_1 org 0x20; Переход по вектору 20

int_2 org int_1+0x10; Переход по вектору 30

PROCESSOR — установить тип процессора

Синтаксис:

processor <processor_type>

Устанавливает тип используемого процессора <processor_type>:

[16С54 | 16С55 | 16С56 | 16С57 | 16С71 | 16С84 | 16F84 | 17С42]. Общие процессорные семейства могут быть выбраны как:[16С5Х| 16СХХ| 17СХХ] Для поддержания совместимости с новыми изделиями выбирается мак­симум доступной памяти.

SET - определить ассемблерную переменную

Синтаксис:

<label> set <expr>

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

Пример:

area set 0

widthset 0x12

length set 0x14

area set length*width

length set length+1

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

Синтаксис:

title "<title_text>"

Эта директива устанавливает текст, который используется в верхней линии страницы листинга.<title_text> - это печатная ASCII последователь­ность, заключенная в двойные скобки. Она может быть до 60 символов длиной.

Пример

title "operational code, rev 5.0"

  1. Общие сведения о промышленных контроллерах

Промышленные программируемые контроллеры по определению являются надежными и практически “необслуживаемыми” устройствами и выполняют функции регулирования и управления различными объектами (технологическими процессами).

В современном понимании регулятор – это устройство, осуществляющее взаимосвязь между положением органа управления и текущим состоянием объекта управления.

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

  1. В состав промышленного контроллера, как минимум, входят следующие виды обеспечения: аппаратное, программное, методическое и метрологическое.

  2. Промышленный контроллер всегда работает в реальном времени, и его функционирование направлено, как правило, на достижение экстремума целевой функции технологического объекта или процесса.

  3. Промышленный контроллер должен быть обеспечен полным набором технической документации (техническое описание, инструкция по эксплуатации, альбом схем применения, методика выполнения измерений и т.п.).

В заключение отметим основные направления развития промышленных контроллеров в будущем: