Tutorials - PIC18

 

Passare da PIC16 a PIC18

 


Gli pseudo-opcodes di MPASM

MPASM , vera comodità per il programmatore, accetta numerosi pseudo opcodes quando si sta scrivendo un listato per i PIC a 12/14 bits.
Il problema è che questi pseudo opcodes non vanno più bene quando si passa agli enhanced, anche perchè molti dei loro nomi sono gli stessi di quelli di istruzioni del set e per gli altri l' Assembler dichiara un errore.

Occorre quindi rimuoverli e sostituirli con le equivalenti istruzioni enhanced. La tabella seguente da una idea della situazione.

 

12-Bit/14-Bit MPASM PSEUDO OPCODES

16-BIT+ OPCODES

Pseudo opcode Descrizione Operazione Eseguita Status

Opcode sostitutivo

Status Note

ADDCF f,d

Add Carry to File

BTFSC STATUS,C
INCF
  f,d 

Z 

    3

ADDDCF f,d

Add Digit Carry to File 

BTFSC STATUS,DC
INCF
  f,d

Z 

    3

B    k

Branch always

GOTO  k 

- 

bra

- 1

BC   k

Branch on Carry (set)

BTFSC STATUS,C
GOTO  k

- 

bc

- 2

BDC  k

Branch on Digit Carry 

BTFSC STATUS,DC
GOTO
  k

- 

 

   

BNC  k

Branch on No Carry (clear)

BTFSS  STATUS,C
GOTO
  k

- 

bnc

  2

BNDC

Branch on No Digit Carry 

BTFSS  STATUS, DC
GOTO  k

- 

btfss STATUS, DC
goto  k

  1, 3

BNZ     k

Branch on No Zero  

BTFSS   STATUS,Z
GOTO   k

- 

bnz

  2

BZ   k

Branch on Zero 

BTFSC  STATUS,Z
GOTO
  k

- 

bz

  2

CLRC 

Clear Carry 

BCF  STATUS.C

- 

bcf STATUS.C   3

CLRDC 

Clear Digit Carry 

BCF  STATUS, DC

- 

bcf STATUS.DC   3

CLRZ  

Clear Zero 

BCF  

3,2   

-   

bcf STATUS.Z   3

LCALL k

Long Call 

BCF/BSF  0x0A,3
BCF/BSF
0x0A,4 
CALL
    k

  

call

   

LGOTO k

Long GOTO 

BCF/BSF 0x0A,3 
BCF/BSF
0x0A,4
GOTO
     k 

 

goto

 

MOVFW

Move File to W  

MOVF f,0

Z 

     

NEGF f,d

Negate File   

COMF   f,1
INCF
  f,d

Z 

negf    

SETC  

Set Carry 

BSF  3,0

- 

bsf STATUS,C    

SETDC  

Set Digit Carry 

BSF  3,1

-  

bsf STATUS,DC    

SETZ  

Set Zero  

BSF  3,2

-  

bsf STATUS,Z    

SKPC  

Skip on Carry 

BTFSS  3,0

- 

btfss STATUS.C   3

SKPDC 

Skip on Digit Carry 

BTFSS  3,1

- 

btfss STATUS.DC   3

SKPNC  

Skip on No Carry 

BTFSC  3,0

-  

btfsc STATUS.C   3

SKPNDC  

Skip on No Digit Carry  

BTFSC  3,1

- 

btfsc STATUS.DC   3

SKPNZ   

Skip on Non Zero 

BTFSC  3,2 

-  

btfsc STATUS.Z   3

SKPZ  

Skip on Zero 

BTFSS  3,2 

-  

btfss STATUS.Z   3

SUBCF f,d 

Subtract Carry from File 

BTFSC  3,0
DECF
   f,d

Z   

    3

SUBDCF f,d    

Subtract Digit Carry from File   

BTFSC  3,1
DECF
   f,d

Z  

    3

TSTF  f  

Test File   

MOVF  f,1

Z  

    3

 


 


Note :

  1. goto indirizza un' area di 2 M,  bra un' area di 1K

  2. i branch bc, bnc, ecc. indirizzano fino a 1K

 

 


Azione

La soluzione ideale è eliminare gli pseudo opcodes usati per i PIC16 e sostituirli con altre istruzioni adeguate o trasformarli in macro.

 


 

 

 

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