Prácticas con Microcontrolador


ir a contenido

El contador de programa

µControladores PIC > Arquitectura

El PC proporciona la dirección de la memoria de programa y su longitud puede oscilar entre 9 y 11 bits, según la capacidad de la misma. En la siguiente figura se muestra la longitud que adopta el PC para los diversos modelos de PIC16C5X.

Los 8 bits de menos peso del PC (A07-A00) están implementados físicamente en un registro denominado PCL, que se ubica en la dirección 02 de la memoria de datos.

Longitud que adopta el PC para los diversos modelos de PIC de la gama baja.


El comportamiento del PC para las diversas instrucciones del repertorio es el siguiente:
1°. Para todas las instrucciones que no entrañen saltos en el programa, el PC se autoincrementa para apuntar la siguiente instrucción a la que se está ejecutando.

2º. Las instrucciones de salto GOTO cargan en el PC directamente los 9 bits de menos peso desde el código OP de la propia instrucción. Cuando el área de programa es superior a las 512 posiciones, los 2 bits de más peso del PC (Al0 y A9) se cargan con el valor de los bits PA1 y PA0 del Registro de Estado.

3º. Las instrucciones CALL contienen en su código OP el valor de los 8 bits de menos peso del PC. El bit A8 toma en este caso el valor 0 lo que obliga a restringir la ubicación de las rutinas a las 256 primeras posiciones de cada página. Cuando son necesarios los bits Al0 y A9, se cargan con los bits PA1 y PA0 del Registro de Estado.

Las instrucciones CALL, antes de su ejecución, guardan en la Pila el valor del PC inicial incrementado una unidad. Dicho valor se restituye al PC cuando se ejecuta la instrucción de retorno cuyo mnemónico es RETLW.

4º. En las instrucciones de "salto relativo", la ALU suma al PC inicial (A7-A0), el valor del salto que se obtiene de los 8 bits de menos peso del código OP. El resultado de la operación se carga en la parte baja del PC (AT-A0). El bit A8 toma el valor 0 y los bits Al0 y A9 se cargan con el valor de PA1 y PA0, respectivamente.

Cuando el PC apunta la última posición de una página y se autoincrementa pasa a direccionar a la siguiente instrucción que estará situada en la primera posición de la página siguiente. Cuando se produce un cambio de página, se deben actualizar los bits PA1 y PA0 del Registro de Estado porque, en caso contrario, cuando se ejecute una instrucción de salto, éste seguirá controlando la página en la que se halla esta instrucción de salto.

Cuando se genera un reset, los bits PA1 y PA0 del Registro de Estado toman el valor 0. El PC queda apuntando la última posición de la última página que exista en la EPROM. Si en dicha posición se coloca una instrucción de GOTO, se pasa a direccionar una posición de la página 0. En la figura que representamos a continuación se presenta un área de programa de cuatro páginas, habiéndose colocado en la última posición de la página 3 una instrucción de GOTO 0. Si se produce un RESET, dado que PA1 = PA0 = 0, el GOTO lleva el flujo del programa a la posición 0 de la página 0.

En el caso de llevarse a cabo un reset en un microcontrolador con 512 posiciones de programa, la primera instrucción que se ejecuta es la que ocupa la dirección 1FFh en el PIC16C54/55. Si tiene 1 k posiciones, como sucede al PIC16C56, la primera instrucción que se ejecuta tras un reset es la que ocupa la dirección 3FFh y, si tiene 2 k (PIC16C57/58), ocupa la dirección 7FFh.



Prácticas con Microcontrolador PIC 16F84 | miguel.tecno@gmail.com

Regresar a contenido | Regresar al menu principal