corso introduttivo sui - itis cannizzaro colleferro ·  · 2010-12-14data]). ... (eprom-eeprom)...

94
NA – L1 1 Corso introduttivo sui microcontrollori A. S. 2007 – 2008 Microprocessori - Microcontrollori Nicola Amoroso [email protected] http://www.mrscuole.net/anxapic/ http://www.mrscuole.net/anxapic/ http://www.mrscuole.net/anxapic/

Upload: trinhtuong

Post on 25-May-2018

227 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L1 1

Corso introduttivo sui microcontrollori

A. S. 2007 – 2008

Microprocessori - Microcontrollori

Nicola [email protected]

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 2: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L1 2

> Un piccolo computer, contenente al suo interno tutti icircuiti necessari al suo funzionamento, senza necessita` dicircuiti integrati esterni.> Il microprocessore vero e proprio (core) e` il cuore delsistema e si occupa di eseguire le operazioni matematiche(ALU) , di spostare i dati fra le varie parti della memoria, diincrementare i numerosi contatori necessari alfunzionamento.> Tutti i dispositivi, interni, controllati dal microprocessoreprendono il nome di periferiche

Cosa e’ un microcontrollore ?http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 3: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L1 3

Cosa e’ un microcontrollore ?

• Un microcontrollore (µC ) è un dispositivo di elaborazione dati simile al microprocessore (µP )

Sul µP sono basati tutti i calcolatori dai personal computer ai mainframe

• Sul µC sono basati dispositivi per scopi industriali o per applicazioni particolari (autronica, domotica, telefoni cellulari, lettori DVD, video-camere, etc… )

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 4: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L1 4

Cosa e’ un microcontrollore ?Il microcontrollore contiene gli stessi elementi principali di un sistema programmabile:

° Processore ° Memoria ° Elementi di Input/output

In un PC, questi sottosistemi, sono elementi (chips) separati collegati tra loro

mediante una “connessione a bus”[1], su un unico circuito stampato; il sistema

completo è comunque gestito da una unità centrale che prende il nome di

CPU [microprocessore (µP)].

Ogni sistema può essere configurato per applicazioni “particolari” con CPU,

memorie e gestione di I/O opportune.

[1] “Connessione a bus” => Opportune linee in parallelo che collegano tra loro sistemi,device, etc… . Il numero delle linee dipende dai collegamenti da effettuare, comunque ingenere si utilizzano bus a 4, 8, 16, 32, 64, … linee.

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 5: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L1 5

Cosa e’ un microcontrollore ?In un microcontrollore (µC), tutti gli elementi

indicati, sono presenti su un unico chip!

Il µC gestisce tutte le condizioni di I/O,i calcoli ed eventuali controlli

Sia i µC che i µP sono sistemi programmabili cioè non possono operare senzaopportuno codice (programma) che è una lista di istruzioni, mantenute in memoriaopportuna che viene eseguita in modo sequenziale in modo tale da soddisfare alprocesso richiesto.

Per questi sistemi programmabili bisogna considerare oltre allo sviluppo hardware(Interfacciamento), anche un opportuno sviluppo software in funzione del processo daeseguire.

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 6: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L1 6

MemorieFondamentalmente vi sono due tipi di memoria:

° Volatili ° Non volatili

Le memorie “volatili” [RAM Random Access Memory] perdono i dati immagazzinati

quando non sono più alimentate.

Le memorie “non volatili” [ROM Read Only Memory] mantengono i dati

immagazzinati anche in assenza di alimentazione.

In un PC una piccola ROM (2-4 Mb) è usata per memorizzare le condizioni Hw e

Sw per lo start del sistema; esso contiene il programma BIOS (Basic Input Output

System); il sitema operativo della macchine (es. MS WindowsTM) e le applicazioni

del sistema (es. MS Word) vengono invece caricate in RAM prima di essere

eseguite e questo richiede abbastanza tempo.

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 7: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L1 7

MemorieE’ facile chiedersi: “perché il SO non viene memorizzato in una

ROM”? Diventa così facilmente e velocemente accessibile!

La RAM è veloce, sicura, compatta e semplice da gestire; il SO può essere

cambiato o aggiornato senza toccare l’hw del sistema, inoltre gli attuali SO sono

molto grandi e composti da più sw collegati tra loro, ogni sw viene caricato in RAM

nel momento in cui serve mentre le altre applicazioni sono caricati su memorie

statiche molto capienti (es. HD, etc…) e caricati in RAM solo quando servono.

Memorie ROM di tipo FLASH (Elettricamente riscrivibili) sono usate invece in

sistemi mobili di capacità limitata (es MP3 players, memory card, USB pen, etc…)

questo perché questi sistemi utilizzano sw di gestione facilmente aggiornabili,

infatti essi contengono microcontrollori la cui program-memory può essere

“riprogrammata”.

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 8: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L1 8

Input e OutputUn sistema digitale programmabile non è molto utile senza la possibilità di

poter scambiare (Leggere/Scrivere – Read/Write) dati (Segnali elettrici) con

l’esterno!

Le porte sono insiemi di Pin (Collegamenti mediante piedini), basati su

registri e insiemi di control-registers (registri di controllo) che permettono

lo scambio In/Out di “dati” in modo “controllato” mediante un opportuno

“protocollo di comunicazione”.

Vi sono due tipi fondamentali di porte (e quindi modalità di comunicazione):

° Parallela ° Seriale

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 9: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L1 9

Input e Output

In una porta parallela i dati (digitali) vengono trasferiti contemporaneamente su più

collegamenti paralleli tra loro (es. 8 bits, 16 bits, 32 bits, 64 bits, etc…)

In una porta seriale i dati (digitali) vengono trasferiti 1 bit per volta su una singola

linea.

Potenzialmente la porta parallela è più veloce ma necessita di un numero maggiore

di linee di collegamento e quindi vi sono maggiori possibilità di errore nel processo

di scambio; l’hw e il sw di gestione è invece più semplice rispetto alla trasmissione

seriale dove, il pacchetto dati

deve essere organizzato in

gruppi prima di procedere allo

scambio (possibilità di gestione

a pacchetti e in rete [Network

data]).

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 10: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L1 10

Ad esempio le stampanti di vecchia generazione colloquiavano con l’unità centrale

del PC mediante la porta parallela (centronics), che inviava alla stampante 1 byte

