INTRODUZIONE AI PICmicro
I Pic micro sono dei
Circuiti Integrati della
famiglia dei
microcontrollori prodotti
dalla MICROCHIP
TECHNOLOGY INC.
MICROCONTROLLORE
 Legge
segnali ai suoi ingressi
(sensori,pulsanti,…etc.)
 Processa,eleabora
 Pilota
tali segnali (dati)
dispositivi collegati alle sue
uscite (led,display,lcd,motori,..etc.)
PIC16F84
 E’
il microcontrollore di cui ci
occuperemo.
 Si
presenta in un package DIP
a 18 pin.
PIC1684

Si presenta come
in fig.
DISPOSITIVI INTERNI AD UN MICRO

CPU (Central Processor Unit)

EEPROM (Electrical Erase Programmable Read Only
unità centrale di
elaborazione,interpreta le istruzioni del programma
Memory)memoria programmabile a solo lettura,è il luogo
ove viene memorizzato il programma.

LINEE I/O,

RAM (Random Access Memory)

CLOCK, BUS, CONTATORI (TIMER),..etc.
linee di ingresso e di uscita,per pilotare
disp. Esterni o ricevere segnali da sensori,pulsanti,..etc.
ovvero memoria ad
accesso casuale.Utilizzata per memorizz. Le variabili del
programma.
PIEDINATURA DEL PIC16F84
Descrizione dei pin del PIC16F84
1.
RA2
2.
RA3
3.
RA4 / RTCC
è una linea di I/O programmabile in ingresso o in
uscita. CORRISPONDE AL BIT 2 DELLA PORTA A.
è una linea di I/O programmabile in ingresso o in
uscita. CORRISPONDE AL BIT 3 DELLA PORTA A.
è un pin multifunzione che può
essere programm. Come normale linea di I/O oppure
come linea di clock in ingresso verso il contatore TMR0
se programm. Come linea I/O corrisponde al bit 4 della
porta A.Diversamente dalle altre linee di I/O,quando
funziona come uscita ,lavora a collettore aperto.
4.
MCLR/VPP
5.
VSS
6.
RB0
7.
RB1
8.
RB2
In condizioni di normale
funzionamento svolge le funzioni di Master Clear ovvero
di RESET ed è attivo a livello 0.Quando il PIC deve essere
programmato viene usato come ingressso per la tensione
di programmazione VPP.
è il pin a cui va collegato il negativo della
tensione di alimentazione (massa).
è una linea di I/O programmabile in ingresso o
uscita dall’utente.Corrisponde al BIT 0 DELLA PORTA B.
è una linea di I/O programmabile in ingresso o
uscita dall’utente.Corrisponde al BIT 1 DELLA PORTA B.
è una linea di I/O programmabile in ingresso o
uscita dall’utente.Corrisponde al BIT 2 DELLA PORTA B.
9.
RB3
10.
RB4
11.
RB5
12.
RB6
13.
RB7
14.
VDD è il terminale positivo dell’alimentazione (+5V)
OSC2/CLKOUT è un pin di connessione nel caso
15.
è una linea di I/O programmabile in ingresso o
uscita dall’utente.Corrisponde al BIT 3 DELLA PORTA B.
è una linea di I/O programmabile in ingresso o
uscita dall’utente.Corrisponde al BIT 4 DELLA PORTA B.
è una linea di I/O programmabile in ingresso o
uscita dall’utente.Corrisponde al BIT 5 DELLA PORTA B.
è una linea di I/O programmabile in ingresso o
uscita dall’utente.Corrisponde al BIT 6 DELLA PORTA B.
è una linea di I/O programmabile in ingresso o
uscita dall’utente.Corrisponde al BIT 7 DELLA PORTA B.
venga utilizzato un quarzo per generare il clock.E’ l’uscita
del clock nel caso venga applicato un oscillatore RC o un
oscill. Esterno.
16.
OSC1/CLKIN
17.
RA0
18.
RA1
è un pin di connessione nel caso
venga utilizzato un quarzo o un circuito RC per generare il
clock.E’ l’ingresso del clock nel caso venga utilizzato un
oscillatore esterno.
è una linea di I/O programmabile in ingresso o
uscita dall’utente.Corrisponde al BIT 0 DELLA PORTA A.
è una linea di I/O programmabile in ingresso o
uscita dall’utente.Corrisponde al BIT 1 DELLA PORTA A.
ARCHITETTURA INTERNA DI UN PIC16F84
LA ALU
 La
