Il µcontrollore PIC 16F84



Documenti analoghi
Lezione 8. Figura 1. Configurazione del registro INTCON

introduzione I MICROCONTROLLORI

8 Microcontrollori PIC

CALCOLATORI ELETTRONICI A cura di Luca Orrù. Lezione n.7. Il moltiplicatore binario e il ciclo di base di una CPU

I microcontrollori. In sostanza i pic hanno le seguenti caratteristiche:

Architettura del calcolatore

MICROCONTROLLORE PIC16F84A

CIRCUITO DI TEST E SOFTWARE UTILIZZATI

Ing. Paolo Domenici PREFAZIONE

Lezione 4. Figura 1. Schema di una tastiera a matrice di 4x4 tasti

CPU. Maurizio Palesi

LABORATORIO DI SISTEMI

Introduzione ai microcontrollori PIC

C. P. U. MEMORIA CENTRALE

INTRODUZIONE alla PROGRAMMAZIONE di MICROCONTROLLORI

Struttura del calcolatore

Invio SMS. DM Board ICS Invio SMS

A/D CON PIC 16F877. Sommario INTRODUZIONE... 2 SELEZIONARE I BANCHI... 2 ADCON ADCS1, ADCS CH2, CH1 E CH GO/DONE... 6 ADON...

APPUNTI SUL PIC16F84

PROCESSOR 16F84A. ;configurazione FUSES: oscillatore XT, WDT disabilitato PWRT abilitato, CP disabilitato config 0x3FF1

Lezione 1 Caratteristiche principali del PIC16C84 L'hardware

Esame di INFORMATICA

Laboratorio di Informatica

Dispensa di Informatica I.1

Modulo. Programmiamo in Pascal. Unità didattiche COSA IMPAREREMO...

Architettura hardware

Architettura di un calcolatore

L unità di controllo. Il processore: unità di controllo. Le macchine a stati finiti. Struttura della macchina a stati finiti

Indruduzione... 1 Il modulo Bluetooth HC Il firmware... 3 Collegamento della scheda... 4 Software PC e l applicazione Android...

Lezione n.19 Processori RISC e CISC

I componenti di un Sistema di elaborazione. Memoria centrale. È costituita da una serie di CHIP disposti su una scheda elettronica

Introduzione all'architettura dei Calcolatori

NOZIONI ELEMENTARI DI HARDWARE E SOFTWARE

Registratori di Cassa

ARCHITETTURA DELL ELABORATORE

Corso di Informatica

Architettura del PIC 18F452

Introduzione. Classificazione di Flynn... 2 Macchine a pipeline... 3 Macchine vettoriali e Array Processor... 4 Macchine MIMD... 6

ESERCIZI SUI SISTEMI DI NUMERAZIONE

Architettura dei computer

ARCHITETTURE MICROPROGRAMMATE. 1. Necessità di un architettura microprogrammata 1. Cos è un architettura microprogrammata? 4

Gestione della memoria centrale

5-1 FILE: CREAZIONE NUOVO DOCUMENTO

Corso di Sistemi di Elaborazione delle informazioni

PROGRAMMAZIONE ASSEMBLER

Il Processore: i registri

L informatica INTRODUZIONE. L informatica. Tassonomia: criteri. È la disciplina scientifica che studia

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena

Arduino: Programmazione

All interno del computer si possono individuare 5 componenti principali: SCHEDA MADRE. MICROPROCESSORE che contiene la CPU MEMORIA RAM MEMORIA ROM

Architettura del computer (C.Busso)

MANUALE PARCELLA FACILE PLUS INDICE

Il processore. Il processore. Il processore. Il processore. Architettura dell elaboratore

Categorie di sistemi Digitali

Informatica - A.A. 2010/11

Istruzioni per l installazione del software per gli esami ICoNExam (Aggiornate al 15/01/2014)

La memoria centrale (RAM)

Informatica B a.a 2005/06 (Meccanici 4 squadra) PhD. Ing. Michele Folgheraiter

Laboratorio di Informatica

Lezione 1: L architettura LC-3 Laboratorio di Elementi di Architettura e Sistemi Operativi 10 Marzo 2014

Il Sistema Operativo. C. Marrocco. Università degli Studi di Cassino

SPRING SQ COMUNICAZIONE OPERAZIONI IVA NON INFERIORI A 3000 EURO PER L ANNO 2011

MERIDESTER SOFTWARE DI COMUNICAZIONE PER PC

Input/Output. Moduli di Input/ Output. gestiscono quantità di dati differenti a velocità diverse in formati diversi. n Grande varietà di periferiche

Corso di Calcolatori Elettronici I A.A Il processore Lezione 18

Architettura degli elaboratori (A)

Corso di Informatica Applicata. Lezione 3. Università degli studi di Cassino

Software di sistema e software applicativo. I programmi che fanno funzionare il computer e quelli che gli permettono di svolgere attività specifiche

INTERFACCIA PER PC MEDIANTE PORTA SERIALE

