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