4.7.1. Постановка задачі та алгоритм її рішення
Візьмемо для прикладу наступну, що достатньо часто зустрічається на практиці, задачу, в якій необхідно виміряти часовий інтервал між двома імпульсами в сигналі, що надходить від датчика і видати отриманий результат у вигляді паралельних двійкових кодів в порт введення/ виведення. Причому, вхідні імпульсні сигнали мають наступні параметри:
,
де–- тривалість циклу виконання команди мікроконтролера.
Для рішення поставленої задачі вибираємо мікроконтролер PIC 16C84 (16F84) з багаторазово електрично перепрограмованими користувачем ППЗП програм і даних-констант; а також тих, що мають можливість роботи з перериваннями. Причому, в даному мікроконтролері переривання виникає з цілого ряду причин і, в тому числі, при переповненні лічильника-таймера TMRO (RTCC).
Завдяки знанням особливостей архітектури і функціонування мікроконтролера PIC 16C84 (16F84) можна запропонувати один з можливих варіантів алгоритму рішення поставленої задачі. Послідовність дій при цьому повинна бути наступною:
1. Організувати процедуру очікування надходження першого імпульсу, наприклад, на вивід мікроконтролера RA1 (стандартна процедура «Очікування події»).
2. Після відкриття переднього фронту першого імпульсу запустити внутрішній таймер/ лічильник TMRO.
3. Організувати процедуру очікування надходження другого імпульсу на той же вивід RA1.
4. Після відкриття переднього фронту другого імпульсу зупинити таймер/лічильник.
5. Отриманий в регістрі таймера/ лічильника паралельний двійковий код видати в порт В у супроводі стробуючого сигналу, що свідчить про готовність даних на виході мікроконтролера. Стробуючий сигнал видається, наприклад, на вивід RA0.