Le compteur de programme (PC)
L'adressage relatif
1- Le compteur de programme (PC)
Le PC contient l'adresse de la prochaine instruction que doit exécuter le programme.
Le programme est stocké dans la mémoire de programme (de type Flash, reprogrammable jusqu'à 10000 fois) aux
adresses 0x0000 à 0x3FF (soit 1024 adresses).
Le codage d'une instruction nécessite un seul emplacement mémoire : on peut donc stocker un programme de 1024 instructions au maximum (pour le PIC 16F84A).
Le PC est constitué des deux registres spéciaux :
Le registre spécial PCL est situé à l'adresse 0x02 (banque 0) de la mémoire des données (Data RAM).
Ce registre est également accessible en banque 1 (à l'adresse 0x82).
Le registre spécial PCLATH est situé à l'adresse 0x0A (banque 0) de la mémoire des données.
Ce registre est également accessible en banque 1 (à l'adresse 0x8A).
Le PC contient une adresse codée sur 13 bits :
Par exemple :
(PCL) = B'10110011'
(PCLATH) =B'---00010' (les bits 5 à 7 ne sont pas utilisés par le PIC 16F84A)
(PC) = B'0001010110011' (adresse 0x2B3 en numération hexadécimale).
La prochaine instruction que va exécuter le PIC est donc située à l'adresse 0x2B3 de la mémoire de programme.
Vous pouvez manipuler le contenu des registres PCL et PCLATH.
Par exemple, les instructions :
movlw 0x02 ; W = 0x02
movwf PCLATH ; (PCLATH) = 0x02
movlw 0xB3 ; W = 0xB3
movwf PCL ; (PCL) = 0xB3
font sauter le programme à l'adresse 0x2B3 (après l'exécution de l'instruction movwf PCL).
On a ainsi fait un GOTO "programmé" (goto 0x2B3)
2- L'adressage relatif
L'instruction addwf PCL , f permet de faire ce que l'on appelle un adressage relatif.
Cette technique est largement utilisée pour la gestion des tableaux de données.
(C) Fabrice Sincère