LEZIONE 49

SUB --- END SUB

Il limite massimo di subroutine che si possono richiamare all’interno di un altra sub routine, varia da microcontrollore a microcontrollore, in basso riporto una tabella descrittiva.



Un' altra potenzialità della subroutine è quella di poter accettare dei parametri, la sintassi è la seguente:

SUB NOME_SUB (PARAMETRO1 PARAMETRO2 PARAMETRO3)
...
ISTRUZIONI
...
END SUB

I parametri sono dei valori passati alla subroutine e possono essere usati all’interno della subroutine stessa.

Supponiamo una subroutine come questa:

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

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

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

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

GOTO Ciclo

SUB MOVIMENTO (TIPOMOVIMENTO) #NR
IF TIPOMOVIMENTO = 1 THEN
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 IF

IF TIPOMOVIMENTO = 0 THEN
PortA = b'00000110'           'Il microrobot va indietro
WAIT 1 sec           'Attende pochi secondi
PortA = b'00001010'           'Il microrobot gira a sinistra
WAIT 1 sec           'Attende pochi secondi
END IF
END SUB           'Fine della subroutine

END           'Fine del programma

In questo caso quando il programma eseguirà l’istruzioni IF PortB.2 = 1 THEN MOVIMENTO 0 sarà richiamata la subroutine MOVIMENTO dove passeremo il parametro TIPOMOVIMENTO che potrà essere o zero o uno. Se il parametro passato è uno il microrobot girerà a destra se invece sarà zero il microrobot girerà a sinistra.

Come vedete nelle subroutine possiamo trovare un programma con le istruzioni di condizione precedentemente viste, in questo caso l’istruzione di condizione IF.
Per semplificare l’esempio ho utilizzato un solo parametro ma se ne possono usare di più, il valore massimo dei parametri non è riportato nelle specifiche del compilatore che stiamo usando quindi fate affidamento al sito del produttore.

LEZIONE 50
LEZIONE 48