ALU ovvero unità aritmetica e
logica
 è la componente più complessa del
pic in quanto contiene tutta la
circuteria che svolge le funzioni di
calcolo.
 La ALU è presente in tutti i
microprocessori e da essa dipende
direttamente la potenza di calcolo.
LA PROGRAM MEMORY
E’ una memoria di tipo EEPROM,ed
utilizzata dal pic per tenere memorizzato il
programma da esguire.
 La sua capacità di memorizzazione è di
1024 locazioni ,ognuna in grado di
contenere un opcode di 14 bit.
 Il programma più complesso che potremo
realizzare non potrà essere più lungo di
1024 istruzioni.

MEMORIA RAM DEL PIC16F84


Le prime 12 locazioni della pagina 0 (da 00H a
0BH) e della pagina 1 (da 80H a 8BH) sono
riservate ai registri speciali usati per il
funzionamento del pic e non possono essere usati
per altri scopi.
Le 68 locazioni in pagina 0 indirizzate da 0CH a
4FH possono essere utilizzate liberamente dai
nostri programmi per memorizzare
variabili,contatori,ecc..
MAPPATURA DELLA RAM DEL PIC16F84
-Registri con funzioni speciali--
00h
Indirect address
indirect address
80h
01h
TMR0
OPTION
81h
02H
PCL
PCL
82h
03h
STATUS
STATUS
83h
04h
FSR
FSR
84h
05h
PORTA
TRISA
85h
06h
PORTB
TRISB
86h
07h
87h
08h
EEDATA
EECON
88h
09h
EEADR
EECON
89h
0Ah
PCLATH
PCLATH
8Ah
0Bh
INTCON
INTCON
8Bh
0Ch
REGISTRI DI USO
MAPPATO IN PAG. 0
8Ch
GENERALE
4Fh
CFh
50h
D0h
7Fh
FFh
Bank 0
Bank 1
IL REGISTER FILE
 E’
un insieme di locazioni di memoria
RAM, ove è possibile leggere e
modificare il contenuto, senza
l’ausilio di programmatori esterni e
direttamente dal programma in
esecuzione sul PICmicro.
L’ACCUMULATORE O REGISTRO W
 E’
direttamente connesso alla ALU.
 E’
una locazione di memoria ad 8 bit
 E’
utilizzato spessissimo nei
programmi per PIC.
Le porte A e B
Il pic16F84 dispone 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 ingressi che in uscite,indicate con
RA0,RA1,RA2,RA3 ed RA4.

 La
porta B dispone di 8 linee
configurabili sia come ingressi che
come uscite,identificate con
RB0,RB1,RB2,RB3,RB4,RB5,RB6 ed
RB7.
REGISTRI PER LA GESTIONE DELLE
PORTE


Per la gestione delle linee di I/O da programma,il
pic dispone di due registri interni per ogni porta
denominati TRISA e PORTA per la porta A e
TRISB e PORTB per la porta B.
I registri TRISA e TRISB,determinano il
funzionamento in ingresso o in uscita di ogni
singola linea,i registri PORTA e PORTB
determinano lo stato delle linee in uscita o
riportano lo stato delle linee in ingresso.
 Ognuno
dei bit contenuti nei registri
menzionati corrisponde
univocamente ad una linea di I/O.
Ad esempio il bit 0 del registro PORTA
e del registro TRISA corrispondono
alla linea RA0,il bit 1 alla linea RA1 e
cosi via.Questi se posti a 1
configurano la linea corrispondente
come ingresso,se posti a 0
configurano la corrispondente linea
come uscita.
Schema delle linee RA0,RA1,RA2 e RA3
Schema della linea RA4
Schema delle linee RB0,RB1,RB2,RB3
Schema delle linee RB4.RB5,RB6,RB7
LINGUAGGIO ASSEMBLER
 Ogni
istruzione è rappresentata da
un codice operativo (opcode)
composto da 14 bit.
 Viene memorizzata in una locazione
di memoria programma.
 Esempio di opcode:
00 0001 0000 0000 (rappr. Binaria)
0x100
(rappr. Esadec)
 Questi
codici,privi di significato per
un essere umano,sono gli unici che il
pic è in grado di capire.
 Per convenzione si associa,ad ogni
