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!
Creare macro (o come si chiamano) in mplab
Moderatore: Junior Admin
- Bit79
- TORNITORE E FRESATORE
- Messaggi: 1534
- Iscritto il: sab set 13, 2008 15:29
- Località: Fornaci di Barga (LU)
Creare macro (o come si chiamano) in mplab
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
Nel mondo esistono 10 tipi di persone:
-chi conosce il codice binario
-chi non conosce il codice binario
- Bit79
- TORNITORE E FRESATORE
- Messaggi: 1534
- Iscritto il: sab set 13, 2008 15:29
- Località: Fornaci di Barga (LU)
Re: Creare macro (o come si chiamano) in mplab
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.
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
Nel mondo esistono 10 tipi di persone:
-chi conosce il codice binario
-chi non conosce il codice binario