Está en la página 1de 13

UNIVERSIDAD DE FUERZAS ARMADAS ESPE EXTENSIN LATACUNGA

CARRERA DE INGENIERA AUTOMOTRIZ INFORME # 4 DE MICROCONTROLADORES Y PLC


Nivel: Sexto Fecha: 15/octubre/2013 Paralelo: A

Nombre: Jos Luis Chiliquinga, Santiago Morales. A. TEMA. EJERCICIOS CON PULSADORES E INTERRUPCIONES B. OBJETIVOS. Conocer el funcionamiento de los pulsadores junto con el PIC16F628A Aplicar las interrupciones externas en el PIC16F628A C. MATERIALES Y EQUIPOS. Programa MicroCode Studio Programa Isis PIC16F628A Leds Resistencias Cables Fuente 5V

D.

MARCO TEORICO.

ODUCCION:
INTRODUCCIN El manejo de interrupciones es una tcnica de programacin, basada en un mecanismo automtico en el hardware del microcontrolador, que permite dar atencin a algn perifrico interno o externo, nicamente en el momento en que sta se requiera. Una interrupcin es en realidad una llamada a una subrutina, pero iniciada por el hardware del propio perifrico y no por la instruccin "CALL". La interrupcin puede ocurrir en cualquier instante.

