Видео: Программирование Arduino UNO - Grbl CNC controller - ЧПУ станок (Часть 3) 2025
Подпрограммы PBASIC неоценимы в ваших проектах электроники с использованием процессора BASIC Stamp. Подпрограмма - это часть программы, которая может быть вызвана из любого места в программе. Когда подпрограмма завершается, управление программой переходит к месту, из которого была вызвана подпрограмма.
Подпрограммы полезны, потому что они позволяют отделять длинные части вашей программы от основного цикла программы, что упрощает основной цикл программы, чтобы упростить ее понимание. Еще одно преимущество подпрограмм заключается в том, что они могут уменьшить вашу программу.
Предположим, вы пишете программу, которая должна выполнять сложные вычисления несколько раз. Если вы поместите сложный расчет в подпрограмму, вы можете вызвать подпрограмму из нескольких мест в программе. Таким образом, вы пишете код, который выполняет сложный расчет только один раз.
Чтобы создать и использовать подпрограммы, вам необходимо использовать две команды PBASIC. Первый - это GOSUB, который вызывает подпрограмму. Обычно вы используете команду GOSUB в основном цикле вашей программы, когда хотите вызвать подпрограмму. Вторая команда - RETURN, которая всегда является последней командой в подпрограмме.
Чтобы создать подпрограмму, вы начинаете с метки и заканчиваете командой RETURN. Между ними вы пишете все команды, которые хотите выполнить при вызове подпрограммы.
Вот пример подпрограммы, которая генерирует случайное число между 1 и 999 и сохраняет его в переменной с именем Rnd:
GetRandom: RANDOM Rnd Rnd = Rnd // 999 + 1 RETURN
Чтобы вызвать эту подпрограмму, вы просто должны использовать команду GOSUB следующим образом:
GOSUB GetRandom
Эта команда GOSUB передает управление метке GetRandom. Затем, когда подпрограмма GetRandom достигает команды RETURN, управление переходит к команде сразу после команды GOSUB.
Вот полная программа, которая использует подпрограмму для получения случайного числа от 1 до 1 000 и использует случайное число, чтобы светодиод на контакте 0 мигал с произвольными интервалами. Вы можете запустить эту программу на любой схеме Basic Stamp, на которой есть светодиод на выводе 0.
'LED Blinker Program' Doug Lowe '10 июля 2011 г. «Эта программа мигает светодиодом на контакте 0 случайным образом». {$ STAMP BS2} '{$ PBASIC 2. 5} Rnd VAR Word Led1 PIN 0 DO GOSUB GetRandom HIGH Led1 PAUSE Rnd LOW Led1 PAUSE 100 LOOP GetRandom: RANDOM Rnd Rnd = Rnd // 999 + 1 RETURN
Когда вы используете подпрограмму, это жизненно важно что вы предотвращаете случайную «попадание» вашей программы в свою подпрограмму и выполнение ее, когда вы не собираетесь ее выполнять.Например, предположим, что программа в листинге 3-5 использовала цикл FOR-NEXT вместо цикла DO, потому что вы хотели мигать светодиодом только 100 раз. Вот пример того, как не написать эту программу:
FOR Counter = 1 TO 100 GOSUB GetRandom HIGH Led1 PAUSE Rnd LOW Led1 PAUSE 100 СЛЕД. GetRandom: RANDOM Rnd Rnd = Rnd // 999 + 1 RETURN
Вы понимаете, почему? После того, как цикл FOR-NEXT начнет мигать светодиодом 100 раз, программа продолжит следующую команду после цикла FOR-NEXT, который является подпрограммой!
Чтобы этого не произошло, вы можете использовать еще одну команду PBASIC, END, которая просто сообщает BASIC Stamp, что вы достигли конца вашей программы, поэтому он должен прекратить выполнение команд. Вы должны поместить команду END после команды NEXT, например:
FOR Counter = 1 TO 100 GOSUB GetRandom HIGH Led1 PAUSE Rnd LOW Led1 PAUSE 100 NEXT END GetRandom: RANDOM Rnd Rnd = Rnd // 999 + 1 RETURN > Затем программа остановится после завершения цикла FOR-NEXT.