(8 bit) per volta mediante un connettore multipin (25-36 pin.

Le nuove stampanti colloquiano con la unità centrale mediante un collegamento

seriale il quale permette lo scambio di 1 bit per volta. Il nuovo standard USB

(Universal Serial Bus) può operare ad una velocità massima di 480 megabits/sec e

seppur più lenta del collegamento parallelo è, sicuramente, molto più veloce

rispetto ai tempi operativi di una stampante. Il collegamento USB avviene con un

semplice e robusto connettore a 4 capi che fornisce anche, se richiesto dalla

periferica, la tensione di alimentazione necessaria al suo funzionamento (N.B. =>

Solo per periferiche che non assorbono molto).

Lo stadard USB è comunque complesso per la gestione sw e richiede molta

accuratezza nella creazione di driver opportuni.

Input e Outputhttp://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 11: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L1 11

Input e Output

Una delle funzioni principali delle PORTE (registri) è quella di separare il data-bus

della CPU con il bus esterno dell’hw considerato; queste porte hanno anche la

funzione di immagazzinare temporaneamente i dati da scambiare (Buffer di

memoria) che successivamente possono essere trasferiti e processati nel modo

opportuno.

I registri (porte) di tipo “seriale” caricano i dati in parallelo dal bus interno della CPU

e poi inviano 1 bit per volta all’esterno operando come uno shift-register. Se viene

adoperato un protocollo di trasmissione asincrono, come ad esempio un RS232

(COM PORT nei vecchi PC), oltre ai bit da scambiare, il protocollo può contenere

anche bit di START, STOP e ERROR CHECK. In definitiva le vecchie trasmissioni

seriali di tipo asincrono, potevano avere pacchetti di 11 bit. Il protocollo USART

(Universal Syncronus/Asyncronus Receive/Transmit) sarà sicuramente

approfondito in corsi opportuni in seguito.

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 12: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L1 12

Il µP contiene :

> Una ALU (Arithmetic Logic Unit ) dove avvengono i calcoli

> diversi registri per la memorizzazione temporanea dei dati e la gestione delle istruzioni

> Un bus interno ad alta velocità> circuiti di controllo e di temporizzazione per

coordinare tutte le attività> tre bus ( Data Bus , Address Bus , Control Bus )

per comunicare col mondo esterno ( dispositivi di memoria , dispositivi di ingresso-uscita)

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 13: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L1 13

Il µP ha bisogno per funzionare:

• Di un’ampia area di memoria esterna sia di lavoro (RAM) che di

massa (hard disk ecc ) , dato che tratta grandi quantità di dati

• Di interfacce verso dispositivi esterni di Input (tastiera,

mouse,scanner, hard disk, floppy , microfoni ….)

• Di interfacce verso dispositivi esterni di Output ( monitor, stampante,

altoparlanti, hard disk, floppy,modem ……)

• Di potenza di alimentazione anche di decine di watt

• ………..

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 14: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L1 14

Il µC invece possiede su un unico chip:• Una CPU RISC

• Una piccola memoria di programma (EPROM-EEPROM)

• Una piccola memoria di lavoro RAM ( alcuni KB)

• Porte di ingresso/uscita

• Contatori, timer, convertitore A/D

• Uart, Pwm, interfacce di comunicazione di vari tipi

Contiene cioè, sia quello che possiede un µP (anche se in quantità molto ridotta), sia parti che il µP non possiede.

Ha ingombro minimo e richiede poca potenza di alimentazione

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 15: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L1 15

RISC significa :Reduced Instruction Set Computing

Elaborazione con insieme di istruzioni ridotto

Le istruzioni perciò :

• Sono poche decine • Sono eseguite molto velocemente• non serve un clock molto elevato per un efficiente

funzionamento ( dai 4-8 MHz per i tipi più semplici, fino a 33 - 50 MHz per i tipi più evoluti)

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 16: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L2 1

Corso introduttivo sui microcontrollori

A. S. 2007 – 2008

Microcontrollori Microchip PIC 8 bit

Nicola [email protected]

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 17: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L2 2

Microcontrollori Microchip PIC8 bit

PIC: Peripheral Interface Control (~1975)

Famiglia 12 (12bit)PIC12CXXX — 400ns Instruction Execution, 33/35 Instructions, 8-Pin Package, 4MHz Internal OscillatorFamiglia 16 (14bit)PIC16C5X — 200ns Instruction Execution, 33 InstructionsPIC16CXXX — 4-12 Interrupts, 200ns Instruction Execution, 35InstructionsFamiglia 17 (16bit)PIC17CXXX — 120ns Instruction Execution Including Multiply, 58InstructionsFamiglia 18 (16bit)PIC18CXXX — 10 MIPS, 77 Instructions, C-compiler EfficientInstruction Set, Software Stack Capability, Table Operation, 4X PLLClock, Switchable Oscillator Sources, 25mA Source/Sink per I/O

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 18: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L2 3

Il microcontrollore che utilizzeremo è il PIC16F877 della Microchip Technology

PIC = Peripheral Interface Controller

(Controllore di periferiche programmabile)

La sua caratteristica più importante sta nella sigla F :

Il programma risiede in una EEPROM FLASH

(Electrically Erasable Programmable Read only Memory)

è modificabile immediatamente anche senza togliere l’integrato dal circuito (modalità : in-circuit programming)

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 19: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L2 4

Il nostro µC• implementa su un unico chip tutte le risorse necessarie per il calcolo, per

l’acquisizione e memorizzazione dei dati e per l’interfacciamento e la comunicazione con il mondo esterno.

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 20: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L2 5

Le periferiche dei microcontrollori

• La ROM (Read Only Memory) è solitamente utilizzata per la memorizzazione delle istruzioni del programma (può essere permanente o non permanente).

• Nella RAM (Random Access Memory) vengono custoditi i dati prodotti e impiegati durante l’esecuzione del programma.

• La EEPROM (Electrical Erasable Programmable Read Only Memory) serve per memorizzare i dati che devono essere conservati anche al termine del programma.

• La CPU (Central Processing Unit) è l’unità che, comunicando con le varie periferiche interne attraverso i BUS, si fa carico di eseguire il programma ed elaborare i dati. Per esempio, l’esecuzione di un programma consiste nella lettura sequenziale da parte della CPU delle istruzioni memorizzate nella memoria di programma.

• I TIMER consentono al sistema di misurare e sincronizzare sia eventi interni che esterni. Sono impiegati anche per la generazione di segnali esterni di controllo.

Le periferiche dei microcontrollorihttp://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 21: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L2 6

Le periferiche dei microcontrollori

• Le I/O PORTS sono le porte di ingresso ed uscita solitamente utilizzate per acquisire dati o per pilotare componenti. Usualmente, una porta I/O è costituita da 8 pin (anche meno qualche volta), programmabili sia come ingressi che uscite.

• Le INTERFACCE SERIALI sono utilizzate per scambiare dati con il mondo esterno. Sono frequenti periferiche di comunicazione sia sincrone (SPI, I2C) che asincrone (USART). Le prime sono utilizzate solitamente per la comunicazione con dispositivi esterni (memorie, sensori), le seconde per comunicare con PC o altri µC (comunicazione seriale RS232 o RS422/485).

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 22: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L2 7

Le periferiche dei microcontrollori

• L’ADC (convertitore Analogico/digitale) converte un segnale esterno analogico (prelevato tipicamente in tensione) in una sua rappresentazione digitale. I microcontrollori che implementano tali dispositivi sono particolarmente adatti per essere impiegati in applicazioni di controllo.

• Il WATCHDOG TIMER, se attivato, genera un reset ad un intervallo prestabilito in fase di programmazione. Questo riavvio ciclico è utile per far uscire il microcontrollore da eventuali situazioni di stallo.

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 23: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L2 8

Le periferiche dei microcontrollori

• Il PULSE WIDTH MODULATION SIGNAL GENERATOR è un dispositivo utilizzato per la generazione di segnali modulati in ampiezza d’impulso. È anche impiegato nella conversione DA per la generazione di segnali analogici facendo transitare il segnale in un filtro passa basso. Se la costante di tempo del filtro è scelta opportunamente, è possibile generare un segnale proporzionale in tensione al duty-cycle.

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 24: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L2 9

Le periferiche dei microcontrollori

Funzioni della CPU

Funzioni principali di una CPU sono:• Trasferimento Dati• Controllo di Flusso (operazioni di salto, jump)• Elaborazioni Aritmetiche e Logiche (addizioni e

sottrazioni,operazioni logiche, incrementi, decrementi, shift, rotazioni, ecc…)

Ogni CPU ha usualmente un array register con:• un Registro Accumulatore (W)• il Program Counter (PCL)• l’Instruction Register (IR)• lo Stack Pointer (SP)

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 25: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L2 10

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 26: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L2 11

Il µC che utilizzeremo: Pic16F877 <> Clock 4 – 20 MHzE’ commercializzato in differenti Packages, come il convenzionale 40-pin DIP (Dual In

Line Package); questo formato è molto usato nelle fasi di sviluppo e prototipi.

Viene riportata di seguito la disposizione dei singoli pin

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 27: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L2 12

Microchip Pic16F877

Molti dei pin sono di I/O, raggruppati in 5 PORT: A[6 pin – RA0..RA5], B[8 pin –

RB0..RB7], C[8 pin – RC0..RC7], D[8 pin – RD0..RD7], E[3 pin – RE0..RE2] per

complessivi 33 pin di I/O. Molti di questi pin possono operare come I/O funzionante in

più modalità, il modo di funzionamento dei singoli pin viene impostata “settando”

opportunamente dei registri di controllo del sistema.

Nella piedinatura riportata si nota come diversi pin presentano più funzioni di I/O (Es.

RA0 – PORTA bit0 può funzionare come I/O digitale oppure come ingresso analogico

AN0).

In particolare notiamo che sia i pin di PORTA che quelli di PORTE possono

funzionare come ingressi digitali I/O oppure come ingressi analogici, per default

in fase di start-up o reset questi pin sono impostati come ingressi analogici, se

richiesto come I/O digitale bisogna agire sui rispettivi registri di controllo; vedremo in

seguito come operare.

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 28: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L2 13

Microchip Pic16F877

PORTB viene anche impiegata per programmare il controllore, cioè caricare il codice di

programma nella FLASH ROM (RB6-RB7 in-circuit programming), inoltre RB0,

RB4..RB7 possono generare interrupt.

PORTC in genere permette l’uso di Timers e possibilità di comunicazione seriale

(serial ports), PORTD in genere si utilizza come normale porta di comunicazione.

Il chip viene alimentato mediante una doppia coppia di pin (Vdd=+5V nominali, Vss=0V).

Spesso i chip funzionano, nei casi previsti, anche con alimentazione compresa tra 2,2V

e 3.1V in casi particolari in cui si sfrutta la alimentazione di pile.

Per il funzionamento occorre un circuito oscillante esterno collegato tra i piedini

CLKIN e CLKOUT; la frequenza di oscillazione può essere compresa tra qualche

decina di KHz (oscillatore R-C) fino a frequenze di 20 MHz (oscillatore al quarzo).

MCLR è il Master-Clear Reset, quando viene portato a livello logico basso permette il

reset della MCU, in condizioni normali deve stare a livello alto (+5V).

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 29: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L2 14

Pic16F877 Block DiagramUn semplice Diagramma a Blocchiche descrive il funzionamento delcontrollore nei suoi blocchi principali;si evidenziano:1. Flash ROM per il program

memory: 8192 locazioni a 14 bit2. RAM file registers 512 locazioni

a 8 bit che comprende anchealcuni speciali registri tipoPORTA, PORTB, etc... . Questazona di RAM e suddivisa in 4banchi di 128 byte ognuna (N.B.Alcuni registri sono ripetuti tra ivari banchi; in totale avremo solo368 locazioni utili)

3. Un registro particolare (W) cheprende il nome di accumulatoreusato sempre con la ALU per ilprocesso dei dati

4. Varie periferiche per il controlloI/O dei dati

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 30: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L2 15

Architettura PIC 16F877http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 31: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L2 16

Memorie interne al 16F877

• FLASH Memory programmi: contiene il “ programma’’ da eseguire, ha la caratteristica di mantenere la programmazione anche quando l’alimentazione al micro viene spenta, e di poter essere cancellata e riscritta con uno speciale apparecchio chiamato programmatore. e` Questa memoria profonda 8Kbytes (8192 parole x 14 bit) => il programma da eseguire al piu` puo` essere composto da una sequenza di 8192 operazioni. Altri tipi di microprocessore hanno invece una memoria programma di tipo PROM: questa puo` essere scritta soltanto una volta.

• RAM dati: il programma, in esecuzione, non puo` scrivere sulla FLASH programmi ( ~ vero …) => l’area di memoria RAM dati e ̀scrivibile in esecuzione e contiene le variabili. Il contenuto di questa memoria viene perso quando si spegne il circuito.

• Esiste un’altra memoria FLASH per i dati (EEPROM).

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 32: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L2 17

Memorie interne al 16F877Ricapitolando:

1) FLASH programmi: 8192 parole2) RAM per le variabili: 368 bytes3) FLASH dati: 256 bytes (e` in pratica un piccolo hard disk, noi non la

useremo per ora)

