Skip to content

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

v1.3.0

DB Privacy Hub

Open Source — GPL v2 DB Privacy Hub Hub privacy unificato per l’ecosistema plugin DB. Genera la Privacy Policy che…

v1.3.0

DB SEO Manager

Open Source — GPL v2 DB SEO Manager SEO completa per WordPress, costruita prima di tutto per il GDPR. Niente…

v3.0.3

DB Site Analytics

DB Site Analytics Tracciamento visite server-side: nessun cookie, nessun servizio esterno, solo visite reali. I dati restano nel tuo database.…