![]() |
Главная Микроконтроллеры [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.0012 |