«

»

Instructions PIC16 (Enhanced Mid-Range)

 

MOVLB k Move literal to BSR 00 0000 001k kkkk
Description : Affectation des 5 bits du registre Bank Select Register ; k -> BSR
Équivalent avec les instructions PIC16 / Mid-Range : Pas directement applicable compte tenu de ce nouveau registre BSR qui remplace les bits RPx du registre STATUS.
Notes :
– Le codage [00 0000 001k kkkk] occupe la place laissée libre de l’instruction CLRW de la famille Mid-Range [00 0000 0xxx xxxx] avec xxx xxxx = 01k kkkk.
– Gain en terme d’optimisation de code et opération atomique.
MOVLP k Move literal to PCLATH 11 0000 1kkk kkkk
Description : Affectation des 7 bits du registre PCLATH ; k -> PCLATH
Équivalent avec les instructions PIC16 / Mid-Range :
.            movlw   VALUE      ; VALUE dans la plage [0x00..0x1F]
.            movf    PCLATH
Notes :
– Le codage [11 0000 1kkk kkkk] occupe la place laissée libre de l’instruction MOVLW de la famille Mid-Range [11 00xx kkkk kkkk] avec xx = 00.
– Permet de gagner un cycle à chaque affectation et opération atomique.
BRA k Relative Branch 11 001k kkkk kkkk
Description : Saut relatif signé (-256 à +255) ; (PC) + k -> PC
Équivalent avec les instructions PIC16 / Mid-Range : Non applicable.
Notes :
– Le codage [11 001k kkkk kkkk] occupe la place laissée libre de l’instruction MOVLW de la famille Mid-Range [11 00xx kkkk kkkk] avec xx = 1k.
– Permet d’écrire des parties de programmes translatables au niveau binaire dans la limite de 512 instructions.
BRW Relative Branch with W
00 0000 0000 1011
Description : Saut relatif non signé (0 à +255) ; (PC) + (W) -> PC
Équivalent avec les instructions PIC16 / Mid-Range :
.           addwf   PCL        ; Attention au changement de page
Notes :
– Le codage [00 0000 0000 1011] occupe la place laissée libre de l’instruction CLRW de la famille Mid-Range [00 0000 0xxx xxxx] avec xxx xxxx = 000 1011.
– Évite de manipuler le registre PCL et permet d’implémenter facilement le concept switch / case du Langage C.
CALLW Call Subroutine with W 00 0000 0000 1010
Description : Appel à une sous-routine dont les 8 derniers bits de l’adresse sont (W)
Équivalent avec les instructions PIC16 / Mid-Range : Pas directement applicable mais une séquence comme celle-ci est possible :
.             movlw   0x02         ; Exécution de ‘treatment_2′
.             call    treatments
.             …
treatments

.             addwf   PCL          ; Saut au traitement fonction de W
.             goto    treatment_0  ; W = 0
.             goto    treatment_1  ; W = 1
.             goto    treatment_2  ; W = 2
.             …
Notes :
– Le codage [00 0000 0000 1010] occupe la place laissée libre de l’instruction CLRW de la famille Mid-Range [00 0000 0xxx xxxx] avec xxx xxxx = 000 1010.
– Évite de manipuler le registre PCL et permet d’implémenter facilement le concept switch / case du Langage C.
OPTION Load OPTION_REG register with W 00 0000 0110 0010
Description : Affectation du registre OPTION avec (W) ; (W) -> OPTION
Équivalent avec les instructions PIC16 / Mid-Range (exemple tiré du Projet Programmateur PIC24) :
.     banksel OPTION_REG   ; Accès au registre OPTION
.     movlw   B’11000001′  ; PORTB Pull-up Disable + RB0<bit 6>
.     movwf   OPTION_REG   ; Int falling:0 rising:1 + TMR0 Rate = 1:4
Notes :
– Le codage [00 0000 0110 0010] occupe la place laissée libre de l’instruction CLRW de la famille Mid-Range [00 0000 0xxx xxxx] avec xxx xxxx = 110 0010.
– Pour maintenir la compatibilité ascendante, il est conseillé de ne pas utiliser cette instruction.