Architettura della CPU e linguaggio assembly Corso di Abilità Informatiche Laurea in Fisica. prof. ing. Corrado Santoro

MOD SMS_ pag. 1

GHPPEditor è un software realizzato per produrre in modo rapido e guidato un part program per controlli numerici Heidenhain.

Database 1 biblioteca universitaria. Testo del quesito

Lezione 3: Architettura del calcolatore

Il sistema C.R.M. / E.R.M.

EasyPrint v4.15. Gadget e calendari. Manuale Utente

STRUTTURE DEI SISTEMI DI CALCOLO

L architettura di riferimento

ZFIDELITY - ZSE Software & Engineering Pag.1 / 11

30 giorni di prova gratuiti, entra nel sito scarica e installa subito mypckey

FONDAMENTI di INFORMATICA L. Mezzalira

1.4b: Hardware. (Memoria Centrale)

Programmazione del microcontrollore PIC 16F84

Microtech Srl. GPS TRACKER v3.0

La Macchina Virtuale

ZIMO. Decoder per accessori MX81. Manuale istruzioni del. nella variante MX81/N per il formato dei dati NMRA-DCC

Mac Application Manager 1.3 (SOLO PER TIGER)

Il sofware è inoltre completato da una funzione di calendario che consente di impostare in modo semplice ed intuitivo i vari appuntamenti.

Ciclo di Istruzione. Ciclo di Istruzione. Controllo. Ciclo di Istruzione (diagramma di flusso) Lezione 5 e 6

NUOVA PROCEDURA COPIA ED INCOLLA PER L INSERIMENTO DELLE CLASSIFICHE NEL SISTEMA INFORMATICO KSPORT.

IRSplit. Istruzioni d uso 07/10-01 PC

Calcolatori Elettronici

Calcolo numerico e programmazione Architettura dei calcolatori

Manuale Utente Albo Pretorio GA

In un modello a strati il SO si pone come un guscio (shell) tra la macchina reale (HW) e le applicazioni 1 :

CLASSE III A I.T.I. (ABACUS) SISTEMI DI ELABORAZIONE E TRASMISSIONE DEI DATI VERIFICA DI RECUPERO

Guida alla registrazione on-line di un DataLogger

Transcript:

Il µcontrollore PIC 16F84 Microchip Tecnology D. Ch. 1 Il grande successo dei microcontrollori ha indotto tutte le grandi case costrutrici di semiconduttori come la Intel, la Philips Semiconductors, la Nec, la Texas Instruments, La Amtel, la Zilog, la Microchip Tecnology e altre, ad offrire sul mercato una vasta gamma di µc. I microcontrollori si distinguono per il parallelismo di memoria (8, 16, 32 bit), per il set istruzioni più o meno esteso, per la complessità circuitale interna che può comprendere comparatori, convertitori A/D, generatori di segnali PWM, per la potenza di calcolo come i DSP (digital signal processor) progettati per elaborare grandi quantità di segnali (audio, immagini) in brevissimo tempo. I PIC Programmable Integrated Controller sono la famiglia di µc prodotti dalla Microchip Tecnology. Il PIC 16F84 è un microcontrollore di fascia medio-bassa con un parallelismo di 8 bit, di facile impiego e soprattutto ricco di letteratura.

I microcontrollori I µcontrollori sono dei sistemi single chip completi di CPU, Memoria, Porte di I/O, Contatori, Timer ecc. Sono stati concepiti per applicazioni industriali di controllo. Il programma, una volta messo a punto, risiede all interno del chip. D. Ch. 2 I microcontrollori sono praticamente dei completi microelaboratori integrati su un unico chip. Sono ormai impiegati in tutte le moderne applicazioni elettroniche che vanno dagli elettrodomestici intelligenti all automobilismo, dagli apparati per le telecomunicazioni alla robotica, dagli apparati elettromedicali alla alta fedeltà, alla elaborazione dei segnali audio e video, alla sicurezza. Vengono detti embedded perché, una volta programmati per una particolare applicazione, vengono incorporati nell apparecchio che devono controllare. Hanno praticamente rimpiazzato i soffisticati circuiti di controllo analogici e digitali.

. Il PIC 16F84: ha CPU RISC ha struttura Harvard ha semplice modalità di indirizzamento D. Ch. 3 A differenza dei classici microprocessori con struttura di tipo Von Neumann (aventi un unica memoria, come già visto nella prima parte del corso) il PIC ha la strutture di tipo Harvard (Università dove è stato creato) caratterizzato dal fatto che la memoria dati e la memoria istruzioni sono diverse e separate e ciascuna con il proprio bus; in questo modo la CPU può operare una singola istruzione ma su dati multipli o anche istruzioni multiple su dati multipli. Il PIC 16F84 ha un parallelismo di memoria di 8 bit ossia è capace di trattare 8 bit con un solo accesso in memoria ed è un microcontrollore con CPU RISC (Reduced Instruction Set Computing) dotata di un set di sole 37 istruzioni tutte della stessa lunghezza, ciascuna di 14 bit di cui 35 comuni a tutti i PIC e 2 proprie del 16F84; Anche i modi di indirizzamento sono pochi e semplici (diretto ed indiretto) e di conseguenza è sufficiente un semplice hardware di decodifica. Tutto questo fa si che il PIC abbia una grande velocità operativa.

