Главная » Просмотр файлов » Кочегаров И.И. Микроконтроллеры AVR. Лабораторный практикум (2012)

Кочегаров И.И. Микроконтроллеры AVR. Лабораторный практикум (2012) (1264221), страница 8

Файл №1264221 Кочегаров И.И. Микроконтроллеры AVR. Лабораторный практикум (2012) (Кочегаров И.И. Микроконтроллеры AVR. Лабораторный практикум (2012)) 8 страницаКочегаров И.И. Микроконтроллеры AVR. Лабораторный практикум (2012) (1264221) страница 82021-07-29СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 8)

Метка, которой присвоенозначение данной директивой, не может быть переназначена, и ее значение не может быть изменено.Синтаксис:.EQU метка = выражениеПример:.EQU io_offset = 0x23.EQU porta = io_offset + 2.CSEG; Начало сегмента данныхclr r2; Очистить регистр r2out porta,r2 ; Записать в порт AESEG – Сегмент EEPROMДиректива ESEG определяет начало сегмента EEPROM. Исходный файл может состоять из нескольких сегментов EEPROM, которые объединяются в один сегмент при компиляции. СегментEEPROM обычно состоит только из директив DB, DW и меток. Сегменты EEPROM имеют свои собственные побайтные счетчики положения. Директива ORG может быть использована для размещенияпеременных в необходимом месте EEPROM.

Директива не имеет параметров.Синтаксис:.ESEGПример:.DSEG; Начало сегмента данныхvar1: .BYTE 1; зарезервировать 1 байт для var144table: .BYTE tab_size ; зарезервировать tab_size байт..ESEGeevar1: .DW 0xffff; проинициализировать 1 слово вEEPROMEXIT – Выйти из файлаВстретив директиву EXIT компилятор прекращает компиляциюданного файла. Если директива использована во вложенном файле(см. директиву INCLUDE), то компиляция продолжается со строкиследующей после директивы INCLUDE. Если же файл не являетсявложенным, то компиляция прекращается.Синтаксис:.EXITПример:.EXIT ; Выйти из данного файлаINCLUDE – Вложить другой файлВстретив директиву INCLUDE компилятор открывает указанный в ней файл, компилирует его, пока файл не закончится или невстретится директива EXIT, после этого продолжает компиляцию начального файла со строки следующей за директивой INCLUDE.Вложенный файл может также содержать директивы INCLUDE.Синтаксис:.INCLUDE "имя_файла"Пример:; файл iodefs.asm:.EQU sreg = 0x3f ; Регистр статуса.EQU sphigh = 0x3e ; Старший байт указателя стека.EQU splow = 0x3d ; Младший байт указателя стека; файл incdemo.asm.INCLUDE iodefs.asm ; Вложить определения портовin r0,sreg ; Прочитать регистр статусаLIST – Включить генерацию листингаДиректива LIST указывает компилятору на необходимость создания листинга.

Листинг представляет из себя комбинацию ассемблерного кода, адресов и кодов операций. По умолчанию генерациялистинга включена, однако данная директива используется совмест45но с директивой NOLIST для получения листингов отдельных частейисходных файлов.Синтаксис:.LISTПример:.NOLIST; Отключить генерацию листинга.INCLUDE "macro.inc" ; Вложенные файлы не будут.INCLUDE "const.def" ; отображены в листинге.LIST; Включить генерацию листингаLISTMAC – Включить разворачивание макросов в листингеПосле директивы LISTMAC компилятор будет показывать влистинге содержимое макроса.

По умолчанию в листинге показывается только вызов макроса и передаваемые параметры.Синтаксис:.LISTMACПример:.MACRO MACX; Определение макросаadd r0,@0 ; Тело макросаeor r1,@1.ENDMACRO; Конец макроопределения.LISTMAC; Включить разворачиваниемакросовMACX r2,r1 ; Вызов макроса;(в листинге будет показанотело макроса)MACRO – Начало макросаС директивы MACRO начинается определение макроса. В качестве параметра директиве передается имя макроса. При встрече имени макроса позднее в тексте программы, компилятор заменяет этоимя на тело макроса. Макрос может иметь до 10 параметров, к которым в его теле обращаются через @0-@9. При вызове параметры перечисляются через запятые.

