SlideShare a Scribd company logo
Il microcontrollore PIC 16F84
di EMANUELE TONUCCI
(Matr. 091450 – Classe Concorso A042)
PAS 2014
Architettura degli Elaboratori – Prof. Leonardo Pasini
 Il termine microcontrollore (microcontroller)
si intende comunemente un sistema a
microprocessore integrato su un unico chip
 Comprende oltre alla CPU:
◦ una memoria di programma, solitamente di sola
lettura (PROM, EPROM, EEROM o FLASH)
◦ una memoria RAM, generalmente di dimensioni
ridotte, per i risultati intermedi dell'elaborazione
◦ periferici di I/O vari (porte seriali e/o
parallele, contatori/timer, convertitori AD ecc.)
 PIC = Programmable Integrated Controller
 CPU RISC (Riduced Instruction Set
Computing, elaborazione con insieme di
istruzione ridotto):
◦ poche e semplici istruzioni
◦ tutte della stessa lunghezza
◦ tutte richiedenti lo stesso numero di cicli macchina
per il fetch e per l’esecuzione
 Basato su una struttura del tipo Harvard:
◦ Memoria programma e memoria dati (e relativi bus)
separati.
 Questa caratteristica unita alla separazione
fisica dei canali lungo cui fluiscono istruzioni
e dati:
◦ Permette di ottenere una sovrapposizione (Pipe
Lineing) delle fasi di fetch di un’istruzione con
quella di esecuzione della precedente
◦ Velocità dovuta al fatto che la riduzione del numero
di istruzioni (unita a quella dei tempi di
indirizzamento), semplifica l’hardware richiesto per
la loro decodifica.
 Nel PIC 16F84, la gestione di una istruzione (fetch +
esecuzione) richiede, con l’eccezione delle istruzioni di salto,
un singolo ciclo macchina, costituito da 4 cicli di clock come
si può vedere dalla figura:
 Il PIC 16F84 è dotato di una FLASH Memory che viene utilizzata per
la riprogrammabilità del chip.
 Set ridotto di istruzioni: 35 istruzioni di una singola parola da 14
bit, tutte di un solo ciclo macchina (200 ns minimo), tranne le
istruzioni di salto che ne richiedono 2.
 Dati a 8 bit
 Frequenza di clock dalla d.c. a 20 MHz, ottenibili con varie opzioni
da software (cristallo o risuonatore ceramico bassa/media/alta
frequenza o gruppo RC)
 Memoria di programma FLASH di 1024 x 14 bit (quindi fino a 1024
istruzioni)
 68 byte di RAM di uso generale, organizzata in 68 registri di 8 bit
ciascuno.
 15 registri con funzioni speciali.
 64 byte di memoria dati EEPROM (scrivibile, con tempi dell’ordine
dei ms, durante il normale funzionamento da programma)
 Stack hardware (cioè separato dalle aree di memoria dati e
programma e non accessibile al programmatore) profondo 8 livelli.
 13 linee di I/O organizzate in un Port A di 5 bit e in un Port B di 8
bit, con controllo individuale della direzione, TTL compatibili ad alta
corrente di uscita (25 mA in sink e 20 mA in source), alcune delle
quali specializzabili (richiesta interrupt, clock contatore, ecc.).
Le linee del Port B dichiarate in ingresso possono essere connesse
da software a Vdd tramite un pull-up a bassa corrente (circa 100
µA).
 Contatore/temporizzatore programmabile a 8 bit, con prescale
programmabile sempre a 8 bit.
 Possibilità di interrupt su richiesta da linea esterna (bit 0 di Port
B), su cambiamento della linee 7÷4 di Port B, su overflow del
contatore/temporizzatore e infine su completamento scrittura
EEPROM dati.
 I PIC 16FXX hanno un Program Counter a 13
bit in grado di indirizzare uno spazio di
memoria di 8K x 14.
 Come mostrato nella figura, per il PIC 16F84A
solo i primi 1K x 14 di memoria (0000h –
03FFh) sono fisicamente implementati.
L’accesso a locazioni oltre gli indirizzi
fisicamente implementati causerà un
“riavvolgimento” degli indirizzi. Per esempio
se si tentasse di accedere alle locazioni
20h, 420h, 820h, C20h, 1020h, 1420h, 1820
h, and 1C20h, l’istruzioni che si incontrerà
sarà sempre le stessa.
 L’autoreset all’accensione, senza necessità di componenti esterni,
tale reset porta il Program Counter alla locazione 0000h, da cui
parte l’esecuzione del programma.
 La possibilità, decidibile da programma, di attivare un Power-up
timer, cioè un temporizzatore interno che ritarda l’esecuzione del
programma di qualche millisecondo per dar modo a tutte le tensioni
e al clock di stabilizzarsi.
 La possibilità di porre da programma il microcontrollore in SLEEP,
cioè in uno stato di attesa in cui l’esecuzione del programma di
arresta, le linee di I/O restano nello stato in cui erano
precedentemente e il consumo del chip diventa minimo (meno di 1
µA a 2 V di alimentazione, uscite escluse). Dallo stato di SLEEP il PIC
esce con un livello basso sull’ingresso di reset MCLR, con reset dal
Watchdog Timer o con un interrupt.
 La presenza di un Watchdog Timer (WDT), attivabile o
disattivabile in fase di programmazione. Il WDT genera un
reset ogni 18 ms (espandibili a circa 128 x 18 = 2,3 secondi
con un prescaler). Questa ripartenza ciclica del programma è
utile per sbloccare il microcontrollore da eventuali situazioni
critiche o di blocco in cui possa finire a causa del verificarsi di
particolari condizioni esterne.
 Per le applicazioni commerciali è possibile proteggere il
codice del programma e renderlo inaccessibile in lettura una
volta scritto nella FLASH, stessa cosa è possibile farla per i
dati presenti nella EEPROM da 64 byte.
 Nella parte bassa delle due
pagine di memoria sono
presenti 15 registri speciali.
 Alcuni di questi registri sono
indirizzabili da entrambe le
pagine di memoria, come si può
vedere dal nome ripetuto sulla
stessa riga nella immagine
seguente (Mappa del Register
File).
 TMR0 (indirizzo 01h): contiene il conteggio attuale del
