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.
Aggiunta il link al corso Linux Uno su Udemy.
Aggiunto il tutorial per la realizzazionedi un Arcade con materiale di riciclo.