Microrobotica Monty Peruzzo Editore - 09 A - Programmazione

54

description

Tutta la raccolta in versione torrent al link: http://www.tntvillage.scambioetico.org/index.php?act=showrelease&id=192104 Su Issuu c'è la raccolta completa. Cerca "Monty Peruzzo Editore".

Transcript of Microrobotica Monty Peruzzo Editore - 09 A - Programmazione

Page 1: Microrobotica Monty Peruzzo Editore - 09 A - Programmazione
Page 2: Microrobotica Monty Peruzzo Editore - 09 A - Programmazione
Page 3: Microrobotica Monty Peruzzo Editore - 09 A - Programmazione

Programm azione:principi generali

Per pater uttlizzare molli àppàròLi "intelligenti" e necessario che siano programmòti

ar tnilizzsra :l monlin mnlti<<rma :nn:rar-'-v'" '

rhi:rrrre " intollinenti" e noro<<:rin nrnnr:m-

--.1^ À A^t+t ^,.-^tt -^rarati elettronicr di uti_| | ror rE. rvrvrLr vrLLUrr oPf

lizzo comune, ad esempio un videoregistra-trrrp nor rpni<tr:rp l: nn<tr: <orio T\/ nroforii:

oppure un gioco all'interno del nostro computer, o la

moltitudine degli apparati rntelligenti che abbiamointorno a noi, devono essere dotati di un programmaper poter eseguire le loro funzioni. Programmare non è

altro che indicare a un orocessore ouello che deve fare

n rrn linnrr:nnin rho nro<tn rnmnranrio l-ncì nrr:nÀnll ul I lrl l9uo99lw Ll lq 9uLJLv Lvr rrprL. ruL. !v)l 9uol luu

premiamo il tasto play del video, le istruzioni che sonostate fornite relative a quel tasto specifrco, mettono in

funzione il motore che trascrna la pellicola, leggono le

nformazroni che questa contiene, ecc.

A n:rtirp d::dpssn diventpremo rla semolici utiliz-, ' Y", .,,

--+^"i -l^ll- +^-^^l^^i- +^.i -L^.^-li--.^^4OtUt tuEilo LEL|tutuvto, a vrw9ro|iltroLv rLtrE rcdil//drr(,-^^r:--- ^^i ^^. ^ri -r+.i O ner noi stessi Per orteStO dOb_oPPilLO4 Ur il Ptrr 9il OrLr I

biamo strutturare il nostro pensiero e tradurlo in uno

dei molti linguaggi di programmazione esistenti. Un lin-

S*#*wwrs

Page 4: Microrobotica Monty Peruzzo Editore - 09 A - Programmazione

' Chiedere chiave diaccesso all'utente.;--

.Leggere chiave.

'Girare la chiave.

. Se la chiave è giilstaaprire la porta.

.Se la chiave non ègiusta. ..

Le diverse fasi per la realizzazione di un programma

guaggio di programmazione è un insieme di regole,simboli e parole speciali per costruire un programma.

Come passo intermedio bisogna trasformare l'idea in

quello che viene chiamato pseudo-codice, che è la rap-presentazione del linguaggio che noi utilizziamo - il

Linguaggio Naturale - ìn forma strutturata. ll risultatofinale è il programma.

Yflffifl4sru#L*#XÉs *g $*&S$:

Un programma scritto in pseudo-codice deve servire dabase per la realizzazione del programma finale, quale

sia il linguaggio di programmazione che utilizzeremo.Per questo, in questa prima fase del programma, dob-biamo avere un'idea chiara di quello che il programma

stesso deve fare, per non generare errori di tipo logicoo semantico.

Una volta scelto il linguaggio di programmazione,

bisognerà conoscerlo per non commettere errori di tiposintattico. La conoscenza del programma è facile, basta

seguire le norme che lo regolano. Dovremo conoscerela struttura del programma nel suo linguaggio, i tipi di

dati che si possono ulilizzare e i loro possibili valori, l'in-sieme di istruzioni, la struttura di controllo, e tutte le

rnse rhe trt snipnhoromn srrrroq<irrampnttr nor lz rnrratru v I Jvrryr tq LUt tE(-

ta programmazione di Monty. ll nostro linguaggio sarà

l'Assembler, e sfateremo il tipico mito che sia uno deilinguaggi di programmazione piu difficili.

$?.R*S*Sîí *3 treài*ffi*ll primo caso e quello di un programma che funzionamale, però non presenta errori sintattici, ed è difficile

$*S$e*es$w€P

da risolvere; si

vede che fun-Aona male e

che non dà i

rr:lnri <norrii

però non indicadove c'è l'erro-re. ll nostro caso

è aggravato dal

fatto che si trat-ta or un pro-gramma chedeve funzionarecon un narowa-re, e non in unaÒmn||tér nor

cui l'errorepotrebbe nondinondorp del

cattrvo f u nzio-namento delprogramma, ma

da problemidell'hardwarecontrollato.Anrho <e l'a<no-

rienza f orn itaJ-ll- ^"-+:-- À l-udild prdLrLd c rd

migliore alleata;^ ^,,^-+i -^-ìil t vuc)U Ld)t,

noi drsponiamo

di strumenti che

ci facilitanonrra<tn lrrrnrn

Nella figurasono rappresen-+r+i ; ^-.-i ,-J-Lq Lr I vo))t uc

segurre quandoun progello, Fs<i nar ls raalízzszinna di._-,r-, ._ .- _, un progeftocome la pro-grammazionedel nostro microrobot, ha una parte software e una^-'+^ h-'!'^'-'^ | - !p<rrizinno di nnnrrnn di nrro<tiPdILE lldlUVVdlC. Ld ULJ!r r.rvrrs ut uyttUtru

passi verrà fatta nei fascrcoii seguenti. Osserviamo

attentamente le differenze dei testi all'interno dei ret-tangoli, e all'interno dei rombi. Le etichette dei dati, laforma di rappresentazione delle azioni, sono tutti datiessenziali al momento di proqrammare e che meritano,,^- ^-^;^- î ^-r+^u ro Pogil rd d pd r Lc.

Organigramma

Stesura delprogramma principale

Compìlazìone del

pf0gramma

Errore di

sintassi?

#Simulazione del

pr0gramma

Enore di

sintassi?

#Scrittura del

microprocessore

Prova con il sistema

di sviluppo

Problemi

hardware?

Monlaggio del

Problemi

hardware?

ffiMontaggio finale

:.:iiliì.:ìi::-:l

Page 5: Microrobotica Monty Peruzzo Editore - 09 A - Programmazione

Strumenti di lavoro:i linguaggi di programm azione

La differenza fra il programmare con linguaggidi dlto livello o con uno dt basso livello, e analoga adagg i u sta re u no stru me nto el ettro n rco

cambiando i suoi pezzi o aggiustare i pezziche compongono quello strumento.

ome gia abbiamo spiegato nelle pagire pre-

cedenti, un linguaggto di programmazione è

rrn insieme di rcnole simhnli c n:rnlo snprr:li,,L v, ir\Jv,L,

per la costruzione di un programma, Esistono

molti linguaggi di programmazione, di svaria-

ti trni con caratteristiche a volte srmili e a volte molto

diverse fra di loro.

ilL;{5*î fít&X:* l; ;: * il: Li"ru* :-r,&{"r*:

Una delle molte classificazioni che si possono fare

con ilinguaggi di programmazione, differenzia la

loro similitudine dal codìce che è direttamenteaccettato dal computer, cioe jl "codice macchina".

Quindi, si è soliti dividere il settore in linguaggi di

alto livello e in linguaggi di basso livello. Anche nel

lavoro con il PIC seguiremo questa distinzione. Un

linguaggio di alto liveìlo è più vicino al modo di pen-

sare delle persone, mentre un linguaggio di basso

livello e piu vicino al tipo di dati che accetta ìl micro-nr.ìro<qr'ìro Fntr,amhp lo r:teoorie h:nno \/'^+-^^; ^,- ,drLov9rtrsvantaggi.

1r{fl9{_ffie$:iI linguaggi di alto livello piu utilizzatr per programmare

i microprocessorì, sono il C e il Basic. Entrambi sono lin-

guaggi di impiego generale, croe si utilizzano per appli-

cazioni molto diverse fra loro. Questi lìnguaggi sononrodotti d: divprse C:sp e orrr màntenendo trna strut-

'l|--',

tura fondamentalmente simile, possono presentare

alcune differenze, anche se, come qualsiasi linguaggio

di programmaztone,la ioro efficacia dipende dal modo

con cui il programmatore Ii ulilizza.

S***wcisr*ì-tìtì:tì)r*r: : .:.:r. .:.ì : , .: ,.rr. iiii,rrl

Page 6: Microrobotica Monty Peruzzo Editore - 09 A - Programmazione

main ( )

{set_bit ( STATUS, RpO ) ;oPTroN-REG = l; / / Assegna un divisore di L:256set_tris_b( 0 );clear_bit ( STATUS, Rp0 ) ;oulput_porc_b( O );

enable_ínterrupt ( Cfn ) ;enable_interrupt( T0IE ); // Abilita interrupt de1 TMRO

while( 1 ); / / Ciclo infinito

Frammento di un programma scritto in linguaggio C

Nella frgura precedente è illustrato un esempio di fram-mento di programma scritto in linguaggio C per il plC

In esso si configura nel banco 1, la Porta B come usci-ta, e si assegna un divisore per 256 alla frequenza dilavoro per il suo utilizzo con il timer TN/R0. Si continuatogliendo gli zeri dalla Porta B e si abilita l'rnterruptall'attivazione del TMR0. Proseguendo, si entra dentroad un ciclo infinito che verrà forzalo solamente dalTMRO alla fine del suo conteggio.

A prima vista si possono notare alcune caratteri-stiche di questo programma, che sono quelle chehanno contribuito a renderlo uno dei linguaggi piùutilizzati. Le istruzioni di controllo strutturate. come

Vantaggt dell'uso dei ltnguaggi di alto livello

la "while" danno chiarezza al programma: in que-sto esempio è utilizzata per restare in un ciclo sinoa che la condizione scritta all'interno delle parente-si e realizzata. In pratica si converte in un ciclo infi-nito sino a che un evento non modifichi la condi-zione scritta all'interno delle parentesi.

Se si volessero ripetere diverse istruzioni per il

tempo in cui resta valrda una determinata condizio-ne, basterebbe inserire queste rstruzioni fra leparentesi. Trattandosi di un pezzo di programmanon si puo apprezzare la seconda delle caratteristi-che fondamentali: nonostante sia collegato al pro-gramma principale, e quindi s a stato abilitato daun evento di interrupt, all'interno di questo spezzo-ne potremmo inserire un altro richiamo ad un ulte-riore pezzo di programma - anche quest'ultimo saràinserito all'interno di parentesi - e sara indipenden-te dal programma principale, comunicando conesso solo per lo scambio di parametri e risultati.

Oltre alle rstruzioni standard, il linguaggio C

specifico per il PIC ne dispone di altre, che si pos-sono considerare delle piccole funzioni di uso fre-quente: come il settaggio da'l a 0 di un registrospecifico, o di un bit di un registro, o l'abilitazionedi un interrupt.

La differenza con iinguaggi come l'Assemblernon sta neila complessità del codice, inteso comechiarezza, ma nel minimo numero di funzionr utiliz-zate per dire quello che si deve fare Altre funzioni

.Ì ::"-l

)$é

I

,1,,,'.i,$:t

:;.. r::iììiir:tliij

.::.:ììià!'',t}i1,

,',:l liÍi:

'..:ì,ì,:.ì::ii;

'l

:.::,.1€*

a.::',..,:t.'ììì:ilt:ìì:t:::

...:a:j:at

':.rr-:rìì

r.ìi::t

'uruìi::

.ììÈ

::,4

a:.:::'atta

r :::ììì:-,,::t;&

".,a,:,'.tl*

riì:a,,:.:e

'-::il

t. .::::t*.l;

'::...1

.-,::l::', j:.:::a:.,i,:7,t

.4,.::::1

. .ì:ìùgr,r;rl:"i$

. :,:,4:&

':;is$

-.r''

'.':liliLi:ìr:ì:iili

l ,::.::::::'.:t:i]*

'.:.,;::'*.

.,..:,:,.tt

i:r,::a:::l:.a,ar-:

. :a:.-t:i:.

: :::tr::l.ii

.:::,:a:'Ì.. .',.:ìi::ii.:t::,,itì,:.:l:l

:

.::at i.;.

-t

.;::;:,;,;i;.,1

Ss$*wctre-m

Page 7: Microrobotica Monty Peruzzo Editore - 09 A - Programmazione

ll programma principale comunica normalmente con i vari procedrmenti

per lo scambio di parametri e risultatr.

tropartita, il programma scritto in

Assembler si traduce in tanteposizioni di memoria quante

sono le istruzioni utilizzate, nel

nostro caso nove (CICLO non è

un'istruzione). Nel programma

scritto in C invece, ogni istruzio-

ne scritta - quelle dell'esempio

riportato sono sette piu la strut-tura "while" - si tradurrà in una

o piu istruzioni macchina (posi-

zioni di memoria), a seconda del

compilatore che verrà utilizzato.

Questo perche in Assembler ogni

istruzione si traduce con un solo

codice macchina, al contrarìo dei

linguaggi di alto livello. Possiamo

^,,^.+1 ^rrticolaritàu))trr vdr tr quc)rd Pa

nella figura della pagina seguen-

te, dove la seconda colonna della

finestra del programma (Program

Memory Wrndow) riflette la posi-

zione in cui si trova ognì istruzio-

ne. Benche la programmazione

in Assembler sia piu faticosa perrhi l: o<onrre il rndiro nonorafrl

è ottimrzzato, con un constdere-

vole risparmio di spazio occupato

dal programma, cosa moltoimnnrtanlp considerando le

come la capacità di attendere un evento, facilitanol'uIil\zzo, a vantaggio della chiarezza.

restrizroni del PIC in quanto a

capacità di memoria, che nel caso del PlC16FB4 è solo

di 1024 posizioni. In ognì caso i compilatorì C di ultima

STATUS, RPO

a1OPTIOI{_REGTRISBSTATUS, RPO

PORTB

INTCON, GItrINTCON, TOItr

C]CLO

$_'essil*4ffi1trffiÈ il linguaggio denominato di basso

lrvello ed e il piu vicrno al compuLer.

Nella figura a lato e illustrato il prece-

dente programma redatto in

Assembler. ll programma scelto e

molto simile sia in un linguaggio che

nell'altro, e non presenta grandi com-plicazioni. Senza dubbio, per chi non

conosce nessuno der due lìnguaggi,

potrebbe risultare piu con,prensrbrle rl

linguaggio scritto in C, dato che non

necessita della conoscenza dell'archi-

tettura del PIC per: realizzare le lstrr-t-

zioni, ed è p u intr:itivo. Come con-

CICLO1-- €UD!

movlwmOf,'Wfclrfbcfclrf

1-^ r:UDL

bsf

goto

'o"@@

oooto

@

doto

rrumG-t#nFffi-EffiTmEreml5colcolore I'oreo

Convertire il doto in codice ASCII

Frammento di programma tn lrnguaggro Assembler.

Se€th*p*srym

Page 8: Microrobotica Monty Peruzzo Editore - 09 A - Programmazione

ln Assembler ogni istruzione si traduce come un solo codice macchina

generazione producono un codjceCome abbiamo detto, una delle

fanno sì che il linguaggio C sia unodei piu ulilizzati, e l'uso delle fun-zioni. Nella figura a lato si mostranoalcune funzioni di un compilatoredel C per il PlC. La maggior partesono funzionì molto specifiche dellavoro col PlC, che non si incontra-no in compilatori di C standard.

Per rnciso, dato che sono moltospecifici non apportano vantaggirispetto all'Assembler, se non per il

fatto che utilizzano espressionimolto più chiare.

Dove realmente si nota la poten-za del C con i microprocessori, e

nella struttura di controllo, nei pro-

S.&6*ws#s*

ben ottimizzato.caratteristiche che

-PORT-APIN PORT A

cedimenti, e nelle funzioni proprie dei linguaggi di altolivello.

OUTPUT_HIGH-FOFIT_B

OUTPUT-LOLPORT_B

INPUT PORT-B

INPUT PIN PORT B

SET_OPTION

DELAY_MS

DISABLE INTERRUPT

CLEAR.BIT

GETCHAR

CHAR |O-BED

DELAY US

Alcune funzioni di uno dei tanti compilatori C per il PIC

Page 9: Microrobotica Monty Peruzzo Editore - 09 A - Programmazione

Strumenti di lavoro:installazione e uso del CD

't

L

A destra il CD allegato al prrmo fascrcolo

I CD-ROM che com-menteremo, è quello

allegato ai primof,acrirnln di nrre<t'o-

pera. E formato da,,-";^ --.+^li^ ^ +i ^.VdJle Ldl telle e llre5 CO[ì

divorci rnn-pnr rli rl.p ver-.:n.Ò .lili, tat nol I lavO-

ro con rl nostro microro-

bot. Ora lo ana zzeremo;^ -^,-l^.1^+r-^1,-+^il | | rvuu uqLLcvlrc Lv.

Introducendo nel lettore il

CD e selezionandolo, s

tr-^A^ -lln r,,n n,,rdLLeue dile 5ue qudì.Lro car-

telle, e ai quattro files, così

come indicato nelia figura in

basso ll CD non è autoinstallante Le

informazioni che troviamo nel file

,flpnn mi rvr descrivono il modo''vv""di nstallazione e il contenuto-J ^,,^-+^ --.+^il^ -h^u que5re cd' .e're, rre sr posso-nn : nriro ann a r r: lr rn n ra on r-

tor dr testo. Gl' altri 3 files, per

ora, non I prenOeremo rn con-si derazr on e.

| - ^"i- - --"+^ll- .l - ^.La prmd caileild od esan"rnare

e la cartella "installa". Unavolt: ,anprt: s dorir: osocrriro il

file spr,ro exe cos si insraJlera il

prograrrma robot.exe, che ci

normot+ori nli vi<r r:lr / t 1.^ +r1Pg lrlgLLqro ur vr)uoil4Latct t a-

mite ìl PC, r video dimostrativrdoL rohnt N,4on-ir p lc diffefenttnrovo dei rn.rorqi di nicroro-bots.

Questa installazione, installa<nln : n:rro indi<nonq'hilo 'lol)vrv d Pqr Lc il rurJPcr rJdr,llr url

software, dato che il CD dovrà

$qp$Swwr*

'1'aqr la

"a-rslInco |La ",

:fl_J

annul 1a

ts (E:)

t/:Q]:aJJ:i.-. ,i

-"tgl:

ift.úa:!,J.il

