Lezione 00
🎓 PIC16 — From Zero to Hero · Lezione 00
Benvenuto nel Simulatore 👋
Il tuo laboratorio virtuale per imparare i microcontrollori PIC16
senza hardware fisico — direttamente dal browser.
🎯 Cosa impari in questa lezione
- Come è organizzata l’interfaccia del simulatore
- Come caricare ed eseguire il tuo primo programma
- Cosa fanno i pulsanti Run, Step e Reset
- Come leggere i registri e le porte I/O in tempo reale
📋 Scheda lezione
| Modulo | 0 — Il Laboratorio |
| Lezione | 00 di 42 |
| Livello | ⭐ Assoluto principiante |
| Tempo | ~20 minuti |
| Device | PIC16F84A |
🔬 Il Simulatore — Tour dell’interfaccia
Quando apri il WebPicSimulator trovi tutto quello che ti serve per scrivere, assemblare ed eseguire programmi per microcontrollori PIC16. Niente da installare, niente da collegare: funziona interamente nel browser.
L’interfaccia è divisa in tre zone principali:
① Editor di codice
La zona sinistra/centrale dove scrivi il codice Assembly. Supporta syntax highlighting, numeri di riga e la riga corrente evidenziata durante l’esecuzione.
② Pannello registri
Mostra in tempo reale il valore del registro W, del Program Counter (PC), dei flag di STATUS e di tutti i registri speciali (SFR).
③ Porte I/O e memoria
Visualizza lo stato dei pin di PORTA e PORTB, la memoria RAM con i valori aggiornati e l’eventuale contenuto EEPROM.
▶️ I controlli di esecuzione
In cima all’interfaccia trovi la barra dei controlli. Sono solo tre pulsanti, ma sono tutto ciò che ti serve per pilotare l’esecuzione del programma:
🟢 RUN
Esegue il programma in continuo, istruzione dopo istruzione, alla velocità impostata. Premi di nuovo per metterlo in pausa. Ideale per vedere il comportamento complessivo.
🔵 STEP
Esegue una sola istruzione per click. Ogni volta che premi, il PC avanza di uno. Fondamentale per capire cosa fa ogni singola istruzione Assembly.
🔴 RESET
Riporta la CPU allo stato iniziale: PC = 0, W = 0, tutti i registri ai valori di power-on. Il codice resta caricato, puoi eseguire da capo immediatamente.
💻 Il tuo primo programma
Copiamo il codice qui sotto nell’editor e lo eseguiamo passo-passo. Non preoccuparti se non capisci ogni parola — capiremo tutto nelle prossime lezioni. Per ora osserva cosa cambia ad ogni Step.
; ============================================
; Lezione 00 — Primo programma
; WebPicSimulator · Prof. D.Bertolino
; ============================================
; Include le definizioni del PIC16F84A
LIST p=16F84A
#include <p16f84a.inc>
; Definisco una variabile in RAM (bank 0, da 0x0C)
CONTATORE EQU 0x0C
; Il programma parte sempre da indirizzo 0
ORG 0x00
; Carico il valore 5 nel registro W
MOVLW 0x05
; Copio W nella variabile CONTATORE
MOVWF CONTATORE
; Aggiungo 3 a W
ADDLW 0x03
; Copio il risultato in CONTATORE
MOVWF CONTATORE
; Loop infinito (il programma non si ferma mai)
FINE
GOTO FINE
END
👣 Eseguilo passo-passo
Incolla il codice nell’editor, poi premi Step cinque volte di fila. Ad ogni click osserva:
- Quale riga è evidenziata nell’editor (→ istruzione corrente)
- Il valore del registro W nel pannello a destra
- Il valore di CONTATORE (indirizzo 0x0C) nella mappa RAM
- Il valore del PC (Program Counter)
Dopo MOVLW 0x05 vedrai W = 05. Dopo ADDLW 0x03 vedrai W = 08. La RAM all’indirizzo 0x0C cambierà di conseguenza. Tutto in tempo reale, senza hardware fisico.
🧠 Concetti chiave di questa lezione
🗄️
Registro W
Il Working register: il registro principale della CPU. Tutte le operazioni passano quasi sempre da W. È come la “mano” del microcontrollore.
📍
Program Counter (PC)
Il contatore che indica quale istruzione viene eseguita. Parte da 0 e avanza di 1 ad ogni istruzione. Con GOTO può saltare a qualsiasi indirizzo.
🔁
Loop infinito
Un microcontrollore non “finisce” mai: deve girare in loop continuo. Il pattern LABEL: GOTO LABEL è il modo più semplice per tenerlo occupato.
🏋️ Prova tu!
Modifica il programma e rispondi a queste domande usando il simulatore:
- Cambia
MOVLW 0x05inMOVLW 0xFF. Che valore trovi in W? Quanti bit occupa? - Aggiungi
ADDLW 0x01dopo l’ultimoMOVWF. Cosa succede al valore di W? Guarda il flag C nel registro STATUS. - Sostituisci
ADDLW 0x03conSUBLW 0x01. Che valore ottieni? (Ricorda: èSUBLW k → W = k - W)
💡 Suggerimento: usa sempre Step (non Run) per osservare i cambiamenti un’istruzione alla volta.
❓ Quiz rapido
Rispondi senza guardare il codice:
1. Che valore ha W dopo MOVLW 0x0A seguito da ADDLW 0x06?
Mostra risposta
W = 0x10 (16 in decimale). 0x0A + 0x06 = 0x10.
2. Cosa fa il pulsante Reset al Program Counter?
Mostra risposta
Lo riporta a 0. La CPU riparte dall’istruzione all’indirizzo 0x0000.
3. Perché il programma termina con GOTO FINE invece di fermarsi?
Mostra risposta
Perché un microcontrollore non si “spegne” da solo. Senza un loop finale, il PC continuerebbe ad avanzare eseguendo istruzioni casuali dalla memoria vuota.
Prossima lezione →
Lezione 01 — Come funziona un microcontrollore
Architettura Harvard, CPU, memoria programma e dati, bus I/O.
Senza ancora scrivere codice: solo concetti, con tante figure.
© Prof. D. Bertolino · PIC16 From Zero to Hero · WebPicSimulator · Lezione 00