У вас вопросы?
У нас ответы:) SamZan.net

ТЕМА КОМАНД МИКРОКОНТРОЛЛЕРОВ VR Реализация необходимых функций микроконтроллером требует эффективног

Работа добавлена на сайт samzan.net: 2016-03-05

Поможем написать учебную работу

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

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 11.4.2025

4. СИСТЕМА КОМАНД МИКРОКОНТРОЛЛЕРОВ AVR

 

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

Инструментальный пакет АVRStudio содержит средства подготовки текстов программ на языках С и ассемблере, компиляторы для формирования загрузочных файлов, симулятор для отладки программ и драйвер программатора для внутрисистемного программирования микроконтроллеров. В связи с тем, что значительная часть функций в микроконтроллере реализуется аппаратными средствами, и ассемблер обеспечивает более рациональное программное управление этими средствами, в дальнейшем будем рассматривать программирование только на ассемблере.

Система команд микроконтроллера АТ90S8535 содержит 118 команд и предусматривает выполнение стандартных операций пересылки данных, арифметических и логических операций, команд управления. К дополнительным возможностям, реализованным в системе команд, можно отнести:

  •  выполнение двух операций одной командой (например, команда

ld r24, X+ производит пересылку байта данных из ОЗУ в регистр R24 с последующим инкрементом адреса в регистре X);

  •  операции с отдельными битами (например, команда cbr r18, 2 очищает (обращает в 0) бит 1 регистра r18);
  •  операции с данными не только в файле регистров общего назначения, но и в файле регистров ввода-вывода (например, команда sbi PORTC, РС7 устанавливает (обращает в 1) бит 7 регистра РОRТС);
  •  условные команды управления по состоянию любого бита регистра состояния SREG или других регистров (например, команда brtc label вы полняет переход к метке label , если флаг копирования Т очищен).

В дальнейшем будут использоваться стандартные мнемонические обозначения как для команд, так и для их параметров. Стандартные мнемонические обозначения (имена) регистров и отдельных битов в них содержатся в специальных файлах, например, "8535 def.inc", и включаются с помощью директив компилятора в тексты программ. Регистр состояния (флагов) микроконтроллера SREG играет важную роль в рабочих программах, биты этого регистра определяют условия для выполнения команд управления.

Регистр состояния микроконтроллера SREG

Флаги регистра SREG (начиная со старшего бита):

I - флаг глобального разрешения прерывания, разрешает (1) или запрещает

(0) все аппаратные прерывания.

Т - флаг копирования бита, может быть скопирован из любого бита (или в

любой бит) любого регистра общего назначения.

Н - флаг переноса между младшей и старшей тетрадой байта данных.

Sфлаг знака, определяется суммой по mod 2 флагов N V..

V - флаг переполнения (дополнения до двух).

N - флаг отрицательного результата (соответствует значению бита 7 результата операции).

Z- флаг нулевого результата операции.

С - флаг переноса.

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

4.1. Система команд микроконтроллеров АVR

В мнемонических обозначениях команд всегда первым указывается регистр, в который помещается результат операции: любой регистр файла регистров общего назначения, файла регистров ввода-вывода, ячейка ОЗУ. Ограничения на параметры и операнды команд приведены в примечании. В описании команд приняты следующие обозначения:

Rd- регистр, в который помещается результат операции (любой регистр общего назначения).

Rr- регистр, из которого поступает байт данных для операции (любой регистр общего назначения).

К - константа (байт данных), число в десятичном формате от 0 до 255, в ше- стнадцатеричном формате могут использоваться два варианта обозначения: 0x00 – 0FF" или $00 - $FF", в двоичном формате - следующее обозначение: 0b00000000 – 0b11111111.

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

X, Y, Z - регистры косвенной адресации (в файле регистров общего назначения регистр X - R27, R26; регистр Y - R29, R28; регистр Z - R30, R31).

Р - регистр файла регистров ввода-вывода.

b - бит от 0 до 7 в любом регистре (старший бит - 7, младший бит - 0).

