
- •2.Література:
- •3.Завдання:
- •4. Методичні вказівки:
- •4.1 Порти мікроконтролера
- •4.2 Взаємодія мікроконтролера з найпростішими пристроями вводу/виводу
- •4.2.1Керування світлодіодами
- •4.2.2 Підключення кнопок, перемикачів
- •4.3 Обробка події натискання кнопки
- •4.4 Введення інформації від двійкового датчика і формування імпульсів заданої
- •5.Контрольні питання:
- •6. Тестові питання:
- •6.2. Завдання.
4.4 Введення інформації від двійкового датчика і формування імпульсів заданої
тривалості
При побудові систем обробки і управління досить часто виникає потреба вводу сигналів. Нехай, наприклад, необхідно за допомогою мікроконтролера PIC16F84 здійснити опитування двійкового датчика і, в залежності від його стану, або організувати процедуру «очікування події», або сформувати і видати керуючий сигнал у вигляді позитивного імпульсу заданої тривалості.
Для вирішення даної задачі необхідно:
вибрати лінії (розряди) порту А і В для вводу сигналів від датчика і виводу імпульсних сигналів (наприклад, RB0 – на ввід, а RA0 – на вивід);
заборонити всі переривання;
здійснити опитування стану датчика;
проаналізувати його (наприклад, перевіривши біт, що сигналізує про стан датчика, тобто визначити, відбулася в поточному циклі опитування подія в об'єкті управління або ні – чи був зафіксований черговий перехід з "0" в "1)";
організувати процедуру передачі управління на дві підпрограми в залежності від рівня сигналу, отриманого від датчика;
сформувати позитивний імпульсний сигнал (IMPULS) заданої тривалості у випадку, якщо, наприклад, стан датчика дорівнює "1" (D = 1). Для організації затримки (DELAY) можна використати:
одну або декілька холостих команд NOP;
програмний лічильник, працюючий, наприклад, в декрементному режимі. При цьому в лічильник заноситься константа, лічильник декрементується. Онулення лічильника є сигналом закінчення часового інтервалу;
внутрішній таймер-лічильник (TMRO);
зовнішній (додатковий) таймер-лічильник у випадку, якщо TMRO з будь-якої причини використати неможливо;
Організувати процедуру «очікування події», що полягає в безперервному опитуванні датчика і аналізі його стану.
На підставі попередніх міркувань можна запропонувати варіант функціональної схеми і блок-схеми алгоритму (БСА) робочої програми мікроконтролерного устаткування (МКУ).
Рисунок 13 – Блок-схема алгоритма опитування стану датчика
Рисунок 14 – Алгоритми підпрограм
Перш ніж розпочати написання вхідного тексту робочої програми, необхідно остаточно визначити всі ресурси мікроконтролера і змінні, що знадобляться для вирішення поставленої задачі, а також здійснити розподіл пам'яті даних (ПД). Тобто закріпити за означеними ресурсами і змінними певні адреси в адресному просторі ПД. Цей розподіл ПД відбивається в секції заголовка робочої програми мікроконтролера.
Рисунок 15 - Функціональна схема приладу прийому сигналу
Варіант тексту програми, що дозволяє реалізувати всі функції, закладені у вхідному технічному завданні, наведений нижче (ОЗНАЙОМИТИСЬ З ТЕКСТОМ ПРОГРАМИ!):
LIST p = 16F84A
; Секція заголовка
; Опис спеціальних регістрів
TRISA EQU 85H ; Регістр управління портом А
TRISB EQU 86H ; Регістр управління портом B
INTCON EQU 0BH ; Регістр управління перериваннями
; Опис регістрів вводу/ виводу
PORTA EQU 05H
PORTB EQU 06H
; Опис регістрів загального призначення
CTD EQU 0DH ; Лічильник циклу в підпрограмі DELAY
; Робоча секція
ORG 0 ; Точка входу в програму після RESET
GOTO START
ORG 0h
;*************підпрограма**************************
IMPULS
BSF PORTA, 0 ; формування наростаючого фронту
MOVLW B'0000 1111’ ; Завантаження лічильника затримки
MOVWF CTD ; Цикл затримки
M2
DECFSZ CTD,1 ;Декремент вмісту регістра CTD, запис
;р-ату у CTD, перевірка вмісту CTD на нуль:
GOTO M2 ; -виконати наступну команду якщо CTD>0
BCF PORTA, 0 ;-пропустити наступну (GOTO),якщо CTD=0
BCF PORTA, 0 ;формування спадаючого фронту
RETURN
;************початок основної програми****************
START ; Процедура ініціалізації МК
BSF STATUS,5 ;перехід в 1-ий банк пам’яті
BCF INTCON, 7 ;Заборона переривань
MOVLW B'1111 1111’ ;Переслати константу в регістр W
MOVWF TRISB ;призначити всі лінії PORTВ на введення.
MOVLW B'0000 0000’ ;Переслати константу в регістр W
MOVWF TRISA ;і призначити всі; лінії PORTА на виведення
BCF STATUS,5 ;перехід в 0-ий банк пам’яті
BCF PORTA, 0 ;Скидання 0-го біта в регістрі порту А
; Опитування стану датчика і процедура "очікування події"
M1 BTFSS PORTB, 0 ;Аналіз 0-го біта в регістрі порту В
;Якщо датчик дорівнює 1, то пропустити
GOTO М1 ;наступну команду, інакше перехід на M1 CALL IMPULS ;перехід до П/Пр формування імпульсу
BCF PORTA, 0 ;Скидання 0-го біта в регістрі порту А
;*********** секція закінчення***************************
END