Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
knigaEMTmikroprotsesori.doc
Скачиваний:
16
Добавлен:
10.03.2016
Размер:
1.33 Mб
Скачать

27.1. Результати вимірів і обчислень

U(і), B вольтметра

16-й код

індикатора

10-й код індикатора

U*(і), Bза формулою

Похибка δ, %

ЗМІСТ ЗВІТУ

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

ДОВІДКА. Розташування регістрів спеціального призначення у банках пам’яті:

Банк 0: PORTA, PORTC, ADRESH, ADCON0, PIR1.

Банк 1: TRISA, TRISC, ADCON1, OPTION_REG.

КОНТРОЛЬНІ ЗАПИТАННЯ

        1. У чому принципова різниця між аналоговими та цифровими сигналами?

        2. Чи може мікропроцесор обробляти аналогові сигнали?

        3. Для чого призначений АЦП?

        4. У яких режимах може працювати модуль АЦП мікроконтролера PIC16F877?

        5. Як визначити математичну залежність між кодом, отриманим від АЦП і реальною фізичною величиною, на яку реагує датчик?

Лабораторна робота № 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". Це викликає переривання при кожній подібній зміні. За одну операцію управління вимикачем воно може трапитись декілька разів через пружні властивості контактів. У підпрограмі обробки переривання накопичується кількість замикань.

ПОРЯДОК ВИКОНАННЯ ЛАБОРАТОРНОЇ РОБОТИ

  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

  1. Виконати компіляцію програми (Project – Make Project, або кнопка у вигляді зеленої лійки, або клавіша F10). На екрані з'являється вікно результатів компіляції (Build Results).

  2. Якщо з'явилось повідомлення про помилки (error), ознайомившись з поясненням змісту помилки, слід натиснути мишею на цей рядок вікна Build Results. MPLAB зробить активним той рядок у тексті програми, де ймовірно зроблено помилку. Треба виправити її й далі так само інші помилки. Потім повторити п. 5, поки не буде видано повідомлення "Build completed successfully" (Трансляцію завершено успішно). При цьому створюється файл з ім'ям проекту і розширенням .hex.

  3. Слід закрити вікно Build Results.

  4. Підключити лабораторну установку до LPT-порту комп'ютера і до живлення. Встановити перемикач у положення "Програмування" (при цьому світиться світлодіод Prog), а вимикачі, що підключені до портів, усі вимкнути.

  5. Згорнути вікно MPLAB і на робочому столі зробити подвійний клік на синій піктограмі програматора "ProPic2". Обрати тип мікроконтролера PIC16F628 (у верхній правій частині вікна ProPic2 виділено синім кольором). Стандартним шляхом відкрити створений вами файл з розширенням .hex.

  6. Здійснити програмування мікроконтролера, натиснувши на піктограму з червоною блискавкою.

  7. Після завершення програмування переключити перемикач на режим роботи. Вмикаючи та вимикаючи вимикач RB0 50 разів, записати у таблицю 28.1 стан світлодіодів RB7…RB1 після кожного циклу замикання-розмикання. Визначити середню кількість замикань контактів при одному вмиканні вимикача.

  8. Результати записати в таблицю 28.1.

  9. За даними таблиці 28.1 розрахувати середню кількість спрацювань контактів за 50 циклів вмикань вимикача.

Таблиця 28.1

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]