interrupción por rb0

14
INTERRUPCIÓN POR RB0 grupo 6IM22 Fermín Vázquez Jiménez sexto [email protected]

Upload: roberto-isaac-soto-granados

Post on 05-Sep-2015

27 views

Category:

Documents


3 download

DESCRIPTION

Interrupción externa por la entrada RB0 del PIC16F877a

TRANSCRIPT

interrupcin por RB0

interrupcin por RB0grupo 6IM22Fermn Vzquez [email protected]

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 dememoria de programa

A la posicin 0 se accede tras un RESET y a laposicin 4 tras una interrupcin.

La pila (stack) La pila permite almacenar las direcciones a donde deberetornar el programa cuando se finaliza una llamada a una subrutinao cuando se finaliza la ejecucin de una rutina de interrupcin.

Los microcontroladores de la familia PIC16 tienen una pila de 8niveles 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 deprograma ni de la memoria de datos que tiene el microcontrolador.Es un espacio de memoria totalmente independiente. El puntero depila no se puede leer ni escribir. La pila es gestionada por elhardware.

Memoria RAM de datosLa memoria de datos est distribuida en 4 posibles bancos de 128bytes cada uno. Por tanto, la mxima cantidad de memoria disponibleen los microcontroladores PIC16 es de 512 bytes. No obstante, noestn implementadas todas las posiciones de memoria en todos losbancos.Por ejemplo, un PIC16F876 slo tiene implementadas 368 posiciones dememoria 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 puedenincluir 7 bits en la codificacin: 27=128 bytes

La memoria de datos

STATUSSTATUSSTATUSSTATUSPORTBPORTBdefinicin de interrupcinImplica 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 interrupcinfuentes de interrupcinActivacin de la patita de interrupcin RB0/INTDesbordamiento del TMR0Cambio de estado de una de las cuatro terminales de ms peso del puerto B Finalizacin de la escritura de un byte en la EEPROMDesbordamiento del Timer1Desbordamiento del Timer2Captura o comparacin en el mdulo CCP1Captura o comparacin en el mdulo CCP2Transferencia en la puerta serie SncronaColisin de bus en la puerta serie SncronaFin de la transmisin en el USARTFin de la recepcin en el USARTFin de la conversin en el conversor A/DTransferencia en la puerta paralela esclava (Esta causa de interrupcin no esta disponible en los Pic16F87x de 28 terminales)

DIAGRAMA DE FLUJO DURANTE UNA INTERRUPCINPrograma principalInstruccin 1Instruccin 2Instruccin 3Instruccin 24Instruccin 25Instruccin NFin de programaRutina de Servicio de InterrupcinInstruccin 1Instruccin 2RETFIENota: 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

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.

PROBLEMA 1: interrupcin por RB0 con display

EN TABLILLA????