Visita mi canal de youtube

viernes, 7 de octubre de 2016

Interrupcion externa por RB0

Los pic16f877a tienen 4 causas de interrupcion o fuentes posibles de interrupcion:

1.- Activacion del pin RB0/INT
2.- Desbordamiento del temporizador TMR0
3.- Cambio de estado en una de las 4 patitas de mas peso (RB7 - RB4) de la puerta B
4.- Finalizacion de la escritura en la EEPROM de datos

Cuando ocurre cualquiera de los 4 sucesos indicados se origina una peticion de interrupcion, que si se acepta y se atiende comienza depositando el valor del PC (contador de programa) actual en la Pila, poniendo el bit GIE = 0 y cargando en el PC el valor 0004 H, que es el vector de interrupcion donde se desvia el flujo de control.

Cada fuente de interrupcion dispone de un señalizador o "flag", que es un bit que se pone automaticamente a 1 cuando se produce. Ademas cada fuente de interrupcion tiene otro bit de permiso, que segun su valor permite o prohibe la realizacion de dicha interrupcion.

EL REGISTRO DE CONTROL DE INTERRUPCION "INTCON"

La mayor parte de los señalizadores y bits de permiso de las fuentes de interrupcion en los pic16f887a estan implementadas sobre los bits de registro "INTCON, que ocupa la direccion 0bH del banco 0, hallandose duplicada en todos los bancos.

GIE: Permiso global de interrupcion
1: Permite la ejecucion de todas las interrupciones
0: Prohibe todas las interrupciones

EEIE: Permiso de interrupcion por fin de escritura de la EEPROM
1: Permite se origine una interrupcion cuando termina la escritura de la EEPROM
0: Prohibe esta interrupcion

T0IE: Permiso de interrupcion de sobrepasamiento del TMR0
1: permite una interrupcion al desbordarse el TMR0
0: Prohibe esta interrupcion

INTE: Permiso de interrupcion por el pulso externo en RB0/INT
1: Interrupcion al activarse RB0/INT
0: Prohibe esta interrupcion

RBIE: Permiso de interrupcion por cambio de estado en RB7 - RB4

1: Permite esta interrupcion
0: Prohibe esta interrupcion

T0IF: Señalizador o bandera de sobrepasamiento del TMR0
1: se pone a 1 cuando ha ocurrido el sobrepasamiento
0: Indica que el TMR0 no se ha desbordado

INTF: Señalizador o bandera de activacion de la patita RB0/INT
1: se pone a 1 cuando ha ocurrido el pulso
0: no ha ocurrido nada

RBIF: Señalizador o bandera de cambio de estado de las patitas RB7-RB4
1: se pone a 1 cuando ha ocurrido
0: no ha ocurrido nada




Lista de componentes: pic16f877a, led, res, sw-spdt-mom.

Es una interrupcion basica, comun a la mayoria de los pic. permite generar una interrupcion tras el cambio de nivel de alto a bajo o de bajo a alto en la entrada rbo.

Resumen:

En esta practica se pulsa rb0 simulando una interrupción externa, y para saber que ha enviado una señal de voltaje, se prende un led.

La directiva utilizada es #int_ext y se debe acompañar de las siguientes

funciones (afectan al bit 6 del registro option_reg).

ext_init_edge(h_to_l)

la interrupcion es por flanco de bajada (activa el flag intf).

ext_init_edge(l_to_h)

la interrupcion es por flanco de subida (activa el flag intf).


                                               Figura. registro option reg.

bit 6: INTEDG: bit de seleccion del flanco de interrupcion de RBO.

1= la interrupcion es por flanco de subida del pin RB0/INT.

0= La interrupcion es por flanco de bajada del pin RB0/INT.



DESCARGAR SIMULACION DE ISIS PROTEUS:

DESCARGA PROGRAMACION DE CCS PIC C COMPILER

PARA DESCARGAR PROGRAMA EL DE ISIS PROTEUS Y CCS PIC C COMPILER 


0 comentarios:

Publicar un comentario