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

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

Подписываем
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Предоплата всего
Подписываем
4. СИСТЕМА КОМАНД МИКРОКОНТРОЛЛЕРОВ AVR
Реализация необходимых функций микроконтроллером требует эффективного управления его программно-аппаратными средствами. Это управление и координация работы различных средств производится рабочими программами. Подготовка рабочих программ микроконтроллеров может выполняться на персональном компьютере с помощью инструментальных средств фирмы АТМЕL, например, АVRStudio.
Инструментальный пакет АVRStudio содержит средства подготовки текстов программ на языках С и ассемблере, компиляторы для формирования загрузочных файлов, симулятор для отладки программ и драйвер программатора для внутрисистемного программирования микроконтроллеров. В связи с тем, что значительная часть функций в микроконтроллере реализуется аппаратными средствами, и ассемблер обеспечивает более рациональное программное управление этими средствами, в дальнейшем будем рассматривать программирование только на ассемблере.
Система команд микроконтроллера АТ90S8535 содержит 118 команд и предусматривает выполнение стандартных операций пересылки данных, арифметических и логических операций, команд управления. К дополнительным возможностям, реализованным в системе команд, можно отнести:
ld r24, X+ производит пересылку байта данных из ОЗУ в регистр R24 с последующим инкрементом адреса в регистре X);
В дальнейшем будут использоваться стандартные мнемонические обозначения как для команд, так и для их параметров. Стандартные мнемонические обозначения (имена) регистров и отдельных битов в них содержатся в специальных файлах, например, "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 архитектурой.
Примеры:
команда 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
Команды пересылки данных также реализуют стандартный набор операций:
В мнемонических обозначениях команд можно использовать физические адреса регистров или, что обычно более удобно и наглядно, стандартные символьные имена, описанные в файле "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