- •Аппаратные и программные средства лабораторного стенда на основе микроконтроллера aTmega8535
- •1. Цель работы
- •2. Описание лабораторнОго стенда
- •2.1. Микроконтроллер aTmega8535 семейства avr
- •2.2. Система команд микроконтроллера
- •2.3. Способы адресации данных микроконтроллера
- •2.4. Ассемблер микроконтроллеров avr
- •2.5. Программа avr Studio 4
- •2.6. Компиляция и отладка программы
- •2.7. Модуль «Микроконтроллер» лабораторного стенда
- •2.8. Включение лабораторного стенда
- •3. Подготовка к лабораторной работе
- •4. Рабочее задание
- •5. Отчет по лабораторной работе
- •6. Рекомендации по подготовке и выполнению лабораторной работы
2.2. Система команд микроконтроллера
Для программирования микроконтроллера ATmega8535 используется 132 команды. Все команды можно разбить на четыре группы:
арифметические и логические команды;
команды сдвигов и операций с битами;
команды пересылки данных;
команды передачи управления.
В Приложении 1 приведено описание команд микроконтроллера ATmega8535. При описании команд использованы следующие обозначения:
Rd, Rr – регистры общего назначения с номерами d и r;
d, r – номера регистров в диапазоне 031 или 1631;
Rdh: Rdl – регистровые пары;
R – константа;
P, b – разряд b (0, …, 7) порта P;
Rr(b) – разряд b (0, …, 7) регистра Rr;
(X), (Y), (Z) – содержание ячеек, адресуемых регистровыми парами X, Y, Z соответственно;
n – номер бита;
s – номер разряда в регистре состояния SREG;
PC – содержимое программного счетчика;
k – приращение в счетчике команд;
q – шестиразрядное смещение;
STACK – указатель стека;
C, Z, N, V, S, H, T, I – биты регистра состояния (SREG).
2.3. Способы адресации данных микроконтроллера
Микроконтроллеры AVR применяют разнообразные способы адресации данных. При том или ином способе адресации можно осуществить доступ к любой области памяти данных (регистрам общего назначения, регистрам ввода/вывода, памяти SRAM), а также Flash-памяти программ и энергонезависимой памяти данных EEPROM. При этом часто к одному и тому же объекту можно обратиться разными способами, используя для этого соответствующий вид адресации.
Прямая регистровая адресация с одним регистром Rd. При этом способе адресации данные находятся в регистре d (Rd), адрес которого содержится непосредственно в команде. Примером команд, использующих этот метод адресации, являются команды для работы со стеком (PUSH, POP), обмена тетрадами в регистре (SWAP), ряд команд арифметических и логических операций.
Прямая регистровая адресация с двумя регистрами Rd и Rr. Данный способ адресации применяется в командах, которые используют два регистра общего назначения: d (Rd) и r (Rr). Этот вид адресации используют команды пересылки данных из регистра в регистр и большинство команд арифметических операций, ряд команд логических операций. При этих операциях результат операции сохраняется в регистре d (Rd).
Прямая адресация регистра ввода/вывода. Данный вид адресации используют для выполнения обмена между регистром ввода/вывода, расположенным в адресном пространстве ввода/вывода, и одним из регистров общего назначения по командам IN и OUT.
Прямая адресация памяти данных. Данный способ адресации применяется при обращении к любой ячейке адресного пространства SRAM. Имеются всего две команды: LDS и STS, каждая длиной в два слова (32 разряда). Первое слово содержит код операции и адрес регистра общего назначения, второе - 16-разрядный адрес ячейки, к которой направлено обращение.
Косвенная адресация памяти данных. При косвенной адресации обращение направлено к ячейке памяти, адрес которой находится в 16-разрядном индексном регистре X, Y или Z. В роли этих регистров выступают пары регистров: R26, R27 (регистр X), R28, R29 (регистр Y) и R30, R31 (регистр Z).
Косвенная адресация памяти данных со смещением. При этом способе адрес ячейки памяти определяется путем суммирования содержимого индексного регистра Y или Z с 6-разрядным смещением, задаваемым в команде. Этот способ адресации используют команды LDD (пересылка байта из ячейки памяти SRAM в регистр Rd) и STD (пересылка байта из регистра Rr в ячейку SRAM).
Косвенная адресация памяти данных с преддекрементом. При этом способе адресации содержимое индексного регистра X, Y или Z сначала уменьшается на 1, а затем производится обращение к памяти по полученному адресу. Этот способ адресации используют команды LD (пересылка байта данных из памяти в регистр Rd) и ST (пересылка байта данных из регистра Rr в память), всего шесть команд - по две для каждого регистра.
Косвенная адресация памяти данных с постинкрементом. При этом способе адресации содержимое индексного регистра X, Y или Z сначала используется в качестве адреса обращения к памяти данных, а затем увеличивается на 1. Этот способ адресации используют команды LD (пересылка байта данных из памяти в регистр Rd) и ST (пересылка байта данных из регистра Rr в память), всего шесть команд - по две для каждого регистра.
Косвенная адресация памяти программ. Эти команды позволяют обратиться к ячейкам памяти программ для считывания констант и для записи данных во Flash-память программ, используя механизм косвенной адресации через регистр Z. При этом старшие 15 разрядов регистра определяют адрес слова, а младший нулевой разряд - младший или старший байт слова. Если младший разряд адреса равен 0, выбирается младший байт, в противном случае выбирается старший байт. Данный вид адресации используют команды считывания из ячейки памяти в регистр R0 (команда LPM) и записи в память двух байт из регистров R1:R0 (команда SPM).
Относительная адресация памяти программ. При этом способе адрес вычисляют путем сложения содержимого программного счетчика PC и константы k, задаваемой в команде. Относительную адресацию используют команды относительного перехода (RJMP) и относительного вызова подпрограммы (RCALL), многочисленная группа команд условных переходов.
Непосредственная адресация. Данный вид адресации подразумевает указание одного из операндов (константы К) непосредственно в команде. Непосредственная адресация используется командой пересылки константы в регистр LDI, а также некоторыми командами арифметических и логических операций.
Битовая адресация. Этот вид адресации позволяет указать один из восьми битов любого из 32 регистров общего назначения или первой половины регистров ввода/вывода с номерами 0-31, а также регистра SREG. Для этого нужно указать имя регистра общего назначения Ri (i = 0...31) либо регистра ввода/вывода Pi (i = 0,...,31), либо имя SREG и номер бита b (b = 0,...,7). Командами SBI и CBI осуществляется установка в 1 и сброс в 0 указанного бита регистра ввода/вывода, командами BLD, BST - обмен значениями бита Т из регистра SREG и адресованного бита из регистра общего назначения. Помимо этого есть группа команд битовых операций, обеспечивающая установку и сброс битов регистра состояния SREG. При записи мнемоники команд допускается использование символических (штатных) имен регистров ввода/вывода и имен битов. Существует группа команд условного перехода, где в качестве условия используется либо значение бита в регистре общего назначения (команды SBRC, SBRS), либо значение бита в регистре ввода/вывода (команды SBIC, SBIS).
