Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Parametri Macro PIC

Raccolta di codici sorgenti

Moderatore: Foto UtentePaolino

0
voti

[1] Parametri Macro PIC

Messaggioda Foto Utentemros » 15 ott 2013, 10:11

Buongiorno a tutti

volevo sapere se è fattibile e consigliabile inserire nei parametri da passare ad una macro delle variabili.
esempio

cblock 0x20
prova
endc

_macro prova,2

:roll:
Avatar utente
Foto Utentemros
10 1 5
Frequentatore
Frequentatore
 
Messaggi: 131
Iscritto il: 28 giu 2010, 9:23

0
voti

[2] Re: Parametri Macro PIC

Messaggioda Foto Utentec1b8 » 15 ott 2013, 11:44

E' possibile, cosigliabile boh.

I parametri che puoi passare ad una macro sono costanti, variabili (non il contenuto della variabile), indirizzo di programma per goto o call.
Attento che passare una variabile significa passare l'indirizzo della variabile, non il suo contenuto.
Fabio
Avatar utente
Foto Utentec1b8
3.595 3 8 13
G.Master EY
G.Master EY
 
Messaggi: 1770
Iscritto il: 15 gen 2009, 15:23

0
voti

[3] Re: Parametri Macro PIC

Messaggioda Foto Utentemros » 18 ott 2013, 16:02

Ciao Fabio

quindi rifacendomi al mio esempio passando il parametro "prova" sto passando il suo indirizzo di memoria ?

In pratica devo passare dei parametri ad una macro a run-time cosa mi consigli di fare?

rosario
Avatar utente
Foto Utentemros
10 1 5
Frequentatore
Frequentatore
 
Messaggi: 131
Iscritto il: 28 giu 2010, 9:23

0
voti

[4] Re: Parametri Macro PIC

Messaggioda Foto Utentec1b8 » 18 ott 2013, 16:50

Una macro è una "facility" messa a disposizione dall'ambiente di sviluppo per non scrivere lo stesso codice più volte. Quando vai a compilare il programma, le righe di codice che compongono la macro vengono copiate nel punto in cui la macro viene richiamata, come se tu manualmente avessi scritto quelle righe in quel punto.
Non ha quindi senso dire "passo parametri a runtime ad una macro", a runtime la macro non esiste, esiste il codice copiato/compilato della macro.

Parametri/valori non costanti sono comunque utilizzati nel codice sempre allo stesso modo: i dati sono presenti in una locazione di memoria (identificata da una variabile e quindi da un indirizzo di memoria) ed il programma carica nel registro W, o utilizza in altro modo, il contenuto di quell'area di memoria.
La macro farà la stessa cosa, riceve l'indirizzo di memoria della variabile e la utilizza come faresti in qualsiasi altro punto del codice.

Una macro da 10 righe di codice, solo come esempio, utilizzata 3 volte occupa 30 righe di codice e relativa memoria. Forse conviene scrivere una routine e passare parametri alla routine.

Personalmente utilizzo le macro quando queste sono limitate a poche righe di codice (3 max 4) per le quali sarebbe praticamente equivalente, o peggio, in termini di occuprazione di memoria programma o di tempo di esecuzione, scrivere una routine.
Esempio: la macro di sistema (fornita direttamente dal compilatore) BANKSEL equivale ad uno/due BCF/BSF. Scriverli ogni volta è scomodo, scrivere una routine è assurdo....
Fabio
Avatar utente
Foto Utentec1b8
3.595 3 8 13
G.Master EY
G.Master EY
 
Messaggi: 1770
Iscritto il: 15 gen 2009, 15:23


Torna a Firmware e programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 7 ospiti