- •По дисципліні
- •Харків 2010
- •1 Вивчення системи команд і основних принципів програмування мікроконтролерів на прикладі керування блоком світлодіодів
- •1.1 Вказівки по організації самостійної роботи
- •1.1.2. Програмна модель мікроконтролера avr mega128. Механізм роботи з регістрами, пам'яттю й портами вводу/вивода.
- •1.1.3 Система команд мікроконтролера avr mega128.
- •1.1.4. Синтаксис і основні оператори мови с.
- •1.1.5. Принципи програмного керування світлодіодами, підключеними до зовнішніх виводів портів вводу/виводу мікроконтролера avr atmega128.
- •1.2 Опис лабораторної установки
- •1.2.1. Опис лабораторного макета.
- •Мікроконтролера avr atmega 128
- •1.2.2. Опис блоку світлодіодів лабораторного макета.
- •1.2.3. Опис інтерфейсу компілятора мови з CodeVision avr.
- •1.3 Порядок проведення роботи й вказівки по її виконанню
- •1.5 Контрольні питання й завдання
- •2 Вивчення режиму програмного опитування клавіатури
- •2.1 Вказівки по організації самостійної роботи
- •2.1.1. Принципи аналізу натискання стандартних кнопок за допомогою мікроконтролера avr mega128.
- •2.1.2. Принципи зчитування даних з матричної клавіатури за допомогою мікроконтролера avr атmega128 у режимі програмного опитування.
- •2.2 Опис лабораторної установки
- •2.3 3Порядок проведення роботи й вказівки по її виконанню.
- •Контрольні питання й завдання
- •3 Вивчення принципів програмного керування зовнішніми пристроями на прикладі виводу інформації на цифровий індикатор
- •3.1 Вказівки по організації самостійної роботи
- •3.2 Опис лабораторної установки
- •3.3 Порядок проведення роботи й вказівки по її виконанню
- •Контрольні питання й завдання
- •4 Вивчення принципів обробки переривань на прикладі керування вбудованими у мікроконтролер таймерами-лічильниками
- •4.1 Вказівки по організації самостійної роботи
- •4.1.1. Система переривань у мікроконтролері avr атmega 128.
- •4.1.2. Принципи функціонування апаратних таймерів-лічильників, що входять до складу мікроконтролера avr атmega 128.
- •4.2 Опис лабораторної установки
- •Порядок проведення роботи й вказівки по її виконанню
- •Контрольні питання й завдання
- •5 Вивчення принципів організації обміну даними по послідовному інтерфейсі rs-232c між мікроконтролером avr атmega128 і пеом
- •Вказівки по організації самостійної роботи.
- •5.1.1. Принципи обміну даними по послідовному інтерфейсі rs-232c.
- •5.2 Опис лабораторної установки
- •5.3 Порядок проведення роботи й вказівки по її виконанню
- •Контрольні питання й завдання
- •6 Вивчення принципів роботи з вбудованим у мікроконтролер аналого-цифровим перетворювачем на прикладі виміру температури за допомогою аналогового термодатчика.
- •6.1 Вказівки по організації самостійної роботи
- •6.2 Опис лабораторної установки
- •6.3 Порядок проведення роботи й вказівки по її виконанню
- •6.5 Контрольні питання й завдання
- •Рекомендована література
- •Додаток 1 розташування виводів мікроконтроллера
- •Додаток 2 інструкції процесорів avr
- •До лабораторних робіт з дисциплін
1.1.2. Програмна модель мікроконтролера avr mega128. Механізм роботи з регістрами, пам'яттю й портами вводу/вивода.
У мікроконтролері AVR АТMEGA128 реалізована гарвардська архітектура, у відповідності до якої адресні простори пам'яті програм і даних фізично розділений (доступ до цих областей пам'яті здійснюється по роздільних шинах). Така організація дозволяє ядру процесора одночасно працювати з пам'яттю програм і даних, що підвищує швидкодію. Карта розподілу пам'яті в мікроконтролері AVR АТMEGA128 наведена на рис. 1.1. Пам'ять програм являє собою електрично-стираємий перепрограмувальний постійний запам'ятовувальний пристрій ППЗУ обсягом 128 кбт, виконане за технологією FLASH - пам'яті, і призначена для зберігання команд, керуючих функціонуванням мікроконтролера, а також для зберігання констант, що не міняють своїх значень у ході виконання програми. Так, як довжина команди становить 16 біт, то пам'ять програм має 16-розрядну організацію. Для адресації пам'яті програм використовується 16-розрядний регістр - програмний лічильник PС (Program Counter). Програма виконується послідовно. Для керування ходом виконання програми існують команди переходу, що змінюють відповідним чином значення РС.
Пам'ять даних організована за принципом сполученої архітектури вводу/виводу й розділена на 3 частини: регістрова пам'ять, пам'ять портів (регістрів) вводу/виводу й статичне ОЗУ (SRAM), розташовані в єдиному адресному просторі.
Рисунок 1.1 - Розподіл пам'яті в мікроконтролері AVR АТMEGA128
Регістрова пам'ять (див. рисунок 1.2) включає 32 8-розрядних регістра загального призначення (R0 - R31), об'єднаних у регістровий файл. Кожний з регістрів загального призначення безпосередньо пов'язаний з АЛУ. АЛУ підтримує арифметичні й логічні операції з регістрами, між регістром і константою або безпосередньо з регістром. При виконанні арифметичної або логічної команди за один такт із регістрового файлу вибираються два операнда, виконується дія, і результат повертається в регістровий файл. Регістровий файл відображається на молодші 32 адреси 0000h-001Fh пам'яті даних і до його регістрів можна звертатися як до комірок пам'яті. Шість 8 - розрядних регістрів (R26 - R31) можуть використатися як три 16-розрядних регістри-покажчики для непрямої адресації (див. рисунок 1.3).
Рисунок 1.2 - Ілюстрація відображення регістрів загального призначення й портів уведення/виводу на адресний простір пам'яті даних
X |
Y |
Z |
|||
27 |
26 |
29 |
28 |
31 |
30 |
Рисунок 1.3 - 16-розрядні регістри Х, Y, Z, що використовуються для непрямої адресації пам'яті.
Простір вводу/виводу складається з 64 адрес портів 0000h-003Fh, призначених для взаємодії із внутрішніми й зовнішніми пристроями мікроконтролера. Порти вводу/виводу відображаються на область пам'яті даних з адресами 0020h-005Fh і допускають можливість звертання до них як до комірок пам'яті. При доступі до порту вводу/виводу як до комірки пам'яті до адреси порту необхідно додати 20h. Адреса порту вводу/виводу в просторі пам'яті часто вказується в дужках після адреси в просторі портів вводу/виводу. Через те, що основною функцією мікроконтролера є керування зовнішніми пристроями, у таблиці 1.1. приводяться назви й адреси (у просторі портів вводу/виводу) основних інтерфейсних портів із вказівкою режиму роботи й функцій окремих регістрів.
По адресах пам'яті 0060h-00FFh розташовані 160 додаткових регістрів вводу/виводу.
Безпосередньо пам'ять даних являє собою статичне ОЗУ (SRAM) обсягом 4 кбт, що займає діапазон адрес 0100h-10FFh.
Таблиця 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 |
Регістр стану SREG розташований в області вводу/виводу за адресою 3Fh (5Fh) і містить інформацію про поточний стан мікроконтролера. Розташування прапорових бітів регістра стану наведено на рис. 1.4.
№ біта |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
3Fh (5Fh) |
I |
T |
H |
S |
V |
N |
Z |
C |
Рисунок 1.4 - Регістр стану SREG.
Призначення окремих бітів регістра стану наведено нижче:
C – прапор переносу, установлюється в 1 при наявності переносу в арифметичних операціях;
Z – прапор нуля, установлюється в 1, якщо результат операції дорівнює 0;
N – прапор негативного результату, установлюється в 1 при одержанні негативного результату;
V - прапор переповнення, фіксує вихід результату за межі припустимого діапазону значень;
S - прапор знака, S = N xor V;
H - прапор додаткового переносу (з молодшої тетради байта в старшу);
T - прапор для тимчасового зберігання біта з регістрів загального призначення;
I - керуючий прапор дозволу переривань, дозволяє (1) або забороняє (0) процесору реагувати на апаратні переривання.
