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

4.4 Введення інформації від двійкового датчика і формування імпульсів заданої

тривалості

При побудові систем обробки і управління досить часто виникає потреба вводу сигналів. Нехай, наприклад, необхідно за допомогою мікроконтролера PIC16F84 здійснити опитування двійкового датчика і, в залежності від його стану, або організувати процедуру «очікування події», або сформувати і видати керуючий сигнал у вигляді позитивного імпульсу заданої тривалості.

Для вирішення даної задачі необхідно:

  1. вибрати лінії (розряди) порту А і В для вводу сигналів від датчика і виводу імпульсних сигналів (наприклад, RB0 – на ввід, а RA0 – на вивід);

  2. заборонити всі переривання;

  3. здійснити опитування стану датчика;

  4. проаналізувати його (наприклад, перевіривши біт, що сигналізує про стан датчика, тобто визначити, відбулася в поточному циклі опитування подія в об'єкті управління або ні – чи був зафіксований черговий перехід з "0" в "1)";

  1. організувати процедуру передачі управління на дві підпрограми в залежності від рівня сигналу, отриманого від датчика;

  1. сформувати позитивний імпульсний сигнал (IMPULS) заданої тривалості у випадку, якщо, наприклад, стан датчика дорівнює "1" (D = 1). Для організації затримки (DELAY) можна використати:

  • одну або декілька холостих команд NOP;

  • програмний лічильник, працюючий, наприклад, в декрементному режимі. При цьому в лічильник заноситься константа, лічильник декрементується. Онулення лічильника є сигналом закінчення часового інтервалу;

  • внутрішній таймер-лічильник (TMRO);

  • зовнішній (додатковий) таймер-лічильник у випадку, якщо TMRO з будь-якої причини використати неможливо;

  1. Організувати процедуру «очікування події», що полягає в безперервному опитуванні датчика і аналізі його стану.

На підставі попередніх міркувань можна запропонувати варіант функціональної схеми і блок-схеми алгоритму (БСА) робочої програми мікроконтролерного устаткування (МКУ).

Рисунок 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

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