contatore/temporizzatore programmabile. Può essere letto, ma
anche scritto, si può cioè impostare il valore iniziale da cui il
contatore comincerà a contare (in avanti).
 Il contatore/timer può contare (eventualmente attraverso un
prescaler) impulsi esterni (sul piedino RA4, corrispondente al bit 4
del Port A) o gli impulsi dell’instruction cycle clock. Arrivato a 255,
riparte da 0; in corrispondenza di questa transizione di overflow può
generare una interrupt.
 PCL (indirizzo 02h): è il byte basso del Program Counter (bit 7÷0
degli indirizzi). Di per se il PC è un registro a 13 bit, può quindi
indirizzare 213 = 23 * 210 = 8 k locazioni (di 14 bit).
 I 5 bit alti 12÷8 non sono accessibili direttamente
 Una loro copia aggiornata è contenuta nel registro PCLATH
(indirizzo 0Ah).
 Ogni operazione che modifichi i bit 12÷8 del PC modifica nello
stesso modo i bit 4÷0 di PCLATH.
 Viceversa, i bit di PCLATH, che sono
scritti da programma, vengono
caricati nel Program Counter in
occasione di trasferimenti che
abbiano PCL come destinazione o
quando sono invocate istruzioni di
salto.
 STATUS (indirizzo 03h): comprende una serie di bit (flag) che vengono influenzati
dal risultato di operazioni o da particolari eventi, e altri che concorrono alla
gestione degli indirizzamenti nell’archivio dei registri.
◦ C (bit 0) flag di Carry/Borrow: segnala un riporto/prestito nelle operazioni di addizione e
sottrazione su 8 bit.
◦ DC (bit 1) flag di Digit Carry: segnala un riporto/prestito sul nibble (4 bit) basso nelle operazioni di
addizione e sottrazione. Utile nelle operazioni BDC.
◦ Z (bit 2) flag di Zero: va a 1 quando il risultato dell’operazione logico/aritmetica precedente è 0; va
a 0 se tale risultato è diverso da 0. Viene anche influenzato da alcune istruzione di trasferimento.
◦ PD (bit 3) flag di Power Down: va a 1 durante la temporizzazione di Power-up o per una istruzione
CLRWDT (azzeramento del Watchdog timer); viene riportato a 0 da una istruzione di SLEEP (messa in
stato di attesa)
◦ TO (bit 4) flag di Time-Out: va a 1 durante la temporizzazione di Power-up o per un’istruzione di
CLRWDT; viene riportato a 0 dal time-out del watchdog timer. Sostanzialmente, PD e TO
permettono, dalle loro combinazioni, di individuare se un re-inizio di programma (reset) è stato
determinato da un normale RESET hardware su MCLR, se invece si tratta di una uscita dal modo
SLEEP, o di un time-out del watchdog , o ancora una combinazione di queste combinazioni. Si può
notare che PD e TO sono gli unici bit di STATUS che non possono essere scritti direttamente, ma
solo letti.
◦ RP1, RP0 (bit 6 e 5): sono bit di selezione pagina per l’indirizzamento diretto nell’archivio registri.
Se posti a 00 viene impostata la pagina 0 (00h – 7Fh), mentre se posti a 01 viene impostata la
pagina 1 (80h – FFh).
◦ IRP (bit 7): bit di selezione pagine per l’indirizzamento indiretto nell’archivio registri. Poiché in
questo tipo di indirizzamento la selezione avviene di due pagine in due e il PIC 16F84 ha solo 2
pagine, tale bit non ha nessun effetto sulla selezione.
 Il procedimento dei due indirizzamenti è descritto nello schema qui
di seguito riportato:
 PORTA e PORTB (indirizzi 05h e 06h): sono i
registri corrispondenti ai due port di I/O; nel primo
sono rilevanti solo i bit 4÷0 (il Port A ha solo 5
linee).
 Ciascuna linea di ciascun port può essere
indipendentemente impostato in input oppure in
output, mediante la scrittura di un 1 (input) o di
uno 0 (output) nella corrispondente posizione del
registro di controllo TRISA (indirizzo 85h), per il
Port A, e TRISB (indirizzo 86h), per il Port B.
 OPTION (indirizzo 81h): è un registro di controllo i
cui singoli bit (scrivibili e leggibili) determinano la
scelta di particolari opzioni riguardanti il
counter/timer, il watchdog timer, le modalità di
generazione di interrupt, il comportamento delle
linee di input.
 Il PIC 16F84 ha 4 possibili sorgenti di
interrupt:
◦ Interrupt esterni dalla linea RB0/INT;
◦ Interrupt su overflow del timer/counter TMR0;
◦ Interrupt su fine scrittura EEPROM dati;
◦ Interrupt su cambiamento di livello ai pin
RB7÷RB4
 Se avviene una interruzione, ulteriori interrupt vengono disabilitati
dall’abbassamento automatico del flag di abilitazione generale degli
interrupt GIE (bit 7 del registro INTCON)
 L’indirizzo di rientro è salvato sullo stack hardware e il PIC è caricato
con 0004h, indirizzo a cui deve iniziare la routine di gestione
dell’interrupt. (Vettore di interruzione unico)
 Le diverse interrupt comunque si “qualificano” alzando particolari
flag di richiesta contenuti nel registro INTCON.
 Il software deve individuare quale condizione ha determinato
interrupt interrogando (polling) tali flag e diramarsi di conseguenza.
 Al rientro dalla routine di gestione GIE viene riportato a
1, riabilitando gli interrupt non mascherati
 Il contenuto del registro INTCON determina l’interrupt:
