Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

МК / МК ЛР3

.pdf
Скачиваний:
14
Добавлен:
05.03.2016
Размер:
243.47 Кб
Скачать

Лабораторна робота №3

Тема: Програмування портів введення/виведення МК АVR ATmega128. Мета: Вивчення особливостей програмування портів введення/виведення МК АVR ATmega128 на прикладі керування блоком світлодіодів, які

підключені до порту D мікроконтролера.

1 Короткі теоретичні відомості.

Простір вводу/виводу складається з 64 адрес портів, призначених для взаємодії з внутрішніми і зовнішніми пристроями по відношенню до мікроконтролера. Порти введення/виведення допускають можливість звернення до них як до комірок пам’яті. З огляду на те, що основною функцією мікроконтролера є керування зовнішніми пристроями, в таблиці 1. наводяться назви та адреси (в просторі портів введення/виводу) основних інтерфейсних портів із зазначенням режиму роботи і функцій окремих регістрів.

Таблиця 1.1 - Порти введення/виведення мікроконтролера AVR

MEGA128 для підключення зовнішніх пристроїв

 

Назва порту

Ідентифікатори

Адреса

Режим/функція

введення/виведення

окремих регістрів

 

 

PORTA

PINA

19h

IN

 

DDRA

1Ah

OUT / DIRECTION

 

PORTA

1Bh

OUT

PORTB

PINB

16h

IN

 

DDRB

17h

OUT / DIRECTION

 

PORTB

18h

OUT

PORTC

PINC

13h

IN

 

DDRC

14h

OUT / DIRECTION

 

PORTC

15h

OUT

PORTD

PIND

10h

IN

 

DDRD

11h

OUT / DIRECTION

 

PORTD

12h

OUT

PORTE

PINE

01h

IN

 

DDRE

02h

OUT / DIRECTION

 

PORTE

03h

OUT

PORTF

PINF

00h

IN

 

DDRF

61h

OUT / DIRECTION

 

PORTF

62h

OUT

PORTG

PING

63h

IN

 

DDRG

64h

OUT / DIRECTION

 

PORTG

65h

OUT

2

Згідно з технічною документацією на вихідних лініях мікроконтролерів AVR при рівні напруги, відповідному "логічного нулю", струм навантаження становить порядку 20 мА. Стандартні світлодіоди споживають струм в межах 3

20 мА при робочій напрузі близько 1,5 4 В. Це дозволяє безпосередньо підключати світлодіод до вихідний лінії порту послідовно з обмежуючим струм резистором (рисунок 1.). Другий вивід ланцюга необхідно під'єднати до позитивного полюса джерела живлення (+5 В).

Для керування світлодіодом необхідно подавати на відповідний вивід мікроконтролера рівні "логічного нуля" або "логічної одиниці". При появі на виводі мікроконтролера, до якого підключений світлодіод, рівня «логічного нуля», падіння напруги на світлодіоді буде достатнім для світіння. При формуванні на відповідному виводі мікроконтролера напруги "логічної одиниці" падіння напруги на світлодіоді не буде, і він буде погашений.

Рисунок 1. - Схема підключення світлодіода до виходу порту введення/виведення мікроконтролера AVR

Для керування рівнями напруги на вихідних лініях мікроконтролера можна застосовувати алгоритми маскування або, безпосередньо, команди для роботи з бітами. Пряме звернення до регістрів портів введення/виведення на мові Assembler забезпечується за допомогою команд in і out. Компілятор мови С допускає використання ідентифікаторів регістрів введення/виведення: DDRX

-регістр керування напрямком передачі даних, PORTX регістр виводу даних, PINX - регістр введення даних, де Х - позначення порту введення/виведення.

Наприклад, програмно доступні регістри порту А позначаються як: DDRA, PORTA, PINA (див. таблицю 1.). Якщо лінія порту введення/виведення Х програмується на виведення, то у відповідному біті регістру керування напрямом передачі даних DDRX повинна бути встановлена 1, якщо на введення

-то 0. Розглянемо приклади:

unsigned char a, b;

декларація змінних а і b розміром в байт;

DDRB = 0b0101110; лінії 0, 5 і 7 порту В запрограмовані на виведення

даних, інші (1,2,3,6) - на введення.

 

DDRD = 0xFF;

встановлення всіх ліній порту D в режим

виведення

даних;

 

 

а = 0х12; привласнити змінної а значення 12h;

 

PORTD = a;

вивести дані (значення змінної а) в порт виводу D.

DDRС = 0;

встановлення всіх ліній порту С в режим

введення

