Главная  Микроконтроллеры 

[0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [ 29 ] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] [64] [65] [66] [67] [68] [69] [70] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] [81] [82] [83] [84] [85] [86] [87] [88] [89] [90] [91] [92] [93]

да или EEPROM. Параметрами директивы DB является список выражений.

Список выражений представляет собой одно или несколько выражений, разделенных запятыми. Каждое выражение может быть равно числу от -128 до 255. Если выражение представляет собой отрицательное число, оно будет помещено в намять программ или EEPROM в дополнительном коде.

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

Синтаксис:

Метка:.DB список выражений Пример:

-CSEG

const; DB 0. 255. ObOIOIIlOO, -128, Охав .ESEG

eeconst:.DB Oxff

.DEF - назначить регистру символьное имя.

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

Синтаксис:

.DEF символьное имя = регистр Пример:

.DEF tenp=r16 .DEF jor=r0

.CSEG

Idi temp, OxfO : Загрузить в регистр temp число OxfO

in lor, 0x3f ; Прочитать содержимое SREG и записать в регистр ior

вот tenp.jor ; Исключающее ИЛИ между регистрами temp и Юг



If .DEVICE - определяет тип целевого микроконтроллера.

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

j. Синтаксис:

j- .DEVICE AT9DS1200 AT90S2313 AT9DS2323 AT90S2343 AT90S4414 f I AT90S8515 I ATMEGA103

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

Пример:

.DEVICE AT90S1200 ; Используется микроконтроллер AT90S1200 .CSEG

push гЗО ; Эта запись вызовет сообщение о том, что

, ; выбранное устройство не поддерживает эту

; инструкцию

.DSEG - сегмент данных.

Директива DSEG определяет начало сегмента данных. В исходном тексте программы на ассемблере может быть несколько сегментов данных. В процессе трансляции все они будут объединены в один. Обычно сегменг данных содержит только директивы BYTE с метками. Сегмент данных имеет свой счетчик байтов. Директива .ORG может быть использована для расположения переменных в конкретных местах SRAM. Директива DSEG не имеет параметров.

Синтаксис:

. nSEG



.MACRO SUBI16 ; Начало определения макрокоманды

subi r16,low(@0) : Вычитаем младший байт

Пример:

.DSEG ; Начало сегмента данных

var1:.BYTE 1 ; Резервируем 1 байт для переменной van

table:.BYTE tab size ; Резервируем tab size байт

.CSEG

Idl гЗО,low(varl) ; Загружаем младший байт Z-регисгра

Idi r31.high(var1) : Загружаем старший байт Z-регистра

Id r1,Z ; Загрузить содержимое переменной varl в г1

.DW - определение слов-констант в памяти профамм или EEPROM.

Директива DW резервирует место в памяти программ или EEPROM. Для того чтобы иметь возможность обращаться к зарезервированному пространству, перед этой директивой следует ставить метку. Директива DW должна быть расположена в сегменте кода или EEPROM. Параметрами директивы DW является список выражений.

Список выражений представляет собой одно или несколько выражений, разделенных запятыми. Каждое выражение может быть равно числу от -32768 до 65535. Если выражение представляет собой отрицательное число, оно будет помещено в память программ или EEPROM в дополнительном коде.

Синтаксис:

Метка:.DW список выражений Пример:

.CSEG

varlist:.DW 0. 56255, Ob0101110011101011. -12128. Oxaaff .ESEG

eevar: .DW Oxff17

.ENDMACRO - конец описания макрокоманды.

Директива ENDMACRO определяет конец описания макрокоманды. Директива не имеет параметров. Для получения информации о макрокомандах смотри директиву MACRO.

Синтаксис:

.ENDMACRD

Пример:



[0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [ 29 ] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] [64] [65] [66] [67] [68] [69] [70] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] [81] [82] [83] [84] [85] [86] [87] [88] [89] [90] [91] [92] [93]

0.0009