◦ RBIF (bit 0) che individua l’interrupt su cambiamento delle linee RB7÷RB4;
◦ INTF (bit 1) che individua l’interrupt della linea RB0/INT;
◦ TOIF (bit 2) che individua l’interrupt su overflow del timer/counter.
◦ Se tutti sono a 0 allora la interrupt è stata causa dalla scrittura in EEPROM
◦ RBIE (bit 3) che (dis)abilita l’interrupt corrispondente a RBIF;
◦ INTE (bit 4) che (dis)abilita l’interrupt corrispondente a INTF;
◦ TOIE (bit 5) che (dis)abilita l’interrupt corrispondente a TOIF;
◦ EEIE (bit 6) che (dis)abilita l’interrupt di fine scrittura EEPROM dati.
Il set di istruzioni, riportato nella prossima slide, è estremamente
compatto, in ottemperanza alla logica dei RISC; sono in tutto 35
istruzioni, tutte della stessa lunghezza (14 bit) e tutte della stessa
durata di 1 ciclo macchina (4 cicli di clock), tranne quelle di salto che
ne impiegano 2.
 PORTA EQU 5 ; Indirizzo Port A
 PORTB EQU 6 ; Indirizzo Port B
 TRISA EQU 5 ; Indirizzo reg. controllo Port A (pag.1)
 TRISB EQU 6 ; Indirizzo reg. controllo Port B (pag.1)
 PC EQU 2 ; Indirizzo Program Counter (parte bassa)
 STATUS EQU 3 ; Indirizzo reg, stato
 RP0 EQU 5 ; Il flag RP0 Š il bit 5 di STATUS

 ORG 0x00 ; Inizio FLASH di programma
 BSF STATUS,RP0 ; Alza bit 5 di STATUS (RP0) per
 ; selezionare Pag.1 del file registri
 MOVLW 0xFF ; Port A
 MOVWF TRISA ; in input
 CLRW ; Port B
 MOVWF TRISB ; in output
 BCF STATUS,RP0 ; Abbassa RP0 per selezionare
 ; Pag.0 del file registri
 PLA MOVF PORTA,w ; Leggi input in W
 ANDLW 0x0F ; (solo i 4 bit bassi)
 CALL TBL ; Vai alla subroutine di gestione tabella
 MOVWF PORTB ; Aggiorna l'uscita
 GOTO PLA ; Ripeti indefinitamente
 TBL ADDWF PC,f ; Somma al valore corrente del pc (che punta
 ; alla istr. successiva) l'ingresso (che va da
 ; 0 a 15 e sta in W)
 ; Qui di seguito la "Look-Up Table": ogni
istruzione mette il relativo dato
 ; di output in W e recupera in pc dallo
stack l'indirizzo di rientro
 ; Display anodo comune

 ; a = RB0
 ; b = RB1
 ; c = RB2
 ; d = RB3
 ; e = RB4
 ; f = RB5
 ; g = RB6

 RETLW b'00111111' ;0
 RETLW b'00000110' ;1
 RETLW b'01011011' ;2
 RETLW b'01001111' ;3
 RETLW b'01100110' ;4
 RETLW b'01101101' ;5
 RETLW b'01111101' ;6
 RETLW b'00000111' ;7
 RETLW b'01111111' ;8
 RETLW b'01100111' ;9
 RETLW b'01111001' ;E
 RETLW b'01111001' ;E
 RETLW b'01111001' ;E
 RETLW b'01111001' ;E
 RETLW b'01111001' ;E
 RETLW b'01111001' ;E
 END

 ; NOTA SULLE TEMPORIZZAZIONI: il ciclo che
implementa il PLA è costituito
 ; da 7 istruzioni di cui 3 di salto, per un totale di 4
+ 3 x 2 = 10 cicli
 ; macchina = 40 periodi di clock. Alla massima
frequenza di clock del
 ; PIC 16F84A (20 Mhz) ciò significa 2µs di ritardo
fra variazione degli
 ; ingressi e aggiornamento delle uscite.
R1 ÷ R4 = 22 kΩ
R5 = 1 kΩ
R6 = 33 kΩ
R7 = 220 Ω
R8 ÷ R12 = 1 kΩ
C1 = 100 nF
C2 ÷ C3 = 15 pF
X1 = Quarzo 4 MHz
DL1 = Diodo Led
D1 = 1N4148
IC1 = PIC 16F84
SW1 ÷ SW4 = Dip Switch
FND500 = Display 7 segmenti
prof. Emanuele Tonucci

More Related Content

What's hot

Il plc linguaggi program
Il plc linguaggi programIl plc linguaggi program
Il plc linguaggi program
Gilda Tobia
 
PLC: lo standard iec61131 3
PLC: lo standard iec61131 3PLC: lo standard iec61131 3
PLC: lo standard iec61131 3
Italiandirectory
 
Architettura dei Calcolatori 10 Input Ouput
Architettura dei Calcolatori 10 Input OuputArchitettura dei Calcolatori 10 Input Ouput
Architettura dei Calcolatori 10 Input OuputMajong DevJfu
 
Presentazione
PresentazionePresentazione
Presentazionecesario
 
Car accident detector
Car accident detectorCar accident detector
Car accident detector
VladimirZitoli
 
ATIPICO POTENTE TASCABILE INDUSTRIAL PLC
ATIPICO POTENTE TASCABILE INDUSTRIAL PLCATIPICO POTENTE TASCABILE INDUSTRIAL PLC
ATIPICO POTENTE TASCABILE INDUSTRIAL PLC
Rémi GUILBERT
 
Corso automazione modulo1
Corso automazione modulo1Corso automazione modulo1
Corso automazione modulo1
Marco Buttolo
 
Corso automazione modulo2
Corso automazione modulo2Corso automazione modulo2
Corso automazione modulo2
Marco Buttolo
 
OPDE Drives
OPDE DrivesOPDE Drives
OPDE Drives
TDE MACNO SPA
 
Presentazione progetto biomeccatronica
Presentazione progetto biomeccatronicaPresentazione progetto biomeccatronica
Presentazione progetto biomeccatronicaAndrea Fais
 
Banco di collaudo per dispositivi pneumatici del sistema frenante ferroviario...
Banco di collaudo per dispositivi pneumatici del sistema frenante ferroviario...Banco di collaudo per dispositivi pneumatici del sistema frenante ferroviario...
Banco di collaudo per dispositivi pneumatici del sistema frenante ferroviario...
TogetherToSolve
 
Workshop su Arduino
Workshop su ArduinoWorkshop su Arduino
Workshop su Arduino
Paolo Aliverti
 
30@30: Newsletter aprile
30@30: Newsletter aprile30@30: Newsletter aprile
30@30: Newsletter aprile
Lika Electronic
 
Descrizione protocollo InterLINK e licenze firmware CAMILLO
Descrizione protocollo InterLINK e licenze firmware CAMILLODescrizione protocollo InterLINK e licenze firmware CAMILLO
Descrizione protocollo InterLINK e licenze firmware CAMILLO
iBLio
 
Automazione Industriale e Robotica
Automazione Industriale e RoboticaAutomazione Industriale e Robotica
Automazione Industriale e Robotica
Maria Grazia Di Noi
 
Presentazione microprocessore
Presentazione microprocessorePresentazione microprocessore
Presentazione microprocessore
Oleg Stoianov
 
