рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

Команда BRIE

Команда BRIE - раздел Высокие технологии, Описание и характерные особенности микроконтроллеров ATmega8535 Синтаксис: Brie N Где -64 < N < 63 &nbs...

Синтаксис: BRIE n

где -64 < n < 63

 

Команда относительного перехода через n+1 команду, в случае, если установлен (равен единице) флаг глобального прерывания, то есть прерывание разрешено. Переходить можно не более чем на 63 команды вперёд или на 64 команды назад, относительно текущей позиции курсора.

 

Команда BRID

Синтаксис: BRID n

где -64 < n < 63

 

Команда относительного перехода через n+1 команду, в случае, если сброшен (равен нулю) флаг глобального прерывания, то есть прерывание запрещено. Переходить можно не более чем на 63 команды вперёд или на 64 команды назад, относительно текущей позиции курсора.

 

  1. Создание программ на языке Ассемблера

Исходный файл, написанный на языке ассемблера, содержит мнемоники, директивы и метки.

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

Строкой программы может быть директива, команда, комментарий. Допускается пустая строка в программе.

Комментарий имеет следующую форму:

; [Текст]

 

Любой текст после символа “ ; ” игнорируется ассемблером и имеет значение только для пользователя.

Операнды можно задавать в различных форматах:

- десятичный (по умолчанию): 10, 255

- шестнадцатеричный (два способа): 0´0а, $0а

- двоичный: 0b00001010, 0b11111111

- восьмеричный (впереди ноль): 010, 077

 

Директивы:

Директивой называются управляющими указаниями для программы ассемблера. Она не транслируется в код, как это делает команда. Они инициализируют участки памяти, определяют константы в памяти, устанавливают счетчик команд на определенный адрес и т.д.

Все директивы ассемблера приведены в табл. 6.

Таблица 6. Директивы ассемблера

Директива Описание
BYTE Зарезервировать байт под переменную
CSEG Сегмент кодов
DB Задать постоянным(и) байт(ы) в памяти
DEF Задать символическое имя регистру
DEVICE Задать для какого типа микроконтроллера компилировать
DSEG Сегмент данных
DW Задать постоянное(ые) слово(а) в памяти
EQU Установите символ равный выражению
ESEG Сегмент EEPROM
EXIT Выход из файла
INCLUDE Включить исходный код из другого файла
LIST Включить генерацию .lst - файла
NOLIST Выключить генерацию .lst - файла
ORG Начальный адрес программы
SET Установите символ равный выражению

Синтаксис всех директив следующий:

.[директива]

То есть перед директивой должна стоять точка. Иначе ассемблер воспринимает это как метку.

1. Директива CSEG (Code segment) указывает на начало сегмента кодов. Ассемблируемый файл может иметь несколько кодовых сегментов, которые будут объединены в один при ассемблировании.

Синтаксис:

.CSEG

 

Пример:

.DSEG ; Начало сегмента данных
vartab: .BYTE 4 ; Резервируется 4 байта в СОЗУ

.CSEG ; Начало сегмента кодов
const: .DW 2 ; Записать 0x0002 в программной памяти
mov r1,r0 ; Что-то делать

 

2. Директива DSEG (Data Segment) указывает на начало сегмента данных. Ассемблируемый файл может содержать несколько сегментов данных, которые потом будут собраны в один при ассемблировании. Обычно сегмент данных состоит лишь из директив BYTE и меток.

 

Синтаксис:

.DSEG

 

Пример:

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

var1: .BYTE 1 ;Резервировать 1 байт под переменную table: .BYTE tab_size ; Резервировать tab_size байтов.

.CSEG

ldi r30,low(var1)

ldi r31,high(var1)

ld r1,Z

 

3. Директива ESEG (EEPROM Segment) указывает на начало сегмента EEPROM памяти. Ассемблируемый файл может содержать несколько EEPROM сегментов, которые будут собраны в один сегмент при ассемблировании. Обычно сегмент EEPROM состоит из DB и DW директив (и меток). Сегмент EEPROM памяти имеет свой собственный счетчик. Директива ORG может использоваться для размещения переменных в нужной области EEPROM.

 

Синтаксис:

.ESEG

 

Пример:

.DSEG ;Начало сегмента данных
var1:.BYTE 1 ; Резервировать 1 байт под переменную

table: .BYTE tab_size ; Зарезервировать tab_size байт.

.ESEG

eevar1: .DW 0xffff ; Записать 1 слово в EEPROM

 

4. Директива ORG присваивает значения локальным счетчикам. Используется только совместно с директивами .CSEG, .DSEG, .ESEG.

 