-tlLlrr,,

+l:'L'i

t

j:

..,i

I'l

lI

I

1

1

1

r:a:::':

:i]:

oimensione

ill.:ts

| ,aF)

Contenuto del CD

Page 10: Microrobotica Monty Peruzzo Editore - 09 A - Programmazione

Proseguendo nell'installazione, ci

verrà presentata la videata successiva,

nella quale dovremo decidere l'indi-rizzo dove installare il software. Si

nrrn l:<ri:ra l'indirizzn niì nrodicnn-

sto in nIipqtn rasn (- \{p6livi\RObOt\o cambiare indirizzo con un altro checi sembri piu adeguato.

fliqiitT"É:LL'q Vgffi##Nella cartella video troveremo i videodimostrativi, con prove di lotta e diricerca sui differenti tipi di microro-bots, tra questi anche Monty. Per

vederli non dovremo entrare diretta-m6n+ó nall: r:r+allr m: o<onttiro il| | lgl ILE I lEllO Lql LEIId/ ' I ru LJLyuil L tl

programma Robot.exe dalla cartellanrincinale rhe e oia stato corretta-montè inct:llatn qp6lranÀn i nrcciJLyuEl luv I pd))lspiegati precedentemente. Appariràla videata di inizro.

| : f r rnzinno di nnni +rc+a À ramLq rur r4rvr rs ur vyr il Ld)LU c )Eil t-

plice, e ci ricorda quelli che sono nor-malmente utilizzali negli apparecchimusicali o video. All'inizio si potrà

solo attivare il pulsante superiore, checi nermette di sreolie rp il video che si-, Y',,,

vuole visualizzare.

Una volta selezionato un videoall'interno del menù, bisognerà aprir-lo, questa operazione attiverà anche

essere nresente npl lettore al momen-to dell'esecuzione dei video; in que-

sto modo i video non verranno copia-îi srrl comnrrter nermettendoci diY',

risparmiare spazio.

Orresto nrooramma di visualizza-zinne dai vidon ò ntrreolsposto perlavorare con Windows 98.

Quando lo eseguiremo appariràla schermata iniziale del program-ma.

Se non si stanno eseguendo altriprogrammi, si clicchera sul pulsante"accetta", o al contrario si dovràuscrre dall'instarlazione e rientraredopo che si saranno chiusi gli altriprogrammi.

Sel*Sse*eecr*c

.:.'::.21

:l::.:E:,,,ta.t

,:,,t:,,,:::

'at'a,.'::a

.:ì

Videata iniziale del Programma di installazione di Robots

ScelLa della direclory di installazione

Schermata iniziale del video dimostrativo di Robots.

Page 11: Microrobotica Monty Peruzzo Editore - 09 A - Programmazione

fl e$qYH *_$_e $:,$q#ffi ffi &ffi w g

Questa cartella contiene tre program-mi esempio. che in seguito verranno

caricati sul nostro robot Monty per

fargli eseguire diverse operazioni.

Queste operazioni, sono quelle tipi-che per iniziare la programmazione di

Robots: come seguire una traiettoria,evitare degli ostacoli o percorrere un

determinato tracciato, e servono dar.--^ ^^- r- .^-r'---zione di altreuc)tr PEr to IcorLLo2

applicazioni molto più complesse.La metodologia di esecuzione per

la programmazione del robot, sarà

tema dì studio in un fascicolo doprossima pubblicazione.

fr&ffiYfrts_e ffirL&*$Quest'ultima cartella contiene un

solo programma eseguibile per l'in-stallazione di un'applicazione, cheporta il medesimo nome della car-

gli altri tre tasti. Partendo dall'alto verso il basso le

icone indicano la messa in marcia, la pausa, la nuova

attivazione, e lo stop definitivo. La videata centrale sara

quella che ci mostra il video prescelto.

Per uscire dal programma divisualizzazione, bisognerà

tella: MPLAB. In realtà è formato da vari programmi,integrati in uno solo, che formano quello che viene

comunemente chiamato "ambiente di sviluooo".Questo programma è indispensabile per le applica-zioni con il PIC e dovrà essere studiato in modo la

cliccare sopra la parola Robots nell'an-golo in aìto a sinistra del monitor

Se ri fossero dei nroblemi con lavisualizzazione dei video, si dovrà rein-

stallare Windows Media Player, che èil <nftrnr:ro rho ri nérmotto rlro<to

visualizzazioni, lo faremo eseguendo il

programma mpfull.exe, che si trova

nella cartella "installa". Alla fine del-l'installazione, verrà attivata la proce-

dura di connessione alla pagina webdi Windows Media Player, che si puo

canceilare senza nessun pro0rema,

perché non provoca nessun errore di

installazione. Inoltre, se il software di

accesso a Internet non fosse già ìnstal-

lato sul PC, si attiverà una finestra in

cui ci verrà chiesto se vogliamo instal-

lare questo tipo di software; a questo

punto sarà quindi necessaria un'altracancellazione.

Scelta del video da visualizzare

Esempio di visualizzazione di un video.

Sry#ee*ce$rye

Page 12: Microrobotica Monty Peruzzo Editore - 09 A - Programmazione

Le informazioni ci appariranno,^ I- r:^ r: dnnn :vorLUrtc |ltu)Ltd td il9ul-,

aperto il fiie PDF corrispondente. Gli

archivi in formato PDF si leggono con

il programma Adobe Acrobat Reader

3.0 o superiore. Nel caso non lo

avessimo sr puo scaricare dal sito di

Adobe. Queste nformazioni posso-

no essere lette direttamente a video,oppure stampate, come qualsiasi filedi lesto Nella nanina sinistra del

video troviamo un piccolo indice cheri normotte di cnnct:rri nalla r,:rioL pErrrrELLc ur JvvJLqtLt itcilc vqttE

sezioni del documento in modocomodo e raprdo.

Oltro :i mirrnnrnro<.nri l\,4irrnrhinvrLrL ur r.il!rvprvLLr)ul l, lvlrLluLl lll-/

fabbnca e commercializza anche altridispositivi:'nemorie, convertitori, kitAi .i.' 'r^ ,,1 rmnli{irrtnri nnorrzin-ur )rLUrczlo, orrPililLoruI uvctd/tu-

nali eccetera. Anche le informazionirol:+ir.,c : nrrccti rnmngpgp{i S trova-nn c, tl <itn rnreh e nn<<nnn accara lihavvLU L PvJJvrtu E))EtE tuc-

sua installazione sia per il suo ulilizzo. MPLAB e f or-nito direttamente da N/icrochip, che è la Casa pro-drrttrire dei mirrnnrocessori PlC. ll software lo tro-viamo. solamente sul CD, però se si accede allapa g i n a we b http ://www. m icroch i p. com/1 0 /lit/ pline/

rî"_^^+^ -^^-,,1+-+^tot I tct tLc LUI t)utLd Lc

Nelle prossime pagine utilizzeremo questo CD perinstallare sul nostro computer gli strumenti softwareche ci fornìsce Microchip per il iavoro con i micropro-cessori Plc

picmicro/index.htm si otterrannotutte le informazioni aggiornateriferite ai PIC e ai prodotti ad essi

relativi. I file saranno sia in formatoPDF che in forma compressa ZlP,

oppure come file di testo.Trovererno inoltre diverse utility per

lavorare con i microprocessori.Le informazioni piu complete

riguardo il PIC'l 6F84, protagonistadella nostra onera si trovano nella

sezione "PlCmicro MCUs" di questa

schermata.Da qui in poi troveremo i PIC clas-

sificati nelle diverse famiglie, e potre-mo selezionare le informazioni che ci

interessano a partire dal PIC'16X8X,

che ci porterà nella pagina dove tro-veremo il file che ci serve. Navigandoall'inîerno del sito notremo trovaretutte le informazioni di cui avremobisogno.

Sw$$wwrys

h{!: /llw.micrùchip coell0l1ítlplì{e/piwimlì'derhm

li*Gf&tu#* ' , ,

F1

J fúicrochis la{ebsite Seardr optiore 4' J Literature Text Search S

J Microchip Producl LinmÉ Plcmicrots DeviEs

About PlCmicro6 DevimMicrochip is a leaditr{ supplier ofB-bil micfùrontr0llers, wiìh 0ne ofthebrcadesl produci 0feinqs Products range fromSp,[, 1? bii instructionmrd to 66-pin, 16-bit instructi0n word deîices. Fa$t operation, lDw powÈf

and IDw qsst c0mbinÈ 1o make lhe hlicrùchip PlCmiEro familv one oflhemosl popular rrroducl lines n ìhe world

RefÈfeilce Manqals :

Fùllow ihls link ts dotrnload the latest teference msnuals. lhe manuals !

reliew architeÈl!re and peripiìeral múdules, bul does not cover thÈ sFecillcs

oi each CMúS device.

Plf,micro lltlClt Parametric SearchQuickly narrow lour search thf pi.mìcrù mictoÈontrollers wilh 0ut nÈ!v

Come ottenere la ptù completa tnformazione sui PIC

lfffiiliÉs/1 dftx/dalasirietl30430c

IS-pin FlashlEf?R{}\! &Bit HiÈrocorlrùllem

kbld*din6btuSH:

. EEÉJdÈtsrryÀ€:,Àah,prc:6F5x ft:6LCR*l

Hbi F*ffi@ f,ÉC SU Fsl!#

m.*c..*d:--q"b-*.*-qi .:D-r!

*-r-q i3:O*r-\.,i--q! 1* rpÈ.-

)-=- -q-

Èa . E*,-,-

-q- i :B_!

iÈ€q: :jEr+iaq-€Er ,.8-r..'

.1nb[se**ÈE . !@tq5È&lrpÉÈffnnfr]6Ét

. Èrt*e*sfi ó{ih#lùd;*#rtur

d =?

1 0 General Descrpfon

iai.'= ? 0 Plc l 6FBX DeYire vari

ts''B 3.0 Architectural Owfriesi!''A 4.0 lìfemory orqaiizalion

c'.ffi f .t uo Rorts

É-g 6.0 Timeú lvodule and T

*-$ t.o oata eeeRou tr,temo

E B 8.0 Epecial Features oftE E 9.0 Instruclion Set Summ

É-'€ I 0.0 Developmenl slppEi-A 1 1.0 Etectricat charaitelE-A 12 0 Electrical Charaîlel

@ t.o oc aec cnr

E €l40Packaqinqhffi tnoer

A 0n-Line 3!FFpol

;g Header Hesp0nsP

H Plcl 6F8X PrrrJuct ldE

g Worldwide gales and

Dati tecnici del PlCl6FB4 in formato PDF.

Page 13: Microrobotica Monty Peruzzo Editore - 09 A - Programmazione

gli organigrammie persone nanno ta neces-

sità di esprimere il loropensiero sotto forma di co-mrrnirazione rnn nli altriAlcuni lo fanno attraverso

Programm azione:

la pittura, altri attraverso la musica, la

scultura, la scrittura e il ballo. Gli or-ganigrammi sono la forma di espres-<inno rho nirr ri :irrt: r nlrcmrrn l'irrvr rL !r rL Viu Lr uru LO O plO)llldltr | ,-inr rrtrr++r 'l; ' '^ ^.^Uecì dsLrdttd Ul Un progfamma, In Uîaserie di decrsioni e azioni che vengo-no riprodotte in forma logica e ordi-nata. Così come nell'arte, esistonomolti modi di esprimere un'idea me-diante un organigramma, è compitodell'analista, cioe colui che componel'organigramma, seguire una serie di"norme d'uso" per far sì che cio che

' <i rir rnlo oqnrimoro rienn: intornroi:in

da tutti nello stesso modo

&etrtrffi*5ilfltTÀf.:*N*il *g tf tÍf *:rfl,8\Tf?,'sj-i'4

Un organigramma e formato da rettangoli e rombi chesi uniscono tra di loro con le frecce. I rettangoli rappre-sentano azioni che vengono esegulte nel programma.Possono essere semplici, come visualizzare un dato, o

CODICE ISTRUZIONE(letterale)

MEMORIADEI DATI

rnmnloc<è rarno " C alrnl:ro l':ra: r'li rrna Íia".^ ..^l+--_.,,tr,___.- ,.-,,,_ *_,,urdrE rdtcd ut uild ilgutd :)LctLd

dall'utiìizzatore, e mostrarla nel video insieme ala suarannfesentazinnp " In nro<t^ .2<^ nrr^ óSsefe ne-

cessario un secondo organigramma, per realizzare me-glio le azioni. I rombi contengono domande che ven-gono poste in base ai dati variabili all'interno del pro-

t/

,/

t/

ROMBO

All'interno si descrivono le azionida eseguire nel programma

gramma: sensori che forniscono un

dato al sstema, opzioni dell'utilizza-tore scelte attraverso interruttori, ta-stiera, eccetera. A seconda della ri-sposta a una specifica domanda, bi-sognera prendere una decisione per

l'azione successiva, Le frecce indicanol'ordjne con cui sr devono eseguire le

azioni e le domande.

Dentro si inseriscono le domandeper scegliere fra due possibilità

FRECCEIndicano I'ordine con cuisi devono realizzare le azioni {,e*&-í?9.ffi3:tru{94fl

{}s*efdi,*&&i4fi;Dobbiamo tenere contocon i mrcronrocessori Der

#fl*i-?

che il lavorola soluzione

ffiControllo

8--. Segnalatore

Considerazioni al momento di costruire un oroanioramma

Sinboli di rappresentazione di un organigramma

S*Skesr*

Page 14: Microrobotica Monty Peruzzo Editore - 09 A - Programmazione

,,s

,z

c

g

{B

I

dei proolemi e composto da varie fasi, che riguardano<,.: l: n:11 e SOftUlare -i- ^,,^ll- t--",.J,^,-"^ NOfmal_J.u ru purLL rvrrvvurL )lo 9uEllo lloluvvolg.

mente quando si realizza un progetto, soprattutto se

si lavora in un'equipe di sv luppo, la oersona che rea-

lizzal'analisi del sistema, non e la stessa che più tardistenderà il programma, né quella che veriftchera le

soluzroni, o{-"; t^ ^"^,,^tQta tE vrwvEdi funziona-mento. Cosìln nrn:ni-

gramma si

n r rn r rtilizz: ro|.uv

in molte di

^,,^-+^ {^.i9UE)Ls 1O)r, E

in nnnrrn: di

^--^ -,,"\ l^il^E))E dvtd uc|c

nÒrmo cnerifi-

che, comun-^,^.^-^.^-l ''r'' -l'interno di re-

gole base. Noi

utilrzzeremosolo organr-grammi che si

riferiscono allarî^^r^-^^+ardvprc)Errc-

zrone della

Meno cose si lasciano alla lrbera

interpretazione, meglto è.

ffi

lnizializzazione:Variabili di ingresso

Variabili di uscitaRegístri

Chiedereoperando I

Operandointfodotto?

riÉ

Chiedereoperando 2

Operandointrodotto?

tiI

iri

struttura di un

programma,^..J ^ ^^-^.-^fLl r ttELc))d-

rin rho nrrosti

siano moltonrari<i nerrhorhi nlr r t:rdrsarà incaricato

d Ì realtzzareorrol nrnnr:m-

"Y'-' ',

ma, non abbìa

difficoltà al momento di tradurre in istruzioni rl pen-

srero di un altro. Ecco alcune considerazioni impor-tanti al momento di costruire un organigramma.

Fissare un preciso punto d'intzio, è un buon modoper non dinrentcare nulla, inoltre e molto difficile, so-

prattutto neì programmi che si dividono in piu alterna-

trve, term,nare con Ln urrco pJt^Io. Ouesto si ottienequando alla fine diognialternativa, si arnva ad un pun-

to comune denominato come Fine.

L'uso di alternative con due uniche scelte, risponde

Sqe#**eswff*

Chiedereoperando I

Chiedereoperando 2

,:i,:'#ìîà +*tr

a

Mostrare risultato

Chiederedi nuovo operandi

E corretto?

arganigramma di un enuncrato,realizzato tn forma corretta e non corretta

^i' ' .ll^ -nra--,t. À^ll. 61666:mm,azinno 6nl pl- Aa+ar-f-j|U dlic 'CLC))'Ld Uclld Pr Lv, ,l!, uqLqr-

m nata dal tipo d istruzioni, che al trpo di organigram-ma n se. Quando qua cuno disegna il suo organigram-ma ha bene in mente la sequenza esatta che il pro-

gramra dovra eseguire, le allernative possib'li,re do-

mande importanti eccetera, quindi si tende a dare per

scontato il verso delle frecce, e a non disegnarle cor-

rettamente. Però bisogna pensare che chi dovrà tra-durre la "nostra" idea, si baserà unicamente sul dise-

gno, e meno dali lasce"e.no alla libera interpretazione,

-,^li^,^ --"- | ",-,,l+-+.il r9ilure >dtd rr5urLdL().

lr rertango o a, t\i/ialtzzaziore dei registrr e defini-zioni delle variabili servira da promemor a al momento

di mettere in pratica la stesura del programma.Senrrcndo nresttr rons Cerazioni abbiamo realizza-

to un organigramma che rappresenta ra richiesta dei

dati per l'esecuzione dt u'a so'nn-a, e la presentazione

del 'isultato. Nelle frgure in alto, vediamo ;r esempio

di come nor si deve rappresentare rl medesino pro-

gramrna.

Chiederedato C

Chiedffidato A

Toglieresalutg

Chiederédato B

Darerisultato

. .:,:.

.:::$lil::ìa::!

: .:.,a:a,t:

.ra

r.:r:a

. :.:,.),ta:a

::.::.

a.::a:,

Page 15: Microrobotica Monty Peruzzo Editore - 09 A - Programmazione

Appti cazione pratica:pnmo programma

nche se rimane ancora molta teoria davodoro in nrr:ntn : <tfuttufa e UtiliZZO delDlî rnmtnrr:m^ a^n I,- .-,, Jn pflmo programma,

con il quale ci addentreremo a poco a poco

nella programmazione e nel linguaggio---^-t-r^" -h^ ^^^ ^ .n<t .rìmnlir:tn rnmo tutti cre_o))ct IutEt - lt tE ttutl q LUJI Lvt ttPilloLv Lvt ttE

dono -, e più concretamente nell'assembler dei PlC.

Cominceremo muovendo dati da un posto ad un altro.

Leggiamo con attenzione l'enunciato dell'esercizio.

Nel grafico che accompagna l'enunciato, irettan-golr sono I

reg istri entro i

nrr:li o<onrrire ì

movimenti dei

dati, le freccer:nnro<ont2nnil rrorcn di nrro-

sti movimenti;idatì all'inter-no appaiononol nn<tn rho

avranno dopo

Enunciato del programma da realizzare e

