Oран-Г4+ - Схемы - Описание - Йазыг HPL - FAQ - F O R U M

Изделие ОРАН-Г4+ производится порталом

www.OKTJA.ru

и не имеет ничего общего с изделиями всяких конкурентов


Описание языка LPH rev 6.66

    Язык LPH (т.е. Языг Лоха и Лопуха) разработан специально для описания низкоуровневых протоколов обмена с различными устройствами.

Рассмотрим реализацию языка HPL в трансляторе программатора Orange.
Cимволом (*) обозначены примеры в данном документе.
Cимволом (W) обозначены операторы и команды, поддерживаемые только Windows версией.

Символ ';' является признаком комментария - конец строки начиная с этого символа не обрабатывается. Все пробелы внутри текста удаляются, за исключением текстовых строк. Ключевые слова пишутся только в верхнем регистре (большими буквами).

    Описание протокола состоит из нескольких секций, основными являются три: начальная, [READ] - чтение слова и [WRITE] - записи слова.

Кроме этого, дополнительно можно использовать следующие секции:

[SETUP] - начальная установка, вызывается однократно при загрузке модуля
[INIT] - инициализация, вызывается однократно перед всеми операциями.
[WRITEINIT] - инициализации записи, вызывается один раз перед началом записи EEPROM.
[WRITEEND] - завершение записи, вызывается один раз после записи всех слов EEPROM.
[READBLOCK] - Чтение блока
[WRITEBLOCK] - Запись блока
[END] - завершение операции, вызывается один раз для любой операции.

    При необходимости могут быть описаны дополнительные пользовательские секции, которые добавляются в меню под своим именем. Их названия также записываются в скобках []. При использовании пробелов имена следует дополнительно заключать в кавычки:
(*)["Test 1"]
Секция с именем [---] служит для использования в качестве разделителя в меню и не вызывается (W).

Можно использовать локальные секции (функции). Для описания функций перед именем добавляется символ '_' :

(*) [_START]

Функции должны быть описаны в модуле до их использования. Вызов функции осуществляется по имени:

(*) _START.

Передача параметров возможна с использованием регистров. Разрешено использовать внутри функций вызовы других функций. Не рекомендуется использование рекурсивных вызовов.

Секции чтения и записи вызываются при выполнении операций Read и Write для каждого слова.

Порядок вызова секций в режиме чтения:

[INIT]
FOR (ADR=0,ADR<SIZE;ADR++{
    [READ]
}
[END]

Порядок вызова секций в режиме записи:

[INIT]
[WRITEINIT]
FOR (ADR=0,ADR<SIZE;ADR++{
     [WRITE]
     IF (Проверка записи)
         [READ]
}
[WRITEEND]
[END]

Порядок вызова для пользовательских команд:
[INIT]
[USERSECTION]
[END]

Измение ADR внутри секции не меняет глобального значения.

В начальной секции описываются:

    Все остальные секции имеют одинаковый формат записи. в одной строке может быть описано несколько инструкций, между собой они разделяются запятыми.

Краткое описание инструкций приведено ниже:

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

 

Сайт управляется системой uCoz