Команды и директивы компилятора PROTON

Dim

Синтаксис:

Dim Variable { As } { Size }

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

Пример 1

Пример 2

Примечания

Оператор Dim может использоваться и для создания констант:

Использование констант отличается от использования переменных тем, что они не занимают места в оперативной памяти. Они просто являются псевдонимами чисел.

Числовые константы могут быть определены в виде сложных уравнений:

Оператор DIM можно использовать для создания констант c плавающей запятой. Для этого необходимо просто добавить десятичную точку в её числовое значение.

Константа с плавающей запятой может быть создана, используя выражения cледующего вида:

Оператор DIM может использоваться при создании псевдонимов уже существующих переменных или констант:

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

Объем оперативной памяти необходимый при создании переменных.

Каждому типу переменной, для её размещения, требуется различный объем оперативной памяти. Ниже приведен список, в котором указаны требуемые объемы оперативной памяти для размещения различных типов переменных.

Каждый тип переменной может иметь различные максимальные и минимальные значения.

Переменные типа Float могут теоретически принимать значения в пределах от -1e37 до +1e38, что делает их наиболее точными из всех типов переменных. Однако использование этого типа переменных приводит к затратам времени на производство вычислений и использованию очень большого места в пространстве памяти микроконтроллера. Поэтому следует использовать такой тип переменной тогда, когда это действительно необходимо.

Переменные типа DWord могут изменяться в пределах от -2147483647 до +2147483647. Но и за использование этого типа переменной придется заплатить дополнительным временем на производство вычислений. Кроме этого им тоже требуется довольно значительное место в памяти микроконтроллера. Поэтому используйте этот тип переменной экономно и только тогда, когда это необходимо.

Переменные типа Word могут принимать значения в пределах от 0 до 65535. Этого диапазона обычно достаточно для большинства приложений. Такие переменные тоже используют большой объем памяти, но все-таки не столько, сколько переменные типа DWord или Float.

Переменные типа Byte могут изменяться в пределах от 0 до 255, поэтому они являются рабочими лошадками для большинства программ. Место, занимаемое в ОЗУ переменными типа Byte имеет совсем небольшие размеры по сравнению с переменными типа Word, или DWord. Поэтому этот тип переменных предпочтителен, особенно, если требуется высокая скорость выполнения программы, или более эффективное выполнение операций.

Переменные типа Bit могут принимать только два значения 0 или 1. Когда объявляются битовые переменные, то их создается одновременно 8 штук, независимо от того, объявили ли Вы одну битовую переменную, две или сразу 8. Поэтому, объявляя единственную битовую переменную в пространстве памяти, помните, что все равно она будет занимать 1 байт (8 бит).

Для переменных используются следующие модификаторы:

Модификаторы BYTE2 и BYTE3 могут использоваться только вместе с 32-разрядными переменными типа DWord.

Модификаторы HighByte и BYTE1 выполняют одинаковую роль. Когда такие модификаторы используются с переменными типа Word, они обращаются к старшему байту этой переменной:

Теперь основная программа обращаясь к переменной WRD_HI работает с ней как с переменной типа Byte. Но фактически программа работает со старшим байтом переменной WRD.

То же самое можно сказать и о модификаторах LowByte и BYTE0. Эти модификаторы обращаются к младшему байту переменной WORD:

Теперь к переменной WRD_LO основная программа обращаются как к переменной типа Byte, любая ссылка на эту переменную фактически работает с младшим байтом переменной WRD.

Модификатор BYTE2 извлекает 3-й байт из 32-разрядной переменной типа DWord. Аналогично BYTE3 извлекает старший байт 32-разрядной переменной.

В пространстве оперативной памяти микроконтроллера переменные размещаются в том порядке, в котором они расположены в программе. Например:

В оперативной памяти вначале будет размещаться VAR1, а затем VAR2:

Это означает, что в PIC-микроконтроллерах с количеством банков памяти больше чем один, первые n переменных всегда будут находиться в BANK0 (значение n зависит от используемого PIC-микроконтроллера).

Место нахождения переменной в пределах одного банка обычно не имеет значения, если используется программа на Basic, однако, если в ней осуществляется переход к подпрограмме ассемблера, необходимо всегда следить за тем чтобы переменные располагались в одном банке.

Если используются переменные типа Word или DWord и они пересекают границу банка, то предупреждающее сообщение будет отображено в окне ошибки. Обычно такая ситуация возникает редко, однако, когда происходит такая ошибка, необходимо сделать так, чтобы переменные типа Word, или переменные типа DWord полностью находились в одном из банков. Эту ошибку достаточно легко устранить, если поместить так называемую "куклу" (переменную размером в Byte) перед переменными Word или DWord из-за которых возникли сообщения об ошибке.

Переменные типа DWord имеют младший байт и старший байт. К старшим байтам этих переменных можно обратиться, просто добавляя символ H в конце имени переменной. Например:

Произведет код ассемблера

Для того чтобы обратиться к старшему байту переменной WRD, используйте следующую конструкцию

Это особенно полезно, когда используются подпрограммы на ассемблере, типа:

Переменные типа DWord имеют младший, средний 1-й (mid1), средний 2-ой (mid2) и старший байты. К старшему байту можно обратиться, добавив три символа "Н" к имени переменной. Например:

Произведет код ассемблера:

Для того чтобы обратиться к старшему байту переменной WRD, используйте конструкцию:

или

Для того чтобы обратится к младшему или средним байтам, добавляйте или удаляйте соответствующее количество символов "H" после имени переменной.

См. также: ALIASES, DECLARING ARRAYS, ARRAYS, CONSTANTS, Floating Point Math Symbols, SYMBOLS, Создание и использование STRINGS.