WebPicSimulator

Un plugin WordPress gratuito e open source che simula microcontrollori PIC16 (PIC16F84A). Progettato per l’insegnamento: programmazione Assembly, simulazione CPU ciclo per ciclo, I/O digitali interattivi, Timer, Interrupt ed EEPROM. Nessun hardware richiesto.


✨ Caratteristiche principali

🔧 CPU PIC16F84A Completa

Emulazione fedele del microcontrollore Microchip:

  • 35 istruzioni mid-range complete
  • Registri: W, STATUS, FSR, OPTION, INTCON, PCL, PCLATH
  • RAM: 68 byte GPR (0x0C-0x4F) + SFR
  • Stack: 8 livelli con visualizzazione
  • Bank switching: Bank 0/1 con RP0

📝 Assembler Integrato

Editor completo con supporto linguaggio Assembly PIC:

  • Direttive: ORG, EQU, CBLOCK/ENDC, END, #INCLUDE, #DEFINE
  • Label: definizione e riferimento automatico
  • Costanti: decimali, esadecimali (0x), binarie (b’)
  • Simboli predefiniti: tutti i registri e bit standard
  • Case-insensitive: scrivi come preferisci
  • Evidenziazione errori: riga per riga con messaggi

⚡ Periferiche Simulate

Hardware interno del PIC completamente funzionante:

  • PORTA: 5 bit I/O (RA0-RA4) con TRISA
  • PORTB: 8 bit I/O (RB0-RB7) con TRISB
  • TMR0: Timer/Counter 8-bit con prescaler 1:2 – 1:256
  • Interrupt: T0IF, INTF (RB0), RBIF (RB4-7), EEIF
  • EEPROM: 64 byte con sequenza scrittura realistica
  • Watchdog: simulato con CLRWDT

🖥️ Interfaccia Didattica

Pensata per l’apprendimento in classe:

  • Editor con numeri di riga e indirizzi
  • Breakpoint: click sui numeri di riga
  • Step-by-step: esecuzione istruzione per istruzione
  • Animate: esecuzione lenta per visualizzare il flusso
  • Visualizzazione registri in tempo reale
  • Pin I/O cliccabili: simula pulsanti e switch
  • Legenda visiva: input/output, high/low
  • Memory viewer: RAM, Program Memory, EEPROM
  • Editing inline: modifica RAM, EEPROM e TRIS al volo

📚 10 Esempi Didattici Inclusi

Programmi pronti all’uso, commentati in italiano:

  • Principiante: Blink LED, Contatore binario, Pulsante e LED
  • Intermedio: Knight Rider, Tabella Lookup, Subroutine, Macchina a stati
  • Avanzato: Timer0 Interrupt, Interrupt esterno, EEPROM read/write

🖼️ Doppia Modalità Visualizzazione

  • Normale: compatta, integrata nella pagina WordPress
  • Fullscreen: toolbar espansa, massimo spazio di lavoro

💰 Quanto costa?

VoceCosto
PluginGratuito (GPL v2)
Tutte le funzionalitàGratuite
Hardware richiestoNessuno
Esempi inclusi10 programmi

🚀 Installazione

  1. Scarica il file ZIP
  2. WordPress Admin → Plugin → Aggiungi nuovo → Carica plugin
  3. Attiva il plugin
  4. Inserisci lo shortcode
    1K / 68B / 2 ports
    1 kHz
    Ready
    | Cycles: 0 | -
    in una pagina
  5. Pubblica e inizia a programmare!

📋 Requisiti

  • WordPress 5.0 o superiore
  • PHP 7.4 o superiore
  • Browser moderno (Chrome, Firefox, Edge, Safari)
  • JavaScript abilitato

🎯 Per chi è pensato

  • Studenti ITIS/ITS: imparano i microcontrollori senza laboratorio hardware
  • Docenti: dimostrano concetti di architettura e Assembly in classe
  • Maker e hobbisti: sperimentano con la programmazione PIC
  • Autodidatti: studiano i microcontrollori da casa

📖 Guida rapida

Scrivere un programma

  1. Scrivi il codice nell’editor a sinistra
  2. Clicca “Assembla” per compilare
  3. Clicca “Run” per eseguire a velocità massima
  4. Oppure “Animate” per vedere l’esecuzione passo-passo
  5. Usa “Step” per avanzare una istruzione alla volta

Struttura base di un programma

; Definizioni
PORTB   EQU 0x06
TRISB   EQU 0x86
STATUS  EQU 0x03
RP0     EQU 5

    ORG 0x000       ; Indirizzo di partenza

MAIN:
    BSF STATUS, RP0 ; Bank 1
    CLRF TRISB      ; PORTB come output
    BCF STATUS, RP0 ; Bank 0
    