Le singole locazioni della RAM vengono chiamate registri.I registri della RAM possono essere di due tipi :1) General Purpose: uso generale, tipo per contenere le variabili del

nostro programma.2) Special Function: scrivendo in queste locazioni si istruisce il micro

ad eseguire determinate operazioni. Per esempio se scrivo il dato 0x4 nel registro 0x1F (mnemonica ADCON0) => l’ADC interno al microprocessore comincia la conversione

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 33: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L2 18

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 34: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L2 19

I registri mappati in memoria

I registri sono celle, locazioni, di memoria dove il µC legge e scrive valori fondamentali per il funzionamento. Sono celle che hanno un indirizzo esadecimale ( h ) ; si dice che sono mappati in memoria.

Ad esempio scrivendo/leggendo nelle locazioni 05h e 06h si scrive/legge nelle porte A e B.

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 35: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L2 20

I registri mappati in memoriaSe si programma il PIC in linguaggio macchina (Assembler) occorre precisare molti dettagli per i registri, con istruzioni da mettere all’inizio del programma.

Se si usa un linguaggio ad alto livello (Basic, C, …), le istruzioni da aggiungere sono minori. Tuttavia la mappa di memoria ( cioè l’allocazione dei registri) deve sempre essere conosciuta.

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 36: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L2 21

La gestione delle porte di IN/OUT

E’ fondamentale saper programmare le porte diingresso/uscita.Es. => Ognuno dei pin della porta A (05h) può essereimpostato in modo indipendente come ingresso o come uscitain base al contenuto del registro di controllo TRISA (85h):impostando a 1 il bit di TRISA, il corrispondente pin diPORTA è un ingresso ( se è 0 diventa uscita). Lo stesso valeper la porta B (06h) gestita da TRISB (86h).Esempio : con TRISB = 00111111 , RB6 e RB7 sono linee diuscita ( possono comandare un carico), e le altre linee sonoingressi ( possono accettare [Read/Leggere] un segnaleesterno).

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 37: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L3 1

Corso introduttivo sui microcontrollori

A. S. 2007 – 2008

La programmazione dei PIC

Nicola [email protected]

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 38: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L3 2

Il software per il PIC

• Come per qualsiasi sistema a microprocessore, anche per il PIC ènecessario preparare un programma per farlo funzionare.

• Un programma è costituito da una sequenza di instruzioni, ognunadelle quali identifica univocamente una funzione che il PIC devesvolgere. Ogni istruzione è rappresentata da un codice operativo (ininglese operation code o più brevemente opcode) composto da 14 bited è memorizzata in una locazione di memoria dell'area programma.Tale memoria nel PIC16F877 è di tipo EEPROM e dispone di 8192locazioni ognuna delle quali è in grado di contenere una solaistruzione oppure una coppia istruzione/dato.

• Questi codici, completamente privi di senso per un essere umano,sono gli unici che il PIC è in grado di capire. Per fortuna esistonoalcuni strumenti che consentono di facilitare il compito alprogrammatore rendendo le istruzioni più comprensibili.

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 39: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L3 3

Il programma per il PIC si può scrivere in linguaggio assembly o assembler , usando direttamente le 35 istruzioni riconosciute dal microcontrollore.

Il “codice” si scrive come un file di testo . Esso viene convertito in codice binario da un programma chiamato Assemblatore. Il file creato contiene codici esadecimali e ha estensione . HEX

Per trasferire poi il file HEX nella memoria di programma del PIC occorre un dispositivo chiamato Programmatore

Si usa un Personal Computer : • per scrivere il testo del programma, con un editor di testi ( non

usando Word ! )• per convertirlo in codice eseguibile, usando l’Assemblatore• per scriverlo nel PIC, usando un Programmatore.

Il software per il PIC – 1° modo

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 40: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L3 4

Il software per il PIC – 1° modo

