КАТЕГОРИИ: Архитектура-(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) |
Мета роботи: засвоїти використання переривання при зміні стану біта RB0 РІС-контролера
Мікроконтролерне дослідження дренькоту контактів
ТЕОРЕТИЧНІ ВІДОМОСТІ Усі контролери сімейства РІС16 серед багатьох джерел переривання мають вбудований модуль, що може викликати переривання при зміні стану вхідного сигналу з входу RB0 (нульовий біт порта В). Щоб дозволити переривання при зміні стану RB0, треба у регістрі управління перериваннями INTCON (рис. 28.1) встановити біти INTE дозволу переривання при зміні стану сигналу з входу RB0 та глобального дозволу переривання GIE. Крім того, у регістрі OPTION_REG (рис. 28.2) слід визначити біт INTEDG. Якщо йому присвоїти "1", ознака INTF встановиться при зміні стану RB0 з "0" в "1". А якщо біту INTEDG присвоїти "0", ця ознака INTF встановиться при зміні стану RB0 з "1" в "0". При умові INTE =1 та GIE = 1 це призведе до переривання основної програми та виконання підпрограми обробки переривання з адреси 4.
Рис. 28.1 – Регістр INTCON
Рис. 28.2 – Регістр OPTION_REG
Лабораторне обладнання складається з демоплати, до якої приєднано вимикач RB0 з підтягуючим опором R (рис. 28.3), плати програматора і комп'ютера. Рис. 28.3. Схема лабораторної установки
Практичним завданням лабораторної роботи є визначення дренькоту контактів. Дренькіт контактів – це явище кількаразового замикання й розмикання контактів при одному вмиканні вимикача, кнопки або реле, яке виникає через пружні властивості контактів. Асемблерною програмою передбачено, що при замиканні вимикача RB0 сигнал на одноіменному вході мікроконтролера змінюється з "1" в "0". Це викликає переривання при кожній подібній зміні. За одну операцію управління вимикачем воно може трапитись декілька разів через пружні властивості контактів. У підпрограмі обробки переривання накопичується кількість замикань.
ПОРЯДОК ВИКОНАННЯ ЛАБОРАТОРНОЇ РОБОТИ 1. У середовищі MPLAB створити в папці 1Work новий проект з іменем 28ГБ (Г – номер групи, Б – номер бригади), обравши в меню Project-New Project. 2. У вікні Edit Project додати новий файл на асемблері 28ГБ.asm (Add Node – додати вузол). Після повернення до вікна Edit Project нижче hex-файла з'явиться файл з розширенням.asm. Після появи вікна середовища MPLAB IDE створити цей текстовий файл з розширенням.asm (File – New), записавши його у папку 1Work (File - Save As …). 3. Ввести текст програми на асемблері, доповнюючи його власними фрагментами, складеними згідно до завдань, вказаних у коментарі. 4. Записати програму на диск (File – Save).
;************************************************ ;Лабораторна робота 28 ;Дослідження дренькоту контактів з використанням переривання ;при зміні стану зовнішнього виводу RB0 ;************************************************ list P=16F628 f=4 MHz #INCLUDE "P16F628.INC" __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC & _BODEN_OFF & _LVP_OFF;це як продовження попереднього рядка
cblock 0x20 COUNT, LOOP0, LOOP1, LOOP2 endc
org 0 nop goto MAIN
org 4 goto INTRPT
MAIN: clrf COUNT;очищення лічильника кількості ;замикань контактів bsf STATUS, RP0;активним стає банк 1 ОЗП ;================================================== movlw b'00000001';налаштувати в порті В біт 0 у ;режим введення, movwf TRISB;інші - в режим виведення ???????????;налаштувати переривання при зміні стану ???????????;входа RB0 з "1" в "0 ???????????;дозволити переривання при зміні стану біта RB0 bsf INTCON,INTE ???????????;скинути в "0" ознаку INTF ???????????;встановити глобальний дозвіл переривання ;================================================== bcf STATUS,RP0;активним стає банк 0 ОЗП
RPT: call indic;виклик п/п індикації call TIME025s;виклик п/п затримки часу 0,25 с goto RPT
indic: ;=============================================== ???????????;скопіювати вміст COUNT ???????????;в PORTB ;=============================================== return
;--------------------------------------- TIME025s:;п/п затримки 250 мс MOVLW.250 MOVWF LOOP0 OUTTER: MOVLW.102; Затримка 1 мс MOVWF LOOP1 INNER: movlw d'2' movwf LOOP2 ININNER: DECFSZ LOOP2,F goto ININNER DECFSZ LOOP1, F GOTO INNER DECFSZ LOOP0, F GOTO OUTTER RETURN
;------------------------------------ ;обробка переривання INTRPT: ;=============================================== ???????????;збільшити на 2 вміст лічильника COUNT ???????????; ???????????;скинути ознаку переривання від зміни ;стану RB0 ;=============================================== retfie;повернення з підпрограми з одночасним ;встановленням GIE=1
end
5. Виконати компіляцію програми (Project – Make Project, або кнопка у вигляді зеленої лійки, або клавіша F10). На екрані з'являється вікно результатів компіляції (Build Results). 6. Якщо з'явилось повідомлення про помилки (error), ознайомившись з поясненням змісту помилки, слід натиснути мишею на цей рядок вікна Build Results. MPLAB зробить активним той рядок у тексті програми, де ймовірно зроблено помилку. Треба виправити її й далі так само інші помилки. Потім повторити п. 5, поки не буде видано повідомлення "Build completed successfully" (Трансляцію завершено успішно). При цьому створюється файл з ім'ям проекту і розширенням.hex. 7. Слід закрити вікно Build Results. 8. Підключити лабораторну установку до LPT-порту комп'ютера і до живлення. Встановити перемикач у положення "Програмування" (при цьому світиться світлодіод Prog), а вимикачі, що підключені до портів, усі вимкнути. 9. Згорнути вікно MPLAB і на робочому столі зробити подвійний клік на синій піктограмі програматора " ProPic2 ". Обрати тип мікроконтролера PIC16F628 (у верхній правій частині вікна ProPic2 виділено синім кольором). Стандартним шляхом відкрити створений вами файл з розширенням.hex. 10. Здійснити програмування мікроконтролера, натиснувши на піктограму з червоною блискавкою. 11. Після завершення програмування переключити перемикач на режим роботи. Вмикаючи та вимикаючи вимикач RB0 50 разів, записати у таблицю 28.1 стан світлодіодів RB7…RB1 після кожного циклу замикання-розмикання. Визначити середню кількість замикань контактів при одному вмиканні вимикача. 12. Результати записати в таблицю 28.1. 13. За даними таблиці 28.1 розрахувати середню кількість спрацювань контактів за 50 циклів вмикань вимикача.
Таблиця 28.1
Дата добавления: 2015-06-25; Просмотров: 385; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |