PIC
I PIC sono dei circuiti integrati prodotti dalla Microchip Technology Inc., che appartengono alla categoria dei microcontroller, ovvero quei componenti che integrano in un unico dispositivo tutti i circuiti necessari a realizzare un completo sistema digitale programmabile.
Come si può vedere in
figura,

I PIC (in questo caso un
PIC16C84) si presentano esternamente come dei normali circuiti integrati TTL o
CMOS, ma internamente dispongono di tutti dispositivi tipici di un sistema a
microprocessore, ovvero:
La presenza di tutti
questi dispositivi in uno spazio estremamente contenuto, consente al progettista
di avvalersi degli enormi vantaggi derivanti dall'uso di un sistema a
microprocessore, anche in quei circuiti che fino a poco tempo fa erano destinati
ad essere realizzati con circuiterie tradizionali.
I PIC sono
disponibili in un'ampia gamma di modelli per meglio adattarsi alle esigenze di
progetto specifiche, differenziandosi per numero di linee di I/O e per dotazione
di dispositivi. Si parte dai modelli più piccoli identificati dalla sigla
PIC12C5xx dotati di soli 8 pin, fino ad arrivare ai modelli più
grandi con sigla PIC17Cxx dotati di 40 pin.
Il PIC che noi abbiamo
utilizzato è il PIC16F84. Esso è dotato di 18 pin di
cui ben 13 disponibili per l'I/O ovvero per i collegamenti al resto del nostro
circuito.
In particolare il
PIC16F84 dispone di una memoria per contenere il programma di tipo
EEPROM ovvero Electrical Erasable
Programmable Read Only
Memory, che può essere riscritta quante volte vogliamo.
PIC16F84

Il PIC16F84 è
dotato di un totale di 18 pin disposti su due file parallele da
9 pin ciascuna. I pin contrassegnati in BLU rappresentano le linee di I/O
disponibili per le nostre applicazioni, i pin in ROSSO e NERO sono
i pin di alimentazione, i pin in VERDE sono riservati al
funzionamento del PIC (MCLR per il reset e OSC1-2 per il clock).
Nella figura seguente
viene riprodotto lo schema a blocchi semplificato dell'architettura interna del
PIC16F84

Descrizione dei
componenti:
·
EEPROM - Electrical Erasable Programmable Read Only Memory
(memoria a sola lettura programmabile, cancellabile elettricamente) è una
memoria EPROM che può essere cancellata elettricamente senza l'ausilio di
lampade UV. La sua capacità di memorizzazione è di 1024 locazioni
ognuna in grado di contenere un opcode a 14 bit ovvero una
istruzione base del PIC. Gli indirizzi riservati alla EEPROM vanno da
0000H a 03FFH. Il PIC può solamente eseguire le
istruzioni memorizzate in queste locazioni. Non può in alcun modo leggere,
scrivere o cancellare quanto in esse contenuto.
·
Il REGISTER FILE è un'insieme di locazioni di memoria
RAM
denominate REGISTRI.
·
La ALU (acronimo di Arithmetic and
Logic Unit ovvero unità aritmentica e logica)
è la componente più complessa del PIC in quanto contiene tutta la circuiteria
delegata a svolgere le funzioni di calcolo e manipolazione dei dati durante
l'esecuzione di un programma. La ALU è una componente presente
in tutti i microprocessori e da essa dipende direttamente la potenza di calcolo
del microprocessore stesso. La ALU del PIC16F84
è in grado di operare su valori ad 8 bit, ovvero valori
numerici non più grandi di 255.
·
Il registro W denominato anche accumulatore
è una semplice locazione di memoria in grado di contenere un solo valore a 8
bit.
·
PROGRAM COUNTER (dall'inglese contatore di programma)
ha la funzione di mantenere traccia dell'indirizzo che contiene la prossima
istruzione da eseguire.
·
STACK è un registro speciale nel quale il PIC memorizza
l'indirizzo di quella istruzione che sarebbe dovuta essere la successiva
istruzione da eseguire se non si fosse incontrata la CALL.
·
Il PIC16F84 dispone di un totale di 13 linee
di I/O organizzate in due porte denominate PORTA A e
PORTA B. La PORTA A dispone di 5 linee
configurabili sia in ingresso che in uscita identificate dalle sigle RA0, RA1,
RA2, RA3 ed RA4. La PORTA B dispone di 8 linee
anch'esse configurabili sia in ingresso che in uscita identificate dalle sigle
RB0, RB1, RB2, RB3, RB4, RB5, RB6 ed RB7.
Il registro TMR0 è un contatore, ovvero un particolare tipo di registro il cui contenuto viene incrementato con cadenza regolare e programmabile direttamente dall'hardware del PIC. In pratica, a differenza di altri registri, il TMR0 non mantiene inalterato il valore che gli viene memorizzato, ma lo incrementa continuamente.