D. Ch. 4 Il vero fattore velocizzante della operatività del PIC è la modalità di lavoro in pipeline (Metodo che consente l'elaborazione di nuovi dati senza necessità di attendere che i dati precedentemente inviati termino la loro elaborazione). Le istruzioni del PIC oltre che poco numerose sono anche molto brevi; durano tutte 8 cicli T(ad eccezione delle istruzioni si salto). Di questi, i primi 4 cicli sono utilizzati per il caricamento del codice operativo (fase di fetch) mentre i 4 successivi sono dedicati alla fase di execute (l esecuzione del microprogramma). Al fine di raddoppiare la velocità di esecuzione del programma, grazie anche all architettura che lo consente, si fa in modo che nelle istruzioni consecutive le fasi operative si sovrapongano creando il pipeline flow. Praticamente, mentre si esegue l execute di una istruzione si esegue contemporaneamente anche il fetch dell istruzione successiva. Così facendo ogni istruzione dura solo 4 cicli T anziché 8 ( nel caso di un clock di 20 MHz ogni istruzione durerà appena 200 ns mentre nelle nostre applicazioni dove utilizziamo un clock di 4MHz ogni istruzione dura 1 µs).

RIEPILOGANDO: T_Fetch = T_ Execute Separazione dei canali dei dati e delle istruzioni Pipelining (sovrapposizione del fetch di un istruzione e del execute della precedente.) velocizzazione Poche istruzioni Pochi modi di indirizzamento Hw di decodifica semplice velocizzazione D. Ch. 5 In questa slide sono sintetizzati i motivi grazie ai quali il PIC ha una velocità operativa superiore ai comuni microprocessori.

Schema a blocchi interno del PIC D. Ch. 6 L architettura interna del PIC è quella di un µcontrollore completo. Si distinguono: L ALU: unità centrale I Registri: W: Accumulatore, a 8 bit coinvolto nelle istruzioni di trasferimento. STACK:Registro LIFO a 8 livelli; il programmatore può creare fino a 8 subroutine nidificate. PC: Program Counter, a 13 bit con i quali è possibile indirizzare 8K locazioni di Memoria Programma (in effetti sono ridondanti per il PIC 16F84 visto che esso ha solo 1K di Memoria Programma). Il PC è composto da due registri: PCL di 8 bit e PCH di 5 bit; nel registro PCH non si può accedere direttamente (come nel PCL) ma bisogna coinvolgere il registro PCLATH ( vedi slide n. 12). La Memoria: EEPROM Programma: a 14 bit (1024 locazioni) EEPROM dati a 8 bit (64 locazioni) RAM a 8 bit suddivisa in 22 Registri speciali (11 + 11) 68 Registri dati di uso generale Le Porte : Port A (5 linee) Port B (8 linee) Le linee delle porte sono configurabili sia in input che in output, sono compatibili TTL e possono erogare / assorbire fino ad un massimo di 25 ma. Timing generation: Circuiteria sia per la generazione di clock all interno del PIC sia per la ricezione di un clock dall esterno. RTCC: (Real Time Counter/ Clock) fa riferimento al registro TMR0 a 8 bit ( vedi slide n. 12).

Il pinout del PIC 16F84 (18 pin di cui ben 13 disponibili per l I/O) Fig. (α ) Fig. ( β ) D. Ch. 7 Il PIC 16F84 è un integrato a 18 pin di cui ben 13 sono dedicati all I/O. In figura (α) è riportato lo schema funzionale mentre in figura (β) è riportato in pinout del PIC. Si distinguono: il PortA (5pin), il PortB (8 pin), i 2 pin di alimentazione e massa (V DD e GND), il master Reset (MCLR) attivo basso e due pin (OSC1 e OSC2) dedicati al clock; fra questi due pin si collega l oscillatore esterno.

D. Ch. 8 Descriviamo ora la funzione dei pin dell integrato: OSC1/ CLKIN e OSC1/ CLKOUT: sono pin rispettivamente di ingresso e di uscita; fra questi solitamente va collegato un oscillattore a quarzo esterno che unitamente all amplificatore interno al PIC costituisce il generatore di clock del sistema. Oltre il quarzo (4MHz o di high speed fino a 20MHz), come oscillatore esterno è possibile anche l utilizzo di una rete RC o anche di un risonatore ceramico fino a 200 khz. Il MCLR (Master Reset): è un pin di input ed è attivo basso. Ogni volta che viene attivato carica il Program Counter con l indirizzo 000H da dove poi riparte il programma. RA0 RA4: sono le 5 linee di I/O del Port A e possono essere utilizzate sia in input che in output; In particolare, fare attenzione su RA4 quando viene utilizzata in out bisogna inserire un resistore di pull up esterno perché è un pin open drain. RA4 inoltre può essere utilizzata anche come ingresso per il clock del Registro TMR0. RB0 RB7: sono le 8 linee di I/O del PORT B e possono essere utilizzate sia in input che in output; In particolare, RB0 può essere utilizzata anche come linea di input di interrupt; In particolare anche RB4 RB7 possono essere utilizzate come input di interrupt ma attive edge triggered (attive sul cambiamento di stato). (vedi registro INTCON, slide 13).

RAM EEPROM (1K) Memoria di Programma 14 bit Banco 0 EEPROM Dati 8 bit 64 locazioni 1k Banco 1 D. Ch. 9 LA MEMORIA DEL PIC 16F84 La memoria del PIC 16F84 è organizzata in 3 blocchi: a) Una Memoria Programma di tipo EEPROM a 16 bit con 1024 locazioni dove tra altro sono contenuti i codici operativi di due istruzioni chiave: RESET nella locazione 000H e INTERRUPT nella locazione 004H; b) Una Memoria RAM a 8 bit di 90 locazioni dislocate in uno spazio di 256 locazioni totali (da 00h a FFh) e divisa in due blocchi detti Banchi (Banco 0 e Banco 1). L organizzazione della RAM prevede 22 Registri speciali (11 per ogni Banco) e 68 Registri di uso generale. Dei Registri speciali ci occuperemo dettagliatamente più avanti. c) Infine esiste una terza memoria a 8 bit di 64 locazioni, di tipo EEPROM utilizzata esclusivamente come Memoria Dati.

