Будемо сподіватись що, наприклад, необхідно ввести водночас через порти введення/ виведення байти стану 2-х незалежних датчиків дискретних сигналів, виконати порівняння введених байтів між собою, і за результатами порівняння здійснити:
1) У випадку, якщо D1 <= D2 управління передається фрагменту програми з адресою А1 і встановлюється в ²1² ознака (прапорець) F0;
2) У випадку, якщо D1 > D2 ознака F0 встановлюється в ²0², у відповідності з варіантом завдання формуються керуючі сигнали, а управління передається на фрагмент програми з адресою А2.
· Вибрати мікроконтролер, що має не менше 17-ти ліній введення/ виведення дискретних сигналів (наприклад, PIC 16C55);
· Вибрати лінії (розряди) портів А, В і С для введення сигналів від датчиків і виведення імпульсних сигналів (наприклад, RB0... RB7 – для вводу сигналів від датчика D1, RC0... RC7 – для вводу сигналів від датчика D2 і RA0 – для виводу імпульсних сигналів управління заданої тривалості);
3) Здійснити опитування стану обох датчиків;
4) Порівняти отримані байти стану між собою;
5) Організувати процедуру передачі управління на дві підпрограми в залежності від результатів порівняння;
6) Сформувати сигнал заданої тривалості за допомогою часового інтервалу, рівного часу затримки.
Для цього можна використати:
· одну або декілька холостих команд NOP;
· програмний лічильник, працюючий, наприклад, в декрементному режимі. При цьому в лічильник заноситься константа, лічильник декрементується. Онулення лічильника є сигналом закінчення часового інтервалу;
· внутрішній таймер-лічильник (TMRO);
· зовнішній (додатковий) таймер-лічильник у випадку, якщо TMRO з будь-якої причини використати неможливо;
7) Організувати введення наступного байта.
На підставі попередніх міркувань можна запропонувати варіант блок-схеми алгоритму робочої програми мікроконтролера. Цей алгоритм наведений на рис. 5.7. На рис. 5.8 наведена БСА підпрограми порівняння двох байтів стану незалежних датчиків D1 і D2 між собою (СОМР1).
На підставі блок-схем алгоритмів і розподілу пам'яті даних можна запропонувати текст програми, що наведений нижче:
; Текст програми:
LIST p = 16C55, r = HEX
Title ‘Z3’