la sua rappresentaztone grafica.

iti$- #i€]{il# i;i i"Í-è*#gefg*Fitffi ffi&TgPer noter realizzare il srrn rnmnito il PIC h,a al suo inter-I L' l.JvLrl

no la struttura mostrata nella figura seguente. Nella

memoria dei dati a partire dall'indirizzo esadecìmale OC

possiamo immagazzinare i dati che ci interessano, per

lavorare con essi come meglio ci conviene.

La ALU (Unita Aritmetico Logica) e incaricata di rea-

lizzare le onerazioni aritmeîiche e looiche e all'internodi queste, le operazionr di movimento che sono quelle

che ci interessano. W è un regìstro chiamato di lavoro

perche interviene come appoggio alla memoria nella

maggior parte delle operazionì che interessano la ALU.

Quando un'operazione aritmetico-logica ufilizza

due operandi, uno di quest è sempre il registro W, l'al-trn nro essere sia rrn reoistro della memoria dei dati

sia un valore letterale dato insieme al codice dell'istru-zione.

La discriminazìone tra i due è fatta grazie ad un mul-tiplexor (MPX) la cui linea di controllo avrà un vaiore ol'altro a seconda dell'istruzione che sta eseguendo in

quel momento. ll risultato dell'operazione puo arrivare

al reqistro W o alla memoria deì dati. ll numero B che

LETTERALE

MEMORIADEI DATI

ffiCONTROLLO

8-..

ffi8:-

t/

t/

l'esecuzione del programma, indi---+^ ^^-l-.^,l-ll- ^,,^+. ^J^ll^ {"^-Lc|tu dllLllc udllc I,Jullld ucllc llcL-

ce. ll valore 03 esadecimale è un

valore letterale e la X rappresentaqualsiasi valore, visto che non

conosciamo il valore iniziale del

registro DATO2.

Abbiamo tre posizioni chechiameremo DATO1,DATO2, DATO3.ln DATOI si vuoleimmagazzinare il valoreesadecimale 03,e in DATO3 il valore cheabbiamo in DATO2.

Percorso che seguono i dati quando si esegue un'btru1one

Sw#sxs*rsxss*

Page 16: Microrobotica Monty Peruzzo Editore - 09 A - Programmazione

l

,:.'la:'a:t:..:a.::,a:aL:,..:

::,..;ti::.:74l'irl:l:::: rlr:1.ì

. l::.:rr:,r:ì

a

a

movt tvt-y9-ve if yatore letterale k 1l resi$ro ditavoro,W

Muove il valore contenuto in W al registro f

zioni, la parte sinistradel quadro è quellache ci dice i tipo diistruzione che si sta

eseguendo, quella cheviene dopo e gli ope-randi che intervengo-nn in nrro<t: nnor:zin-ne; generaimente si

T--_o-..v.,y

movf f, Muove_il valore contenuto in f alla destinazione d,che può essere il medesimoregistro f (d=l) o registro di lavoro W (d=0)

Tavola con le possibili istruzionrdi movimento del PlCl 6F84.

appare nel grafico ha un suo signif i-

cato: indica che tutti idati con i

quali lavora il PIC 16F84 sono da Bbit, sarebbe a dire che sia i registriche i dati con quali opera la ALU,sia i risultati che genera, inclusr i datiche puo contenere il registro di lavo-ro W, sono a B bit.

Allo stesso modo, se al posto diun B appare un '1

, o qualunque altronumero, significa che il dato chepassa per quella linea, e compostoda quel numero di bit. La ALU, rea-lizzando alcune operazioni, oltre ad

un risultato, fornisce anche unasegnalazione, di cui parleremo in

seg u ito.

gsYffi#x5*F,{t*3 N#Vs$$ilNY*Nel PIC esistono tre istruzioni permuovere i dati. Tutte comincianonAr mn\/ e rnntonnnnO a COntinUa-

zione altre lettpre ner indicare dadove a dove si muovono i dati. Così

si puo muovere un valore letterale al

registro di lavoro W, o muovere unvalore dal registro di lavoro ad unregistro della memoria dei dati oviceversa, muovere un valore dalregistro della memoria al registro dilavoro W, o da W a se stesso.

Le tre istruzioni che appaiononella figura saranno trattate in unascheda individuale più avanti, perovi anticipiamo che per tutte le istru-

$wSsxwwww

LÉTTERALE

MEMORIA,DEI:,D.ATI

_oBoc

MOVIMENTODI UN VALORELETTERALEAW

LETTERALE

LETTERALE

MOVIMENTODI UN DATOQUALUNQUEAW

:ffi;MEMORIADEI DATI

CONTROLLO

MOVIMENTODI UN DATODAWAD UN ALTROREGISTRO ì

_o3oc

Percorso dei dati, con drfferenti istruzioni in esecuzione

Page 17: Microrobotica Monty Peruzzo Editore - 09 A - Programmazione

LETTERALE

ffi'/,/

t/MEMORIADEI DATI

OB

_oc_oDOE

SEGNALAZIONE

t/

Blocco di elaborazione dati dopo aver eseguito il programma

rappresenta sempre con una lettera legata al tipo di

istruzione.Possiamo seouire il f lrrsso nercorso dai dati nellaì |v Jg:jv||

figura della pagina precedente. La prima rappresenta il

movimento di un valore letterale a un registro, che e laparte del nostro compito nell'enunciato numero 'l

,

muovere un valore letterale a W. Per portarlo poi da W

al registro DATO1, dobbiamo seguire il camminosegnato dalla terza figura. Nella seconda parte dell'e-nunciato del programma dobbiamo muovere un datoda un registro ad un altro.

Anche se non esiste alcuna istruzione per muovere

un dato all'interno dei registri, questo si puo fare con

la combinazione di due istruzioni: muovendo prima un

dato da un registro qualunque a W e dopo da W al

secondo registro. Questo viene illustrato nella seconda

e terza figura. Dobbiamo considerare che il registro dì

lavoro W è l'unico che non fa parte della memoria dei

dati, per cui non viene trattato come gli altri, e per uti-lizzarlo bisogna fare riferimento ad esso tramite il

nome dell'istruzione.

$}W*S K&914 &4& &SSfr W &$ g-fi ffi

ll programma assembler risultante è illustrato nella

pagina seguente. nella prima linea con la direttiva LlSl,

si indica il tipo di PIC che sì vuole ulilizzare, nel nostro

caso il 16F84. Nel caso in cui volessimo utilizzarne un

altro, cambieremo il parametro che segue P=. È obbli-gatorio usare questa direttiva, perche tutti i nostri pro-

grammi cominceranno neìla medesima formaNelle linee 2,3 e 4 si usa la direttiva EQU per defi-

nire le variabili. Nell'esercizio si chiede di muovere dati

nelle differenti posizioni di memoria, senza specificarequali, la prima posizione a disposizione dell'utilizzaloreè la posizione OC. Per questo si hanno codici a tre posi-

zioni consecutive, a partire da 0C, al posto di lavorare

direttamente con gli tndiizzi, la direttiva EQU ci per-

mette di dar loro un nome per far sì che l'uso sia più

sig n if icativo.La lrnea 5 è di nuovo un'istruzione, la ORG. Questa

direttiva dice all'assembler che l'istruzione che seguirà,(nel nostro caso la movlw 03) è messa nella posizione

di memoria che è indicata dal oarametro (nel nostro

Sw$*swws"m

Page 18: Microrobotica Monty Peruzzo Editore - 09 A - Programmazione

o8

f

; Fine del programma

l'enunciato. Per .nuovere I

dato contenuto in DATO2 al

registro DATO3 si usa comeregrstro intermedio W (rstru-

zronr B e 9).

Nella linea 10 si termina il

programna con l'islruzroneEND.

Questa istruzione e sern-pre obbligatoria

Una volta eseguito il pro-gramma ii blocco di eiabora-zione dati del PIC restera

come segue, tenendo conto

LIST

EQUEQUEOU

I

2 DATO 1

3 DATO 24 DATO 3

5

678I10

ORG

movlwmovwfmovfmovwf

END

P='16F84

0cODOE

0

03DATO 1

DATO 2.0DATO 3

Programma assembler dell'enunctato proposto

caso 0). Questa istruzione, inoltre, e sempre obbligato-ria, dato che e la prima istruzione del programma (finoaila movlw non sono istruzioni) deve essere nella posi-zione 0 delìa memoria di programma, dato che e lt cheviene ndir zzalo il puntatore al reset del PlC.

Comincia così ii programma tn sé. Nella linea 6, si

muove jl valore letterale 03 a W per proseguire colva ore al regrsrr-o DATO I , cosr come abbiamo derro re,-

della posi,,ione d, re'noriache gl abbiarno asseg^ato

?:1"!1.,1:,1:1r: a: I :,: r,i :l l lri:lii:1.i lt flti.: f', rl :.i ; rÌ :::i,r:,r

N'4olti lettor s staranno chredendo perche alcune cosesono sul margine sinistro e altre sono tabulate, se i

cambi tra maruscole e minuscole hanno significatoeccetera. Ecco qui delle norme, alcune obbligatorie,altre solo come raccomandazioni, da seguire al

momento dì scrivere un programma per tl PIC

r Le etichette e i nomi divariabili {LIST, DAfOi) di solito si scrivono in maiuscolo. Non succede nientese vengono scritte in minuscolo, però così si distinguono meglio dalle istruzioni. Dobbiamo ricordarcidi scrivere le etichette in forma sempre uguale, dato che lnassembler è sensibile a maiuscole eminuscole.

' I nomi (mnemonici) delle istruzioni si scrivono in minuscolo. Non accade nulla nello scriverle inmaiuscolo, però si stanca di più la vista e sifa più fatica a leggerli.

' I programmi devono essere tabulati e ben allineati per vedere rapidamente la struttura del programmastesso' Le uniche cose che si scrivono nel margine sinistro sono le definizioni delle variabili {DATOI,EQU, OC) e le etichette (che vedremo in seguito). Aiutano nella presentazione di questa struttura glispazi bianchi che si lasciano tra le parti del programma.

' L'utilizzo di commenti per spiegare le istruzioni o parte di queste, aiuta nell'elaborazione e nellasuccessiva modifiea o riutilizzazione di un programma. Per questo si utilizza il punto e virgola (;) e inseguito il commento che si intende inserire {; Fine del programma).

Norme dl scrittura del programma rn assembler per il PIC

Sap$&rrmr'qr

Page 19: Microrobotica Monty Peruzzo Editore - 09 A - Programmazione

Schede dette istruzioni:concetti generali

oco a poco vi mostreremo

le differenti istruzioni che

formano il repertorro del

PIC 16F84. Per questo e

^^-^--^",^-l^i-":"^^necessdilo Utdilre prlma

una serie di termini, che sarannoquelli che utilizzeremo d'ora in poinol rnr<n Àoll'nnor:vvLru.

wf f,d *addwf

MNEMONICO coDrcE oPDELL'ISTRUZIONE

Esempio di alcuni dei termini spiegati

Mnemonico:è il nome dell'istruzione che noi useremo per ordinare al microcontroller cosa deve fare. Dobbiamo scriverio tale quale

senza cambiarlo.

Parametri:operandi che necessita l'istruzione per essere eseguita. Per entrare nei dettagli di un'istruzione si specificano i

parametri che essa ammette che dovranno essere poi sostituiti da valori reali.

Parametro f: rappresenta un registro della memoria dei dati, operando originato da un'istruzione.

Parametro d: rappresenta un registro, operando destinatario di un'operazione, con due possibili valori.

Se si sostìtuisce con uno 0 significa che il registro di destinazione è il registro di lavoro W o accumulatore e se è

sostituito da un 1 significa che è il medesimo operando originato dall'istruzione.

Parametro b: rappresenta un valore (da 0 a 7) di un registro.

Parametro k rappresenta un valore letterale, sarebbe a dire, un valore riferito al mnemonico dell'istruzione.

Registro di lavoro o àccumslatore W:

registro speciale che non fa parte della memoria dei dati, e che si utilizza nella maggior pade delle operazioni aritmetico-logiche.

Giclo di istruzione:è il tempo base che impiega un'istruzione ad essere eseguita. Per il PlC16F84, funzionante a4MHz, questo ciclo vale 1

microsecondo (prs).

Unità Aritmètíco-Logicalè incaricata di realizzare Ie operazioni aritmetiche e logiche del PlC.

Blocco di elaborazione dati:insieme dei registri che eseguono le istruzioni.

Flage:bits contenuti in determinati registri che servono come segnalatori di eventi nell'esecuzione delle operazioni.

Codice OP:traduzione di un'istruzione realizzala dall'assembler, perché possa essere compresa dal PlC, che non lavora con codicimnemonici, ma con 1 e 0. La longitudine dei codici OP in un PlC16F84 è di 14 bits"

Termini utilizzati parlando di istruzioni

$*#*xwmry*

Page 20: Microrobotica Monty Peruzzo Editore - 09 A - Programmazione

a

MNEMONICO

movlw

OPERAZIONE:

CICLI:

GODICE OP:

FLAGS:

OPERANDOFONTE

k

,d']-ffij

OPERANDO I

DESTINAZIONE

Movimento del valore letterale kal registro di lavoro W

1

1 1 00xx kkkkk kkkk

Nessuno

!*,**'-",****,.*"-Ca ratte ri stiche del I' i struzr o ne movl w.

Questa istruzione è stata ulilizzafa precedentemente

nella realizzazione di un programma, dove abbtamo

valore iniziale xxxxxxxx

movlw 5 00000 1 0 I

movlw 3: 000000 1 J

v,sto che la programmaz one n assembler e pi;'acile dr

nrrel rhp :nnàre C)r: r,pdrpmn nrrplln rho succede innra<tn o<omnin n:c<nY---- a passo.

Si n zia mrove^do il valore letterale 5 nel regi5tpe liavo.o W e si nroseorre muovendo il valo-re letterale 3 al medesimo registro W.