D. Ch. 10 LA MEMORIA RAM La memoria RAM, come gia detto, è organizzata in 2 Banchi consecutivi, qui rappresentati affiancati. Per selezionare il Banco su cui si vuole lavorare bisogna coinvolgere i bit RP1 ed RP0 del Registro STATUS: 00 seleziona il Banco 0 mentre 01 seleziona il Banco 1; in effetti nel PIC 16F84 il bit RP1 è sempre a 0 per cui è sufficiente impostare solo RP0 (vedi slide n. 29).

D. Ch. 11 I Registri Speciali del Banco 0: Il Registro TMR0 è un registro contatore che può funzionare in modalità timer oppure in modalità counter: In modalità counter esso conta gli impulsi applicati dall esterno al pin RA4/T0CKI del porta. Si può anche inizializzare TMR0 ad un valore desiderato e poi farlo incrementare fino a creare un overflow; questo overflow può essere utilizzato per generare un interrupt (vedi registro INTCON, slide 15). Nella modalità timer il TMR0 conta gli impulsi di un segnale interno avente frequenza pari ad ¼ del segnale del clock. E possibile dividere ulteriormente questa frequenza per 2, per 4, per 256 per ottenere impulsi del timer lunghi; questa funzione prende il nome Prescaler. Il Prescaler si attiva attraverso i bit PS2 PS1 PS0 del registro OPTION. I Registri PORTA e PORTB contengono il valore dei vari pin delle Porte. Se i pin sono configurati come ingressi essi assumono il valore della periferica collegata mentre se i pin sono configurati come uscite il loro valore è stabilito dal programma. I pin di questi registri possono essere trattati sia singolarmente sia come un unica parola Il Registro STATUS, appartiene sia al banco 0 che al banco 1; è utilizzato per la selezione del Banco 0 o Banco 1 Il Registro INTCON appartiene sia al banco 0 che al banco 1; viene utilizzato esclusivamente per la gestione degli interrupt. I Registri EEDATA e EEADR abilitano la memoria dati I Registri PCLATH (5 bit) e PCL (8 bit) contengono i 13 bit (i 5 alti + gli 8 bit bassi) del Program Counter. I Registri FSR e INDF sono utilizzati nell indirizzamento indiretto.

D. Ch. 12 Alcuni Registri Speciali del Banco 1: Il PIC 16F84 per gestire le linee di I/O utilizza una coppia di registri per ciascuna Porta: tali registri sono TRIS A e PORT A per la porta A e TRIS B e PORT B per la porta B (di ogni coppia però uno risiede nel banco 0 e uno nel banco 1) I Registri TRIS A e TRIS B sono utilizzati per configurare le porte A e B (o i loro singoli bit) in ingresso o in uscita: Mettere un pin di questi registri a 0 implica configurare il corrispondente pin della porta come uscita mentre mettere un pin a 1 implica configurare il corrispondente pin della porta come ingresso; p.e. TRIS B: 00010011 configura B4, B1 e B0 come input mentre tutti gli altri saranno configurati come out. (in tal caso se volessimo collegare un LED lo collegheremo su B7 o su B6 o su B5 oppure su B3 o su B2). I Registri EECON1 e EECON2 abilitano la memoria dati. Il Registro OPTION viene utilizzato prevalentemente per programmare il funzionamento del registro TMR0.

