
- •1 Загальні відомості
- •6 Відладка програми
- •7 Налаштування параметрів імітатора
- •ATmega128, aTmega128l 8-розрядний avr-мікроконтролер з внутрішньосистемною програмованою флеш-пам'яттю ємністю 128 кбайт Особливості:
- •Короткий огляд
- •Завдання:
- •Лабораторна робота №2 «Вивчення математичних і логічних операцій і їх вплив на біти-стану мікроконтролера» Ціль роботи
- •Програма виконання роботи
- •Додатковий теоретичний матеріал необхідний для виконання лабораторної роботи
- •Завдання:
- •Лабораторна робота №3 «Вивчення методів додавання і віднімання чотирьохбайтних чисел» Ціль роботи
- •Програма виконання роботи
- •Додатковий теоретичний матеріал необхідний для виконання лабораторної роботи
- •Завдання:
- •Завдання:
- •Лабораторна робота №5 «Вивчення роботи з пам’яттю даних» Ціль роботи
- •Програма виконання роботи
- •Додатковий теоретичний матеріал необхідний для виконання лабораторної роботи
- •Завдання:
- •Лабораторна робота №6 «Вивчення операцій порівняння і реалізація циклічних операцій» Ціль роботи
- •Програма виконання роботи
- •Додатковий теоретичний матеріал необхідний для виконання лабораторної роботи
- •Завдання:
- •Завдання:
- •Завдання:
- •Часові діаграми таймера-лічильника 0
- •Опис регістрів 8-розрядного таймера-лічильника 0
- •Асинхронна робота таймера-лічильника 0
- •Дільник частоти таймера-лічильника 0 Дільник частоти таймер-лічильника 0
- •Завдання:
- •Завдання:
- •Набір інструкцій
Завдання:
Виконати інструкцію ADD.
Виконати інструкцію ADC.
Виконати інструкцію SUB.
Виконати інструкцію SBC.
Виконати інструкцію SUBI.
Виконати інструкцію SBCI.
Виконати інструкцію ADIW.
Виконати інструкцію SBIW.
Виконати інструкцію ANDI.
Виконати інструкцію ORI.
Виконати інструкцію LSL.
Виконати інструкцію LSR.
Перейти на першу команду.
Використовуючи вікна Workspace і Register дослідити виконання цих інструкцій з попередньо встановленим бітом переносу C і зі скинутим цим бітом. Встановити подібність і відмінність виконання.
Дослідити встановлення і скидання інших бітів стану мікроконтролера.
На основі отриманого досвіду запропонувати алгоритм додавання/віднімання двобайтних чисел на 8-и розрядному мікроконтролері.
Лабораторна робота №3 «Вивчення методів додавання і віднімання чотирьохбайтних чисел» Ціль роботи
вивчення математичних методики додавання і віднімання чисел за розміром більших з розрядність мікроконтролера
навчитися прогнозувати розрядність максимально можливого числа при додаванні/віднімання
Програма виконання роботи
- Об’явити дві константи A і B, розмір яких не перевищує чотири байти і одна з яких має бути гарантовано чотирибайтною величиною
- Вибрати достатню кількість регістрів для роботи і завантажити у них числа A і B (побайтно)
- Виконати додавання "
- Виконати віднімання
.
- Порівняти побайтно, що
- Визначити дві мітки у програмі: у разі успішного виконання перевірки програма має перейти на мітку успіху, у разі помилкового виконання перевірки – перейти на мітку помилки
Додатковий теоретичний матеріал необхідний для виконання лабораторної роботи
Правило прогнозування максимально-можливого результату при додаванні/відніманні
При додаванні/відніманні6 N-розрядного числа до M-розрядного числа максимально-можливим результатом може бути (MAX(N,M)+1)-розрядне число.
Вирази над константами у AVR-асемблері
AVR-асемблер включає в себе вирази над константами. Ці вирази можуть включати в себе операнди, оператори і функції. Всі вирази є 32-ої бітні для AVRASM і 64-бітні для AVRASM2
У цій лабораторній треба використати функції над константами, що зробить програму біль легкою для читання і розуміння.
AVR-асемблер (AVRASM) має такі функції, якими можна користуватися у виразах над константами
LOW(вираз) |
Повертає молодший (перший) байт виразу |
HIGH(вираз) |
Повертає другий байт виразу |
BYTE2(вираз) |
То саме, що і HIGH |
BYTE3(вираз) |
Повертає третій байт виразу |
BYTE4(вираз) |
Повертає четвертий байт виразу |
LWRD(вираз) |
Повертає біти 0-15 виразу |
HWRD(вираз) |
Повертає біти 16-31 виразу |
PAGE(вираз) |
Повертає біти 16-21 виразу |
EXP2(вираз) |
Повертає 2 у степені виразу |
LOG2(вираз) |
Повертає цілу частину логарифму |
AVRASM2 має додаткові функції INT, FRAC, Q7, Q15, ABS, DEFINED, STRLE, з описом яких можна познайомитися у Help до AVR Studio.
Директива EQU – «Встановити символ рівним значенню виразу»
Ця директива присвоює число символьній мітці. Ця символьна мітка може бути використаною у нижче слідуваних виразах. Символьну мітку, якій присвоєно число директивою EQU розглядається асемблером як константа і не може бути змінена чи пере назначена.
Синтаксис:
.EQU символьна мітка = вираз
Наприклад:
.EQU io_offset = 0x23
.EQU porta = io_offset + 2
Опис деяких мнемонік інструкцій, які використовуються у цій лабораторній роботі і не були описані у описах до попередніх лабораторних робіт
BREQ – «Перейти, якщо рівне нулю»
Інструкція умовного відносного переходу. Вона перевіряє біт (Z) і здійснює перехід відносно вмістимого регістру лічильника команд (PC), якщо біт Z встановлений. Якщо ця інструкція виконується зразу після будь-яких цих інструкцій CP, CPI, SUB чи SUBI – перехід відбудеться, якщо беззнакове або знакове ціле число представлене у Rd було рівне беззнаковому або знаковому цілому числу представленому у Rr. Ця інструкція здійснює відносний перехід відносно регістра PC у будь-якому напрямку (PC – 63 ≤ PC +64). Параметр k є зміщенням відносно PC і представляється у додатковому коді. (Ця інструкція є еквівалентною інструкції BRBS 1,k)
якщо Rd = Rr (Z = 1) тоді PC ← PC + k + 1 інакше PC ← PC + 1
Синтаксис |
Операнди |
Лічильник команд |
BREQ k |
-64 ≤ k ≤ +63 |
PC ← PC + k + 1 PC ← PC + 1, якщо умова не справджується |
Вплив на регістри статусу:
I |
T |
H |
S |
V |
N |
Z |
C |
- |
- |
- |
- |
- |
- |
- |
- |
Наприклад:
loop: ldi r1, r0
cpi r19, $10
breq loop
nop
BRNE – «Перейти, якщо не рівне нулю»
Інструкція умовного відносного переходу. Вона перевіряє біт (Z) і здійснює перехід відносно вмістимого регістру лічильника команд (PC), якщо біт Z скинутий. Якщо ця інструкція виконується зразу після будь-яких цих інструкцій CP, CPI, SUB чи SUBI – перехід відбудеться, якщо беззнакове або знакове ціле число представлене у Rd не було рівне беззнаковому або знаковому цілому числу представленому у Rr. Ця інструкція здійснює відносний перехід відносно регістра PC у будь-якому напрямку (PC – 63 ≤ PC +64). Параметр k є зміщенням відносно PC і представляється у додатковому коді. (Ця інструкція є еквівалентною інструкції BRBS 1,k)
якщо Rd ≠ Rr (Z = 1) тоді PC ← PC + k + 1 інакше PC ← PC + 1
Синтаксис |
Операнди |
Лічильник команд |
BRNE k |
-64 ≤ k ≤ +63 |
PC ← PC + k + 1 PC ← PC + 1, якщо умова не справджується |
Вплив на регістри статусу:
I |
T |
H |
S |
V |
N |
Z |
C |
- |
- |
- |
- |
- |
- |
- |
- |
Наприклад:
loop: ldi r1, r0
cpi r19, $10
brne loop
nop
CLR – «Очистка регістру»
Очищення регістру. Ця інструкція виконує Виключаюче АБО між регістром і самим собою. результатом буде очищення всіх бітів регістру
Rd ← Rd ^ Rd
Синтаксис |
Операнди |
Лічильник команд |
CLR Rd |
0 ≤ d ≤ 31 |
PC ← PC + 1 |
Вплив на регістри статусу:
I |
T |
H |
S |
V |
N |
Z |
C |
- |
- |
- |
0 |
0 |
0 |
1 |
- |
Біт S:
S = 0. Очищається
Біт V:
V = 0. Очищається
Біт N:
N = 0. Очищається
Біт Z:
Z = 1. Встановлюється
Наприклад:
clr r18 ;Очищення (обнулення) r18
CLC – «Очистка біту переносу (C)»
Ця інструкція здійснює очистку біту переносу (C) у регістрі статусу (SREG)
C ← 0
Синтаксис |
Операнди |
Лічильник команд |
CLC |
Нема |
PC ← PC + 1 |
Вплив на регістри статусу:
I |
T |
H |
S |
V |
N |
Z |
C |
- |
- |
- |
- |
- |
- |
- |
0 |
Біт C:
C = 0. біт переносу очищається
Наприклад:
clc
adc r0,r1 ; ця операція буде тотожною операції add r0,r1 зразу після виконання команди clc
CPI – «Порівняння з константою»
Ця інструкція здійснює порівняння регістра Rd і константи. Регістр при цьому не змінюється. Всі інструкції переходу з умовою можуть бути використані після цієї інструкції
Rd - K
Синтаксис |
Операнди |
Лічильник команд |
CPI Rd,K |
16 ≤ d ≤ 31, 0 ≤ K ≤ 255 |
PC ← PC + 1 |
Вплив на регістри статусу:
I |
T |
H |
S |
V |
N |
Z |
C |
- |
- |
<> |
<> |
<> |
<> |
<> |
<> |
Наприклад:
cpi r16, 3
Методика додавання/віднімання n-байтних чисел.
При додаванні/відніманні n-байтних чисел треба:
1) Спрогнозувати який максимально можливий результат (за кількістю байт) може бути.
2) Здійснювати побайтно додавання/віднімання і при цьому треба враховувати, що при додаванні можливий перенос старшого розряду у наступний байт; при відніманні можлива ситуація «позичання» старшого розряду у наступного байту. Перенос і «позичання» треба врахувати правильним підбором команд і використанням біту переносу (C) з регістру статусу (SREG)