| : {inr'r: : l:+n r:q66p(ont: il y:lnroLO rr9UrO O rqLVrOFr-.-,-rhe rssrrme \A/ dono l'esecuzione dinnn rn: dollo i<trr rzinn

All' nizio il valore di W sara indeter-minato, e quindi si rappresenta median-te "x". Dopo la prima istruzione avremocaricato in W il valore 5, il cui codiceh.nalo si r:nnrpsent: con "'1 0'l " Datoche i registri del PIC hanno una dimen-sione di B unità (bits), le celle non diret-+16^n+^ '^+^.^--^+^ -..dilìerLe InreressdLe, 50no messe a zero,

iniziando da sinistra. Dopo la secondaistruzione il valore di W varia, cancellan-dn il nrimn v:lorp o nassando ad essere"0000001 1 "

Valore di W all'interno di ogni isLr,tzione movlw.

Schede dette istr uzioni:l'istruzione movlw

'isl.-rzione "mov" e tiptcair îutîi i nrocessorr datoche e sempre necessario I

movimento di dat da unposto ad un a rro, siano

o-esti de risultaLi, valori f ra registri o

vaiori immediati

Consta dr due operandi, dove il

drtn rnnionrrin nol nrimn o lrzcfar't.uorw LUrrrcrruLU rrqr Pril rlv q Lt o)tqtt_

to, o soostato al secondo. Con que-

sta istruzione si realizza una copra der

dati, poiche non sr cancella il datoorig inale.

Ci sono tre tipi di istruzioni" mov", le quali si differenziaro reiloro operandi di orrgine e deslinaz o-ne Nel caso della movlw, l'origine è

un val'ore letrerale e la destinazione e

il rpniqtrn di l:rinrn \A/

[5fr i4ilt il*# t'951",{{"3ríq:$ili**vì..it,

$sa*S$qryqsre*

Page 21: Microrobotica Monty Peruzzo Editore - 09 A - Programmazione

Strumenti di lavoro:I'ambiente MPLAB

'MPLAB è un ambiente dr

sviluppo integrato per il

lavoro con la famigliaPlC16/17 di Microch p.

Fsspre inteorato sionifica

che dal suo interno si puo editare un

programma, compilarlo, tradurlo in

linguaggio per il microcontroller,simulare il suo funzionamento, emu-

larlo su un hardware, che abbia le

funzio'ti del sistema reale, e anche

scriverlo rel microcontroller, anche se

nar flrro<to dr.a rrltimo nnc<ihrlit: é

necessario disoorre dr t-,n hardware-r^^, , -+^ ^r+"^ -ll,-^îliCaZiOne.duf9uotv, urLrE oil oPP

gr'1is?&g_il,&at*ru # #g &4 r*-effif ambiente MPLAB si trova in una car-

tella con lo stesso nome nel CD di

Finestra di inizio dell'installazione diMPLAB.

Robots, che vi abbiamo fornito. Per

o<onr rira l'in<r:ll:zinnp rrraÀaramn :E)CVUil q I r rJLO ro-rVr rq d( l -uclcl l lu d

questa cartella, dove troveremo un

file che dovremo eseorlire.F:rondn n1a<tn qj 2nrir: , 'n: fina-r ulur ruv VULJLv rr oPl llo ul lo lll lE-

(tr: .nmo nrroll: doll: finttre 16,o ei

comunichera che stiamo per procede-

re all'installazione di N/PLAB.

Accettando (Next) apparirà una<.ornnd,a finecfr: îor '-^^tt^'^ ^ '-tlr' )LCVrlClC \-'luOll

componenti vogliamo rnstallare.I rnmnonenti che selezioneremo

corispondono ai programr.r,, ai files e

alle loro funzroni relative che utilizze-

remo:MPLAB IDE Files: sono i frles

relatrvi all'ambiente di sviluppo inFinestra di selezione dei componenti da installare

Sep##wwr*

Page 22: Microrobotica Monty Peruzzo Editore - 09 A - Programmazione

sé, a cui si fa riferimento con la siglaIDE (lntegrated DevelopmentEnvironment).

MPASM/MPLINK/MPLIB Files:sono il compilatore, i linker e i files dilibreria accessibili tramite MPLAB. ll

compilatore sara necessario per tra-durre i programmi che editeremo in

linguaggio macchina, in questo casoquello del microcontroller. Se il pro-gramma è realizzato in diversi filestra loro relazionati, ed ognuno di essi

contiene vari sottoprogrammi, sarà

necessario il linker per renderli unasola unità coerente. I f iles di libreria,dal canto loro, facilitano il lavoro diprogrammazione fornendo "fram-menti" di programmi già elaborati e

molto utilizzati che potremo include-re all'interno del nostro codice.

MPLAB-SIM: è il simulatoresoftware che fornisce Microchio. Conesso si puo verificare il corretto fun-zionamento delle istruzioni del pro-gramma che si sta eseguendo, vederecome'risponde agli ingressi del siste-

ma, così come le uscite esterne chequesto genera.

MPLAB-ICD Debugger SupportFiles: come indica il suo nome non si

tratta di un'applicazione in sé, ma di

files di supporto necessari per la fun-zinna Ài "nlahrrn" n r'trarr- a,';e+'zrur rc ur utruu9 u rLcrLd 9ud>t-t.

Questa funzione permette, non solodi vedere i risultati finali di un oro-gramma, come farebbe l'utiltzzatore,ma di accedere ai registri del sistema

mentre si sta eseguendo l'applicazio-no ocanrondn Io i<tr uztont passo a

n:<<n aaaatar: Î rttn nro(fn ln rror{ro-

mo in maniera piu dettagliata trattan-do questi strumenti cosi importanti.

Help Files: sono i files che ci per-

metteranno di ottenere aiuto dallef unzioni, menu, finestre eccetera, che

inteqrano MPLAB. non disponiamo, per cui al momento non parleremo di

loro. La programmazione del PIC nei programmi che

realizzeremo si farà con il software e l'hardware speci-

fico in ouest'ooera.

I restanti componenti danno supporto software a

strumenti hardware per emulare e scrivere i programmicommercializzati dalla stessa ditta N/icrochip, dei quali

Ssflr*rsre

Finestra di selezione dell'ambiente dei componenti

Finestra di selezione dell'ubicazione del linker.

Page 23: Microrobotica Monty Peruzzo Editore - 09 A - Programmazione

Una volta scelti i componenti,continuando (Next) apparirà unaspconda finestra ner selezionarel|||LJ!|9 F\

l'ambiente nel quale si eseguiranno i

programmi. Noi abbiamo sceltol'ambiente Windows perché in que-

sto momento è il più diffuso sul mer-

cato.In seorrito verra chiesto un indi-

rizzo per l'installazione. Si puo sce-

gliere quello proposto, oppure uno

che vi sembra più adeguato all'orga-nizzazione del nostro disco fisso,dato che oresto non influira in

seguito sull'esecuzione dell'applìca-zione Nplla seorrente f ineStra è

offerta l'opzione di fare una copia di<ictrezza dpi files oià esistenti sul

nostro computer che saranno sosti-

tuiti, e in seguito introdurre nel

Menù di Inizio di Windows l'accesso

rapido all'applicazione in modo che

non sìa necessario entrare nelle sot-

tocartelle o nei f iles per ricercarla.

Comunque per un utrlrzzatore nuovosi raccomanda di installare il linker in

MPLAB\Lkr.

In seguito dovremo scegliere dove

installare gli archivi di sistema. Se

lavoreremo in Rete le scelte verrannofatte di conseguenza.

l-lnnn tr rfia nr ro<to SCelte iniZia l'in-vvvv rv r!!

stallazione di MPLAB. Durante il pro-

cesso di installazione appariranno una

serie di caratteristiche nel video, oltrealla barra di stato dell'installazione.

Una volta terminata l'installazio-nó ci nntr:nnn l666,nrn i{il^. ÀiIrsr Jr pvLrorilrv rsygElE I lllc) Ul

testo associati ai componenti instal-lati, oppure lasciarli per la fase suc-

cessiva.

Tutti questi passi del programma

MPLAB si trovano nella cartella" C :\Archivio di programma\Mplab".

^',-^r^ r- finestra ner sreoliere I'indlrizzovudl luu oPvoltr lq r il rLrLr u vLr rLLyilLr!'del linker, dovremo selezionare una delle due possibili

opzioni. Se avremo installato una versione precedente

di MPLAB, la scelta sarà fatta di conseguenza, per ren-

dere compatibili i vecchi progetti con quelli nuovi.

FI"J NffiSNXsg f4pLAsPossiamo già eseguire un programma, aprendolo appa-

rirà una fìnestra come quella della figura riprodotta qui

In basso.

Come si puo osservare l'aspetto e come quello

Durante l'installazione sono mostrate una serie di caratteristiche dell'applicazrone

Finestra di inizìo di MPLAB alla sua esecuztone.

Sa**nrara

Page 24: Microrobotica Monty Peruzzo Editore - 09 A - Programmazione

della maggior parte dei programmi che funzionanonell'ambiente Windows. Nella parte superiore dellafinestra appariranno diversi menù dentro iqualiincontreremo i tipici "Files", "Modifica", "Finestra",

"Aiuto" e altri che, invece, sono specifici di questaparticolare applicazione.

Sotto i menù le icone che raooresentano le fun-zioni oiù utilizzate. Se si seleziona l'icona di sinistra

il gruppo di icone varierà.All'interno di questo ambiente si

potra:

.,,a,:a,,:.&

'.'.Ìa:-':?&È'r...::-,:i*

.::::::1ffi

,,,,:::Liffi

;3.. .l:t

"s4,.-ffiffi1::€

ffiffi,:#-":'.Ea

-::::x--iffi

-:w"Èffi

"w

w'E€

ffie-l*I

:.:,,aa&:,;:1|ll&

iìè

:::lr:;:*

:.t:&

-,.}". &:

"E

,,,,ì1ffi,,'::a::#

.::-:..ixr:ìi::il::!A

ffi'::,::t:atffi

:ìa:::11i9;!

,:*$ffi

"qffiw4tr

.11,11:,::,74&&

ffi.

.iss

..*#:i

"*ffi'ffil*q':;t

:,à':#

...1#orX

wig'4

,::j!.?}*;::*' ,{4$fi*wffi':ts

:,.ff,ffi":ffi

'ffi

---é,9!i{gt3&

ln Assembler ogni istruzione si traduce come un solo codice macchina.

Grupfii di icone che rappresentano le funzioni più comuni

Finestra che mostra i differenti titti di tnformazioni fornite da MPLAB.

Tabella delle funzioni da realizzarenell'ambiente MPLAB.

Pnro : norn vod;911o come Si

realizzano queste opzioni. Per il

momento diamo un'occhiata alla(anronta finrrr: nor vorifir:ro il f inn

di informazione che ci permette di

vedere l'applicazione, e cominciamo- ^i^--"^ -^^idiversi menu.o gruLorE ur I PU LUr | |

la finestra srrnpriore a sinistramostra l'edizione del programma in

corso. Sopra di essa, in un'altrafinestra si nrro vedere il valore dioonrnn dci renrstri sDecifiCi del PIC

nel loro formato esadecimale, deci-male e brnario. Nelle finestre di

destra, cominciando dall'alto versoil basso, troveremo la finestra delloStack delle istruzioni del PlC, la

EEPRON,l dei dati e la memoria diprogramma.

Organizzare codici di unaapplicazione in progetto.

Editare i programmifonte per il PIC 16/17 cosìcome altri flles di testo di cuipotremo aver bisogno.

Compilare i codicifonte ottenendo i filesda memorizzaresul microcontroller.

Simulare icodiciuna volta compilati e primadi memorizzarlinel microcontroller,verificare che il lavororealizzatosia adeguato.

; ***rì******t**.$***r*r**dtt*Iq*r****i**rì.*r

i*r*ú******r**** r*r*r*È*r+**,;* Hlcr0chlp lechn0l0gg IncorForated* 16 0ecenber 1998* hssenùtÈrt ulth l4Pfisl'l u2,?8***it*it*t**t*iÈ*tr*r**t****i*i**t***$**r*H{;r lhls proqrafi conflgures the n,/ù ilúdulÈ t0 r

;i l/D channel 0 (the potentllneter) and dlspl;r rÈsúlts on thÉ LE0S on PoRTC. ìlak€ sure tlr sÍltch SSg has all ssltches ln tha 0H posll

Hex Dec 81n3f996 B BBSSBBBBOB B 588ÙBÙ68FF ?55 11111111'18 24 IrJù11888BS B BSBB6BOB6B B BB6ÙB8BB1F 3t ggg1t.i11B! & 86800080FF ?55 i111111169 B 6OB86O68a0 B 0086680006 0 0686066605 B 86068880

- :T: 0ú 01 02 03 64 05 06 07 08 09 0n !8 0C

- FtÉ F; cF Fr rE FF r_ tF !t tr FF;F rl illd.f6 FF FF FF FF rÈ L, rF tt t, FF EE tt 'lg&!.f fr fF FF FE ,! FF Ft rr Ft fF t, rfEgg! FF El lr Jf rl cf Fl fF F. FF FF l,-

' r

I +:000S SFFF

+ q!!-', litlB 0003 SFFF €ddlw orFfi oooq arrr eddtu oxff

-ù 0009 aFFF àddlu 0xff

9à'w&%*xww*

Page 25: Microrobotica Monty Peruzzo Editore - 09 A - Programmazione

.

ìir':::ir1,

i?:,:,::':ìr.:.

..:-::iii

^..".'

*.::r:lll',,,,

:aìr.ìl:ìlì:ì : '''']iaa-

aaa::.::::: -:::

,1L1;1::l;1:,:,,,,

ì:ii:,:i::,'::ìiììì:r:ì:: l"

..

L,,t,,l;:L;',::,

at,:.:,, -

Schede dette istr uzioni :l'istruzione movwf

la seconda variante dell'i-struzione "mov" In essa

rl dato contenuto nel

registro di lavoro W è

I

OPERANDO OPERANDOFONTE DESTINAZIONE

ttrasferito a1 registro f, che qui

appare come parametro, in

modo che si cancelli da WDobbiamo solo indicare qual

è l'operando di destinazione,

visto che quello d'origine, W, e

implicito nel codice di istruzione.

;1$l1r!;;ìl ii1!il. tit,ii *i.ìì-; Î í:': ;ri :ji'i ijqi l;4,,^-+- ,,^l+- ,,^^li--^ -^.,-^"^ 'lvuc)Ld vulLd vu9llol I lv ( dl l\ dlú ll

valore de recistro rl crri indirizzo

e 0E (ricordramoci che a partire,'lr nf Ài.n^ni.mn doi ranictriud uL ur)purror rw uLr rLyrJrrl

MNEMONICO

m o.v

Operazione:

Cicli:Codice OP:Flags:

movimento del contenuto del

registro di lavoro W al registro fI

00 0000 1 fff ffffNESSUNO

Ca ratte risti c he de I l' i struzi o ne movwf

generali che possiamo utiìizzare come ci conviene), e :

chechiameremooPERANDo,conva|oredectma|eB'Per questo dovremo impiegare le due istruzioni che gia

conosciamo: movlw e movwf .

Nella figura si vedono i passi da realizzare. l

€t,rn

OV

ru

m

lregistri, all'inizio, si considerano con valore indetermr-

nato, X e Y. Notramo che al momento di utilizzare le

istruzroni il valore letterale non viene sempre rappre-

sentato nello stesso modo; dipenderà dalle situazioni o

dall'utilìzzatore, comunque al momento di memorizza-

OPERANDO:XXXXXXXX t

' . . '.

: . ... ì.]ì.ì:ì: ìì :...'.'.... :':.1 ::. '' : 1',. ].

arilfjt

a

xxxxxxxx :

wY.YYYYYYY . .'

'.--lriF;.,

ì.:i'

0000 r 000 :

re i dati nei registri e quando

lavora la ALU la base utilizzata

sara la binaria ll codice esade-

rimale e orrello che si usa nor-

malmente, in assenza di altresnec if iche e com nre n d e i

valori da 0 alla f . Per utilizzaregl altri codici dovremo espri-

mere rl numero entro "virgolesemnliri" e nrerpderlo da una

lettera che indichi il codice in

cui si trova. In questo modo,

avremo diversì codici moltoimpiegati, come ad esemp'o il

decimale e il brnario. Dopo le

nnor:zinni pntr:mhì i roni<tri'-v'-"'hanno il medesimo dato, vistorhA nt tA<ln nnn 17

jp6p r:nrol-\'rL 9ULJLV rL \ d lLcl-

l:rn noJ ronictrn nli nrir-, -,,Jrne.

'aÍ,

I

I

lwdi I

Passi da realizzare aer Cart(ÀrF il rpni<rro aPFRAIIDO COn il valore deCimale B

$s*$*sws*etr

Page 26: Microrobotica Monty Peruzzo Editore - 09 A - Programmazione

Schede delte istruzioni:f istruzione movf%W la terza e ultima variante

ffi* dell'istruzione " mov". Inwffi questo caso rl contenutofu Oet registro f, che e l'ope-

rando fonte, si puo trasferire nel

registro di lavoro W, o al medesimorenistro f : sorond: del valore dr

"d" F necessario snecificare tantol'origine come la destinazione.

Muovere un dato da un registroal registro di lavoro W ha senso,d:rn rho l'nhioftirin nr rÀ nccnrn trrvo Lv Lr rq I uurqtLtvv vuv c))ctc Ltd-

sferirlo ad un secondo registro a

partire da W, o operare nel medesr-

mo registro di lavoro, pero muove-ro ttn d:tn d: ttn roni<+"n :lln cfacrs urr uqlv uo urr rEyr)trv qilu )Lc)-

so regrstro, sem0ra non averesenso. Tutto ha una ragione, ed e

che quando si realizza questa ope-razione resta coinvolto un segnala-

OPERANDO OPERANDO DIMNEMONICO FONTE DESTINAZIONE

m o v f d ^;

Operazione: movimento del contenutodel registro f alla destinazione d.Sed=0si muoveil registro di lavoro W e se d = 1 si muoveallo stesso registro f

Cicli: 1

Codice OP: 00 1000 dfff ffffFlags: Z

Caratteristiche dell' istruzione movf.

tore, o flag, chiamato Z. ll flagZè un bit del registro di

STATO che viene messo a I se il risultato di una opera-zione è 0. Così, muovendo un registro a sé medesimo e

verificando il valore del flag Z, possiamo sapere se que-sto registro ha valore 0, o no, visto che Z sarà messo a '1

nel caso che questo valga O. Cio e molto utile, e si vedra,parlando di cicli, che per ripetere un'azione un determi-

Valori dei registri nei differenti casi con esecuzione dell'istruzione movf

nato numero di volte, si puo caricare il valore in un regi-

stro e decrementarlo fino a che questo raggiunga 0.

frsfre4px il*** #xsgffià$trg#$€g &4#w$:

Nella f igura sono rappresentati i valori che prenderan-no i registri all'esecuzione dell'istruzione movf nei duediversi casi, dipendendo dal valore degli operandi di

Valore inizialetmovf openaruoo,l

si opeRlruoo= 0

si oprRnuoo+0tmovf openaruoo,O

si openaruoo= 0

si opeRnuoo+0

OPERANDO

"ìr:**Y,*i

yyyyyyyvvvvvvv

yyyyyyyyyyyyyyy

STATO

;- J?-:YI :

I

l- )z=1t . -lL _ _t*z=gt I

I

^-.12.=11 '*ltz=ol .J

vvyyyyyyvvvvyyv

destinazione. Questo ci daràdue combin azioni, però se

uniamo il valore del flag Z

otterremo quattro casi distin-ti. Nei primi due avremom.)qq.l il rpnictrn q1 qa\.+^..^v Ju Jú )LE))U

e Z si sara attivato, o no, a

seconda che il valore del regi-stro sia 0 nel momento del

movimento. Negli ultimi dueesemni oltre :ll',aftivazione!J!| | |H|,

del f lao 7 il rcnistrn dr ravoro

W ha alla fine dell'istruzione,il medesimo valore dell'ope-rando fonte.

Sw#sweqwwqp]dll@lì\]]ìiìWs'ì''ì]i]ìù]$ì]Wls'''''[W!]l!]l!.ìrìsW*]sl!l*lW\ll|wilìììììr]]{l*lf1ffi:è.ì:ì:ìììì]]]]l]\*:\wqfr,']|

Page 27: Microrobotica Monty Peruzzo Editore - 09 A - Programmazione

it compitatore MPASM

Strumenti di lavoro:

MPASM è un compilato-ro npr PIC Delle l-rc ver-

sioni che esistono attual-mente, noi utiiizzeremoquella per Windows, che

-r^r-i--^ ^i- --"i--+^ installandoouuior rw 9ro LorLoLw

MPLAB. Questo offre il vantaggiodi noter romnil,arc senza uScire

dall'ambiente di sviluppo, cosa

che risulta molto comoda, oltre a

fornire un'interfaccia molto piu

nradpvnle risnetto alla versioneper MS-DOS.

f MPASM oeve iavorare con filecon estensione ASM, li compilerà

e, se non sono staîr cornmessl

errori, darà come risultato altrifiies orresta volta co. estensione

HEX. ll codice HEX e qL,ello chenntr: pqqorp nronr:rrmato nel PIC

per essere eseguito. Se I orog'am-

FileA5M

Compilozionecon MPASM

Errore disintossi? *ri.

FileERR

Files più importanti in relaziane all'MPASM

FileHEX

ma contrene error srnta'ttr-ci ,ad csomnio sp p Stata

scritta maie un'istruzione, onnn \/ennnnn riqnó++:r^ l^l,Ull vcl'VU ,U ITJPqLLoLC lC

nnrmp dpl rnmnil:lnro rl' '|./iluLvrE/

ql

nnqtn dol fila oq:dori*.loPUJLv vL rr'L LruuLL lldlr

riorrÀ nrnoolln irn tile d

e"ore FRR che sara nossi-Ait^ :^^^^.^ ^ ^^t ^,, -t^uiltr r199crc c rc \luartr

saranno contenuti i codicinlonl arrar't frnr,:1-i Chevrvl

dn\/rp'nn rnrrenctrrtr nr Tla

di oroseor,ire lo schema

della fiarira rinrodotl-o in"v-'- '

,altn rrnstr: i: sonrrg1173

segu ta e i files co nvohi,nrio(tn cr hom: :nrho <a h r9ULJLV iLr r! rrrU Ur rLr rL JE I lo

forma srmile non deve

essere confuso con un!à versione di MPASM per MS-DaS ha quesro òspa|7o

s--bq;}trYt";q*P*

Page 28: Microrobotica Monty Peruzzo Editore - 09 A - Programmazione

organigramma, perché in questo nuovo schema sonomescolati differenti tipi di dati.

I f iles mostrati nella figura sono i più importan-ti, ma non gli unici, dato che vengono generatianche altri tipi di file che per il momento non men-zioneremo.