D. Ch. 13 Il Registro STATUS: il bit RP0 è utilizzato per la selezione del Banco 0 o del Banco 1; IRP e RP1 sono sempre a 0; TO: è attivo basso, manda il WDT in time out; (*) PD: attivo basso, si attiva quando viene eseguita una istruzione di sleep; (**) Z: flag di zero, si attiva (a 1) quando il risultato di un operazione aritmetica o logica è zero; DC: indica se c è riporto o prestito sul bit meno significativo; C: indica se c è riporto o prestito sul bit più significativo. (*) La funzione WDT (Watchdog time) rileva eventuali blocchi della CPU, resetta il PIC e lo riavvia per farlo riprendere la normale esecuzione del programma. (**) Lo Sleep Mode o Power Down Mode è uno stato di funzionamento in Stand by in cui gran parte della circuiteria del PIC viene disalimentata in attesa di uno sporadico evento esterno (si pensi alla premuta di un tasto del telecomando); il PDM è utile per limitare il consumo di energia che farebbe scaricare la pila durante i lunghi tempi di inattività del PIC.

* ** *** * ** *** D. Ch. 14 Il Registro INTCON viene utilizzato esclusivamente per la gestione degli interrupt. Nel PIC 16F84 esistono 3 possibili modalità di attivazione di interrupt: a) l overflow del TMR0: viene abilitata attraverso il pin TOIE; b) l attivazione del segnale RB0/INT: viene abilitata attraverso il pin INTE; c) i segnali (cambio del livello) delle linee RB4, RB5, RB6, e RB7: viene abilitata attraverso il pin RBIE; Esistono anche 3 pin FLAG che segnalano l avvenuta interrupt (e che devono essere azzerati via software prima di uscire dalla subroutine di gestione): TOIF segnala l avvenuta interrupt da RMR0; INTF segnala l avvenuta interrupt da RB0/INT; RBIF segnala l avvenuta interrupt da RB4 RB7. GIE: se attivo (1) abilita gli interrupt (qualsiasi tipologia). Questo pin viene disattivato (0) automaticamente subito dopo il verificarsi del interrupt affinchè sia possibile che avvenga un nuovo interrupt; a questo è preposta l istruzione RETFIE che chiude ogni subroutine di gestione di un interrupt. EEIE: abilita la scrittura in memoria dati.

D. Ch. 15 Il Registro OPTION viene utilizzato prevalentemente per programmare il funzionamento del registro TMR0; infatti a questo sono dedicati ben 6 bit del registro (PS0, PS1, PS2, PSA, TOSE e TOCS). PS2, PS1, PS0 selezionano il rapporto di prescaler ( il divisore di f T ); PSA stabilisce se il prescaler verrà utilizzato da TMR0 oppure da watch dog timer (WDT); TOSE stabilisce se TMR0 funzionerà con il fronte positivo oppure negativo del clock; TOCS stabilisce se come clock del registro TMR0 sarà utilizzato il fronte di un segnale esterno applicato a RA4/TOCK1 oppure il clock interno al pic. INTEDG stabilisce se l interrupt RB0/INT sarà abilitata con il fronte positivo oppure negativo; RBPU abilita o disabilita i resistori di pull-up interni della porta B.

LE ISTRUZIONI DEL PIC Ogni istruzione del PIC corrisponde ad un opcode a 14 bit. (Il 16F84 ha 37 opcode diversi) Esempio: 00 0001 0000 0000B 0100H CLRw (notaz. Bin) (notaz. Hex) (cod. mnemonico Assembler) D. Ch. 16 Ogni istruzione del PIC corrisponde ad un codice operativo a 14 bit. Ogni codice operativo viene memorizzato in una memoria di programma costituita da una EEPROM di 1024 locazioni a 14 bit (come già detto nella slide 10) in cui ogni locazione, infatti, contiene una sola istruzione.

LE ISTRUZIONI DEL PIC 16F84 (1 / 3) (Letterali e di Controllo) D. Ch. 17 Le istruzioni del PIC sono raggruppate in tre tipologie: letterali e di controllo, orientate al byte e orientate al bit. a) Istruzioni letterali e di controllo; quasi tutte operano su grandezze alfanumeriche e molte fanno uso del registro accumulatore W. Durano tutte 1 ciclo macchina (1µs) pari a 4 cicli di clock ad eccezione delle istruzioni di salto che durano 2 cicli (p.e. CALL, GOTO, RETURN,..) Esaminiamo alcune delle istruzioni letterali: MOVLW 0C: sposta la costante 0C(hex) nel registro W. MOVLW B 00001011 : sposta la costante 00001011(bin) nel registro W. MOVLW D 11 : sposta la costante 11(dec) nel registro W. MOVLW 0xFF: sposta la costante FF(hex) nel registro W (per esigenze del compilatore, quando la costante inizia per lettera si fa precedere per 0x oppure per 0). ADDLW 03: addiziona la costante 03h al contenuto del registro W. GOTO 10A: salta nella locazione 10A della memoria programma.