Определение макроса заканчивается директивой ENDMACRO.По умолчанию в листинг включается только вызов макроса,для разворачивания макроса необходимо использовать директиву LISTMAC. Макрос в листинге показывается знаком +.46Синтаксис:.MACRO макроимяПример:.MACRO SUBI16; Начало макроопределенияsubi @1,low(@0) ; Вычесть мл. байт пар-ра 0 из пар-ра 1sbci @2,high(@0) ; Вычесть ст. байт пар-ра 0 из пар-ра 2.ENDMACRO; Конец макроопределения.CSEG; Начало программного сегментаSUBI16 0x1234,r16,r17 ; Вычесть 0x1234 из r17:r16NOLIST – Выключить генерацию листингаДиректива NOLIST указывает компилятору на необходимостьпрекращения генерации листинга.

Листинг представляет из себякомбинацию ассемблерного кода, адресов и кодов операций. Поумолчанию генерация листинга включена, однако может быть отключена данной директивой. Кроме того, данная директива может бытьиспользована совместно с директивой LIST для получения листинговотдельных частей исходных файлов.Синтаксис:.NOLISTПример:.NOLIST; Отключить генерацию листинга.INCLUDE "macro.inc" ; Вложенные файлы не будут.INCLUDE "const.def" ; отображены в листинге.LIST; Включить генерацию листингаORG – Установить положение в сегментеДиректива ORG устанавливает счетчик положения, равным заданной величине, которая передается как параметр.

Для сегментаданных она устанавливает счетчик положения в SRAM (ОЗУ), длясегмента программ это программный счетчик, а для сегментаEEPROM это положение в EEPROM. Если директиве предшествуетметка (в той же строке), то метка размещается по адресу, указанномув параметре директивы. Перед началом компиляции программныйсчетчик и счетчик EEPROM равны нулю, а счетчик ОЗУ равен 32(поскольку адреса 0-31 заняты регистрами). Обратите внимание, чтодля ОЗУ и EEPROM используются побайтные счетчики, а для программного сегмента – пословный.47Синтаксис:.ORG выражениеПример:.DSEG; Начало сегмента данных.ORG 0x37; Установить адрес SRAM равным 0x37variable: .BYTE 1 ; Зарезервировать байт по адресу 0x37H.CSEG.ORG 0x10; Установить программный счетчик равным0x10mov r0,r1 ; Команда будет размещена по адресу 0x10SET – Установить переменный символический эквивалентвыраженияДиректива SET присваивает имени некоторое значение.

Это имяпозднее может быть использовано в выражениях. Причем в отличиеот директивы EQU значение имени может быть изменено другой директивой SET.Синтаксис:.SET имя = выражениеПример:.SET io_offset = 0x23.SET porta = io_offset + 2.CSEG; Начало кодового сегментаclr r2; Очистить регистр 2out porta,r2 ; Записать в порт AВыраженияКомпилятор позволяет использовать в программе выражения,которые могут состоять из операндов, знаков операций и функций.Все выражения являются 32-битными.ОперандыМогут быть использованы следующие операнды:Метки, определенные пользователем (дают значение своегоположения).Переменные, определенные директивой SET.Константы, определенные директивой EQU.Числа, заданные в формате:oДесятичном (принят по умолчанию): 10, 255oШестнадцатеричном (два варианта записи): 0x0a, $0a,0xff, $ff48Двоичном: 0b00001010, 0b11111111oВосьмеричном (начинаются с нуля): 010, 077PC – текущее значение программного счетчика (ProgrammCounter).oОперацииКомпилятор поддерживает ряд операций, которые перечисленыв таблице (чем выше положение в таблице, тем выше приоритет операции).

