Page 256 - 4503
P. 256

—  останньою  у  підпрограмі  повинна  бути  команда
                     return,      або     retlw,      причому      остання
                     використовується  для  завантаження  у  робочий
                     регістр  певної  константи  під  час  повернення  із
                     підпрограми.

                8.4  Підпрограма  (процедура)  формування  затримки
           тривалістю 1 мілісекунда.

                Задля  кращого  засвоєння  матеріалу  лекції  розглянемо
           приклад  написання  підпрограми,  яка  забезпечує  формування
           затримки величиною в 1 мс (одну мілісекунду).

                Приклад 8.1. Програмне формування затримки 1 мс

                По  суті,  це  програма,  що  забезпечує  «неробство»
           процесора впродовж достатньо великого, як для нього часу —
           1 мс. Зазвичай вона реалізується за допомогою цикла, у якому
           задана константа декрементується до нуля, як це показано на
           рисунку 8.6. Шляхом підбору необхідного значення константи
           можна отримати потрібну тривалість затримки. Зрозуміло, що
           ця  величина  залежатиме  від  частоти  тактових  імпульсів
           мікроконтролера.  Припустимо, що вона становить 4 МГц, а
           отже,  машинний цикл становить 1 мкс (одну мікросекунду).
                Розглянемо блок — схему цієї програми.
                У  даній  підпрограмі  у  робочий  регістр  записується
           константа  N  і  це  число  інкрементується  до  досягнення
           нульового значення в циклі, тіло котрого складається з трьох
           команд.  Після  завершення  циклу  здійснюється  вихід  із
           підпограми завдяки команді return .

                 Програма     8.1.   Підпрограма      формування      1–мс
           затримки
                                                               -3
           ; ФУНКЦІЯ : формування затримки тривалістю 10  с (1 мс)
                                         256
   251   252   253   254   255   256   257   258   259   260   261