РС - программный счетчик.
SТАСК - стек.

РМ - память программ (FLASH).

4.1.1 Арифметические и логические команды

Таблица 2

Продолжение таблицы 2

Продолжение таблицы 2

Арифметические и логические команды реализуют стандартный набор операций с однобайтовыми данными микроконтроллера с RISC архитектурой.

Примеры:

  •  команда add R3, R16 выполняет сложение содержимого регистров RЗ и R16, полученная сумма будет записана в RЗ, содержимое регистра R16 не изменится, результат сложения определит значения флагов HVNCZ;
  •  команда subi R21, $F0 выполняет вычитание из содержимого регистра R21 числа 240 (в шестнадцатеричном формате $F0), полученная разность будет записана в R21, результат вычитания определит значения флагов HVNCZ (в примечании указано ограничение на используемые в этой команде регистры общего назначения R16-R31);

команда and R3, R4 выполняет поразрядную логическую операцию И (конъюнкцию) содержимого регистров RЗ и R4, результат будет записан в RЗ, содержимое R4 не изменится, по результатам операции формируются только флаги VNZ;

• команда asr R0 выполняет деление на 2 числа со знаком в регистре R0, т.е. выполнится сдвиг вправо на один разряд всех битов регистра R0, кроме старшего знакового бита 7, младший бит 0 будет перемещен во флаг С, остальные флаги VNZ определяются результатом деления. Некоторые модели микроконтроллеров серии АVR позволяют выполнять и другие операции. Например, модели теgаАVR содержат аппаратный умножитель и выполняют операции умножения.

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

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

4.1.2 Команды пересылки данных

Таблица 3

Продолжение таблицы 3

Продолжение таблицы 3

Продолжение таблицы 3

Продолжение таблицы 3

Команды пересылки данных также реализуют стандартный набор операций:

  •  пересылка байта данных между регистрами общего назначения (mov):
  •  пересылка байта данных между регистром общего назначения и регистром ввода-вывода (in, out);
  •  пересылка байта данных (с прямой или косвенной адресацией) между регистром общего назначения и ОЗУ (ld, st) или стеком (pop, push). Команда загрузки константы в регистр допустима только для регистров R16-R31. Команды пересылки данных флаги не формируют, формирование флагов по содержимому байтов данных при необходимости можно выполнить командами сравнения.

В мнемонических обозначениях команд можно использовать физические адреса регистров или, что обычно более удобно и наглядно, стандартные символьные имена, описанные в файле "8535 def.inc ". Например, команды out $08, R16 и out ACSR, R16 имеют один и тот же смысл: пересылка содержимого регистра общего назначения R16 в регистр управления АЦП.

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

Пересылка данных между регистрами общего назначения и ЕЕРRОМ данных производится через соответствующие регистры ввода-вывода специальной процедурой. Команда lpm позволяет загружать в регистр R0 константы, которые хранятся в памяти программ (FLASH). Адрес (FLASH) должен указываться в регистре Z.

Каждая ячейка FLASH хранит два байта, поэтому младший бит регистра Z (бит 0) определяет байт для пересылки в регистр R0 (0 - младший байт, 1 - старший байт). Адрес FLASH находится в регистре Z, начиная с бита 1. То есть бит 1 соответствует младшему биту адреса FLASH , что необходимо учитывать при записи адреса в регистр Z. Адрес FLASH для регистра Z можно указать выражением Z=2*(адрес FLASH), а бит 0 регистра Z формировать дополнительно в зависимости от того, какой байт двухбайтовой ячейки FLASH пересылается в регистр R0.

4.1.3. Команды управления

Команды управления необходимы для программной реализации алгоритмов со сложной и неоднозначной последовательностью действий. Эти команды позволяют обеспечить циклическое повторение отдельных фрагментов программ, ветвление программ с анализом выполнения определенных условий, вызов подпрограмм, в том числе и для обслуживания прерываний, возврат из подпрограмм с корректным продолжением выполнения прерванной программы. Основные действия при исполнении команд управления - изменение состояния программного счетчика (РС), которым производится адресация во флэш-памяти (РМ).

