LEZIONE 32

SELECT


Il costrutto SELECT permette di selezionare una scelta in base ad un test effettuato in precedenza. L'istruzione SELECT ha la seguente sintassi:

select case Condizione1
      case 0
          Istruzione1
      case 1
          Istruzione2
      case 2
          Istruzione3
      case 3
          Istruzione4
      case 4
          Istruzione5
      case 5
          Istruzione6
      case else
          Istruzione7
end select



In questo costrutto viene presa la condizione1 cercata nei casi (case), se esiste un paragone viene eseguita l'istruzione associata. Supponiamo che all'interno della variabile Condizione1 ci sia il numero 4, saranno ignorate tutte le istruzioni precedenti e successive ed eseguita solo l'istruizone5. Se non viene trovata nessuna corrispondenza sarà eseguita l'istruzione associata al case else ovvero l'istruizione7. In questo caso io ho inserito solo 5 casi per effettuare un test ma se ne possono aggiungere molti di più, il numero varia dal PIC usato e dal compilatore, consultare la documentazione associata. Questo tipo di costrutto può essere sostituito da una serie di IF per controllare delle porte ed effettuare delle operazioni differenti in base al valore riscontrato.

Qui di seguito vi riporto un programma esempio per capire meglio il costrutto SELECT:


#CHIP 16F84, 4				'Tipo di PIC e frequenza
Dir PORTA IN                   		'Istruzioni viste più avanti
Dir PORTB OUT                  		'Istruzioni viste più avanti
DIM Valore as BYTE             		'Variabile contatore
Label:                          	'Etichetta

	Valore = PortA			'Prendo il valore degli interruttori
	Select case Valore
		case b'00000001'	'Controllo il primo interruttore 
			Portb = b'00001111'	'Accendo i primi 4 led
		case b'00000010'	'Controllo il secondo interruttore
			Portb = b'11110000'	'Accendo gli ultimi 4 led
		case b'00000100' 	'Controllo il terzo interruttore
			Portb = b'00111100'	'Accendo i 4 led centrali
		case else
			PortB = b'11111111'	'Accendo tutti i led
	end select

GOTO Label  				'Salta all'etichetta
END 					'Fine del programma

Posizionate tutti gli interruttori sul valore 0, e date alimentazione alla scheda test Micropic Trainer. Spostando il primo interruttore sul valore 1 il primo case (case b'00000001') sarà vero e quindi si accenderanno i primi 4 led, riportando il primo interruttore in posizione zero e spostando il secondo interruttore sul valore 1 il secondo case (case b'00000010') sarà vero e quindi si accenderanno gli ultimi 4 led, stesso discorso per il terzo interruttore. Se la combinazione dei tasti non rientra nei casi sopra citati sarà eseguita l'istruzione nel select case ovvero (PortB = b'11111111') l'accensione di tutti i diodi led. Con questo costrutto è possibile controllare costantemente un gruppo di sensori ed effettuare delle azioni in base ai loro stadi, vedremo meglio questo costrutto quando parleremo dei sensori meccanici del microrobot Poor più avanti.

LEZIONE 33
LEZIONE 31