LEZIONE 28

DO WHILE


In questo caso il ciclo DO WHILE è stato utilizzato come un ciclo FOR ovvero, sapevamo quante volte doveva ripetere il ciclo (100), ma di solito il ciclo DO WHILE viene utilizzato per controllare se un interruttore è stato premuto o se una variabile è stata settata. L'esempio successivo controlla lo stato del primo interruttore del Microchip Trainer, se è attivo esegue il ciclo altrimenti non lo esegue.

#CHIP 16f84, 4          'Tipo di PIC e frequenza
Dir PortA IN          'Istruzioni viste più avanti
Dir PortB OUT          'Istruzioni viste più avanti
DIM Contatore as BYTE          'Variabile contatore
Contatore = 0          'Inizializzazione della variabile
DO WHILE PortA.0 = 1          'Ciclo con la condizione
PORTB = Contatore          'Visualizza la variabile sulla porta B
Contatore = Contatore +1          'Incrementa il contatore
wait 2 sec          'Attende un ritardo di 2 secondi circa
LOOP          'Fine ciclo
END          'Fine del programma


Spostate il primo interruttore sullo stato logico 1 ed alimentate il PIC, il programma inizia a funzionare, spostando l'interruttore su 0 la condizione del ciclo non è più vera e quindi si ferma. Attenzione se spostate di nuovo l'interruttore su 1 il ciclo NON rinizia perchè ormai il programma è arrivato all'istruzione END e quindi è terminato. LA condizione può essere formata da numero, variabili o porte come abbiamo visto per il costrutto IF, per chiarezza vi riporto qualche esempio


DO WHILE Valore = 0          'Valore uguale a zero

DO WHILE Valore = Numero          'Valore uguale a Numero

DO WHILE Valore > 0          'Valore maggiore di 0

DO WHILE Valore > Numero          'Valore maggiore di numero

DO WHILEValore < 10          'Valore minore di 10

DO WHILE Valore <> 0          'Valore differente da zero

DO WHILE Valore <= Numero          'Valore maggiore o uguale a Numero

DO WHILE Valore >=Numero          'Valore minore o uguale a Numero


L'istruzione PortA.0 serve a controllare lo stato del pulsante e verrà approfondita più avanti.

LEZIONE 29
LEZIONE 27