Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции.doc
Скачиваний:
288
Добавлен:
20.06.2014
Размер:
1.06 Mб
Скачать
          1. Структура ассемблерного кодаAvr

Общая форма строки исходного кода на ассемблере такова:

[метка:] .директива [операнды] [;комментарий]

или

[метка:] инструкция [операнды] [;комментарий]

Информация в скобках необязательна. Однако строка может состоять из одного комментария. Метка также может быть одна в строке, но тогда она относится к нижеследующей ближайшей строке с инструкцией или директивой. Метка заканчивается двоеточием.

Директива — это указание ассемблеру. Директива предваряется точкой.

Инструкция — это команда процессора.

Пример.

;вход PINA ;это комментарий

;выход PORTC ;это тоже комментарий

.include "m8535def.inc" ;это директива включения файла

.equ mask = 0x0F ;директива задания константы

.cseg ;директива объявления сегмента кода

.org 0 ;директива указания начального адреса

start: ldi r16, 0xFF ;команда загрузки регистра r16 значением FF

out DDRC, r16 ;вывод r16 в регистр направления C

ldi r16, 0x00 ;команда загрузки регистра r16 значением 00

out DDRA, r16 ;вывод r16 в регистр направления A

main: in r16, PINA ;ввод в r16 данных через порт A

andi r16, mask ;"И" r16 с непосредственным операндом

out PORTC, r16 ;вывод r16 через порт C

rjmp main ;переход к началу цикла

Компилятор позволяет использовать в программе выражения, которые могут состоять из операндов, операторов и функций.

          1. Группы команд микроконтроллеров avr

Система команд микроконтроллеров AVR включает следующие группы:

  1. Арифметические и логические команды: сложение и вычитание с переносом и без переноса, все логические операции, изменение знака, установка и сброс регистра или отдельных битов, инкремент и декремент, проверка на ноль или отрицательность, несколько видов умножения.

  2. Команды ветвления: абсолютный, относительный и косвенный переходы и вызовы подпрограммы, возвраты из подпрограммы и прерывания, относительные условные переходы по 16 условиям (8 флагов умножить на два значения), пропуски команд по условию установки или сброса определенного бита в порту или регистре, сравнения двух регистров с переносом и без него или регистра и константы, а также сравнения двух регистров и пропуска команды в случае их равенства.

  3. Команды передачи данных: перемещение, непосредственная, прямая и косвенная загрузка, прямое и косвенное размещение, косвенная загрузка и размещение с пост-инкрементом или пре-декрементом, косвенная загрузка и размещение со смещением, загрузка и размещение в программной памяти, возможно с пост-инкрементом, ввод и вывод, помещение в стек и извлечение из стека.

  4. Команды битовых операций: логические и циклические через перенос сдвиги влево и вправо, арифметический сдвиг вправо, перестановка тетрад, установка и сброс флагов и битов в порту, сохранение и загрузка битов в регистре из флага T.

  5. Команды управления микроконтроллером: отсутствие операции, переход в спящий режим, сброс сторожевого таймера.

        1. Директивы ассемблераAvr

          1. Список директив ассемблераAvr

Директивы используются для указания положения программы в программной памяти, определения макросов, инициализации памяти и т. д.:

  • BYTE — резервирование байтов в ОЗУ;

  • CSEG — объявление программного сегмента;

  • DB — определение байтов во Flash-памяти или EEPROM;

  • DEF — назначение регистру символического имени;

  • DEVICE — определение устройства, для которого компилируется программа;

  • DSEG — объявление сегмента данных;

  • DW — определение слова во Flash-памяти или EEPROM;

  • ENDM, ENDMACRO — конец макроса;

  • EQU — определение константного выражения;

  • ESEG — объявление сегмента EEPROM;

  • EXIT — выход из файла;

  • INCLUDE — включение файла;

  • LIST — включение генерации листинга;

  • LISTMAC — разворачивание макросов в листинге;

  • MACRO — начало макроса;

  • NOLIST — выключение генерации листинга;

  • ORG — задание начального адреса сегмента;

  • SET — установка переменного символического эквивалента выражения.