Pioneer 1320 il migliore
Pioneer 1320   il migliorePioneer 1320   il migliore
Pioneer 1320 il migliore
Fabrizio Bernabe
 
Arkanoid on Altera DE-1
Arkanoid on Altera DE-1Arkanoid on Altera DE-1
Arkanoid on Altera DE-1
Matteo Gazzin
 

What's hot (20)

Il plc linguaggi program
Il plc linguaggi programIl plc linguaggi program
Il plc linguaggi program
 
PLC: lo standard iec61131 3
PLC: lo standard iec61131 3PLC: lo standard iec61131 3
PLC: lo standard iec61131 3
 
Architettura dei Calcolatori 10 Input Ouput
Architettura dei Calcolatori 10 Input OuputArchitettura dei Calcolatori 10 Input Ouput
Architettura dei Calcolatori 10 Input Ouput
 
Presentazione
PresentazionePresentazione
Presentazione
 
Car accident detector
Car accident detectorCar accident detector
Car accident detector
 
ATIPICO POTENTE TASCABILE INDUSTRIAL PLC
ATIPICO POTENTE TASCABILE INDUSTRIAL PLCATIPICO POTENTE TASCABILE INDUSTRIAL PLC
ATIPICO POTENTE TASCABILE INDUSTRIAL PLC
 
Corso automazione modulo1
Corso automazione modulo1Corso automazione modulo1
Corso automazione modulo1
 
Corso automazione modulo2
Corso automazione modulo2Corso automazione modulo2
Corso automazione modulo2
 
OPDE Drives
OPDE DrivesOPDE Drives
OPDE Drives
 
Presentazione progetto biomeccatronica
Presentazione progetto biomeccatronicaPresentazione progetto biomeccatronica
Presentazione progetto biomeccatronica
 
Banco di collaudo per dispositivi pneumatici del sistema frenante ferroviario...
Banco di collaudo per dispositivi pneumatici del sistema frenante ferroviario...Banco di collaudo per dispositivi pneumatici del sistema frenante ferroviario...
Banco di collaudo per dispositivi pneumatici del sistema frenante ferroviario...
 
Workshop su Arduino
Workshop su ArduinoWorkshop su Arduino
Workshop su Arduino
 
30@30: Newsletter aprile
30@30: Newsletter aprile30@30: Newsletter aprile
30@30: Newsletter aprile
 
Lezione1 introduzione micro
Lezione1 introduzione microLezione1 introduzione micro
Lezione1 introduzione micro
 
Descrizione protocollo InterLINK e licenze firmware CAMILLO
Descrizione protocollo InterLINK e licenze firmware CAMILLODescrizione protocollo InterLINK e licenze firmware CAMILLO
Descrizione protocollo InterLINK e licenze firmware CAMILLO
 
Automazione Industriale e Robotica
Automazione Industriale e RoboticaAutomazione Industriale e Robotica
Automazione Industriale e Robotica
 
Presentazione microprocessore
Presentazione microprocessorePresentazione microprocessore
Presentazione microprocessore
 
Pioneer 1320 il migliore
Pioneer 1320   il migliorePioneer 1320   il migliore
Pioneer 1320 il migliore
 
Arkanoid on Altera DE-1
Arkanoid on Altera DE-1Arkanoid on Altera DE-1
Arkanoid on Altera DE-1
 
3D-DRESD INCA
3D-DRESD INCA3D-DRESD INCA
3D-DRESD INCA
 

Viewers also liked

Mdc technology it 2011 v1.8
Mdc technology it 2011 v1.8Mdc technology it 2011 v1.8
Mdc technology it 2011 v1.8
mdctech
 
Arduino primo v1
Arduino primo v1Arduino primo v1
Arduino primo v1
Elisa Rubino
 
Silent Bee Italian Honeycomb
Silent Bee Italian HoneycombSilent Bee Italian Honeycomb
Silent Bee Italian Honeycomb
Richard OBrien
 
Bk001 it c18-step_by_step
Bk001 it c18-step_by_stepBk001 it c18-step_by_step
Bk001 it c18-step_by_stephawk2012
 
Sistema di numerazione
Sistema di numerazioneSistema di numerazione
Sistema di numerazione
Gilda Tobia
 
Tesi Triennale
Tesi TriennaleTesi Triennale
Tesi Triennale
Mirko Mancin
 
PIC microcontroller
PIC microcontroller PIC microcontroller
PIC microcontroller Rami Alsalman
 
Investimenti
InvestimentiInvestimenti
Investimenti
Sergio Porcu
 
Tesi Magistrale 2014
Tesi Magistrale 2014Tesi Magistrale 2014
Tesi Magistrale 2014
Mirko Mancin
 
Interfaccia verso il BUS
Interfaccia verso il BUSInterfaccia verso il BUS
Interfaccia verso il BUSSergio Porcu
 
Diagnosi e integrazione disabili in Polonia
Diagnosi e integrazione disabili in PoloniaDiagnosi e integrazione disabili in Polonia
Diagnosi e integrazione disabili in Polonia
Gilda Tobia
 
Formato istruzioni e direttive 8086
Formato istruzioni e direttive 8086Formato istruzioni e direttive 8086
Formato istruzioni e direttive 8086Sergio Porcu
 
Lezione 4 arduino - corso 20 ore
Lezione 4 arduino - corso 20 oreLezione 4 arduino - corso 20 ore
Lezione 4 arduino - corso 20 ore
Mirko Mancin
 
Assembly1
Assembly1Assembly1
Assembly1
Mariangela Mone
 
Microprocessori INTEL 8086/8088
Microprocessori INTEL 8086/8088Microprocessori INTEL 8086/8088
Microprocessori INTEL 8086/8088Sergio Porcu
 
Ape regina ( laboratorio)
Ape regina ( laboratorio)Ape regina ( laboratorio)
Ape regina ( laboratorio)
alessiagiannetto
 
Array
ArrayArray
Programmazione degli ATTiny - Il computer nella scarpa
Programmazione degli ATTiny - Il computer nella scarpaProgrammazione degli ATTiny - Il computer nella scarpa
Programmazione degli ATTiny - Il computer nella scarpa
Paolo Aliverti
 

Viewers also liked (20)

Mdc technology it 2011 v1.8
Mdc technology it 2011 v1.8Mdc technology it 2011 v1.8
Mdc technology it 2011 v1.8
 
