Projetos Eletrônica: Como programar PBASIC Subroutines

sub-rotinas PBASIC são inestimáveis ​​em seus projetos eletrônicos que usam um processador BASIC Stamp. UMA sub-rotina é uma seção de um programa que pode ser chamado a partir de qualquer local no programa. Quando a sub-rotina termina, o controlo do programa volta para o local de onde a sub-rotina foi chamada.

Sub-rotinas são úteis porque permitem separar longos trechos de seu programa de loop principal do programa, o que simplifica o loop principal do programa para torná-lo mais fácil de entender. Outro benefício de sub-rotinas é que eles podem fazer o seu programa menor.

Suponha que você está escrevendo um programa que precisa executar cálculos complicados várias vezes. Se você colocar o cálculo complicado em uma sub-rotina, você pode chamar a sub-rotina a partir de vários pontos do programa. Dessa forma, você escrever o código que realiza o cálculo complicado apenas uma vez.

Para criar e utilizar sub-rotinas, você precisa usar dois comandos PBASIC. O primeiro é GOSUB, que chama a sub-rotina. Você normalmente usa o GOSUB comando dentro loop principal do seu programa sempre que você quiser chamar a sub-rotina. O segundo comando é RETORNA, que é sempre o último comando na sub-rotina.

Para criar uma sub-rotina, você começa com um rótulo e terminar com um RETORNA comando. Entre eles, você escreve os comandos que deseja executar quando a sub-rotina é chamada.

Aqui está um exemplo de uma sub-rotina que gera um número aleatório entre 1 e 999 e salva-lo em uma variável chamada Rnd:

GetRandom: Random RndRnd = Rnd // 999 + 1RETURN 

Para chamar essa sub-rotina, você poderia simplesmente usar um GOSUB comando como este:

GOSUB GetRandom

este GOSUB comando transfere o controle para o GetRandom rótulo. Então, quando o GetRandom sub-rotina atinge o seu RETORNA comando, controle salta para o comando imediatamente após a GOSUB comando.

Aqui é um programa completo que utiliza uma sub-rotina para obter um número aleatório entre 1 e 1000 e utiliza o número aleatório para fazer com que o LED no pino 0 a piscar em intervalos aleatórios. Você pode executar este programa em qualquer circuito básico selo que tem um LED no pino 0.

'LED Programa Blinker "Doug Lowe' 10 de julho de 2011 '' Este programa pisca o LED no pino 0 aleatoriamente". {$ SELO BS2} '{$ PBASIC 2.5} Rnd VAR WordLed1 PIN 0DOGOSUB GetRandomHIGH Led1PAUSE RndLOW Led1PAUSE 100LOOPGetRandom: Random RndRnd = Rnd // 999 + 1RETURN

Quando você usa uma sub-rotina, é vital que você evitar que o seu programa a partir acidentalmente # 147 cair # 148- sua sub-rotina e executá-lo quando você não pretende que ele seja executado. Por exemplo, suponha que o programa na Listagem 3-5 usado um FOR-NEXT laço, em vez de um FAZ circuito porque queria a piscar o LED apenas 100 vezes. Aqui está um exemplo de como não para escrever esse programa:

PARA Contador = 1 a 100GOSUB GetRandomHIGH Led1PAUSE RndLOW Led1PAUSE 100NEXTGetRandom: Random RndRnd = Rnd // 999 + 1RETURN

Você vê por quê? Depois de FOR-NEXT ciclo pisca o LED 100 vezes, o programa continuará com o próximo comando após o FOR-NEXT loop, que representa a sub-rotina!

Para impedir que isso aconteça, você pode usar mais um comando PBASIC, FIM, que simplesmente diz o BASIC Stamp que você tenha atingido o fim do seu programa, então ele deve parar a execução de comandos. Você colocaria o FIM comando após o PRÓXIMO de comando, assim:

PARA Contador = 1 a 100GOSUB GetRandomHIGH Led1PAUSE RndLOW Led1PAUSE 100NEXTENDGetRandom: Random RndRnd = Rnd // 999 + 1RETURN

Em seguida, o programa irá parar após o FOR-NEXT ciclo termina.

menu