opcode,una breve sigla mnemonica
che aiuta a ricordare la funzione
svolta da ogni istruzione.
 L’opcode 0x100 di prima effettua
l’azzeramento de registro W che in
inglese viene indicato con la frase
CLEAR W REGISTER,che abbreviata
diventa CLRW
 Altre
sigle mnemoniche definiscono
tutte le istruzioni che il PICmicro è in
grado di eseguire
 L’insieme
di queste sigle e le regole
per ordinarle per formare un
programma completo viene chiamato
LINGUAGGIO ASSEMBLER.

1.
2.

Per scrivere un programma in
assembler occorre:
conoscere le istruzioni,per il pic che
si vuole usare
Disporre di un elaboratore di testo
con cui scrivere il programma.
Il file di testo ottenuto si chiama
source o sorgente assember.
L’ASSEMBLATORE
 E’
un programma che traduce il
nostro sorgente assembler nella
giusta sequenza di istruzioni in
formato binario che il pic è in grado
di capire.
SCHEMA DI FLUSSO DELLE OPERAZIONI E DEI FILE GENERATI
NECESSARI PER OTTENERE UN PICmicro PROGRAMMATO





La prima operazione la scrittura del sorgente
assembler e la sua memorizzazione in un file di
testo con l’estensione .ASM
Durante la compilazione ,l’assemblatore genera
una serie di file con il nome identico al source,ma
con estensione diversa.
.HEX è il file contenente gli opcode da inserire
all’interno del pic.
.LST è un file di testo in cui è riportato l’intero
source assembler e la corrispondente traduzione
in opcode.
.ERR contiene la lista degli errori di compilazione
riscontrati ed il numero di linea all’interno del
source assembler in cui sono stati rilevati.
Primo programma in assembler
PROCESSOR
RADIX
INCLUDE
LED
EQU
16F84
DEC
“P16F84.INC”
0
ORG
0CH
COUNT
RES 2
ORG
00H
Bsf STATUS,RP0
Movlw 00011111B
Movwf TRISA
Movlw B’11111110’
Movwf TRISB
Bcf STATUS,RP0
Bsf PORTB,LED
mainLoop
Call Delay
btfsc
Goto
bsf
goto
PORTB,LED
setTozero
PORTB,LED
MainLoop
SetTozero
bcf PORTB,LED
goto MainLoop
Delay
clrf Count
clrf Count+1
DelayLoop
decfsz Count,1
goto DelayLoop
decfsz Count+1,1
goto DelayLoop
retlw 0
END
IL CONTATORE TMR0 ED IL PRESCALER
 Il
registro TMR0 è un contatore.
 Esso viene incrementato ogni 4 cicli
macchina.
 E’ programmabile direttamente
dall’hardware del PIC.
 Raggiunto il valore max pari a 255
esso viene azzerato
automaticamente.


La frequenza di conteggio è direttamente
proporzionale alla freq. del clock applicata
al chip.
Tale freq. può essere modificata
programmando opportunatamente alcuni
bit di configurazione.
Catena di blocchi interni al pic che determinano il
funzionamento del TMR0
DESCRIZIONE DEI VARI BLOCCHI



blocchi FOSC/4 e TOCK1:sorgenti di segnale per il
contatore.
Fosc/4 è un segnale generato internamente al
pic dal clock ed è pari alla freq. di clock divisa per
4.
TOCK1 è segnale generato da un eventuale
circuito estero ed applicato al pin TOCK1 (pin 3)
del pic16F84.



I blocchi TOCS e PSA sono 2 commutatori di
segnale sulla cui uscita viene presentato uno dei
due segnali d’ingresso in base al valore dei bit
TOCS e PSA del registro OPTION.
Il PRESCALER è un divisore di frequenza
programmabile a 8 bit,si usa nel caso in cui la
freq. di conteggio inviata al TMR0 sia troppo
elevata.
Configurando in modo opportuno i bit PS0,PS1 e
PS2 del registro OPTION secondo la seguente
tabella :
CONFIGURAZIONE PRESCALER
In base al valore dei bit TOCS e PSA del registro
option si hanno le seguenti modalità di
funzionamento :TOCS=1 E PSA=1
TOCS=0 E PSA=0
Funzionamento con prescaler
TOCS=0 e PSA=0
Il bit TOSE