Синтаксис:

.ORG адрес

 

Пример:

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

.ORG 0x37 ; Установить адрес СОЗУ на 37h

variable: .BYTE 1 ;Зарезервировать байт СОЗУ по адресу 37h

.CSEG

.ORG 0x10 ;Установить счетчик команд на адрес 10h

mov r0,r1 ; Чего-нибудь делать

 

5. Директива DB резервирует ресурсы памяти в программной памяти или в EEPROM. Директиве должна предшествовать метка. DB задает список выражений, и должна содержать по крайней мере одно выражение. Размещать директиву следует в сегменте кодов или в EEPROM сегменте.

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

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

Синтаксис:

LABEL: .DB список выражений

 

Пример:

.CSEG

consts: .DB 0, 255, 0b01010101, -128, 0xaa

.ESEG

const2: .DB 1,2,3

 

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

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

Синтаксис:

LABEL: .DW список выражений

 

Пример:

.CSEG

varlist: .DW 0, 0xffff, 0b1001110001010101, -32768, 65535

.ESEG

eevarlst: .DW 0,0xffff,10

 

7. Директива DEF позволяет присвоить символическое имя регистру. Регистр может иметь несколько символических имен.

 

Синтаксис:

.DEF Имя=Регистр

 

Пример:

.DEF temp=R16

.DEF ior=R0

.CSEG

ldi temp,0xf0 ; Загрузить 0xf0 в регистр temp

in ior,0x3f ; Прочитать SREG в регистр ior

eor temp,

 

8. Директива EQU присваивает значение метке. Эта метка может быть использована в других выражениях. Значение этой метки нельзя изменить или переопределить.

 

Синтаксис:

.EQU метка=выражение

 

Пример:

.EQU io_offset = 0x23

.EQU porta = io_offset + 2

.CSEG ; Начало сегмента кодов

clr r2 ; Очистить регистр r2

out porta,r2 ; Записать в порт А

 

9. Директива INCLUDE говорит Ассемблеру начать читать из другого файла. Ассемблер будет ассемблировать этот файл до конца файла или до директивы EXIT. Включаемый файл может сам включать директивы INCLUDE.

 

Синтаксис:

.INCLUDE "имя файла"

 

Пример:

.EQU sreg = 0x3f ; Регистр статуса

.EQU sphigh = 0x3e ; Старший байт указателя стека.

.EQU splow = 0x3d ; Младший байт указателя стека.

.INCLUDE iodefs.asm ; Включить файл «iodefs.asm»

in r0,sreg ; Прочитать регистр статуса

 

10. Директива EXIT позволяет ассемблеру остановить ассемблирование текущего файла. Обычно ассемблер работает до конца файла. Если он встретит директиву EXIT, то продолжит ассемблировать со строки, следующей за директивой INCLUDE.

Синтаксис:

.EXIT

 

Пример:

.EXIT ; выйти из этого файла

 

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

Синтаксис:

.DEVICE AT90S1200 | AT90S2313 | AT90S2323 | AT90S2333 | AT90S2343 | AT90S4414 | AT90S4433 | AT90S4434 | AT90S8515 | AT90S8534 | AT90S8535 | ATtiny11 | ATtiny12 | ATtiny22 | ATmega603 | ATmega103 | Atmega8535

Пример:

.DEVICE ATmega8535 ;использовать ATmega8535

.CSEG

.ORG 0000

jmp label1 ;При ассемблировании появиться сообщение, что

;ATmega8535 не поддерживает команду jmp

 

  1. Порядок выполнения лабораторных работ

Средой для изучения системы команд микроконтроллера Atmega8535 была выбрана AVR Studio - интегрированное отладочное средство для микроконтроллеров фирмы Atmel семейства AVR, включающее в себя компилятор с языка ассемблер. AVR Studio позволяет пользователю полностью контролировать выполнение программ с использованием симулятора, который поддерживает все типы микроконтроллеров AVR.

 

Для создания программы:

 

1. Запустите AVR Studio, выбрав пункт меню ПускAtmel Avr ToolsAVR Studio. При запуске появляется окно, предлагающее ввести новый проект или открыть существующий (см. рисунок 8).

Рисунок 8 Окно создания/открытия проекта

2. Нажмите на кнопку New Project. В появившемся окне (см. рисунок 9) необходимо указать:

v тип проекта Atmel AVR Assembler,

v название программы в строке «Project Name», например «Lab_№1»,

v название файла инициализации, для этого необходимо установить галочку и ввести имя файла инициализации в строке Initial file,

v создать директорию, где будет сохранен ваш проект, для этого установить галочку .

