Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
История отрасли методические указания.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
2 Мб
Скачать
☆

Секция объявления констант

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

Заголовок секции: Constants

В этой секции предусмотрены следующие поля:

Name – объявляемое имя.

Value – алгебраическое выражение, определяющее величину;

Для выборки байта из константы к ее имени следует дописать «.#», где # – номер байта, начиная с 0. Например, оператор:

«InputCode.1 -> r16»

Загрузит в r16 константу $DC.

По умолчанию, в среде объявлены следующие системные константы:

«CPU_Clock_Frequency» – частота работы ядра в герцах;

«SRAM_Size» – размер SRAM в байтах;

«SRAM_Org» – начало области SRAM;

«EEPROM_Size» – размер EEPROM в байтах.

«Flash_Size» – размер Flash памяти программы в 16-разрядных словах.

Секция объявления имен рабочих регистров

Заголовок секции: Working registers:

В этой секции предусмотрены следующие поля:

Name – объявляемое имя.

Index – (необязательный параметр) константа, определяющая индекс регистра. По умолчанию принимается индекс, следующий за предыдущим, а в начале компиляции - равным нулю.

Format – (необязательный параметр) формат объявляемого регистра. По умолчанию принимается однобайтный формат. При объявлении многобайтного регистра автоматически назначаются имена составляющих их однобайтных регистров. При объявлении двухбайтного регистра к именам добавляются буквы «L» и «H», а для трех- и четырехбайтных – символы «0», «1» и т.д. в соответствии с порядковым номером. Например, при объявлении двухбайтного (формат «Word») регистра с именем «Counter», автоматически объявляются составляющие его два однобайтных регистра с именами «CounterL» и «CounterH». Многобайтные форматы рабочих регистров используются только в макрооператорах.

При объявлении допускается одному и тому же регистру давать несколько имен.

По умолчанию в среде действуют стандартные имена однобайтных регистров: «r0..r31» или «R0..R31», а также: «WL»=«r24», «WH»=«r25», «XL»=«r26», «XH»=«r27», «YL»=«r28», «YH»=«r29», «ZL»=«r30», «ZH»=«r31» и двухбайтных («Int16» или «Word»): «W»=(«r24,r25»), «X»=(«r26,r27»), «Y»=(«r28,r29») и «Z»=(«r30,r31»).

Секция объявления имен регистров ввода-вывода

Заголовок секции: I\O Registers:

В этой секции предусмотрены следующие поля:

Name – объявляемое имя.

I/O Register – стандартное или ранее объявленное имя регистра ввода-вывода.

При объявлении допускается одному и тому же регистру давать несколько имен.

По умолчанию в среде действуют стандартные имена «p0…p63», а так же определенные в оригинальном описании микроконтроллера, такие как: «SPL», «SPH», «TCNT0», «EEDR» и т.д. Кроме того, в макрооператорах возможно использование имен двойных регистров, например: «ADC», «TCNT1».

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

Объявление имен битов рабочих и I/O регистров

Заголовок секции: Bits

В этой секции предусмотрены следующие поля:

Name – объявляемое имя;

Bit – уже существующее имя или запись, определяющая бит.

По умолчанию в среде действуют типовые имена битов регистров ввода-вывода определенные в оригинальном описании микроконтроллера, такие как: «DDA7», «ACIC», «ADEN», «ICNC1» и т.д.

Пример использования имен:

Секция объявления переменных SRAM

Заголовок секции: SRAM:

В этой секции предусмотрены следующие поля:

Name – объявляемое имя переменной (ячейки памяти);

Address – (необязательный параметр) константа, определяющая конкретное значение адреса. По умолчанию – следующий за предыдущим либо $60 в начале компиляции;

Format – (необязательный параметр) формат переменной. По умолчанию принимается однобайтный формат. Многобайтные форматы используются в макро-операторах.

Count – (необязательный параметр) – число резервируемых ячеек. По умолчанию принимается равное 1.

В операторах с непосредственной адресацией SRAM «[#]->R» и «R->[#]», имя переменной может быть использовано вместо «[#]».

Имя переменной с префиксом «@» является константой, содержащей ее физический адрес SRAM.

Приведенные ниже примеры будут откомпилированы с одинаковым результатом:

[$100] -> r0 , Phase -> r0 , [@Phase] -> r0

Если переменная объявлена как массив (Count>1, например, «LDC_Page»), то ее имя будет указывать на первый байт массива. Для непосредственно адресации произвольного элемента массива, используйте смещение адреса. Например, если необходимо копировать r0 в пятый элемент массива, то следует записать:

r0->[@LCD_Page+5]

Приведенный ниже пример очищает все элементы массива LCD_Page:

// Если не равно 0 то продолжить

Секция объявления переменных EEPROM

Заголовок секции: EEPROM:

В этой секции предусмотрены следующие поля:

Name – назначаемое имя переменной;

Address – (необязательный параметр) – константа, определяющая конкретное значение адреса. По умолчанию – следующий после предыдущего либо 0 в начале секции;

Format – (необязательный параметр) – формат ячейки. По умолчанию принимается однобайтный формат. При необходимости можно задать многобайтный формат.

Count – (необязательный параметр) – число резервируемых ячеек. По умолчанию принимается равным 1.

Value – (необязательный параметр) начальные значения, представленные в виде константы или массива констант через запятую (если Count>1).

Имя переменной с префиксом «@» является константой, содержащей ее физический адрес в EEPROM.