Programació en mpasm del PIC 16F690

Referència Trucs Perifèrics   Recursos CITCEA
Tutorial Exemples Projectes   Inici

Modificació del comptador de programa

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.

Comptador de programa

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
...

 

 

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