Ovviamente le finestre che ìllustrano questocapitolo di "Programmazione" non le troveretesul CD, ma servono unicamente come esempio dinrocpdttre d: sporriro ner rcalizzaro il vn(trn nrn-gerro.

il# gi;f *rg# # ffi &f.X* ru f ffi tr L n*-ffi tr&SÍv?

f MPASN/ che utilizzeremo è parte dell'ambiente di svi-

luppo di MPLAB, per cui parlando del primo dobbiamocontinuamente far riferimento a quest'ultimo. Così,

per esempio, in MPLAB tutto è basato sui progetti, i

files si chìamano nodi (nodes), e sono raggruppati performare il progetto, così MPASM si dovrà configurare inh:<o:llo o<inonzo di nr_, ,Jnt progeîto.

Per configurare MPASM per poterlo utilizzare in

MPLAB bisogna seguire i seguenti passi:

1. Si creerà un nuovo progetto (Project>New

,li*.ljE '*r :,.:,:.,:,,:lProiect File+ ['.pitf j

Sri1e*:r -"*l'#s

.$ c:\ *;l archiv*lffi mplab

If er*ample

I template

Finestra di dialogo che appare quando si crea un nuovo progetta

f,anfigurdbné.Tsol* 3

] EreaL tlptiun*H*r+:*:g

Project), dopo di che appa-rirà una finestra di dialogocome quella nella figura.

2. Si dovrà riempire il;^^;--+^ -^^,,Ldil rpu il rurLd ro Lor nome

file" (File Name)con il nomeche vogliamo assegnare al

progetto lad es. "prova") e

cliccare OK Apparirà una

seconda finestra con le

opzronr.

3. All'inizio il modo di

sviluppo (Development

Mode) sara di sola scrittura(Editor Only 16F84). Per il

momento e su'f iciente,pero possiamo ugualmenteprovare a cambiarlo, con il

pulsante "Change", sele-

zioniano il modo simulazio-ne (MPLAB-SIM Simulator),^.-^",,-^,1^ ^,,-^+i ^-,os5ervan0o quanlt parame-

tri dovremo tenere in consi-derazione al momento di

simulare il nostro program-ma.

4. Torniamo pero allafines'ra 11o11o n6zinr., d€lprogetLo nella parte infe-

riore dei a fineslra trov a"noattivo il pulsante per

aEgiungere un nodo (Add

Nocie), clrccandolo faràapparrre una f inestra che ci

i :"+wt+

:'"++ !t] rinu

I fu""r

: "--.'"-'"*"" -r.:llone [Editor Bnlyl :Proce*sor:

ilirlrF-flt!srl*lt} {{}::

f:tll:lffi,tli ì 1:.1:l Ii.++r:Ì+l+r

t q. î: f'Ì 1.

l'lPLAB-lCD Debugger

Ptc16Ffr{ ?

ot all peliphelal* have $uFFort forsimulation.

ial l/tl is nnt simulated"'Details' for additional

information an Flfl EF8{.

r--------------t{rper.metteràdi realizzare| 0K | f,ancel | $rply { l-l.elp Ir -- I I o'-lesta OggraTione.

ir:**iií:,t

F lestra

er 1i

carlbio rt .lmb,e .1i1oa

e,1:r:t:i, : ::ryla1tan1

:li 'l;:

f li ,,;,1 r* i, g,',

Una vclta selezicnato il

fil-., c rccare su "OK" llel

Page 29: Microrobotica Monty Peruzzo Editore - 09 A - Programmazione

ia::::iiirr

l::ll:::':,

'.:,a,,::,::::

,,.:tt:a:t',:',

:a:a,:,.:,::::

:t:titìit:.:

'l'tllLli:ll:

t:.,,::.:::'

$l,,,,

t:,::.:a,::

;4,4,a,,,:

caso che nessuno dei files già editati faccia al casonnctro np nnsqiàmn creare Uno nUovo con l'onzionp

File>New.

5. Se si seleziona ìl nome del progetto,(prova.hex), del riquadro Project File, si attiveraanche il pulsante di proprietà del nodo (Node

PKidTudFi*asi;-*d"h*

*-------:---l

Properties), che, di conseguenza dovremo cliccare.6 ln nrroct: finoctr- l- -^-- ^:,, i-^^.+-n+a a calarilrLJ(ro lo Lv)o l.JlU llllPUl LolltC E )ElC-

zionare MPASM come linguaggio di programmazione/r -^^,,-^^ T^^r\ -rr,i^+prno dplle nossihili srelte. FattO\ LOt t9UO9E tUUt// Oil [ tLsr I rU UCilq pUJ)rUilr )Lr

questo, cliccheremo OK. Tornera la finestra dellennzinni dol nrnnotln

s

EE:F.ic*u:]ì

l-:---]-= È

lldp I ;

Il'

Ir *] rin*:

Dae@extrode: Fdibo'tt6F81 -___l qle4Ei...l

rure"4ol*j.5oìio |;;g" - ,*=

Plr4É{{ Éùer

tdd li6de--- 1

{l

la..a:.:':.,'::'-a tr

f ''ir,: r.ll:::: {

.:t.: t .- i

nn-ostra per inserire le opztoni del pragetto

i: :.* {snc . '

i

I :' gef f*r*P,F*+et Énah*e

:, .: f*qf 3r+* Etable

*FÈiffi"1*;6,16;1',

,IrritT'ri ff"#:

.St*rr.rr'.+nk+H,*r

Mk=+pr+r.'+,r++r

l:.yt *t+tktí Í* i+.'* +++rttr +Íì+;+

File Name:

e!.dmFle.ósm

List Files of Type

| 5 uur** f iles [". c;-. msml :i

f.qil cryrd I aar | 490 |' t:

Alcuni parametri da tenere rn constderaztone quando si símulera tl programma

, :$# + llll

Directories

";! c:\d archiv*lj mplahj e*ample

I template

c:lalchir*l lmplabOK

|.:IP I

-t-S:- ..- ,*1'"iEonfiq.ndion 3 ' '=-.i.....-......-.=.- -'.-.....-..-'.-.iq

hala.a+midasml E-asmidasml tr-asmmulSxfi-armteÉdme-asm

Page 30: Microrobotica Monty Peruzzo Editore - 09 A - Programmazione

Buílrting El(AHPLE.HEX. - .

Co&piling EXfi HPLE.É$h:Conmafid line : "C :\*BCHtU*1U,lFLAS\l,lPf,5l,lltIt{-E,(Et'rarning[295] C:\f,FCHIU*1\l'lPLf,E\EX*],|FLE.frS]4 4irarning[267] C:\ÉECHIU-1\l4FLf,El EXf,l'IPLE-ASl,t óError['t131 C:\AnúHtU*1!]{PLnE\E$Él,lPLE-fi511 12ttarnlng [ 2 07 I C : \AECH I U-1 \l'lPLfi S\ EXfi f,lFLE. A$l't 1 6ErrrrÍ1191 È;\RRCHIU-1\l,lPLAS\El{Él4PLE.FSll 17Errúrf1227 C:\ftRCHI$-1\tlPLRB\Et(ÉllPLE.ASJ,I 2gErrúrf"1257 0:\ÉnCHIU-I\t'fFLAB\EI{*HPLE"frSrf 22

/e+ /L+ fx- ft+ lp16F84 /q C:\gFound rlireetiue iÍ co1ufin 1. {Found lahel after cúlunn 1. (L

: Sgmbúl not pr€uiouslg defined: Found label after column 1 - (: $gfibo1 not preuiouEly dÉfined: llLegal. opcode {stop}: Ill-egal condftiDn (E0F Éncoun

Ab'iamo quindi definitoMPASN/ come compilatore perflrpsto nrnnpttn All'interno dt

^,,^-+- -+^--- {i^^-+--quesra sressa Trnestra posstamo)na^r2 <ronlioro :lrr rnr,-r opztont,cnme il tino di e rrorp di cui vor-remmo essere avvisati dall'as-sembler, il sistema di numera-ziana arc a ttzrizro i n:r:mairiL vur rutL I POlOlllELl I

rhe rimannono Ie nnzioni scel-

te sono mostrate nella linea di

comando (Command Line).

il*ffitrxLexH*ru*f$Fg ilxr i:{M ks I À*nL --.

7. Una volta definite le pro-prieta del progetto e r suoi frles,

per compilarlo dovremo sceglterel'opzione Project>Make Project,

tr:mitp l: nrr:lp sp nOn SOnO

ci:ii rnmmoc<i donli orr 'or|, verracpneràlo il file HFX da caricare

^^il- -^-^"i- ..Jì ^"^^",Ilellcl Irle'rì(Jrld U litOg'Amî4.

R Drrr,rntp l,r noneraTjglg lgl{ile HFX il ro.nnil,atore N,lPASN,4

r, nrro .rrniiq,lrp dr t.p tint di even-

ti: errori (errors), awisr (warnings)

^ -^.craai rmnrc rnnc\ ^, -lic llc))d99r 'lllc)>d9c)// I L.lud'l

possono impedire che si crei il f ile

HEX. Nell'help in linea dì NIPLAB

sono descrittr ad uno ad unonrro<ii tini di arronir

Memoria di programrna con il fileHEX caricato.

l,lPLf,E is uÍablP tú fínd úutorrt

Bull-d fallÉó.

.,EI{f,HFLE"HEX",

81933008B09t881 C

1 6658C91.t8m

9792gc$2gctSgB94

289734C08J B3

3t15d6913MÙ909 0

2 6ù'f281bAFFFSFFF

3'FFSFFF

AB82Bg63ùg848065BB6ó

a6a780s8OEB9

60ca6úM666C6E5t66#B06f661 B

60rJg81'6413sB14cB196Bló8417s818E61C

3!e7

E

t51l+21A'14

191úî:î*-fq

?t

,btiz6

Finp<tra rlello nronricra dct 1166c

Suildíng EI(*HPLE.HEX... -t

Cùnpiling EXÉ|4PLE . fiSl'l:comnand linÉ: "c:\AR[HIU-'l\HplÉE\l'tFfiSl'lt,lH.Et(E le+ lL+ Íx- lt,+ tqlíFgtt /q 0:\f;

Euild completed successfullg.

Questa finestra indica che non sana stati commessi errori durante la comptlazione

alrf 8e12clrf gk11

úouls 6t8mu6f Brl4mvf 6x10,1bcf 6x3,888rrF gx1lbtfec 8x3,grgaódwÍ 6xlzf.f 6x12rrÍ Sx13dscfsz 8114gsto looPretlF gxB

clrsdsùls ErgSÉúosf gfJlaoúls E*20mvof ù<16call nplt_Sgoto minàddl$ 6rffaddlw hrffèdrt1( Bxffrddlw kff

Finestra chc >; genera se ci sono orrori di tomptlaZtaFa

3*fswwsm

Page 31: Microrobotica Monty Peruzzo Editore - 09 A - Programmazione

Scheda delle istruzioni:l'istruzione bsf

i puo dire che insieme alla" bcf " e una delle istruzioni^i,, ,,+il;,--+^ ^^ll-plu uriltlòte rera pro-grammazione del PlC. ll suoohieltivo è di norre a'l un

bit di un registro. ll nome o la posi-zione del reoistro all'interno dellamemoria dei dati, sarà fornito comeprimo parametro di istruzione, e il

numero del bit come secondo para-metro. Sia uno che l'altro iniziano a

contare da 0.

ffissMpx# flseé$-'3$gffiiliXg#*l$ fi lìxs$

A differenza delle istruzioni di movi-mento ouesta istruzione non variarnmnlotempntc il rgplenutO di Un

registro, dato che serve per modifi-care bits individuali, lasciando ilresto così com'è.

Questo è molto utile nell'uso di

alcuni registri specifici, dove ogni bith: rrn sinnif ir:tn p deve essere trat-tato in modo singolo, al momentogiusto, senza che gli altri debbanovariare. Un esempio tipico e il cam-bio di banco; normalmente si lavoranel banco 0, pero nella maggiorparte dei programmi e necessarioaccedere al banco 1 per configurarerrn: <ario di ronictri ,, e oopo lornareal banco 0 per lavorare. ll cambio f raquesti banchi si realizza modif ican-do il bit 5 del registro STATO (regi-

stro che occupa la posizione 03 dellamemoria dei dati). ll bit è conoscru-to come RPO e, dato che la numera-

MNEMONICO

bsfOperozione:

Cicli:

Codice OP:

Flogs:

PARAMETRO

I

Ít **",

;;;;,,di un

t

0t 0t bb bfff ffff

Nessuno.

PARAMETRO

2

b

registro. f

Caratteristiche dell' istruzione bsf.

Uso dell'btruzbne bsf per il cambio di banco

zione dei bits inizia da 0 da destra verso sinistra,occupa la posizione del sesto bit. Nell'esempio si

vede questo cambio dibsf è stata evidenziata

banco; Ia linea dr istruzionein un altro colore.

$c$flwsxra

Page 32: Microrobotica Monty Peruzzo Editore - 09 A - Programmazione

.rìtììì

Scheda delte istr uzioni :l'istruzione bcf

.ffi uesta istrrrzione realizza l'operazione con-ffiffi' ffi traria alla "bsf "; pone a 0 un bit di un regi-

ffi ffi stro. ll nome o la posizione del registroffig#

W ffi all'interno della memoria dei dati e anche'%.fornito come prim.o parametro

dell'istruZione, e il numero del bit all'internodol reniqtrn aaìmo (oaaìndn n:r:mptro l pvL|

' l:,IJL'

sue caratteristiche sono illustrate nella figu-ra a f ianco.

Cnmc ci nrn nqsorvare il mnemonico divuv vJJr'

ambedue le istruzioni si differenzia solo da

una lettera, la "s" della bsf è sostituita dalla"c" della bcf . Entrambe le lettere indicano il

cambio di comportamento delle istruzioni,dato che il loro significato è porre a uno

tset) e porre a zero (clear) rispettivamente,in questo caso un bit (b) del registro (f).

Questo modo dì nominare le istruzioni lo

troveremo molto spesso nelì'utilizzo del PlC.

zioni non sono solo utilizzate oer ouello e non è dettoche debbano essere utilizzate insieme. Per esempio un

altro uso molto importante che si puo fare con l'istru--i^^^ ^-+ ^ l.

-^... r A n rnrn+ -l^i .^^^.1.+^'; {1.^.zlulle uLl c ld llle>>d d u u lc>cL utrr )cgrdrdr-uil/ lldg)

PARAMETRO PARAMETRO

2

Caratteristiche dell' istruzione bcf

o bandiere, quando queste si attivano. Normalmentequesti segnalatori si attivano in modo singolo, quan-do si nrodLtce un evenln r^hc notrehhe pssere il ter-uv J, vl

mine di un'operazione, il salto ad un'interrupt, ecce-

tera. Questo viene detto attivazione via hardware,

^^.À t- t^"n ric.++i,,^-i^-^ !^.,^ ^^^^"^ fatta Viapelu ld lulu ul>dl-Llvdzruilc ucvc c>)clcsoftware, sarebbe a dire, noi dovremo mettere a 0

questi flags tramite un'istruzione.Per esempio, all'attivarsi del contatore

TMR0, avremo un bit all'interno del registro

INTCON che si pone a 1 per avvisarci di que-

sto fatto. Se vogliamo utilizzare il TMR0 più

volte all'interno di un programma, dobbia-mo rimettere a 0 questo segnalatore ognivolta che si attiva, in questo modo torneràad avvertirci della sua messa a '1 quando il

nrnaoq<n (t nnoté

Questo si fa con l'istruzione bcf, all'inter-no del programma, dove il registro INTCON

sarà il prrmo parametro e il bit di attivazio-ne TMR0 il secondo.

W%XWWX t"*w *X%YW*KK*WW. tu€x

Rtguardo l'istruzione bsf abbiamo già presentato un

esempio, in cui entrambe le istruzioni si utilizzano in

maniera congiunta, una per passare al banco 1 della

memoria dei dati e l'altra per tornare al banco 0.

Poro :nrho ctr nrpsta combinazione si trova nella

maggior parte dei programmi con il PlC, queste istru-

STATO

j*j'iY':.Y*l"-lffi bcf

bcf

bcfbcf

STATO, ZSTATO,2

INTCON, TOIFINTCON,2INTCON

EECONI bcf EECONI, EEIFbcf EECONI,4

Un uso molto comune dell'istruzione bcf è il reset dei seqnalatori

S*#*wessw

Page 33: Microrobotica Monty Peruzzo Editore - 09 A - Programmazione

Appti cazione pratica:

compilazione det primo programma

na volta visto rl primo programma e l'usodel rnmnil:tnro N/lPA(l\,4 nalfo <ozinni nro-

rodonti ccnrrirpmn nra le faSi Che abbiamOJ!:rv,iL,,,v v,L

do<rrittn nor l'ol:hnr:zinno di rn nraìnottrì

a lr rnmnil:zinno nli 1n ^r^^rammr lrrc:n-E tq Lvrrrvilqzrvrrq ur urlPlU9ldllllrlo, uú)qll-

doci su un esempio concreto

f-inestra di propriela del nodo

flffifrsbHgq}ru# ffig aisé pffi*#ffiT?#1. Eseguire l'ambiente di sviluppo MPLAB, e creare un

progetto di nome primo.pjt

2. Selezionare il nome del progetto in modo che si atti-vi il pulsante di proprietà del nodo.

3. Entrare nella fìnestra di proprietà del nodo

Creazione di un progetto

Attivazione del pulsante di proprietà del nodo

SwSSwswww

Page 34: Microrobotica Monty Peruzzo Editore - 09 A - Programmazione

Assicurarsi qui, che il linguaggio scelto(Language Tool) sia MPASN/. Dato che non abbiamo^-l;+-+^ il ^"^^"-,-,-e(lrrdio il programma non posstamo sommare nes-sun nodo da assemblare. Uscire dalla f inestra di EditProject.

${ffixYY$"3ffi& #tr$_ tr$A##ffieffi *4e4. Creare un nuovo file (File>New).

5. Scrivere nella finestra corrispondente il programmache diamo come esempio di primo programma in

assembler.

Finestra del nuovo file

Scrittura del programma.

Assegnazione di ,Ln nome al programma

Somma di un file al progetto

Sw$swesswurluìÌrtjÌtl;]j::1::]::]ffi:!t

Page 35: Microrobotica Monty Peruzzo Editore - 09 A - Programmazione

Questo sarà il programma che più tardi sommere-

mo al progetto.

6. Salvatelo (File>Save As...) con il nome di primo.asm

nella directory dove avete installato MPLAB.

7. Ora che disponiamo di un file (nodo), possiamo apri-

re la finestra dr opzioni del progetto (Project>Edit

Project) per aggiungerlo.

emp4trxL-&Kx*rum ffi ffig Fg$-il#g $"$** pw**ffiYY*B. Ora manderemo a comporre il progetto (Pro-

ject>Make Project), mentre il software compila tutti i

f ile del progetto, nel nostro caso uno solo; apparirà una

finestra di comunicazione.9. Se non sono stati commessi errori nella scrittura del

Compilazione dei file

conpilinq FnIH0.nSí:comand line: "C:\AFCHIu"1\t4PLAB\flPnSfiilItl"ExE le+ l1+ /x- /c* lp1óF8|| /q c:\g

Fuild cospleted 5uccessfuI19.

Finestra di progetto compilato con successo.

SwW&Eeswww

Page 36: Microrobotica Monty Peruzzo Editore - 09 A - Programmazione

nrnnr:mm: deve,ann36jpe una finestra como nrétt:della figura, che ci informa della compilazione conclu-sa con succesSo.

*ssgffiwex3#ru3 se"$L il*ffigfl il *à:ruf, ffiey*'10. Se si apre la memoria di programma (Win-dow>Program Memory), si puo osservare come verra

caricato ilfile nel PlC. Anche se le linee compilate nella

memoria di programma sono 17, vengono caricatesolo le istruzioni, sarebbe a dire quattro indirizzi di

memoria. A partire dalla linea 5 (indirizzo 0004 di

memoria) quello che appare ha un codice fisso, per

senn,rl,rre chp non r'e alCUn codice caricato.1 1 . All'interno del menù Window possono essere aper-te altre frnestre che forniscono diverse informazioni sul

progetto e sui file.

Finestra della memoia delle istruzioni con il arooramma caricato

Altre finestre che ci forniscono dati sul progetto

Sw$*wwrm

Page 37: Microrobotica Monty Peruzzo Editore - 09 A - Programmazione

Schede di istruzioni:f istruzione addlw

ffi d istruzione "add" è una delleffi

ffi due istruzioni aritmeticheffi

ffi che puo eseguire un

ffi PIC'16F84: la somma. L'altra

ffi è la sottrazione. ll PIC'16F84

non sa moltiplicare, ne dividere, ne

tanto meno puo fare radici quadrate,

potenze; nulla di tutto questo. Questoe dovuto ad una delle caratteristiche

essenziali del suo insieme d'istruzioni:r- r^.^ -^*^r:-i+\ -^f fa Si Che SianOtd rutu )crrpILrLor Lr rt

molto raoide nell'esecuzione. Nono-<t:nta arro<tn qé <i do<idor: oqonrriro

alcune di queste istruzioni complesse,<i nn<<nnn rncirr riro : n:rf ira d:lla)r vv)Jvr ru Lv)rr uil E q Pqr Lrr E vollqi<trr rzinni <omnliri' La somma nel PIC ha due modalità:"addlw" e "addwf ". La "addlw"somma un valore letterale al contenu-to del registro di lavoro W, e lascia il

st'ultimo.risultato in que-

#%frF4Fg {*ru rs%€ffi€jtrg*ruil &ffiffiLwSupponiamo che il registro di lavoro W contenga I valo-re 05 prima di realizzare

OPERANDO OPERANDOMNEMONICO FONTE DESTINMIONE

oddlw i '.

Operozione: Sommo del volore letterole kol registro di lovoro W

Cicli: I

CodiceOP: I I I I lx kkkk kkkk

Flogs: C, DC, Z

Caratteristiche dell' istruzione addlw.

valore che puo contenere è FF (255). Quando dopoun'operazione come rn questo caso il risultato è mag-giore del suddetto numero, si genera quello che si

conosce come riporto o carry, e per avvisare di questo

fatto sr attiva un flag chiamato nel medesimo modo (C).

DECIMALEroperazione,esi vuoreÈ .ESADECIMAIE" BINARIO

trne dr tacilitarne Ia com- ;

prensrone L' -

vqlore finqle W 04 OOOOO t O0

sommare rl valore esadeci- ì r . lvqlore rnrzroleJVr |ilrrqrL il vurvrL LJUwLll :: | . I

meto FF \/odi:mn n'oiln vqlore lnlzlole u),,- -Jellu ;

che srrccedera dono l'ese- , ffi

cuzione dell'istruzione. i WNella seguente figura si

rappresentaqr.rtotuìto f; oddlwFF "+ FF i llllllll 255mostrando i valori in ildrversi codici numerici, al $ Yfine di facilitarne la com- l

vqlore finqle Wll registro di lavoro, così ?

come gti attrr regrstri dei A ffi

ffim$*e*remw*[email protected]&taaaaaltt l^)::::))::::::)):::|))::::t:

Page 38: Microrobotica Monty Peruzzo Editore - 09 A - Programmazione

::....:,a:::,1

'a,::l

,::'l:.:l

:Wole, OI

1

:

REGISTRO- I(contiene il digit MSB)

0000 00r r

REGISTRO-2

oooo ol0l

REGISÎRO - 3(contiene il digit LSBI

0000 llllvolore inizi;E

t&

oddwf 3,1

fiv0l

ol

OPERANDO OPERANDOI MNEMoNlco - io-NrÈ DEsTtNAzór.rr i

qddwf , f d

5e DC è messoo I dovremocorreggere

i digits

I lrilizza rlal iltn f)î rJana I anars zìana di <amms1t|/y ur uvYv

Sommo del contenufo del registro fcon il contenuio del registro

di lovoro W. Se d=0 il risultqto

si loscio nel registro di lovoro W,

e se d=l si loscio nello stesso

registro fI

00 0t I I dfff ffffC, DC, Z

oooo o0rr ; oo0o olo! , oo@oooo+l+J DC=l

:

OOOO OOt I , OOOO Ol lO : OOOO OOOO

Y;% {,: {:tt'i:' i {i. \,',.i Yi 1.,,,"r"1::,'7" Y.l} 7-l * ?}'{.

{:,'1,.}1|j\g'rl i;:

I fl:nc I o 7 sono qtà+r +--++-+i ^^^ri- - --.Lr Lrdt LdLr I rfvrl

altri esempi, per cui rìmane solo da

spiegare il co"nooruamento del flagDC. Questo flag va a 1 quando si pro-

duce un riporto nel 4' bit, anziché

nell'8", come succede con i flag C

Viene utilizzato, se necessario, quan-

do bisogna tener conÌo in un regrstro,

il superamento del valore massimo di

un digit.Per esenpio, se un numero e

<rnmnnqtn in tro dinit< pc:dprim:li p

ogni drgit e nemorizzato rn un regi-

'rnÀn c; nrnrlrrro rrn rinnrtn :l)U U, LIUO| rUU ) PTVUULE Ur | | rPWr LW ql

superamento del valore F, ìl flag DC

verra messo a 1; it che sign rica che

dovremo mettere a 0 il registro e

sommare '1 al digìt seguente. Questoe mosTrato graficamerte nella figuraIn aito.Ca ratte r isti ch e d el I' i str u zr o ne a ddwf .

Schede di istruzioni:l'istruzione addwf

istruzione addwf e la secon-

da modalita di somma esi-

sîenfe nel renertorio delle

istruzioni del PlC16FB4. La

somma st realizza fra il con-lónrrln rli rrn ranici66 ^' 'rlci.ci ÀnllrLCt tu LU Ur Ur r rc9r)Lrw L.1udl)ld)l uúlld

memoria dei dati, e il registro di lavo-

ro W.ll ri<rrlt:fn doll'nr-,,, -Jerazrone puo

^.-^"^ l^.-,^+^ ^^l -^...loqimn roni<lrne>>ele ld>LldLU lìcl lllcuEJilrV rEgr)Lrv

o nel registro di lavoro W, secondo il

ri:lnro dol n:r:motrn d

Così corne con l'istruzione addlwsono interessati i flags C, DC e Z.

Operozione:

Cicli:

Codice OP:

Flogs:

';,?',1

Page 39: Microrobotica Monty Peruzzo Editore - 09 A - Programmazione

Strumenti di lavoro:

ambiente di sviluppoMPLAB possiede tra i suoi

strumenti un srmulatore, il

N/PLAB-SIM. Un simulatorenprmettp di pspnrriro pgl

computer il programma che piu tardisarà registrato nel microcontroller. Si

nrrn rrpdpro rn<ì <o il,, programma sr

comporta come noi pensiamo, il

valore dei registri in ogni momento,p in npnor:lo tr rttn nlellO Che SUCCe-- ,,, y',

de dentro il microcontroller al

momento di eseguire il programma.

ll MPLAB-SIM, in part colare, è pro-oettato npr drp fr rnziont che sonoillustrate nel riquadro seguente. Differenze fondamentali tra i simulatori e qli emulatorì in circuito.

,,',' Nonostante questo, non dobbia-mo confondere un simulatore con un

emulatore in circuito. I simulatorirappresentano la situazione ideale e

non un'esecuzione reale al 100% diun programma, ed hanno delle limi-tazioni. Permettono di eseguire un

codrce, modrficarlo, ed eseguirlonuovamente, simulare gli input sulle

linee d'ingresso, seguire l'esecuzionelinea a linea del programma e i suoi

registri. . .., pero si differenziano dagliemulatori come il MPLAB-ICE in trecose fondamentali:

Assistere l'utente nella verifica dei programmi.

La velo<ità dei simulatori software è sempre minore rispetto a quella degli emulatori. Questo puòessere un vantaggio o uno svantaggio al momento di programmare, dipende dal programma e dall'utente.ln MPLAB-SIM si possono eseguire istruzioni ad una velocità dell'ordine del millisecondo per istruzione,mentre I'esecuzione reale di un'istruzione nel PIC è di un microsecondo.

I simulatori hanno il vantaggio di non necestitare di hardware esterno al PC per il loro utilizzo,per questo se non è necessaria un'esecuzione in tempo reale, di solito sono sufficienti per trovaree coneggere gli errori della maggioranza dei programmi.

il simulatore MPLAB-SIM

GIi stimoli esterni nel MPTAB-SIM sono elaborati una voha ogni ciclo d'istruzione, perciò i segnali di duratainferiore non possono essere captati, e pertanto simulati, cosa che è permessa dagli emulatori in circuito.

Opzioni per cambiare I'ambiente di sviluppo.Funzioni realizzabili con MPLAB-S|M

Sqw##wsmwq*

Page 40: Microrobotica Monty Peruzzo Editore - 09 A - Programmazione

.:::4,.:,:,aa

:a;,,::*.,::,:::::.::::

:::4.:t

il**urg##*q&ffi*ru*#ng- ffiF$-&ffi trffiffi g-&v*$c&ffiffi

f,#ru ffipL&#-$sffi

Aprendo MPLAB, il modo di sviluppo

standard è di scrittura. Questo significa

che dobbiamo configurarlo prima di

fare una simulazione, altrimenti le

opzioni non saranno accessibiìi. La pro-

cedura per cambiare il modo di lavoro è

contenuta nel menù opzioni (Options>

Development Mode). Eseguendolo, a

seconda del programma installato,

deve apparire una finestra con ìn parte

opzioni accessìbili, così com'è mostrato

rrella figura della pagina precedente.

Permette solo la scrittura e la compilazione dei

programmi, e le funzioni di progetto.

Permette la simulazione dei programmi

oltre la s(rittura e la compilazione. Dobbiamo

scegliere il microcontrollore che si va a simulare

nella parte destra della medesima finestra.

CaraLteristiche dei modi disponibilr

In questo caso

possiamo sce-

gliere fra diffe-renti modi, se-

condo le neces-

sità.

L'N/PLAB-lCD Debugger si vede evidenziato, per-

ché è stato installato sul software come componente

di MPLAB (vedere fascicolo dedicato a MPLAB), se

proviamo a selezionarlo ci apparirà un errore dovuto

al fatto che non abbiamo hardware associato. Inoltre,

tra i microcontrollori che ammettono questa opzionenon appare il PlC16FB4.

Gli altri modi non sono sele-

zionabili, dato che non sono

stati installati nel software, e

nel caso lo fossero non potreb-hero essere scelli noiche non

disponiamo dell'hardware.Per realizzare delle simula-

zioni dobbiamo selezionare la

<arnnrl: nnzinno n-^^^-+-)LLvrruu vp.rvrrL HIUPU)Ld.Possiamo effettuare una prova

e verificare, per ognuna delle

opzioni, le possibilità che ci

off rono i menu di Debug e

Window.

YZ?LW%T W#" &:{{X%%KffiK*H34ffiL Wffiffiffi%KWWL{vTKZWWW

Durante la simulazione delprogramma puo essere inte-rnccrnin,/^À^r^ in rho nn<i-lc))dl lLc vcucrc il r Lr rE vw)l-