LE ISTRUZIONI DEL PIC 16F84 (2 / 3) (Orientate al Byte) D. Ch. 18 b) Istruzioni orientate al byte; operano con parole lunghe 1 byte e spesso sul contenuto dei registri; molte fanno uso del registro accumulatore W. Esaminiamo alcune delle istruzioni orientate al byte tenendo presente che f è un registro generico a cui possiamo dare un nome qualsiasi e a cui il compilatore attribuirà il giusto indirizzo e che d è un parametro binario: se d=0 il risultato dell istruzione verrà posto in W mentre se d=1 il risultato sarà posto in f stesso). MOVWF 06: sposta il contenuto di W nel registro con indirizzo 06 (ossia scrivi il contenuto di W nel PortB). DECFSZ 1A: decrementa il contenuto del registro alla locazione 1Ah e salta la prossima istruzione se il contenuto è zero. SUBWF 0A,0: sottrai il contenuto di W dal registro 0A0h e metti il risultato in W. ADDWF 03,1: addiziona il contenuto di W al contenuto del registro 03h e il risultato mettilo in 03h.

LE ISTRUZIONI DEL PIC 16F84 (3 / 3) (Orientate al bit) D. Ch. 19 c) Istruzioni orientate al bit; operano sul contenuto del singolo bit dei registri. (f è un registro generico, b è il bit su cui opera l istruzione) BCF 06,3: metti a 0 il bit 3 del registro alla locazione 06 ossia metti a 0 il bit RB3. BSF 06,3: metti a 1 il bit RB3. BTFSC 03,2: esegui il test sul bit 2 del registro alla locazione 03 ossia testa il bit ZERO del registro STATUS e se lo trovi a zero salta la prossima istruzione. Le due istruzioni particolari del PIC 16F84: TRIS f [dove f può essere 05 (PORT A) oppure 06 (PORT B)]; questa istruzione trasferisce il contenuto di W nel registro TRIS A o TRIS B e consente di configurare i pin delle porte in ingresso o in uscita (vedi slide n. 29). OPTION: trasferisce il contenuto di W nel registro OPTION in modo da evitare lo scambio di banco tramite RP0 di STATUS.

Notepad.exe Edit.exe Word (file.testo) Differente per ogni tipo di PIC (P16F84.INC) Trasforma il mnemonico in opcode (MPASMWIN.EXE) (File testo) (mnem. opcode) (Contiene i codici operativi) D. Ch. 20 La Compilazione e la Programmazione Programmare in assembler è una attività da Progettista; l assembler è un linguaggio dedicato alla particolare macchina (µprocessore o µcontrollore) e dunque il Progettista deve conoscere bene l architettura dell hardware per stilare adeguatamente il programma. La programmazione del PIC richiede due fasi: la costruzione di un hardware e la gestione di due software per la Compilazione e la Programmazione vera e propria. La Compilazione: Il programma in assembler è scritto in linguaggio alfanumerico e, affinchè possa venire riconosciuto dalle circuiterie dovrà essere tradotto in codice macchina. A questo provvede un apposito software detto Assemblatore (nel nostro caso MPASMWIN.EXE). Tutti i microcontrollori della famiglia dei PIC, anche se ciascuno con la propria architettura interna, hanno lo stesso set di istruzioni; per questo motivo è possibile utilizzare un unico assemblatore al quale però bisognerà fornire, insieme al file sorgente (che contiene il programma utente ), anche un file con le specifiche del PIC da programmare. Questo file ha estensione INC e nel nostro caso è il P16F84.INC. L assemblatore fornisce più file, alcuni di servizio come il XX.ERR attraverso la lettura del quale il Progettista può risalire agli errori di compilazione (fornisce anche la linea del sorgente assembler in cui sono stati rilevati gli errori) e quindi rimuoverli e come il XX.LST contenente il listato degli OP. COD. in formato testo. Infine il file XX.HEX contenente i codici operativi delle istruzioni sarà l unico ad essere trasferito all interno della memoria programma del PIC attraverso una successiva fase detta di Programmazione.

LA COMPILAZIONE ASSEMBLER Fig. 1 Fig. 2 D. Ch. 21 La compilazione assembler è affidata al programma MPASM della MICROCHIP. Una volta lanciato il programma MPASMWIN.EXE si apre la finestra di figura 1 dove dopo aver selezionato il nostro file sorgente, il processore utilizzato e i file che desideriamo generare avvieremo la compilazione clickando su Assemble. L assemblatore eseguirà la compilazione e fornirà il report di figura 2; se ci saranno errori la striscia colorata sarà rossa e ci sarà anche il numero di errori da correggere.

IL PROGRAMMATORE D. Ch. 22 Il programmatore è un circuito molto semplice contenente pochi semplici componenti tra cui uno zoccolo DIL con adeguato numero di pin (18 nel caso del 16F84) e un connettore seriale per la connessione alla porta del computer. Per programmare il PIC basta inserirlo sullo zoccolo del programmatore, collegarlo alla porta seriale del computer e lanciare il software di programmazione. Il circuito programmatore non necessita di alimentatore perché viene alimentato dalla porta COM selezionata del computer. Prestare sempre attenzione all inserimento del PIC nello zoccolo del programmatore anche se il rischio di danneggiarlo durante la programmazione, nel caso di errato inserimento, è basso viste le modeste intensità di corrente in gioco.