Выражения могут заключаться в круглые скобки, такие выражения вычисляются перед выражениями за скобками.ПриоритетСимволОписание14!Логическое отрицание14~Побитное отрицание14-Минус13*Умножение13/Деление12+Суммирование12-Вычитание11<<Сдвиг влево11>>Сдвиг вправо10<Меньше чем10<=Меньше или равно10>Больше чем10>=Больше или равно9==Равно9!=Не равно8&Побитное И7^Побитное исключающее ИЛИ6|Побитное ИЛИ5&&Логическое И4||Логическое ИЛИЛогическое отрицаниеСимвол: !Описание: Возвращает 1, если выражение равно 0, и наоборотПриоритет: 14Пример: ldi r16, !0xf0 ; В r16 загрузить 0x0049Побитное отрицаниеСимвол: ~Описание: Возвращает выражение, в котором все биты проинвертированыПриоритет: 14Пример: ldi r16, ~0xf0 ; В r16 загрузить 0x0fМинусСимвол: Описание: Возвращает арифметическое отрицание выраженияПриоритет: 14Пример: ldi r16,-2 ; Загрузить -2(0xfe) в r16УмножениеСимвол: *Описание: Возвращает результат умножения двух выраженийПриоритет: 13Пример: ldi r30, label*2ДелениеСимвол: /Описание: Возвращает целую часть результата деления левого выражения на правоеПриоритет: 13Пример: ldi r30, label/2СуммированиеСимвол: +Описание: Возвращает сумму двух выраженийПриоритет: 12Пример: ldi r30, c1+c2ВычитаниеСимвол: Описание: Возвращает результат вычитания правого выражения излевогоПриоритет: 12Пример: ldi r17, c1-c2Сдвиг влевоСимвол: <<Описание: Возвращает левое выражение, сдвинутое влево на числобит, указанное справа50Приоритет: 11Пример: ldi r17, 1<<bitmask ; В r17 загрузить 1, сдвинутую влевоbitmask разСдвиг вправоСимвол: >>Описание: Возвращает левое выражение, сдвинутое вправо на числобит, указанное справаПриоритет: 11Пример: ldi r17, c1>>c2 ; В r17 загрузить c1, сдвинутое вправо,c2 разМеньше чемСимвол: <Описание: Возвращает 1, если левое выражение меньше, чем правое(учитывается знак), и 0 в противном случаеПриоритет: 10Пример: ori r18, bitmask*(c1<c2)+1Меньше или равноСимвол: <=Описание: Возвращает 1, если левое выражение меньше или равно,чем правое (учитывается знак), и 0 в противном случаеПриоритет: 10Пример: ori r18, bitmask*(c1<=c2)+1Больше чемСимвол: >Описание: Возвращает 1, если левое выражение больше, чем правое(учитывается знак), и 0 в противном случаеПриоритет: 10Пример: ori r18, bitmask*(c1>c2)+1Больше или равноСимвол: >=Описание: Возвращает 1, если левое выражение больше или равно,чем правое (учитывается знак), и 0 в противном случаеПриоритет: 10Пример: ori r18, bitmask*(c1>=c2)+1РавноСимвол: ==Описание: Возвращает 1, если левое выражение равно правому (учитывается знак), и 0 в противном случае51Приоритет: 9Пример: andi r19, bitmask*(c1==c2)+1Не равноСимвол: !=Описание: Возвращает 1, если левое выражение не равно правому(учитывается знак), и 0 в противном случаеПриоритет: 9Пример: .SET flag = (c1!=c2) ;Установить flag, равным 1 или 0Побитное ИСимвол: &Описание: Возвращает результат побитового И выраженийПриоритет: 8Пример: ldi r18, High(c1&c2)Побитное исключающее ИЛИСимвол: ^Описание: Возвращает результат побитового исключающего ИЛИвыраженийПриоритет: 7Пример: ldi r18, Low(c1^c2)Побитное ИЛИСимвол: |Описание: Возвращает результат побитового ИЛИ выраженийПриоритет: 6Пример: ldi r18, Low(c1|c2)Логическое ИСимвол: &&Описание: Возвращает 1, если оба выражения не равны нулю, и 0в противном случаеПриоритет: 5Пример: ldi r18, Low(c1&&c2)Логическое ИЛИСимвол: ||Описание: Возвращает 1, если хотя бы одно выражение не равно нулю, и 0 в противном случаеПриоритет: 4Пример: ldi r18, Low(c1||c2)52ФункцииОпределены следующие функции: LOW(выражение) возвращает младший байт выражения HIGH(выражение) возвращает второй байт выражения BYTE2(выражение) то же что и функция HIGH BYTE3(выражение) возвращает третий байт выражения BYTE4(выражение) возвращает четвертый байт выражения LWRD(выражение) возвращает биты 015 выражения HWRD(выражение) возвращает биты 1631 выражения PAGE(выражение) возвращает биты 1621 выражения EXP2(выражение) возвращает 2 в степени (выражение) LOG2(выражение) возвращает целую часть log2(выражение)53Глава 6. Работа с пакетом AVR Studio 4 Работа в среде AVR Studio.

Характеристики

Список файлов книги

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6361
Авторов
на СтудИзбе
310
Средний доход
с одного платного файла
Обучение Подробнее