Finestra della memoria d'istruzioni con caricato il programma con il quale si sta lavorando

Messaggio d'errore che appare selezionando il MPLAB-ICD Debugger.

Sw$swwryetsffi::t:;;z::;:@stúll;frswaarlttwffiltwlllyl2t8:wllùuuktw, &r4t..n.,..rr:lllltL:,lrrt

Page 41: Microrobotica Monty Peruzzo Editore - 09 A - Programmazione

Finestra di memoria EEPROM

tramite la quale si modifica un valore

zione si trovano le istruzioni che si stanno esequen-

do.C)rrestn e nossihile attraverso la Finestra diYVLJLV

Memoria del Programma (Program MemoryWindow).

Le informazioni disponibili si possono ottenere in

differenti formati, da scegliere cliccando nell'angolo

superiore sinistro della finestra.

Questi formati sono quelli che ci mostrano il codice

delle istruzioni in esadecimale oppure così com'e stato

scritto, facilitandone la verifica. lnoltre, appaiono infor-

mazioni addizionali sul numero d'ogni istruzione e sulla

posizione all'interno deìla memoria dr programma. Se il

nostro programma lavora con la memoria EEPRON/ dei

dati, possiamo vederne ivalori che contiene nella

EEPROM Window.

E+4 Ee 0à4 tudq Id

02.40 Rereased EJEilPLo.nsl 2-2-2861 22:4st51 PnGE

IC OBJECT CúDE LìNE SOURCE IEXTUNLUE

00004 ;r.**E***t*,r80005:0000ó ; The 1ó bit result is stored in 2 bltes00067 i00568 ; Before callinq the subroùtin€ " npy , the nult0!609 ; be loaded in location nulplr ", and the nulti09810 : nulDnd " The 1ó bit resurt is stored in 1oc06ú11;H,ÒJte&L_byte.

p=1ór84 ; PlClóf8!! is the tarqet000160ú017 Sinclude 'P1óF84.1flc ; Include header fi00!61 tlsf08602 ; P1óF84.lNC Stnndard Header Fi1e, Uersi0n 2-000013ó LISr8801800019 cblock 0110 i lenooraru storaae

lnformazioni addizionali del proqramma assemblato fornito.

Ssp$fuwwsw

liq:06lllq 33@c 0[.!ts$: sr..,f.:""

!1020t&090ó0710s613600S0ú -00 03 0g 00 s& 00 [{00 63 66 00 00 00 ù66A 6! !3 03 06 30 096ú 6ú 0A BC 00 ù0 0c

00 06 úù

3f

EOD OE

30

Nak Her Dèú 8inèr! clar1ó t93lt00ù

pcl 0B 3 00003000rPtioú r,aq Ft 255 11111111itètle 11 24 00011ú69 ,

5 ú000009slorta 36 0 03Ù0Ù066trisi 1F 31 000i1111óftb 06 | 06003s6sfisb ÉF 255 11111111

D0 0 g9Í0330300 0 00500s3c

e.on2 6! 6 90036000cìrth 31 6 30ù30Ù60ntcon 06 0 6000000ú

0s 0 !064300309re 60 C 3360306U

Finestre dei registricon un dato appena modificato.

Dall'opzione Window>Modify potremo modificare

il valore degli indirizzi della EEPROM che ci interessano,per fare la simulazione.

Nella figura corrispondente abbiamo modificato il

valore della posizione 0B rntroducendo il valore '12 esa-

decimale.rr^,-l+.- ^^..ihìli+- p dpridcrc sp il nrnnramma Che\Jll dltld PU))lulllLo E uEllvslc )E lr Prvyra

vogliamo simulare deve essere visualizzato così come lo

abbiamo scritto o con informazioni addizionali che for-nisce il simulatore alla compilazione, come gli indirizzi

d'ogni istruzione, le etichette definite. il numero d'in-dirizzì della memoria d'istruzione non utilizzati, ecc.

Questa informazione è disponibile nella finestra del

listato (Absolute Listing).

La finestra generale dei registrì (Fìle Register

Window) e quella dei registri speciali (Special Funtion

02.40 neleased EJtXPL0.eSh 2-2 2EC1 22145.51 PîGf 1

OBJEEI COOE LIffE SOUNCE IEXT

HCr: . | . i :

w3'i .'. .j , . tr " rrrr r.

'l.:.!l:lc9 0t6t t008 0008 0B!6 00

CB

0ù6&!0n0

--:; 00 61 82 03 94 05 & B7 08

16tr 08 10 00 lt 00 8! 0ú 60

asf !6 0t !6 0g 08 8B 00 00 08

E6?a 00 !8 00 Ù0 ú0 0Ù 0B 60 09

6&t B0 ú0 80 0ú 00 90 00 80 9ú

8C

c!00[600

Alcune finestre utili per realizzare la simulazione

Page 42: Microrobotica Monty Peruzzo Editore - 09 A - Programmazione

Register Window) generalmente è

molto utile durante una simulaztone.La finestra dei registri speciali con-

tiene solo quelli specif ici, mentrequella generale riunisce sia r registrispecifici sia i generali. Un cambia-mento di valore all'interno di unafinestra, Window > Modify, influenzaambo le finestre se gli rndirizzi esisto-no rn entrambe.

Sono interessanti anche altreopzioni come lo stack delle istruzioni(Stack Window) o informazionr del

Finestra per la determinazione del tipodi oscillatore.

progetto (Project Window). Normal-mente si tengono aperte diverse fine-stre nello stesso tempo. Le utilizzere-mo, così come i diversi modi d'esecu-zione di un programma (menùDebug), a seconda di come procede-

remo con i concetti e la programma-zrone.

&rxr*wx m& wewT&&wy"&wLL& %KW**&XXffiy"&W

Prima di realizzare delle simulazioni,dobbiamo tornare alle finestre del

Sm$*swwre

Finestra per I'abilitazione del Watchdog

modo sviluppo, per vedere che tipod'oscillatore è stato utilizzato e per

determinare la velocità del processo-

re, l'abilitazione o no delWatchdog, oil modo di collocare i punti in cui

vogliamo fermare la simulazione(break points).

Differenti opzioni dei break points

Page 43: Microrobotica Monty Peruzzo Editore - 09 A - Programmazione

fistruzione INCF

UCSTA ISTTUZIONC

può considerasi

un caso speciale

dell'istruzioneadd, dato che

somma I al

contenuto di un registro, cioè

incrementa di una unità il con-

tenuto del medesimo. ll risul-

tato puo essere portato nel

registro di ìavoro W al posto

del registro di origine, in

modo che quest'ultimo non

venga modificato. Questodinpndp anmp qemnrtr o:lvalore del parametro d.

Osserviamo che l'unicoflan interessato a ouesta

ilfiifi'[i',.j in.rcoNTAToRE,r :jj},StrruroRE,r i

