Директивы языка 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"
Общие сведения о промышленных контроллерах
Промышленные программируемые контроллеры по определению являются надежными и практически “необслуживаемыми” устройствами и выполняют функции регулирования и управления различными объектами (технологическими процессами).
В современном понимании регулятор – это устройство, осуществляющее взаимосвязь между положением органа управления и текущим состоянием объекта управления.
функциональное устройство, предназначенное для управления конкретным технологическим объектом или процессом.
В состав промышленного контроллера, как минимум, входят следующие виды обеспечения: аппаратное, программное, методическое и метрологическое.
Промышленный контроллер всегда работает в реальном времени, и его функционирование направлено, как правило, на достижение экстремума целевой функции технологического объекта или процесса.
Промышленный контроллер должен быть обеспечен полным набором технической документации (техническое описание, инструкция по эксплуатации, альбом схем применения, методика выполнения измерений и т.п.).
В заключение отметим основные направления развития промышленных контроллеров в будущем:
создание контроллеров на основе единства (оптимизации) аппаратных, программных и методических средств;
широкое использование технологии ВКТ, в том числе “Компьютер на модуле” (лидеры Kontron, Advantech) при разработке контроллеров. Может быть, даже целесообразно ввести термин – Встраиваемые Контроллерные Технологии (ВКонТ);
влияние новой элементной базы на контроллеростроение: резкое увеличение степени интеграции БИС и повышение степени функциональности: системы на кристалле, применение программируемых цифровых и аналоговых интегральных микросхем (ПЛИС и ПАИС);
создание языка типовых технологических операций в аппаратно-программной среде контроллеров (типовые функционально законченные задачи, например, канал измерения температуры и т.п.) и их стандартизация;
применение методов искусственного интеллекта (в первую очередь экспертных систем, нечеткой логики и нейронных сетей).
- 1. Состав и назначение семейств pic-контроллеров
- 6. Схема тактирования и цикл выполнения команды в мк pic16f84
- 7. Организация памяти программ и стека
- 8. Организация памяти данных
- 9. Регистры специального назначения pic16f84: регистр status
- 10. Регистры специального назначения pic16f84: регистр option
- 11. Регистры специального назначения pic16f84: регистр intcon
- 12. Регистры специального назначения pic16f84: счетчик команд pcl и pclath
- 13. Прямая и косвенная адресация в мк pic16f84
- Порт ввода/вывода «а» мк pic16f84
- Порт ввода/вывода «в» мк pic16f84
- Модуль таймера tmr0 мк pic16f84
- Память данных eeprom мк pic16f84
- 18 Организация прерываний в мк pic16f84
- 19 Работа с модулем ацп в мк pic16f676
- 20. Работа с модулем опорного напряжения в мк
- 21 Работа с модулем компаратора в мк
- 22 Форматы команд pic16f84a
- 23 Команды работы с байтами в мк pic16f84
- 24 Команды работы с битами в мк pic16f84
- 25 Команды управления в мк pic16f84
- 26 Команды работы с константами в мк pic16f84
- 27 Синтаксис ассемблера mpasm: метки, мнемоники, операнды, комментарии
- Директивы языка mpasm
- Языки программирования плк
- Промышленные сети и интерфейсы: Can