- •Література
- •Інформаційні ресурси
- •Використання mplab для складання та налагодження програм мікроконтролера
- •Теоретичні відомості
- •Порядок виконання лабораторної роботи
- •Лабораторна робота № 21 Дії з портами мікроконтролера, логічні операції та обробка окремих бітів
- •Теоретичні відомості
- •21.1. Аналіз роботи програми
- •Лабораторна робота № 22 Створення програмної затримки часу за допомогою циклів
- •Теоретичні відомості
- •22.1. Результати аналізу програми
- •Лабораторна робота № 23 Створення затримки часу за допомогою переривань від таймера
- •23.2. Варіанти задання коефіцієнтів ділення переддільника
- •23.2. Алгоритм управління світлодіодами з затримкою від таймера tmr0
- •23.3. Результати аналізу програми
- •Використання енергонезалежної пам'яті даних
- •У регістрі eecon1 розміщені такі біти керування:
- •24.1. Блок-схема алгоритму обміну з eeprom
- •Використання клавіатури з мікроконтролером
- •Теоретичні відомості
- •25.1. Таблиця результатів тестування
- •Виведення цифрової інформації на семисегментні індикатори
- •Основи використання mplab-icd пояснено далі в ході роботи.
- •Закрити вікно icd Options ().
- •Дослідження мікроконтролерного модуля аналого-цифрового перетворювача
- •Закрити вікно icd Options().
- •27.1. Результати вимірів і обчислень
- •Мікроконтролерне дослідження дренькоту контактів
- •Результати вимірів кількості замикань контактів
27.1. Результати вимірів і обчислень
U(і), B вольтметра |
16-й код індикатора |
10-й код індикатора |
U*(і), Bза формулою |
Похибка δ, % |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ЗМІСТ ЗВІТУ
Звіт має містити: назву та мету лабораторної роботи, скорочений порядок виконання лабораторної роботи, програму з коментарем, формули та таблицю розрахунків.
ДОВІДКА. Розташування регістрів спеціального призначення у банках пам’яті:
Банк 0: PORTA, PORTC, ADRESH, ADCON0, PIR1.
Банк 1: TRISA, TRISC, ADCON1, OPTION_REG.
КОНТРОЛЬНІ ЗАПИТАННЯ
У чому принципова різниця між аналоговими та цифровими сигналами?
Чи може мікропроцесор обробляти аналогові сигнали?
Для чого призначений АЦП?
У яких режимах може працювати модуль АЦП мікроконтролера PIC16F877?
Як визначити математичну залежність між кодом, отриманим від АЦП і реальною фізичною величиною, на яку реагує датчик?
Лабораторна робота № 28
Мікроконтролерне дослідження дренькоту контактів
Мета роботи: засвоїти використання переривання при зміні стану біта 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.
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
GIE |
PEIE |
T0IE |
INTE |
RBIE |
T0IF |
INTF |
RBIF |
Рис. 28.1 – Регістр INTCON
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
RBPU |
INTEDG |
T0CS |
T0SE |
PSA |
PS2 |
PS1 |
PS0 |
Рис. 28.2 – Регістр OPTION_REG
Лабораторне обладнання складається з демоплати, до якої приєднано вимикач RB0 з підтягуючим опором R (рис. 28.3), плати програматора і комп'ютера.
Рис. 28.3. Схема лабораторної установки
Практичним завданням лабораторної роботи є визначення дренькоту контактів. Дренькіт контактів – це явище кількаразового замикання й розмикання контактів при одному вмиканні вимикача, кнопки або реле, яке виникає через пружні властивості контактів. Асемблерною програмою передбачено, що при замиканні вимикача RB0 сигнал на одноіменному вході мікроконтролера змінюється з "1" в "0". Це викликає переривання при кожній подібній зміні. За одну операцію управління вимикачем воно може трапитись декілька разів через пружні властивості контактів. У підпрограмі обробки переривання накопичується кількість замикань.
ПОРЯДОК ВИКОНАННЯ ЛАБОРАТОРНОЇ РОБОТИ
У середовищі MPLAB створити в папці 1Work новий проект з іменем 28ГБ (Г – номер групи, Б – номер бригади), обравши в меню Project-New Project.
У вікні Edit Project додати новий файл на асемблері 28ГБ.asm (Add Node – додати вузол). Після повернення до вікна Edit Project нижче hex-файла з'явиться файл з розширенням .asm. Після появи вікна середовища MPLAB IDE створити цей текстовий файл з розширенням .asm (File – New), записавши його у папку 1Work (File - Save As …).
Ввести текст програми на асемблері, доповнюючи його власними фрагментами, складеними згідно до завдань, вказаних у коментарі.
Записати програму на диск (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
Виконати компіляцію програми (Project – Make Project, або кнопка у вигляді зеленої лійки, або клавіша F10). На екрані з'являється вікно результатів компіляції (Build Results).
Якщо з'явилось повідомлення про помилки (error), ознайомившись з поясненням змісту помилки, слід натиснути мишею на цей рядок вікна Build Results. MPLAB зробить активним той рядок у тексті програми, де ймовірно зроблено помилку. Треба виправити її й далі так само інші помилки. Потім повторити п. 5, поки не буде видано повідомлення "Build completed successfully" (Трансляцію завершено успішно). При цьому створюється файл з ім'ям проекту і розширенням .hex.
Слід закрити вікно Build Results.
Підключити лабораторну установку до LPT-порту комп'ютера і до живлення. Встановити перемикач у положення "Програмування" (при цьому світиться світлодіод Prog), а вимикачі, що підключені до портів, усі вимкнути.
Згорнути вікно MPLAB і на робочому столі зробити подвійний клік на синій піктограмі програматора "ProPic2". Обрати тип мікроконтролера PIC16F628 (у верхній правій частині вікна ProPic2 виділено синім кольором). Стандартним шляхом відкрити створений вами файл з розширенням .hex.
Здійснити програмування мікроконтролера, натиснувши на піктограму з червоною блискавкою.
Після завершення програмування переключити перемикач на режим роботи. Вмикаючи та вимикаючи вимикач RB0 50 разів, записати у таблицю 28.1 стан світлодіодів RB7…RB1 після кожного циклу замикання-розмикання. Визначити середню кількість замикань контактів при одному вмиканні вимикача.
Результати записати в таблицю 28.1.
За даними таблиці 28.1 розрахувати середню кількість спрацювань контактів за 50 циклів вмикань вимикача.
Таблиця 28.1