Riferimenti al linguaggio Microbe

if

Diramazione condizionale. Sintassi:

if [espressione] then [istruzione]

o

if [espressione] then
{
        [blocco di istruzioni]
}

Lo stesso per else:

else [istruzione]

oppure

else
{
        [blocco di istruzioni]
}

Esempio 5.2. if

if porta.0 is high then
{
        delay 200
}
else
{
        delay 300
}

alias

Chiama una stringa in un altro modo. Sintassi:

alias [da] [a]

repeat

Esegue ripetutamente il blocco di istruzioni finché l'espressione viene valutata come vera (true). Questa valutazione viene eseguita prima del blocco di istruzioni, quindi questo sarà sempre eseguito almeno una volta. Sintassi:

repeat
{
        [blocco di istruzioni]
}
until [espressione]

while

Simile a repeat, esegue ripetutamente il blocco di istruzioni. Tuttavia l'espressione viene valutata prima dell'esecuzione, non dopo. Quindi, se questa viene valutata come falsa (false) al primo passaggio, il blocco di istruzioni non viene proprio eseguito. Sintassi:

while [espressione]
{
        [blocco di istruzioni]
}

goto

Provoca l'esecuzione del codice dopo l'etichetta specificata e prosegue all'istruzione successiva. Sintassi del goto:

goto [nomeetichetta]

. Sintassi dell'etichetta:

labelname:

. Viene spesso considerata una buona pratica quella di evitare l'uso del goto: l'utilizzo di istruzioni di controllo e di subroutine farà infatti sì che il programma risulti molto più leggibile.

Esempio 5.3. goto

goto MiaEtichetta

...

[MiaEtichetta]:
// il codice continuerà in questo punto

call

Chiama una subroutine. Sintassi:

call [NomeSub]

, dove NomeSub è il nome della subroutine da chiamare.

delay

Fa sì che l'esecuzione del codice si fermi per un certo periodo di tempo. L'intervallo è in millisecondi. Sintassi:

delay [intervallo]

Nota

Al momento Microbe presume che il PIC stia operando alla frequenza di 4MHz, cioè che ciascuna istruzione impieghi 1 microsecondo per essere eseguita. Se non fosse questo il caso è necessario regolare opportunamente l'intervallo.

sevenseg

Viene usato per definire la mappatura dei piedini di un display a sette segmenti (a catodo comune) che è connesso al PIC. Sintassi:

sevenseg [nome] [a] [b] [c] [d] [e] [f] [g]

, dove [a]...[g] sono i piedini del PIC ai quali sono collegati i rispettivi segmenti del display a sette segmenti. I piedini possono essere scritti anche come PORTX.N o RXN.

Per visualizzare un numero sui sette segmenti la mappatura dei piedini viene considerata come una variabile a sola scrittura.

Esempio 5.4. Definizione su un sette segmenti e scrittura

sevenseg seg1 RB0 RB1 RB2 RB3 RB4 RB5 RB6
seg1 = x + 2


keypad

Viene usato per definire la mappatura dei piedini di un tastierino connesso al PIC. Sintassi:

keypad [nome] [riga 1] ... [riga 4] [colonna 1] ... [colonna n]

, dove [riga 1] ... [riga 4] e [colonna 1] ... [colonna n] sono i piedini del PIC ai quali sono collegate le rispettive righe e colonne del tastierino (al momento il numero delle righe non è modificabile). Vedi la sezione chiamata «sevenseg» (sopra) per ulteriori informazioni sulla mappatura dei piedini.

Le colonne del tastierino devono essere collegate a terra tramite una resistenza da 100k. I piedini delle righe devono essere configurati come uscite, mentre quelli delle colonne come ingressi. Una volta che viene definito il tastierino, questo sarà trattato come una variabile a sola lettura.

Esempio 5.5. Definizione di un tastierino e lettura

keypad keypad1 RB0 RB1 RB2 RB3 RB4 RB5 RB6
x = keypad1


I valori predefiniti restituiti dal tastierino sono:

  • Il valore del numero se è un tasto numerico (da 1 a 3 nella riga in alto; da A a D esadecimali nella quarta colonna, e così via per ogni colonna aggiuntiva).

  • 253 per il tasto nella riga 4, colonna 1.

  • 254 per il tasto nella riga 4, colonna 3.

Questi valori possono essere ridefiniti usando i comandi di alias, dove il nome del tasto alla riga x, colonna y (le righe e le colonne iniziano da 1) è Keypad_x_y. Per esempio, per dare al tasto con l'asterisco di un tastierino 4x3 il valore zero possono essere usati i seguenti alias:

Esempio 5.6. Assegnazione di un valore al tasto di un tastierino

alias Keypad_4_1 0