El comptador de programa és un registre intern del microcontrolador que indica a quina adreça de la memòria de programa cal anar a buscar la instrucció següent. Fins ara, hem deixat que el microcontrolador inicialitzés automàticament el comptador de programa i l'hem modificat amb les instruccions goto, call, return, etc.
Però en alguns casos és interessant poder modificar el comptador de programa a partir de les instruccions. Una possible aplicació la trobareu a l'exemple PC.
Com es poden adreçar posicions de memòria de programa des de la 0000h fins a la 1FFFh, cal que el comptador de programa tingui 13 bits; per això el comptador està guardat en dos registres, els vuit bits de menys pes a PCL i els cinc de més pes a PCH. Si el nostre programa és curt, PCH valdrà sempre 00000 i no ens n'haurem de preocupar. En cas contrari, caldrà gestionar els dos registres. Fixem-nos que si modifiquessim PC directament resultaria que en modificar un dels dos registres (PCH o PCL) el programa seguiria en una altra adreça i ja no faria el que volem. El microcontrolador té implementat un sistema per evitar aquest problema. Quan volem canviar el comptador de programa haurem de posar primer els cinc bits superiors a un registre anomenat PCLATH, que és un magatzem temporal. Quan nosaltres escrivim a PCL el microcontrolador, a més de l'escriptura que hem demanat, copia PCLATH sobre PCH i així aconsegueix que l'adreça canviï tota sencera d'un sol cop.

Al següent tros de programa, veiem com canviar el comptador de programa:
... movlw high Adre ; Carrega la part alta de l'adreça movwf PCLATH ; Ho posa a la part alta de PC movlw low Adre ; Carrega la part baixa de l'adreça movwf PCL ; Modifica el valor de PCL i també el de PCH ...

Aquesta obra d'Oriol Boix està llicenciada sota una llicència no importada Reconeixement-NoComercial-SenseObraDerivada 3.0.