Sie sind auf Seite 1von 17

Niple para PIC 16F84 v3 - Programacin Visual de Microcontroladores

Ejemplo N 3 Modelo PIC utilizado: 16F84 16F6xx / 16F87x

Este proyecto tambin puede ser desarrollado con los PIC: Ttulo Descripcin

Contador de eventos externos por interrupcin. Desarrollar un contador de eventos externos de 0 a 99 visualizando el estado de la cuenta en 2 displays de 7 segmentos mediante un codificado CD4511. El estado de la cuenta de incrementa al presionar un pulsador. La pulsacin se detecta mediante la interrupcin por RB0.

Objetivo Procedimiento

Mostrar la manera de detectar eventos externos mediante la interrupcin por RB0. Iniciar el contador a 0. Configurar la interrupcin por RB0 para detectar cada vez que se presione un pulsador. Luego, el micro de dedica a mostrar el estado actual de la cuenta . Al producirse una inte rrupcin por RB0, se incrementa el estado de la cuenta y se actualiza el valor a mostrar en los displays.

Mdulos utilizados

Configuracin de puerto. Configuracin de interrupciones. Asignacin d e registro, Evaluacin de registro Conversin a BCD y visualizacin en display de 7 segmentos con codificador

Desarrollo del ejemplo


Comience creando un nuevo proyecto.

Una vez generado un nuevo proyecto, comenzamos declarando registros que vamos a utilizar.

Para eso debemos ir al men Declaracin/Regis tros como se muestra en la imagen a la derecha.

Niple 16F84 Ejemplo 3 - Contador de eventos externos por interrupcin .

Pgina 1/17

Niple para PIC 16F84 v3 - Programacin Visual de Microcontroladores


Para declarar un registro haga doble clic sobre uno de los registros de Usuario (de color verde). Estos registros son los que Ud. puede utilizar para guardar los datos que se r quieran en el proyecto. e De clare un registro llamado contador .

A continuacin vamos a configurar el puerto B. Para esto ingrese al rbol de herramien tas como se muestra en la siguiente imagen.

Se presenta la pantalla de configuracin del puerto B. Los pines B1 al B7 los utilizaremos para visualizar los datos en los displays de 7 segmentos. Por esto, configure estos pines como Salida. El pin RB0 lo utilizaremos para detectar cuando se presiona el pulsador por medio de la interrupcin RB0. Por esto, configure el pin RB0 como Entrada.

Niple 16F84 Ejemplo 3 - Contador de eventos externos por interrupcin .

Pgina 2/17

Niple para PIC 16F84 v3 - Programacin Visual de Microcontroladores


El diagrama de flujo debera verse como la siguiente imagen.

A continuacin vamos a inicializar el registro contador en 0. Para esto ingrese al rbol de herramientas como se muestra en la im agen de la derecha. Se presenta la pantalla Asignar un valor a un registro. Asigne el valor literal decimal 0 al registro contador como lo muestra la imagen siguiente.

Hasta ahora el diagrama debe verse como la siguiente imagen.

Niple 16F84 Ejemplo 3 - Contador de eventos externos por interrupcin .

Pgina 3/17

Niple para PIC 16F84 v3 - Programacin Visual de Microcontroladores


El siguiente paso consiste en visualizar el estado de la cuenta en los displays de 7 segmentos. Para esto, es necesario primero convertir el valor del contador a form ato BCD, es decir que debemos descomponer el valor de la cuenta en Unidades y Decenas para luego mostrar cada valor en el display c rrespo no diente. Para mayor informacin sobre visualizacin de datos en displays de 7 segmentos consulte el Anexo1- Visualizacin de datos en displays de 7 segmentos. Para convertir un valor a BCD ingrese al men como se muestra en la imagen de la derecha: Se presenta la pantalla convertir registro a BCD.

Primero seleccione el registro que desea convertir a BCD. En este caso, el registro Contador. Luego debe seleccionar los registros donde guardar el resultado de la conversin. Como an no hemos declarado los registros, presione el botn nuevo correspondiente a las unidades. Se presenta la pantalla de declaracin de registros y declaramos el registro Unidad. Al volver de la pantalla de declaracin de registros, el registro recin declarado ha sido seleccionado en la lista automticame nte. Proceda de la misma manera para el r egistro Decena. Dado que nuestro proyecto slo cuenta hasta 99, el valor de las centenas no es necesario declararlo. El diagrama de flujo debe verse como la imagen de la derecha.

