Tutorials - PIC18

 

Passare da PIC16 a PIC18

 


Le MACRO

Il fatto assai comune, i nomi di alcune nuove istruzioni, come BC, PUSH, RCALL, MOVFF possono essere stati utilizzati per macro con funzioni spesso analoghe nei sorgenti mid-range, richiede che, per non avere segnalazioni di errore nel compilatore e per evitare effetti imprevedibili nell' esecuzione del programma.
Dove la macro fa il lavoro svolto da una istruzione del set 18F, ad esempio:

MOVFF   MACRO   src, dst
       movf     src, w
       movwf  dst, w
         ENDM 

ha la stessa funzione dell' istruzione MOVFF e quindi diventa inutile e va eliminata.

Dove la macro fa un lavoro differente dall' istruzione dello stesso nome, occorrerà sostituire i nomi delle macro con altri adeguati.

Ma, sopratutto, sarà indispensabile verificare che le macro siano adeguate al nuovo ambiente, principalmente per quanto riguarda i nomi, i test sui flag, gli switch di banchi e pagine, la lettura di tabelle, i jump e i branch, ecc..

Ad esempio la macro esemplificata MOVFF nei mid-range richiede che src e dst siano nello stesso banco. L' istruzione movff degli 18F sposta qualunque regsitro in qualunque altro registro senza limitazioni, dato che permette indirizzamento su 2M. 

E' quindi possibile che, ad esempio, si siano scritte macro che tengono conto del problema dei banchi ( o delle pagine, come le classiche PAGE_CALL o LONG_CALL) , necessità che negli enhenced non esistono più (per le pagine) o sono gestite diversamente (per i banchi).

Un' altra famiglia di macro da verificare è quella che contiene indirizzi assoluti, come:

;branch if plus-- test bit 7 set
bpl MACRO file,address 
       movfw file
       andlw b'10000000'
       btfsc 3,2
       goto  address
    ENDM

dove  btfsc 3,2  richiama lo STATUS come indirizzo assoluto, che negli 18F è diverso.


Azione

La soluzione ideale è eliminare le definizioni di macro usate per i PIC16 e, se necessario, riscriverne un nuovo set,  adatto ai PIC18F.

 


 

 

 

Copyright © afg. Tutti i diritti riservati.
Aggiornato il 05/06/19.