У сучасній електронній техніці все частіше зустрічаються мікроконтролери. Використання таких мікросхем значно спрощує схемотехнику приладів і дозволяє легко змінювати функціональні можливості шляхом зміни програми роботи мікроконтролера. Вони застосовуються в системах управління двигунами, побутової техніки, медичних приладах, електроінструментах, іграшках і т.п.

Мікроконтролер – Це ціла мікропроцесорна система в одній мікросхемі (на одному кристали). Одна мікросхема містить у собі процесор, пам’ять, порти вводу / виводу і деякі додаткові пристрої: таймери, пристрої переривання, компаратори та ін

По відношенню до природного, людського, розрізняють такі рівні мов програмування мікроконтролерів:

– Низький рівень – машинні мови;

– Мови Асемблера – близькі до машинного;

– Мови високого рівня – наближені до людського.

Користування машинною мовою, Єдино зрозумілим микроконтроллеру, викликає труднощі, пов’язані з необхідністю запису громіздких, важко запам’ятовуються двійкових кодових комбінацій, зі складністю пошуку помилок в складанні програми, представляє собою послідовність цифрових кодів, з труднощами внесення змін до складову програму.

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

Труднощі програмування зменшуються при використанні мови асемблера. У цій мові замість кодових комбінацій застосовується мнемонічна форма запису операцій (мнемоніки), виконуваних в мікропроцесорі. Такий мнемонічною записом (у вигляді сполучення букв, взятих з відповідних англійських слів: MOV – переміщення, ADD – додавання, SUBB – віднімання) представляють вид виконуваної операції, операнди і адреси. Кожній команді мовою Асемблера соответсвует команда на мові кодових комбінацій.

Мова Асемблера спрощує запис команд, полегшує пошук у ній помилок, забезпечує кращий огляд програми і простоту внесення виправлень в програму.

Перед виконанням програма повинна бути переведена з мови асемблера на мову кодових комбінацій і в такому вигляді поміщена в пам’ять мікропроцесорної системи. Цей переклад здійснюється на комп’ютері за допомогою програми трансляції, званої Ассемблером.

Мова Асемблера (так само, як і мова кодових комбінацій) індивідуальний для кожного типу мікропроцесора і мікроконтролера.

Мови високого рівня близькі до звичайного математичному мови, що описує процес вирішення завдання, тому вони легко засвоюються. Крім того, вони забезпечують більшу компактність програми (складні обчислювальні процеси представляються короткими записами), що покращує огляд програми і виявлення в ній помилок.

Для програмування в машинних кодах і кодах Асемблера необхідно знати архітектуру процесора (мікроконтролера), набір команд, володіти хоча б основами програмування, тобто бути «фахівцем». Для написання програм мовою високого рівня досить знати основи програмування. Тому мови Асемблера серед радіоаматорів займаються микроконтроллерами, поступово витісняються мовами високого рівня: наприклад Асемблер замінюється мовою Сі.

Розглянемо, як можна швидко написати програму за допомогою мови Сі для роботи мікроконтролера на прикладі біжать вогнів (подачі сигналу на певних висновках мікроконтролера на певний час).

Для досвіду візьмемо, широко поширений мікросхемуAtmega8 (Мал. 1.) З родини восьмібітних мікроконтролерів AVR, Фірми Atmel.

1Рис.1. Зовнішній вигляд мікроконтролера Atmega8 в корпусі PDIP

Відмінні особливості Atmega8:

  • 8-розрядний високопродуктивний AVR мікроконтролер з малим споживанням
  • Прогресивна RISC архітектура
    130 високопродуктивних команд, більшість команд виконується за один тактовий цикл
    32 8-розрядних робочих регістра загального призначення Повністю статична робота
    Наближається до 16 MIPS (при тактовій частоті 16 МГц) продуктивність
    Вбудований 2-циклової перемножітель
  • Незалежна пам’ять програм і даних
    8 Кбайт Внутрішньосистемний програмованої Flash пам’яті (In-System Self-Programmable Flash)
    Забезпечує 1000 циклів стирання / запису
    Додатковий сектор завантажувальних кодів з незалежними битами блокування
    Забезпечено режим одночасного читання / запису (Read-While-Write)
    512 байт EEPROM
    Забезпечує 100000 циклів стирання / запису
    1 Кбайт вбудованої SRAM
    Програмована блокування, що забезпечує захист програмних засобів користувача
  • Вбудована периферія
    Два 8-розрядних таймера / лічильника з окремим попередніми дільником, один з режимом порівняння
    Один 16-розрядний таймер / лічильник з окремим попередніми дільником і режимами захоплення і порівняння
    Лічильник реального часу з окремим генератором
    Три канали PWM
    8-канальний аналого-цифровий перетворювач (в корпусах TQFP і MLF)
    6 каналів з 10-розрядної точністю
    2 канали з 8-розрядної точністю
    6-канальний аналого-цифровий перетворювач (в корпусі PDIP)
    4 канали з 10-розрядної точністю
    2 канали з 8-розрядної точністю
    Байт-орієнтований 2-дротовий послідовний інтерфейс
    Програмований послідовний USART
    Послідовний інтерфейс SPI (ведучий / ведений)
    Програмований сторожовий таймер з окремим вбудованим генератором
    Вбудований аналоговий компаратор
  • Спеціальні мікроконтролерні функції
    Скидання по подачі живлення і програмований детектор короткочасного зниження напруги живлення
    Вбудований калібрований RC-генератор
    Внутрішні і зовнішні джерела переривань
    П’ять режимів зниженого споживання: Idle, Power-save, Power-down, Standby і зниження шумів ADC
  • Висновки I / O і корпусу
    23 програмовані лінії введення / виводу
    28-вивідний корпус PDIP, 32-вивідний корпус TQFP і 32-вивідний корпус MLF
  • Робочі напруги
    2,7 – 5,5 В (ATmega8L)
    4,5 – 5,5 В (ATmega8)
  • Робоча частота
    0 – 8 МГц (ATmega8L)
    0 – 16 МГц (ATmega8)

Блок-схема:

atmega8_s

Рис.2. Блок-схема мікроконтролера Atmega8

Розташування висновків Atmega8:

atmega8_p1Рис.3. Розташування висновків мікроконтролера Atmega8 в корпусі DIP

atmega8_p3Рис.4. Розташування висновків мікроконтролера Atmega8 в корпусі MLF

atmega8_p2Рис.5. Розташування висновків мікроконтролера Atmega8 в корпусі TQFP