LOOP:
    BSF PORTB, 0    ; Accendi LED su RB0
    BCF PORTB, 0    ; Spegni LED
    GOTO LOOP       ; Ripeti

    END

Interagire con i pin I/O

  • Pin INPUT (bordo giallo): clicca per toggle HIGH/LOW
  • Pin OUTPUT (bordo verde): mostra lo stato del programma
  • Sfondo verde = HIGH (1), scuro = LOW (0)
  • Clicca su TRIS per cambiare direzione dei pin

Usare i breakpoint

  1. Click sul numero di riga per aggiungere un breakpoint
  2. La riga diventa rossa
  3. In modalità Run o Animate, si ferma al breakpoint
  4. Click di nuovo per rimuovere

Modificare la memoria

  • Tab RAM: clicca su una cella per editare il valore
  • Tab EEPROM: stessa cosa, valori persistenti
  • Inserisci valore in esadecimale (00-FF)
  • Premi Enter per confermare, Esc per annullare

⌨️ Scorciatoie da tastiera

TastoAzione
Ctrl+NNuovo programma
Ctrl+OApri file .asm
Ctrl+SSalva file .asm
Ctrl+EnterAssembla
F5Run / Stop
F6Animate
F8Step (singola istruzione)
F10Step Over (salta CALL)
F11Schermo intero
EscStop simulazione

🔧 Set di istruzioni PIC16

Byte-Oriented (registro)

IstruzioneDescrizioneFlag
ADDWF f,dAdd W and fC, DC, Z
ANDWF f,dAND W with fZ
CLRF fClear fZ
COMF f,dComplement fZ
DECF f,dDecrement fZ
DECFSZ f,dDecrement, skip if zero
INCF f,dIncrement fZ
INCFSZ f,dIncrement, skip if zero
IORWF f,dInclusive OR W with fZ
MOVF f,dMove fZ
MOVWF fMove W to f
RLF f,dRotate left through CarryC
RRF f,dRotate right through CarryC
SUBWF f,dSubtract W from fC, DC, Z
SWAPF f,dSwap nibbles
XORWF f,dExclusive OR W with fZ

Bit-Oriented

IstruzioneDescrizione
BCF f,bBit Clear f
BSF f,bBit Set f
BTFSC f,bBit Test, skip if clear
BTFSS f,bBit Test, skip if set

Literal e Control

IstruzioneDescrizioneFlag
ADDLW kAdd literal to WC, DC, Z
ANDLW kAND literal with WZ
CALL kCall subroutine
CLRWClear WZ
CLRWDTClear Watchdog TimerTO, PD
GOTO kGo to address
IORLW kInclusive OR literal with WZ
MOVLW kMove literal to W
RETFIEReturn from interrupt
RETLW kReturn with literal in W
RETURNReturn from subroutine
SLEEPGo into standby modeTO, PD
SUBLW kSubtract W from literalC, DC, Z
XORLW kExclusive OR literal with WZ
NOPNo operation

📊 Mappa registri PIC16F84A

IndirizzoBank 0Bank 1
00h / 80hINDFINDF
01h / 81hTMR0OPTION_REG
02h / 82hPCLPCL
03h / 83hSTATUSSTATUS
04h / 84hFSRFSR
05h / 85hPORTATRISA
06h / 86hPORTBTRISB
08h / 88hEEDATAEECON1
09h / 89hEEADREECON2
0Ah / 8AhPCLATHPCLATH
0Bh / 8BhINTCONINTCON
0Ch-4FhGPR (68 byte RAM utente)

⚠️ Limitazioni

Questo è un simulatore didattico, non un ambiente di sviluppo professionale:

  • Non sostituisce MPLAB X per progetti reali
  • Non genera file .HEX scaricabili su PIC fisici
  • Solo PIC16F84A (altri modelli in futuro)
  • Timing approssimato (non cycle-accurate al nanosecondo)
  • EEPROM non persistente tra sessioni browser

📝 Licenza

WebPicSimulator è rilasciato con licenza GPL v2 o successiva.

È libero di essere utilizzato, modificato e distribuito da qualsiasi istituzione educativa.

Disclaimer: Questo progetto non è affiliato, sponsorizzato o approvato da Microchip Technology Inc. “PIC” e “MPLAB” sono marchi registrati di Microchip Technology Inc.


👨‍💻 Autore

Davide “the Prof.” Bertolino

🌐 www.davidebertolino.it
✉️ info@davidebertolino.it


Hai suggerimenti o hai trovato un bug? Contattami!

Other Plugins

DB Form Builder

Plugin WordPress per creare form personalizzati con drag & drop, reCAPTCHA, email automatiche e export CSV. Un form builder completo…

FANUC ER-4iA Simulator

Un plugin WordPress gratuito e open source che simula un robot industriale FANUC ER-4iA a 6 assi. Progettato per l’insegnamento:…