Arduino primo v1
Arduino primo v1Arduino primo v1
Arduino primo v1
 
Silent Bee Italian Honeycomb
Silent Bee Italian HoneycombSilent Bee Italian Honeycomb
Silent Bee Italian Honeycomb
 
Bk001 it c18-step_by_step
Bk001 it c18-step_by_stepBk001 it c18-step_by_step
Bk001 it c18-step_by_step
 
Sistema di numerazione
Sistema di numerazioneSistema di numerazione
Sistema di numerazione
 
Tesi Triennale
Tesi TriennaleTesi Triennale
Tesi Triennale
 
PIC microcontroller
PIC microcontroller PIC microcontroller
PIC microcontroller
 
Diagrammi di Bode
Diagrammi di BodeDiagrammi di Bode
Diagrammi di Bode
 
Investimenti
InvestimentiInvestimenti
Investimenti
 
Tesi Magistrale 2014
Tesi Magistrale 2014Tesi Magistrale 2014
Tesi Magistrale 2014
 
Interfaccia verso il BUS
Interfaccia verso il BUSInterfaccia verso il BUS
Interfaccia verso il BUS
 
Diagnosi e integrazione disabili in Polonia
Diagnosi e integrazione disabili in PoloniaDiagnosi e integrazione disabili in Polonia
Diagnosi e integrazione disabili in Polonia
 
Formato istruzioni e direttive 8086
Formato istruzioni e direttive 8086Formato istruzioni e direttive 8086
Formato istruzioni e direttive 8086
 
Lezione 4 arduino - corso 20 ore
Lezione 4 arduino - corso 20 oreLezione 4 arduino - corso 20 ore
Lezione 4 arduino - corso 20 ore
 
Assembly1
Assembly1Assembly1
Assembly1
 
Assembly
AssemblyAssembly
Assembly
 
Microprocessori INTEL 8086/8088
Microprocessori INTEL 8086/8088Microprocessori INTEL 8086/8088
Microprocessori INTEL 8086/8088
 
Ape regina ( laboratorio)
Ape regina ( laboratorio)Ape regina ( laboratorio)
Ape regina ( laboratorio)
 
Array
ArrayArray
Array
 
Programmazione degli ATTiny - Il computer nella scarpa
Programmazione degli ATTiny - Il computer nella scarpaProgrammazione degli ATTiny - Il computer nella scarpa
Programmazione degli ATTiny - Il computer nella scarpa
 

Similar to Il pic 16 f84a

Microcontrollori
MicrocontrolloriMicrocontrollori
Microcontrollori
samu97
 
Il cuore di Arduino: Un sistema di sviluppo basato su microcontrollore Atmel ...
Il cuore di Arduino: Un sistema di sviluppo basato su microcontrollore Atmel ...Il cuore di Arduino: Un sistema di sviluppo basato su microcontrollore Atmel ...
Il cuore di Arduino: Un sistema di sviluppo basato su microcontrollore Atmel ...
Sardegna Ricerche
 
Design of programmable medical devices_Teamwork
Design of programmable medical devices_TeamworkDesign of programmable medical devices_Teamwork
Design of programmable medical devices_TeamworkAntonella Zito
 
Introduzione ad Arduino del Maker DevLab
Introduzione ad Arduino del Maker DevLabIntroduzione ad Arduino del Maker DevLab
Introduzione ad Arduino del Maker DevLab
Biagio (Gino) Zingales Alì
 
Dsp cosa sono i digital signal processor - seconda parte - 2010-10-19
Dsp  cosa sono i digital signal processor  - seconda parte - 2010-10-19Dsp  cosa sono i digital signal processor  - seconda parte - 2010-10-19
Dsp cosa sono i digital signal processor - seconda parte - 2010-10-19Ionela
 
Hardware e software
Hardware e softwareHardware e software
Lezione 2 arduino - corso 20 ore
Lezione 2 arduino - corso 20 oreLezione 2 arduino - corso 20 ore
Lezione 2 arduino - corso 20 ore
Mirko Mancin
 
Informatica di base
Informatica di baseInformatica di base
Informatica di base
Bruno Montalto
 
1informaticadibase 110602151357 Phpapp02
1informaticadibase 110602151357 Phpapp021informaticadibase 110602151357 Phpapp02
1informaticadibase 110602151357 Phpapp02Formazioneenna Enna
 
Informatica di base
Informatica di baseInformatica di base
Informatica di base
Bruno Montalto
 
Architettura dei calcolatori
Architettura dei calcolatoriArchitettura dei calcolatori
Architettura dei calcolatori
kaliaragorn
 
Manuale inseritore Dallas
Manuale inseritore DallasManuale inseritore Dallas
Manuale inseritore Dallas
gigiovanni
 
Ltc4219 controllore hot swap integrato da 5 a - 2010-10-13
Ltc4219   controllore hot swap integrato da 5 a - 2010-10-13Ltc4219   controllore hot swap integrato da 5 a - 2010-10-13
Ltc4219 controllore hot swap integrato da 5 a - 2010-10-13Ionela
 
Telemetria dei parametri dinamici di un drone marino
Telemetria dei parametri dinamici di un drone marinoTelemetria dei parametri dinamici di un drone marino
Telemetria dei parametri dinamici di un drone marino
Vincenzo Virgilio
 
Product catalogs 03: electronic instrumentation - weight indicators & weight ...
Product catalogs 03: electronic instrumentation - weight indicators & weight ...Product catalogs 03: electronic instrumentation - weight indicators & weight ...
Product catalogs 03: electronic instrumentation - weight indicators & weight ...
LAUMAS
 
EuComm
EuCommEuComm
EuCommiBLio
 
SMART WATER 4 novembre
SMART WATER 4 novembreSMART WATER 4 novembre
SMART WATER 4 novembrecanaleenergia
 
Il Personal Computer
Il Personal ComputerIl Personal Computer
Il Personal Computerbity1988
 
Il Personal Computer
Il Personal ComputerIl Personal Computer
Il Personal Computerbity1988
 

Similar to Il pic 16 f84a (20)

Microcontrollori
MicrocontrolloriMicrocontrollori
Microcontrollori
 
Il cuore di Arduino: Un sistema di sviluppo basato su microcontrollore Atmel ...
Il cuore di Arduino: Un sistema di sviluppo basato su microcontrollore Atmel ...Il cuore di Arduino: Un sistema di sviluppo basato su microcontrollore Atmel ...
Il cuore di Arduino: Un sistema di sviluppo basato su microcontrollore Atmel ...
 