La presenza della porta
logica XOR,all’ingresso
TOCK1 del pic,consente di
determinare,tramite il bit
TOSE del registro
OPTION,se il contatore
TMR0 deve essere
incrementato in
corrispondenza del fronte
di discesa (TOSE=1) o del
fronte di salita (TOSE=0)
GLI INTERRUPT
 E’
un evento esterno,che interrompe
momentaneamente il programma
principale per eseguire una porzione
di programma specializzata nella
gestione dell’evento verificatosi e
riprendere l’esecuzione del
programma principale.
TIPI DI EVENTO E BIT DI ABILITAZIONE
Tipi di eventi:
 Cambiamento di stato sul pin RB0
 Fine conteggio del registro TMR0
 Cambiamento di stato sui pin da
RB4 a RB7
 Fine scrittura su una locazione
EEPROM.
Bit di abilitazione (registro INTCON):
 INTE
(bit4):se viene messo a 1 viene
abilitato l’interrupt del primo evento
 TOIE (bit5):se viene messo a 1 viene
abilitato l’interrupt del secondo
evento.
 RBIE(bit3):se viene messo a 1 viene
abilitato il terzo evento.
 EEIE(bit6):se viene messo a 1 viene
abilitato l’interrupt del quarto evento.
NOTA BENE:
 ESISTE
INOLTRE UN BIT DI
ABILITAZIONE GENERALE DEGLI
INTERRUPT CHE DEVE ESSERE
MESSO A 1 ,OVVERO IL BIT GIE
(GLOBAL INTERRUPT ENEBLE BIT)
POSTO SUL BIT 7 DEL REGISTRO
INTCON.
INTERRUPT FLAGS
Dato che qualunqe interrupt genera una chiamata
alla locazione 04H,nel registro INTCON sono
presenti dei flag che indicano quale è l’evento che
ha generato l’interrupt,vediamoli:
 INTF(bit 1) se vale 1 l’interrupt è stato generato
dal cambiamento di stato sul pin RB0
 TOIF(bit 2) se vale 1 l’interrupt è stato generato
al termine del conteggio del TMR0.
 RBIF(bit 0) se vale 1 l’interrupt è stato generato
dal cambiamento di stato sui pin da RB4 a RB7.
Se nessuno dei tre bit vale 1 allora l’interrupt
è stato generato sul fine scrittura nella
EEPROM.
IL POWER DOWN MODE




E’un particolare stato di funzionamento del PICmicro
utilizzato per ridurre il consumo di corrente nei momenti in
cui il pic non è utilizzato perché in attesa di un evento
esterno.
Per esempio un telecomando per apricancello o per TV
rimane inattivo fino a quando qualcuno non preme un
tasto.Appena premuto il tasto il pic effettua una breve
trasmissione e poi si rimette di nuovo nello stato di attesa.
Quindi l’effettivo utilizzo del pic è limitato a pochi ms.
Per evitare di consumare inutilmente l’energia della pila è
possibile spegnere buona parte dei circuiti interni al pic e
riaccenderli solo in corrispondenza di un evento esterno.
L’istruzione SLEEP
Viene utilizzata per mettere il pic in power
down mode e ridurre di conseguenza la
corrente che passerà da circa 2 mA
(a 5V con clock da 4MHz) a circa
2 uA,ovvero 1000 volte di meno!
 Per entrare in Power Down Mode basta
inserire l’istruzione SLEEP in un punto
qualsiasi del nostro programma.

IL WATCH DOG TIMER (WDT)


Il WDT è in pratica un oscillatore interno al pic
,ma completamente indipendente dal resto della
circuiteria,il cui scopo è quello di rilevare
eventuali blocchi della CPU del micro e resettare
il pic per riprendere la normale esecuzione del
programma.
L’istruzione per attivare il WDT è
CLRWDT (clear Watch Dog Timer),la quale
azzera ad intervalli regolari il WDT non
consentendogli di finire il conteggio.Se il pic non
effettua tale istruzione prima del termine del
conteggio allora si desume che il programma si
sia bloccato per qualche motivo e si effettua il
reset del pic.
Scrittura e lettura dati da EEPROM
Per accedere all EEprom vengono utilizzati i
seguenti registri:
EEAADR Serve ad indirizzare una delle 64
locazioni.
 EEDATA è il registro usato per inviare un
byte alla EEPROM
 EECON 1 e EECON2 sono 2 registri di
controllo usati nelle operazioni di scrittura
e di lettura.

Scarica

pic16f84_presentazione