v путь для расположения вашего проекта, для чего необходимо нажать на кнопку в строке Location и в появившемся окне выбрать необходимую директорию.

 

Рисунок 9 Создание имени проекта

3. Нажмите на кнопку и в появившемся окне укажите:

v отладочную платформу – Debug platform: AVR Simulator,

v устройство – Device: ATmega8535.

4. Нажмите кнопку , после чего будет создан проект и файл инициализации.

После этого появится окно отладки программы (рисунок 10), содержащего три рабочих области:

¾ окно «I/O View» для просмотра регистров ввода/вывода;

¾ окно набора программы на ассемблере;

¾ окно сообщений «Message», комментирующих выполняемые действия.

Рассмотрим более подробно окно регистров ввода-вывода.

Рисунок 10 Окно отладки программы

Окно регистров ввода/вывода

Окно регистров содержит дерево всех устройств. Напротив каждого устройства стоит знак «+». Для того что бы увидеть все его регистры, необходимо раскрыть устройство, нажимая на напротив устройства. Так, например, регистр ввода/вывода порта А содержит три регистра: регистр данных PORTA, регистр направления DDRA и выводы порта PINA (рисунок 11). Справа от обозначения порта выведено его текущее состояние в виде шестнадцатеричного числа и битовое изображение. Мышкой можно задавать значения битов "0" или "1". Этим эмулируется воздействие внешних сигналов.

Рисунок 11 Окно регистров ввода/вывода

 

– Конец работы –

Эта тема принадлежит разделу:

Описание и характерные особенности микроконтроллеров ATmega8535

Любые устройства в том числе и устройства связи радиоавтоматики или аудиовизуальной аппаратуры требуют присутствия в своем составе устройства... Одним распростран нными в настоящее время являются микроконтроллеры фирмы... Описание и характерные особенности микроконтроллеров ATmega...

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Команда BRIE

Что будем делать с полученным материалом:

Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Все темы данного раздела:

Система команд микроконтроллера
Система команд микроконтроллера ATmega8535 весьма развита и насчитывает 130 различных инструкций. Большинство команд занимает только 1 ячейку памяти (16 бит) и выполняется за 1 такт [4].

Команды пересылки данных
Команда MOV Синтаксис: MOV Rd, Rr 0 < d < 31, 0 < r < 31.   Команда копирует содержимое регистра Rr в р

Арифметические команды
Сложение без переноса ADD (ADD - Add without Carry) Синтаксис: ADD Rd, Rr 0 < d < 31, 0 < r < 31. &

Команды умножения
Команда MUL   Синтаксис: MUL Rd, Rr 0 < d < 31,0 < r < 31   Команда перемножает две 8-раз

Команды сравнения
Команда TST Синтаксис: TSR Rd где 0 < d < 31   Команда осуществляет проверку на ноль или минус. При её выполнении пр

Логические команды
Команда AND Синтаксис: AND Rd, Rr где 0 < d < 31, 0 < r < 31   Команда межрегистрового логического «И».

Команда ANDI
Синтаксис: ANDI Rd, K где 0 < d < 31, 0 < K < 255   Команда осуществляет операцию логического «И» (см. таблицу 1) для содержимого ре

Команды сдвигов и операций с битами
Команда CLR (Clear Register) Синтаксис: CLR Rd где 16 < d < 31   Команда установки значения логического «нет» (нуля)

Команды безусловного перехода
  Команда RJMP Синтаксис: RJMP n где -2048 < n < 2048 (-2K < n < 2K)   Кома

Команды обращения к процедурам
  Команда RCALL Синтаксис: RCALL n где -2048 < n < 2048 (-2K < n < 2K)   Ко

Команды условного перехода
  Команда CPSE Синтаксис: CPSE Rd, Rr где 0 < d < 31, 0 < r < 31   Команда межрегистровог

Окно просмотра содержимого памяти
Для просмотра содержимого оперативной памяти необходимо в меню «View» выбрать пункт «Memory» (рисунок 12).

Запуск эмулятора
Программа "AVR Studio" позволяет запустить программу в реальном времени и в пошаговом режиме. В меню отладки «Debug» находятся все варианты запуска программы, например:

Постановка задачи
  1. Занести число из столбца «Число 1» таблицы 7 и строки, соответствующей заданному варианту, в регистр R24; 2. Занести число из столбца «Число 2» таблицы 7 и строки

Постановка задачи
Занести числа в память: a = ; b =

Постановка задачи
Занести числа в память: a = N+100; b = ; c = N+60;

Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • Популярное
  • Облако тегов
  • Здесь
  • Временно
  • Пусто
Теги