Creare macro (o come si chiamano) in mplab
Inviato: gio set 27, 2012 13:16
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!
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!