Vous êtes sur la page 1sur 14

INTERRUPCIN POR

RB0
grupo 6IM22
Fermn Vzquez Jimnez
sextosemestreipn@yahoo.com

Memoria de programa
La informacin contenida en esta memoria se graba
previamente mediante un equipo (programador o
grabador).
Almacena todas las instrucciones del programa en
ejecucin, y queda grabada de forma permanente.
En el PIC16F877 esta memoria es no voltil del tipo
ROM Flash y admite unas 1000 grabaciones.
Est organizada en palabras de 14 bits cada una.
Todas las instrucciones ocupan una posicin de
memoria de programa
A la posicin 0 se accede tras un RESET y a la
posicin 4 tras una interrupcin.

La pila (stack)
La pila permite almacenar las direcciones a donde debe
retornar el programa cuando se finaliza una llamada a una subrutina
o cuando se finaliza la ejecucin de una rutina de interrupcin.
Los microcontroladores de la familia PIC16 tienen una pila de 8
niveles x 13 bits, que por tanto permite como mximo 8 llamadas a
subrutinas (CALLs) o ejecuciones de rutinas de interrupcin (salto a
0004h).
El espacio de memoria para la pila no forma parte de la memoria de
programa ni de la memoria de datos que tiene el microcontrolador.
Es un espacio de memoria totalmente independiente. El puntero de
pila no se puede leer ni escribir. La pila es gestionada por el
hardware.

Memoria RAM de datos

La memoria de datos est distribuida en 4 posibles bancos de 128


bytes cada uno. Por tanto, la mxima cantidad de memoria disponible
en los microcontroladores PIC16 es de 512 bytes. No obstante, no
estn implementadas todas las posiciones de memoria en todos los
bancos.
Por ejemplo, un PIC16F876 slo tiene implementadas 368 posiciones de
memoria de datos.
A cada posicin de memoria se le denomina
registro.
La memoria de datos se organiza en bancos
de 128 bytes porque cuando se indica una
direccin de operando fuente, slo se pueden
incluir 7 bits en la codificacin: 27=128 bytes

STATUS

PORTB

La memoria de datos
STATUS

STATUS

PORTB

STATUS

definicin de interrupcin

Implica la suspensin momentnea de las


actividades de un programa para atender
otras acciones de alta prioridad pre
programadas

Para realizar esta accin, previamente


tenemos considerada una subrutina de
interrupcin que se atiende a partir de ORG
h04, el vector de interrupcin

fuentes de interrupcin

Activacin de la patita de interrupcin RB0/INT


Desbordamiento del TMR0
Cambio de estado de una de las cuatro terminales de ms peso del puerto B
Finalizacin de la escritura de un byte en la EEPROM
Desbordamiento del Timer1
Desbordamiento del Timer2
Captura o comparacin en el mdulo CCP1
Captura o comparacin en el mdulo CCP2
Transferencia en la puerta serie Sncrona
Colisin de bus en la puerta serie Sncrona
Fin de la transmisin en el USART
Fin de la recepcin en el USART
Fin de la conversin en el conversor A/D
Transferencia en la puerta paralela esclava (Esta causa de interrupcin no esta
disponible en los Pic16F87x de 28 terminales)

DIAGRAMA DE FLUJO DURANTE UNA


INTERRUPCIN
Programa principal
Instruccin 1

Rutina de Servicio de Interrupcin

Instruccin 2

Instruccin 1

Instruccin 3

Instruccin 2

Instruccin 24

RETFIE

Instruccin 25

Instruccin N
Fin de programa

Nota: Una Rutina de Servicio


de Interrupcin puede ser
igual de extensa e incluso
ms que el mismo programa
principal.

El bit7 GIE, es el encargado de la activacin global que


habilita las interrupciones al ponerse a 1 y al reconocer
una interrupcin se pone a 0 de forma automtica,
evitando se produzca otra interrupcin mientras se
atienda la actual.
El bit GIE se pone de nuevo a 1 al retornar de la atencin a
la interrupcin al encontrar una instruccin RETFIE.
Para el resto de los bits (banderas o flags) no est
previsto ningn tratamiento de puesta a cero, por lo que
es el propio programa de atencin a la interrupcin, el
que le corresponde tratarla y las banderas (flags) que
indican la interrupcin, debe ponerlas a 0 (cero).

registro option_reg

PROBLEMA 1: interrupcin
por RB0 con display
Disee un programa en lenguaje ensamblador para el
PIC 16F877 (o cualquier PIC) que utilice interrupcin
por RB0. El programa hace lo siguiente:

Se la pasa encendiendo los segmentos de un display


de siete segmentos, en la forma siguiente: 0, 1, 0, en
forma continua y visible.
Cuando se provoca una interrupcin, aparecen en el
display el nmero 8 encendiendo y apagando en
forma visible cinco veces.

EN
TABLILLA????

Vous aimerez peut-être aussi