vuoi
o PayPal
tutte le volte che vuoi
Cosa sono i PIC?
Un microcontrollore è un dispositivo elettronico che opportunamente programmato è
in grado di svolgere diverse funzioni in modo autonomo. Essenzialmente gestisce delle
linee di input e di output in relazione al programma in esso implementato. Esistono
diverse famiglie di dispositivi in grado di svolgere queste funzioni come ad esempio lo
Z80, ST6 e il più evoluto 8088; in questa sezione ci occuperemo dei più semplici
dispositivi oggi in commercio, i PIC prodotti e distribuiti dalla Microchip.
Questi dispositivi implementano al loro interno un vero e proprio microprocessore
completo di CPU, RAM, Timer e numerose linee di IN/OUT. A differenza dei
microprocessori più evoluti nei PIC il programma è contenuto all'interno in un'apposita
area di memoria (non volatile) e viene eseguito ciclicamente, anche la RAM per i dati
volatili è all'interno dello stesso dispositivo, alcuni dispongono di aree dati non volatili
e riscrivibili (EPROM). Lo stadio di IN/OUT è già implementato all'interno ed alcuni
dispongono già di interfacce per segnali analogici, per comparatori o per
comunicazioni seriali.
I microcontrollori PIC dispongono di un numero ridotto di istruzioni e quindi sono dei
dispositivi di tipo RISC e si programmano in assembly ovvero in codice macchina.
In commercio si trovano diversi modelli di PIC a seconda della complessità e delle
funzioni implementate, alcuni dispositivi si differenziano anche per la quantità di
memoria disponibile e per la quantità di Timer a disposizione. Per le nostre applicazioni
è sufficiente un modello base come ad esempio il PIC 16F84A ma va benissimo anche
un 16F84 oppure un 16C84. Le versioni con memoria Flash sono programmabili più
volte (e quindi idonei alla sperimentazione) mentre le versioni OTP (One Time
Programmable) si programmano una sola volta. Le versioni UV sono riprogrammabili
dopo la cancellatura con raggi ultravioletti.
Cosa serve per iniziare?
Fondamentalmente il modo di procedere è uguale per tutti i PIC e si suddivide in una
parte di programmazione e in una parte di utilizzo all'interno del circuito elettronico
scelto come di seguito descritto:
1) Stesura del programma tramite un editor di testo qualsiasi anche se io consiglio il
banalissimo WordPad di Windows in quanto il file deve contenere solo testo e nessuna
formattazione e si avrà cura quindi di salvarlo in modalità "solo testo".
2) Compilazione tramite un compilatore che ha il compito di trasformare le istruzioni
mnemoniche (cioè fatte di parole) in codice direttamente eseguibile dalla CPU del
microcontrollore. Lavorando con i prodotti sul sito è possibile scaricare il
Microchip
compilatore distribuito gratuitamente. Questo programma permette solo di
MPASM
compilare il vostro programma ma non permette la simulazione per verificare se
effettivamente funziona. In questo caso è necessario scrivere prima il programma con
un editor di test (anche wordPad di windows va benissimo) quindi rinominarlo con
estensione .ASM e poi compilarlo tramite MPASM per ottenere il file di estensione .HEX.
Sempre sul sito della microchip è possibile scaricare che è un ambiente
MPLAB-IDE
integrato e permette l'editing del file ASM, la compilazione, la simulazione e
(disponendo del programmatore Microchip!) anche la programmazione del dispositivo .
- 2 -
A cura di Vito Giachetti Esame di Stato 2007
3) La programmazione del PIC avviene tramite un apposito circuito elettronico
(programmatore) sul quale viene inserito il microcontrollore e che viene interfacciato
al PC tramite porta seriale o parallela. Nel mio sito è disponibile tutta la
documentazione necessaria per realizzare un semplicissimo I PIC
programmatore.
sopportano la programmazione InCircuit ovvero la programmazione direttamente sul
circuito elettronico di funzionamento. In questo modo si evita di dover ogni volta
togliere il PIC dal circuito di lavoro per inserirlo nel programmatore.
4) Per poter inviare il programma al PIC (tramite il programmatore) occorre un
apposito software in grado di gestire i segnali di comunicazione tra PC e
programmatore leggendo il file generato dal compilatore. Il programma idoneo a
questo scopo è di pubblico dominio e si chiama ICPROG.
5) A questo punto vi serve un microcontrollore PIC, per iniziare va benissimo un
ma va bene anche un 16F84 oppure un 16C84 che con una spesa ci circa 6
16F84A,
Euro rappresenta l'entry level della produzione microchip.
Un programma passo-passo
Per poter scrivere un programma, abbiamo bisogno del software MPASM della
Microchip per la compilazione e un normale editor di testo per scrivere il programma.
Si scrive il programma con un editor di testo come WordPad, supponiamo di voler
realizzare un programma che attivi dei led in corrispondenza a dei pulsanti premuti.
Per la precisione il led si accende se il corrispondente pulsante è stato premuto.
Il nostro primo programma:
;led.asm
;attiva un led corrispondente all'attivazione di un pulsante
Dopo il ";" è possibile inserire dei commenti a piacimento.
LIST P=16F84A
Questa istruzione specifica al compilatore quale PIC verrà usato.
ORG 0
Questa istruzione specifica la locazione di memoria dalla quale inizierà l'elaborazione
del programma, nel nostro caso la prima "0".
MOVLW 0FFH
Questa istruzione pone il valore FF (in binario 11111111) esadecimale
nell'accumulatore.
TRIS 06H
Questa istruzione pone il valore dell'accumulatore nel registro di configurazione delle
porte, nel nostro caso il valore FFH (cioè tutti uno) viene posto all'indirizzo 6 quello
della porta A (da RA0 a RA4) definendola come porta di ingresso.
MOVLW 00H - 3 -
A cura di Vito Giachetti Esame di Stato 2007
Questa istruzione pone il valore 00 (in binario 00000000) esadecimale
nell'accumulatore.
TRIS 05H
Questa istruzione pone il valore dell'accumulatore nel registro di configurazione delle
porte, nel nostro caso il valore 00H (cioè tutti zero) viene posto all'indirizzo 5 quello
della porta B (da RB0 a RB7) definendola come porta di uscita.
RIPETI
MOVF 06H,0
Questa istruzione pone il valore letto all'indirizzo 6 (corrispondente a PORTB)
sull'accumulatore (W).
MOVWF 05H
Questa istruzione pone il valore dell'accumulatore all'indirizzo 5 corrispondente alle
uscite (PORTA).
GOTO RIPETI
Questa istruzione chiude il ciclo ovvero fa riprendere l'istruzione RIPETI in modo che il
programma elabori ciclicamente queste ultime tre istruzioni.
END
Istruzione di fine programma.
A questo punto si salva il file chiamandolo led, esso sarà salvato come led.txt che poi
andrà rinominato in led.asm; per poter modificare l'estensione di un file occorre
visualizzare correttamente la sua estensione agendo sul menu di visualizzazione della
cartella in cui si trova (procedura diversa a seconda del sistema operativo usato).
La compilazione
A questo punto si avvia il software MPASM e con il comando Apri File possiamo aprire
proprio led.asm.
Cliccate su assembla e verranno generati sulla stessa directory del file led.asm alcuni
file di cui led.err è un file con l'elenco degli errori riscontrati in compilazione e il file
led.hex è il file in codice macchina necessario per programmare il PIC.
Struttura Hardware del PIC 16F84 - 4 -
A cura di Vito Giachetti Esame di Stato 2007