При побудові систем обробки і управління досить часто виникає потреба вводу сигналів. Нехай, наприклад, необхідно за допомогою мікроконтролера PIC16F84 здійснити опитування двійкового датчика і, в залежності від його стану, або організувати процедуру «очікування події», або сформувати і видати керуючий сигнал у вигляді позитивного імпульсу заданої тривалості.
Для рішення даної задачі необхідно:
1) Вибрати лінії (розряди) порту А і В для вводу сигналів від датчика і виводу імпульсних сигналів (наприклад, RB0 – на ввід, а RA0 – на вивід);
2) Заборонити всі переривання;
3) Здійснити опитування стану датчика;
4) Проаналізувати його (наприклад, перевіривши біт, що сигналізує про стан датчика, тобто визначити, відбулася в поточному циклі опитування подія в об'єкті управління або ні – чи був зафіксований черговий перехід з "0" в "1)";
5) Організувати процедуру передачі управління на дві підпрограми в залежності від рівня сигналу, отриманого від датчика;
6) Сформувати позитивний імпульсний сигнал (IMPULS) заданої тривалості у випадку, якщо, наприклад, стан датчика дорівнює "1" (D = 1). Для організації затримки (DELAY) можна використати:
· одну або декілька холостих команд NOP;
· програмний лічильник, працюючий, наприклад, в декрементному режимі. При цьому в лічильник заноситься константа, лічильник декрементується. Онулення лічильника є сигналом закінчення часового інтервалу;
· внутрішній таймер-лічильник (TMRO);
· зовнішній (додатковий) таймер-лічильник у випадку, якщо TMRO з будь-якої причини використати неможливо;
7) Організувати процедуру «очікування події», що полягає в безперервному опитуванні датчика і аналізі його стану.
На підставі попередніх міркувань можна запропонувати варіант функціональної схеми і блок-схеми алгоритму (БСА) робочої програми мікроконтролерного устаткування (МКУ).
Функціональна схема і БСА робочої програми МКУ наведені відповідно на рис. 5.1 і. 5.2. На рис. 5.3 і 5.4 наведені БСА підпрограм, що входять в загальний алгоритм робочої програми. Дані підпрограми цілком можуть вважатися стандартними, бо вони використовуються достатньо часто при реалізації різноманітних функцій управління і обробки даних в МКУ.
|
Рис. 5.1. Функціональна схема приладу прийому сигналу
Перш ніж розпочати написання вхідного тексту робочої програми, необхідно остаточно визначити всі ресурси мікроконтролера і змінні, що знадобляться для рішення поставленої задачі, а також здійснити розподіл пам'яті даних (ПД). Тобто закріпити за означеними ресурсами і змінними певні адреси в адресному просторі ПД. Цей розподіл ПД відбивається в секції заголовка робочої програми мікроконтролера.
На підставі блок-схем алгоритмів і розподілу пам'яті даних можна розпочати написання вхідного тексту робочої програми. Варіант тексту програми, що дозволяє реалізувати всі функції, закладені у вхідному технічному завданні, наведений нижче:
; Текст програми
LIST p = 16C84, r = HEX
Title ‘Z1’