• Adopter une règle de nommage des définitions des registres de travail. En effet, pour éviter d’accéder depuis un mauvais bank à un registre SFR (Special Function Register) ou à un registre propre, il est conseillé de les (re)nommer en les préfixant d’une information indiquant leur appartenance à un bank donné ou accessible à partir de plusieurs banks.
Exemples de préfixes:
SFR_0_ | Registre SFR accessible depuis le Bank0 uniquement |
SFR_0_PORTA |
SFR_1_ | Registre SFR accessible depuis le Bank1 uniquement | SFR_1_TRISA |
SFR_1_3_ | Registre SFR accessible depuis les Bank1 et Bank3 | SFR_1_3_OPTION |
SFR_ | Registre SFR accessible depuis tous les Banks | SFR_INDF |
R_0_ | Registre accessible depuis le Bank0 uniquement |
R_0_STATES |
R_ | Registre accessible depuis tous les Banks | R_SAVE_WREG |
FLG_1_ | Flag accessible depuis le Bank1 uniquement |
FLG_1_ERROR |
Ainsi, leur emploi s’en trouve facilité aussi bien en écriture qu’en lecture du code du programme. De plus, cette méthode évite d’utiliser avant l’accès au registre, la directive « banksel <nom du registre> » qui est très couteuse en code [inutilement] généré comme le montre l’exemple suivant:
bcf 0x3, 0x5 banksel SFR_0_RCSTA ; Accès à RCSTA (BANK0) |
bcf 0x3, 0x6 |
movlw 0x90 movlw 0x90 |
movf 0x18, f movf SFR_0_RCSTA |
bsf 0x3, 0x5 banksel SFR_1_OPTION_REG ; Accès à OPTION_REG (BANK1) |
bcf 0x3, 0x6 ; Le bit RP1 est déjà à 0 ! |
movlw 0xc1 movlw B’11000001′ |
movf 0x1, f movf SFR_1_OPTION_REG |
Pages: 1 2