-::s:*-19IH9Ti --* ...-. .-* *i . --, ..iIncremenlodi re in rre unirò i::[ ::li]î]:[:,1 "*k q1

_

lncremento di t

qer rer''* i ;[[33N]î13[E ] ' "JJ*r óóNrnronr,t

Comparazione dell'uso dell'istruzione di somma e incremento

istruzione è Z, per cui se ci interessa controllare i f lagC ola lC n^n n^trom-,,,o usare quesra ts{ruzrone.

$:SsffiPA fl#ru $js$"l|"ffiUtrX#rutr gN*rL'uso oiù comune di ouesta istruzione è nei contatori.

Normalmente i contatori si incre-mentano di una unità per volta, perrr ri nttoct'ictrr rzinno nermorro rnsostanzrale risparmio di tempo se la

compariamo con quella di somma,poiché ogni incremento comportasolo un'istruzione (un ciclo di istru-zione). Infatti per la stessa operazio-ne di incremento realizzata con ì'i-struzione di somma, è necessario

caricare un vaìore (un 1) nel registrodi lavoro W, e poi sommare il regi-stro utilizzato come contatore, al

registro di lavoro W. ll risultato sonodue istruzioni, per cui il tempo sarà

il doppio.Se rl contatore che vogliamo

imnlpmcnt:rp dpvp essere incre-mentato di piu di un'unita per

volta, è meglio impiegare istruzio-ni di somma.

MNEMONICOOPERANDO

FONTEOPERANDO

DESTINAZIONE

Cicli:

Codice OP:

Flog:

incf-*J------:r*--ir--*.*"g -*i

Operozione: incremento di uno unitòdel contenuto del registro f. Se d=Oil risultoto si loscio nel registrodi lovoro W e se d= | si loscionello stesso registro f.l00 I0t0dfff ffffZ

Ca ratteristi che del l' istru zio n e i ncf .

Sw$swwryw

Page 44: Microrobotica Monty Peruzzo Editore - 09 A - Programmazione

fistruzione DECF

uesta istruzione è

quella opposta alla"incf". Con essa si

può decrementare ilvalore di un registroe portare il risultato

al ronictrn qto<<^ n:l roni<trn di

lavoro W. ll suo flag associato e

nuovamente Z, che andrà a 'l

nrr:ndn il roni<+rn in nrroctinno

arriva a O.

Anche qui, come con l'opera-zione di incremento, quando si

deve decrementare di più di un'u-nità un registro, è meglio farlo con

un'altra istruzione, in questo caso

la sottrazrone.

er$fle4Pg fl**\$AjgSYR{"*trX*ruffi *ffiflrL'uso di questa istruzione è simile

all'istruzione " tncf " , per cur non verrà ripetuta. In ognicaso, parleremo ancora dell'utilizzo di questi parame-

tri in altre istruzioni. Normalmente quando impieghia-mo un registro, faccramo riferimento a questo con un

nome, e non con l'indirizzo che occupa dentro la

memoria di programma. ln realtà e la stessa cosa,

dato che abbiamo dovuto "indicare" al compilatoreche sono uguali. Questo è possibile grazie alle diretti-

ve EQU, che fannorn rri< nn n doro I rn

nome o un'etrchettacon un valore numefl-co. Quindi, dovremo{--^ -++^^-i^^^ -11,,,tdtc d Ltút tztut tu dil u-

so che faremo in<anrritn .li nrro<ti

"nomi", dato che, a

seconda dell'ambien-te in cui li utilizzere-mo, cioè: il parametrodi istruzioni a cui fare-mo riferimento, signi-ficheranno una cosa

o l'altra.

OPERANDO OPERANDOMNEMONICO FONTE DESTINAZIONE

**.-:J***,i***--f*. -- l-r:-*-* :""*-- iOperozione: decremento di un'unitò

del contenuto del registro f.Se d=0 il risultoto si loscionel registro di lovoro W e se d=lsi loscio nello stesso registro f.

Cicli: 1

Codice OP: 00 00.| I dfff ffffFlog: Z

Caratteristiche dell' rstruzione decf.

0I0c

W EOUF EQUCONTATORE EQU

decf

decf

decf

decf

CONTATORE,W

CONTATORE.F

tCoNTATORE

WF

; Decremenlo del registro contotore portondo

; il risultoto ol registro di lovoro W; Decremenio del regisiro contotore portondo

; il risultoto ollo stesso regisiro F

; Coso erroto, doto che CONTATORE non

; corrisponde con 0 o con un l, che è il

; poromeho che serve oll'istruzione decf

; Decremento del registro che occupo lo; posizione 0 dello memorio dei doti (non W)

; portondo il risultoto ollo stesso registro 0

Differenti significati di etichetta a seconda del luogo dove si utilizzano.

ffie*S*www*

Page 45: Microrobotica Monty Peruzzo Editore - 09 A - Programmazione

Appli cazione pratica: si m ulazionedel primo programma

opo aver vrsto In cosa con-siste il simulatore integra-to N/PLAB, è arrivato il

momento di simulare il

primo programma che

abbiamo fatto e che è stato compila-to con MPASN,4. Ora diamo un'oc-rhir+r : ^llò.+^ cazinni nor rirard,aroLllldLd c 9uc)ttr )EZlvril vsr rrLvruors

l'enunciato del programma, i passi egli aspetti di cui tenere conto. Fattoquesto saremo pronti per cominciarela simulazione.

fl&$axfleffi tr x$_ $3$c*sKTT*1 o Una volta dentro a MPLAB, la prima-^..

^a {ar^ ^ î^rìr^ il nrnnottn rhoL\J)d Ud ldlC C Opl ìlE il lJrvyL LLv !r rL

abbiamo realizzafo, primo.asm, cosa

che si fa mediante il menu di progetto( Project>Open Prolect).

Finestre utili per la simulazione.

2 . ln seguito, se non I'ha fattol'apertura del progetto, apriremo i

file o nodi associati al progetto tra-

mite il menù dei file (File>Open).

rxruffi$Y$q$; #Y3*-x pgKffiè,$ssYe $xMe$L&xx*ruKPpr onni nroncfto dovfemO SCe-

gliere quali finestre sono utili perlerri traÀara nrrolln rho-,,- il program-ma sta facendo e quali rappresen-

tano solo una distrazione, non for-nendo informazioni essenziali.

Alcune opzioni possono dipendered:llo nroforonTa nor<^^îli ^ carìuoils pr srqrsr r4E psrJul ldll, c )oldproprio l'utilizzatore che determi-nera ron l'cs,nerienza iì suo mododi lavorc.3 . Per prima cosa dovremo sce-

gliere come modo di sviluppo

Sw$&wwss'**

Limitazioni di MPLAB-SIM per tl PlCl 6FB4

Page 46: Microrobotica Monty Peruzzo Editore - 09 A - Programmazione

5i deve fare un Reset ogni volta che si desidera iniziare una srmulazione

gramma. Potrebbe interes-sarci solamente il risultatofinale di un registro oppu-re vedere lo sviluppo di unpezzo del programma su

cui abbiamo dei dubbi sul

funzionamento, o vedere^a..^ +' '++î ^ ^ar+^pd))u d pd)>u LULLd u pdr Lc

dpll'pse r^r rzione dcl oro-I

grarnma. Vedremo alcunedi nrrpsfp onzioni rnn il

nostro prmo esempro.

5 o Prima di eseguire il

programma faremo un

Reset del sistema con l'op-zione Debug>Run>Reset.n^^i ,,^l+- -^^ +^.-i-\J9ilr VUrLd (-ile rdL(rdmo

una simulazione e voglia-mo reinizializzare il siste-

ma, dovremo eff ettuarequesto Reset.

6 . Iniziamo con la prima

simulazione. Selezioniamola simulazione, opzione inclusa dentro a

Options>Development N,4ode. All'interno della finestra

che ci appare selezionando Details, potremo vedere lelimitazioni che ha MPLAB-SIM per il PIC che vogliamo

Animate all'interno del menu Debug>Run. Come si

puo vedere, questa opzione non è di grande utilita,almeno in questo esempio, dato che le nostre tre istru-zinni <i oconrrn nn rrnid:monto a nni il ar rr(nro nr^<o-

..,,,Í. . ,.ì-'

':l.r::......1|.

' ..i::::i

.:....::..

r::*i:iil:-

:'.:a;

.,::1:;:

: , ..:::ara:.

: : t:'::lj,

,).::'.,,,1.::a::9

.:..,aaatÉ

: ,:,:a,tij

-.ú

-v

simulare, nel nostro caso ìl

PIC 16F84.

4 . Dopo aver scelto il modo,

sono già disponibili diversefino<tra fr: nrre<to <ronlioro-,,q YSLJLL JLLY"T'r

mn di lasriare anprte soloquella del programma, quellariai ronictri nonor:li o nrar;

dei registri specifici. Ora dob-biamo disporre le finestre sullocrhprmn So l,a disnnsizione si

effettua tram ite Wi ndows>Ti le

Horizontal dobbiamo ottene-re una serie di finestre dovenoler vprifirarp i dati fonda-mentali.

#PXg#8dg #gn-Léq%xp.$#Lexg*ru9Le opzioni della simulazione

scelta dipendono da cosa ci

interessa ottenere dal pro-

ffiwf:*wwww

Terminato il nostro programma, si prosegue eseguendo posizioni non valide

Page 47: Microrobotica Monty Peruzzo Editore - 09 A - Programmazione

gue per il resto della

memoria di programma,

che non conttene valort

validi. Nella figura prece-

dente sono visibili le fine-stre rhe s nossono vedere

con questa simulazione.

7 o Utilizzare Debug>Run>Halt

npr fermare la simrrlazio-

ne. Ora possiamo verifica-

re che il valore dei registri

corrisponda con l'enuncia-to del programma: il regi-

stro OC contiene il dato 03

e i registri 0D e 0E conten-,^,,.t^"^,,^,,-t^9Ullu ull vdrurc uvudlc.

\/prifir:rp nr reqfe irrforma-

zioni spostandosi all'irter-no delle varie finestre.

$ o Ripetiamo la stessa

simulazione, prima pero

cambiamo il valore del-^^:-+.^ nn -^^ -,1 ^,regrslro u, con, ao esem-

Modifica del valore di un registro

pio,07. Così, eseguendo il programma, noteremomeglio che i registri 0D e 0E prendono lo stesso valore.

ll cambio del valore di un reqistro, si fa tramite la fine-

stra Window>Modify. Dovremo scrivere I'indtrizzo(Address)e il dato (Data)che si desiderano, e cliccare tl

pulsante di scrittura (Write) per far sì che la variazione

abbia effetto.9.ll seguente tipo di

simulazione lo troviamo ìn

Debug>Run>Run. Per no-

tare l'eff etto dobbiamotornare a mettere OO nei

registri 0C e 0E, seguendo

i passi del punto preceden-

te di modifica dei registri,poi eseguiremo il program-ma (Debug>Run>Run) e lofermeremo (Debug>Run>

Halt). Ci appariranno i regi-

stri secondo quanto predi-

sposto dal programma. La

differenza con il tipo di

sim u Iazione precedente,

Animate, sta nel fatto che

noi non vediamo come si

modif icano i registri,anche se internamente il

0rocesso e lo stesso. e il

PC, eseguito il nostro codi-Scelta del modo di simulazione passo a passo

ffiw#srurwww

Page 48: Microrobotica Monty Peruzzo Editore - 09 A - Programmazione

::,:.:4,

:',,1,

,i*.:,)1.;,:rì:::tl:

ce continua con gìi indirizzi

successivi della memoria dì

programma.

10 o In ultimo eseguiamo il

programma istruzione per

istruzione. Questo modo viene

anche detto tracciare, dall'in-glese "to trace". lnizializ-Tcrpmo i renistri rome nel casonrorpdpntp oltro: ros,ettare il

sistema. Andiamo all'opzioneDebug>Run>Step. Notiamoche il tasto funzione è F7.

11 . Ogni volta che premiamo

F7 verrà eseguita una sola

tstruzrone e potremo o5servareil ri:lnra nroqn d:i rani<tri .li

volta in volta. Le variazioni

all'interno dei registri sono

segnaìate dal coìore rosso, cosl

come l'istruzione che sara ese-

guita in seguito. La figura

' 't'':

mostra il processo dopo l'esecuzione della seconda

istruzione; a DATOl è gia stato spostato il valore 03,

il PC (pcl) punta ancora la seconda posizione della

meùoria delle istruzioni, e appare evidenziata la terza

istruzione, che sara la prossima ad essere eseguita.

12 . Se in un determinato momento ci interessa vedere

solo quello che succede passo a passo in una parte del pro-

gramma, e non nel programma completo, si puo modifi-r,are il valorp dpl PC ner farlo

iniziare dal punto che ci inte-

ressa. Questo si fa con l'op-

zione Debug>Run>Change

Program Counter.l'rso di oilesta onzione

è tipico in programmi moltolunghi, dove la simulazione-^-^l^+-comprera pdsso d pa55O

risulterebbe molto noiosa.

l'onzione di simr rlazione

passo a passo, generalmen-

te e la piu usata quando si

intzta a programmare, per

collaudare le nuove funzionidelle istruzìoni Introducete

ora in questo stesso pro-

gramma le istruzioni appre-

se sinora, assemblatele e

realizzale la loro simulazio-no riodrota 6|16 15 566hicciI rc/ vLurL LL Lr rL il | vvll ll))l-

mo tempo dominerete il

loro funzionamento.

lnformazioni ottenute con I'esecuzione passo a passo

Moditica del PC per iniziare la stmulaziane da un òltro punla