даних;

 

 

b = PINС;

записати дані з порту введення С в змінну b.

 

3

Для роботи з окремими розрядами регістрів портів введення/виведення на мові С можна використовувати конструкції: PORTX.N і PINX.N, де N - номер біта, наприклад,

PORTB.2 = 0;

другий біт порту D скинути в 0;

PORTB.4 = 1;

четвертий біт порту D встановити в 1;

PORTD.5= PINF.3;

п'ятому біту порту D привласнити значення

третього біта порту F;

 

Приклад виконання завдання. Розробити програму, що виконує в нескінченному циклі паралельне вмикання і вимикання 1-го, 3-го, 6-го і 8-го світлодіодів з тривалістю світіння 2с і часом знаходження в погашеному стані 1 с.

2.Порядок виконання роботи

1.Створити новий AVR GCC С++ Executable Project Lab3 в Atmel Studio 6.

Вибрати мікроконтролер ATmega128.

2.Створити лістинг коду для свого варіанту (таблиця 2).

3.Відкомпілювати проект, та виправити помилки, якщо такі виникнуть.

4.Зібрати схему в ISIS PROTEUS, представлену на рис 2.

4

Рисунок 2 – Схема лабораторного проекту

5.Задати програму для виконання мікроконтролерові. Прошивка знаходиться в папці Debug створеного в пункті 1 проекту середовища Atmel Studio 6 під назвою Lab3.hex. Налаштування мікроконтролера в ISIS PROTEUS взяти такі самі як в лабораторній роботі 2.

6.Перевірити працездатність проекту, та зробити висновки.

Таблица 2 – Варианти завдань

№ п.п.

Завдання

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Розробити

програму,

що

виконує

в

нескінченному

циклі

1

послідовне включення/вимикання 1 - го, 3 - го і 6-го світлодіодів

 

з інтервалом 2 с.

 

 

 

 

 

2

Розробити

програму, що виконує 5

разів поспіль послідовне

включення 2 - го, 4 - го і 6-го світлодіодів з інтервалом 1,5 с.

 

Розробити

програму,

що

виконує

в

нескінченному

циклі

3

послідовне включення/вимикання 1 - го, 2 - го, 3 - го і 4-го

 

світлодіодів з інтервалом 1 с.

 

 

 

 

 

Розробити

програму, що виконує в нескінченному циклі

4

паралельне

включення 1-го, 2-го, 7-го і 8-го світлодіодів з

 

тривалістю світіння 2 з і часом знаходження в погашеному стані

 

1 с.

 

 

 

 

 

 

 

Розробити

програму,

що

виконує

в

нескінченному

циклі

5

паралельне включення 1-го, 2-го і 8-го світлодіодів з тривалістю

 

світіння 1 с і часом знаходження в погашеному стані 2 с.

 

6

Розробити

програму, що виконує в нескінченному циклі

 

послідовне включення / вимикання всіх світлодіодів (з 1-го по 8-

5

 

й) з інтервалом 1,4 с.

 

 

 

 

 

 

Розробити

програму,

що

виконує

в

нескінченному

циклі

7

послідовне включення всіх світлодіодів (з 1-го по 8-й) з

 

інтервалом 0,5 с.

 

 

 

 

 

 

Розробити

програму,

що

виконує

в

нескінченному

циклі

8

послідовне включення / вимикання 3-го, 4-го і 5-го світлодіодів з

 

інтервалом 3 с.

 

 

 

 

 

9

Розробити

програму,

що

виконує

в

нескінченному

циклі

послідовне

включення

5-го,

6-го, 7-го

і 8-го світлодіодів з

 

інтервалом 2.5 с.

 

 

 

 

 

 

Розробити

програму,

що

виконує

в

нескінченному

циклі

10

паралельне вмикання і вимикання блоку з 8-ми світлодіодів з

 

тривалістю світіння 2 з і часом знаходження в погашеному стані

 

4 с.

 

 

 

 

 

 

3 Контрольні питання

1.Поясніть основні особливості архітектури мікроконтролера AVR ATMEGA 128.

2.Поясніть принципи розподілу адресних просторів портів введення/виводу в мікроконтролері AVR ATMEGA 128.

3.Поясніть реалізацію в мікроконтролері AVR ATMEGA 128 гарвардської архітектури.

4.Дайте характеристику основним командам мікроконтролера AVR ATMEGA 128 при зверненні до пам'яті і портів введення / виводу.

5.Призначення регістру DDR ?

6.Призначення регістру PORT ?

7.Призначення регістру PIN ?

Соседние файлы в папке МК