Белов, А.В. Микроконтроллеры AVR: от азов программирования до создания практических устройств

Шаг 2. Переходим от цифровой техники к микропроцессору и микроконтроллеру 65 команд, которые выполняются до начала цикла. Среди этих команд обяза ­ тельно должна быть команда, записывающая в соответствующий регистр значение параметра цикла. Затем выполняется тело цикла. В нашем случае тело цикла — это команды считывания состояния клавиши и сложения полученных результатов. После выполнения тела цикла наступает очередь оператора цикла. Этот оператор выполняет следующие действия: ♦ уменьшает параметр цикла на единицу; ♦ проверяет, не равен ли параметр после уменьшения нулю; ♦ если не равен, то оператор осуществляет переход к началу цикла; ♦ если же параметр равен нулю, переход не производится и выполне ­ ние программы продолжается в обычном режиме. В результате такой оператор вызывает многократное выполнение тела цикла до тех пор, пока содержимое параметра цикла не достигнет нуля. При достижении нуля цикл заканчивается, и программа продолжает выполняться в обычном режиме. Команды перехода к подпрограмме Это полезно запомнить. Подпрограмма — это некоторый участок программы, к выполне ­ нию которого программа может возвращаться несколько раз. Такой прием применяется в том случае, если одни и те же действия нужно выполнять в разных местах программы. Для этого любую последова ­ тельность команд можно оформить в виде подпрограммы. В нужном месте основная программа вызывает подпрограмму. После выполне ­ ния подпрограммы управление передается в то место, откуда про ­ изошел ее вызов. Одна и та же подпрограмма может быть вызвана любое количество раз из самых разных мест основной программы. Для организации подпрограмм любой процессор содержит как мини ­ мум две специальные команды: ♦ команду перехода к подпрограмме; ♦ команду выхода из подпрограммы. Существуют также команды перехода к подпрограмме по условию. Процесс обращения к подпрограмме показан на рис. 2.4. Слева от мно- Переход к подпрограмме Рис. 2.4. Демонстрация работы операторов организации подпрограммы

RkJQdWJsaXNoZXIy MTExODQxMg==