Таблица 4

Продолжение таблицы 4

Продолжение таблицы 4

Особенностью команд управления микроконтроллеров AVR является не абсолютная, а относительная адресация передачи управления (изменение текущего содержимого программного счетчика на величину указываемого в команде параметра k). Компиляторы при обработке текстов программ не требуют обязательного определения численного значения этого параметра.

При программировании на ассемблере в командах управления параметр k может быть заменен меткой. Ограничения на величину смещения k в командах rjmp k, rcall k в микроконтроллере 8535 практически не имеют никакого значения, так как размер адресного пространства памяти программ РМ составляет 4096 двухбайтовых ячеек (8 Кбайт). Если в командах условных переходов требуется смещение больше, чем указано в примечании, можно использовать для перехода промежуточную команду rjmp.

Пример:

cp R0, R21 ; сравнить содержимое регистров R0, R21

breq inter ; если равно, перейти к inter (смещение не более 63)

. . . .

inter: rjmp fin ; перейти к fin (смещение в пределах адр. простр. PM)

. . . .

fin: nop ;программа выполняется по равенству R0=R21

Команды "пропустить" (последние пять команд) выполняют условный переход со смещением только на одну команду. В комбинации с командами rjmp или rcall позволяют реализовать переход в любую часть программы аналогично приведенному выше примеру.

4.1.4. Команды преобразования битов в регистрах

Таблица 5

Продолжение таблицы 5

Команды преобразования битов позволяют определять значения отдельных битов в регистрах общего назначения (с ограничениями, указанными в примечании), в первых 32 регистрах ввода-вывода (0-31) и в регистре состояния SREG. Флаг глобального разрешения прерывания I управляет всеми аппаратными прерываниями микроконтроллера и может в любой части программы определять разрешение (команда sei) или запрет (команда cli)  прерываний. Флаг копирования бита Т обеспечивает передачу любого бита одного регистра в любой бит другого (или того же самого) регистра общего назначения без изменения остальных битов:

bst R12, 4  ;пересылка бита 4 регистра R12 во флаг T

bld R16, 0  ;пересылка флага T в бит 0 регистра R16

Команды sbr и cbr по маске K определяют биты в регистре Rd, соответст-

вующие единичным значениям битов константы K:

cbr R16, 0b10100110  ;очистка битов 7, 5, 2, 1 в регистре R16

sbr R17, $0f    ;установка 4 младших битов в регистре R17

Команды sbi и cbi позволяют задавать значения произвольных битов в регистрах ввода-вывода (0-31), например, sbi PORTC, PCO устанавливает бит

0 регистра PORTC.

4.1.5. Прочие команды

Таблица 6

Эти команды служат для управления специальными режимами микроконтроллера. Команда sleep переводит микроконтроллер в состояние покоя (sleep mode) с пониженным энергопотреблением и ограниченным функционированием его элементов, если в управляющем регистре ввода-вывода MCUCR этот режим разрешен. Команда wdr осуществляет программный сброс сторожевого таймера и используется в контрольных точках программы, когда работа сторожевого таймера разрешена.

PAGE  16




1. Актуальные вопросы экономического анализа.html
2. философское направление представители крого отвергают правомерность тезиса о существовании объективной
3. История возникновения, развития и изменения отдельных элементов формуляра документов
4. Г. директор МУК ЦРиТЕрмакова Т
5. Локальные и глобальные сети Компьютерная сеть образуется при физическом соединении двух компьютеров.
6. Названия цветов
7. Конспект лекций по дисциплине ldquo;Каналообразующие устройстваrdquo; 201053 Перечень лекций
8. .ПЕРВИЧНЫЕ ЦВЕТА
9. Мировая экономика как сфера международного бизнесаструктура субъекты связь с мб Мировая экка м
10. РЕФЕРАТ дисертації на здобуття наукового ступеня кандидата медичних наук Харків 199