Design of programmable medical devices_Teamwork
Design of programmable medical devices_TeamworkDesign of programmable medical devices_Teamwork
Design of programmable medical devices_Teamwork
 
Introduzione ad Arduino del Maker DevLab
Introduzione ad Arduino del Maker DevLabIntroduzione ad Arduino del Maker DevLab
Introduzione ad Arduino del Maker DevLab
 
Dsp cosa sono i digital signal processor - seconda parte - 2010-10-19
Dsp  cosa sono i digital signal processor  - seconda parte - 2010-10-19Dsp  cosa sono i digital signal processor  - seconda parte - 2010-10-19
Dsp cosa sono i digital signal processor - seconda parte - 2010-10-19
 
Hardware e software
Hardware e softwareHardware e software
Hardware e software
 
Lezione 2 arduino - corso 20 ore
Lezione 2 arduino - corso 20 oreLezione 2 arduino - corso 20 ore
Lezione 2 arduino - corso 20 ore
 
Informatica di base
Informatica di baseInformatica di base
Informatica di base
 
1informaticadibase 110602151357 Phpapp02
1informaticadibase 110602151357 Phpapp021informaticadibase 110602151357 Phpapp02
1informaticadibase 110602151357 Phpapp02
 
Informatica di base
Informatica di baseInformatica di base
Informatica di base
 
Architettura dei calcolatori
Architettura dei calcolatoriArchitettura dei calcolatori
Architettura dei calcolatori
 
Manuale inseritore Dallas
Manuale inseritore DallasManuale inseritore Dallas
Manuale inseritore Dallas
 
Ltc4219 controllore hot swap integrato da 5 a - 2010-10-13
Ltc4219   controllore hot swap integrato da 5 a - 2010-10-13Ltc4219   controllore hot swap integrato da 5 a - 2010-10-13
Ltc4219 controllore hot swap integrato da 5 a - 2010-10-13
 
Telemetria dei parametri dinamici di un drone marino
Telemetria dei parametri dinamici di un drone marinoTelemetria dei parametri dinamici di un drone marino
Telemetria dei parametri dinamici di un drone marino
 
Product catalogs 03: electronic instrumentation - weight indicators & weight ...
Product catalogs 03: electronic instrumentation - weight indicators & weight ...Product catalogs 03: electronic instrumentation - weight indicators & weight ...
Product catalogs 03: electronic instrumentation - weight indicators & weight ...
 
Modulo 1 - Lezione 2
Modulo 1 - Lezione 2Modulo 1 - Lezione 2
Modulo 1 - Lezione 2
 
EuComm
EuCommEuComm
EuComm
 
SMART WATER 4 novembre
SMART WATER 4 novembreSMART WATER 4 novembre
SMART WATER 4 novembre
 
Il Personal Computer
Il Personal ComputerIl Personal Computer
Il Personal Computer
 
Il Personal Computer
Il Personal ComputerIl Personal Computer
Il Personal Computer
 