La casa costruttrice Microchip fornisce un pacchetto integrato chiamato MPLAB [Download gratuito => http://www.microchip.com].

Esso comprende :

MPLAB Editor : editor di testo per scrivere il testo del programma

MPASM : il compilatore che traduce il testo in codice eseguibile (usando il codice esadecimale)

Il compilatore MPASM è liberamente usabile. Si scarica dal sito della Microchip e si può usare indipendentemente dall’editor.

Lavorando in Assembler, la parte più difficile è il debug , cioè l’eliminazione degli errori di programmazione. Esistono software di simulazione, a pagamento in genere, che consentono di controllare il

funzionamento del programma

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 41: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L3 5

.asm Contiene il codice sorgentein formato assembler.

.inc File header, intestazioni e defiizionihardware per il micro

.lst Contiene l’intero codice assemblere varie informazioni di compilazione

.tre Albero di allocazione dellamemoria.

.err File con errori di compilazionee numeri di linea.

.hex File con il codice macchina, per laprogrammazione del microcontrollore

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 42: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L3 6

Il software per il PIC – 1° modoEsempio di file ASM…RestoreLoader

lfsr 0, buff ; Construct instructions in buffmovlw UPPER Main ; Upper byte of address to mainmovwf t1+3bcf STATUS, C ; Clear carry bitrrcf t1+3, F ; Rotate through carrymovlw B'11110000' ; Second word in goto must start with F.iorwf t1+3, Fmovlw HIGH Main ; High byte of address to main.movwf t1+2rrcf t1+2, Fmovlw LOW Main ; Low byte of address to mainmovwf t1rrcf t1, FMOVLF 0xEF, t1+1 ; High byte in first word is EFlfsr 1, t1MOVLF 0x04, countrest_repmovff POSTINC1, POSTINC0decf count, Fbnz rest_repmovlw 0xFF ; two last nopmovwf POSTINC0 ;movwf POSTINC0 ;movwf POSTINC0 ; buff should now contain 8 bytes :

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 43: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L3 7

Set istruzioni PIC16F84 - 877Sintassi Descrizione Microchip Operazione equivalente

ADDLW k Add Literal and W W = W + kADDWF f,d Add W and f d = W + f (dove d può essere W o f)ANDLW k AND Literal with W W = W AND kANDWF f,d AND W with f d = W AND f (dove d può essere W o f)BCF f,b Bit Clear f f(b) = 0BFS f,b Bit Set f f(b) = 1BTFSC f,b Bit Test f, Skip if Clear f(b) = 0 ? Si, salta una istruzioneBTFSS f,b Bit Test f, skip if Set f(b) = 1 ? Si, salta una istruzioneCALL k Subroutine Call Chiama la subroutine all'indirizzo kCLRF f Clear f f = 0CLRW Clear W Register W = 0CLRWDT Clear Watchdog Timer Watchdog timer = 0

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 44: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L3 8

DECF f,d Decrement f d = f -1 (dove d può essere W o f)

DECFSZ f,d Decrement f, Skip if 0 d = f -1 (dove d può essere W o f) se d = 0 salta

GOTO k Go to address Salta all'indirizzo k

INCF f,d Increment f d = f +1 (dove d può essere W o f)

INCFSZ f,d Increment f, Skip if 0 d = f +1 (dove d può essere W o f) se d = 0 salta

IORLW k Inclusive OR Literal with W W = W OR k

IORWF f,d Inclusive OR W with f d = f OR W (dove d può essere W o f)

MOVLW k Move literal to W W = k

MOVF f,d Move f d = f (dove d può essere W o f)

MOVWF f Move W to f f = W

NOP No Operation Nessuna operazione

OPTION Load Option Register OPTION = W

RETIE Return from Interrupt Ritorna da un interrupt handler

RETLW k Return Literal to W Ritorna da una subroutine con W = k

RETURN Return from Subroutine Ritorna da una subroutine

RLF f,d Rotale Left f through Carry d = f << 1 (dove d può essere W o f)

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 45: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L3 9

RLF f,d Rotale Left f through Carry d = f << 1 (dove d può essere W o f)RRF f,d Rotale Right f through Carry d = f >> 1 (dove d può essere W o f)SLEEP Go into Standby Mode Mette in standby il PICSUBLW k Subtract W from Literal W = k - WSUBWF f,d Subtract W from f d = f - W (dove d può essere W o f)SWAPF f Swap f f = Swap dei bit 0123 con 4567 di fTRIS f Load TRIS Register TRIS di f = WXORLW k Exclusive OR Literal with W W = W XOR kXORWF f,d Exclusive OR W with f d = f XOR W (dove d può essere

Set istruzioni PIC16F84 - 877http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 46: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L3 10

Il programma per il PIC si può scrivere usando un Compilatore ad alto livello , ossia un software che usa istruzioni a livello più elevato , per velocizzare e facilitare la stesura del programma .

Il Compilatore può essere

• in linguaggio BASIC ( ad esempio il PicBasic)

• in linguaggio C

• di tipo grafico, ossia che usa simboli grafici al posto delle istruzioni. Ad esempio usa il simbolo di una porta AND al posto dell’istruzione assembler equivalente . Due esempi di compilatori grafici sono il Visual Parsic e il Proton+.

I compilatori devono essere acquistati ; i più semplici in Basic o C sono a basso costo o anche freeware. Alcuni compilatori, come il Proton+, offrono delle versioni di prova dette Lite , cioè con funzioni limitate .

Il software per il PIC – 2° modo

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 47: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L3 11

Il software per il PIC – 2° modohttp://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 48: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L3 12

Il sistema di sviluppo CCS PCWH

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 49: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L3 13

Programmazione dei PIC

Esempio di file HEX:1000000008308A00C92D0000FF00030E8301A10003:100010000A08A0008A010408A2007708A300780853:10002000A4007908A5007A08A6007B08A70083131E:1000300083128B1E1D280B1936288C308400801EDD:1000400023288C1A3928220884002308F700240862:10005000F8002508F9002608FA002708FB00200808:100060008A00210E8300FF0E7F0E09008A110A12FA:10007000E4288A110A1287280A108A100A118207B6:1000800020344D34413441345234533420345334C9:1000900054344134523454345534503420344D3473....................:103F10008A1525308316B0000A128A1183120426EE:103F20000A168A1501308316B0000A128A1183120C:103F300004260A168A1583162B08B0000A128A1165:103F4000831204260A168A1523308316B0000A123B:103F50008A11831204260A168A15AE2F8A150A12B0:103F6000B12E0A148A140A158207FE2CFE2CFE2C90:023F7000FE2C25:02400E00323F3F:00000001FF;PIC16F876

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 50: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L3 14

Programmazione del PIC

La famiglia PIC16F8X , che comprende il 16F84, il 16F877 ecc. , può essere programmata :

• separatamente, con un Programmatore

• direttamente, mentre si trova già montato nel circuito finale , aggiungendo nello schema del progetto un adatto connettore in più ( programmazione in-circuit)

Dato che il PIC ha una memoria Flash di programma, sono possibili veloci variazioni o aggiornamenti del codice programma.

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 51: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L3 15

Dopo aver scritto il programma , cioè il codice sorgente, lo si compila: viene creato un file oggetto con estensione .HEX, il quale deve essere caricato nella memoria di programma del PIC.

Per caricare il file .HEX nella memoria programma del PIC occorre:• Un personal computer• Un programmatore• Il software di gestione del programmatore

Programmazione del PIC

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 52: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L3 16

Il primo esercizio => Blinking LedLed lampeggiante che si accende e si spegne ogni mezzo secondo

Punti fongamentali per:

Analisi, progettazione e stesura del software

•Analisi e stesura per punti cronologici del problema

•Flow – Charts

•Scrittura del codice

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 53: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L3 17

Analisi della soubroutine di ritardo di 500 msIl concetto è molto semplice: il microcontrollore deve aspettare 500 ms “senza compiere alcuna operazione attiva”.Ad esempio se il controllore

1. Decrementa il contenuto di un registro (1 µs)2. Torna a 1. se il contenuto del registro è <> 0 [Confronto] (2 µs)

In totale avremo un tempo di esecuzione pari a 3 µs. Se ripetiamo questa operazione per 167.000 volte avremo un tempo di esecuzione pari a 501.000 µs cioè circa 500 ms

Il nostro controllore possiede registri ad 8 bit allora possiamo sfruttare la seguente logica sfruttando 2 registri ad 8 bit e ricordando che i registri sono ciclici cioè 00 - 1= FF

1. Riserviamo due registri (delayL e delayH); set delayL 0 e delayH 02. Decrement delayL 1 µs3. se delayL ≠ 0 jump 2. else 4. 2 µs4. questa operazione viene ripetuta per FF5. (256) volte cioè per 256 x 3 = 768 µs6. 4. Decrement delayH 1 µs7. se delayH ≠ 0 jump 2. else 6. 2 µs8. questa operazione viene ripetuta per FF9. (256) volte cioè per 256 x 3 = 768 µs

Considerando che i due cicli sono “annidati” avremo che i due registri tornano ambedue a zero dopo un tempo pari a 768 x 768 = 589. 824 µs cioè quasi 500 ms.

Fine Routine Return

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 54: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L3 18

Analisi della soubroutine di ritardo di 500 ms -> Flow Chart

Il concetto è molto semplice: il microcontrollore deve aspettare 500 ms “senza compiere alcuna operazione attiva”.Ad esempio se il controllore

• Decrementa il contenuto di un registro (1 µs)• Torna a 1. se il contenuto del registro è <> 0 [Confronto] (2 µs)

In totale avremo un tempo di esecuzione pari a 3 µs. Se ripetiamo questa operazione per 167.000 volte avremo un tempo di esecuzione pari a 501.000 µs cioè circa 500 ms

Il nostro controllore possiede registri ad 8 bit allora possiamo sfruttare la seguente logica sfruttando 2 registri ad 8 bit e ricordando che i registri sono ciclici cioè 00 - 1= FF

1. Riserviamo due registri (delayL e delayH); set delayL 0 e delayH 0

2. Decrement delayL 1 µs

3. se delayL ≠ 0 jump 2. else 4. 2 µs

4. questa operazione viene ripetuta per FF5. (256) volte cioè per 256 x 3 = 768 µs6. Decrement delayH 1 µs

7. se delayH ≠ 0 jump 2. else 6. 2 µs

8. questa operazione viene ripetuta per FF

9. (256) volte cioè per 256 x 3 = 768 µs

Considerando che i due cicli sono “annidati” avremo che i due registri tornano ambedue a zero dopo un tempo pari a 768 x 768 = 589. 824 µs cioè quasi 500 ms.

Fine Routine Return

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 55: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L3 19

Il Listato completo

;***********************************************************;Led blinking -> ON/OFF ogni 500 ms;Led collegato su RB0;N.A. October 2004;********************************************PROCESSOR 16F877A ;Direttive preprocessore

RADIX DECINCLUDE "P16F877A.INC"

ERRORLEVEL -302__CONFIG 3FF1H

LED EQU 0 ;Bit 1 della porta relativaORG 20h ;Registro general purpose

ram RES 2 ;Riservo due registri a 8 bitORG 00H ;Start reset vectorbcf STATUS,RP1 ;Scelgo il Bank 1bsf STATUS,RP0 ;RP1=0 RP0=1movlw 00111111B ;Bit PORTA come inputmovwf TRISAmovlw 11111110B ;Bit1 PORTB in Outmovwf TRISB ;gli altri bit in inputbcf STATUS,RP0 ;Torno al Bank0bsf PORTB,LED ;Accendo il Led

Loop ; Labelcall Delay500 ;Delay 500 msbtfsc PORTB,LED ;Spengo il ledgoto Spegni ;se è accesobsf PORTB,LED ;Accendo il ledgoto loop ;Jump a Loop

Spegnibcf PORTB,LED ;Spengo il led

goto loop ;Jump a Loop

Delay500 ;Sobroutine di ritardoClrf ram ;Azzero i due registriClrf ram+1 ;riservati

Ciclo_di_ritardodecfsz ram,1 ;Decremento il registro ramgoto Ciclo_di_ritardo ;per 256 voltedecfsz ram+1,1 ;Decremento il registro ram +1goto Ciclo_di_ritardo ;per 256 voltereturn ;Fine soubroutine

END ;Indispensabile alla fine del listato

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 56: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L3 20

PROCESSOR 16F877PROCESSOR è una direttiva del compilatore assembler che consente di definire per quale microprocessore è stato scritto il nostro source. In questo caso informiamo il compilatore che le istruzioni che abbiamo inserito nel nostro source sono relative ad un PIC16F877RADIX DECLa direttiva RADIX serve ad informare il compilatore che i numeri riportati senza notazione, sono da intendersi come numeri decimali

ORG 00H Questa seconda direttiva fa riferimento ad un indirizzo in area programma nella EEPROM. Da questo punto in poi andremo infatti ad inserire le istruzioni mnemoniche che il compilatore dovrà convertire negli opportuni opcode per il PIC.Il primo opcode eseguito dal PIC dopo il reset è quello memorizzato nella locazione 0, da qui il valore 00H inserito nella ORG.

Analisi del listato DirettiveLe direttive non sono delle istruzioni mnemoniche che il compilatore traduce nel rispettivo opcode, ma delle semplici indicazioni rivolte al compilatore per determinarne il funzionamento durante la compilazione

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 57: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L3 21

La direttiva EQU (parola riservata)è molto importante in quanto ci consente di definire delle costanti simboliche all'interno del nostro codice sorgente. In particolare :

LED EQU 3la parola LED (nome scelto da noi) da questo punto in poi nel sorgente sarà equivalente al valore 3

Nel prossimo esempio incontriamo una (label)etichetta : RAM e una direttiva: RES. La direttiva RES indica al compilatore che intendiamo riservare un certo numero di byte o meglio di file register all'interno dell'area dati:

ORG 20hram RES 2

in questo caso verranno riservate la locazione 20H e 21H . La label RAM, dove RAM è un nome scelto da noi, è un marcatore che nel resto del codice sorgente assumerà il valore dell'indirizzo in cui è stato inserito.

Analisi del listato Direttive

ORG 00HQuesta seconda direttiva ORG fà riferimento ad un indirizzo in area programma (nella EEPROM) anzichè in area dati.Da questo punto in poi andremo infatti ad inserire le istruzioni mnemoniche che il compilatore dovrà convertire negli opportuni opcode per il PIC.

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 58: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L3 22

• Il primo opcode eseguito dal PIC dopo il reset è quello memorizzato nella locazione 0, da qui il valore 00H inserito nella ORG.

bsf STATUS,RP0Ecco finalmente la prima istruzione mnemonica completa di parametri.

• I PIC hanno una CPU interna di tipo RISC per cui ogni istruzione occupa una sola locazione di memoria, opcode e parametri inclusi. In questo caso l'istruzione mnemonica bsf sta per BIT SET FILE REGISTER ovvero metti a uno (condizione logica alta) uno dei bit contenuti nella locazione di ram specificata.

• Il parametro STATUS viene definito nel file P16F877A.INC tramite una direttiva EQU. Il valore assegnato in questo file è 03H e corrisponde ad un file register (ovvero una locazione ram nell'area dati) riservato.

• Anche il parametro RP0 viene definito nel file P16F877A.INC con valore 05H e corrisponde al numero del bit che si vuole mettere a uno. Ogni file register è lungo 8 bit e la numerazione di ciascuno parte da 0 (bit meno significativo) fino ad arrivare a 7 (bit più significativo)

• Questa istruzione in pratica mette a 1 il quinto bit del file register STATUS, è necessaria per accedere ai file register TRISA e TRISB come vedremo ora.

movlw 00011111B

• Questa istruzione sta a significare: MOVE LITERAL TO W REGISTER ovvero muovi un valore costante nell'accumulatore. L'accumulatore è un particolare registro utilizzato dalla CPU in tutte quelle situazioni in cui vengono effettuate operazioni tra due valori oppure in operazioni di spostamento tra locazioni di memoria. In pratica è un registro di appoggio utilizzato dalla CPU per memorizzare temporaneamente un byte ogni volta che se ne presenta la necessità.

• Il valore costante da memorizzare nell'accumulatore è 00011111B ovvero un valore binario a 8 bit dove il bit più a destra rappresenta il bit 0 o bit meno significativo.

Analisi del listato OpCodehttp://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 59: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L3 23

Nell'istruzione successiva:

movwf TRISA• il valore 00011111 viene memorizzato nel registro TRISA (come per il registro

STATUS anche TRISA è definito tramite una direttiva EQU) la cui funzione èquella di definire il funzionamento di ogni linea di I/O della porta A. Inparticolare ogni bit ad uno del registro TRISA determina un ingresso sullarispettiva linea della porta A mentre ogni 0 determina un'uscita.

Analisi del listato OpCode

Nella seguente tabella viene riportata la configurazione cheassumeranno i pin del PIC dopo l'esecuzione di questa istruzione:

Come è possibile vedere i bit6 e 7 non corrispondono anessuna linea di I/O e quindiil loro valore non ha alcunainfluenza.

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 60: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L3 24

Le due istruzioni successive svolgono le stesse funzioni per la porta B del PIC:

movlw 11111110B

Movwf TRISB

Analisi del listato OpCode

in questo caso la definizione delle linee sarà la seguente:

Si noti come il valore 0 nel bit 0 del registro TRISBdetermini la configurazione in uscita della rispettiva lineadel PIC.Nella nostra applicazione infatti questa linea viene utilizzataper pilotare il LED da far lampeggiare.

L'istruzione movwf TRISB trasferisce ilvalore contenuto nell'accumulatore(inizializzato opportunamente conl'istruzione movlw 11111110 B) nelregistro TRISB. Il significato di movwfè infatti MOVE W TO FILEREGISTER.

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 61: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L3 25

bcf STATUS,RP0• Questa istruzione è simile alla bsf vista in precedenza, con la sola differenza che azzera il bit

anzichè metterlo a uno. La sigla un questo caso è BIT CLEAR FILE REGISTER.• Dal punto di vista funzionale questa istruzione è stata inserita per consentire l'accesso ai

registri interni del banco 0 anzichè ai registri interni del banco 1 di cui fanno parte TRISA e TRISB.N.B:=> La direttiva assembler “BankSel …..” Viene oggi suggerita dalla microchip per la selezione dei registri dei rispettivi banchi di memoria; in seguito vedremo un uso appropriato di questa direttiva.

bsf PORTB,LED

• Con questa istruzione viene effettuata la prima operazione che ha qualche riscontroall'esterno del PIC. In particolare viene acceso il led collegato alla linea RB0.PORTB è una costante definita in P16F877A.INC e consente di referenziare il fileregister corrispondente alle linee di I/O della porta B mentre LED è il numero dellalinea da mettere a 1. All'inizio del source la costante LED è stata definita pari a 0,quindi la linea interessata sarà RB0.

Analisi del listato OpCode

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 62: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L3 26

Loop• Questa linea contiene una label ovvero un riferimento simbolico ad un indirizzo di memoria. Il valore della

label, come detto in precedenza, viene calcolato in fase di compilazione in base al numero di istruzioni, alledirettive ORG e alle altre istruzione che in qualche modo allocano spazio nella memoria del PIC. In questocaso, se contiamo le istruzioni inserite a partire dall'ultima direttiva ORG possiamo calcolare il valore cheverrà assegnato a MainLoop ovvero 09H.

• In realtà il valore che assumono le label non ha molta importanza in quanto il loro scopo è proprio quello dievitare di dover conoscere la posizione precisa degli opcode nella memoria del PIC permettendo comunquedi referenziare una determinata locazione di memoria.

• In questo caso la label Loop viene utilizzata come punto di ingresso di un ciclo (dall'inglese Loop) diaccensione e spegnimento del led, ovvero una parte di codice che verrà ripetuta ciclicamente all'infinito.

call Delay500• Questa istruzione dermina una chiamata (dall'inglese call) ad una subroutine che inizia in corrispondenza

della label Delay.• Le subroutine sono delle parti di programma specializzare ad effettuare una funzione specifica. Ogni

qualvolta è necessaria quella funzione è sufficiente richiamarla con una sola istruzione, anzichè ripetereogni volta tutte le istruzioni necessarie ad effettuarla. In questo caso la subroutine inserisce un ritardo parial tempo di accensione e spegnimento del led.

Analisi del listato OpCode

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 63: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L3 27

btfsc PORTB,LED• Il significato di questa istruzione è BIT TEST FLAG, SKIP IF CLEAR ovvero controlla lo stato di un bit all'interno di un

registro e salta l'istruzione successiva se il valore di tale bit è zero. Il bit da controllare corrisponde alla linea di uscita cui ècollegato il diodo led, tramite questo test potremo determinare quindi se il led è acceso o spento e quindi agire diconseguenza, ovvero se il led è gia acceso lo spegneremo, se il led è spento lo accenderemo.

goto Spegni• Questa istruzione è un salto incondizionato (dall'inglese GO TO, vai a)alla label SetToZero dove troveremo le istruzioni per

spegnere il led. Questa istruzione verrà saltata dall'istruzione successiva se il led è gia spento.

bsf PORTB,LEDgoto Loop

• Queste due istruzioni semplicemente accendono il led e rimandano il programma all'ingresso del ciclo di lampeggiamento.

Spegnibcf PORTB,LED

goto Loop• Queste istruzioni semplicemente spengono il led e rimandano il programma all'ingresso del ciclo di lampeggiamento.

Analisi del listato OpCode

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 64: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L3 28

• Come descritto in precedenza questa subroutine inserisce un ritardo di circa un secondo e può essere chiamata più volte nel source tramite l'istruzione call Delay.

Analisi del listato La soubroutine Delay

La soubroutine di ritardo

Delay500clrf ramclrf ram+1

Ciclo_di_ritardodecfsz ram,1goto Ciclo_di_ritardodecfsz ram+1,1goto Ciclo_di_ritardoreturn

END

Delay e Ciclo_di_ritardo sono due label.

Delay identifica l'indirizzo di inizio della subroutine eviene utilizzato per le chiamate dal corpo principale delprogramma.

Ciclo_di_ritardo viene chiamato internamente dallasubrountine e serve come punto di ingresso per il ciclo(dall'inglese loop) di ritardo. In pratica il ritardo vieneottenuto eseguendo migliaia di istruzioni che non fannonulla !

Questo tipo di ritardo si chiama ritardo software o ritardo a programma. E' il tipo di ritardo più semplice daimplementare e può essere utilizzato quando non è richiesto che il PIC esegua altri compiti mentre esegueil ritardo.

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 65: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L3 29

Clrf ramclrf ram +1

• CLEAR FILE REGISTER azzerano le duelocazioni di ram riservate precedentemente conl'istruzione: ram RES 2

• Queste due locazioni sono adiacenti a partire dall'indirizzo referenziato dalla label ram (in pratica 20H e 21H

decfsz ram,1

• L'istruzione significa DECREMENT FILEREGISTER, SKIP IF ZERO ovvero decrementa ilcontenuto di un registro (in questo caso Count esalta l'istruzione successiva se il valore raggiuntoè zero). Se il valore raggiunto non è zero vieneeseguita l'istruzione successiva:

goto Ciclo_di_ritardo

• Che rimanda rimanda l'esecuzione all'inizio delciclo di ritardo.

Analisi del listato La soubroutine Delay

La soubroutine di ritardo

Delay500clrf ramclrf ram+1

Ciclo_di_ritardodecfsz ram,1goto Ciclo_di_ritardodecfsz ram+1,1goto Ciclo_di_ritardoreturn

END

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 66: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L3 30

• Una volta raggiunto lo zero con il contatore ramvengono eseguite le istruzioni:

decfsz ram+1,1goto Ciclo_di_ritardo

• Che decremetano il registro seguente fino a che anchequesto raggiunge lo zero. Il registro ram+1 inparticolare verrà decrementato di uno ogni 256decrementi di ram.

Quando anche ram +1 avrà raggiunto lo zero l'istruzione:

return

• il cui significato è RETURN FROM SUBROUTINEdeterminerà l'uscita dalla routine di ritardo ed ilproseguimento dell'esecuzione dall'istruzionesuccessiva la call Delay.

Analisi del listato La soubroutine Delay

La soubroutine di ritardo

Delay500clrf ramclrf ram+1

Ciclo_di_ritardodecfsz ram,1goto Ciclo_di_ritardodecfsz ram+1,1goto Ciclo_di_ritardoreturn

END

Per finire END è una direttiva (indispensabile)che indica al compilatore la fine del sourceassembler.

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 67: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L4 1

Corso introduttivo sui microcontrollori

A. S. 2007 – 2008

La programmazione dei PICAssembler: esempi - applicazioni

Nicola [email protected]

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 68: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L4 2

La programmazione dei PICUn programma in assembler è scritto come codice sorgente (un semplice file ditesto) su un normale PC, qualsiasi text-editor (es. notepad, blocco note di MSWindows, etc…) può essere usato.Il PIC development system software MPLAB (dowload gratuito suhttp://www.microchip.com) contiene un editor di testo per la scrittura di codice.Le istruzioni sono semplici e facilmente consultabili sul Data-Sheet delmicrocontrollore PIC16F877 (Table 13-2); il codice scritto viene salvato conestensione “*.ASM “ (Es. Led_Blinking.asm).Il codice sorgente, in assembler, viene quindi “compilato” (convertito inlinguaggio macchina) mediante il compilatore MPASM (Gratuito e compreso inMPLAB) che converte in binario il codice sorgente (visibile con un editoresadecimale – Hex editor, come sequenza di numeri esadecimali). L’estensione diquesto file è “*.HEX” (Es. Led_Blanking.hex).Mediante un opportuno programmatore (opportunamente interfacciato al PC),questo “codice binario” viene memorizzato nella FLASH PROGRAM MEMORYdel controllore.

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 69: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L4 3

Esempio di file HEX:1000000008308A00C92D0000FF00030E8301A10003:100010000A08A0008A010408A2007708A300780853:10002000A4007908A5007A08A6007B08A70083131E:1000300083128B1E1D280B1936288C308400801EDD:1000400023288C1A3928220884002308F700240862:10005000F8002508F9002608FA002708FB00200808:100060008A00210E8300FF0E7F0E09008A110A12FA:10007000E4288A110A1287280A108A100A118207B6:1000800020344D34413441345234533420345334C9:1000900054344134523454345534503420344D3473....................:103F10008A1525308316B0000A128A1183120426EE:103F20000A168A1501308316B0000A128A1183120C.....................:103F6000B12E0A148A140A158207FE2CFE2CFE2C90:023F7000FE2C25:02400E00323F3F:00000001FF;PIC16F876

La programmazione dei PIC;************** Esempio file assembler *************;Led blinking -> ON/OFF ogni 500 ms;Led collegato su RB0;N.A. October 2004;********************************************PROCESSOR 16F877A ;Direttive preprocessore

RADIX DECINCLUDE "P16F877A.INC"

ERRORLEVEL -302__CONFIG 3FF1H

LED EQU 0 ;Bit 1 della porta relativaORG 20h ;Registro general purpose

ram RES 2 ;Riservo due registri a 8 bitORG 00H ;Start reset vectorbcf STATUS,RP1 ;Scelgo il Bank 1bsf STATUS,RP0 ;RP1=0 RP0=1movlw 00111111B ;Bit PORTA come inputmovwf TRISAmovlw 11111110B ;Bit1 PORTB in Outmovwf TRISB ;gli altri bit in inputbcf STATUS,RP0 ;Torno al Bank0bsf PORTB,LED ;Accendo il Led

Loop ; Labelcall Delay ;Delay 500 msbtfsc PORTB,LED ;Spengo il ledgoto Spegni ;se è accesobsf PORTB,LED ;Accendo il ledgoto loop ;Jump a Loop

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 70: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L4 4

Dopo aver scritto il programma , cioè il codice sorgente, lo sicompila: viene creato un file oggetto con estensione .HEX, il qualedeve essere caricato nella memoria di programma del PIC.

Per caricare il file .HEX nella memoria programma del PIC occorre:• Un personal computer• Un programmatore• Il software di gestione del programmatore

La programmazione dei PIChttp://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 71: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L4 5

La Demo-Board “AnxaPic3”

16

15

17

19

18

20

14 121110

9

6

8

7

6

3

1

45

13

2

1. LCD Display2. LCD Contrasto – Luminosità3. Cicalino4. Alimentazione 9-12 Vcc5. Power ON-OFF6. ICD2 - PicKit2 Programmer7. RS232 Com8. EEPROM9. Cicalino Pin select10. Pull-Up [A4-B5-B4-B2-B1-B0] 11. I2C Conn12. 1-Wire Conn13. Tastierino 4x4 Conn14. Expansion-Replicate PORT15. Expansion BUS Conn16. RTC Conn17. ADC Pot18. RB0 Interrupt Sw19. Reset Sw20. Display Pin Select21. I2C Pull-Up22. RS232 Rx-Tx En/Dis23. [RA0 ADC – LD1] ON/OFF

10

23

21

22

Pull-Up [A4-B5-B4-B2-B1-B0]

23

21 20 22

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 72: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L4 6

La Demo-Board AnxaPic3 [Schema elettrico]

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 73: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L4 7

La programmazione dei PICPIC Software

Il sistema integrato “MPLAB IDE” è il mezzo più efficace per lavorare con imicrocontrollori PIC.

MPLAB viene eseguito su un PC, quando il codice è scritto e compilato, ilfunzionamento dello stesso può essere “simulato” e “verificato” all’interno diMPLAB stesso, successivamente il programma può essere memorizzato nellaFlash Memory Program del controllore mediante opportuno programmatorecollegato (USB/RS232C/PARALLEL) con un PC.

Uno degli strumenti più utili eversatili, per programmare il PIC,è l’ICD (In Circuit Debugger) -Programmer che permette diprogrammare oppure effettuare ilDebug (verifica codice step bystep) in modo diretto mediantel’ausilio del collegamento“USB/RS232C” con un PC e iPIN RB6 e RB7 del controllore.

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 74: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L4 8

La programmazione dei PICIl sistema di sviluppo MPLAB IDE

Il sistema integrato MPLAB IDE ha un text-editor incluso perla scrittura del codice; può essere scaricato gratuitamente dalsito della Microchip [http://www.mcrochip.com]

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 75: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L4 9

La programmazione dei PICIl sistema di sviluppo MPLAB IDE

MPLAB è un “sistema integrato” che permette di creare e sviluppare un programmacon estrema facilità. Lo si può descrivere come uno ambiente di sviluppo (IDE) per undeterminato linguaggio standard necessario per programmare un MicrocontrolloreMicrochip. Non occore eseguire funzioni mediante riga di comando ma tale ambientedi sviluppo è in grado di supportare l’operatore in tutte le fasi, dalla scrittura delcodice fino alla simulazione e anche fino alla fase di emulazione con opportuno hw.

Creazione di un progetto

La preparazione del programma da caricare nel

microcontrollore richiede i seguenti passi:

1. Creare un progetto

2. Scrivere il programma

3. Convertirlo in binario (compilare)

La prima schermata dopo l’apertura di MPLAB

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 76: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L4 10

La programmazione dei PICIl sistema di sviluppo MPLAB IDE

Creazione di un progetto: Creare un nuovo progetto

Cliccare su PROJECT e successivamente suPROJECT WIZARD

sarà aperta la seguente finestra. Cliccare su NEXT per continuare

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 77: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L4 11

La programmazione dei PICIl sistema di sviluppo MPLAB IDE

Creare un nuovo progetto

Occorre adesso scegliere l’appropriatomicrocontrollore della famiglia PIC. Nellaseguente videata viene scelto ilPIC16F84A.

N.B: => Noi lavoreremo sempre con i PIC16F877/16F877A

Scegliere il microcontrollore appropriato. Cliccare su NEXT per continuare

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 78: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L4 12

Creare un nuovo progetto

Selezionare il corretto “language toolsuite”Cliccare su NEXT per continuare

Nome del progetto.Cliccare su NEXT per continuare

La programmazione dei PICIl sistema di sviluppo MPLAB IDE

Il passo successivo consiste nel definire illinguaggio che si intende utilizzare per laprogrammazione. Se useremo il linguaggioassembler, occorre selezionare l’opzione“Microchip MPASM Toolsuite”

Indichiamo il nome del progetto e il percorso. Ilnome dovrebbe riflettere lo scopo e il contenutodel programma

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 79: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L4 13

La programmazione dei PICIl sistema di sviluppo MPLAB IDE

Creare un nuovo progetto

si aprirà la finestra “summary” contenente i parametri precedentemente definiti

Cliccare FINISH per creare il progetto

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 80: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L4 14

La programmazione dei PICIl sistema di sviluppo MPLAB IDE

Scrivere il programma: Creare un nuovo file in assembler

Dopo aver creato il progetto mediante il wizardapparirà la seguente schermata.

Adesso dobbiamo scrivere il programma,questa operazione richiede ulteriori file dadover creare/aprire e aggiungere al progetto.

Cliccare su FILE > NEW, si aprirà unanuova finestra all’interno della workingarea di MPLAB (La nuova finestra conterràil programma che si dovrà scrivere). Dopoaver aperto il nuovo file dobbiamo salvarlo(è buona regola), useremo il solito percorsoin cui è salvato l’intero progetto, ed il nomedel file sarà “Blink.asm", questo è un nomeche ci permetterà di ricordare la natura delprogramma (ad esempio lampeggio di undiodo led collegato sul pin RD3 della portaD del microcontrollore della DemoBoardAnxaPIC).

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 81: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L4 15

La programmazione dei PICIl sistema di sviluppo MPLAB IDE

Premere il tastodestro del mousesul “source file”nella finestra diprogetto.

Inserimento di un nuovo file Assembler nel progetto. Inomi di file e progetto sono puramente indicativi.

Per includere un nuovo file al progetto.

Questo aprirà unapiccola finestracon due opzioni.

Scegliamo: "AddFiles"

Creare un nuovo file in assembler

Si apre una nuova ‘browse window’ cerchiamo lanostra cartella di progetto e selezioniamo il file".asm", da aggiungere al progetto..

Inserimento di un nuovo file Assembler nel progetto.N.B. => Nomi puramente indicativi!

Creare un nuovo file in assembler

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 82: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L4 16

La programmazione dei PICIl sistema di sviluppo MPLAB IDE

Creare un nuovo file in assembler

La fnestra di progetto dopoaver aggiunto il file assembler.

Scriviamo nella finestra di editor il codice “assembler” per il nostro programma.

; Anxa3 Led Blinking; BLINK.ASM; -------------------------------------------------; LED ON-OFF con ritardo di circa 500 ms; Il led è collegato su RD3; -------------------------------------------------; Hardware => AnxaPic3 v3.0 rA; Processor => Pic16F877; Clock => 10 MHz; -------------------------------------------------; (C)N.A. August 2007;**************************************************

PROCESSOR 16F877RADIX DEC

; INCLUDE "P16F877.INC"; --- Setup of PIC config fuses……………………………………………………..

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 83: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L4 17

La programmazione dei PICIl sistema di sviluppo MPLAB IDE

Creare un nuovo file in assembler

La fnestra di editor può essere personalizzata con numeri di riga e altro => [Edit > Properties …]

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 84: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L4 18

La programmazione dei PICIl sistema di sviluppo MPLAB IDE

Compilare il progetto: Creare un file .hex

Al termine della scrittura del programma nella finestra dieditor, dopo aver verificato la correttezza del codice scritto eaver salvato il file con estensione “.asm”, siamo pronti acompilare il progetto, per farlo andiamo su PROJECT ->BUILD ALL; questo comando traduce il file assembler in unfile eseguibile in formato HEX (esadecimale). Apparirà unafinestra di log nella quale verrà indicato se la compilazione èandata a buon fine. "BUILD SUCCEEDED" è un messaggioche indica la corretta compilazione (nessun errore).

In caso di errori è possibile fare doppio click sul messaggio d’errore nella finestra di “Output”ed automaticamente verrà mostrato il codice assembler esattamente alla linea dove si è incontratol’errore.

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 85: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L4 19

La programmazione dei PICIl sistema di sviluppo MPLAB IDE

Il simulatore software MPSIM

l simulatore è una parte dell’ambiente MPLAB il quale permette di avere una visione globale sulcomportamento del nostro programma per un determinato microcontrollore permettendoci diverificare che il comportamento dello stesso sia corretto.Mediante il simulatore possiamo monitorare il valore corrente delle variabili utilizzate, dei registrie lo stato delle porte a livello di pin. Il valore aggiunto dato dal simulatore non è sempre costanteinfatti dipende dal programma che stiamo simulando.Se abbiamo un programma semplice (come questo da noi creato come esempio), la simulazionenon è così importante poichè portare il valore sul pin della porta D non è poi così difficile darealizzare; diversamente si rivela uno strumento indispensabile nel caso di programmi piùcomplessi che magari contengano timers, oppure operazioni matematiche. La simulazione, cosìcome indicato dal nome, “simula l’operare di un microcontrollore”. Il simulatore esegue ilprogramma linea per linea ed evidenzia i valori dei registri e variabili del microcontrollore.Dopo aver scritto il programma è buona norma simularlo per controllare di non aver commessoerrori o che quanto realizzato soddisfi i nostri obbiettivi, successivamente si può far girarel’applicazione in un sistema reale.La simulazione è un passo importante nella realizzione di un progetto con microcontrollori.

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 86: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L4 20

La programmazione dei PICIl sistema di sviluppo MPLAB IDE

Il simulatore software MPSIM

Per aprire il simulatore cliccare su: DEBUGGER > SELECT TOOL > MPLAB SIM

Appariranno quattro nuove icone sulla destra. Sono relative alla simulazione con il seguente significato

Una delle principali caratteristiche del simulatore è l’abilità di visualizzare lo stato dei registriall’interno del microcontrollore. Questi vengono anche chiamati “special function registers”, ovveroSFR. Possiamo visualizzarli cliccando su VIEW > SPECIAL FUNCTION REGISTERS.Oltre agli SFR, è utile dare uno sguardo nei file registers. La rispettiva finestr può essere aperta

cliccando su VIEW > FILE REGISTERS.Inoltre se il programma contiene delle variabili può essere interessante monitorarle. Ciascuna

variabile viene visualizzata in una finestra (Watch Windows) cliccando su VIEW > WATCH.

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 87: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L4 21

La programmazione dei PICIl sistema di sviluppo MPLAB IDE

Il simulatore software MPSIM

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 88: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L4 22

La programmazione dei PICIl sistema di sviluppo MPLAB IDE

Il simulatore software MPSIM

Quando tutte le variabili e registri di nostro interesse sono visibili nella workarea, possiamo iniziarela simulazione.La prima cosa da fare è il reset del microcontrollore mediante il comando DEBUGGER >RESET oppure cliccando sulla icona di reset. Verrà evidenziata una freccia in verde a sinistradella prima linea del grogramma, e il program counter PCL verrà resettato a zero, questopuò essere visto nella finestra dei registri (Special Functions Registers window).

Possiamo impartire il comando Step Into oppure Step Over, a seconda se si vogliano eseguire omeno step by step le subroutine. I medesimi comandi possono essere impartiti da tastiera mediantei tasti F7 o F8.

Nella finestra SFR, Si può osservare come i vari registri cambiano i rispettivi valori al variare dellerighe di codice e di come il registro W immagazzini e trasferisca i rispettivi valori alla porta D (inquesto esempio di Led ON-OFF su RD3).

Durante la simulazione evitare di entrare nelle routine di “delay” in quanto in queste routine iregistri interessati cambiano stato migliaia di volte e solo dopo lungo tempo si riesce ad eseguirel’intera soubroutine, è sempre utile utilizzare step over (F8) nella fase di simulazione (Spesso leroutine di ritardo vengono disabilitate nella simulazione).

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 89: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L4 23

La programmazione dei PICIl sistema di sviluppo MPLAB IDE

MPLAB e Proteus VSM

Proteus VSM (Virtual System Modelling – Labcenter Electronics UK) è uno dei sistemi piùavanzati per la simulazione di circuiti digitali-analogici comprendenti microcontrollori; è l’unico,sino ad oggi, ad avere un larghissimo range di modelli software per microcontrollori.E’ possibile integrare Proteus VSM all’interno di MPLAB IDE è procedere con la simulazione inmodo più avanzato rispetto a quanto visto con il modulo MPSIM di Microchip.Per lavorare con MPLAB IDE e Proteus VSM bisogna avere disponibile il software proteus-mplabPlugin e installare lo stesso dopo aver installato MPLAB IDE.

Lo schema del circuito da simulare deve essere realizzato al di fuori di MPLAB con il modulo“Isis” di proteus, non modificare il circuito originale all’interno di MPLAB è sempre buona normautilizzare “Isis” per realizzare e modificare gli schemi.

Caricare lo schema nel modulo Proteus in MPLAB mediante gli opportuni menu di Proteus.

Per il software del micro si procede come visto in precedenza: => Progetto -> Compilazione -> filecompilato; siamo a questo punto pronti per la simulazione, bisogna solo associare il file compilato(.Hex) al microcontrollore dello schema (Vedasi mauale proteus VSM).

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 90: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L4 24

La programmazione dei PICIl sistema di sviluppo MPLAB IDE

Per caricare e aprire il modulo PROTEUS VSM in MPLAB IDE selezionare ilmenu: Debugger > Select Tool > Proteus VSM

MPLAB e Proteus VSM

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 91: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L4 25

La programmazione dei PICIl sistema di sviluppo MPLAB IDE

Il modulo Proteus VSM in MPLAB IDE – Simulazione Visual con microcontrollori PIC

MPLAB e Proteus VSM

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 92: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L4 26

La programmazione dei PICIl sistema di sviluppo MPLAB IDE

Il modulo Proteus VSM in MPLAB IDE – Simulazione Visual con microcontrollori PIC

MPLAB e Proteus VSM

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 93: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L4 27

La programmazione dei PICIl sistema di sviluppo MPLAB IDE

Programmare il PIC

Una volta che il programma è stato scritto, compilato e simulato possiamo passare allaprogrammazione del PIC.

Innanzitutto bisogna selezionare iltipo di programmatore di cuidisponiamo tra quelli elencati nelmenu Programmer > SelectProgrammer

N.B. => L’Hardware necessarioviene installato con l’installazionedi MPLAB nel PC; in questo casosi sceglie il programmatorePicStart Plus della Microchip

Una volta selezionato il programmatorecomparirà una nuova barra deglistrumenti, la barra degli strumenti delprogrammatore:

Prima di eseguire la programmazione ènecessario configurare i bit riguardantiil tipo di oscillatore e tutte le altreopzioni attivabili del microcontrollore(Watchdog timer ecc…)

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 94: Corso introduttivo sui - ITIS Cannizzaro Colleferro ·  · 2010-12-14data]).  ... (EPROM-EEPROM) • Una piccola ... 4MHz Internal Oscillator Famiglia 16

NA – L4 28

La programmazione dei PICIl sistema di sviluppo MPLAB IDE

Programmare il PIC

Per fare questo basta sceglire nel menucorrispondente, la voce: Configure >Configuration Bits

N.B. => Spesso la configurazione delcontrollore viene “settato” nel programmache stiamo compilando, ad es. in assemblervi è la direttiva “__Configure xxxxH. “ cheassolve a questo compito. Il valoreesadecimale “xxxx” è un numerocorrispondente ai fuses attivati

Comparirà quindi una finestra nella quale potremoeditare le varie voci

N.B. => In questo esempio il valore esadecimale3F52 è il numero corrispondente allaconfigurazione scelta.La direttiva assembler __Configure sarà inquesto caso: __Configure 0x3F52

N.B. => Sul microcontrollore non finisce la versione salvata del programma compilato ma l’ultimaversione di cui è stato fatto il BUILD, MPLAB IDE darà comunque un messaggio di avvertimento ariguardo nel caso in cui il programma sia stato modificato e non sia stato fatto il BUILD.

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/