LA PROGRAMMAZIONE DEL PIC D. Ch. 23 La Programmazione: Dopo aver inserito il PIC nello zoccolo del programmatore e collegato quest ultimo alla seriale del PC lanceremo il software NTPicprog.exe. Si apre la finestra di dialogo nella quale dobbiamo impostare alcuni parametri come mostrato in figura: il mode 16C84 va bene anche per il 16F84, mentre come COM dovrà essere selezionata quella disponibile ed effettivamente adoperata, dobbiamo indicare il tipo di clock che sarà utilizzato nell applicativo finale (oscillatore RC, circuito con risonatore ceramico (LP), quarzo a media frequenza (XT), o quarzo high speed (HS)). A questo punto lanciamo Load per caricare il file XX.HEX e comandiamo Write per trasferire i dati nel PIC. Talvolta è utile precedere le operazioni dal comando Erase che pulisce la memoria del programma mentre è sempre consigliabile controllare l avvenuta scrittura facendo un operazione di Read. Al termine della programmazione non resta che staccare il PIC programmato dallo zoccolo del programmatore ed inserirlo nel circuito di destinazione finale.

Riepilogando.. per programmare il PIC: D. Ch. 24 Per programmare il PIC: Scrivere il file source con Blocco Note o altro editor(se si usa word salvare come XX.txt) e salvarlo come XXX.ASM Copiare il file XXX.ASM nella cartella Pasmwin Lanciare il programma Mpasmwin (file exe ); nella finestra cercare il file XXX.ASM (Browse) e cliccare su Assemble. Verranno creati i file: XXX.COD XXX.ERR XXX.HEX XXX.LST Controllare il file ERR e correggere eventuali errori. Inserire il PIC sul programmatore e collegarlo sulla seriale del PC (COM1, COM2,.) Lanciare NTPicprog (Scegliere COM1 o COM2 Scegliere XT e PuT Eseguire i comandi: Erase Load (il file XXX.HEX) Write Prelevare infine il PIC dal programmatore ed inserirlo nel circuito a cui è destinato.

Hardware standard di base Fig. (a) Fig. (b) D. Ch. 25 Per presentare lo schema hardware applicativo di base faremmo riferimento allo schema funzionale del PIC; Questa è una parte comune a tutti i PIC della famiglia. La parte standard riguarda la parte sinistra dello schema che sostanzialmente contiene le circuiterie del Clock e del Reset. Come circuito di Clock, abbiamo già anticipato, utilizzeremmo un quarzo a 4MHz. Nella tabella di figura (b) sono riportati i valori consigliati per i condensatori nel caso si intenda usare un cristallo diverso. Il circuito di Reset è un classico circuito RC; i valori in figura sono indicativi: il condensatore deve essere del ordine di qualche centinaio di nf mentre il Resistore di qualche decina di KOhm.

Come collegare una semplice Periferica D. Ch. 26 Il collegamento delle periferiche Le 13 linee del PIC dedicate all I/O presentano livelli compatibili TTL e sono in grado, quando configurate in uscita, di erogare correnti (di source e drain) fino a 25 ma. Prestare attenzione al pin RA4 al quale bisogna collegare un resistore di pull up esterno se lo si vuole utilizzare come uscita perché è open drain. In figura sono riportati alcuni possibili schemi applicativi per collegare un LED, uno switch, un relè. Sulle linee del PIC può essere collegata qualsiasi periferica, ovviamente opportunamente interfacciata.

Il REGISTER FILE ( è un insieme di locazioni RAM denominate registri ) 10 + 10 Registri speciali 48 byte direttamente indirizzabili Per accedere alla pag 1 e per uscirne, si fa uso del bit ausiliario RP0: bsf STATUS, RP0 bcf STATUS, RP0 D. Ch. 27 Riportiamo qui un riepilogo dei registri speciali del PIC perché saranno coinvolti nella stesura dei software applicativi.

Procedure software di base 1/4 bsf STATUS, RP0 movlw 11111110B movwf TRIS B bcf STATUS, RP0 Fig. ( a ) loop call delay btfsc PORT B,0 goto spegni bsf PORT B,0 goto loop spegni bcf PORTB, 0 bsf PORT B, 0 bcf PORT B, 0 goto loop Fig. (c ) Fig. ( b ) D. Ch. 28 Primi passi Per eseguire i primi passi nella programmazione assembler assumiamo di voler far lampeggiare (ininterrottamente) un LED applicato sul pin RB0 del PIC. Con la procedura di figura (a) abbiamo configurato in uscita il bit 0 del PORT B; la prima istruzione bsf STATUS,RP0 fa accedere al banco 1 dove alloggia TRISB; la seconda e la terza istruzione caricano la parola binaria 11111110 nel registro TRISB (tramite il registro W) configurando tutti i pin in input tranne l RB0 che è messo in output; l ultima istruzione fa ritornate al banco 0. Le due istruzioni di figura (b), in ordine, settano e resettano il bit 0 del PORT B cosi che il LED collegato potrà accendersi e spegnersi. A questo punto facciamo due osservazioni: 1) bisogna testare lo stato del pin, in modo da far accendere il LED se è spento e farlo spegnere se è acceso, altrimenti si rischia di tenerlo sempre acceso o sempre spento (istruzione btfsc Port B, 0 ); 2) affinchè il lampeggiamento sia visibile bisognerà lasciar acceso e spento il LED per un tempo sufficientemente prolungato (istruzione call delay ). Queste due problematiche vengono risolte nel listato della figura (c). In questa procedura notiamo anche il concetto di label (etichetta), di loop, del uso di salto (goto) e di chiamata di una subroutine (call delay).

