Ejemplo 03 - 16F84

April 4, 2018 | Author: Jesus Gtrz | Category: Microcontroller, Binary Coded Decimal, Image, Digital Technology, Digital & Social Media


Comments



Description

Niple para PIC 16F84 v3 - Programación Visual de MicrocontroladoresEjemplo Nº 3 Modelo PIC utilizado: 16F84 16F6xx / 16F87x Este proyecto también puede ser desarrollado con los PIC: Título Descripción Contador de eventos externos por interrupción. 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 pulsación se detecta mediante la interrupción por RB0. Objetivo Procedimiento Mostrar la manera de detectar eventos externos mediante la interrupción por RB0. Iniciar el contador a 0. Configurar la interrupción 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 rrupción por RB0, se incrementa el estado de la cuenta y se actualiza el valor a mostrar en los displays. Módulos utilizados Configuración de puerto. Configuración de interrupciones. Asignación d e registro, Evaluación de registro Conversión a BCD y visualización 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ú “Declaración/Regis tros” como se muestra en la imagen a la derecha. Niple 16F84 – Ejemplo 3 - Contador de eventos externos por interrupción . Página 1/17 configure estos pines como “Salida”. Niple 16F84 – Ejemplo 3 . puede utilizar para guardar los datos que se r quieran en el proyecto. Página 2/17 . Por esto. El pin RB0 lo utilizaremos para detectar cuando se presiona el pulsador por medio de la interrupción RB0. e De clare un registro llamado “contador ”. Por esto. Para esto ingrese al árbol de herramien tas como se muestra en la siguiente imagen.Contador de eventos externos por interrupción .Niple para PIC 16F84 v3 . Los pines B1 al B7 los utilizaremos para visualizar los datos en los displays de 7 segmentos.Programación 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. Se presenta la pantalla de configuración del puerto B. A continuación vamos a configurar el puerto B. configure el pin RB0 como “Entrada”. Para esto ingrese al árbol de herramientas como se muestra en la im agen de la derecha. Página 3/17 . A continuación vamos a inicializar el registro “contador” en 0.Contador de eventos externos por interrupción . Hasta ahora el diagrama debe verse como la siguiente imagen. Asigne el valor literal decimal “0” al registro “contador” como lo muestra la imagen siguiente. Niple 16F84 – Ejemplo 3 .Programación Visual de Microcontroladores El diagrama de flujo debería verse como la siguiente imagen.Niple para PIC 16F84 v3 . Se presenta la pantalla “Asignar un valor a un registro”. Programación Visual de Microcontroladores El siguiente paso consiste en visualizar el estado de la cuenta en los displays de 7 segmentos. Se presenta la pantalla de declaración de registros y declaramos el registro “Unidad”. Dado que nuestro proyecto sólo cuenta hasta 99. Página 4/17 .Niple para PIC 16F84 v3 . Proceda de la misma manera para el r egistro “Decena”. 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 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”. Luego debe seleccionar los registros donde guardar el resultado de la conversión. Como aún no hemos declarado los registros. En este caso. es necesario primero convertir el valor del contador a form ato BCD. presione el botón “nuevo” correspondiente a las unidades. Primero seleccione el registro que desea convertir a BCD.Contador de eventos externos por interrupción . Para mayor información sobre visualización de datos en displays de 7 segmentos consulte el Anexo1. el valor de las centenas no es necesario declararlo. el registro recién declarado ha sido seleccionado en la lista automáticame nte. El diagrama de flujo debe verse como la imagen de la derecha.“Visualización de datos en displays de 7 segmentos”. Al volver de la pantalla de declaración de registros. Niple 16F84 – Ejemplo 3 . Para esto. el registro Contador. De esta manera la interrupción solo se produce cada vez que el pin RB0 pasa de estado alto a estado bajo. A continuación vamos a configurar la interrupción por RB0. al presionar el pulsador estamos enviando un nivel bajo al pin RB0. Así. lo cual genera la interrup ción.Programación Visual de Microcontroladores Para obtener mayor información sobre las interrupciones consulte el anexo “Interrupciones”. Niple 16F84 – Ejemplo 3 . Seleccione la opción “Interrupción por RB0” y configure la interrupción por “flanco descendente”.Niple para PIC 16F84 v3 . Página 5/17 . Para esto ingrese el árbol de herramientas como se muestra en la imagen de la derecha.Contador de eventos externos por interrupción . Entonces el pulsador debe estar asegurado mediante una resistencia a 5V y al pulsarlo lo conectamos directamente a masa. El diagrama de flujo debería quedar como la siguiente imagen. Se presenta la pantalla de configuración de interrupciones. Se presenta la pantalla “Activar – Desactivar Interrupciones”. Página 6/17 . Para esto ingrese al árbol de herramientas como se muestra en la imagen de la derecha.Contador de eventos externos por interrupción . Dentro del entorno de interrupción vamos a programar lo queremos que el micro ejecute cada vez que se produzca la interrupción. Active la interrupción por cambio de flanco del pin RB0 y el GIE como se muestra en la siguiente imagen. Niple 16F84 – Ejemplo 3 .Programación Visual de Microcontroladores Una vez configurada la interrupción por RB0. Hasta ahora el diagrama de flujo debe verse como la siguiente imagen.Niple para PIC 16F84 v3 . la misma debe ser activada. Una vez que ha sido configurada y activada la interrupción por RB0. procedemos a insertar el “entorno de la interrupción”. se insertan 2 bloques de manera automática. Dentro del explorador de proyecto se agrega el entorno de la interrupción. deben tener al menos un bloque de “Salida” llamado “Fin de interrupción”. La metodología de programación dentro del entorno de interrupción es la misma que para el resto del programa. una vez que el microcontrolador se interrumpe lo que debemos hacer es incrementar el estado de la cuenta. es decir. Al insertar un entorno de interrupción se genera un diagrama de flujo nuevo dentro del cual vamos a diseñar el programa de la interrupción. Página 7/17 . Entonces. el diagrama de flujo correspondiente a la interrupción. Para esto ingrese al árbol de herramientas como se muestra en la imagen de la d erecha. En este proyecto vamos a utilizar la interrupción por RB0 para detectar en momento en que se presiona el pulsador.Contador de eventos externos por interrupción . En el nuevo diagrama de flujo correspondiente a la interrupción.Niple para PIC 16F84 v3 . El primero corresponde al “Inicio de la interrupción” y el segundo bloque desactiva el GIE (Habilit a dor general de interrupciones).Programación Visual de Microcontroladores Para insertar el entorno de la interrupción ingrese al árbol de herramientas como se muestra en la im agen de la derecha . con la diferencia que las interrupciones (al igual que las rutinas). Niple 16F84 – Ejemplo 3 . Niple para PIC 16F84 v3 . seleccione la opción “en otro registro”. Por último. debemos controlar que el valor del mismo a no supere el número 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. Página 8/17 . valor “1”. En el campo “Sumando 1” s eleccione el registro contador y en el campo “Sumando 2” seleccione la opción “un literal”. seleccione el registro donde desea guardar el resultado del cálculo.Programación Visual de Microcontroladores El campo “sintaxis” presenta la manera de interpretar los datos solicitados. El diagrama de flujo el cual debería quedar como lo muestra la siguiente im agen. Para comparar el valor del registro utilizamos el bloque de “comparación de registro a 8 bits” ingresando al árbol de herramien tas como se muestra en la imagen de la derecha. registro “Contador”. Niple 16F84 – Ejemplo 3 .Contador de eventos externos por interrupción . en este caso. formato decimal. una vez realizado el incremento del registro cont dor. Dado que el presente proyecto sólo cuenta hasta 99. Página 9/17 .Niple para PIC 16F84 v3 . El registro a evaluar es el registro “Contador”.Programación Visual de Microcontroladores Se presenta la pantalla “Evaluar un registro”. Al insertar el bloque. debe tener 2 salidas. Esto se realiza asig nando el valor “0” al registro “Contador”.Contador de eventos externos por interrupción . el diagrama de flujo debe verse como la siguiente imagen. En la siguiente imagen se muestran los datos seleccionados. si el registro contador es mayor que 99. El primer bloque insertado a continuación de éste. d ebemos reiniciar la cuenta a 0. el operador de comparación es “>” y el valor de comparación es de tipo “Literal”. Entonces. “Decimal” y valor “99”. El bloque que acabamos de inse rtar puede interpretase como la formula ción de la siguiente pregunta: ¿El registro “Contador”. una para el “SI” y otra para el “NO”. Niple 16F84 – Ejemplo 3 . corresponde a la salida del “SI” y el segundo a la salida del “NO”. es mayor que el valor decimal 99? Y como todo bloque de compar ación. Para esto utilizamos el módulo de “Asignar un valor a un Registro” del mismo modo que explicamos al inicio del ejemplo. 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. es decir que debemos descomponer el valor de la cuenta en Unidades y Decenas para luego mostrar cada valor en el display correspon diente. Página 10/1 7 .Niple para PIC 16F84 v3 . Realice el mismo procedimiento que realizó para la conversión a BCD en el programa principal al comienzo del ejercicio. Para esto. vamos a convertir el valor del contador a formato BCD.Programación Visual de Microcontroladores El diagrama de flujo debe verse como la siguiente imagen.Contador de eventos externos por interrupción . Niple 16F84 – Ejemplo 3 . el bloque que indica que la interrupción ha finalizado y el microcontrolador debe retomar la tarea cancela al producirse la interrupción.Contador de eventos externos por interrupción .Programación Visual de Microcontroladores Ahora vamos a completar la salida del “NO” correspondiente al bloque de evaluación de registro. Toda inte rrupción debe tener al menos un bloque de “fin de interrupción”. La imagen de la derecha muestra como debe quedar el diagrama de flujo. Para terminar con el programa de la interrupción. se pasa directamente a realizar la conversión a BCD y no reini cia la cuenta. Página 11/1 7 . Para esto ingrese al árbol de herramientas como lo muestra la siguiente imagen. Es decir. Para esto. genere un vínculo (flecha) entre el bloque desde el bloque de evaluación de registro hasta el bloque de conversión a BCD. Esto significa que cuando el v alor del registro contador sea menor que 99. Niple 16F84 – Ejemplo 3 . El diagrama de flujo completo de la interrupción de verse como la imagen de la derecha.Niple para PIC 16F84 v3 . debemos insertar el “retorno de interrupción”. Ya hemos configurado el puerto B. Niple 16F84 – Ejemplo 3 . Para mayor información sobre visualización de datos en displays de 7 segmentos consulte el Anexo1“Visualización de datos en displays de 7 segmentos”. Volvemos al Programa Principal.Programación Visual de Microcontroladores Una vez terminado el programa de la interrupción. por esto seleccionamos este tipo de display. habilitar el display correspondiente a las unidades y apagar el display de las decenas. ya que el incremento se reali za dentro de la interrupción. Primero debe seleccionar el tipo de display a utilizar. Luego debe seleccionar la cantidad de dígitos a utilizar. inicializado el registro contador y configurado y activado la interrupción por RB0 . Ahora debemos programar el microcontrolador para que se “quede mostrando” el estado de la cuenta de manera permanente. El CD4511 es un codificador para displays tipo cátodo común. en este caso seleccione 2 dígitos. El proceso de visualización de datos en los displays consiste en enviar el valor de las unidades.Niple para PIC 16F84 v3 . Al seleccionar la cantidad de dígitos a utilizar. Página 12/1 7 . luego se apaga el display correspondiente a las unidades y se envía el dato correspondiente a la decenas. se muestra un mensaje que le indica como seleccionar los valores de mostrar en cada display. se habilita el display de las decenas y se mantiene encendido durante algunos microsegundos.Contador de eventos externos por interrupción . mantener el display de las unidades encendido durante un breve periodo de tiempo (algunos microsegundos). Ingrese al árbol de herramientas como se muestra en la imagen de la derecha: Se presenta la pantalla de v isualización de displays de 7 segmentos con codificador CD4511. Seleccione el registro “Unidad”. mayor será el tiempo que el micro permanecerá “mostrando” el dato antes de seguir con la ejecución del resto del programa. Niple 16F84 – Ejemplo 3 . De esta manera se genera la ilusión óptica de estar visualizando un único valor representado por los 2 dígitos. Si el valor de las repeticiones aumenta.Niple para PIC 16F84 v3 .Contador de eventos externos por interrupción . Recordemos que este registro contiene el valor de las unidades del estado actual de la cuenta calculado mediante el bloque de conversión a BCD. Página 13/1 7 .Programación Visual de Microcontroladores Este proceso debe repetirse muchas veces y se produce a gran velocidad. 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. Ingrese el valor 10 en el campo “Cantidad de repeticiones”. Esto se realiza haciendo un doble clic sobre cada imagen de display. El campo “repeticiones” contiene la cantidad de veces que el proceso de multiplexado se repite. El valor por defecto es de 1000 repeticiones. Proceda del mismo modo para el registro de las decenas. Se presenta la pantalla “Mostrar un valor en un display”. Luego debe seleccionar el valor a visualizar en cada display. Página 14/1 7 . Por último. Seleccione los pines B3 y B2 para las unidades y las decenas vamente.Contador de eventos externos por interrupción . De esta mane ra se evitan los errores por seleccionar pines configurados como “Entrada” o no configurados. Niple 16F84 – Ejemplo 3 . Para este ejemplo seleccione los pines B4 al B7 c omo lo muestra la siguiente imagen. debe seleccionar los pines correspondiente al bus de datos por el cual se envía el dato a visualizar al codificador respecti- CD4511. Observe que Niple solo presenta en las listas los pines que están configurados como “Salida”.Niple para PIC 16F84 v3 .Programación 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. Página 15/1 7 .Programación Visual de Microcontroladores Por último puede consultar e imprimir el esquema de conexión de la configuración que ha seleccionado. El diagrama de flujo el cual debe verse como lo muestra la siguiente imagen.Niple para PIC 16F84 v3 . Niple 16F84 – Ejemplo 3 .Contador de eventos externos por interrupción . Niple 16F84 – Ejemplo 3 .Contador de eventos externos por interrupción .Programación Visual de Microcontroladores Para terminar y dado que el micro se quedará “mostrando los datos” de manera permanente. Inserte un bloque NOP y cierre el ciclo con el bloque de visualización de datos en displays de 7 segmentos mediante un vínculo (flecha).Niple para PIC 16F84 v3 . insertamos un bloque “NOP” para poder cerrar el ciclo con el bloque de visualización de datos en display de 7 segmentos. Página 16/1 7 . El diagrama de flujo completo del programa principal debe verse como se muestra en la siguiente imagen. Ingrese al árbol de herramientas a como se muestra en la siguiente imagen. Página 17/1 7 .Contador de eventos externos por interrupción .Programación Visual de Microcontroladores La estructura general y el modo de funcionamiento del proyecto es el siguiente. Esquema electrónico Niple 16F84 – Ejemplo 3 .Niple para PIC 16F84 v3 .
Copyright © 2024 DOKUMEN.SITE Inc.