Niple 16F84 Ejemplo 3 - Contador de eventos externos por interrupcin .

Pgina 4/17

Niple para PIC 16F84 v3 - Programacin Visual de Microcontroladores


Para obtener mayor informacin sobre las interrupciones consulte el anexo Interrupciones.

A continuacin vamos a configurar la interrupcin por RB0. Para esto ingrese el rbol de herramientas como se muestra en la imagen de la derecha. Se presenta la pantalla de configuracin de interrupciones.

Seleccione la opcin Interrupcin por RB0 y configure la interrupcin por flanco descendente. De esta manera la interrupcin solo se produce cada vez que el pin RB0 pasa de estado alto a estado bajo. Entonces el pulsador debe estar asegurado mediante una resistencia a 5V y al pulsarlo lo conectamos directamente a masa. As, al presionar el pulsador estamos enviando un nivel bajo al pin RB0, lo cual genera la interrup cin. El diagrama de flujo debera quedar como la siguiente imagen.

Niple 16F84 Ejemplo 3 - Contador de eventos externos por interrupcin .

Pgina 5/17

Niple para PIC 16F84 v3 - Programacin Visual de Microcontroladores


Una vez configurada la interrupcin por RB0, la misma debe ser activada. Para esto ingrese al rbol de herramientas como se muestra en la imagen de la derecha.

Se presenta la pantalla Activar Desactivar Interrupciones. Active la interrupcin por cambio de flanco del pin RB0 y el GIE como se muestra en la siguiente imagen.

Hasta ahora el diagrama de flujo debe verse como la siguiente imagen.

Una vez que ha sido configurada y activada la interrupcin por RB0, procedemos a insertar el entorno de la interrupcin. Dentro del entorno de interrupcin vamos a programar lo queremos que el micro ejecute cada vez que se produzca la interrupcin. Niple 16F84 Ejemplo 3 - Contador de eventos externos por interrupcin . Pgina 6/17

Niple para PIC 16F84 v3 - Programacin Visual de Microcontroladores


Para insertar el entorno de la interrupcin ingrese al rbol de herramientas como se muestra en la im agen de la derecha . Al insertar un entorno de interrupcin se genera un diagrama de flujo nuevo dentro del cual vamos a disear el programa de la interrupcin. Dentro del explorador de proyecto se agrega el entorno de la interrupcin, es decir, el diagrama de flujo correspondiente a la interrupcin.

En el nuevo diagrama de flujo correspondiente a la interrupcin, se insertan 2 bloques de manera automtica. El primero corresponde al Inicio de la interrupcin y el segundo bloque desactiva el GIE (Habilit a dor general de interrupciones).

La metodologa de programacin dentro del entorno de interrupcin es la misma que para el resto del programa, con la diferencia que las interrupciones (al igual que las rutinas), deben tener al menos un bloque de Salida llamado Fin de interrupcin.

En este proyecto vamos a utilizar la interrupcin por RB0 para detectar en momento en que se presiona el pulsador. Entonces, una vez que el microcontrolador se interrumpe lo que debemos hacer es incrementar el estado de la cuenta.

Para esto ingrese al rbol de herramientas como se muestra en la imagen de la d erecha.

Niple 16F84 Ejemplo 3 - Contador de eventos externos por interrupcin .

Pgina 7/17

Niple para PIC 16F84 v3 - Programacin Visual de Microcontroladores


El campo sintaxis presenta la manera de interpretar los datos solicitados. En el campo Sumando 1 s eleccione el registro contador y en el campo Sumando 2 seleccione la opcin un literal, formato decimal, valor 1. Por ltimo, seleccione el registro donde desea guardar el resultado del clculo, en este caso, seleccione la opcin en otro registro, registro Contador.

El diagrama de flujo el cual debera quedar como lo muestra la siguiente im agen.

Dado que el presente proyecto slo cuenta hasta 99, una vez realizado el incremento del registro cont dor, debemos controlar que el valor del mismo a no supere el nmero 99. Esto lo hacemos comparando el registro con el valor literal (constante) 99 y reiniciar la cuenta a 0 cuando el registro sea mayor a 99. Para comparar el valor del registro utilizamos el bloque de comparacin de registro a 8 bits ingresando al rbol de herramien tas como se muestra en la imagen de la derecha.