Fig. 1.- Interrupciones (http://www.puntoflotante.net/INTERRUPCIONES.htm) Una interrupcin es un evento que hace que el microcontrolador deje de ejecutar la tarea que est realizando para atender dicho acontecimiento y luego regrese y contine la tarea que estaba realizando antes de que se presentara la interrupcin. El pic 16F628 (y el 16F628A) tiene 10 fuentes de interrupcin, si las interrupciones estn habilitadas cada vez que una de estos acontecimientos se presente el pic dejar de ejecutar el programa para ir a atender la interrupcin y al trmino de la misma continuar ejecutando el programa donde lo haba dejado. Las fuentes de interrupcin son:

Interrupcin externa RB0/INT Interrupcin por cambio lgico en el puerto B (pines RB7 a RB4) Interrupcin por desborde del timer 0 (TMR0) Interrupcin por desborde del timer 1 (TMR1) Interrupcin por comparacin exitosa exitosa en TMR2 Interrupcin del comparador Interrupcin del transmisor del USART Interrupcin del receptor del USART Interrupcin del mdulo CCP Interrupcin del EEPROM

Aunque el pic cuenta con 10 fuentes distintas de interrupcin solamente tiene un vector de interrupcin por lo que si se habilitan varias interrupciones al momento de presentarse cualquiera de ellas el programa saltara a la misma rutina de interrupcin y es responsabilidad del programador crear una rutina que identifique la fuente de la interrupcin.

Los registros asociados con las interrupciones son el registro de control de interrupcin INTCON, el registro habilitacin de interrupciones de perifricos PIE1 y el registro de interrupciones de perifricos PIR1. En el registro INTCON se encuentra el bit deshabilitacion global de interrupciones GIE, el bit de habilitacin de interrupcin por perifricos PEIE y los bits de habilitacin de algunas interrupciones como la interrupcin externa del pin RB0 (INTE), la interrupcin por cambio de estado en los pines RB4 a RB7 (RBIE) y la interrupcin por desborde del timer 0 (T0IE), as como las banderas correspondientes a cada interrupcin (INTF, RBIF y T0IF). En el registro PIE1 se encuentran los bits de habilitacin de las dems interrupciones y en el registro PIR1 se encuentran las banderas asociadas con cada interrupcin.

Fig. 2.- Camino que siguen las solicitudes de interrupcin en un microcontrolador (http://books.google.com.ec/books?id=ODenKGOHMRkC&pg=PA217&lpg=PA2 17&dq=Interrupciones+%2B+microcontroladores&source=bl&ots)

En trminos generales, un proceso de interrupcin y su atencin por parte del procesador, tiene la siguiente secuencia de acciones: 1. En el mundo real se produce el evento para el cual queremos que el procesador ejecute un programa especial, este proceso tiene la caracterstica de que no puede esperar mucho tiempo antes de ser atendido o no sabemos en que momento debe ser atendido. 2. El circuito encargado de detectar la ocurrencia del evento se activa, y como consecuencia, activa la entrada de interrupcin del procesador. 3. La unidad de control detecta que se ha producido una interrupcin y levanta una bandera para registrar esta situacin; de esta forma si las condiciones que provocaron el evento desaparecen y el circuito encargado de detectarlo desactiva la entrada de interrupcin del procesador, sta se producir de cualquier modo, porque ha sido registrada. 4. La unidad de ejecucin termina con la instruccin en curso y justo antes de comenzar a ejecutar la siguiente comprueba que se ha registrado una interrupcin 5. Se desencadena un proceso que permite guardar el estado actual del programa en ejecucin y saltar a una direccin especial de memoria de programas, donde est la primera instruccin de la subrutina de atencin a interrupcin. 6. Se ejecuta el cdigo de atencin a interrupcin, esta es la parte consciente de todo el proceso porque es donde se realizan las acciones propias de la atencin a la interrupcin y el programador juega su papel. 7. Cuando en la subrutina de atencin a interrupcin se ejecuta la instruccin de retorno, se desencadena el proceso de restauracin del procesador al estado en que estaba antes de la atencin a la interrupcin. Para habilitar las interrupciones se deben seguir los siguientes pasos: Habilitar el bit correspondiente a cada interrupcin. Limpiar la bandera correspondiente a la interrupcin habilitada para evitar falsas interrupciones. En caso de ser necesario habilitar el bit PEIE del registro INTCON (necesario para todas las interrupciones con excepcin de INTE y RBIE). Habilitar el bit de habilitacin global de interrupciones GIE del registro INTCON.

Fig. 3.- Programa de atencin a la interrupcin (http://books.google.com.ec/books?id=ODenKGOHMRkC&pg=PA217&lp g=PA217&dq=Interrupciones+%2B+microcontroladores&source=bl&ots ) E. PROCEDIMIENTO. PULSADORES Iniciar el programa MicroCode Studio. Ingresar los comandos para realizar el primer programa (3 pulsadores):
CMCON=7 digitaliza puerto A TRISA=255 puerto A entrada TRISB=0 puerto B salida LED VAR PORTB.0 declaracin puertos B PULSADOR1 VAR PORTA.0 declaracin puertos A PULSADOR2 VAR PORTA.1 PULSADOR3 VAR PORTA.2 low Led led en bajo INICIO: inicio IF PULSADOR1=0 and PULSADOR2=0 THEN HIGH LED condicin para encender el led GOSUB ANTIRREBOTE llama antirrebote IF PULSADOR3=0 THEN Low LED condicin para apagar el led GOTO INICIO vuelve a inicio ANTIRREBOTE: subprograma IF PULSADOR1=0 and PULSADOR2=0 THEN GOTO ANTIRREBOTE condicin antirrebote RETURN retorno END fin

Ingresar los comandos para realizar el segundo pulsadores como conmutador):


CMCON=7 digitaliza puerto A TRISA=255 A como salida TRISB=0 B como entrada LED VAR PORTB.0 declaracin de puertos PULSADOR1 VAR PORTA.0 PULSADOR2 VAR PORTA.1 INICIO: inicio IF LED=0 AND (PULSADOR1=0 OR PULSADOR2=0) THEN condicin gosub ANTIRREBOTE llama antirrebote HIGH LED alto led LED=1 ENDIF IF LED=1 AND (PULSADOR1=0 OR PULSADOR2=0) THEN condicion gosub ANTIRREBOTE llama antirrebote LOW LED bajo led

programa

(2

LED=0 ENDIF GOTO INICIO vuelve inicio ANTIRREBOTE: subrutina IF PULSADOR1=0 THEN GOTO ANTIRREBOTE condicion antirrebote IF PULSADOR2=0 THEN GOTO ANTIRREBOTE condicion antirrebote RETURN retorno END fin

Ingresar los comandos pulsadores):

para realizar el tercer

programa

(4

CMCON=7 Digitaliza puerto A TRISA=255 A salida TRISB=0 B entrada LED1 VAR PORTB.0 declaracin de puertos LED2 VAR PORTB.1 LED3 VAR PORTB.2 PULSADOR1 VAR PORTA.0 PULSADOR2 VAR PORTA.1 PULSADOR3 VAR PORTA.2 PULSADOR4 VAR PORTA.3 LED1=0 definicin de leds LED2=0 LED3=0 INICIO: inicio IF LED1=0 AND LED2=0 AND LED3=0 AND PULSADOR1=0 THEN condicion GOSUB ANTIRREBOTE llama antirrebote HIGH LED1 alto led1 LED2=0 bajo led2 LED3=0 bajo led3 ENDIF IF LED1=0 AND LED2=0 AND LED3=0 AND PULSADOR2=0 THEN condicion GOSUB ANTIRREBOTE llama antirrebote LED1=0 bajo led1 HIGH LED2 alto led2 LED3=0 bajo led3 ENDIF IF LED1=0 AND LED2=0 AND LED3=0 AND PULSADOR3=0 THEN condicion GOSUB ANTIRREBOTE llama antirrebote LED1=0 bajo led1 LED2=0 bajo led2 HIGH LED3 alto led3 ENDIF IF PULSADOR4=0 THEN condicin para poner en bajo todos los led LOW LED1 LOW LED2 LOW LED3 ENDIF GOTO INICIO vuelve inicio ANTIRREBOTE: subrutina IF PULSADOR1=0 THEN GOTO ANTIRREBOTE condiciones antirrebote IF PULSADOR2=0 THEN GOTO ANTIRREBOTE IF PULSADOR3=0 THEN GOTO ANTIRREBOTE RETURN retorno END fin

Ingresar los comandos para realizar el cuarto programa (2 pulsadores uno solo prende y uno solo apaga):
CMCON=7 digitaliza A TRISA=255 A salida TRISB=0 B entrada LED VAR PORTB.0 declaracin puertos PULSADOR1 VAR PORTA.0 PULSADOR2 VAR PORTA.1 INICIO: inicio IF PULSADOR1=0 THEN HIGH LED condicion alto led IF PULSADOR2=0 THEN Low LED condicion bajo led GOTO INICIO vuelve inicio END fin

Ingresar los comandos para realizar el quinto programa (1 pulsador prende y apaga):
CMCON=7 digitaliza A TRISA=255 A salida TRISB=0 B entrada LED VAR PORTB.0 declaracin puertos PULSADOR1 VAR PORTA.0 INICIO: inicio IF LED=1 AND PULSADOR1=0 THEN condicin LOW LED led bajo LED=0 ENDIF IF LED=0 AND PULSADOR1=0 THEN condicion HIGH LED led alto LED=1 ENDIF GOTO INICIO vuelve inicio END fin

Generar el archivo *.HEX mediante la compilacin del programa para usarlo en ISIS. Realizar las conexiones necesarias en el programa ISIS para la simulacin del programa. Modificar la frecuencia interna del PIC Importar el archivo *.HEX al PIC y luego simular el programa. Grabar la informacin en el PIC Armar el circuito y ejecutarlo

INTERRUPCIONES Ingresar los comandos para realizar el sexto programa (interrupcin 1):
CMCON=7 digitaliza A LED1 VAR PORTB.2 declaracin puertos LED2 VAR PORTB.3 On INTERRUPT GOTO handlerLuz 'activa el sistema de interrupciones INTCON=%100010000 'habilita la interrupcin por RB0 INICIO: inicio high led1 alto led PAUSE 200 pausa LOW LED1 bajo led PAUSE 200 pausa GOTO INICIO vuelve inicio DISABLE deshabilita la interrupcin HandlerLuz: interrupcin HIGH LED2 alto led PAUSE 2000 pausa LOW LED2 bajo led INTCON=%10010000 'habilita la interrupcin por RB0 RESUME 'retorna a la siguiente instruccin del programa desde donde fue llamada la interrupcin ENABLE 'habilita nuevamente la interrupcin END fin

Ingresar los comandos para realizar el sptimo programa (interrupcin 2):


LED1 VAR PORTB.1 declaracin puertos LED2 VAR PORTB.2 ON INTERRUPT GOTO LUZ 'activa el sistema de interrupciones INTCON=%10010000 'habilita la interrupcin por RB0 INICIO: inicio HIGH LED1 alto led PAUSE 500 pausa LOW LED1 bajo led PAUSE 500 pausa GOTO INICIO vuelve inicio DISABLE deshabilita la interrupcin LUZ: interrupcin HIGH LED2 PAUSE 5000 LOW LED2 INTCON=%10010000 'habilita la interrupcin por RB0 ON INTERRUPT GOTO FIN 'activa el sistema de interrupciones RESUME LUZ2 'retorna a la siguiente instruccin del programa desde donde fue llamada la interrupcin ENABLE 'habilita nuevamente la interrupcin LUZ2: interrupcin HIGH LED2 PAUSE 500 LOW LED2 PAUSE 500 GOTO LUZ2 DISABLE deshabilita la interrupcin FIN: interruption HIGH LED1: HIGH LED2 PAUSE 5000 LOW LED1:LOW LED2 INTCON=%10010000 'habilita la interrupcin por RB0 RESUME INICIO 'retorna a la siguiente instruccin del programa desde donde fue llamada la interrupcin ENABLE 'habilita nuevamente la interrupcin END

Generar el archivo *.HEX mediante la compilacin del programa para usarlo en ISIS. Realizar las conexiones necesarias en el programa ISIS para la simulacin del programa. Modificar la frecuencia interna del PIC Importar el archivo *.HEX al PIC y luego simular el programa. Grabar la informacin en el PIC Armar el circuito y ejecutarlo F. Anlisis de Resultados. PULSADORES Primer programa (3 pulsadores)

Segundo programa (2 pulsadores como conmutador)

Tercer programa (4 pulsadores)

Cuarto programa (2 pulsadores uno solo prende y uno solo apaga)

Quinto programa (1 pulsador prende y apaga):

INTERRUPCIONES Sexto programa (interrupcin 1)

Sptimo programa (interrupcin 2)

G.

Conclusiones. Mediante la prctica realizada se puede observar y evidenciar el funcionamiento y su gran cantidad de aplicaciones que puede tener el PIC16F628A, con la cual se puede cargar un programa previamente revisado y simulado para su correcta ejecucin en el PIC16F628. La simulacin previa en ISIS de los diferentes programas realizados en microcode permite observar el correcto desempeo del programa antes de ser cargado en el PIC16F628A. Para la aplicacin de pulsadores, es necesario que en la programacin se implanten condiciones IF. Para el correcto funcionamiento del programa es necesario implantar una subrutina de antirebote. Las interrupciones nos sirven para truncar algn procedimiento del programa para ejecutar otro.

H.

Recomendaciones. Las conexiones de los puertos deben estar correctamente conectados para que la simulacin se ejecute correctamente. Revisar el lugar exacto para colocar la lnea de comando de los antirebotes. En la subrutina, realizar una sola lnea para cada condicin de antirrebote. Revisar cuidadosamente los comandos para activar y desactivar las interrupciones.

I.

Referencias Bibliogrficas. http://books.google.com.ec/books?id=ODenKGOHMRkC&pg=PA217 &lpg=PA217&dq=Interrupciones+%2B+microcontroladores&source=b l&ots=ukwM2j8c3y&sig=sgBERxA5UH1G5qlKV2mMImKi6iY&hl=es419&sa=X&ei=sjxcUtr-MdCtkAfAIEg&ved=0CEMQ6AEwBA#v=onepage&q=Interrupciones%20%2B% 20microcontroladores&f=false [Visto: 13/octubre/2013] http://www.circuitoselectronicos.org/2011/03/manejo-deinterrupciones-en-los.html [Visto: 13/octubre/2013] http://www.puntoflotante.net/INTERRUPCIONES.htm [Visto: 13/octubre/2013] http://es.wikipedia.org/wiki/Microcontrolador [Visto: 13/octubre/2013]

J.

ANEXO