LEZIONE 48

SUB --- END SUB

Se invece usiamo l’istruzione SUB al posto del GOTO il programma sarà il seguente:

INIZIO
ISTRUZIONE1
ISTRUZIONE2
ISTRUZIONE3
AVANTI
ISTRUZIONE5
ISTRUZIONE6
FINE
SUB AVANTI
ISTRUZIONE7
ISTRUZIONE8
END SUB

In questo caso il programma eseguirà le istruzioni 1,2 e 3 poi salterà alla subroutine AVANTI ed eseguirà le istruzioni 7 ed 8 per poi tornare ad eseguire le istruzioni 5 e 6.
Come vedete in questo caso il flusso del programma non si interrompe ma va avanti.

Questo tipo di costrutto è molto utile quando si ripete spesso lo stesso codice, per evitare di scriverlo più volte ed occupare molto spazio lo si scrive una volta sola e poi lo si richiama spesso.
Questo tipo di programmazione viene anche utilizzata per rendere il codice più leggibile ed ordinato, perché il programma che scrivete voi potrebbe essere letto da un' persona e quindi altra deve essere di facile apprendimento.

Vediamo un codice esempio con le subroutine, prendiamo in esame il programma per i sensori meccanici.


#CHIP 16F84, 4			'Tipo di PIC utilizzato
DIR PORTA OUT			'Definisco le porte
DIR PORTB IN 			'd'uscita e d'ingresso

Ciclo:
'Se c'è un ostacolo a destra il microrobot salta
'all'etichetta sinistra
IF PortB.2 = 1 THEN SINISTRA

'Se c'è un ostacolo a sinistra il microrobot salta
'all'etichetta DESTRA
IF PortB.3 = 1 THEN DESTRA

'Se non c'è nessun ostacolo
PortA = b'00001001'
'Il microrobot va avanti
GOTO Ciclo

SUB DESTRA
PortA = b'00000110' 		'Il microrobot va indietro
WAIT 1 sec			'Attende pochi secondi
PortA = b'00000101'		'Il microrobot gira a destra
WAIT 1 sec			'Attende pochi secondi
END SUB 			'Salta da dove era partito

SUB SINISTRA			'Il microrobot va indietro
PortA = b'00000110'		'Attende pochi secondi
WAIT 1 sec 			'Il microrobot gira a sinistra
PortA = b'00001010'		'Attende pochi secondi
WAIT 1 sec 			'Salta da dove era partito
END SUB 

END 				'Fine del programma

Una subroutine può essere formata da un programma vero e proprio e non solo da una serie di istruzioni, addirittura si possono richiamare anche altre subroutine facendo attenzione a non esagerare.

LEZIONE 49
LEZIONE 47