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

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

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

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

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

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

от 25%

Подписываем

договор

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

Скидка 25% при заказе до 7.3.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. темастр
2. Поэтический мед К западу от Асгарда с незапамятных времен лежит Ванах
3. Древесные ресурсы малонарушенных лесных территорий Европейского Севера России
4. Устное народное поэтическое творчество как выражение общественной и бытовой жизни народа его эстетики эт
5. Типы и стили руководства
6. Реферат на тему- КРИТЕРІЇ ОЦІНКИ ЯКОСТІ ВИКЛАДАННЯ Викладачу слово дане для того щоб не приси
7. архаическое обозначение психики внутреннего мира человека понимаемого как особая независимая от тела суб
8. Рецензия на очерк ИС Тургенева Бирюк
9. Биологические ритмы как способ существования живой материи
10. реферат по дисциплине История по специальности СПО 150415 Сварочное производство базовой подгот