- •2. Програмне забезпечення
- •2.1. Мови програмування
- •2. 2 Компоненти мови Асемблер
- •3. Створення програми мовою Асемблер
- •3.1. Постановка задачі
- •3.2. Директиви
- •3.4. Алгоритм
- •3.5. Програма обчислення в одній точці
- •3.6. Застосування зсувів і масок
- •3.7. Запис масиву даних до озп і організація циклу
- •3.8. Завантаження масиву даних з озп до рзп
- •3.9. Зупин програми
- •4. Команди нашої програми
- •1) Арифметичні і логічні команди
- •2) Команди переходів (branch instructions)
- •3) Команди передачі даних (data transfer instructions)
- •4) Команди з бітами (bit and bit-test instructions)
- •5) Команди керування мк (mcu control instructions)
- •Лабораторна робота №1 Основи програмного пакету розробника avr Studio
- •3 Підготовка до налагодження проекту.
- •5 Виправлення помилок алгоритму.
- •5 Оформити звіт.
- •6 Завдання на самостійну роботу.
- •Лабораторна робота №2
- •3 Компіляція проекту.
- •4 Налагодження проекту.
- •Лабораторна робота №3
- •Лабораторна робота №4
- •Лабораторна робота №4
- •1 Підготовка проекту в avr Studio 4 для запису програми до пам'яті мікроконтролера.
- •2 Підготовка апаратних засобів стартового набору stk500.
- •3 Підготовка програмного інтерфейсу stk500.
- •4 Програмування мк та дослідження спроектованого виробу на платі стартового набору stk500.
- •5 Завдання на самостійну роботу
- •1 Налаштування основних модулів мікроконтролера.
- •2 Дослідження основних режимів функціонування мікроконтролера.
- •3 Програмування мк та дослідження цпп на платі стартового набору stk500.
- •4 Завдання на самостійну роботу.
3 Компіляція проекту.
3 .1 Якщо це не зроблено, відкрити проект, що підлягає компіляції, піктограмою Open file or project (або з меню File > Open). У діалоговому вікні Open вибрати теку, тип файлів Project files, файл з емблемою програмного пакету і назвою цього проекту та відкрити – розгорнеться вікно джерельного файлу з програмою мовою Сі.
F Примітка. Опрацьовуватися, у т. ч. компілюватися може лише один проект, зазначений у рядку заголовку головного вікна і в навігаційному вікні Code Navigator. Через це в разі відкриття нового проекту поточний проект буде зачинено.
3.2
Виправити
помилки синтаксису. Якщо
проект
опрацьовується
вперше, доцільно (але не обов'язково)
піктограмою Check
syntax
(або командою Check
Syntax
з меню Project)
запустити перевірку синтаксису. За
наявності помилок відкриється вкладка
Errors
(помилки)
у вікні Messages
(повідомлення) з переліком помилок.
Для швидкої локалізації помилки достатньо
клацнути рядок з повідомленням про неї
– виділиться рядок програми, що містить
помилку. По виправленні помилок зберегти
зміни у файлі та повторити цей пункт.
Так само усунути застереження (warnings),
якщо їх зміст спеціально не передбачений
у програмі.
F Примітки. 1. Якщо Ви створили свою програму з копії зразка, у файлі можуть бути помилки, уведені з навчальною метою (вони бувають практично в кожній програмі).
2. Клавішею F1 можна викликати загальну довідку, але не інформацію про помилку.
3.3
Запустити
процес компілювання і транслювання
піктогра-мою
Build
the
project
– побудова проекту (або
командою Build
з
меню Project)
– на передньому плані з'явиться
інформаційне вікно Information
з двома вкладками: компілятора і
транслятора (Compiler,
Assembler).
Продивитися повідомлення на обох
вкладках та натиснути ОК. У разі
неуспішного процесу відкриється вікно
Messages
(повідомлення) з переліком помилок і
застережень, які необхідно усунути як
у п. 3.2 та повторити п. 3.3.
4 Налагодження проекту.
4.1
Запустити
наладчик AVR
Studio
4 піктограмою Run
the
debugger
(або
командою Debugger
з
меню Tools)
– на передньому плані з'явиться вже
знайоме
діалогове
вікно Welcome
to
AVR Studio
4 (див. вікно а
на ілюстрації вгорі), в якому натиснути
Open
(відчинити). У наступному вікні, що
відчиниться (б),
вибрати теку зі своїми проектами і в
ній відкрити теку даного проекту, відтак
(у вікні в)
вибрати тип файлів Project
Files
та відкрити COFF-файл
із побудованим проектом. У наступному
вікні, що відчи-ниться (вікно г),
зберегти цей COFF-файл
як проектний файл в AVR Studio.
І, нарешті, в останньому вікні, що
відчиниться (на ілюстрації вікно д
внизу),
вибрати налагоджувальну платформу:
програмний імітатор AVR
Simulator
(цифра 1) і тип мікросхеми: ATmega8515
(2) та натиснути кнопку Finish
(3). Тепер на основі нашого COFF-файлу
буде створено проект в AVR Studio
і автоматично завантажено його до цієї
програми, так само, як у п. 3.2 лабораторної
роботи 1, ч. 1 –
з'явиться головне вікно AVR
Studio
4 з нашим програмним
файлом мовою Сі.
4.2 Якщо це не зроблено раніше, налаштувати головне вікно AVR Studio 4, після чого налагодити проект та, у разі потреби, виправити помилки алгоритму (див. лабораторна робота 1, ч. 1, п. 3.3, 4, 5). У вікнах робочих регістрів (ілюстрація а), змінних (б) та пам'яті в режимі ОЗП (в, г) спостерігати результати виконання операцій.
▼▼▼
Частина 2 (Зразок D:\CPlabII\2_2CVAci\2_2CVAci.c)
1 Створити новий проект 2_2CVAci N (N – номер варіанту) на основі програми мовою Сі в інтегрованому пакеті розробника CodeVisionAVR згідно зі своїм варіантом завдання (див. ч.1, п.1).
2 Виконати редагування автоматично генерованої програми мовою Сі згідно з варіантом завдання (див. ч.1, п.2).
3 Виконати компіляцію проекту (див. ч.1, п.3).
4 Налагодити проект (див. ч.1, п.4).
5 Оформити звіт (див. лабораторна робота 1, ч.2, п.5).
Мета роботи: дослідження
ДОМАШНЄ ЗАВДАННЯ
! 1) Засвоїти теоретичні відомості щодо
2) Визначити
СТИСЛІ ТЕОРЕТИЧНІ ВІДОМОСТІ
РВВ і паралельні порти введення-виведення, команди з РВВ
Програмний стек
Стартовий набір (апаратний інтерфейс) STK 500
Програмний інтерфейс STK 500
Алгоритми реалізації ЦКП, макрофункції
Розділи програми
Команди програми
РВВ і паралельні порти введення-виведення, команди з РВВ
3.4 Звертання до регістрів вводу-виводу
Рис. 14. Порт вводу-виводу (а) та функції (б) і формат (в) його пристроїв в адресному просторі регістрів вводу-виводу
Рис. 15. Загальна схема звертання до регістрів вводу-виводу
Рис. 16. Пряма адресація до регістрів вводу-виводу
Вправи
; ===============ДИРЕКТИВИ
.nolist
.include "m8515def.inc" ; Файл включення
.list
;***** Регістрові змінні
.def tmp = r16 ; Тимчасові (temporal) дані
.def tmpa = r17 ; Тимчасові додаткові (additional) дані
; ***** Налаштування портів
1) PA[7..0] – входи, R1- вимкнено (ззовні приєднано R2):
; DDRA = 0b0000 0000, PORTA = 0b0000 0000,
; PINA[7..0] = 0b1111 1111 - кнопки SW[7..0] не натиснуто
2) PВ[7..0] – входи, R1- увімкнено (ззовні відсутні R2): DDRВ = 0b0000 0000
ser tmp ; Установлення регістра (Set Register) : tmp <= 0b1111 1111
out PORTB,tmp ; PORTB[7..0] <= 0b1111 1111
; (Out to I/O location - Виведення до РВВ)
3) PС[7..0] – виходи, на всіх виводах – лог. 1;
out DDRС,tmp ; DDRС[7..0] <= 0xFF
out PORTС,tmp ; PORTС[7..0] <= 0xFF
4) PD[7..4] – входи, R1- вимкнено; PD[3..0] – виходи, на виводі PD[0] – лог. 1
ldi tmpa,$0F ; tmpa <= 0b0000 1111
out DDRD,tmpа ; DDRD[7..0] <= 0b0000 1111
sbi PORTD,0 ; (PORTD = 0x00), PORTD[0] <= 1
5) PЕ[1..0] – входи, R1- вимкнено; PЕ[2] – вихід, на виводі PЕ[2] – лог. 1
; DDRЕ[2..0] = 0b000, PORTЕ[2..0] = 0b000
sbi DDRЕ,2 ; DDRЕ[2] <= 1
sbi PORTЕ,2 ; PORTЕ[2] <= 1
; ***** 6) Програма: кнопки – світлодіоди
PA[7..0] – входи, R1- вимкнено (ззовні приєднано R2) – див. (1);
PС[7..0] – виходи, на всіх виводах – лог. 1 – див. (3)
Початок тестування кнопок
Якщо PINA[0] = 0 - кнопку SW[0] натиснуто,
то PORTС[0] <= 0 – засвітити LED[0], інакше:
Якщо PINA[1] = 0 - кнопку SW[1] натиснуто,
то PORTС[1] <= 0 – засвітити LED[1], інакше:
…
Якщо PINA[7] = 0 - кнопку SW[7] натиснуто,
то PORTС[7] <= 0 – засвітити LED[7], інакше:
затримка для візуалізації стану СД
перейти на початок тестування кнопок.
; =============== ДИРЕКТИВИ
.def tmp = r16 ; Тимчасові дані
.def del = r1 ; Затримка
.def del2 = r2 ; Затримка 2
;=============== ІНІЦІАЛІЗАЦІЯ
ser tmp ; Установлення регістра (Set Register) : tmp <= 0b1111 1111
out DDRС,tmp ; DDRС[7..0] <= 0xFF - PС[7..0] – виходи
TEST: ;=========ТЕСТУВАННЯ
out PORTС,tmp ; PORTС[7..0] <= 0xFF – гасіння всіх СД
sbis PIND,0 ; Якщо PIND.0 = 1 – відтиснуто SW[0], то пропустити (Skip if Bit in ; I/O Register is Set - пропустити наступну команду, якщо біт РВВ установлено),
cbi PORTС,0 ; інакше (PIND.0 = 0 – натиснуто SW[0]) PORTС[0] <= 0 – ; засвітити LED[0] (Clear Bit in I/O Register – очистити біт у РВВ)
sbis PIND,1 ; Якщо PIND.1 = 1 – відтиснуто SW[1], то пропустити
cbi PORTС,1 ; інакше (натиснуто SW[1]) PORTС[1] <= 0 – засвітити LED[1]
…
sbis PIND,7 ; Якщо PIND.7 = 1 – відтиснуто SW[7], то пропустити
cbi PORTС,7 ; інакше (натиснуто SW[7]) PORTС[7] <= 0 – засвітити LED[7]
DLY: ; 2562 = 65 536, затримка біля 60 мс
; (вимкнено під час налагодження)
;dec del
;brne DLY
;dec del2
;brne DLY
rjmp TEST ; Повторення циклу
