З використанням пакета MPLAB 3.30

 

4.7.1. Постановка задачі та алгоритм її рішення

 

Візьмемо для прикладу наступну, що достатньо часто зустрічається на практиці, задачу, в якій необхідно виміряти часовий інтервал між двома імпульсами в сигналі, що надходить від датчика і видати отриманий результат у вигляді паралельних двійкових кодів в порт введення/ виведення. Причому, вхідні імпульсні сигнали мають наступні параметри:

,

 

де–- тривалість циклу виконання команди мікроконтролера.

Для рішення поставленої задачі вибираємо мікроконтролер PIC 16C84 (16F84) з багаторазово електрично перепрограмованими користувачем ППЗП програм і даних-констант; а також тих, що мають можливість роботи з перериваннями. Причому, в даному мікроконтролері переривання виникає з цілого ряду причин і, в тому числі, при переповненні лічильника-таймера TMRO (RTCC).

Завдяки знанням особливостей архітектури і функціонування мікроконтролера PIC 16C84 (16F84) можна запропонувати один з можливих варіантів алгоритму рішення поставленої задачі. Послідовність дій при цьому повинна бути наступною:

1. Організувати процедуру очікування надходження першого імпульсу, наприклад, на вивід мікроконтролера RA1 (стандартна процедура «Очікування події»).

2. Після відкриття переднього фронту першого імпульсу запустити внутрішній таймер/ лічильник TMRO.

3. Організувати процедуру очікування надходження другого імпульсу на той же вивід RA1.

4. Після відкриття переднього фронту другого імпульсу зупинити таймер/лічильник.

5. Отриманий в регістрі таймера/ лічильника паралельний двійковий код видати в порт В у супроводі стробуючого сигналу, що свідчить про готовність даних на виході мікроконтролера. Стробуючий сигнал видається, наприклад, на вивід RA0.