Niple 16F84 Ejemplo 3 - Contador de eventos externos por interrupcin .

Pgina 8/17

Niple para PIC 16F84 v3 - Programacin Visual de Microcontroladores


Se presenta la pantalla Evaluar un registro. El registro a evaluar es el registro Contador, el operador de comparacin es > y el valor de comparacin es de tipo Literal, Decimal y valor 99. En la siguiente imagen se muestran los datos seleccionados.

Al insertar el bloque, el diagrama de flujo debe verse como la siguiente imagen.

El bloque que acabamos de inse rtar puede interpretase como la formula cin de la siguiente pregunta:

El registro Contador, es mayor que el valor decimal 99?

Y como todo bloque de compar acin, debe tener 2 salidas; una para el SI y otra para el NO.

El primer bloque insertado a continuacin de ste, corresponde a la salida del SI y el segundo a la salida del NO.

Entonces, si el registro contador es mayor que 99, d ebemos reiniciar la cuenta a 0. Esto se realiza asig nando el valor 0 al registro Contador.

Para esto utilizamos el mdulo de Asignar un valor a un Registro del mismo modo que explicamos al inicio del ejemplo.

Niple 16F84 Ejemplo 3 - Contador de eventos externos por interrupcin .

Pgina 9/17

Niple para PIC 16F84 v3 - Programacin Visual de Microcontroladores


El diagrama de flujo debe verse como la siguiente imagen.

El siguiente paso consiste en actualizar los datos a visualizar el dato en los displays de 7 se gmentos. Para esto, vamos a convertir el valor del contador a formato BCD, es decir que debemos descomponer el valor de la cuenta en Unidades y Decenas para luego mostrar cada valor en el display correspon diente. Realice el mismo procedimiento que realiz para la conversin a BCD en el programa principal al comienzo del ejercicio. El diagrama de flujo debe verse como la siguiente imagen.

Niple 16F84 Ejemplo 3 - Contador de eventos externos por interrupcin .

Pgina 10/1 7

Niple para PIC 16F84 v3 - Programacin Visual de Microcontroladores


Ahora vamos a completar la salida del NO correspondiente al bloque de evaluacin de registro. Para esto, genere un vnculo (flecha) entre el bloque desde el bloque de evaluacin de registro hasta el bloque de conversin a BCD. Esto significa que cuando el v alor del registro contador sea menor que 99, se pasa directamente a realizar la conversin a BCD y no reini cia la cuenta.

La imagen de la derecha muestra como debe quedar el diagrama de flujo. Para terminar con el programa de la interrupcin, debemos insertar el retorno de interrupcin. Es decir, el bloque que indica que la interrupcin ha finalizado y el microcontrolador debe retomar la tarea cancela al producirse la interrupcin.

Toda inte rrupcin debe tener al menos un bloque de fin de interrupcin.

Para esto ingrese al rbol de herramientas como lo muestra la siguiente imagen.

El diagrama de flujo completo de la interrupcin de verse como la imagen de la derecha. Niple 16F84 Ejemplo 3 - Contador de eventos externos por interrupcin . Pgina 11/1 7

Niple para PIC 16F84 v3 - Programacin Visual de Microcontroladores


Una vez terminado el programa de la interrupcin. Volvemos al Programa Principal.

Ya hemos configurado el puerto B, inicializado el registro contador y configurado y activado la interrupcin por RB0 . Ahora debemos programar el microcontrolador para que se quede mostrando el estado de la cuenta de manera permanente, ya que el incremento se reali za dentro de la interrupcin.

Para mayor informacin sobre visualizacin de datos en displays de 7 segmentos consulte el Anexo1Visualizacin de datos en displays de 7 segmentos.

Ingrese al rbol de herramientas como se muestra en la imagen de la derecha: Se presenta la pantalla de v isualizacin de displays de 7 segmentos con codificador CD4511.

Primero debe seleccionar el tipo de display a utilizar. El CD4511 es un codificador para displays tipo ctodo comn, por esto seleccionamos este tipo de display.

