КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Команди передачі управління
Крім розглянутих далі команд, до цієї групи можна віднести розглянуті раніше команди, що пропускають наступну команду за певної умови. goto label (GO TO label – перейти на мітку). Дія: безумовний перехід на вказану в команді мітку одинадцятибітової адреси. При виконанні цієї команди в програмний лічильник потрапляє адреса вказаної мітки. Тому наступною буде виконано команду, перед якою поставлено таку мітку. Приклад: goto NXT – безумовний перехід на мітку NXT.
call label (CALL label – виклик з мітки). Дія: виклик підпрограми з вказаної мітки одинадцятибітової адреси. При цьому в стеку запам'ятовується повна адреса наступної за call команди, а в програмний лічильник заноситься адреса вказаної мітки, з якої далі починається виконання підпрограми. Приклад: call MN8 – виклик підпрограми з мітки MN8.
return (RETURN – повернення). Дія: повернення з підпрограми. При цьому з верхівки стеку в програмний лічильник повертається адреса команди, наступної за тою, що викликала підпрограму. Таким чином повернення з підпрограми здійснюється в місце виклику. Підпрограми можуть бути вкладеними. Глибина вкладень 8.
retlw k (RETurn and Literal to W – повернення та число в W). Дія: повернення з підпрограми з одночасним пересиланням константи k в робочий регістр. Приклад: retlw.52 – повернення з підпрограми з одночасним потраплянням числа 52 в робочий регістр.
retfie (RETurn From IntErrupt – повернення з підпрограми переривання. Дія: повернення з підпрограми з встановлення одиниці у біті GIE глобального дозволу переривань.
clrwdt (CLeaR Watch Dog Timer – очистити сторожовий таймер). Дія: очищення сторожового таймера.
nop (No Operation – немає операції). Дія: немає операції. Не відбувається ніяких дій, крім того що програмний лічильник збільшується на одиницю. sleep (SLEEP – заснути). Дія: перейти в режим енергозбереження. При цьому зупиняється тактовий генератор мікроконтролера, перестають виконуватись команди. Споживання енергії зменшується у сотні разів. З цього режиму мікроконтролер може вивести запит переривання або запрограмована раніше для певного модуля особлива ситуація, або зовнішній сигнал.
10.4. Організація пам'яті Флеш-пам'ять програм. Мікроконтролери PIC16FXXX мають 13-розрядний програмний лічильник, що дозволяє адресувати до 8192 команд. Команди безумовного переходу goto та виклику підпрограм call містять 11-розрядну адресу мітки. Це дозволяє без перешкод адресувати 2048 перших адрес команд. Для можливості адресації переходів до старших адрес команд, постійна пам'ять розбита на сторінки по 2К команд. Щоб у разі потреби адресувати переходи і виклики підпрограм в ОЗП передбачені регістри PCL та PCLATH, які відповідно є молодшим байтом програмного лічильника та буфером його старших 5 бітів. Для переходу до старших сторінок потрібно попередньо занести до PCLATH номер сторінки. Після цього при виконанні команди goto, call або інших, у яких вказано регістр PCL, при його зміні одночасно вміст PCLATH потрапляє у старші біти програмного лічильника. Оперативна пам'ять. Оперативну пам'ять PIC-контролерів реалізовано у вигляді статичних однобайтових регістрів. Через обмежений розмір команд оперативна пам'ять адресується 7‑розрядним кодом, що дозволяє вказати 128 регістрів ОЗП. Багато типів мікроконтролерів мають більшу кількість комірок, наприклад, в PIC16F628 224 регістри, а в PIC16F877 їх 368. Щоб можна було звертатись до всіх регістрів, область ОЗП розбито на 4 банки пам'яті по 128 адрес у кожному. Банки ОЗП нумеруються від 0 до 3. У будь-який момент роботи мікроконтролера активним є тільки один з них. В цей час можна вернутись до будь-якого регістра цього банку. Щоб використати регістр з іншого банку, треба спочатку змінити активний банк ОЗП. Для цього в регістрі STATUS передбачено пару бітів, які мають назву RP1, RP0. Двійкове число, що є комбінацією цих бітів, визначає номер активного банку.
Перші адреси банків займають регістри спеціального призначення (РСП). Вони обслуговують ядро та модулі мікроконтролера, тому не можуть використовуватись довільно. Їх імена для кожного типу мікроконтролера визначені у файлах стандартних імен, які мають розширення.INC і включаються до програми директивою #INCLUDE. Старші адреси банків займають регістри загального призначення. Їх можна використовувати довільно. У деяких типів мікроконтролерів частина регістрів ОЗП загального призначення може бути фізично відсутня. Регістр STATUS зберігає (табл. 10.2) біт IRP вибору банку ОЗП при непрямій адресації, біти RP1, RP0 вибору банку ОЗП при прямій адресації, ознаки арифметичних та логічних операцій Z, DC, C відповідно нуля, допоміжного переносу та переносу. Регістри PCL, PCLATH, INDF, FSR розглянуті в цьому розділі раніше. Регістр OPTION_REG пов'язаний із зовнішніми перериваннями та модулем таймера TMR0 (детальніше див. лабораторну роботу 22). Регістри PORTA, TRISA, PORTB, TRISB, … пояснені в 10.5. Регістри INTCON, PIR1, PIE1, PIR2, PIE2 обслуговують переривання. Переривання призначено для термінової своєчасної реакції програми на зовнішні сигнали або події у вбудованих модулях мікроконтролера. У PIC16F877 переривання може бути викликано більш ніж десятком джерел:
Таблиця 10.2. Регістри спеціального призначення, що обслуговують ядро
- зовнішнє переривання INT при зміні стану входу RB0/INT; - зовнішнє переривання при зміні стану будь-якого з чотирьох старших бітів порту В; - переповнення таймера TMR0; - переповнення таймера TMR1; - співпадіння вмісту таймера TMR2 і регістра PR2; - завершення запису в EEPROM пам'ять даних; - завершення аналого-цифрового перетворення модулем АЦП; - отримання байта даних модулем USART; - завершення передачі байта даних модулем USART; - переривання від модуля CCP та інші джерела переривань.
10.5. Взаємодія мікроконтролера із зовнішніми пристроями
Переривання від кожного джерела можна програмно дозволити (1) або заборонити (0), встановивши або скинувши відповідний біт дозволу з іменем що закінчується символом "Е" (Enable – дозвіл). Для дозволу переривань, керованих регістрами PIR1, PIR2, треба іще встановити "1" в біті дозволу периферійних переривань PEIE. Після вибору необхідних джерел переривань слід встановити "1" в біті GIE глобального дозволу переривань у регістрі INTCON. Особливістю переривання INT є необхідність визначення біта INTEDG у регістрі OPTION_REG. Якщо встановити INTEDG=1, переривання почнеться при зміні стану входу RB0/INT з "0" в "1", а якщо INTEDG=0, – з "1" в "0". Переривання при зміні стану будь-якого з чотирьох старших бітів порту В призначено для зручного приєднання до мікроконтролера клавіатури. Тоді до цих входів програмно приєднують внутрішні підтягуючі опори, скинувши в нуль біт ‑RBPU регістра OPTION_REG. Алгоритм роботи мікроконтролера при появі запиту переривання наступний: 1. Завершується поточна команда. 2. Біт глобального дозволу переривання GIE скидається в "0" (забороняються будь-які переривання). 3. Запам'ятовується в стеку вміст програмного лічильника, тобто адреса наступної команди, яка мала виконуватись. А в програмний лічильник завантажується адреса 4, з якої починається підпрограма обробки переривань. 4. Виконується підпрограма обробки переривань, яку слід завершити командою RETFIE, що повертає програму в перерване місце та одночасно встановлює біт глобального дозволу переривань GIE. Підпрограму обробки переривання слід починати зі збереження у виділених для цього регістрах ОЗП вмісту важливих регістрів, який може бути зіпсований під час виконання підпрограми переривання. Це робочий регістр, STATUS, можливо, FSR, якщо в основній програмі й у підпрограмі обробки переривань використовується непряма адресація. Перед завершенням обробки переривань треба ці регістри відновити. У підпрограмі переривання програміст має визначити джерело, що викликало переривання, шляхом аналізу бітів ознак використаних джерел (з символом F у кінці імені біта) та обов'язково скинути в "0" цю ознаку. Приклади використання переривань див. у лабораторних роботах № 23, 25. Інші регістри спеціального призначення, пов'язані з роботою вбудованих модулів мікроконтролера, та використовувані ними переривання розглянуті в лабораторних роботах № 20…28. Мікроконтролери обмінюються сигналами із зовнішніми пристроями через порти, які програмно реалізовані як регістри ОЗП. Кожний біт порту можна налаштувати в режим уведення або виведення. Для цього порти мають регістри налаштування, що починаються з символів TRIS. Наприклад, біти зовнішнього порту PORTB налаштовуються регістром TRISB. Якщо у певні біти TRISB записати нулі, біти зовнішнього порту PORTB з тими ж номерами налаштовуються в режим виведення. А якщо у деякі біти регістра TRISB занести одиниці, біти PORTB з тими ж номерами налаштовуються в режим уведення. Наприклад, вміст регістра TRISB дорівнює 10001100. Це означає, що біти 0, 1, 4, 5, 6 PORTB налаштовані на режим виведення, інші – введення. Через біт зовнішнього порту, налаштований на введення, неможливо вивести назовні інформацію. При увімкненні живлення мікроконтролера всі виводи його зовнішніх портів апаратно налаштовуються на режим уведення. В усіх контролерах PIC16FXXX порти розташовані в банку 0, а регістри TRISA, TRISB, … – в банку 1. Введення дискретної інформації в мікроконтролер. Мікроконтролеру потрібно вводити інформацію про стан кнопок, вимикачів, контактів реле та інших двопозиційних пристроїв. Типовий спосіб їх приєднання подано на рис. 10.2. Рис. 10.2 – Введення дискретного сигналу в мікроконтролер
Якщо контакт SB1 розімкнутий, на вхід RA2 зовнішнього порту через підтягуючий опір R1 надходить високий рівень напруги, тобто"1". При замкнутому контакті на вході RA2 опиняється "0". Розрізнити, замкнуто контакт чи ні дозволяє фрагмент програми: btfsc PORTA, 2 goto NOPUSH PUSHB: Якщо контакт розімкнутий, з біту 2 PORTA вводиться "1". Наступна команда після btfsc PORTA, 2 виконується, через те, що умова пропуску команди є хибною. Здійснюється перехід на мітку NOPUSH. Якщо ж контакт замкнуто, на вході RA2 з'являється "0". Умова пропуску команди є істинною. Команда goto NOPUSH пропускається, а виконується та команда, яка розташована слідом за міткою PUSHB. Подібно приєднанню контакту SB1 можна підключати й безконтактні двопозиційні пристрої, наприклад, емітер-колекторний перехід транзистора, що працює в ключовому режимі. Введення аналогових сигналів розглянуто в лабораторній роботі з вивчення модуля АЦП мікроконтролера. Виведення дискретної інформації з мікроконтролера. Технічна характеристика мікроконтролерів обмежує діапазони зовнішніх напруг і струмів, що підводяться до їх виводів. Для PIC16FXXX це напруга від -0,5 до 5,5 В і струм не більше 20…25 мА. Ці умови дозволяють приєднувати до мікроконтролера більшість світлодіодів без підсилення сигналу. Їх можна приєднати двома способами (рис. 10.3). Рис. 4.3 – Приєднання світлодіодів до мікроконтролера
Щоб увімкнути світлодіод VD1 слід у другий біт порту B вивести "0" командою bcf PORTB, 2. Тоді струм від джерела живлення пройде через і обмежувальний опір R1. А для вимкнення світлодіода VD1 треба використати команду bsf PORTB, 2, яка виводить у цей же біт порту "1". Для світлодіода VD2 управління здійснюється протилежними сигналами. Команда bsf PORTB, 5 вмикає світлодіод, а bcf PORTB, 2 – вимикає. Управління мікроконтролером потужними пристроями виконується з використанням підсилення з гальванічною розв'язкою. Гальванічна розв'язка означає, що низьковольтні кола мікроконтролера електрично не зв'єднані з потужними колами навантаження. Її реалізують за допомогою реле, оптронів, трансформаторів. Типову схему управління потужним двигуном з використанням електромагнітного реле подано на рис. 10.4. Для увімкнення двигуна М1 командою bsf PORTB,4 у біт RB4 виводиться "1". Через опір R1 і перехід база-емітер транзистора VT1 проходить струм, який відкриває перехід колектор-емітер. Спрацьовує електромагнітне реле KV1, що своїм контактом живить котушку магнітного пускача КМ1, який своїми потужними контактами вмикає двигун М1. Рис. 10.4 – Мікроконтролерне управління потужним пристроєм за допомогою електромагнітного реле
Коли на вихід RB4 виводиться "0", транзистор VT1 закривається, струм через реле припиняється й воно розмикає свій контакт, що вимикає магнітний пускач КМ1, зупиняючи двигун М1. У перехідному режимі без діода VD1 під час закриття транзистора VT1 у котушці реле на короткий час виникає електрорушійна сила високої напруги. Вона через внутрішній опір джерела живлення прикладається до емітер-колекторного переходу транзистора VT1 і виводить його з ладу. Діод VD1, пропускаючи через себе струм у перехідному режимі, обмежує її до безпечного для транзистора рівня. Приклад безконтактного управління потужним пристроєм подано на рис. 10.5. Рис. 10.5 – Безконтактне управління потужним пристроєм
Щоб увімкнути електричний нагрівач ЕК1 має бути виконано команду bsf PORTC,4. Високий рівень напруги, який з'являється на зовнішньому виводі мікроконтролера створює струм, що проходить через обмежувальний опір R1 та світлодіод оптрона U1. Світловий сигнал відкриває фотосимістор оптрона. Через нього, нагрівач, опори R2..R4 проходить струм. Створене ним падіння напруги на опорі R4 викликає струм управління силовим симістором VS1, який відкривається та пропускає великий струм джерела живлення через нагрівач ЕК1. Щоб вимкнути двигун, використовують команду bcf PORTC,4. При цьому на зовнішньому виводі порту з'являється "0". Світлодіод оптрона U1 гасне, закривається фотосимістор оптрона. Припиняється струм управління силового симістора VS1 і нагрівача ЕК1. Якщо програмно змінювати тривалість виведення "1" і "0" на зовнішній вивод мікроконтролера, можна плавно змінювати споживану потужність нагрівача.
10.6. Програмне забезпечення мікропроцесорних систем Для розробки проектів мікроконтролерних систем управління та контролю використовують інтегроване програмне середовище MPLAB. Воно містить засоби для складання програм, їх трансляції (перетворення в об'єктний і машинний код), програмування мікросхем мікроконтролерів та різні засоби налагодження систем. Занесення машинного коду програми в мікроконтролер може здійснюватись програматором PROPIC2 у середовищі програми PROPIC2.EXE або ICPROG.EXE. Для програмування та налагодження програмного забезпечення разом з апаратними засобами створюваної системи застосовують налагоджувачі/програматори PICkit 2, PICkit 3, ICD2, ICD. Детальнішу інформацію про середовище MPLAB та програмування PIC‑мікроконтролерів подано в лабораторних роботах № 20…28.
Контрольні запитання 1. Що називається мікропроцесором? 2. Які особливості мають мікроконтролери? 3. Чим різняться CISC та RISC архітектури мікропроцесорів? 4. Які способи адресації використовуються в PIC-мікроконтролерах? 5. Як обирати активний банк пам'яті? 6. У чому особливість регістрів спеціального призначення? 7. Яким чином налаштовуються режими роботи зовнішніх портів? 8. Якими способами мікроконтролер може керувати зовнішніми пристроями?
Література 1 Головінський Б.Л., Лементарьов В.В., Руденський А.А. Мікропроцесорна техніка. Навчальний посібник. Ніжин, 2007. – 120 с. 2 Фурман И.А., Краснобаев В.А., Скороделов В.В., Рысованый А.Н. Организация и программирование микроконтроллеров: Учебник. – Харьков: Эспада, 2005. – 248 с. 3 Головінський Б.Л., Руденський А.А. Мікропроцесорна техніка. Методичні вказівки до виконання лабораторних робіт. – К.: НАУ, 2005. – 50 с. 4 Яценков В.С. Микроконтроллеры MicroCHIP. Практическое руководство. – М.: Горячая линия-Телеком, 2002. – 296 с. 5 Предко М. Справочник по PIC-микроконтроллерам. – М.: ДМК-Пресс, 2002. – 512 с. 6 Тавернье К. PIC-микроконтроллеры. Практическое руководство.– М.: ДМК Пресс, 2002. – 272 с.
Інформаційні ресурси 1. www.microchip.ua 2. www.microchip.ru 3. www.microchip.com.ru 4. www.microchip.com 5. www.gamma.spb.ru 6. http://picclub.chat.ru
Лабораторна робота № 20
Дата добавления: 2015-06-25; Просмотров: 1269; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |