3 Команди передачі керування
Режими адресації пам'яті програм і даних при передачі керування.
При звертанні до Flash-пам'яті програм і пам'яті даних (SRAM,
реєстрового файла і пам'яті І/O) AVR Enhanced RІSC мікроконтролерами
використовуються потужні й ефективні режими адресації.
Непряма адресація даних зі зсувом зображена на рис. 2.
Рисунок 2 - Непряма адресація даних зі зсувом
Адреса операнда обчислюється підсумовуванням вмісту регістра Y чи Z з 6 бітами адреси, що містяться в слові команди.
Непряма адресація даних зображена на рис. 3.
Рисунок 3 - Непряма адресація даних
Адреса операнда міститься в регістрі або X, абоY або Z.
Непряма адресація даних із предекрементом рис. 4.
Рисунок 4 - Непряма адресація даних із предекрементом
Перед виконанням операції регістр X абоY, або Z декрементується. Декрементований вміст регістра X абоY або Z є адресою операнда. Непряма адресація даних з постінкрементом рис. 5.
Рисунок 5 - Непряма адресація даних з постінкрементом
Після виконання операції регістр X абоY, або Z інкрементується. Aдресою операнда є вміст X, Y чи Z регістра попередньо інкрементованого.
Адресація константи з використанням команд LPM рис. 6.
Рисунок 6 - Адресація константи коду пам'яті
Адреса байта константи визначається вмістом регістра Z. Старші 15 бітів визначають слово адреси (від 0 до 1К 16). Непряма адресація пам'яті програм, команди ІJMP і ІCALL рис. 7.
Рисунок 7 - Непряма адресація пам'яті програм
Виконання програми продовжується з адреси, що міститься в регістрі Z (тобто, лічильник команд завантажується вмістом регістра Z). Відносна адресація пам'яті програм, команди RJMP і RCALL рис. 8.
Рисунок 8 - Відносна адресація пам'яті програм
Виконання програми продовжується з адреси PC + k + 1. Значення відносної адреси може бути від -2048 до 2047. Групу команд передачі керування утворюють команди безумновного переходу, умовного переходу, команди виклику підпрограми і команди повернення з підпрограми. Характеристики команд наведені в переліку:
RJMP
IJMP
EIJMP
STACK
EIND
JMP
RCALL
ICALL
RET
RETI
CPSE
CP
CPC
CPI
SBRC
SBRS
SBIC
SBIS
BRBC
SREG
BRBS
SREG
BREQ
BRNE
BRCS
BRCC
BRSH k
BRLO
BRMI
BRPL
BRGE
BRLT k
BRHS k
BRHC
BRTS k
BRTC k
BRVS k
BRVC k
BRIE k
BRID k
Хід роботи:
Напишемо програму затримки часу на 153000 тактів (рис. 1) з допомогою програми AVR Studio.
В даній програмі будемо застосовувати такі команди:
dec;
brne;
r
Початок
jmp;
Алгоритм:
Запис константи в R16
Запис константи в R17
Запис константи в R18
Зменшити R18 на 1
R18 = 0
Зменшити R17 на 1
R17 = 0
Зменшити R16 на 1
R16 = 0
Кінець
Оскільки N=K1*k2*k3 = 156000 циклів, то k1= 150 (0x96), k2= 10 (0xA), k3= 102 (0x66).
Рис.1 Програма затримки часу
Висновок: в даній лабораторній роботі ми опанували такі операції, як розгалуження та умовні переходи. Навчилися реалізовувати затримку часу. Вдосконалили вміння працювати з програмою AVR Studio 4.