Luego debe seleccionar la cantidad de dgitos a utilizar, en este caso seleccione 2 dgitos. Al seleccionar la cantidad de dgitos a utilizar, se muestra un mensaje que le indica como seleccionar los valores de mostrar en cada display. El proceso de visualizacin de datos en los displays consiste en enviar el valor de las unidades, habilitar el display correspondiente a las unidades y apagar el display de las decenas, mantener el display de las unidades encendido durante un breve periodo de tiempo (algunos microsegundos), luego se apaga el display correspondiente a las unidades y se enva el dato correspondiente a la decenas, se habilita el display de las decenas y se mantiene encendido durante algunos microsegundos. Niple 16F84 Ejemplo 3 - Contador de eventos externos por interrupcin . Pgina 12/1 7

Niple para PIC 16F84 v3 - Programacin Visual de Microcontroladores


Este proceso debe repetirse muchas veces y se produce a gran velocidad. De esta manera se genera la ilusin ptica de estar visualizando un nico valor representado por los 2 dgitos. El campo repeticiones contiene la cantidad de veces que el proceso de multiplexado se repite. El valor por defecto es de 1000 repeticiones. Si el valor de las repeticiones aumenta, mayor ser el tiempo que el micro permanecer mostrando el dato antes de seguir con la ejecucin del resto del programa. Ingrese el valor 10 en el campo Cantidad de repeticiones.

Luego debe seleccionar el valor a visualizar en cada display. Esto se realiza haciendo un doble clic sobre cada imagen de display. Se presenta la pantalla Mostrar un valor en un display. Seleccione el registro Unidad. Recordemos que este registro contiene el valor de las unidades del estado actual de la cuenta calculado mediante el bloque de conversin a BCD. Proceda del mismo modo para el registro de las decenas.

Una vez seleccionados los datos a visualizar en cada display, se debe seleccionar el pin por el cual desea habilitar e inhabilitar cada display para realizar el multiplexado.

Niple 16F84 Ejemplo 3 - Contador de eventos externos por interrupcin .

Pgina 13/1 7

Niple para PIC 16F84 v3 - Programacin Visual de Microcontroladores


Esto se realiza seleccionando el Pin correspondiente en cada una de las listas desplegables que se presentan debajo de cada uno de los displays. Observe que Niple solo presenta en las listas los pines que estn configurados como Salida. De esta mane ra se evitan los errores por seleccionar pines configurados como Entrada o no configurados. Seleccione los

pines B3 y B2 para las unidades y las decenas vamente. Por ltimo, debe seleccionar los pines correspondiente al bus de datos por el cual se enva el dato a visualizar al codificador respecti-

CD4511.

Para este ejemplo seleccione los pines B4 al B7 c omo lo muestra la siguiente imagen.

Niple 16F84 Ejemplo 3 - Contador de eventos externos por interrupcin .

Pgina 14/1 7

Niple para PIC 16F84 v3 - Programacin Visual de Microcontroladores


Por ltimo puede consultar e imprimir el esquema de conexin de la configuracin que ha seleccionado.

El diagrama de flujo el cual debe verse como lo muestra la siguiente imagen.

Niple 16F84 Ejemplo 3 - Contador de eventos externos por interrupcin .

Pgina 15/1 7

Niple para PIC 16F84 v3 - Programacin Visual de Microcontroladores


Para terminar y dado que el micro se quedar mostrando los datos de manera permanente, insertamos un bloque NOP para poder cerrar el ciclo con el bloque de visualizacin de datos en display de 7 segmentos. Ingrese al rbol de herramientas a como se muestra en la siguiente imagen.

Inserte un bloque NOP y cierre el ciclo con el bloque de visualizacin de datos en displays de 7 segmentos mediante un vnculo (flecha). El diagrama de flujo completo del programa principal debe verse como se muestra en la siguiente imagen.

Niple 16F84 Ejemplo 3 - Contador de eventos externos por interrupcin .

Pgina 16/1 7

Niple para PIC 16F84 v3 - Programacin Visual de Microcontroladores


La estructura general y el modo de funcionamiento del proyecto es el siguiente.

Esquema electrnico

Niple 16F84 Ejemplo 3 - Contador de eventos externos por interrupcin .

Pgina 17/1 7

Das könnte Ihnen auch gefallen