Il pic 16 f84a

  • 1. Il microcontrollore PIC 16F84 di EMANUELE TONUCCI (Matr. 091450 – Classe Concorso A042) PAS 2014 Architettura degli Elaboratori – Prof. Leonardo Pasini
  • 2.  Il termine microcontrollore (microcontroller) si intende comunemente un sistema a microprocessore integrato su un unico chip  Comprende oltre alla CPU: ◦ una memoria di programma, solitamente di sola lettura (PROM, EPROM, EEROM o FLASH) ◦ una memoria RAM, generalmente di dimensioni ridotte, per i risultati intermedi dell'elaborazione ◦ periferici di I/O vari (porte seriali e/o parallele, contatori/timer, convertitori AD ecc.)
  • 3.  PIC = Programmable Integrated Controller  CPU RISC (Riduced Instruction Set Computing, elaborazione con insieme di istruzione ridotto): ◦ poche e semplici istruzioni ◦ tutte della stessa lunghezza ◦ tutte richiedenti lo stesso numero di cicli macchina per il fetch e per l’esecuzione  Basato su una struttura del tipo Harvard: ◦ Memoria programma e memoria dati (e relativi bus) separati.
  • 4.  Questa caratteristica unita alla separazione fisica dei canali lungo cui fluiscono istruzioni e dati: ◦ Permette di ottenere una sovrapposizione (Pipe Lineing) delle fasi di fetch di un’istruzione con quella di esecuzione della precedente ◦ Velocità dovuta al fatto che la riduzione del numero di istruzioni (unita a quella dei tempi di indirizzamento), semplifica l’hardware richiesto per la loro decodifica.
  • 5.  Nel PIC 16F84, la gestione di una istruzione (fetch + esecuzione) richiede, con l’eccezione delle istruzioni di salto, un singolo ciclo macchina, costituito da 4 cicli di clock come si può vedere dalla figura:
  • 6.  Il PIC 16F84 è dotato di una FLASH Memory che viene utilizzata per la riprogrammabilità del chip.
  • 7.
  • 8.  Set ridotto di istruzioni: 35 istruzioni di una singola parola da 14 bit, tutte di un solo ciclo macchina (200 ns minimo), tranne le istruzioni di salto che ne richiedono 2.  Dati a 8 bit  Frequenza di clock dalla d.c. a 20 MHz, ottenibili con varie opzioni da software (cristallo o risuonatore ceramico bassa/media/alta frequenza o gruppo RC)  Memoria di programma FLASH di 1024 x 14 bit (quindi fino a 1024 istruzioni)  68 byte di RAM di uso generale, organizzata in 68 registri di 8 bit ciascuno.  15 registri con funzioni speciali.  64 byte di memoria dati EEPROM (scrivibile, con tempi dell’ordine dei ms, durante il normale funzionamento da programma)
  • 9.  Stack hardware (cioè separato dalle aree di memoria dati e programma e non accessibile al programmatore) profondo 8 livelli.  13 linee di I/O organizzate in un Port A di 5 bit e in un Port B di 8 bit, con controllo individuale della direzione, TTL compatibili ad alta corrente di uscita (25 mA in sink e 20 mA in source), alcune delle quali specializzabili (richiesta interrupt, clock contatore, ecc.). Le linee del Port B dichiarate in ingresso possono essere connesse da software a Vdd tramite un pull-up a bassa corrente (circa 100 µA).  Contatore/temporizzatore programmabile a 8 bit, con prescale programmabile sempre a 8 bit.  Possibilità di interrupt su richiesta da linea esterna (bit 0 di Port B), su cambiamento della linee 7÷4 di Port B, su overflow del contatore/temporizzatore e infine su completamento scrittura EEPROM dati.
  • 10.  I PIC 16FXX hanno un Program Counter a 13 bit in grado di indirizzare uno spazio di memoria di 8K x 14.  Come mostrato nella figura, per il PIC 16F84A solo i primi 1K x 14 di memoria (0000h – 03FFh) sono fisicamente implementati. L’accesso a locazioni oltre gli indirizzi fisicamente implementati causerà un “riavvolgimento” degli indirizzi. Per esempio se si tentasse di accedere alle locazioni 20h, 420h, 820h, C20h, 1020h, 1420h, 1820 h, and 1C20h, l’istruzioni che si incontrerà sarà sempre le stessa.
  • 11.  L’autoreset all’accensione, senza necessità di componenti esterni, tale reset porta il Program Counter alla locazione 0000h, da cui parte l’esecuzione del programma.  La possibilità, decidibile da programma, di attivare un Power-up timer, cioè un temporizzatore interno che ritarda l’esecuzione del programma di qualche millisecondo per dar modo a tutte le tensioni e al clock di stabilizzarsi.  La possibilità di porre da programma il microcontrollore in SLEEP, cioè in uno stato di attesa in cui l’esecuzione del programma di arresta, le linee di I/O restano nello stato in cui erano precedentemente e il consumo del chip diventa minimo (meno di 1 µA a 2 V di alimentazione, uscite escluse). Dallo stato di SLEEP il PIC esce con un livello basso sull’ingresso di reset MCLR, con reset dal Watchdog Timer o con un interrupt.
  • 12.  La presenza di un Watchdog Timer (WDT), attivabile o disattivabile in fase di programmazione. Il WDT genera un reset ogni 18 ms (espandibili a circa 128 x 18 = 2,3 secondi con un prescaler). Questa ripartenza ciclica del programma è utile per sbloccare il microcontrollore da eventuali situazioni critiche o di blocco in cui possa finire a causa del verificarsi di particolari condizioni esterne.  Per le applicazioni commerciali è possibile proteggere il codice del programma e renderlo inaccessibile in lettura una volta scritto nella FLASH, stessa cosa è possibile farla per i dati presenti nella EEPROM da 64 byte.
  • 13.  Nella parte bassa delle due pagine di memoria sono presenti 15 registri speciali.  Alcuni di questi registri sono indirizzabili da entrambe le pagine di memoria, come si può vedere dal nome ripetuto sulla stessa riga nella immagine seguente (Mappa del Register File).
  • 14.
  • 15.  TMR0 (indirizzo 01h): contiene il conteggio attuale del contatore/temporizzatore programmabile. Può essere letto, ma anche scritto, si può cioè impostare il valore iniziale da cui il contatore comincerà a contare (in avanti).  Il contatore/timer può contare (eventualmente attraverso un prescaler) impulsi esterni (sul piedino RA4, corrispondente al bit 4 del Port A) o gli impulsi dell’instruction cycle clock. Arrivato a 255, riparte da 0; in corrispondenza di questa transizione di overflow può generare una interrupt.
  • 16.  PCL (indirizzo 02h): è il byte basso del Program Counter (bit 7÷0 degli indirizzi). Di per se il PC è un registro a 13 bit, può quindi indirizzare 213 = 23 * 210 = 8 k locazioni (di 14 bit).  I 5 bit alti 12÷8 non sono accessibili direttamente  Una loro copia aggiornata è contenuta nel registro PCLATH (indirizzo 0Ah).  Ogni operazione che modifichi i bit 12÷8 del PC modifica nello stesso modo i bit 4÷0 di PCLATH.  Viceversa, i bit di PCLATH, che sono scritti da programma, vengono caricati nel Program Counter in occasione di trasferimenti che abbiano PCL come destinazione o quando sono invocate istruzioni di salto.
  • 17.  STATUS (indirizzo 03h): comprende una serie di bit (flag) che vengono influenzati dal risultato di operazioni o da particolari eventi, e altri che concorrono alla gestione degli indirizzamenti nell’archivio dei registri. ◦ C (bit 0) flag di Carry/Borrow: segnala un riporto/prestito nelle operazioni di addizione e sottrazione su 8 bit. ◦ DC (bit 1) flag di Digit Carry: segnala un riporto/prestito sul nibble (4 bit) basso nelle operazioni di addizione e sottrazione. Utile nelle operazioni BDC. ◦ Z (bit 2) flag di Zero: va a 1 quando il risultato dell’operazione logico/aritmetica precedente è 0; va a 0 se tale risultato è diverso da 0. Viene anche influenzato da alcune istruzione di trasferimento. ◦ PD (bit 3) flag di Power Down: va a 1 durante la temporizzazione di Power-up o per una istruzione CLRWDT (azzeramento del Watchdog timer); viene riportato a 0 da una istruzione di SLEEP (messa in stato di attesa) ◦ TO (bit 4) flag di Time-Out: va a 1 durante la temporizzazione di Power-up o per un’istruzione di CLRWDT; viene riportato a 0 dal time-out del watchdog timer. Sostanzialmente, PD e TO permettono, dalle loro combinazioni, di individuare se un re-inizio di programma (reset) è stato determinato da un normale RESET hardware su MCLR, se invece si tratta di una uscita dal modo SLEEP, o di un time-out del watchdog , o ancora una combinazione di queste combinazioni. Si può notare che PD e TO sono gli unici bit di STATUS che non possono essere scritti direttamente, ma solo letti. ◦ RP1, RP0 (bit 6 e 5): sono bit di selezione pagina per l’indirizzamento diretto nell’archivio registri. Se posti a 00 viene impostata la pagina 0 (00h – 7Fh), mentre se posti a 01 viene impostata la pagina 1 (80h – FFh). ◦ IRP (bit 7): bit di selezione pagine per l’indirizzamento indiretto nell’archivio registri. Poiché in questo tipo di indirizzamento la selezione avviene di due pagine in due e il PIC 16F84 ha solo 2 pagine, tale bit non ha nessun effetto sulla selezione.
  • 18.  Il procedimento dei due indirizzamenti è descritto nello schema qui di seguito riportato:
  • 19.  PORTA e PORTB (indirizzi 05h e 06h): sono i registri corrispondenti ai due port di I/O; nel primo sono rilevanti solo i bit 4÷0 (il Port A ha solo 5 linee).  Ciascuna linea di ciascun port può essere indipendentemente impostato in input oppure in output, mediante la scrittura di un 1 (input) o di uno 0 (output) nella corrispondente posizione del registro di controllo TRISA (indirizzo 85h), per il Port A, e TRISB (indirizzo 86h), per il Port B.
  • 20.  OPTION (indirizzo 81h): è un registro di controllo i cui singoli bit (scrivibili e leggibili) determinano la scelta di particolari opzioni riguardanti il counter/timer, il watchdog timer, le modalità di generazione di interrupt, il comportamento delle linee di input.
  • 21.  Il PIC 16F84 ha 4 possibili sorgenti di interrupt: ◦ Interrupt esterni dalla linea RB0/INT; ◦ Interrupt su overflow del timer/counter TMR0; ◦ Interrupt su fine scrittura EEPROM dati; ◦ Interrupt su cambiamento di livello ai pin RB7÷RB4
  • 22.  Se avviene una interruzione, ulteriori interrupt vengono disabilitati dall’abbassamento automatico del flag di abilitazione generale degli interrupt GIE (bit 7 del registro INTCON)  L’indirizzo di rientro è salvato sullo stack hardware e il PIC è caricato con 0004h, indirizzo a cui deve iniziare la routine di gestione dell’interrupt. (Vettore di interruzione unico)  Le diverse interrupt comunque si “qualificano” alzando particolari flag di richiesta contenuti nel registro INTCON.  Il software deve individuare quale condizione ha determinato interrupt interrogando (polling) tali flag e diramarsi di conseguenza.  Al rientro dalla routine di gestione GIE viene riportato a 1, riabilitando gli interrupt non mascherati
  • 23.  Il contenuto del registro INTCON determina l’interrupt: ◦ RBIF (bit 0) che individua l’interrupt su cambiamento delle linee RB7÷RB4; ◦ INTF (bit 1) che individua l’interrupt della linea RB0/INT; ◦ TOIF (bit 2) che individua l’interrupt su overflow del timer/counter. ◦ Se tutti sono a 0 allora la interrupt è stata causa dalla scrittura in EEPROM ◦ RBIE (bit 3) che (dis)abilita l’interrupt corrispondente a RBIF; ◦ INTE (bit 4) che (dis)abilita l’interrupt corrispondente a INTF; ◦ TOIE (bit 5) che (dis)abilita l’interrupt corrispondente a TOIF; ◦ EEIE (bit 6) che (dis)abilita l’interrupt di fine scrittura EEPROM dati.
  • 24. Il set di istruzioni, riportato nella prossima slide, è estremamente compatto, in ottemperanza alla logica dei RISC; sono in tutto 35 istruzioni, tutte della stessa lunghezza (14 bit) e tutte della stessa durata di 1 ciclo macchina (4 cicli di clock), tranne quelle di salto che ne impiegano 2.
  • 25.
  • 26.  PORTA EQU 5 ; Indirizzo Port A  PORTB EQU 6 ; Indirizzo Port B  TRISA EQU 5 ; Indirizzo reg. controllo Port A (pag.1)  TRISB EQU 6 ; Indirizzo reg. controllo Port B (pag.1)  PC EQU 2 ; Indirizzo Program Counter (parte bassa)  STATUS EQU 3 ; Indirizzo reg, stato  RP0 EQU 5 ; Il flag RP0 Š il bit 5 di STATUS   ORG 0x00 ; Inizio FLASH di programma  BSF STATUS,RP0 ; Alza bit 5 di STATUS (RP0) per  ; selezionare Pag.1 del file registri  MOVLW 0xFF ; Port A  MOVWF TRISA ; in input  CLRW ; Port B  MOVWF TRISB ; in output  BCF STATUS,RP0 ; Abbassa RP0 per selezionare  ; Pag.0 del file registri  PLA MOVF PORTA,w ; Leggi input in W  ANDLW 0x0F ; (solo i 4 bit bassi)  CALL TBL ; Vai alla subroutine di gestione tabella  MOVWF PORTB ; Aggiorna l'uscita  GOTO PLA ; Ripeti indefinitamente  TBL ADDWF PC,f ; Somma al valore corrente del pc (che punta  ; alla istr. successiva) l'ingresso (che va da  ; 0 a 15 e sta in W)
  • 27.  ; Qui di seguito la "Look-Up Table": ogni istruzione mette il relativo dato  ; di output in W e recupera in pc dallo stack l'indirizzo di rientro  ; Display anodo comune   ; a = RB0  ; b = RB1  ; c = RB2  ; d = RB3  ; e = RB4  ; f = RB5  ; g = RB6   RETLW b'00111111' ;0  RETLW b'00000110' ;1  RETLW b'01011011' ;2  RETLW b'01001111' ;3  RETLW b'01100110' ;4  RETLW b'01101101' ;5  RETLW b'01111101' ;6  RETLW b'00000111' ;7  RETLW b'01111111' ;8  RETLW b'01100111' ;9  RETLW b'01111001' ;E  RETLW b'01111001' ;E  RETLW b'01111001' ;E  RETLW b'01111001' ;E  RETLW b'01111001' ;E  RETLW b'01111001' ;E  END   ; NOTA SULLE TEMPORIZZAZIONI: il ciclo che implementa il PLA è costituito  ; da 7 istruzioni di cui 3 di salto, per un totale di 4 + 3 x 2 = 10 cicli  ; macchina = 40 periodi di clock. Alla massima frequenza di clock del  ; PIC 16F84A (20 Mhz) ciò significa 2µs di ritardo fra variazione degli  ; ingressi e aggiornamento delle uscite.
  • 28. R1 ÷ R4 = 22 kΩ R5 = 1 kΩ R6 = 33 kΩ R7 = 220 Ω R8 ÷ R12 = 1 kΩ C1 = 100 nF C2 ÷ C3 = 15 pF X1 = Quarzo 4 MHz DL1 = Diodo Led D1 = 1N4148 IC1 = PIC 16F84 SW1 ÷ SW4 = Dip Switch FND500 = Display 7 segmenti
  • 29.
  • 30.
  • 31.