logo
МПТ_L_к

8.2. Підрахунок імпульсів

РАХУНОК є одною із простіших функцій МП.

За звичаєм, рахунок пов’язаний з циклічною ділянкою програми або якоюсь зовнішньою подією. В МП можливі два способи організації підрахунку числа повторень чи зовнішніх подій. Розробці програми завжди передує послідовно складені блок-схеми різних рівнів. Приведемо, як приклад:

А) Початок Б) Початок

↓ ↓

Початкова Початкова

установка установка

лічильника лічильника

→ → ↓ ↓ ← ← ┐

Виконання основної Рахунок (+ або -) ↑

якоїсь функції ↓

Результат = 0? ↑

Рахунок (+ або – 1) ↓ так ↓ні

↑ ↓ ↓ виконання

ні Результат = 0 ? ↓ якоїсь ↑

так ↓ основної функц┘

Кінець Кінець

Для організації підрахунку один із регістрів загального призначення РЗП використовується як лічильник. За допомогою команд він загружається відповідною константою, з якої віднімається 1 до одержання нульового результату в цьому регістрі. Нульове вмістиме регістру визначається командою умовного переходу. В деяких МП можливо краще записати в регістр доповнюючий код числа та збільшувати в кожному циклі його на 1 до нульового результату. Результат при цьому, звісно, буде той же самий.

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

Як бачимо способи дають різні результати в роботі. Лівий А) - завжди виконує якусь запрограмовану основну функцію і після її виконання перевіряється умова для виходу із циклу зменшення вихідної константи на 1, якщо результат = 0. По другому способу – основна функція може не виконатись ні разу, якщо після першого ж збільшення чи зменшення на 1 константи результат буде дорівнювати 0.

Можливі варіанти реальної програми:

По варіанту А):

MOV A, -10 ; до регістру А заноситься константа –10

BEGIN: ; мітка початку програми, яка повторюється

...................... ; тіло основної програми, що буде повторюватись

INС A ; збільшуємо зміст регістру А на 1

CZ BEG3 ; виходимо з програми на мітку BEG3, якщо

; результат в регістрі А дорівнює 0, умовний

; перехід по нульовому результату

JMP BEGIN ; безумовний перехід на початок, якщо в А не «0».

По варіанту В):

MOV A, -10 ; до регістру А заноситься константа –10

BEG5: ;нова мітка для початку збільшення змісту А

INС A ; збільшуємо зміст регістру А на «

CZ BEG3 ; виходимо з програми на мітку BEG3, якщо

; результат в регістрі А дорівнює «0»

BEGIN: ; мітка початку програми, яка повторюється

...................... ; тіло основної програми, що буде повторюватись

JMP BEG5 ; безумовний перехід на початок, якщо в А не 0

Розглянуті схеми та програми дозволяють вести підрахунки подій до

величини, яка обмежена розрядністю (n) регістрів чи комірки пам’яті, які використовуються як лічильники. Для 8-ми розрядів рахунок можна вести до 256. Для більшого числа повторень потрібно використовувати регістри подвійної довжини, що збільшує число повторень до 65536.