Tmro

Páginas: 6 (1315 palabras) Publicado: 2 de enero de 2013
EJERCICIO 3 – INTERRUPCIONESCONEXIONES DE LA PLACA BASICA DE APENDIZAJE: Para este ejercicio necesitamos la placa básica de aprendizaje, en ella tenemos conectado a las líneas RA0..RA3, 4 diodos led y a las líneas RB5, RB4 y RB0, tres pulsadores de la siguiente manera:

RAx 330 oh.

RBx 10 oh. 100 nF

EJERCICIO 3-0: Este ejercicio va a consistir en un contador cuyo valor se almacena en elpuerto A, por lo que los leds nos indicarán el valor binario en cada momento. Para incrementar este contador utilizaremos una interrupción que se activará cada vez que pulsemos RB0. Las interrupciones en el PIC16F84: La ventaja de la utilización de interrupciones para detectar el estado de un pin, es que el programa no tiene que estar comprobando su estado continuamente; cuando el pin se activase genera una interrupción, que interrumpirá el funcionamiento del programa, ejecutará el segmento de código apropiado para ese evento y volverá a donde estaba como si nada hubiera pasado. Para gestionar las interrupciones, el PIC dispone del registro INTCON (0Bh, 8Bh) que posee la siguiente información: Bit 7 GIE Bit 6 EEIE Bit 5 T0IE Bit 4 INTE Bit 3 RBIE Bit 2 T0IF Bit 1 INTF Bit 0 RBIF

oGIE: Si lo ponemos a 1, activa el permiso para que puedan haber interrupciones. Si este bit esta a 0, aunque habilites otras interrupciones estas no serán permitidas. o EEIE: Si lo ponemos a 1, permite que se genere una interrupción cuando haya termina de efectuar una escritura en la EEPROM. o T0IE: Si lo ponemos a 1, permite una interrupción cada vez que el TMR0 pase de 255 a 0. o INTE: Si loponemos a 1, permite la interrupción en el pin RB0/INT. o RBIE: Si lo ponemos a 1, permite la interrupción por cambio en el estado de los pines RB7:RB4. o T0IF: Si esta a 1, indica que se ha producido una interrupción en el TMR0. o INTF: Si esta a 1, indica que se ha producido una interrupción en la patilla RB0/INT.

o RBIF: Si esta a 1, indica que se ha producido una interrupción porque al menosuno de los bits RB7:RB4 ha cambiado de estado. Para, por ejemplo, gestionar la interrupción RB0/INT, tendremos que hacer lo siguiente: 1. Seleccionaremos el flanco de detección ( si es necesario ) mediante el bit INTEDG del registro OPTION_REG. 2. Activaremos la interrupción RB0/INT poniendo INTE a 1. 3. Activaremos las interrupción poniendo GIE a 1. Cuando en el pin RB0/INT tenemos un cambio deseñal cuyo flanco corresponde con el que hemos seleccionado en INTEDG, el microcontrolador almacenará en la pila la posición actual del PC y saltará a la posición de memoria 0004h, en ella tenemos que poner el segmento de código que utilizaremos para gestionar las interrupciones y que tienen que terminar con la instrucción RETFIE. Si todas las interrupciones saltan a la posición 0004h, ¿Cómopodemos saber de quien es dicha interrupción?. Para esto en el registro INTCON, tenemos una serie de banderines, llamados flags ( mira los bits del registro INTCON ), que se pondrán a 1 para indicarnos de quien es la interrupción, cuando acabemos de gestionar esta interrupción y antes de ejecutar la instrucción RETFIE, tenemos que poner ese banderín a 0, si no, al salir se volverá a ejecutar la mismainterrupción indefinidamente. Para estudiar todo esto, utilizaremos el fichero Ejer3-0.asm cuyo código es el siguiente:
Include p16f84.inc org H'0000 goto Inicio org H'0004 btfsc INTCON,INTF goto IntExt retfie incf PORTA bcf INTCON,INTF retfie Bsf STATUS,RP0 Movlw b'11110000 Movwf TRISA Movlw b'11111111 Movwf TRISB bcf OPTION_REG,NOT_RBPU bcf OPTION_REG,INTEDG Bcf STATUS,RP0 Movlw b'00000000Movwf PORTA bsf INTCON,GIE bsf INTCON,INTE Fin: Goto fin ;Se salta el vector de interrupción ;VECTOR DE INTERRUPCION ;Comprueba si es int. de RB0/INT

IntExt:

Inicio:

;Activa la pagina 1 ;RA0..RA4 como salida. ;Todo el puerto B como entrada. ;Activa Pull-up en puerto B ;Flanco de bajada en interrupcion. ;Activa la pagina 0 ;Leds apagados. ;Transfiere W al puerto RA. ;Activa todas las...
Leer documento completo

Regístrate para leer el documento completo.

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS