MECCANICA e DINTORNI

COSTRUIAMO LE NOSTRE CNC DIVERTENDOCI CON L'AIUTO DI TANTI PROFESSIONISTI ESPERTI
Oggi è gio mar 28, 2024 12:56

Tutti gli orari sono UTC +1 ora




Apri un nuovo argomento Rispondi all’argomento  [ 2 messaggi ] 
Autore Messaggio
 Oggetto del messaggio: Creare macro (o come si chiamano) in mplab
MessaggioInviato: gio set 27, 2012 13:16 
Non connesso
TORNITORE E FRESATORE
Avatar utente

Iscritto il: sab set 13, 2008 15:29
Messaggi: 1534
Località: Fornaci di Barga (LU)
Salve a tutti,
in alcuni programmi mi capita di utilizzare blocchi di istruzioni ripetuti molte volte, ma che non merita siano inseriti in una subroutine, poichè cambiano alcune costanti, e passargliele attraverso alcune variabili non sarebbe convieniente.
Faccio un esempio:

MOVLW low x_coord
CALL SD_CMD
MOVLW high x_coord
CALL SD_CMD
MOVLW low y_coord
CALL SD_CMD
MOVLW high y_coord
CALL SD_CMD

dove x_coord e y_coord sono due costanti a 16 bit definite in mplab.
Il blocco mi serve più volte, ovviamente con differenti valori delle costanti. Inserire tutto in una routine, e poi dovergli passare i valori attraverso 4 variabili (a 8 bit) non conviene, poichè è comunque necessario scrivere le solite 8 righe per caricare le costanti, oltre a chiamare la subroutine.

E' possibile istruire il compilatore a scrivere il blocco sopra, richiamandolo nel programma con una pseudo istruzione tipo:

fai_questo_utilizzando: x_coord, y_coord

Poi compilando il programma il complilatore scrive le istruzioni del blocco...
Ovviamente il blocco dovrà essere definito a parte, meglio se nello stesso file asm.

Ciao!

_________________
Non accontentarti mai, scegli gli strumenti giusti, usali bene, non accettare compromessi, pretendi il successo. Poi ricomincia da capo.

Nel mondo esistono 10 tipi di persone:
-chi conosce il codice binario
-chi non conosce il codice binario


Top
 Profilo  
 
 Oggetto del messaggio: Re: Creare macro (o come si chiamano) in mplab
MessaggioInviato: gio set 27, 2012 22:46 
Non connesso
TORNITORE E FRESATORE
Avatar utente

Iscritto il: sab set 13, 2008 15:29
Messaggi: 1534
Località: Fornaci di Barga (LU)
Trovato!
Prima di tutto bisogna definire la macro, e gli eventuali parametri da passarle:

set_coord macro x_coord, y_coord
MOVLW low x_coord
CALL SD_CMD
MOVLW high x_coord
CALL SD_CMD
MOVLW low y_coord
CALL SD_CMD
MOVLW high y_coord
CALL SD_CMD
endm

Poi si può richiamare la macro tutte le volte che si vuole, passandole i parametri necessari:

set_coord 0x1234, 0x5678
set_coord 0x9ABC, 0xDEF0

Nel codice compilato non comparirà la chiamata alla macro (non è una subroutine) ma verrà copiato il codice contenuto nella macro stessa.

_________________
Non accontentarti mai, scegli gli strumenti giusti, usali bene, non accettare compromessi, pretendi il successo. Poi ricomincia da capo.

Nel mondo esistono 10 tipi di persone:
-chi conosce il codice binario
-chi non conosce il codice binario


Top
 Profilo  
 
Visualizza ultimi messaggi:  Ordina per  
Apri un nuovo argomento Rispondi all’argomento  [ 2 messaggi ] 

Tutti gli orari sono UTC +1 ora


Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti


Non puoi aprire nuovi argomenti
Non puoi rispondere negli argomenti
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi inviare allegati

Cerca per:
Vai a:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Traduzione Italiana phpBB.it