F es$Fqe* {:* re

Page 49: Microrobotica Monty Peruzzo Editore - 09 A - Programmazione

fistruzione G0T0

iamo arrivati all'istruzione tabù della mag-gior parte dei linguaggi di programmazioneche la possiedono. Molti libri di program-mazione strutturata, hanno naturalmentern r:nitnln rho cnion:: fnndn nro<ta

istruzione, alla f ine del quale si raccomanda di utiliz-zarla il meno possibile. Noi non abbiamo altra scelta

che utilrzzarla, dato che nel PIC è l'unico modo per

fare un salto incondizionato, cioè, andare ad un'altraparte del programma in modo incondizionato, inoltreè la base principale dei salti condizionati, come vedre-

mo piu avanti. Pertanto, vale la pena imparare l'usocorretto di questa istruzione, per non dover poi escla-

mare: "chiaro! quando si usa questa istruzione nessun

programma gira".ll ciclo di esecuzione di questa istruzione, sarebbe

a dire il tempo necessario ad essere eseguita, è | dop-pio di quello normale, questo signifìca che un PIC fun-zionante a 4 Mllz impiega 2 ms al posto di uno.

Questo perché l'architettura segmentata del PIC men-

tre esegue un'istruzione punta alla prossima da ese-nrrira rho q.i sr rnnonp <i: in spnupnTe Po'^ I- ^^+^J-"'' -"'-'--rr .,, ,,:--,,--. -lu ld 9uLU

salta da un'altra parte del programma, rompendo Ia

senlenza ner crri l'istrrzione senrrente non e cono-sciuta, e si impiega un altro ciclo per ottenere la nuova

rstruzrone.

ffiSffi *$ $3K fl#fd L*XSY${X.$Xg#N ffi ffi #K{3

Nella fìgura possiamo osservare due usi dell'istruzionegoto, il primo corretto e il secondo sbagliato. Come si

ouo vedere nel ouadro delle caratterrstiche dell'istru-zione, dopo il mnemonico della medesima si mette un

parametro, che è indicato come letterale, e che nor-malmente è un'etichetta che raporesenta I'indirizzo di

destinazione: dove si desidera andare. La programma-

zione strutturata, dice che se si salta da una subrouti-ne a un'altra, bisogna andare all'inizio di questa e non

a una parte interna della medesima, per non rompere

la struttura del programma rappresentato dall'organr-

golo

inizio-modulo I

metà-modulo I

inizio - modulo I

se*

islruzione Iistruzione 2islruzione 3

islruzione 4islruzione 5goto meto-modulo Iislrvzione 7istruzione 8

goto inizio-modulo I

golo

inizio-modulo I

metù-modulo I

mezzo-modulo i...........................-.-.-.-....-...-,,.. .J

,9ltS

is*ruzione Iistruzione 2islruzione 3

islruzione 4islruzione 5

soro i{:!g.:r-:*!-"-."1--=_iislruzione 7

soto !ni:i-"---n,9-d-U|-"'.!- .. I

soto '-'t":_ta:n..S{qJg. !-.. .. .ì

Utilizzo corretto ed errato dell'istruzione qoto

nr2mm: l- n<ì <a

si considera il

nrimn o<omntn

dove l'etichetta1è all'inizio di

una subroutinenon c e ne5sun

problema; il pro-kt^*- -,À -^ -^

me net seconOopcemnin l'oti--l^^++-'t ^ ^-.+^Lr rcLLd I g porLc

di un'altra sub-routine.

Sep$&ewwrq*

PARAMETRO PARAMETROMNEMONICO I 2

goto IOperozione; solto incondizionoto oll'indirizzo

segnoto come k, che potrebbeessere un'elichetto.

Cicli: 2

Codice OP: l0 I kkk kkkk kkkk

Flogs: nessuno

Caratteristiche dell' istruzione goto

Page 50: Microrobotica Monty Peruzzo Editore - 09 A - Programmazione

fistruzione NOP

ffi d rstruzione nop e una delleffiW nir r qomnliri À.

' '+ili..-"^ ^ffiffi Pru JEr rvilLr uo uLilr41drc, c

ffi nello stesso tempo e quel-

ffi la meno ulilizzala E sem-ffiffilW plice perche non ha para-

metri, e quindi non puo essere impie-gata male, ed anche se fosse ulilizza-ta in modo indebito, l'unico inconve-nipntp r-hc notrphho nrovocare Sareb-

be una perdita di tempo equivalentead un ciclo di istruzione, dato che non

fa niente e non varia nessun f lag. Nel

suo codice OP le due x indicano chein orrella nosizione si oossono ave.e

zeri o uno indistintamente.

fi5fleqF$;

{*ru à.'gsYkr.jr3#Fi f, ru#sLa natura stessa dell'istruzione rendedifficile immaginare un caso in cuisianecessario il suo utilizzo. Alcuni pro-^"-,---+^.; l-,,+ili---granrmdtor ra uuilzzano In sosltlU-

MNEMONICO

Modi diversi di posizronare le rstruztoni nella memcria di programma

ORGgotoORGgoto

0rNrzro4INTER

ORGgoionopnopnopgoto

0tNtzto

INTER

MEMORIA DI PROGRAMMA MEMORIA DI PROGRAMMA

00

0l

02

03

04

05

00

0l

02

03

04

05

zione della direttiva ORG che, come ricordiamo, mandaal compilatore l'indicazione che la posizione de l'istru-zione successiva è all'indirizzo indicato dal suo para-

metro. Come abbiamo gra visto, in questo modo si

ottiene di mettere all'induizzo 0 la prima istruzione delprogramma, cosa necessaria, dato che quando ìnizierà

l'esecuzione dei proqramma, è lì che si deve

nop

PARAMETRO PARAMETRO

t2lrovare la nr,ma istrr rzigng. Abbiamo ancherrn altro indirizzo sneciale nella memoria dej

codici. l'induizzo 04. ln questa posizione, il

nrn.trqqrìrtr \/À À .o(.Are la rouiine di Serviziodall'iniarrr rnt nrr:ndn <o no nrnnlrr.a rrnAr! vrvuuLL urrv,

in mndn rho il srn nÒ<ln nón nnq(a o((oro

occupato da nessun'altra istruzione.Nell'esemnio si mostrano due modi di rea-' 'Y'" -'

lizzare questo, utilizzando l'istruzione nop e

con la direttiva ORG. Anche se il risultatonella memoria dei codici può apparirediverso, l'esecuzione del programma e la

stessa. In alcuni casi, inoltre, si utilizza que-

sta istruzione nei cicli, cone metodo per

costruire delle routine di temporizzazione.

Operozione:

Cicli:

CodiceFlogs:

Ca ratteri sti ch e del I' istruzi on e no p

è un'operozione che non

fo nullo.1I

OP: 00 0000 0xx0 0000nessuno

Sw$$wsww*

Page 51: Microrobotica Monty Peruzzo Editore - 09 A - Programmazione

Programm azione:struttura di un programma

.:,zi$Èi*,, uando si affronta la realizzazione di un pro- :

.:granî"na, sia esso in assembler o in o.ra siasr

gd ahro linguaggro di orogranrmazione, molte.'""."-...À1+ volte non si sa bene da dove iniziare, soprat- :

-!t:::

essere molto ;tile creare una specie d' piantina che ci

faciiitii||avoro,perevitareerroriodomrssioniindeside-rate.

Orro<t: ni:ntin: ", Ottiene faCilmente, datO Che UnYriLJLu Y's' I r,, ,u

programma assembler, e composto da varie parti chìa-

P=tip di procesore

Sistemo di numerozione

volore Elichette

,,

,.

È

c

!l

i: ilsI:: RADIX

i ciclo

r0uflne-rnîera

,

L

ramente differenziate. La tabella mostra in modo sche-

mat co queste parti. Spregheremo per prima cosa alcu-

ne convenzioni utilizzate nella realizzazione di questeni.rntinp lrlpll.. rninnna di sinistra scriveremo le eti-chette delle rouiine e delie subroutine, nella colonnaranl-rrla c.r,\tòrò6^ la icl-r rzinni \/oró ó

^rAnrio nar nrn-lEt tLrorg )L j vgrgr ru rc r)Li uzrur il vqrs s PrwPr rs usr P' v

gramma, che devono rispet"tare l'esatta nomenclaturaprevista per il nostro microcontroller. Infine, neìla

colonna di destra, scriveremo i commenti ed i nomi

che vorremo dare alle varìe sezioni del oroqramma.

Configurozione

Progrommo principole

Rouline interrupt

ORG

goto

ORG

g0f0

ORG

eftheilo-inizio

0

etichetto inizio

4

rouline-inler

istruzioni

Configurozioni

Progrommo principole

Rouline di hotlomenfo dell'intenupt

Fine

obbligatorio opzìonale e mullrplo

{ì:.,:r. .:.i:- .:l.r.,I.r; q.

ìì-t, ìì,ì, t..,.,r,.,..u.,,t..i-'

parte di LulLo tl progrdm*2 ,s,-pilatore per il PIC

Direttivo di fine progrommo

Page 52: Microrobotica Monty Peruzzo Editore - 09 A - Programmazione

,:',':'

:raìiìtì

':,ii.ì:ìììì

tl

ficlo infinilo

;INTERRUPI TMRO E RBO ABILIAN

;TMRO RA4;INTEFRONTE Dl SAUTA

;IMR0 SENZA PRESCATER

;Cl ASSlCURl/ritO CHE SIA SPENIO

;10 lMPUl.Sl PER lL I|MER

;ROUTINE Dl INTERRUPT. 5e chiomofq

;ATIIVIAM0 lt LAMPEGGIATORE

;CANCEttllrlvl0 lt ttAG Dl INTERRUPT

;AfTlVlhlv{O IL I.AMPEGGIATORE

;CANCEII|AMOlL FIAG Dl IMERRUPT

1;r{j lÌì:ii:i !,-il(i inizi: rnn dirottivo nor il nrnroc(^ra

in pratica, "ordini" che il comprlatoredovrà tenere conto ai momento di

"^-1,--^"^ llil^ ^.-'-l^-i'-.1^ . ^-.+;"^t(ót)LLdt c | |tc c)dueLil |dtc/ d iJdt Lrtc

dalle so"genti. Queste direttive non si

traducono in istruzioni, dato che non-r indirizzi dellavot il tu ou uLLuPctc

memoria di programma. Nello sche-

ma appajono due dirett;ve molto fre-nrrpnti :nrhp sp np esistono moltealtre: la prima informa del tipo di PlC,

e la seconda determina il codice stan-dard dei dati, cioe se i dati saranno in

esadecimale, decimale o in binario....Cone abbiamo visro in arcuni ese'npi,di sonrritn :rriri:nn ic definizronr delleotirhottp nor riforirei: roni<rri rho

sono valori, con un nome al posto di

un numero.Nella zora di configurazione si in,-

zializzano i renisîri cl-e si utilizzerannonel nrnnramma Orrc5f6 si fa nella

zona chiamata "etichetta inizio" e

quesra configurazrone si realizza con

istruzioni normali. Prima di questo,

considerata anche come conf ig urazio-ne, la direttiva ORG indica al compila-tore, con differenti parametri, dove

deve collocare ie d''ferenti parti delprogramma nella memoria dei codice.Nella posizione 0 e obbligatorio met-tere la nrima istrr rzione che dovra

,l+- ^^"--l-^^+^,,^/^+ic)>ctc c)cguttd, ltu||diltrcILc ut' cLt-

chetta come inizio, start, etc., o ia

-l^i-*-+- a ^,,^-+1Lr ilor rdLo o Liuc)Lc.

Nella posizione 4, come vedremo^i,, -.,-^+i t-i-^^^- ^^rre l,in,zio dellaPru cvol rLr, ur)w9r ro PUrorrtino rhp no<tir: l'intorrr rnt il vpttn-

re di interrupt.ll modo ideale per progettare un

r a ci+r nlnnn f rrtfnP,U9lOllllllO E )lLUClC uvvv LULLv

n, rln+^ monzinnrtn in nrarodanzr -vuqr rLU I I rcr r4rvr rqLv il | PrqLcuqr rzq -

un ciclo da cui si chiamano le routinesche realmente real,zzano il lavoro,

normalmente in modo ciclico.

*l

IED

IAMPEGGIAIORE

BUMPER

|MPUr.Sr

P=lót84

"Regx84.inc"

"Mocros.inc"

PORTB,I.ED

INTCON,INTT

PORTB,IAMPEGGIATORE

INTCON,TOIT

ctcto

STATUS,RPO

b'0000000t'

TRISB

b'10000'

TRISA

b't0t | 0000'

rN1CoN

b'01 I t000'

OPTION.REG

STAIUS,RPO

PORTB,IAMPEGGIAIORE

PORTB,IED

TMRO

tNTCoN,T0tt

IMPUISI

INTCON,INTT

il5t

INCTUDE

INCI.UDE

I

6

0

rNrzt0

4

INTER

CONTIGU

EQU

EQU

0R0

g0î0

ORG

golo

tNtzto

crcL0

CONIIGU

coll

ovonti

GOTO

bsf

movlw

movw{

movw

movwf

movw

movwf

movlw

movwf

kfbcf

bcf

movlw

movwf

refurn

sl0p

btfsc

g0f0

btfsc

reilie

',::l:

t,,l,l,

INTER

bsf

kfretfie

bsf

kfre#ie

TND

Programma esempta che mostra diver>e parti Lipiche

6+*$*****1.*

Questo è cro che normalmente èotirhott:tn.^mo nr^r-Jramma pflncr-

a

Page 53: Microrobotica Monty Peruzzo Editore - 09 A - Programmazione

LffiffilT- * ::#.':": "' -rórilesg,4;trtrllffi!;J!iriFè1É-H6&d.-r4-!ir-r:ea€3?q+l:?Éi;aISfEn stop ;RAUTINE Ol IilTEBnUZt0HE-Se p

Coúpilirg ESEIiFI0 -ÉSl,l:Connand line: "C:\ARCHIU^1\flPLCB\WASflUIH-EXE lp16îA4 lq C:\AfiCHIU-1\flPLAB\ESEHPIO-ASl"Uarninq[285] C:\CECHIU-1\HPLAB\ESEHPI0"ASil 4 : Found directiue in coluan 1- (LISI)Uarning[285] C:\CECHIU-1\HPLAB\ESEHPI0"ASil 4 : Found directiue in coluan 1- (LISI) lSarning[287] C:\0BCHI{r1\flPLAB\ESEf{PI0.ASl'l 6 : Found label after coluno 1. {LED)ErrBra113l C:\AECÍIU-1\ilPtgB\ESFHPI0-ASx 12 : îilnhnl not nrFuinr<lrr dFfinpd lTllFflìErrBrlll3l C:\AECflIU-1\HPLSB\ESEHPI0-ÉSX 12 : synbal not preuiouslg defined (IílEfl)tarniîg[267] C:\nÉCHIU-1\HPLîB\ESEhPI0,ASr l6 : Fsund 1abe1 after colunn 1- (auaoti]Error[113] C:\nBCHIU-1\ilPLAB\ESEHPI0.AS]l 17 : Sgnbol not preuiouqlg defined (8ucle]Errgrfl22l C:\AfiC$IU 1\HFLÉÉ\ESEHPIo,ASfl 2s : Ilfegal opcsde (stop)ErrorÍ125f C:\neCHIU-1\ilPLAE\ESEHPI0-ASf 22 I I lcgal condition (f0F encountprecl before EHD ol

I4PLAB is unable to find output file "ESEhPl0-HÉX"-

Build failed -

Uir;adl ' l1E :

Modo di awiso degli errori da pane dell'assembler.

pale; anche se e una buona forma di programmazione,

non è l'unica, e comunque, non è obbligatoria.ln seguito troveremo le differenti subroutines, da cui

si rientra con l'istruzione retlw o return, a seconda del

caso, e anche la routine di trattamento dell'interrupt. Si

termina con la direttiva di fine del orooramma END.

trffi #fr ffi eiljli Í4 e ;?i g tr€ g}1$#

Tuttavia, non tutte le parti sono obblìgatorie, per cuipuo succedere che qualcuna non ci sia. Aì limite pos-

siamo iniziare con la direttiva LIST, non definire etichet-te, lavorare con gli induizzi, mettere solo una ORG conparametro 0, che non configuri nulla e non utilizzaresubroutines. Obbligatoriamente dovremo terminarecon la direttiva END.

Comunque questo non e abituale, poiche lo sche-

ma in genere viene utilizzato al completo e molte diqueste parti si ripetono diverse volte. L'organigrammamostra oltre all'ordine delle differenti parti di un pro-gramma, quelle che possono essere saltatg g 6rrrollo rho

oossono essere rioetute.Se SentriamO le {1p6ra rrodiemn rho nr rallg 691{;6lj

indicano la sequenza delle diverse parti. Le f recce a sini-stra indicano la possibilita disaltare il quadro a cui gira-

no intorno, passando alla parte seguente. Le frecce di

destra, che puntano verso l'alto, indicano che la parte

ouò essere rioetuta tutte le volte necessarie. Così vedia-mo che sono obbligatorie alcune direttive, alcune con-

figurazioni, il programma principale e

la direttiva di fine programma. Le uni-che parti che devono essere uniche,sono: il programma principale, la rou-tine di trattamento dell'interrupt e la

fine del programma.

fl:trffiF{# ffffi&?}"il*ll programma compilatore mostrato.Ama a<amnin rnntiano tr rtti nli ola-LVr rrE sjs rrPrv lvr rLrgr rE Lu LLt vil Etc-

menti visti, anche se la sua strutturanon è perfettamente uguale alloschema iniziale - così come abbiamodetto - la soluzione ad un problema

non è unica. Si inizia con tre direttiveuna di queste ripetuta. In seguito ven-gono le definizioni delle due etichet-+^ tr--^^^l^ l- -^^{i^,,"--:^^^ -Al,-;-LE. I OLqr rUU rO LUr il ìVUrO4rUr rC, dUUrd-

mo una parte che non effettua diret-tamente fino a quando non si chiamauna routine per realizzarla (CONFI-

GU), nella quale si configurano 4 registri, e si inizializ--îh^ +r^ .,-"i-t-;li | ^ ^lrole ,,avanti,, e ,,StOn,,

SOnO UnaZOIIV LIC VOlloulll. LE PqrvrL L rLvV

specie di subroutine chiamate macro, che si studieran-no in sezioni successive. ll programma principale consi-ste unicamente in un ciclo infinito da cui si aspetta ad

uscire mediante interrupt.f interrupt inizia con l'etichetta INTER, dove, al con-

trario di cosa puo apparire, si lavora con una sola rou-

tine di trattamento dell'interrupt anche se e divrsa in

vari rami dovuti al fatto che possono esistere diverse

cause che la provocano. La fine del programma è

segnata dalla direttiva END.

Se siete stati canari di idpntilir:ro nnngnS lgllpn:rti :nche se ron oralcuna di esse non abbiamo mail-,.^--+^ -:^+^ ^:: i^ .,-À^ Ài r^ali??ar^ il ,,aqf 66 566_ldVUIdLU, >lete 9ld lll 9ldUU Ul ledllLLdle ll V(rJLrv prv

gramma, che sara sempre piu complesso, man manoche andremo avanti.

{rqJ' .'}i i**! *q#SffiiÀf-:i.l1I programmi sorgente possono essere scritti con qua-

lunque editor di testo a caratteri ASCll.

Guardando nella struttura che segue, vedremo le

divprcp n:rti rhp nÒqcono formarlo.rr PvJJv

Classificheremo ora il suo contenuto in altro modo,rinò rnmo finn nli d:ti rho n^((^nn.^nîonor ,-, e ognunadi queste parti. Così il compiìatore, durante I'esecuzio-ne, verificherà che idati ditutte le linee delfile siano di

uno di questi quattro tipi: etichette, mnemonici, ope-

SwS4*ealus*w*e

Page 54: Microrobotica Monty Peruzzo Editore - 09 A - Programmazione

randì o commenti. Questi dati devo-no assecondare a norme di scrittura e

a norme di posizione relativa che

occupano gli uni rispetto agli altri.l-nma rannl: nonor:lo nor 1r rtli

ouesti la loro scrittura non deve^--^.J^-^ i 4trtr --"^++^.i -,,11- -+^---CLLCUCff I LJ) tót dLLCt| )Uild )LE))O

lrnea.

ilYgfrsil3"Yffi

Una etichetta deve iniziare nella

colonna 1 e puo essere seguita da

due punti (:), spazi, tabulazioni e salti

in linea. Possono contenere fino a 32

caratteri, che possono essere alfanu-merici, e includere un tratto basso e

tl segno di punto interrogativo. Però

il primo carattere non puo essere

movf STATO,W

etichetlol movf STATO,W

EiichetÌo2:movlw 9

movf STATO,W

STATO,W

eticheftoó movf ESTADOW

nrrmorirn no di connn

Come standard si differenziano le maiuscole e leminuscole, di modo che l'etichetta "ciclo" e "ClCLO"

siano differenti, a meno che non si affermi il contrariomediante un comando speciale. Se si utilizzano i duepunti per terminare una dichiarazione di una etichetta,nrro<f i nnn (nnn nrpci rnmp n:rtp doll'ofirhorr,a m:vuLJr, I

come un operatore. Nella figura le etichette definitealla sinistra sono corrette, e quelle a destra sono sba-nli:to | ^ <fo(<n <i nrrn diro dol roctn donli ocr-'r" --''ffiPl

li:$g:ffi##:{-iGli mnemonici delle istruzioni, le direttive del compila-tore e le chiamate alle macro devono inrziare a partire

dalla colonna 2. Se l'istruzione segue una etichettanella medesima linea, deve essere messa tra due punti,

spazi in bianco o tabulati. Si possono scrivere in minu-scolo o maiuscolo indistintamente.

*Fíf{i\ri *9Devono essere separati dai mnemonici da uno o piucn:zi n trhrrlrzinni (o rrn: icl-rr rzinno h: nirrdi rrn

^nó-)pdz I u tóuuloLlvl ll. Jc ul lo l)Ll uzlvl lg I lo Pru ul ul I vPq-

rrndn nrrocii dorinnn a<(aro qol12r:r n: rrn: v rnnl:

.... lltsi.'''lfs

Tr rttn nrrolln rhp ci nnno dnnO rjn nlnt6 p,,irnnl: / \- - r vll9wlo \r/

è trattato come un commento fino alla fine della

eiicheilo I

elichetto2:

_etichetto3?Etichetto 4

Iì1'."-..--..-* ,.*;.-*.. ,,*-.......,*.."*.,.",*'.,.,,,,,,J

Etichette formulate in maniera corretta e scorretta

Etichetto5

?etichettoó

Tetichetto

linea. Se il commento occupa più

di una linea dovremo mettere unpunto e virgola all'inizio di ognu-n: nli a<<o (eamo nncci:mn rrado-Itd ut c))E rLvI tq pu))ratrr(/ vcuc-ra nonli o<omni n ir:fi\rrLVil LJL',ry, i lLoLl/.

Quando il compiiatore incontraprrori di nrresto tinn ci avvisa e

non nonpre il filo che doveva^-^^,,i+^

eticheilol movf

Etichettq2:movlw

STATO,W ;movimenloI ;movimento di un

;volore letterole

STATO,W mnemonrco

etichettoó movf STATOW ;tutfosboglioto

Commenti formulati bene e formulati male

movfU5T

ovonlieticheito I movfEtichetto2:movf

_etichetto3? MovfEticheilo 4

movfU5T

ovontiEtichetto5movf

Mnemonici, direttive e chramate a macro corrette e sbagliate

Operandi formulati in maniera corretta e scorretta

Sw#*:sqr{:svaF