Creare macro (o come si chiamano) in mplab

programmazione Microchip pic a 8 e 16 bit

Moderatore: Junior Admin

Rispondi
Avatar utente
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

Messaggio da Bit79 »

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
Avatar utente
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

Messaggio da Bit79 »

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
Rispondi

Torna a “Programmazione processori PIC”