Page 267 - 4503
P. 267
формуватимуться становитиме 0,1..26,6 с. Це звісно
приблизно, оскільки не враховується час на виконання
команд зовнішніх циклів.
У цій програмі робочий регістр застосовують, як бачимо,
для ініціалізації величини СOUNT і організації внутрішнього
циклу тривлістю 1 мілісекунда. Саме тому його не можна
використати для зберігання значення К. Власне кажучи, якщо
б основній програмі якимось чином було б відомо про регістр
h’35’, в якому зберігається величина К, то вона «могла» б
передавати її безпосередньо на адресу цього регістра. Однак
правильним тоном у створенні підпрограм — це якомога
менше зачіпати зовнішнє її оточення, тобто максимальна
автономність від основної програми. З цієї точки зору
підпрограма DELAY_К100MS не є показовою, оскільки
використовує два регістри памяті і впливає на вміст робочого
регістру.
Для прикладу, розглянемо програму 8.5, яка забезпечує
такий самий алгоритм, тільки блок формування 100–
мілісекундної затримки викликається у ній як існуюча, тобто
вкладена підпрограма.
Програма 8.5. Альтернативний варіант підпрограми
формування затримки тривалістю К 100мс
;--------------------------------------------------------------------------------
; ФУНКЦІЯ : формування затримки тривалістю К 100
мс
; частота 4 МГц
; ПРИКЛАД: К=100, затримка 10с
; ВХІД : К в W . Від 1 до 256
; ВИХІД : змінюються ознаки і вміст W. Реґістри h’34’ і
; h’35’ онулюються
;--------------------------------------------------------------------------------
К equ h’35’; тимчасова змінна для К
267