Procedure software di base 2/4 ( Delay ) COUNT = 0 DECREMENTA COUNT NO SI SI RETURN Clrf COUNT Dec Decfsz COUNT, 1 Goto Dec Return Fig. (b) Fig. (a ) D. Ch. 29 Per creare un ritardo, problema molto frequente in programmazione, si usa far eseguire ripetutamente per un certo numero di volte una o più istruzioni. In figura (a) consideriamo il generico registro COUNT di 8 bit (una locazione della RAM), lo carichiamo con 00000000B e lo facciamo decrementare fin quando, passando da 255, 254,.., non arrivi di nuovo a 0. Al termine saranno eseguite 256 istruzioni decfsz F (da 1µs) e 256 istruzioni goto (da 2 µs) per un tempo totale di circa 770 µs.

Procedure software di base 3/4 COUNT+1 = 0 N0 COUNT = 0 DECREM. COUNT = 0 SI DECREM. COUNT+1 = 0 Dec Clrf COUNT+1 Clrf COUNT decfsz COUNT,1 goto Dec decfsz COUNT+1,1 goto Dec Return Fig.( b ) N0 Fig. ( a ) SI RETURN D. Ch. 30 In figura (a) sono eseguiti due cicli annidati che creano un ritardo di circa 0,5 sec sufficienti affinchè l occhio umano percepisca il lampeggiamento (0,5 s acceso e 0,5 s spento).

Procedure software di base 4/4 (direttive obbligatorie) PROCESSOR 16F84 RADIX DEC INCLUDE P16F84.INC LED EQU 0 ORG 0CH COUNT RES 2 ORG 00H D. Ch. 31 Le direttive non sono istruzioni e non hanno un corrispondente codice operativo; sono delle semplici dichiarazioni che contengono indicazioni per il compilatore. PROCESSOR 16F84: indica al compilatore qual è il processore in uso; RADIX DEC: informa il compilatore che i numeri senza indicazione specifica vanno intesi decimali; INCLUDE P16F84.INC: informa il compilatore che troverà incluso nel source anche il file P16F84.INC ; LED EQU 0: questa direttiva significa che la parola LED equivale a 0; potrebbe essere usata nello scrivere bsf PORTB, LED anziché bsf PORTB, 0 (e analogamente bcf PORTB, LED anziché bcf PORTB, 0 ). Questo facilita la correzione del programma nel caso volessimo spostare il Led su un altro pin del PORT. COUNT RES 2: significa che vogliamo riservare 2 locazioni di RAM per i due contatori (COUNT e COUNT+1) a partire dall indirizzo 0CH dichiarato con la direttiva ORG 0CH. Le locazioni riservate saranno 0Ch e 0DH; ORG 00H: indica al compilatore l origine (inizio) della EEPROM memoria di programma.

PROCESSOR 16F84 RADIX DEC INCLUDE "P16F84.INC LED EQU 0 ORG 0CH Count RES 2 ;Reset Vector Lampeggiatore ad un LED ;Subroutine Delay clrf Count clrf Count+1 Dec decfsz Count,1 ;Punto di inizio del programma al reset della CPU goto Dec ORG 00H decfsz Count+1,1 bsf STATUS,RP0 goto Dec movlw 11111110B return movwf TRISB END movlw 0001111B movwf TRISA bcf STATUS,RP0 bsf PORTB,LED Loop call Delay btfsc PORTB,LED goto Spegni bsf PORTB,LED goto Loop Spegni bcf PORTB,LED D. Ch. 32 goto Loop Le scritte precedute da ; sono commenti e non vengono prese in considerazione dal compilatore. L istruzione return chiude la subroutine e fa tornare nel main program mentre l istruzione END chiude tutto il programma.

Esercizio applicativo 4 SW e 4 LED D. Ch. 33 Esercizio applicativo Sia dato il circuito rappresentato in figura: Si hanno quattro LED e quattro switch applicati al PORT B del PIC 16F84; Scrivere un programma in assembler che testi lo stato degli interruttori e faccia accendere i LED in modo che ogni LED si accenda solo se viene premuto il suo corrispondente SW. Programmare il PIC e realizzare l applicativo.