Лабораторна робота № 12. Мета роботи: Оволодіння технологією програмування мікроконтролерів PIC, придбання навичок роботи в інтегрованому середовищі розробки MPLAB IDE
Програмування портів вводу-виводу мікроконтролера PIC. Мета роботи: Оволодіння технологією програмування мікроконтролерів PIC, придбання навичок роботи в інтегрованому середовищі розробки MPLAB IDE, придбання навичок написання програм для мікроконтролерів.
Програмне забезпечення: програмне забезпечення комп'ютерного моделювання електронних схем (програма Proteus (ISIS), MPLAB IDE).
Основні теоретичні відомості Основні характеристики мікроконтролерів PIC Мікроконтролери підгрупи PIC16F8X відносяться до сімейства 8-розрядних КМОН мікроконтролерів групи PIC16CXXX, для яких характерні низька вартість, цілком статична КМОН-технологія і висока продуктивність. До складу підгрупи входять МК PIC16F83, PIC16CR83, PIC16F84 і PIC16CR84. Основні характеристики МК підгрупи PIC16F8X наведені в табл. 12.1. Усі мікроконтролери підгрупи PIC16F8X використовують гарвардську архітектуру з RISC-процесором, що володіє наступними основними особливостями: · використовуються тільки 35 простих команд; · усі команди виконуються за один цикл (400 нс при частоті 10 Мгц), крім команд переходу, які вимагають 2 цикли; · робоча частота 0 Гц... 10 Мгц; · роздільні шини даних (8 біт) і команд (14 біт); · 512 х 14 або 1024 х 14 пам'ять програм, виконана на ПЗП або електрично перепрограмованій Flash- пам'яті; · 15 восьмирозрядних регістрів спеціальних функцій (SFR); · восьмирівневий апаратний стек; · пряма, непряма і відносна адресація даних і команд; · 36 або 68 восьмирозрядних регістрів загального призначення (GPR) або ОЗП; · чотири джерела переривання: o зовнішній вхід RB0/INT; o переповнення таймера TMR0; o зміна сигналів на лініях порту B; o завершення запису даних у пам'ять EEPROM; · 64 x 8 електрично перепрограмована EEPROM пам'ять даних з можливістю виконання 1000000 циклів стирання/запису; · збереження даних у EEPROM протягом як мінімум 40 років.
Мікроконтролери підгрупи PIC16F8X мають розвинуті можливості вводу/виводу: · 13 ліній вводу-виводу з індивідуальним встановленням напрямку обміну; · високий що втікаючий/витікаючий струми, достатні для керування світлодіодами: · максимальний струм, що втікає - 25 мА; · максимальний струм, що витікає - 20 мА; · 8-бітний таймер/лічильник TMR0 з 8-бітним програмованим попереднім дільником. Спеціалізовані мікроконтролерні функції включають наступні можливості: · автоматичне скидання при увімкненні (Power-on-Reset); · таймер увімкнення при ініціалізації (Power-up Timer); · таймер запуску генератора (Oscillator Start-up Timer); · сторожовий (Watchdog) таймер WDT із власним вмонтованим генератором, що забезпечує підвищену надійність; · EEPROM біт таємності для захисту коду; · економічний режим SLEEP; · обирані користувачем біти для встановлення режиму збудження вмонтованого генератора; · послідовний пристрій програмування Flash/EEPROM пам'яті програм і даних з використанням тільки двох виводів. КМОН технологія забезпечує МК підгрупи PIC16F8X додаткові переваги: · статичний принцип роботи; · широкий діапазон напруг живлення: 2,0...6,0 В; · низьке енергоспоживання: · менше 2 мА при 5В та 4Мгц; · порядку 15 мкА при 2В и 32Кгц; · менше 1 мкА для SLEEP-режиму при 2В. Мікроконтролери підгрупи PIC16F8X відрізняються між собою тільки об'ємом ОЗП даних, а також об'ємом і типом пам'яті програм. Наявність у складі підгрупи МК із Flash-пам'яттю програм полегшує створення і налагодження прототипів промислових зразків виробів. Особливості архітектури Спрощена структурна схема МК підгрупи PIC16F8X наведена на мал. 12.1. Архітектура базується на концепції роздільних шин і областей пам'яті для даних і для команд (гарвардська архітектура). Шина даних і пам'ять даних (ОЗП) - мають ширину 8 біт, а програмна шина і програмна пам'ять (ПЗП) мають ширину 14 біт. Така концепція забезпечує просту, але потужну систему команд, розроблену так, що бітові, байтові і реєстрові операції працюють з високою швидкістю і з перекриттям за часом вибірок команд і циклів виконання. 14-бітова ширина програмної пам'яті забезпечує вибірку 14-бітової команди в один цикл. Двоступінчастий конвеєр забезпечує одночасну вибірку і виконання команди. Усі команди виконуються за один цикл, крім команд переходів. Мікроконтролери PIC16F83 і PIC16CR83 адресують 512х14 пам'яті програм, а PIC16F84 і PIC16CR84 - 1Кх14 пам'яті програм. Уся пам'ять програм є внутрішньою. Мікроконтролер може прямо або побічно звертатися до регістрів або пам'яті даних. Усі регістри спеціальних функцій, включаючи лічильник команд, відображаються на пам'ять даних. Ортогональна (симетрична) система команд дозволяє виконувати будь-яку команду над будь-яким регістром з використанням довільного методу адресації. Ортогональна архітектура і відсутність спеціальних винятків робить програмування МК групи PIC16F8X простим і ефективним.
Призначення виводів МК підгрупи PIC16F8X наведене в табл. 15.2.
Примітки: Мікроконтролер містить 8-розрядний АЛП і робочий регістр W. АЛП є арифметичним модулем загального призначення і виконує арифметичні і логічні функції над умістом робочого регістра і кожного з регістрів контролера. АЛП може виконувати операції додавання, віднімання, зсуву і логічні операції. Якщо не зазначене інше, то арифметичні операції виконуються в додатковому двійковому коді. У залежності від результату операції, АЛП може змінювати значення бітів регістра STATUS: C (Carry), DC (Digit carry) і Z (Zero). Порт вводу-виводу мікроконтролера складається з двох регістрів: керуючого регістра TRIS, і регістра PORT. Керуючий регістр TRIS визначає напрям надходження інформації. Інформація може надходити в контролер, або виводитися з контролера. Якщо регістр TRIS налаштований на вихід, то запис інформації в регістр порту призводить до появи цієї інформації на ніжках мікросхеми. Більшість портів мікроконтролера восьмирозрядних. Розрядність порту вводу-виводу визначається кількістю доступних біт в регістрах PORT і TRIS. Один біт регістра TRIS управляє напрямком роботи одного біта регістра PORT. Так, наприклад, для настройки всіх розрядів порту PORTD на вихід, до реєстру TRISD повинно бути занесено значення «всі вісім біт - нулі». Якщо планується використовувати на вихід тільки один розряд (біт) порту, то достатньо встановити тільки один нуль в регістрі TRIS. Наприклад, якщо скинути третій біт регістра TRISD (TRISD, 3 = 0), то третій біт порту PORTD (PORTD, 3) буде працювати на виведення інформації і передавати нуль або одиницю з третього біта PORTD на ніжку корпусу мікросхеми. Пам'ять даних мікроконтролера розбита на банки. Банки - це набори елементів пам'яті в єдиному адресному просторі. Розмір цього простору визначається полем адреси команд мікроконтролера. У нашому випадку поле адреси команди містить 7 біт, значить можна адресувати 128 (27) осередків. Адресний простір одного банку кратно числу 07Fh (числу 127 в десятковій системі числення). Ещ ѐ є два біта <RP1:RP0> в регістрі STATUS. Це дозволяє звертатися до чотирьох ѐ м банкам пам'яті по 128 осередків у кожному банку, тобто в кожному банку є 128 осередків пам'яті по 8 біт (8 біт = один байт). Функція бітів RP0 і RP1, які розташовані в регістрі STATUS, полягає в підключенні того чи іншого банку до мікроконтролера. Мікроконтролер може адресувати одночасно тільки один з банків пам'яті даних. Банк пам'яті даних, який в даний момент може адресувати ядро мікроконтролера, називають активним. Регістри TRIS і PORT знаходяться в різних банках пам'яті даних. Після включення мікроконтролера активним стає нульовою банк пам'яті даних або, іншими словами, нульовий банк пам'яті даних підключається до ядра мікроконтролера. Регістр PORTD знаходиться в нульовому банку пам'яті даних, а регістр TRISD в першому. Тому необхідно встановити біт RP0 в регістрі STATUS для роботи з TRISD. Потім потрібно скинути RP0 для переходу в нульовий банк, щоб працювати з регістром PORTD.
|