Está en la página 1de 133

Niple v5.

6 - Programacin Visual de Microcontroladores

Programacin Visual de Microcontroladores

Versin 5.6

Manual de Usuario

Pgina 1

Niple v5.6 - Programacin Visual de Microcontroladores

Contenido
CONTENIDO .............................................................................................................................................................. 2 INTRODUCCIN A LOS MICROCONTROLADORES ...................................................................................... 5 QUE ES UN MICROCONTROLADOR? ........................................................................................................................... 5 LOS MICROCONTROLADORES PIC ........................................................................................................................... 5 Estructura de un microcontrolador ....................................................................................................................... 6 El procesador o CPU ............................................................................................................................................ 6 Memoria ROM ....................................................................................................................................................... 6 Memoria RAM ....................................................................................................................................................... 7 Registros y Bits ...................................................................................................................................................... 8 Lneas de Entrada/Salida (E/S), (Puertos) .......................................................................................................... 11 Mdulos Temporizadores Internos (TMRs) ......................................................................................................... 11 UTILIZANDO UN MICROCONTROLADOR .................................................................................................................... 13 NIPLE: PROGRAMACIN VISUAL DE MICROCONTROLADORES PIC ........................................................................... 14 INTRODUCCIN A NIPLE .................................................................................................................................... 16 FUNCIONES DISPONIBLES ......................................................................................................................................... 17 HERRAMIENTAS ADICIONALES ................................................................................................................................. 19 METODOLOGA DE PROGRAMACIN CON NIPLE ..................................................................................... 21 CONCEPTOS BSICOS .......................................................................................................................................... 24 LA INTERFAZ DE NIPLE............................................................................................................................................. 24 ENTORNOS ............................................................................................................................................................... 28 Crear un nuevo Entorno ...................................................................................................................................... 29 Seleccionar el Entorno actual de trabajo ............................................................................................................ 29 Borrar un Entorno ............................................................................................................................................... 29 BLOQUES.................................................................................................................................................................. 29 Interpretacin de los Bloques .............................................................................................................................. 29 Seleccin de Bloques o Vnculos ......................................................................................................................... 31 Mover un Bloque ................................................................................................................................................. 31 Estirar un Bloque ................................................................................................................................................ 32 Borrar Bloques .................................................................................................................................................... 32 Editar Bloques ..................................................................................................................................................... 33 Duplicar Bloques ................................................................................................................................................. 34 Habilitar e Inhabilitar Bloques ........................................................................................................................... 34 VNCULOS (FLECHAS) .............................................................................................................................................. 35 Crear un Vnculo ................................................................................................................................................. 36 Cambiar el estilo de un Vnculo .......................................................................................................................... 37 Pgina 2

Niple v5.6 - Programacin Visual de Microcontroladores


Borrar Vnculos ................................................................................................................................................... 37 INGRESO DE DATOS .................................................................................................................................................. 37 Control de ingreso de nombres de registros........................................................................................................ 37 Control de ingreso de valores Literales .............................................................................................................. 38 MODOS DE TRABAJO NIVEL DE USUARIO ............................................................................................................. 38 RUTINAS DE USUARIO ......................................................................................................................................... 40 EXPORTAR RUTINA DE USUARIO .............................................................................................................................. 40 IMPORTAR UNA RUTINA DE USUARIO ....................................................................................................................... 42 EXPORTAR IMAGEN .................................................................................................................................................. 42 PROGRAMANDO CON NIPLE ............................................................................................................................. 44 CREAR UN NUEVO PROYECTO. .................................................................................................................................. 44 DECLARACIN DE REGISTROS .................................................................................................................................. 46 BORRAR UN REGISTRO ............................................................................................................................................. 49 DECLARACIN DE BITS ............................................................................................................................................ 50 BORRAR UN BIT DE USUARIO ................................................................................................................................... 50 CAMBIAR EL NOMBRE A UN BIT DE USUARIO ........................................................................................................... 50 INSERTAR BLOQUES ................................................................................................................................................. 53 Descripcin de las funciones ............................................................................................................................... 55 INSTRUCCIONES ....................................................................................................................................................... 55 Instrucciones orientadas a Registros .................................................................................................................. 55 Instrucciones orientadas a Bits ........................................................................................................................... 56 Instrucciones orientadas a literales .................................................................................................................... 56 Instrucciones orientadas a Control ..................................................................................................................... 56 RUTINAS BSICAS .................................................................................................................................................... 57 Iniciar Programa ................................................................................................................................................. 58 Asignar Valor ...................................................................................................................................................... 58 Configurar Puerto ............................................................................................................................................... 60 Conversin Analgica/Digital (A/D) ................................................................................................................... 63 Condicin ............................................................................................................................................................ 70 Matemticas ........................................................................................................................................................ 74 Escalar ................................................................................................................................................................ 82 Tablas .................................................................................................................................................................. 90 Temporizadores ................................................................................................................................................... 93 IMPLEMENTACIN EN EL DIAGRAMA DE FLUJO........................................................................................................ 95 Memorias EEPROM I2C ................................................................................................................................... 114 Memorias RAM.................................................................................................................................................. 118 DECLARACIN DEL DISPOSITIVO............................................................................................................................ 118 Reloj de Tiempo Real......................................................................................................................................... 122 DECLARACIN DEL DISPOSITIVO............................................................................................................................ 122 Pgina 3

Niple v5.6 - Programacin Visual de Microcontroladores


IMPLEMENTANDO EL PCF8583 EN EL DIAGRAMA DE FLUJO. ................................................................................. 123 Inicializacin ..................................................................................................................................................... 123 Escritura ............................................................................................................................................................ 124 Configuracin de Alarmas ................................................................................................................................ 127 Registro Desplazamiento ................................................................................................................................... 130 IMPORTANTE: PROCEDIMIENTO PARA PROGRAMACIN DE LOS PIC 12F6XX. .................................................... 131

Pgina 4

Niple v5.6 - Programacin Visual de Microcontroladores

Introduccin a los microcontroladores


Que es un microcontrolador?
Los microcontroladores hicieron su aparicin a principio de los 80 y se trata de un circuito integrado programable que contiene toda la estructura (arquitectura) de una microcomputadora. Es decir que, dentro de un microcontrolador podemos encontrar: una CPU (Unidad Central de Proceso) Memoria RAM Memoria ROM Memoria EEPROM (Memoria de lectura y escritura no voltil, es decir, que no se pierden los datos cuando el circuito es desconectado) Puertos de Entrada/Salida (Pines de E/S) e incluso muchos modelos de microcontroladores incorporan distintos mdulos perifricos, como pueden ser; conversores analgico/digital (A/D), mdulos PWM (control por ancho de pulso), mdulos de comunicaciones seriales o en paralelo, y ms. Todo esto lo podemos encontrar dentro del mismo circuito integrado. Cada vez existen ms productos que incorporan microcontroladores con el fin de aumentar sustancialmente sus prestaciones, reducir su tamao y costo, mejorar su confiabilidad y disminuir el consumo de energa.

Los microcontroladores PIC


Los microcontroladores denominados PIC corresponden exclusivamente a la marca Microchip. PIC significa "Peripheral Interface Controller" y fue desarrollado por Microchip a principio de los 80. Existe una gran cantidad de modelos de microcontroladores cuyas caractersticas y prestaciones varan de un modelo a otro. De esta manera los desarrolladores pueden seleccionar el modelo que mejor se ajuste a sus necesidades. Los distintos modelos de microcontroladores se agrupan por familia. Una familia puede estar formada por un conjunto de modelos cuyas caractersticas y prestaciones son bastante similares. Cuando compramos un microcontrolador, la memoria del mismo se encuentra vaca y para que funcione es necesario que sea programado, es decir que, el desarrollador debe escribir un programa que contenga todos los procesos que el microcontrolador debe ejecutar. Este programa se escribe en un lenguaje llamado Assembler (ensamblador) cuya principal caracterstica es su alta complejidad ya que se trata de un lenguaje de bajo nivel, es decir, que se encuentra ms cercano al lenguaje de la mquina que del lenguaje humano. Por esto, slo los tcnicos altamente capacitados estn en condiciones de realizar desarrollos electrnicos que incluyan microcontroladores. Incluso a estos especialistas les implica un gran esfuerzo intelectual y mucho tiempo de desarrollo. Pgina 5

Niple v5.6 - Programacin Visual de Microcontroladores Estructura de un microcontrolador


Bsicamente, un microcontrolador esta compuesto por los siguientes componentes: Procesador o CPU (del ingls Central Prossesing Unit o Unidad Central de Proceso). Memoria para el programa tipo ROM. Memoria RAM para contener los datos. Lneas de E/S para comunicarse con el exterior. Diversos mdulos para el control de perifricos (temporizadores, Puertas Serie y Paralelo, CAD: Conversores Analgico/Digital, CDA: Conversores Digital/Analgico, etc.).

El procesador o CPU
Es el elemento ms importante del microcontrolador y determina sus principales caractersticas, tanto a nivel hardware como software. La CPU (Central Processing Unit o Unidad Central de Proceso) se encarga la decodificacin y ejecucin del programa. Actualmente, existen 3 tipos de arquitectura de procesadores: CISC (Computadores de Juego de Instrucciones Complejo): Disponen de ms de 80 instrucciones en su repertorio, algunas de las cuales son muy sofisticadas y potentes, requiriendo muchos ciclos para su ejecucin. Una ventaja de los procesadores CISC es que ofrecen instrucciones complejas que actan como macros. RISC (Computadores de Juego de Instrucciones Reducido): En estos procesadores el repertorio de instrucciones es muy reducido y las instrucciones son simples y generalmente se ejecutan en un ciclo. La ventaja de stos es que la sencillez y rapidez de las instrucciones permiten optimizar el hardware y el software del procesador. SISC (Computadores de Juego de Instrucciones Especfico): En los microcontroladores destinados a aplicaciones muy concretas, el juego de instrucciones, adems de ser reducido, es "especfico", o sea, las instrucciones se adaptan a las necesidades de la aplicacin prevista.

Memoria ROM
La memoria ROM es una memoria no voltil, es decir, que no se pierden los datos al desconectar el equipo y se destina a contener el programa de instrucciones que gobierna la aplicacin. Los microcontroladores disponen de capacidades de ROM comprendidas entre 512 bytes y 8 k bytes. Existen distintos tipos de memorias ROM, la cual determinar la aplicacin del microcontrolador. ROM con mscara: Es una memoria no voltil de slo lectura cuyo contenido se graba durante la fabricacin del chip. El elevado costo del diseo de la mscara slo hace aconsejable el empleo de los microcontroladores con este tipo de memoria cuando se precisan cantidades superiores a varios miles de unidades. OTP: El microcontrolador contiene una memoria no voltil de slo lectura "programable una sola vez" por el usuario. OTP (One Time Programmable). Es el usuario quien puede escribir Pgina 6

Niple v5.6 - Programacin Visual de Microcontroladores


el programa en el chip mediante un sencillo grabador controlado por un programa desde una PC. La versin OTP es recomendable cuando es muy corto el ciclo de diseo del producto, o bien, en la construccin de prototipos y series muy pequeas. Tanto en este tipo de memoria como en la EPROM, se suele usar la encriptacin mediante fusibles para proteger el cdigo contenido. EPROM: Los microcontroladores que disponen de memoria EPROM (Erasable Programmable Read OnIy Memory) pueden borrarse y grabarse muchas veces. La grabacin se realiza, como en el caso de los OTP, con un grabador gobernado desde un PC. Si, posteriormente, se desea borrar el contenido, disponen de una ventana de cristal en su superficie por la que se somete a la EPROM a rayos ultravioleta durante varios minutos. Las cpsulas son de material cermico y son ms caros que los microcontroladores con memoria OTP que estn hechos con material plstico. EEPROM: Se trata de memorias de slo lectura, las cuales se puede escribir y borrar elctricamente. EEPROM (Electrical Erasable Programmable Read OnIy Memory). Tanto la programacin como el borrado, se realizan elctricamente desde el propio grabador y bajo el control programado de un PC. Es muy cmoda y rpida la operacin de grabado y la de borrado. No disponen de ventana de cristal en la superficie. Los microcontroladores dotados de memoria EEPROM una vez instalados en el circuito, pueden grabarse y borrarse cuantas veces se quiera sin ser retirados de dicho circuito. Para ello se usan "grabadores en circuito" que confieren una gran flexibilidad y rapidez a la hora de realizar modificaciones en el programa de trabajo. El nmero de veces que puede grabarse y borrarse una memoria EEPROM es finito, por lo que no es recomendable una reprogramacin continua. Son muy idneos para la enseanza y la Ingeniera de diseo. Se va extendiendo en los fabricantes la tendencia de incluir una pequea zona de memoria EEPROM en los circuitos programables para guardar y modificar cmodamente una serie de parmetros que adecuan el dispositivo a las condiciones del entorno. Este tipo de memoria es relativamente lenta. FLASH: Se trata de una memoria no voltil, de bajo consumo, que se puede escribir y borrar. Funciona como una ROM y una RAM pero consume menos y es ms pequea. A diferencia de la ROM, la memoria FLASH es programable en el circuito. Es ms rpida y de mayor densidad que la EEPROM. La alternativa FLASH est recomendada frente a la EEPROM cuando se precisa gran cantidad de memoria de programa no voltil. Es ms veloz y tolera ms ciclos de escritura y borrado.

Memoria RAM
La memoria RAM es una memoria voltil, es decir, que se pierden los datos al desconectar el equipo, y se destina a guardar las variables y los datos. Los microcontroladores disponen de capacidades de RAM comprendidas entre 20 y 512 bytes.

Pgina 7

Niple v5.6 - Programacin Visual de Microcontroladores Registros y Bits


Un registro es una posicin de memoria en la cual se puede almacenar un dato. Es decir que la memoria esta dividida en pequeas partes llamadas Registros. Dentro de la memoria, cada registro se identifica mediante un nmero, el cual se denomina Direccin de memoria y generalmente est expresado en formato Hexadecimal. El primer registro de una memoria corresponde a la direccin 00H. Dado que identificar a cada registro mediante un nmero hexadecimal puede resultar muy complejo a la hora de disear el programa, existe la posibilidad de asignar un nombre a una direccin de registro. En general, este nombre est directamente relacionado con la funcin que cada registro cumple dentro del sistema. Los registros no solo son utilizados por el programador (usuario) para almacenar los datos que la aplicacin debe procesar, sino que, adems, sirven para controlar todo el funcionamiento del microcontrolador en su conjunto. Esta funcin, la cumple un conjunto de registros que ya vienen Predefinidos desde la fbrica. Es decir, que el fabricante asigna las funciones de configuracin y control del microcontrolador en un grupo de registros y el usuario no puede modificar la funcin que cumple cada uno de stos. Cada Registro est dividido en 8 partes a los cuales se los denomina Bits. Entonces podemos decir que un Registro esta formado por un conjunto de 8 bits. El Bit es la menor unidad de informacin que un sistema digital puede procesar y solo puede contener los valores lgicos 0 y 1.

La palabra BIT proviene de la contraccin de las palabras Binary Digit.

Los sistemas digitales representan la informacin en forma de bits porque sus circuitos slo pueden tener 2 estados: encendido o apagado. En general podemos decir que: 1 = Encendido = Verdadero = SI = +5V 0 = Apagado = Falso = NO = 0V Cada Bit se identifica por la posicin que ocupa dentro del registro, siendo el primer Bit el nmero 0, que es el que se encuentra en el extremo derecho del registro.

Al igual que los registros, se puede asignar un nombre a cada Bit para facilitar su identificacin. En un registro se puede almacenar una combinacin 8 ceros y unos. Esto nos da una cantidad de 2^8 combinaciones, es decir, 256 posibles combinaciones de ceros y unos. Esto significa que un registro puede procesar valores entre 0 y 255.

Pgina 8

Niple v5.6 - Programacin Visual de Microcontroladores


Esta caracterstica de procesar nmeros (Dgitos) es lo que da el nombre a la Electrnica Digital. La electrnica digital procesa nmeros formados por combinaciones de ceros y unos. Cualquier seal analgica debe ser digitalizada, es decir, convertida a nmeros, para poder ser procesada en un sistema digital.

Podemos decir que el conjunto de ceros y unos almacenados en un registro se trata de un nmero entre 0 y 255, expresado en sistema Binario, esto es, en base 2. Para interpretar dicho nmero debemos realizar el clculo de conversin de base para poder expresarlo en sistema decimal. El siguiente ejemplo muestra el desarrollo de un clculo de conversin de base de sistema binario (base 2) a sistema decimal (base 10):

Se llama Peso Binario al valor que representa un Bit segn la posicin que ocupa dentro del registro. El Bit que est ubicado ms hacia la derecha del registro, es el Bit menos significativo (LSB, Least Significant Bit) y tiene un peso de 2^0=1. El Bit del extremo izquierdo del registro es el Bit ms significativo (MSB, Most Significant Bit) y tiene un peso de 2^7=128. Los pesos binarios crecen de derecha a izquierda en potencias de 2.

Una manera de simplificar el clculo de conversin de binario a decimal, es, directamente sumar los valores de los pesos binarios de los bits cuyo valor sea 1.

Pgina 9

Niple v5.6 - Programacin Visual de Microcontroladores

El sistema hexadecimal es un sistema en base 16 y consta de 16 dgitos diferentes que son: del 0 al 9 y luego de la letra A a la F, es decir, 10 dgitos numricos y seis caracteres alfabticos. El sistema hexadecimal se usa como forma simplificada de representacin de nmeros binarios y debido a que 16 es una potencia de 2 (2^4=16), resulta muy sencilla la conversin de los nmeros del sistema binario al hexadecimal y viceversa. Mediante el sistema hexadecimal podemos representar un valor numrico de 8 bits utilizando slo 2 dgitos. De sta manera estamos dividiendo el registro de 8 bits en 2 partes de 4 bits cada una llamada Nibble. Al nibble correspondiente a los 4 bits menos significativos, se lo denomina Nibble Bajo y al nibble correspondiente a los 4 bits ms significativos se lo denomina Nibble Alto.

El sistema hexadecimal es utilizado para identificar las direcciones de registros de las memorias en sistemas digitales porque permite representar el valor de un Nibble con slo 1 digito, ya que:

Esto permite representar nmeros grandes utilizando unos pocos dgitos. Por ejemplo:

En la programacin de microcontroladores, es habitual utilizar los 3 sistemas de numeracin (Binario, Decimal y Hexadecimal) dependiendo del proceso que necesitemos realizar. Por eso es fundamental tener claros estos conceptos. Pgina 10

Niple v5.6 - Programacin Visual de Microcontroladores Lneas de Entrada/Salida (E/S), (Puertos)


Los microcontroladores cuentan con una serie de pines destinados a entrada y salida de datos o seales digitales. A estos pines se les denomina Puerto. Como mencionamos anteriormente, todo el funcionamiento del microcontrolador est controlado a travs de los registros. Los puertos no son la excepcin, tambin estn controlados por los registros. Por esto, un puerto no puede estar formado por ms de 8 pines; 1 Pin por cada Bit de un registro. Un puerto si puede estar formado por menos de 8 pines. Un microcontrolador puede contener varios puertos dependiendo del modelo. A cada puerto se lo identifica con una letra. Por ejemplo; Puerto A, Puerto B, etc. Para poder utilizar un puerto, primero el mismo debe ser configurado. Cada pin de un puerto puede ser configurado como entrada o salida independientemente del resto de los pines del mismo puerto.

Mdulos Temporizadores Internos (TMRs)


Un temporizador interno (TMR) es un mdulo de hardware incluido en el mismo microcontrolador el cual est especialmente diseado para incrementar automticamente el valor de un registro asociado al TMR cada vez que el mdulo TMR recibe un pulso. A este pulso se lo llama seal de reloj.

El mdulo TMR siempre incrementa el valor del registro asociado, nunca decrementa dicho valor.

Algunos microcontroladores pueden incluir ms de un mdulo TMR y la seal de reloj de cada uno de stos puede ser de origen interno o externo. Si el origen de la seal de reloj est configurado como externo, el mdulo temporizador puede ser utilizado como un contador de eventos externos, incrementando el TMR con cada pulso recibido mediante el pin correspondiente. Si el origen de la seal de reloj es interno, el TMR incrementa con cada ciclo del oscilador. Esto permite utilizar el temporizador como contador de ciclos de programa, donde, un ciclo corresponde al tiempo de ejecucin de una instruccin, lo cual se puede calcular con la siguiente frmula: ( 1 / ( Frec. Osc. / 4) ) Donde Frec. Osc. es la frecuencia del oscilador utilizado. Dado que la velocidad de ejecucin del microcontrolador corresponde a de la velocidad del cristal utilizado, cada ciclo de programa se ejecuta en un tiempo determinado segn el cristal que estemos utilizando. Por ejemplo; con un cristal de 4Mhz la velocidad real de procesamiento del microcontrolador es de 1 Mhz. Aplicando la siguiente frmula = 1 / (4.000.000 / 4) 1 / 1.000.000 0.000001 = 1 uS (microsegundo) Esto significa que cada ciclo de programa se ejecuta a 1/1.000.000 (1 uS) y dado que cada incremento del TMR corresponde a un ciclo de programa, si contamos los incrementos de un TMR, indirectamente podremos calcular el tiempo transcurrido. Pgina 11

Niple v5.6 - Programacin Visual de Microcontroladores


El incremento del TMR se realiza de manera automtica y de forma paralela a la ejecucin del resto del programa. Esto significa que el programa no debe controlar el incremento del TMR, lo cual s debe realizarse en las temporizaciones por bucles, en las cuales el microcontrolador se queda esperando a que transcurra un tiempo, y no pueden ejecutarse otras tareas mientras no finalice la temporizacin. Entonces el TMR puede ser utilizado como temporizador mientras el microcontrolador ejecuta otros procesos. Por ejemplo: si diseamos un programa que encienda y apague un led cada 1 segundo, el microcontrolador enciende el led y luego puede ocuparse de esperar a que transcurran los ciclos correspondientes a 1 segundo, luego apaga el led y continua esperando. Pero si el microcontrolador debe realizar alguna otra tarea adems de temporizar, por ejemplo, mostrar valores en dgitos de 7 segmentos, el micro no puede quedarse temporizando por bucles ya que mientras se encuentre temporizando no podr realizar el proceso de muestreo de los datos en los displays, y como resultado tendremos que los displays se apagan mientras el microcontrolador se encuentra temporizando. En este caso, se utiliza un TMR para realizar la temporizacin mientras el microcontrolador se ocupa de mostrar los datos en los displays. En general los microcontroladores cuentan con una interrupcin por desbordamiento del TRM, es decir que, el microcontrolador se interrumpe cuando el TMR0 pasa de 255 (B11111111) a 0 (B00000000) en los temporizadores de 8 bits y cuando pasa de 65535 (B11111111_111111) a 0 (B00000000_00000000) en los temporizadores de 16 bits. Dado que 256 uS es un tiempo relativamente corto (para un TMR de 8 bits a 4 Mhz.), existe la posibilidad de preescalar el TMR0 para que el registro asociado al TMR se incremente cada 2, 4, 8,o ms ciclos. De esta manera, estamos multiplicando la cantidad de ciclos que deben ejecutarse para realizar un incremento del TMR. Al prescalador tambin se lo denomina predivisor. Por ejemplo, con un predivisor de 8, cada incremento del TMR se realiza cada 8 ciclos de programa y el desbordamiento del TMR se realizara cada 2048 ciclos (255 incrementos * 8 ciclos). As podemos realizar interrupciones con periodos de tiempo mayores.

Pgina 12

Niple v5.6 - Programacin Visual de Microcontroladores Utilizando un microcontrolador


Como mencionamos anteriormente, el microcontrolador tiene una memoria de programa, donde grabamos las instrucciones necesarias para que el micro realice el trabajo que necesitamos. Cuando compramos un microcontrolador, la memoria de programa viene vaca. Para que un microcontrolador funcione es necesario programarlo. Los microcontroladores se programan en un lenguaje de programacin llamado Ensamblador (en ingls Assembler) cuya principal caracterstica es su altsima complejidad. Los lenguajes de programacin se clasifican segn el Nivel de programacin en: Lenguaje de Alto Nivel: permite que los algoritmos se expresen en un nivel y estilo de escritura fcilmente legible y comprensible por el hombre. En la actualidad se trata de lenguajes de tipo visual. Lenguaje de Bajo Nivel: el usuario se acerca un poco ms al lenguaje de maquina. Permiten un acceso ms amplio al control fsico de la maquina (hardware). Lenguaje Ensamblador: Podramos considerarlo el lenguaje de ms bajo nivel. El usuario escribe cdigo en el mismo idioma del procesador. Se tiene control total del sistema. Es necesario un conocimiento de la arquitectura mecnica del procesador para realizar una programacin efectiva. El lenguaje de programacin es muy especifico para cada modelo de procesador, incluso puede variar de un modelo a otro de procesador dentro de un mismo fabricante. Podemos decir que los lenguajes de alto Nivel se asemejan ms al lenguaje humano y que los lenguajes de bajo Nivel se asemejan ms al lenguaje de mquina y en el lenguaje ensamblador el usuario debe programar en el propio idioma del procesador.

El microcontrolador slo entiende de nmeros, es decir que, el cdigo Assembler (texto) no puede ser procesado directamente por el microcontrolador. Para poder grabar el programa en el micro, primero debemos convertir el texto del cdigo Assembler a nmeros, en general, en formato hexadecimal. A este proceso se le llama Compilacin. Pgina 13

Niple v5.6 - Programacin Visual de Microcontroladores


Una vez desarrollado el cdigo Assembler, el mismo debe ser compilado. Esto se realiza con un software compilador el cual se puede obtener de manera gratuita desde la pgina Web del fabricante del microcontrolador. El archivo compilado tiene una extensin .hex.

Por ltimo, despus de compilado, el programa est listo para ser grabado al microcontrolador. Esto realiza mediante una placa programadora. A sta placa programadora, comnmente se la llama programador. Existen distintos tipos de programadores los cuales pueden ser para conectar a la PC mediante el puerto Serie (COM) o Paralelo (LPT). Cada programador trabaja en conjunto con un software, mediante el cual se realiza el proceso de lectura y escritura de los microcontroladores. A continuacin se presenta un resumen del proceso de desarrollo del cdigo y grabacin de un microcontrolador: 1) Escribir el cdigo Assembler. Se genera un archivo con extensin ASM. 2) Compilar el cdigo Assembler. Se genera un archivo con extensin HEX. 3) Grabar (transferir) el programa desde la PC al microcontrolador mediante un programador. De estos 3 pasos, el primero insume el 98 % de tiempo y esfuerzo y es aqu donde Niple le ofrece sus ventajas.

Niple: Programacin Visual de microcontroladores PIC


Como mencionamos en los prrafos anteriores, la programacin de los microcontroladores resulta una tarea muy compleja dado que el usuario debe conocer la arquitectura del procesador y adems debe dominar el lenguaje de programacin Ensamblador. Si bien existen distintas versiones del lenguaje C o Basic adaptadas a la programacin de microcontroladores, todava la programacin resulta muy compleja por el alto grado de abstraccin que implica. Niple es un entorno de desarrollo visual para programacin de microcontroladores PIC. Con Niple, el usuario slo disea un diagrama de flujo de manera totalmente visual y en alto nivel de programacin, en lenguaje humano, y el software genera el cdigo Assembler de manera automtica. Adems, el software controla y supervisa todo el proceso de diseo, advirtiendo al usuario sobre posibles errores en la lgica del programa que se est diseando. Esta ventaja no la tiene ningn otro lenguaje de programacin. Pgina 14

Niple v5.6 - Programacin Visual de Microcontroladores


De sta manera Niple ofrece la posibilidad de realizar desarrollos con microcontroladores con un mnimo de esfuerzo. El principal objetivo de Niple es facilitar al mximo la programacin de los microcontroladores. Para esto, el software ofrece un entorno totalmente visual, donde todo el sistema se adapta a las caractersticas del modelo de microcontrolador seleccionado; es decir que; carga el mapa de memoria con sus respectivos nombres de registros y bits, asigna las funciones correspondientes a cada Registro y Bit dentro del sistema, ajusta el tamao de la memoria EEPROM, activa los mdulos correspondientes, etc. Es decir que, Ud. tendr disponible slo las caractersticas que corresponden al modelo de micro en uso. El concepto de la programacin es que el usuario se concentre en qu es lo que quiere hacer, y Niple sabe cmo hacerlo. Es decir que el usuario slo se dedica a disear la estructura lgica del proceso que desea realizar y el software se encarga de resolver todo el desarrollo del cdigo Assembler, controlando hasta el ms mnimo detalle.

Pgina 15

Niple v5.6 - Programacin Visual de Microcontroladores

Introduccin a Niple
Niple es un Entorno Visual de Desarrollo para programacin de Microcontroladores PIC. Con Niple podr programar los PIC a travs del diseo de un diagrama de flujo de manera grfica y de alto nivel de programacin, sin necesidad de escribir cdigo Assembler, o escribiendo la menor cantidad de cdigo, convirtindose en la forma ms rpida, sencilla y productiva de desarrollar proyectos con microcontroladores PIC. La metodologa de programacin consiste en disear un diagrama de flujo de manera grfica y en lenguaje humano mientras Niple realiza el trabajo pesado por Ud., controlando errores lgicos o de configuracin, realizando clculos, coordinando la interaccin entre las distintas partes del proyecto y generando de manera automtica el cdigo Assembler. Estas caractersticas, hacen de Niple la herramienta ideal tanto para quienes se inician en el mundo de los microcontroladores como para aquellos usuarios ms experimentados que quieran aumentar su productividad. Entre las principales prestaciones que Niple ofrece podemos destacar:

Entono Visual de Alto Nivel de programacin: Niple ofrece una metodologa de programacin totalmente visual y en lenguaje humano. Bloques estandarizados, lo cual facilita la interpretacin del proyecto. Ud. se concentra en Que Hacer y Niple se encarga de Como Hacerlo. Control automtico de errores lgicos. Supervisa el ingreso de datos.

Control automtico de registros y bits: Controla la existencia de todos los registros y bits necesarios para el correcto funcionamiento del proyecto en el momento de generar el cdigo Assembler. Controla que no existan nombres de registros y bits duplicados. Valida los nombres de los registros y los bits en el momento de ser declarados.

Correccin automtica de errores lgicos Controla la correcta configuracin de los puertos. Controla la configuracin y activacin de las interrupciones. Supervisa la creacin de vnculos entre bloques.

Generacin del Cdigo Assembler: Control automtico de la sintaxis del cdigo generado. Control automtico del cambio de pgina. Generacin automtica de etiquetas.

Pgina 16

Niple v5.6 - Programacin Visual de Microcontroladores

Modelos de PIC soportados por Niple: 12F629 / 675 16F716 16F84 / 84A 16F87 / 88 16F630 / 676 16F627 / 627A / 628 / 628A / 648 / 648A 16F737 / 747 / 767 / 777 16F870 / 873 / 873A / 874 / 874A / 876 / 876A / 877 / 877A 16F882 / 883 / 884 / 886 / 887 18F2455 / 2550 / 4455 / 4550 18F2525 / 2620 / 4525 / 4620 18F13K50 / 14K50 Velocidades de reloj soportadas: 4 Mhz Interno, 4Mhz , 8 Mhz 10 Mhz,12 Mhz y 20 Mhz.

Funciones disponibles
Las funciones disponibles dependen del modelo de microcontrolador utilizado pero en general podemos mencionar: Seleccin del cristal utilizado Asignacin de valores a registros y bits Configuracin y manejo de interrupciones Manejo de rutinas de usuario Configuracin, Lectura y Escritura de puertos Lectura / Escritura de EEPROM interna del PIC Lectura / Escritura de EEPROM/RAM/FRAM Externa por I2C Lectura / Escritura de EEPROM Paralela Funciones de comparacin de registros y bits (condiciones =, >, <, >=, <=, <>) Manejo automtico de tablas Temporizadores por bucle (de tiempo fijo o variable) Ingreso de datos por teclado matricial (3x3 y 3x4) Visualizacin de datos en dgitos 7 segmentos (nodo comn y Ctodo comn) Matriz de LED Visualizacin de datos en pantallas LCD (16x2, 20x2 y 20x4) Visualizacin de datos en pantallas GLCD (128x64) Manejo de memorias EEPROM 24Cxxx por comunicacin I2C Manejo de reloj/calendario de tiempo real PCF8583 y ds1307, con control de alarmas por fecha. Pgina 17

Niple v5.6 - Programacin Visual de Microcontroladores


Configuracin y manejo de temporizadores internos (TMRs disponibles en el microcontrolador elegido) Configuracin de interrupciones por: (Puertos, Tmrs, A/D, USART, CCP, EEPROM) Comunicaciones RS232 por cdigo y por USART Comunicaciones RS485 por cdigo y por USART Comunicaciones USB Comunicaciones RF (modulo TWS 434-RWS 434) Comunicaciones Zigbee (modulo Xbee Xbee PRO) Comunicaciones IR Comparadores analgicos Modulo RFID Conversin A/D a 8 y 10 Bits. La cantidad de canales depende del modelo de micro Mdulos CCP (Compara, Captura y PWM) Clculos matemticos: (+, - , / , *, en 8 ,16 ,24 y 32 bits), conversin a BCD Escalado de valores de un rango a otro (a 8 y 16 bits) Vector de memoria Encoder Incremental Control de potencia AC Motores Paso a Paso Servo Motores Receptor DTMF Impresora trmica Teclado A/D Teclado Matricial Teclado AT Impresora Trmica Sensores : Temperatura, Humedad , Compas Conversor Digital Analgico DS1803 Manejo de registros de desplazamiento

Pgina 18 de 133

Niple v5.6 - Programacin Visual de Microcontroladores Herramientas adicionales

Interfaz de comunicacin RS232. Comunicaciones a 8 o 16 bits con visualizacin en distintos formatos (decimal, hexadecimal, binario, texto, o modo grfico).

Pgina 19 de 133

Niple v5.6 - Programacin Visual de Microcontroladores

Interfaz de comunicacin USB, con visualizacin en distintos formatos (decimal, hexadecimal, binario, texto), esta herramienta tambin dispone de eleccin sobre el tipo de dato a enviar al microcontrolador, entre los tipos de datos a enviar estn: 1. Datos ASCII 2. Datos Decimal 3. Datos Hexadecimal 4. Datos Binarios

Pgina 20 de 133

Niple v5.6 - Programacin Visual de Microcontroladores

Metodologa de programacin con Niple


La metodologa de programacin en Niple consiste en el diseo de un diagrama de flujo de manera totalmente visual y de alto nivel de programacin. Esto significa que Ud. no escribe cdigo en Assembler adaptndose al lenguaje del micro, sino que, por el contrario, Ud. realiza el diseo del programa de manera grfica, seleccionando opciones a travs de pantallas claras e intuitivas, y donde el sistema se adapta al lenguaje humano y luego traduce a cdigo Assembler. El diagrama de flujo est formado por un conjunto de bloques estandarizados. Tanto la forma, como el color y el texto de cada bloque, le estn presentando informacin y datos concretos acerca de cada parte del proceso, lo cual facilita an ms la interpretacin del programa. Adems, el diagrama de flujo le permite tener una visin general del proyecto. El proceso de diseo del diagrama de flujo consiste en insertar bloques y vincularlos por medio de flechas. Durante ste proceso, Niple controla y advierte de posibles errores, tanto de la lgica del programa como en la configuracin del sistema (configuracin de puertos, interrupciones, etc.). En el margen derecho de la pantalla se encuentra el rbol de Herramientas. Este consiste en una estructura de rbol donde se encuentran todas las funciones que pueden ser insertadas como bloques en el diagrama de flujo y que generan un cdigo Assembler. Los bloques se encuentran agrupados en distintos niveles organizados por categora para facilitar la bsqueda de un bloque en particular. En el primer nivel se organizan por tipo de funcin donde se encuentran los siguientes tems: Instrucciones: Esta categora incluye todas instrucciones en Assembler. A su vez se organizan por tipo de instruccin: Instrucciones orientadas a Registros Instrucciones orientadas a Bits Instrucciones orientadas a Literales Instrucciones orientadas a Control Todas las instrucciones ordenadas alfabticamente

Pgina 21 de 133

Niple v5.6 - Programacin Visual de Microcontroladores

El objetivo de Niple es utilizar lo menos posible los bloques de instrucciones ya que stos bloques equivalen a programar en cdigo Assembler. En el segundo nivel se organizan las etiquetas del proyecto, es decir, permite la creacin o el salto de etiquetas dentro del diagrama de flujo.

Luego se encuentran las rutinas bsicas: Rutinas Bsicas: Las rutinas bsicas son mdulos prediseados y se encargan de resolver un proceso en particular (una configuracin, una comparacin, un clculo, etc.). Ud. puede formar estructuras lgicas muy complejas de manera rpida y sencilla a partir de la combinacin de rutinas bsicas. Utilice las rutinas bsicas para programar dentro de cualquier Entorno. Las rutinas bsicas estn organizadas en categoras como se muestra en la imagen a continuacin:

Pgina 22 de 133

Niple v5.6 - Programacin Visual de Microcontroladores


Interrupciones: En sta categora se encuentran todas las funciones de configuracin y manejo de las interrupciones. Niple presenta las nes disponibles de acuerdo al modelo de PIC que se est utilizando.

Subrutinas de usuario: Ud. puede disear sus propias funciones o procedimientos para solucionar un problema en particular (siempre combinando distintas rutinas bsicas) y luego llamarlos desde distintas partes del programa (subrutinas). Esto le permite por un lado, la creacin de funciones o procedimientos personalizados y por otro lado, la optimizacin del cdigo Assembler generado, ya que las rutinas de usuario slo se escriben una vez y luego se insertan llamadas a las mismas. Esta categora incluye las funciones de declaracin e insercin de llamadas a rutinas de usuario.

Pgina 23 de 133

Niple v5.6 - Programacin Visual de Microcontroladores

Conceptos bsicos
La interfaz de Niple
Elementos de la pantalla.

Secciones de trabajo
Niple dispone de 2 secciones de trabajo: Seccin de Dispositivos: se encuentran los dispositivos externos que sern utilizados en el proyecto. Seccin de Diagrama de Flujo: se encuentran los diagramas de flujo que conforman el proyecto actual. Para conmutar entre las secciones de Dispositivos y Diagramas de Flujo utilice la lista desplegable que se encuentra en la parte superior derecha de la pantalla:

Pgina 24 de 133

Niple v5.6 - Programacin Visual de Microcontroladores


Al ingresar a la seccin Dispositivos puede declarar los dispositivos externos que sern utilizados en el proyecto.

Los dispositivos a declarar esta organizados por categoras. El tipo de dispositivo que desea declarar seleccionando en la lista de categoras de nuevo dispositivo:

Al selecciona el tipo de dispositivo a declarar se muestran los diferentes componentes disponibles segn el modelo de microcontrolador utilizado. Cada dispositivo es identificado con un nombre (ID, por Identificacin). Cada dispositivo debe tener un nombre nico que lo identifique dentro del proyecto, es decir que no puede haber ms de 1 dispositivo con el mismo ID. Por defecto Niple le propone un Id de manera automtica, Ud. Puede cambiar el Id para identificar ms fcilmente cada dispositivo dentro del diagrama de flujo. Una categora de dispositivos puede estar formado por varios componentes. En este caso se muestra una lista de los componentes disponibles en la parte inferior de la pantalla. Al seleccionar el componente deseado se muestra la pantalla de configuracin y opciones correspondiente.

Pgina 25 de 133

Niple v5.6 - Programacin Visual de Microcontroladores


En la siguiente imagen se muestra un dispositivo de tipo Memoria, las opciones disponibles en la parte inferior, la pantalla de configuracin al seleccionar un dispositivo y el ID asignado por defecto.

Una vez seleccionadas las caractersticas del dispositivo y la conexin de lo pines al PIC se termina el proceso de declaracin de dispositivo por medio del botn Ingresar. Este botn estar disponible solo cuando todas las opciones de configuracin del dispositivo hayan sido seleccionadas. En la parte inferior de la pantalla se muestra la lista de dispositivos declarados en el proyecto actual. Al seleccionar un dispositivo se muestran todas las caractersticas y opciones de configuracin. Los dispositivos de muestran por su ID.

Pgina 26 de 133

Niple v5.6 - Programacin Visual de Microcontroladores


En la siguiente imagen se muestran 2 dispositivos de tipo Memoria identificadas como Mem_Datos y Mem_Config.

Note como la implementacin un adecuado ID permite identificar ms fcilmente la funcin de cada una de las memorias lo cual facilitar la programacin dentro del diagrama de flujo ya que se acceder a estas memorias por su ID. A continuacin se muestra como se utiliza el ID para acceder a cada una de las memorias dentro del diagrama de flujo.

Pgina 27 de 133

Niple v5.6 - Programacin Visual de Microcontroladores

En la seccin Diagrama de Flujo Ud. programa los procesos o estructuras lgicas que desea realizar en el proyecto. Un proyecto esta dividi en diferentes Partes. A cada una es tas partes se las llama Entorno.

Entornos
En general, un programa para PIC es organizado en distintas secciones con el fin de facilitar la compresin y al mismo tiempo optimizar el cdigo por medio de la reutilizacin de rutinas y procesos. El objetivo de cada una de stas secciones es resolver un problema en particular y reciben distintos nombres segn la funcin que cumplen, o el contexto en el cual se ejecutan (Programa Principal, Subrutinas o Interrupciones).

En Niple, se llama Entorno a cada una de estas secciones que conforman un programa.

Cada entorno debe estar perfectamente delimitado por un bloque de Inicio y otro de Fin, con la excepcin del entorno del Programa Principal. Este contiene un bloque de inicio pero no tiene un bloque de final, sino que, se realiza un bucle para ejecutar otro ciclo del programa. Cada proyecto de Niple puede contener varios entornos; Entorno del Programa Principal: ste entorno se crea de manera automtica y es el encargado de coordinar la ejecucin de todo el programa (incluyendo el resto de los entornos). En un proyecto slo puede haber slo un entorno llamado Programa Principal y no puede ser borrado. Entornos de Subrutinas (rutinas de usuario): Son funciones o procedimientos generados por el usuario. Debe asignarles un nombre nico dentro del proyecto. No tiene un lmite mximo en la cantidad de entornos de subrutina que puede incluir en un proyecto. Las subrutinas pueden devolver o no un resultado (Funciones y Procedimientos respectivamente). Para ejecutar una subrutina debe ser llamada o invocada. Entornos de Interrupciones: Son funciones o procedimientos que se ejecutan al producirse un llamado a interrupcin. Cada interrupcin tiene un nombre predeterminado y el usuario no puede cambiar ste nombre. La cantidad mxima de Interrupcin corresponde al nmero de interrupciones de incluye cada modelo de microcontrolador. En tiempo de ejecucin, se accede al entorno de una interrupcin de manera automtica, al generarse un llamado a interrupcin. O sea que no se puede predecir el momento exacto en que se producir una interrupcin. Esto afecta al sistema de chequeo de errores.

Pgina 28 de 133

Niple v5.6 - Programacin Visual de Microcontroladores Crear un nuevo Entorno


Un entorno se genera de manera automtica al insertar interrupciones o rutinas de usuario en el proyecto. Cuando inserta una interrupcin en el proyecto, Niple coloca de manera automtica el bloque de inicio de entorno con el texto correspondiente. Cuando declara una Rutina de Usuario, Niple genera un nuevo entorno con el nombre que usted asign a la rutina y le coloca el prefijo usr_ (abreviacin de la palabra usuario). Inserta de manera automtica el bloque de Inicio de Entorno.

Seleccionar el Entorno actual de trabajo


Para conmutar entre los distintos entornos, slo seleccione el nombre del entorno en el Explorador de Proyecto. En la esquina superior izquierda del rea de trabajo se muestra el nombre del entorno actual.

Borrar un Entorno
Para borrar un entorno, seleccione el nombre del entorno a borrar y presione la tecla Suprimir.

Bloques
Un bloque es un smbolo que representa un proceso. Cada bloque presenta informacin segn su forma, su color y el texto que contiene, e identifican una funcin en particular.

Interpretacin de los Bloques


Cada forma de bloque est directamente asociada a un tipo de funcin, esto le facilita la interpretacin del programa con slo echarle un vistazo general: Tipo de funcin segn la forma del bloque:

Inicio Fin. Se utiliza como inicio o fin de un entorno.

Ingreso de datos. Leer el valor de un puerto (en paralelo), modo Captura, modo Comparacin.

Instruccin. Cualquiera de las 35 instrucciones en cdigo assember. Salida de datos. Escribir un valor en un puerto (en paralelo, no serial)

Configuracin de un Puerto.

Pgina 29 de 133

Niple v5.6 - Programacin Visual de Microcontroladores


Asignacin. Este bloque representa la

asignacin de un valor a un registro o un bit.

Conversin Decimal a BCD Leer un dato de la memoria EEPROM. Decimal.

BCD a

Consultar Tabla. Almacenar un dato en la memoria EEPROM.

Comunicaciones Seriales RS232. Envo y recepcin de un dato por RS232. Condicin. Evala una condicin y deriva la ejecucion del programa en funcin del resultado de la evaluacin.

Configuracin. Este bloque corresponde a configuracin perifricos. de Interrupcin y mdulos

Comunicaciones Seriales RS232. Envo y recepcin de un conjunto de datos por RS232 mediante protocolo de usuario diseado en Niple.

Activar Desactivar Interrupciones. Temporizacin por bucle. Calcula y genera los bucles necesarios para esperar un tiempo determinado. Clculo matemtico.

Pgina 30 de 133

Niple v5.6 - Programacin Visual de Microcontroladores

Visualizar valores en display de 7 segmentos por el mtodo del multiplexado.

Registro de desplazamiento. Ingresar un valor y rotar.

Llamada a subrutina (call).

Seleccin de Bloques o Vnculos


Al seleccionar un bloque se presentan una serie de 9 nodos (8 alrededor y 1 en el centro del bloque). En el caso de los vnculos se presenta 1 nodo en la mitad de la flecha. Puede seleccionar uno o ms bloques o vnculos de varias maneras. Haciendo un clic sobre el bloque o sobre el vnculo. Manteniendo presionada la tecla ALT o la tecla CRTL puede ir incorporando ms bloques o vnculos a la seleccin actual. Puede seleccionar varios bloques y vnculos de la siguiente manera: - Marque un punto en el rea de trabajo (no sobre un bloque) - Presione el botn izquierdo del mouse y arrastre sin soltar el botn, se mostrar un rectngulo en lnea de trazos. - Al soltar el botn del mouse, se seleccionarn todos los bloques y vnculos que son incluidos en el rea seleccionada.

Mover un Bloque
Seleccione el bloque que desea desplazar y sin soltar el botn izquierdo del mouse y arrastre hasta ubicar el bloque en la nueva posicin. Puede mover varios bloques simultneamente. Note que todos los bloques que dependen del bloque seleccionado se mueven en conjunto de manera rgida. Esto se debe a que el modo Arrastrar bloques se encuentra activado. Si conmuta a modo Arrastrar bloques desactivado slo se desplaza el bloque seleccionado. Para conmutar entre el modo Arrastrar bloques Activado y Desactivado ingrese al men Opciones/Diagramas de Flujo/Activar Arrastre.

Pgina 31 de 133

Niple v5.6 - Programacin Visual de Microcontroladores

a) Posicin original. b) Modo Arrastrar bloques Activado. c) Modo Arrastrar bloques Desactivado Utilice el comando Edicin/Deshacer para restablecer la posicin anterior del bloque.

Estirar un Bloque
Al seleccionar un bloque se muestran 9 nodos (8 alrededor y 1 en el centro del smbolo seleccionado). Para modificar el tamao del bloque, haga un clic en uno de los 8 nodos perifricos y, sin soltar el botn izquierdo del mouse, arrastre hasta alcanzar el tamao deseado.

a) Tamao del bloque original b) Bloque estirado Utilice el comando Edicin/Deshacer para restablecer el tamao anterior del bloque.

Borrar Bloques
Tiene 2 formas de eliminar un o varios bloques: 1) Seleccione el bloque que desea eliminar y presione la tecla Suprimir. 2) Seleccione el bloque que desea eliminar y presione el botn derecho del mouse. Se desplegara un men contextual y presione la opcin Borrar Smbolo (o la opcin Borrar si ha seleccionado varios bloques o vnculos).

Pgina 32 de 133

Niple v5.6 - Programacin Visual de Microcontroladores

Utilice el comando Edicin/Deshacer para recuperar los bloques borrados.

Editar Bloques
Muchas veces es necesario cambiar el valor de algn parmetro u opcin a un bloque ya insertado dentro del diagrama de flujo. Para esto tiene 2 opciones: 1. Puede borrar el bloque e insertarlo nuevamente seleccionado los parmetros deseados. Si elige sta opcin deber realizar los vnculos de manera manual. 2. Puede editar el bloque y asignarle nuevos valores a los parmetros solicitados. Para esto no necesita borrar el bloque ni realizar los vnculos nuevamente. Para editar un bloque, seleccinelo y luego haga un clic con el botn derecho del mouse para que se presente el men contextual, y elija la opcin Editar, o bien realice doble click sobre el smbolo a editar y automticamente entrara al men de edicin del smbolo.

Para que el men contextual presente la opcin Editar, slo debe estar seleccionado el bloque a ser editado. Si selecciona ms de 1 elemento, ya sean bloques o vnculos, el men no presentar la opcin Editar ya que el sistema no puede determinar cual es el bloque que desea editar.

Se presentar la pantalla correspondiente al el bloque seleccionado. La pantalla ser cargada con todos los parmetros seleccionados. Proceda a cambiar los valores o las opciones y presione el botn Ingresar. Con respecto al chequeo de errores, es importante tener en cuenta que rige el mismo criterio que para la insercin de bloques. O sea que, si el bloque a editar est vinculado a otro bloque, se realizar el chequeo de errores en lnea. Mientras que si el bloque no se encuentra vinculado, el chequeo no se realizar.

Pgina 33 de 133

Niple v5.6 - Programacin Visual de Microcontroladores Duplicar Bloques


Al duplicar un bloque se realiza una copia exacta del bloque seleccionado. Muchas veces, la opcin Duplicar un Bloque en combinacin con la Edicin de bloques puede ayudarle a ahorrar tiempo de diseo, ya que es comn realizar operaciones similares en distintas partes de proyecto, donde slo cambian algunos parmetros. Ud. puede realizar una copia de la estructura lgica del programa y luego editar los bloques necesarios. Esto le resultara ms cmodo que insertar todos los bloques nuevamente. Para duplicar un bloque, seleccinelo y luego haga un clic con el botn derecho del mouse para que se presente el men contextual, y elija la opcin Duplicar.

Adems, puede duplicar uno o ms bloques a la vez.

Habilitar e Inhabilitar Bloques


Durante la fase de diseo del proyecto, es habitual que durante las pruebas, Ud. necesite anular una parte del proceso par que no sea ejecutada. Por medio de las opciones Habilitar Bloque e Inhabilitar Bloque puede anular la ejecucin uno o ms bloques sin necesidad de borrarlos o de alterar la lgica del programa. Pgina 34 de 133

Niple v5.6 - Programacin Visual de Microcontroladores


Para inhabilitar un bloque, seleccinelo y luego haga un clic con el botn derecho del mouse para que se presente el men contextual, y elija la opcin Inhabilitar.

Un bloque deshabilitado no es considerado en el momento del chequeo de errores en lnea y tampoco genera el cdigo Assembler.

No puede inhabilitar bloque correspondiente a una Decisin (smbolo Rombo) dado que estos bloques tienen 2 salidas. Para Habilitar un bloque, seleccinelo y luego haga un clic con el botn derecho del mouse para que se presente el men contextual, y elija la opcin Habilitar.

Vnculos (Flechas)
Un vnculo est representado por una Flecha que une a 2 o ms bloques y determina el flujo del proceso. Los vnculos determinan la secuencia y el orden de ejecucin del programa. Esto significa en que es muy importante tener en cuenta el sentido en que se genera el vnculo (bloques de origen y de destino). El bloque desde donde parte el vnculo de denomina Bloque de Origen y el bloque al cual llega Bloque de Destino y puede identificarlos visualmente porque el vnculo presenta una Punta de Flecha en extremo correspondiente al bloque de destino.

Pgina 35 de 133

Niple v5.6 - Programacin Visual de Microcontroladores


Le secuencia de ejecucin del programa es; primero se ejecuta el Bloque de Origen y a continuacin el Bloque de Destino. Existe un criterio a tener en cuenta a la hora de realizar vnculos entre bloques y Niple lo supervisa de manera automtica: Cada Bloque debe tener solo un Vnculo de salida. A excepcin de los bloques de Decisin (Rombo) que necesariamente deben tener 2 salida (Si la condicin se cumple y si la condicin No se cumple). Los bloques Inicio de Entorno (elipses amarillas) no pueden utilizarse como Bloques de Destino. O sea que, no pueden tener flechas que ingresen a stos bloques. Los bloques Fin de Entorno (elipses amarillas) no pueden utilizarse como Bloques de Origen. O sea que, no pueden tener flechas que salgan desde stos bloques. Antes de codificar un programa a cdigo Assembler, Niple supervisa que todos los bloques se encuentren correctamente vinculados. En el caso de existir un error de vnculos, Niple lo informa y suspende la codificacin del Assembler.

Crear un Vnculo
Para crear un vnculo entre 2 bloques siga los siguientes pasos: 1) Seleccione el Bloque de Origen. 2) Haga un clic en el Nodo (punto negro) que se encuentra en el centro del bloque. 3) Sin soltar el botn mouse, arrastre hasta el Bloque de Destino y suelte el botn del mouse.

Un vnculo puede adoptar distintas formas de acuerdo a la disposicin de los Bloques de Origen y Destino. A stas formas se les llama Estilo del vnculo.

Pgina 36 de 133

Niple v5.6 - Programacin Visual de Microcontroladores Cambiar el estilo de un Vnculo


Para cambiar el estilo de un vnculo; 1) Seleccione el vnculo y presione el botn derecho del mouse. 2) Se mostrar un men contextual con los distintos estilos que puede adoptar un vnculo. 3) Seleccione el estilo deseado.

Borrar Vnculos
Para eliminar un vnculo; 1) Seleccione el vnculo y presione el botn derecho del mouse. 2) Se mostrar un men contextual. 3) Seleccione la opcin Borrar Flecha. Tambin puede borrar un vnculo seleccionndolo y presionando la tecla Suprimir.

Ingreso de Datos
Niple controla de manera automtica cada dato ingresado al sistema, ya sean nombres de registro, valores literales u opciones (generalmente numricas). De esta manera se controlan los errores de tipeo.

Control de ingreso de nombres de registros


Cuando necesite ingresar el nombre de un registro como parmetro para una funcin, Niple le presenta una lista con todos los registros declarados, donde Ud. debe seleccionar el nombre del registro deseado. Esto garantiza que el registro a utilizar ha sido previamente declarado y dems previene los posibles errores de tipeo por parte del usuario al ingresar el nombre del registro.

Pgina 37 de 133

Niple v5.6 - Programacin Visual de Microcontroladores


Si necesita seleccionar como parmetro, el nombre de un registro Predefinido y no aparece en lista, consulte el tema Conceptos Bsicos / Modo de Usuario. En general, junto a la lista de registros, Niple presenta el Botn Nuevo. Este botn le carga la pantalla de declaracin de registros. De sta manera, si necesita ingresar como parmetro el nombre de un registro que an no ha sido declarado, tiene la posibilidad de declararlo y seleccionarlo sin necesidad de cancelar la pantalla actual. Al cargar la pantalla declaracin de Registros puede declarar ms de un registro nuevo antes de volver a la funcin actual. Pero al retornar, Niple seleccionar de manera automtica en la lista, el nombre del registro seleccionado al momento de cerrar la pantalla.

Control de ingreso de valores Literales


Niple le ofrece distintos formatos de ingreso de valores literales, stos son; formato decimal, hexadecimal o binario. En general, cuando necesite ingresar un literal, primero debe seleccionar el formato en el cual desea ingresar el valor. De sta manera, Niple supervisa de manera automtica el ingreso de datos, y admite slo los valores permitidos para el formato seleccionado. Si ingresa un valor no permitido, Niple lo muestra de color rojo y no permite continuar con el proceso actual hasta no corregir el valor ingresado. Cuando ingresa un nmero en formato Binario, Niple lo acepta como vlido slo cuando se han ingresado los 8 dgitos que conforman el nmero. Esto garantiza la correcta interpretacin del valor ingresado.

Modos de Trabajo Nivel de Usuario


Dado que Niple est especialmente diseado para quienes se inician en la programacin de microcontroladores PIC, el sistema ofrece 2 modos de trabajo segn el nivel de experiencia o conocimiento tcnico del usuario: Modo de Usuario Inicial: Slo se permite el acceso y visualizacin de los registros y bits declarados por el usuario, y no se tiene acceso a los registros predefinidos. Los nicos bits predefinidos a los que se tiene acceso son los correspondientes a los puertos (RA0-5; RB0-7; RC0-7), y los bits C y Z, dado que estos bits son de uso frecuente. De esta manera, Niple pretende evitar errores al modificar registros de configuracin y control del sistema (ya sea por desconocimiento o de manera accidental). Modo de Usuario Experto: Se permite el acceso a todos los registros y bits del sistema sin ninguna restriccin. Niple supone que el usuario tiene pleno conocimiento de las acciones que se est realizando, y no advierte sobre de los riesgos de modificar el valor de los registros de configuracin o control. Pgina 38 de 133

Niple v5.6 - Programacin Visual de Microcontroladores

Por defecto Niple inicia la sesin de trabajo en modo Usuario Inicial. Para conmutar entre Modo de Usuario Inicial y Experto ingrese al men Opciones/Nivel de Usuario.

Pgina 39 de 133

Niple v5.6 - Programacin Visual de Microcontroladores

Rutinas de Usuario
Ud. puede disear sus propias funciones o procedimientos para solucionar un problema en particular (siempre combinando distintas rutinas bsicas) y luego llamarlos desde distintas partes del programa (subrrutinas). Esto le permite por un lado, la creacin de funciones o procedimientos personalizados y por otro lado, la optimizacin del cdigo Assembler generado, ya que las rutinas de usuario slo se escriben una vez y luego se insertan llamadas a las mismas. Esta categora incluye las funciones de declaracin e insercin de llamadas a rutinas de usuario.

Exportar Rutina de Usuario


Una vez creada una rutina de usuario, Niple le ofrece la posibilidad de guardarla en un archivo con extensin .RUT, para luego poder ser utilizada en otros proyectos. De esta manera puede crear una librera de Rutinas de Usuario. Se genera un archivo para cada rutina. Para exportar una Rutina de Usuario realice los siguientes pasos: 1) Seleccione el entorno de la rutina de desea. 2) Seleccione el bloque de inicio del entorno. (El bloque con forma de elipse de color amarillo), y presione el botn derecho del mouse para mostrar el men contextual y seleccione la opcin Exportar Rutina. 3) Niple solicita el nombre del archivo donde guardar la rutina de usuario. Por defecto, sugiere el nombre de la rutina de usuario.

Pgina 40 de 133

Niple v5.6 - Programacin Visual de Microcontroladores

Pgina 41 de 133

Niple v5.6 - Programacin Visual de Microcontroladores Importar una Rutina de Usuario


Niple le permite guardar sus rutinas de usuario en archivos externos para luego ser utilizadas en otros proyectos. De sta manera Ud. puede generar su propia librera de rutinas o incluso intercambiar rutinas con otros usuarios. Para importar una Rutina de Usuario que se encuentra guardada en un archivo, ingrese al men Archivo/Rutina de Usuario y seleccione el archivo de rutina (*.RUT). Niple ingresar la rutina al proyecto actual. Si el modelo de PIC con el cual fue creada la rutina no es el mismo que el modelo actualmente utilizado, Niple muestra un mensaje de advertencia, ya que, al generar el cdigo Assembler, pueden ocurrir errores si la rutina utiliza algn mdulo que no existe en el modelo de PIC actualmente utilizado. Por ejemplo, si la rutina fue generada con una versin de Niple para 16F87x y realiza una lectura de un canal A/D y luego la importa a un proyecto de Niple apara 16F6xx, Niple advierte del posible error.

Exportar Imagen
Puede generar un archivo de imagen del diagrama de flujo para realizar la documentacin del proyecto. La imagen es generada en formato .wmf y corresponde un archivo de tipo vectorial. Este formato es estndar de Windows, o sea que, no requiere de programas especiales para poder visualizarlos o editarlos. Este tipo de archivos ocupan muy poco espacio de disco. El archivo de imagen puede ser insertado en un editor de textos para complementar la documentacin tcnica. Al ingresar al Men Archivo/Exportar Imagen, tiene 2 opciones para generar imgenes: 1. Generar una imagen de todo el proyecto: se generan un archivo de imagen por cada entorno. 2. Generar una imagen solo del Entorno actual: se genera un archivo con el entorno actual. Los archivos de imagen se nombran segn el siguiente formato: NombreProyecto_NombreEntorno.WMF. Por esto, Niple solicita el nombre del proyecto y sugiere el nombre actual del proyecto. Si Ud. an no ha ingresado un nombre al proyecto, Niple sugiere NombreProyecto. En el caso de generar archivos de imagen de todo el proyecto, Niple genera un archivo para cada entorno.

Pgina 42 de 133

Niple v5.6 - Programacin Visual de Microcontroladores

Por ejemplo, en el siguiente proyecto sern generados los archivos: Ejemplo7_Programa Principal.wmf Ejemplo7_Interrupcin por tmr1.wmf Ejemplo7_usr_procesamiento.wmf Ejemplo7_usr_analogico.wmf etc Donde cada archivo contiene la imagen del entorno correspondiente.

Pgina 43 de 133

Niple v5.6 - Programacin Visual de Microcontroladores

Programando con Niple


Crear un nuevo proyecto.
Para crear un proyecto nuevo en Niple seleccione la opcin Nuevo Proyecto del men Archivo:

Se carga la ventana de creacin de nuevo proyecto. Seleccione el modelo de microcontrolador utilizar.

Pgina 44 de 133

Niple v5.6 - Programacin Visual de Microcontroladores


Seleccione la ubicacin donde ser guardado el proyecto, al igual que los comentarios sobre el mismo.

Por ltimo, presione el botn OK y se abre el nuevo proyecto.

Pgina 45 de 133

Niple v5.6 - Programacin Visual de Microcontroladores Declaracin de Registros


Para declarar un registro ingrese al men Declaracin y seleccione la opcin Registros:

Se muestra la pantalla de Memoria del microcontrolador (Imagen a la derecha).

Al hacer clic en una posicin de memoria libre (en nuestro caso 24h) se carga la ventada de Declaracin de nuevo registro:

Seleccione el tipo de registro el cual puede ser: Registro nico: Se declara un solo registro con el nombre ingresado a continuacin. Ejemplo: Nombre: Generado: contador contador

Pgina 46 de 133

Niple v5.6 - Programacin Visual de Microcontroladores


16 Bits H/L (High/Low): Genera 2 bytes con el mismo nombre ingresado agregando los sufijos _h y _l para poder procesar valores a 16 bits. Ejemplo: Nombre: Generados: contador_h contador_h contador_l 24 Bits HH / H/L: Genera 3 bytes con el mismo nombre ingresado agregando los sufijos _hh, _h y _l para poder procesar valores a 24 bits. Ejemplo: Nombre: Generados: contador contador_hh contador_h contador_l 32 Bits HHH / HH / H/L: Genera 4 bytes con el mismo nombre ingresado agregando los sufijos _hhh, _hh, _h y _l para poder procesar valores a 32 bits. Ejemplo: Nombre: Generados: contador contador_hhh contador_hh contador_h contador_l

BCD 8 Bits: Genera 3 bytes con el mismo nombre ingresado agregando los sufijos _uni, _dec, y _cen para poder guardar valores en BCD de registros de 8 bits (entre 0 y 255). Ejemplo: Nombre: Generados: contador contador_cen contador_dec contador_uni BCD 10 Bits: Genera 4 bytes con el mismo nombre ingresado agregando los sufijos _uni, _dec, _cen, y _u_mil para poder guardar valores en BCD de registros de 10 bits (entre 0 y 1024).

Pgina 47 de 133

Niple v5.6 - Programacin Visual de Microcontroladores


Ejemplo: Nombre: Generados: contador contador_u_mil contador_cen contador_dec contador_uni

BCD 16 Bits: Genera 5 bytes con el mismo nombre ingresado agregando los sufijos _uni, _dec, _cen, _u_mil y _d_mil para poder guardar valores en BCD de registros de 16 bits. Ejemplo: Nombre: Generados: contador contador_d_mil contador_u_mil contador_cen contador_dec contador_uni Fecha: Genera 2 bytes con el mismo nombre ingresado agregando los sufijos _d, _m para poder guardar valores de fechas. Ejemplo: Nombre: Generados: fecha fecha_d fecha_m (dia) (mes)

Hora: Genera 3 bytes con el mismo nombre ingresado agregando los sufijos _h, _m y _s para poder guardar valores de horas. Ejemplo: Nombre: Generados: hora hora_h hora_m hora_s (horas) (minutos) (segundos)

Serie: Permite declarar de manera automtica una serie de registros con un prefijo incremental determinado por un intervalo.

Pgina 48 de 133

Niple v5.6 - Programacin Visual de Microcontroladores


Ejemplo: se declara una serie de registros llamada datos con un intervalo entre 001 y 020. Nombre: Generados: datos datos_001 datos_002 datos_020

Ingrese el nombre del nuevo registro y el valor inicial. La opcin BCD genera de manera automtica los registros correspondientes a la conversin BCD

Borrar un Registro
Seleccione el registro a borrar y presione la tecla Suprimir. Slo puede borrar los registros de usuario.

Dado que puede declarar bits dentro de un registro de usuario, Niple chequea si el registro de usuario que se intenta borrar contiene bits declarados. Si detecta que el registro a borrar contiene bits declarados, Niple le advierte que junto con el registro sern borrados todos los bits ste contenga y le pregunta si desea continuar con la operacin de borrado del registro. Tiene la posibilidad de cancelar la operacin de borrado respondiendo NO a la pregunta. Y si responde afirmativamente se borrar el registro junto con la totalidad de los bits asociados.

Pgina 49 de 133

Niple v5.6 - Programacin Visual de Microcontroladores Declaracin de Bits


Ingrese al men Declaracin y seleccione la opcin Bits.

Una vez dentro de la declaracin de bits se muestra de manera grafica la posicin y los nombres de los bits declarados, coloreando de colores los Bits del microcontrolador, los bits inhabilitados y las posiciones libres de creacin para bits.

Borrar un Bit de Usuario


Seleccione el BIT a borrar y presione la tecla Suprimir. Slo puede borrar los BIT de usuario.

Cambiar el nombre a un Bit de Usuario


Niple de brinda la posibilidad de renombrar un BIT o de modificar la descripcin del mismo. Para esto seleccione el BIT que desea renombrar y presione la tecla Enter.

Pgina 50 de 133

Niple v5.6 - Programacin Visual de Microcontroladores

Niple preguntara si desea cambiar el nombre del BIT actualmente seleccionado. Si responde afirmativamente se muestra la pantalla Renombrar un Bit donde se presentan el nombre y la descripcin del BIT actualmente seleccionado. Ingrese el nuevo nombre del bit y la nueva descripcin y a continuacin presione el botn Renombrar.

Al cambiar el nombre de un Bit, todos los bloques de los diagramas de flujo que hacen referencia a al Bit anteriormente renombrado quedan desactualizados, o sea, hacen referencia a un BIT que ya no existe. Para solucionar esto, Niple le brinda la posibilidad de actualizar de manera automtica todos los bloques que hacen referencia al BIT renombrado.

Pgina 51 de 133

Niple v5.6 - Programacin Visual de Microcontroladores


Niple le pregunta si desea que actualice de manera automtica los diagramas de flujo con el nuevo nombre de Bit. Si responde afirmativamente Niple actualiza todos los bloques de todo el proyecto de manera automtica.

Adems de renombrar los bits de usuario, Niple le ofrece la posibilidad de cambiar el nombre de los bits correspondientes a los puertos. De sta manera puede identificar ms fcilmente los Pines del microcontrolador indicando directamente el nuevo nombre asignado. Por ejemplo: puede renombrar el Bit RA0 por Rele1 y a partir de entonces slo se refiere al mismo como Rele1.

Pgina 52 de 133

Niple v5.6 - Programacin Visual de Microcontroladores Insertar Bloques


Tenga en cuenta que cada bloque debe estar unido a otro bloque por medio de un vnculo (flecha). Esta flecha indica el sentido de ejecucin del programa. De sta manera se establece la secuencia y el orden en que va a ser ejecutado el programa. El vnculo lo puede realizar de forma manual o de forma automtica. Para que el vnculo se realice de forma automtica debe seleccionar el bloque previo antes de insertar el nuevo bloque. Niple supervisa de manera automtica los errores lgicos solo cuando los vnculos se realizan de manera automtica, o sea, cuando se inserta un nuevo bloque habiendo seleccionado previamente el bloque precedente. Cuando el vnculo se realiza de manera manual, no se realiza el chequeo automtico de errores. En este caso, Niple lo advierte a travs del siguiente mensaje.

Si elige la opcin NO se cancela la operacin de insercin de bloque. Si elige la opcin SI, Niple le permitir insertar un bloque, pero no se realizar el chequeo de errores en lnea dado que no es posible determinar el contexto en el cual ser insertado el nuevo bloque. Adems, el nuevo bloque ser insertado en la esquina superior derecha del diagrama de flujo y el vnculo deber realizarlo manualmente. Para insertar un bloque siga los siguientes pasos: 1) Seleccione el bloque al cual vincular el nuevo bloque a ser insertado. (Para generar el vnculo de manera automtica y chequear errores). 2) Haga doble clic para desplegar el rbol de Herramientas y localice la funcin de que necesite, desplegando y recorriendo el rbol de herramientas. 3) Una vez localizada la funcin que quiere insertar, haga doble clic en el nombre de la misma para cargar la pantalla con las opciones y parmetros de la funcin. Una vez seleccionadas las opciones e ingresados los parmetros, presione el botn Ingresar. 4) De sta manera se insertar el bloque y ser vinculado de manera automtica.

Pgina 53 de 133

Niple v5.6 - Programacin Visual de Microcontroladores

Pgina 54 de 133

Niple v5.6 - Programacin Visual de Microcontroladores Descripcin de las funciones


Los bloques se encuentran agrupados en distintos niveles organizados por categora para facilitar la bsqueda de un bloque en particular. En el primer nivel se organizan por tipo de funcin donde se encuentran los siguientes tems: 1) Instrucciones 2) Etiquetas 3) Rutinas Bsicas 4) Interrupciones 5) Subrutinas de Usuario

Instrucciones
Esta categora incluye todas instrucciones en Assembler. A su vez se organizan por tipo de instruccin:

El objetivo de Niple es utilizar lo menos posible los bloques de instrucciones ya que stos bloques equivalen a programar en cdigo Assembler.

Instrucciones orientadas a Registros

Parmetros: Instruccin: Registro: Destino: Instruccin a ejecutar. Nombre del registro a procesar. Indica en donde ser guardado el resultado de la operacin.

Pgina 55 de 133

Niple v5.6 - Programacin Visual de Microcontroladores Instrucciones orientadas a Bits

Parmetros: Instruccin: BIT: Instruccin a ejecutar. Indica el nombre del BIT a modificar.

Instrucciones orientadas a literales

Parmetros: Instruccin: Literal: Instruccin a ejecutar. Indica el valor Literal a procesar.

Instrucciones orientadas a Control


Algunas de las instrucciones orientadas a control son las siguientes:

Parmetros: Pgina 56 de 133

Niple v5.6 - Programacin Visual de Microcontroladores

Instruccin: Repetir:

Instruccin a ejecutar. Se refiere al nmero de NOP que sern insertados en el cdigo ASM.

Rutinas Bsicas
Las rutinas bsicas son mdulos prediseados y se encargan de resolver un proceso en particular (una configuracin, una comparacin, un clculo, etc.). Puede formar estructuras lgicas muy complejas de manera rpida y sencilla a partir de la combinacin de rutinas bsicas. Utilice las rutinas bsicas para programar dentro de cualquier Entorno. Las rutinas bsicas estn organizadas por tipo de rutina: Iniciar Programa: inserta el bloque de inicio del diagrama de flujo. Puertos: configurar, lectura y escritura de puertos. Asignar Valor: establecer valores a registros y bits. Modulo CCP: configurar el mdulo e implementar mdulos CCP. Comparadores Analgicos: implementar comparadores analgicos. EEPROM: leer y escribir la EEPROM interna del micro. Condicin: evaluar el valor de un registro o bit. Matemticas: clculos matemticos de 8, 16, 24 y 32 bits, conversiones a BCD y clculos de escalado de valores. Comunicaciones: RS232 RS485 - USB - ZIGBEE RF IR DMX512. Consultar Tablas: consultar valores por medio de tablas. Temporizadores: Temporizadores por ciclos y por mdulos TMR internos. Dispositivos: En esta pestaa se encuentran la totalidad de dispositivos externos declarados en la seccin Dispositivos. Procesos: generacin y medicin de Pulsos, clculo de Velocidad, RPM. Vector de memoria: seleccionar y utilizar vectores de memoria RAM.

Pgina 57 de 133

Niple v5.6 - Programacin Visual de Microcontroladores Iniciar Programa


Este bloque corresponde al inicio del programa en Assembler, debe estar presente en el entorno del Programa Principal y debe ser ingresado obligatoriamente. Por esto Niple lo inserta de manera automtica. Al bloque de Iniciar no puede ingresar ningn vnculo. Solo acepta un vnculo de salida.

Asignar Valor Asignar valor a un Bit


Esta funcin permite asignarle un valor a un BIT. Dado que un Bit representa un valor Binario, slo se le puede asignar un valor de 0 1. En el campo Bit se selecciona el nombre del BIT al cual se asignar el valor.

Una vez seleccionado el BIT, se muestra una lista de valores de asignacin (0 y 1). Seleccione el valor deseado. Por ltimo, puede ingresar un comentario adicionando a la funcin. Representacin grfica

Sintaxis Destino = Origen Esto se interpreta como: al Bit Destino se le asigna valor de Origen. Ejemplos

Pgina 58 de 133

Niple v5.6 - Programacin Visual de Microcontroladores

Al Bit RA0 se le asigna el valor 1.

Al Bit RA0 se le asigna el valor 0.

Asignar valor a un Registro


Esta funcin permite asignarle un valor constante o variable a un registro de 8, 16, 24 y 32 bits de tamao. En el campo Registro seleccione el registro al cual le asignar un valor, en la sintaxis corresponde al Destino.

Si desea asignarle un valor a un registro que an no ha sido declarado, mediante el botn Registros puede declarar el registro sin necesidad de cancelar la operacin actual. Una vez especificado el registro al cual asignar el valor, debe seleccionar que tipo de valor desea asignar. Las opciones disponibles son: Un valor Literal. Esto es, un valor constante. Niple controla de manera automtica el ingreso de literales, para obtener mayor informacin consulte el tema Conceptos Bsicos / Ingreso de Datos. El valor de otro registro. Esta opcin es equivalente a copiar el contenido de otro registro. Si en tiempo de ejecucin se modifica el contenido del registro, estamos frente a una asignacin de tipo variable. Al igual que con el campo registro, el botn Registros, le permite declarar un nuevo registro sin necesidad de cancelar la operacin. Por ltimo puede ingresar un comentario. Representacin grfica:

Sintaxis: Destino = Origen Esto se interpreta como: al registro Destino se le asigna el valor de Origen.

Pgina 59 de 133

Niple v5.6 - Programacin Visual de Microcontroladores


Ejemplos:

Al Registro Dato se le asigna el valor Decimal 00.

Al registro Dato se le asigna el valor Binario 11011101.

Al registro Dato se le asigna el valor que contiene el registro Dato1.

Configurar Puerto
En Niple, la configuracin de los puertos se realiza de manera totalmente visual. En la pantalla de configuracin del Puerto, se presenta una imagen del PIC con las descripciones de todos los pines. En cada pin correspondiente se muestra una lista desplegable, a travs de la cual el pin es configurado como entrada, entrada analgica, comparador o salida, las caractersticas de cada pin corresponde al modelo de PIC utilizado.

Pgina 60 de 133

Niple v5.6 - Programacin Visual de Microcontroladores Leer Puerto


Permite obtener el valor actual de un puerto y guardar el resultado en un registro. Es significa que, se obtiene el estado de cada pin correspondiente al puerto seleccionado. En el campo Puerto seleccione el puerto que desea Leer. Niple supervisa la configuracin del puerto seleccionado de manera automtica y advierte si el puerto no est completamente como Entrada. Si bien el hecho de leer el estado de un pin configurado como salida no es considerado un error, igualmente Niple le advierte para asegurarse que Ud. tiene pleno conocimiento de la actual configuracin.

Escribir Puerto
Permite escribir un valor en un puerto. Este valor puede ser un valor literal (constante) o el valor de un registro (variable). Seleccione el tipo de dato desea escribir en el puerto.

Niple supervisa la configuracin del puerto seleccionado de manera automtica y advierte si el puerto no est completamente como Salida. Si bien el hecho de escribir un pin configurado como entrada no es considerado un error, igualmente Niple le advierte para asegurarse que Ud. tiene pleno conocimiento de la actual configuracin. Una vez ingresado los datos solicitados presione el botn Ingresar.

Pgina 61 de 133

Niple v5.6 - Programacin Visual de Microcontroladores


Representacin grfica

Sintaxis Puerto = Valor Esto se interpreta como: en Puerto escribir Valor. Donde: El parmetro Puerto muestra el nombre del puerto: A = Puerto A B = Puerto B C = Puerto C D = Puerto D El parmetro Valor corresponde a un registro (valor variable) o a un literal (valor constante). Ejemplos

Escribir el valor que contiene el registro contador en el puerto B.

Escribir el valor constante B10001111 en el puerto B.

Pgina 62 de 133

Niple v5.6 - Programacin Visual de Microcontroladores Conversin Analgica/Digital (A/D) Configuracin de los canales A/D
Cuando el micro utilizado dispone de Conversores Analgico/Digital puede configurarlos desde la configuracin del puerto.

Seleccione el valor de V Ref (voltaje de referencia) la cula puede ser interna (Vdd y Vss) o externa por medio de determinados pines segn el modelo de microcontrolador a utilizar. Si elige algn voltaje de referencia como externo, el pin correspondiente es inhabilitado en la pantalla para que no pueda ser utilizado como entrada o como salida. Una vez seleccionada la configuracin deseada, presione el botn Ingresar. Antes de insertar el bloque, Niple chequea que la configuracin seleccionada corresponda a una de las combinaciones vlidas, ya que en algunos modelo de de microcontrolador debe utilizar las entradas AD con determinada configuracin.

Conversin A/D
Una vez configurado el mdulo A/D, est en condiciones de realizar una conversin A/D. Ingrese al rbol de herramientas y seleccione la opcin Rutinas Bsicas / Conversin A/D.

Pgina 63 de 133

Niple v5.6 - Programacin Visual de Microcontroladores


Se presenta la pantalla Conversin Analgica / Digital. En esta pantalla se muestra toda la informacin relacionada con el estado actual del mdulo de conversin A/D. Esto es: Configuracin actual del puerto Cantidad de canales A/D disponibles

Seleccione el canal A/D que desea utilizar. La lista desplegable llamada Canal a Leer contiene todos los canales A/D que se encuentra disponibles. En esta lista se muestra el nmero de canal junto al correspondiente nombre de Bit. De esta manera, Niple le facilita la identificacin del Pin adecuado. Para eliminar completamente la posibilidad de seleccionar un pin del Puerto que no hubiera sido configurado como Entrada A/D, Niple muestra en la lista, slo los canales que actualmente estn disponibles de acuerdo a la configuracin actual del puerto.

Una vez seleccionado el canal por el cual realizar la conversin A/D, Niple le solicita que seleccione una de las 2 maneras que tiene de realizar la conversin. Las explicaremos brevemente. Una conversin A/D puede realizarse de 2 maneras:

1) Mediante un bucle; esperando hasta que finalice la conversin: El PIC no realiza ninguna otra tarea que no sea esperar a que el BIT go_done (BIT 2 del registro adcon0) se ponga en 0, lo cual indica que la conversin ha finalizado.

2) Iniciar la conversin y generar una interrupcin al finalizar la conversin A/D: El PIC inicia la conversin y contina ejecutando el resto del cdigo mientras se realiza la conversin A/D. Cuando termina de realizar la conversin se produce una interrupcin por Fin de Conversin A/D.

Pgina 64 de 133

Niple v5.6 - Programacin Visual de Microcontroladores


De esta manera si desea realizar la conversin y cuando esta finalice genere una interrupcin por fin de conversin tilde la siguiente opcin:

Continuacin seleccione los registros donde guardar el resultado de la conversin A/D. Puede realizar conversiones AD a 8 o 10 Bits de resolucin. Si selecciona la resolucin a 8 bits, el sistema configura de manera automtica la alineacin del resultado de la medicin hacia la izquierda y toma como resultado el registro Alto, ignorando los 2 bits menos significativos.

Si selecciona la resolucin a 10 bits, el sistema configura automticamente la alineacin del resultado de la medicin hacia la derecha y toma como resultado los 2 registros de la conversin A/D.

Niple le permite realizar varias lecturas y promediarlas con lo cual se obtienen mediciones ms estables.

Pgina 65 de 133

Niple v5.6 - Programacin Visual de Microcontroladores

Para esto, active la opcin Promedio. Seleccione la cantidad de mediciones que desea realizar. Niple realiza todas las lecturas y realiza el promedio de manera automtica. Niple le da la opcin de esperar un tiempo entre las mediciones seleccionadas.

Si elige la opcin Generar una interrupcin al finalizar la conversin, Niple chequea de forma automtica el estado de los siguientes habilitadores de interrupciones: GIE (Habilitador general de interrupciones) PEIE (Habilitador general de interrupciones por perifricos, a los cuales pertenece el mdulo de conversin A/D). ADIE (Interrupcin por Fin de Conversin A/D)

Si alguno de los habilitadores anteriormente mencionados NO se encuentra Activado, Niple ofrece la opcin de activarlo para que la interrupcin se produzca normalmente. De lo contrario, la interrupcin no se producir. El modo de conversin por interrupcin no permite realizar el promedio automtico.

Si decide no activar estos habilitadores, la interrupcin no se producir y por ende, el fin de la conversin A/D no ser detectado.

Pgina 66 de 133

Niple v5.6 - Programacin Visual de Microcontroladores


Representacin grfica:

Sintaxis: Registro1, Registro2 = A/D(Nro_Canal) Donde: Registro1 = Nombre de un Registro Registro2 = Nombre de un Registro Nro_Canal = Nmero de canal en el cual se realiza la conversin A/D. Ejemplos:

A los registros Dato1 y Dato2 se asigna el resultado de la conversin A/D.

Genera una interrupcin la finalizar la conversin A/D.

Pgina 67 de 133

Niple v5.6 - Programacin Visual de Microcontroladores EEPROM Declaracin de Registros EEPROM


Puede declarar registros en la memoria EEPROM del PIC para poder acceder a las diferentes dicciones a travs de un nombre de registro.

Se muestra la pantalla de declaracin de registros EEPROM.

La metodologa de declaracin de registros es la misma que para la declaracin de Registros RAM.

Leer EEPROM
Lee un dato de la memoria EEPROM del microcontrolador y lo guarda en un registro. Seleccione entre las opciones de direccin Fija o Variable. Si elige la opcin Fija, seleccione de la lista el registro en donde est contenida la direccin. En la lista Registro donde guardar el dato, seleccione el registro destino. Pgina 68 de 133

Niple v5.6 - Programacin Visual de Microcontroladores

Presione el botn ingresar. Si el registro en el que desea guardar los datos no existe, haga clic en Nuevo.

Grabar EEPROM
Graba un literal o un registro en la memoria EEPROM del microcontrolador. En posicin de memoria a escribir, seleccione entre las opciones de direccin Fija o Variable. Si elige la opcin variable, seleccione de la lista el registro en donde est contenida la direccin. En Valor a grabar, seleccione entre las opciones un literal o un registro. Si selecciona la opcin un registro, seleccione de la lista el registro que desea guardar en la EEPROM

Presione le botn Ingresar. Si el registro en el que desea guardar los datos no existe, haga clic en Nuevo.

Pgina 69 de 133

Niple v5.6 - Programacin Visual de Microcontroladores Condicin


Las funciones lgicas permiten realizar evaluaciones (comparaciones) de registros y bits con valores literales (constantes) o con los valores contenidos en otros registros y bits (variables).

Comparar Bit
Este bloque evala si el valor del BIT seleccionado es 0 o 1 y deriva el flujo del proceso en funcin del resultado de la evaluacin. En el campo BIT a evaluar, seleccione el nombre BIT del que desea comparar el valor y a continuacin seleccione el valor con el cual comparar el BIT. Un BIT solo puede contener los valores 0 y 1. Por ltimo, puede ingresar un comentario al bloque. Una vez seleccionados todos los datos, presione el botn Ingresar.

Este bloque debe ser vinculado a 2 bloques de salida: El primer bloque de salida insertado corresponde a la salida SI, es decir que, en tiempo de ejecucin el proceso tomar este camino si el resultado de la evaluacin es verdadero. El segundo bloque de salida insertado corresponde a la salida NO, es decir que, en tiempo de ejecucin, el proceso tomara este camino si el resultado de la evaluacin es falso.

Pgina 70 de 133

Niple v5.6 - Programacin Visual de Microcontroladores Comparar Registro (8 Bits)


Evala el valor de un registro, utilizando como valor de comparacin un literal o el valor de otro registro. En la lista Registro a evaluar, seleccione el registro que desea comparar. A continuacin seleccione el operador de comparacin. Un registro puede ser comparado con un valor literal (constante) o con el valor de otro registro (variable). Seleccione el tipo de valor de comparacin marcando en la casilla de opcin correspondiente Si selecciona la opcin un Registro, seleccione de la lista el registro que contiene el valor de comparacin, de lo contrario, ingrese el valor literal de comparacin. Por ltimo puede ingresar un comentario al bloque. Un a vez ingresados todos los datos solicitados, presiones el botn OK.

Los operadores de comparacin posibles pueden ser =, <, >, <=, >= o <> (distinto de).

Cada vez que debe seleccionar el nombre de un registro y ha olvidado declararlo previamente, Niple le ofrece la posibilidad de declararlo sin necesidad de cancelar la pantalla actual. Para esto presione el botn Registros que se encuentra a la derecha de la lista de registros correspondiente. Este bloque debe ser vinculado a 2 bloques de salida: El primer bloque de salida insertado corresponde a la salida SI, es decir que, en tiempo de ejecucin el proceso tomar este camino si el resultado de la evaluacin es verdadero. El segundo bloque de salida insertado corresponde a la salida NO, es decir que, en tiempo de ejecucin, el proceso tomara este camino si el resultado de la evaluacin es falso.

Pgina 71 de 133

Niple v5.6 - Programacin Visual de Microcontroladores

Comparar Registro (16 Bits)


Evala un valor formado por 2 registros (valor a 16 bits), utilizando como valor de comparacin un literal comprendido entre 0 y 65535, o comparndolo con el valor formado por otros 2 registros (16 bits). En la lista Registros a evaluar, seleccione los registros que desea comparar. A continuacin seleccione el operador de comparacin. La comparacin puede realizarla con respecto a un valor literal (constante) o con el valor de otros 2 registros (variable). Seleccione el tipo de valor de comparacin marcando en la casilla de opcin correspondiente. Si selecciona la opcin Registros, seleccione de la lista los registros que contienes el valor de comparacin, de lo contrario, ingrese el valor literal de comparacin. Por ltimo puede ingresar un comentario al bloque. Un a vez ingresados todos los datos solicitados, presiones el botn OK.

Los operadores de comparacin posibles pueden ser =, <, >.

Cada vez que debe seleccionar el nombre de un registro y ha olvidado declararlo previamente, Niple le ofrece la posibilidad de declararlo sin necesidad de cancelar la pantalla actual. Para esto presione el botn Registros que se encuentra a la derecha de la lista de registros correspondiente. Este bloque debe ser vinculado a 2 bloques de salida:

Pgina 72 de 133

Niple v5.6 - Programacin Visual de Microcontroladores


El primer bloque de salida insertado corresponde a la salida SI, es decir que, en tiempo de ejecucin el proceso tomar este camino si el resultado de la evaluacin es verdadero. El segundo bloque de salida insertado corresponde a la salida NO, es decir que, en tiempo de ejecucin, el proceso tomar este camino si el resultado de la evaluacin es falso.

Comparar Registros de 24 y 32 Bits


Al igual que comparar registros de 16 Bits Niple en la nueva versin dispone de comparacin y manejo de registros de 24 y 32 Bits.

Pgina 73 de 133

Niple v5.6 - Programacin Visual de Microcontroladores Matemticas


Puede realizar clculos de suma, resta, multiplicacin y divisin a 8, 16, 24 y 32 bits. La metodologa es la misma para los diferentes tamaos de registro.

Suma
Realiza una operacin matemtica de Suma, utilizando como sumandos un valor literal o un registro. El resultado es guardado en otro registro. En Sumando1 seleccione entre las opciones un literal o el valor de un Registro. Si seleccion la opcin el valor de un Registro, seleccione de la lista el registro a utilizar como Sumando1. Repita la operacin anterior en Sumando2. En Resultado, seleccione el registro donde desea guardar el resultado de la operacin.

Pgina 74 de 133

Niple v5.6 - Programacin Visual de Microcontroladores

Resta
Realiza una operacin matemtica de sustraccin, utilizando como minuendo y sustraendo un valor literal o un registro. El resultado es guardado en otro registro. En minuendo seleccione entre las opciones un literal o el valor de un Registro. Si seleccion la opcin el valor de un Registro, seleccione de la lista el registro a utilizar como minuendo. Repita la operacin anterior en sustraendo. En Resultado, seleccione el registro donde guardar el resultado de la sustraccin. Haga clic en OK.

Pgina 75 de 133

Niple v5.6 - Programacin Visual de Microcontroladores

Divisin
Realiza una operacin matemtica de divisin, utilizando como divisor valores de un literal o un registro. El resultado es guardado en otro registro. En Dividendo seleccione entre las opciones un literal o el valor de un Registro. Si seleccion la opcin el valor de un Registro, seleccione de la lista el registro a utilizar como Dividendo. Repita la operacin anterior en Divisor. En Resultado, seleccione el registro donde guardar el resultado de la division

Pgina 76 de 133

Niple v5.6 - Programacin Visual de Microcontroladores

Multiplicacin
Realiza una operacin matemtica de Multiplicacin con registros o valores a 8 bits, utilizando como multiplicador valores de un literal o un registro. El resultado es guardado en un registro. En Multiplicando seleccione entre las opciones un literal o el valor de un Registro. Si seleccion la opcin el valor de un Registro, seleccione de la lista el registro a utilizar como Multiplicando. Repita la operacin anterior en Multiplicador. En Resultado, seleccione el registro donde guardar el resultado de la multiplicacin.

Pgina 77 de 133

Niple v5.6 - Programacin Visual de Microcontroladores

Incrementar 1
Puede realzar incrementos de registros de manera automtica, Niple incrementa el valor del registro y controla el acarreo en caso de tratarse de registros mayores a 8 bits.

Esta opcin se trata de un clculo muy rpido y adems ofrece diferentes opciones para control de contadores totalmente automatizado.

Pgina 78 de 133

Niple v5.6 - Programacin Visual de Microcontroladores

La opcin Controlar valor mximo le permite automatizar la cuenta hasta un mximo ingresado por el usuario. Una vez alcanzado el valor mximo, ya no sigue incrementando el valor de la cuenta. La opcin Reiniciar cuenta le permite volver a inicializar el estado de la cuenta a un valor ingresado por el usuarios una vez que se alcanzo el mximo permitido. La opcin Activar Bit al llegar la mximo inserta un bloque de comparacin donde se evala un bit seleccionado por el usuario el cual se pone en 1 cuando la cuenta llego a la mximo. De esta manera se puede controla el flujo del programa segn el contador haya llegado al lmite mximo o no. Estas opciones, trabajando en conjunto le permiten realizar estructuras lgicas muy complejas en pocos pasos.

Decrementar 1
Puede realzar decrementos de registros de manera automtica, Niple decrementa el valor del registro y controla el acarreo en caso de tratarse de registros mayores a 8 bits.

Pgina 79 de 133

Niple v5.6 - Programacin Visual de Microcontroladores

Pgina 80 de 133

Niple v5.6 - Programacin Visual de Microcontroladores Dec a BCD


Realiza el clculo de conversin de un nmero a BCD, es decir, descomponer el valor contenido en un registro a unidad, decena y centena. Seleccione el registro que contiene el valor a descomponer. Seleccione los registros donde desea almacenar el resultado de la descomposicin a U, D y C.

Pgina 81 de 133

Niple v5.6 - Programacin Visual de Microcontroladores Escalar


La funcin Escalar permite, a partir de un valor dentro de un rango origen, calcular el valor proporcional correspondiente a un rango destino. Por ejemplo: Los registros Dato1 y Dato2 contienen el resultado de una conversin A/D, es decir, un valor a 10 bits entre 0 y 1023. Ahora suponga que desea controlar el ancho de pulso del PWM a 5000 Hz. El ancho de pulso es controlado por medio de un valor a 10 bits contenido en los registros AnchoPulso1 y AnchoPulso2. A 5000 Hz el rango vlido para el control del ancho de pulso esta comprendido entre 0 y 200. Partiendo de esto, Ud. necesita escalar el valor contenido en los registros Dato1 y Dato2 de un rango 0..1023, a un rango 0..200 y asignarlo a los registros AnchoPulso1 y AnchoPulso2. De esta manera se obtiene un valor proporcional, es decir, el mismo porcentaje o relacin entre el rango de destino con respecto al rango de origen.

Pgina 82 de 133

Niple v5.6 - Programacin Visual de Microcontroladores RS232


El protocolo RS232 es utilizado para comunicacin con el puerto serial de las computadoras (puertos COM). Este mdulo le permite enviar datos mediante el protocolo de comunicacin RS232 ya sea a otros microcontroladores o a una PC. Para configurar y activar una comunicacin RS232, ingrese a la seccin Dispositivos/Comunicaciones. Seleccione de la lista de tipos de protocolos la opcin RS232.

Seleccione el tipo de comunicacin a realizar la cual puede ser mediante mdulo USART. La USART es un mdulo de comunicaciones que algunos modelos de microcontroladores incluyen. Por medio del mdulo USART, todo el procedimiento de envo de los datos se realiza de manera automtica. Mediante el modo de envo por cdigo, se genera el cdigo Assembler necesario para realizar el envo de los datos.

La diferencia radica en que el mdulo USART prepara el dato e inicia el envo y luego vuelve a seguir ejecutando el resto del cdigo del programa sin necesidad de realizar todo el proceso de envo del dato ya que este se realiza de manera automtica y en forma paralela a la ejecucin del resto del programa. Mientras que si se realiza por cdigo, la ejecucin del programa realiza todo el proceso de envo del dato. Pgina 83 de 133

Niple v5.6 - Programacin Visual de Microcontroladores

Si selecciona el modo de envo por USART, el sistema selecciona de manera automtica el pin de transmisin correspondiente. Este pin no puede ser modificado dado que el mdulo USART utiliza un determinado pin para el envo de datos. Si selecciona el modo de envo por Cdigo, el sistema le solicita que seleccione el pin de transmisin por el cual quiere realizar la comunicacin.

A continuacin debe seleccionar la velocidad de comunicacin. Por ltimo seleccione el botn ingresar y ya habr creado el bus de comunicacin RS232.

Para llamar en el programa principal a la rutina enviar datos por RS232, debe ingrese al rbol de herramientas y al apartado comunicaciones dentro de rutinas bsicas. Luego debe seleccionar el nombre del bus que creo en la pantalla dispositivos y configurar la accin.

En el caso de seleccionar la Accin Enviar, Niple le mostrara la siguiente ventana donde debe especificar, si desea la identificacin del equipo del destino, la cantidad de bytes a enviar y de que tipo es el dato a enviar ya sea un literal o un registro.

Pgina 84 de 133

Niple v5.6 - Programacin Visual de Microcontroladores

Por ltimo presione el botn Ingresar. En el caso de configurar la comunicacin en modo de recepcin de datos, debe especificarse parmetros similares al envo de datos y debe seleccionarse el registro donde guardar los datos recibidos.

Pgina 85 de 133

Niple v5.6 - Programacin Visual de Microcontroladores RS485


La comunicacin RS485 le permite conectar varios microcontroladores en red. Generalmente una red de microcontroladores est formada por un micro llamado Maestro, el cual se encarga de organizar el funcionamiento de la red, enviando comandos y solicitando informacin al resto de los de micros denominados esclavos. En general, los dispositivos esclavos responden enviando los datos solicitados por el maestro o ejecutan comandos enviados por el maestro. Una red 485 puede estar formada por hasta 256 dispositivos esclavos a una distancia mxima aprox. de 1200 metros y cada dispositivo esclavo debe estar identificado por un nmero de dispositivo. En general, el micro maestro es un modelo de micro grande y se encarga de realizar los procesos principales (Ingreso de datos al sistema, interfaz con el usuario, LCD, display de 7 segmentos, conexin a PC, etc.) mientras que los dispositivos esclavos, generalmente son micros ms pequeos que realizan los procesos distribuidos, es decir, los procesos locales propios de cada punto de control y pueden contar con un alto grado de autonoma. Niple soporta la interfaz DS75176 para realizar las comunicaciones RS485. La comunicacin RS485 requiere de 3 pines: un pin de Transmisin (TX), configurado como salida un pin de Recepcin (RX), configurado como entrada un pin de control de TX/RX de la interfaz DS75176 configurado como salida Cuando un microcontrolador en modo Maestro solicita datos a otro microcontrolador en modo Esclavo las interfaces (DS75176) de ambos micros deben conmutar a modo Transmisin y Recepcin respectivamente y si el esclavo debe responder con algn dato al maestro, ambos micros deben cambiar el estado de sus interfaces (Maestro en modo recepcin y Esclavo en modo Transmisin) mediante el pin de control del la interfaz (DS75176). Y cuando termine el envo de datos al maestro, deben volver a conmutar el modo de sus interfaces al estado inicial. Niple coordina de manera automtica el cambio de modo de trabajo (TX/RX) de las interfaces. A continuacin se muestra un esquema de la estructura de un proyecto tpico de implementacin de una red RS485.

Pgina 86 de 133

Niple v5.6 - Programacin Visual de Microcontroladores

Modo Maestro
Para ingresar a los mdulos de RS485 ingrese a la pestaa dispositivos/comunicaciones. Luego en la pestaa dispositivos, dirjase a la pestaa comunicaciones: Y seleccione como tipo de BUS RS485.

Seleccione el modo de comunicacin, por mdulo USART o por cdigo. NO todos los modelos de microcontroladores disponen de un modulo USART.

Pgina 87 de 133

Niple v5.6 - Programacin Visual de Microcontroladores

Si selecciona el modo de comunicacin por USART, Niple selecciona de manera automtica los pines correspondientes a TX y RX e inhabilita los mismos, dado que los mismos ya vienen preestablecidos para ser utilizados por el mdulo USART. Luego seleccione la velocidad de comunicacin.

Una vez creado el mdulo de comunicacin RS485, ingrese al rbol de herramientas y seleccione comunicaciones, una vez seleccionado pedir que seleccionemos el tipo de comunicacin creado.

Inicialice el modulo RS485. Una vez inicializado el Bus 485, tendremos que configurar en el caso de elegir la accin enviar las opciones como: Identificacin del destino Cantidad de Bytes a enviar Datos a enviar

Pgina 88 de 133

Niple v5.6 - Programacin Visual de Microcontroladores


Opcionalmente puede seleccionar un ID de destino. Esto es ideal para trabajar en una RED 485 donde cada dispositivo esclavo es identificado por medio de un cdigo ID. Para interpretar mejor cada una de las funciones disponibles, aclaramos los significamos que damos a las siguientes palabras: Enviar: Enviar una orden a un esclavo a partir de la cual el esclavo realiza una determinada accin pero esta accin no incluye el envo de una respuesta desde el esclavo hacia el maestro. Interrogar: Solicitar un dato a un esclavo, en general el esclavo responde inmediatamente sin realizar ningn proceso antes de enviar los datos solicitados.

Habiendo explicado la accin enviar pasamos a la accin Recibir: Recibir datos: Recibe datos desde un esclavo.

Seleccione el registro donde guardaremos los datos y la cantidad de bytes que tiene ese dato. Interrogar Como detallamos anteriormente la funcin interrogar solicita un dato a un esclavo, en general el esclavo responde inmediatamente sin realizar ningn proceso antes de enviar los datos solicitados. Para eso seleccionamos la accin Interrogar.

Pgina 89 de 133

Niple v5.6 - Programacin Visual de Microcontroladores Tablas


Una tabla consiste en una metodologa de programacin a travs de la cual se pueden realizar consultas obteniendo un valor de resultado en funcin de un valor de entrada (ndice). Por ejemplo: la siguiente tabla devuelve el cdigo ASCII correspondiente al valor ingresado como ndice. ndice 0 1 2 3 4 5 6 7 8 9 Valor Resultado D48 D49 D50 D51 D52 D53 D54 D55 D56 D57

El procedimiento consiste en sumar al registro contador de programa (registro PCL) el valor correspondiente al ndice, esto produce que la ejecucin del programa salte la cantidad de posiciones correspondiente al valor del ndice. Para que la tabla devuelva un valor para cada tem, la tabla debe estar formada por instrucciones RETLW (retorno de subrrutina con un valor en W) y debe ser llamada mediante una instruccin CALL. En el siguiente ejemplo en cdigo Assembler se describe el principio de funcionamiento de una consulta por tabla.

Pgina 90 de 133

Niple v5.6 - Programacin Visual de Microcontroladores Crear una nueva tabla


Niple incluye un generador de tablas en el cual Ud. declara la tabla y luego la graba como un archivo con extensin TBL. De esta manera Ud. puede crear su propia librera de tablas. Para crear una tabla ingrese al men Declaracin / Generador de tablas / Tabla estndar. Niple le muestra la pantalla de declaracin de tablas y solicita que ingrese el nombre de la tabla. Cada tabla debe tener su correspondiente nombre. Una vez ingresado el nombre debe proceder a ingresar los valores de los distintos elementos que componen la tabla. Los valores de los ndices se incrementan de manera automtica ya que no debe saltearse ninguno de ellos. Para ingresar nuevos elementos a la tabla presione el botn Agregar un valor.

Si detecta de ha cometido un error al ingresar alguno de los valores de la tabla, puede editarlo haciendo doble clic sobre el elemento a corregir.

Una vez ingresados todos lo valores que conforman la tabla presione el botn Ingresar. Al presionar el botn Ingresar Niple guarda la tabla actual en un archivo con extensin .TBL A continuacin le solicita que ingrese el nombre del archivo de tabla. De esta manera podr utilizar la tabla recin creada en distintos proyectos sin necesidad de volver a declararla cada vez que la necesite.

Pgina 91 de 133

Niple v5.6 - Programacin Visual de Microcontroladores Consultar Tabla


Carga una tabla, la cual debe haber sido previamente definida. Haga clic en Cargar Tabla. Seleccione el archivo de tabla que desea consultar, haga clic en Abrir. Aparecer una pantalla con el detalle de los datos de la tabla. En Valor a buscar, seleccione el registro que contiene el valor del puntero de la tabla. En Resultado, elija el registro en donde desea guardar el dato devuelto por la tabla.

Haga clic en Ingresar.

Pgina 92 de 133

Niple v5.6 - Programacin Visual de Microcontroladores

Temporizadores Tiempos por Bucles


Niple le permite realizar temporizaciones tanto Fijas o Variables. Con la temporizacin Fija puede genera temporizaciones entre 10 Microsegundos y 255 Segundos con una precisin de 1 uS. En Tiempo de espera, escriba el valor de tiempo que desea. Seleccione la unidad de tiempo que desee de la lista. Haga clic en Ingresar.

Pgina 93 de 133

Niple v5.6 - Programacin Visual de Microcontroladores Display de 7 segmentos sin Codificador Declaracin del Dispositivo
Este mdulo permite visualizar valores en displays de 7 segmentos mediante conexin a 7 bits, es decir, sin la utilizacin de un codificador para generar la combinacin binaria correspondiente a cada valor. Niple le permite utilizar hasta 16 displays conectados en paralelo. Primero seleccione el tipo de display a utilizar, esto es: nodo Comn o Ctodo Comn.

Luego le solicita que seleccione la cantidad de displays a utilizar esto es, entre 2 y 16.

Una vez configurado los pines de datos, cantidad de dgitos y los pines de Display, oprimimos el botn ingresar.

Display de 7 segmentos con Codificador Declaracin del Dispositivo


Puede implementar la utilizacin de Displays de 7 segmentos por medio de un codificador CD4511 para Displays Ctodo Comn y el codificador 74LS47 para Displays nodo Comn. De esta manera puede ahorrar 3 pines en el microcontrolador para poder utilizarlos para otras funciones.

Pgina 94 de 133

Niple v5.6 - Programacin Visual de Microcontroladores


Seleccione el tipo de Display a utilizar, los pines correspondientes al bus y luego selecciona la cantidad de Displays a utilizar y sus respectivos pines.

Una vez seleccionados todos los parmetros de configuracin presione el botn aceptar.

Implementacin en el Diagrama de Flujo


Tanto para Displays de 7 segmentos con o sin codificador la metodologa de implementacin en el diagrama de flujo es la misma: Ingrese al rbol de herramientas: Rutinas/Dispositivos/Visualizacin/Display de 7 segmentos.

Pgina 95 de 133

Niple v5.6 - Programacin Visual de Microcontroladores


Se muestra la pantalla de visualizacin en Displays de 7 segmentos.

En cada Display se puede visualizar el valor de un registro o un valor literal. Para seleccionar el valor a visualizar en cada dgito debe hacer un doble clic en cada imagen de display. Al hacer doble clic en la imagen de un display se presenta la pantalla de Mostrar un valor en un Display. En un Display puede visualizar 2 tipos de valores: 1) Puede visualizar el valor que contiene un registro: se trata de un valor que puede ser variable. Al seleccionar este tipo de dato a visualizar, Niple le ofrece la posibilidad de codificar el valor mediante una tabla. Si el dato a visualizar requiere codificacin mediante tabla, seleccione la tabla.

Pgina 96 de 133

Niple v5.6 - Programacin Visual de Microcontroladores


2) O puede visualizar un valor constante (un valor literal): en este caso se muestra siempre el mismo valor. Al seleccionar la opcin un valor constante, Niple presenta una imagen del display en el cual debe hacer un clic en cada barra que quiere visualizar iluminada. De esta forma puede generar el nmero o smbolo que desea visualizar. Niple genera el cdigo binario correspondiente de manera automtica. Este cdigo binario vara si se trata de un display tipo nodo comn o Ctodo comn, Niple controla el cdigo generado segn el tipo de Display.

Una vez seleccionados los datos a mostrar en los Displays debe seleccionar le tipo de multiplexado que desea realizar. Tiene 2 opciones: por Bucles o por Paso. La opcin por Bucles hace que el microcontrolador se detenga en esta parte del programa y realice todo el proceso de multiplexado completo mostrando los valores de cada Displays y no continua con la ejecucin del resto del programa hasta que no haya terminado de realizar este proceso.

Las opciones de este tipo de multiplexado son: Repeticiones: corresponde a la cantidad de veces que realiza el ciclo de visualizacin de todos los Displays. Tiempo: tiempo en uS que demora cada Diplays encendido en el proceso de multiplexado.

El tipo de multiplexado por Paso muestra el valor correspondiente a uno de los Displays (por ejemplo el Display 1) y continua con el resto del programa. Cuando vuelve a pasar por este en el siguiente ciclo del programa activa el siguiente Displays y contina con la ejecucin del resto del programa.

Pgina 97 de 133

Niple v5.6 - Programacin Visual de Microcontroladores


Esta opcin es ideal para realizar un multiplexado por medio de un temporizador interno (TMR) donde cada vez que se produce la interrupcin por TMR se ejecuta el bloque y va activando 1 Display en cada interrupcin. As puede realizar un multiplexado mientras realiza otros procesos de manera simultnea. Esta metodologa de implementacin del multiplexado por paso y por temporizando por medio de una interrupcin TMR es la opcin recomendada para realizar visualizaciones de manera profesional. Opcionalmente Niple le permite Ocultar o Encender los dgitos con 0 a la izquierda. Niple controla automticamente cuando debe mostrar u ocultar un digito en funcin del valor total a mostrar.

Pgina 98 de 133

Niple v5.6 - Programacin Visual de Microcontroladores Pantalla LCD


Niple le permite controlar ms de 1 pantalla LCD de manera simultnea en el mismo proyecto. Esto es se logra conectando las pantallas LCD en paralelo y los pines de control de cada pantalla se asignas a distintos pines del microcontrolador. Niple administra las rutinas de control de manera automtica. Ud., solo de indica que mensaje desea visualizar en cada una de las pantallas LCD. Como siempre, en Niple, tanto las configuraciones de las pantallas LCD, las configuraciones y diseos de los de los mensajes y los comandos se realiza de manera visual y en alto nivel de programacin. Niple genera todo el cdigo Assembler necesario de manera automtica.

Pgina 99 de 133

Niple v5.6 - Programacin Visual de Microcontroladores


Principales caractersticas: Control de mltiples Pantallas LCD de manera simultanea. Configuracin visual de mensajes. Bus de datos a 4 y 8 bits configurable por el usuario. Mensajes con valores variables. Conversin automtica de formato numrico a cdigo ASCII para valores variables. Edicin y ajuste de mensajes y comandos de manera visual. Envo de comandos al LCD: Apagar la Pantalla Encender la Pantalla Limpiar la pantalla Ubicacin del cursor a Inicio Ubicacin del cursor Configuracin del Cursor Desplazamiento del cursor Desplazamiento de la Pantalla Envo de caracteres al LCD de manera independiente de un mensaje (para ingreso de datos) Cdigo Assembler optimizado: Cuando actualiza un mensaje en un LCD, si el mensaje contiene valores variables, Niple solo actualiza las variables en lugar de volver a cargar todo el mensaje nuevamente. De esta manera Niple le ahorra tiempo durante la ejecucin del programa. Para utilizar un LCD debe realizar los siguientes pasos: 1. Configurar el Puerto donde conectar el LCD 2. Configurar el LCD 3. Generar el mensaje 4. Visualizar el mensaje 5. Opcionalmente se pueden enviar comandos o caracteres independientemente de un mensaje.

Configurar LCD
Una vez configurado el puerto donde conectar el LCD debe proceder a configurar el LCD de la siguiente manera: Seleccione el bloque al cual vincular el nuevo bloque de configuracin de LCD. Ingrese a la pestaa dispositivos: Nuevo dispositivo/LCD

Pgina 100 de 133

Niple v5.6 - Programacin Visual de Microcontroladores


En Niple, la configuracin de un LCD consiste en seleccionar de qu manera ser conectado el LCD al microcontrolador. La configuracin de un LCD se realiza slo 1 vez. Dado que Niple puede controlar ms de 1 LCD de manera simultanea, en esta pantalla se presenta el nmero de LCD que est siendo configurado.

Primero debe seleccionar el tipo de display lcd ya sea 16x2, 20x2 o 20x4 luego debe seleccionar el tamao del bus de datos, el cual puede ser de 4 u 8 bits. Se recomienda utilizar el bus de datos a 4 bits dado que la diferencia con el bus a 8 bits es insignificante tanto en el cdigo generado como en le tiempo de ejecucin del programa y, por el contrario, los 4 pines que se ahorra pueden ser de gran importancia.

Una vez seleccionado el tamao del bus de datos, debe seleccionar los pines a los cuales conectar el LCD. Si selecciona el bus de datos a 4 bits, Niple le ofrece la posibilidad de utilizar los 4 pines de mayor o menor peso de un mismo puerto. Esto simplifica el cdigo Assembler generado. Adems, indica en la imagen del LCD los pines que deben ser conectados.

Pgina 101 de 133

Niple v5.6 - Programacin Visual de Microcontroladores


Si selecciona el bus de datos a 8 pines, Niple utiliza un puerto completo. Si ha seleccionado el bus de datos a 4 bits, Niple le solicitar que seleccione los pines correspondientes. Si ha seleccionado el bus de datos a 8 bits, Niple asignar al bus de datos, todos los pines del puerto seleccionado. Por ltimo debe seleccionar los pines del control del LCD. Para esto haga un clic en la casilla de verificacin correspondiente a cada pin de control (RS, RW, E).

Una vez ingresados todos los datos solicitados, presione el botn Ingresar. Luego dirjase a la seccin diagrama y vaya al rbol de herramientas Rutinas bsicas/Dispositivos/Visualizacin/Pantalla LCD. La configuracin de la pantalla LCD se realiza solo una vez en un proyecto.

Utilizando ms de una pantalla LCD


Niple le permite controlar ms de una pantalla LCD. Para esto, los pines correspondientes al bus de datos y los pines de control RS y RW de las pantallas a utilizar deben estar conectados en paralelo. Solo debe conectar de manera independiente los pines correspondientes al control E de las pantallas. El pin E de un LCD es el encargado de habilitar e inhabilitar una pantalla LCD. De esta manera Niple habilita e inhabilita las distintas pantallas LCD de manera automtica de acuerdo al programa que Ud. est desarrollando. Si desea utilizar ms de un LCD, el mismo debe ser creado y configurado desde la pestaa Dispositivos/LCD Recuerde de conectar el display LCD en paralelo con los dems LCD y slo deber cambiar el pin correspondiente al control E para el nuevo LCD.

Pgina 102 de 133

Niple v5.6 - Programacin Visual de Microcontroladores


Seleccione el BIT correspondiente al pin de control E del LCD. Por ltimo presione la el botn Ingresar. Cuando termine de configurar la cantidad de dispositivos LCD que desee utilizar, debe ingrese al diagrama principal y luego debe ir a el rbol de herramientas para inicializar las pantallas LCD.

Al inicializar las pantallas se le crearan los siguientes iconos en el programa principal:

Generar un nuevo mensaje


La metodologa de visualizacin de mensajes en Niple consiste en generar un mensaje. Esto implica configurar la pantalla, el cursor y disear el mensaje propiamente dicho. Una vez diseado el mensaje, puede ser aplicado a cualquier LCD mediante el mdulo de visualizacin de mensajes. Para generar un nuevo mensaje ingrese al rbol de herramientas a la seccin: Insertar/Rutinas LCD/Nuevo Mensaje En Niple cada mensaje es identificado con un nombre nico. Por ejemplo Bienvenida. Al cargar la pantalla de nuevo mensaje, lo primero que debe ingresar es el nombre del mensaje. Bsi-

cas/dispositivos/visualizacion/Pantalla

Pgina 103 de 133

Niple v5.6 - Programacin Visual de Microcontroladores


Adems muestra el nmero de mensaje correspondiente. Una vez ingresado el nombre, Niple nuestra las opciones de configuracin de pantalla. Por defecto la opcin Visualizacin de Caracteres se presenta como Caracteres Visibles. Niple supone que Ud. quiere que el mensaje sea visible al momento de llamar al mensaje.

Si por algn motivo Ud. desea que el mensaje se cargue en el LCD pero que permanezca invisible para luego mostrarlo con el comando Encender Pantalla (ver envo de comandos ms adelante), seleccione la opcin Caracteres Invisibles. Adems la opcin Limpiar pantalla se presenta como activada. Esta opcin realiza una limpieza de la pantalla antes de visualizar el mensaje. Esto significa que ser borrado completamente cualquier mensaje que haya sido visualizado antes de mostrar el actual mensaje. Si esta opcin se inhabilita, Niple no realiza la limpieza de la pantalla y existe la posibilidad de superposicin de mensajes. Al inhabilitar la opcin Limpiar Pantalla Niple advierte lo anteriormente mencionado mediante el siguiente mensaje.

Pgina 104 de 133

Niple v5.6 - Programacin Visual de Microcontroladores


Dado que el objetivo de Niple es minimizar al mximo la posibilidad de error, ofrece esta opcin como habilitada para que realice la limpieza de la pantalla antes de visualizar el mensaje actual. La limpieza de la pantalla incluye la ubicacin del cursor al inicio del LCD, esto es, en la lnea 1, carcter 1. Por esto, si la opcin Limpiar Pantalla se encuentra activada, entonces, la opcin Ubicar el cursor en el Inicio se encuentra inhabilitada dado que la limpieza de pantalla incluye esta funcin. Por esto, si la opcin Limpiar Pantalla se desmarca, se activa la opcin Ubicar el cursor.

A continuacin debe seleccionar la configuracin del cursor. Si seleccione la opcin Cursor Invisible. La opcin Visualizacin de parpadeo se configura de manera automtica como Sin parpadeo. Seleccione la configuracin del cursor el parpadeo y la ubicacin del mismo.

Una vez seleccionadas todas las opciones de la configuracin del mensaje, se activa la Solapa Mensaje.

A continuacin debe ingresar el mensaje propiamente dicho.

Pgina 105 de 133

Niple v5.6 - Programacin Visual de Microcontroladores


Se presenta una imagen de la pantalla LCD representada por una grilla de 2 filas y en la cual se enumeran las columnas las cuales representan a los caracteres.

En la grilla ingrese el mensaje que desea visualizar.

Como lo indican las referencias, el texto del mensaje se muestra en color rojo. A la izquierda y a la derecha de la grilla del mensaje se encuentran botones para desplazamiento del texto ingresado. De esta manera puede ajustar la visualizacin del texto. En la siguiente imagen, el texto ha sido desplazado hacia la derecha para ajustarlo al centro de la pantalla.

Pgina 106 de 133

Niple v5.6 - Programacin Visual de Microcontroladores

El botn Limpiar Todo le permite limpiar la grilla del texto cuando Ud. desea corregir el mensaje.

Visualizando valores variables en un mensaje


Para ingresar un valor variable en un mensaje haga doble clic en la celda donde desea visualizar la variable. Se presentar la pantalla de seleccin de variables: Esta pantalla le solicita que seleccione el registro donde tiene almacenado el valor variable a visualizar. Si el valor variable corresponde a un nmero, antes de ser enviado al LCD debemos convertirlo a su correspondiente cdigo ASCII ya que el LCD solo puede mostrar caracteres ASCII. Adems si el nmero es mayor a 9 debemos enviar realizar la conversin a BCD y enviar los valores correspondientes a las unidades, las decenas, las centenas, etc., por separado.

Niple le ofrece la posibilidad de convertir en nmero a cdigo ASCII de manera automtica. Para esto debe seleccionar la opcin Convertir valor numrico a cdigo ASCII. La cual se encuentra seleccionada de manera predeterminada. Si lo que desea enviar no corresponde a un valor numrico sino a un cdigo ASCII que Ud. ya tiene definido en el programa, debe marcar la opcin No convertir valor numrico a cdigo ASCII. Pgina 107 de 133

Niple v5.6 - Programacin Visual de Microcontroladores

Al ingresar la variable, la misma se presenta en la grilla de mensaje como un smbolo de interrogacin y de color celeste. Se muestra como un smbolo de interrogacin dado que Niple no puede predecir que valor ser mostrado en la correspondiente variable.

Si desea consultar a qu valor corresponde a una variable. Haga un clic sobre la celda donde se encuentra la variable y Niple le mostrar a que valor corresponde la misma como lo muestra la imagen anterior.

El formato del texto puede ser uno de los 2 siguientes: 1) ? = ASCII(Nombre_Registro): Esto significa que la variable corresponde al carcter ASCII del valor que contiene el registro Nombre_Registro. 2) ? = Nombre_Registro: Esto significa que la variable corresponde al valor que contiene un registro sin convertirlo a cdigo ASCII. Por ltimo presione el Botn OK. Al insertar un nuevo Mensaje de LCD, Niple genera un nuevo entorno para el mensaje. De esta manera el mensaje puede ser tratado como una rutina de usuario. Al insertarse el mensaje como una rutina de usuario, el mismo puede ser llamado desde cualquier parte del programa y puede ser visualizado en cualquier LCD en caso de estar utilizando ms de 1 LCD. Adems, para minimizar al mximo las posibilidades de error de visualizacin, Niple incluye la configuracin de la pantalla junto con el mensaje a visualizar. De esta manera se garantiza que la pantalla se va a encontrar configurada de acuerdo a las necesidades del mensaje a visualizar. De esta manera Ud. no debe preocuparse por la configuracin de la pantalla, o la configuracin y ubicacin del cursor cada vez que desea visualizar el mensaje. Simplemente indica el mensaje desea visualizar.

Pgina 108 de 133

Niple v5.6 - Programacin Visual de Microcontroladores

Mostrar Mensaje
Una vez definido el mensaje, puede visualizarlo en cualquier parte del programa ingresando al rbol de herramientas a: Rutinas Bsicas/dispositivos/visualizacion/Pantalla LCD/Nuevo Mensaje Se presentar la pantalla Mostrar un mensaje en LCD.

Primero debe seleccionar el LCD en el cual debe desea visualizar el mensaje y a continuacin indica el nombre del mensaje a visualizar. De esta manera un mismo mensaje puede ser visualizado en cualquier LCD. Al presionar el botn OK, Niple ingresa el bloque del lcd.

Optimizacin del cdigo Assembler


Niple incluye un algoritmo de optimizacin de para ahorrar recursos en tiempo de ejecucin (del PIC). Niple administra los mensajes que estn siendo visualizados en cada LCD y sabe en todo momento que mensaje se est visualizando en cada LCD. Incluso si un proyecto incluye solo 1 LCD, Niple sabe qu menaje est siendo visualizando en el LCD. Cuando desea visualizar un mensaje en un LCD que ya esta mostrando en dicho mensaje, Niple solo actualiza los valores variables (en caso de que el mensaje incluye variables). Es decir que no vuelve a cargar todo el mensaje en el LCD. De esta manera se ahorra tiempo de ejecucin. Lo mismo ocurre con la configuracin de la pantalla y la configuracin y ubicacin del cursor. Solo se ejecutan stas configuraciones cuando el mensaje no esta siendo visualizado en el LCD actual.

Pgina 109 de 133

Niple v5.6 - Programacin Visual de Microcontroladores Comandos Enviar comandos


Niple le permite enviar una serie de comandos al LCD solo indicando el nombre del comando deseado. Para facilitarle an ms el manejo de las pantallas LCD, algunos comandos le permite realizar reconfiguraciones de pantalla o cursor. Los comandos disponibles son los siguientes. Apagar la pantalla: Este comando apaga los caracteres. No incluye opciones. Encender la pantalla: Visualiza los caracteres. Opcionalmente puede ubicar y reconfigurar el cursor.

Limpiar la pantalla: Limpiar todos caracteres de la pantalla. No incluye opciones. Cursor a Inicio: Ubica el cursor al inicio de la pantalla LCD, esto es, al rengln 1, carcter 1. Este comando no incluye opciones. Ubicar el cursor: Ubica el cursor en la posicin que indique el usuario. Opcionalmente puede reconfigurar la visualizacin del cursor.

Pgina 110 de 133

Niple v5.6 - Programacin Visual de Microcontroladores


Configurar el cursor: Permite reconfigurar el cursor. Este comando requiere que necesariamente configure la visualizacin de los caracteres.

Desplazar el cursor: Permite realizar un desplazamiento del cursor hacia la izquierda o hacia la derecha. Opcionalmente puede ingresar un retardo entre cada desplazamiento.

Desplazar la pantalla: Permite realizar un desplazamiento de la pantalla hacia la izquierda o hacia la derecha. Opcionalmente puede ingresar un retardo entre cada desplazamiento. Este comando produce un efecto visual de desplazamiento del mensaje.

Enviar caracteres
Adems de configurar la visualizacin de mensajes, Niple le permite enviar caracteres independientemente de un mensaje. Esto es muy comn cuando se realizan proyectos con ingreso de datos, los cuales son mostrados en la pantalla LCD. Por ejemplo; Ud. disea el mensaje de solicitud de ingreso de datos. En general, en estos casos, configura el cursor como visible e intermitente y lo ubica en la posicin donde el usuario debe ingresar el mensaje y luego espera el ingreso de los datos. Cada vez que el usuario ingresa un dato, el microcontro-

Pgina 111 de 133

Niple v5.6 - Programacin Visual de Microcontroladores


lador lo captura, por interrupcin por ejemplo, y lo enva a la pantalla LCD donde el usuario puede visualizar los datos que esta ingresando. Este envo de datos al LCD, corresponde a la funcin de Niple de envo de carcter.

Niple le permite enviar un carcter o un texto. Adems le permite enviar los caracteres a la actual posicin del cursor o definir una posicin de visualizacin determinada. Si necesita enviar un valor numrico guardado en un registro, Niple le ofrece la posibilidad de convertirlo a cdigo ASCII de manera automtica.

Pgina 112 de 133

Niple v5.6 - Programacin Visual de Microcontroladores Teclado Matricial


El mdulo de teclado matricial permite capturar el valor de la tecla presionada en un teclado matricial de 3x4 o de 4x4 y lo guarda en un registro. Para ello utiliza interrupciones por cambio de estado en RB4 a RB7. Niple verifica que la interrupcin por RB4-7 se encuentre activada. Si la interrupcin no se encuentra activada no permite en ingreso del mdulo. Dado que se utiliza la interrupcin por RB4-7, Niple requiere que los pines correspondientes a las columnas del teclado matricial sean conectados a los pines RB4-7, mientras que le permite seleccionar libremente los la conexin de los pines correspondientes a las filas. Al ingresar a la pantalla de teclado matricial, Niple le solicita que seleccione el registro donde guardar el valor de la tecla presionada. Luego le solicita que seleccione el tipo de teclado matricial que desea conectar. Y por ultimo que seleccione los pines correspondientes a las filas del teclado matricial.

Pgina 113 de 133

Niple v5.6 - Programacin Visual de Microcontroladores Memorias EEPROM I2C Declaracin del Dispositivo
Ingrese la seccin Dispositivos y seleccione Nuevo dispositivo tipo Memoria. Seleccione el modelo de la memoria a utilizar y elija los pines donde conectar la memoria al PIC.

Ingrese el nro de dispositivo y por ultimo presione el botn Ingresar en el panel de la derecha

Recuerde que puede conectar varios dispositivos en paralelo formando una red, en la cual, a cada dispositivo se le asigna un numero. Este nmero de dispositivo se configura conectado los pines correspondientes de cada dispositivo. La cantidad de dispositivos que puede incluir en una red depende del modelo de memoria que esta utilizando. Niple controla de manera automtica la cantidad de dispositivos que puede conectar en funcin del modelo seleccionado.

Pgina 114 de 133

Niple v5.6 - Programacin Visual de Microcontroladores Leer Memoria EEPROM I2C


Ingrese al rbol de herramientas: Rutinas Basicas/Dispositivos/Memoria EEPROM. Se presenta la pantalla Memorias EEPROM y selecciona la accin Lectura

Luego debe seleccionar la direccin de memoria que desea leer desde la memoria EEPROM. Primero debe selecciona el tipo de direccin, la cual puede ser Fija o Variable. Si selecciona el tipo de direccin Fija debe ingresar la posicin de memoria a leer en formato decimal. Niple controla que la direccin ingresada no supere el lmite mximo de cantidad de registros que contiene le modelo seleccionado. Mediante este tipo de acceso (por direccin fija) el microcontrolador acceder a la direccin ingresada cada vez que se ejecute el bloque actual. Si selecciona el tipo de direccin Variable debe seleccionar el registro que contiene el valor correspondiente a la posicin de memoria que desea leer. En este caso, Niple no controla que la direccin ingresada no supere el lmite mximo de cantidad de registros que contiene el modelo seleccionado dado que no se puede predeterminar que valor tendr el registro seleccionado al ejecutarse el programa. Mediante este tipo de acceso (por direccin variable) el microcontrolador acceder a la direccin correspondiente al valor que contiene el registro cada vez que se ejecute el bloque actual.

Pgina 115 de 133

Niple v5.6 - Programacin Visual de Microcontroladores


Una vez seleccionada la direccin a leer, debe seleccionar el registro donde guardar el dato obtenido desde la memoria. Por ltimo, puede ingresar un comentario.

Escribir Memoria EEPROM I2C


Para guardar datos de memorias EEPROM de la familia 24Cxxx ingrese al rbol de herramientas como se muestra en la imagen de abajo: Al ingresar en Memoria EEPROM se presenta la pantalla donde debe seleccionar que tipo de acceso desea y los parmetros del mismo, ya sea escritura o lectura.

Seleccione el modelo de memoria que desea utilizar. Seleccione el tipo de acceso que desea tener a la memoria EEPROM (ya sea escritura o lectura) Luego debe seleccionar la direccin de memoria que desea escribir en la memoria EEPROM. Primero debe selecciona el tipo de direccin, la cual puede ser Fija o Variable. Si selecciona el tipo de direccin Fija debe ingresar la posicin de memoria a escribir en formato decimal. Si selecciona el tipo de direccin Variable debe seleccionar el registro que contiene el valor correspondiente a la posicin de memoria que desea escribir. Mediante este tipo de acceso (por direccin variable) el microcontrolador acceder a la direccin correspondiente al valor que contiene el registro cada vez que se ejecute el bloque actual. Una vez seleccionada la direccin a escribir, debe indicar el dato que desea grabar en la memoria. Puede ingresar un valor literal o seleccionar un registro el cual contiene le valor que desea grabar. Si selecciona la opcin un Literal, debe seleccionar el tipo de dato a grabar y luego debe ingresar el valor que desea grabar en la memoria. Pgina 116 de 133

Niple v5.6 - Programacin Visual de Microcontroladores

Si selecciona la opcin un Registro, debe seleccionar el registro que contiene el valor a grabar en la memoria.

Por ltimo, puede ingresar un comentario.

Pgina 117 de 133

Niple v5.6 - Programacin Visual de Microcontroladores

Memorias RAM Declaracin del Dispositivo


Ingrese al a seccin Dispositivos, y seleccione el tipo de dispositivo Memoria Ram I2C.

Seleccione le modelo de la memoria a utilizar y los pines correspondientes. Presione el botn Ingresar para terminar de crear el dispositivo. Recuerde que puede conectar varios dispositivos en paralelo formando una red, en la cual, a cada dispositivo se le asigna un nmero. Este nmero de dispositivo se configura conectado los pines correspondientes de cada dispositivo. La cantidad de dispositivos que puede incluir en una red depende del modelo de memoria que est utilizando. Niple controla de manera automtica la cantidad de dispositivos que puede conectar en funcin del modelo seleccionado.

Pgina 118 de 133

Niple v5.6 - Programacin Visual de Microcontroladores Leer Memoria RAM I2C


Para leer datos de la memoria RAM ingrese al rbol de herramientas como se muestra en la imagen de abajo: Seleccione la memoria que desea utilizar. Al seleccionar el tipo de dispositivo a utilizar, Niple le muestra la cantidad de registros de 8 bits que contiene el modelo seleccionado. Seleccione el tipo de acceso a la memoria en este caso Lectura. Actualmente, Niple soporta la memoria RAM PCF8570 pero en futuras versiones se irn agregando ms modelos.

Luego debe seleccionar la direccin de memoria que desea leer desde la memoria RAM. Primero debe selecciona el tipo de direccin, la cual puede ser Fija o Variable. Si selecciona el tipo de direccin Fija debe ingresar la posicin de memoria a leer en formato decimal. Niple controla que la direccin ingresada no supere el lmite mximo de cantidad de registros que contiene le modelo seleccionado. Mediante este tipo de acceso (por direccin fija) el microcontrolador acceder a la direccin ingresada cada vez que se ejecute el bloque actual. Si selecciona el tipo de direccin Variable debe seleccionar el registro que contiene el valor correspondiente a la posicin de memoria que desea leer.

En este caso, Niple no controla que la direccin ingresada no supere el lmite mximo de cantidad de registros que contiene el modelo seleccionado dado que no se puede predeterminar que valor tendr el registro seleccionado al ejecutarse el programa. Pgina 119 de 133

Niple v5.6 - Programacin Visual de Microcontroladores


Mediante este tipo de acceso (por direccin variable) el microcontrolador acceder a la direccin correspondiente al valor que contiene el registro cada vez que se ejecute el bloque actual. Una seleccionada la direccin a leer, debe seleccionar el registro donde guardar el dato obtenido desde la memoria. Por ltimo, puede ingresar un comentario. Una vez ingresados los parmetros requeridos, puede visualizar el esquema de conexin. Por ltimo, presione el botn Ingresar y se insertar el bloque de Lectura de Memoria RAM en el diagrama de flujo.

Escribir Memoria RAM I2C


Ingrese al rbol de herramientas en la seccin Dispositivos / Memoria RAM I2C. Se presenta la pantalla Memoria RAM por I2C. Seleccione el nombre del dispositivo que desea acceder.

Recuerde que puede conectar varios dispositivos en paralelo formando una red, en la cual, a cada dispositivo se le asigna un numero. Este nmero de dispositivo se configura conectado los pines correspondientes de cada dispositivo. La cantidad de dispositivos que puede incluir en una red depende del modelo de memoria que esta utilizando. Niple controla de manera automtica la cantidad de dispositivos que puede conectar en funcin del modelo seleccionado. Luego debe seleccionar la direccin de memoria que desea escribir en la memoria RAM. Primero debe selecciona el tipo de direccin, la cual puede ser Fija o Variable. Si selecciona el tipo de direccin Fija debe ingresar la posicin de memoria a leer en formato decimal. Niple controla que la direccin ingresada no supere el lmite mximo de cantidad de registros que contiene

Pgina 120 de 133

Niple v5.6 - Programacin Visual de Microcontroladores


le modelo seleccionado. Mediante este tipo de acceso (por direccin fija) el microcontrolador acceder a la direccin ingresada cada vez que se ejecute el bloque actual. Si selecciona el tipo de direccin Variable debe seleccionar el registro que contiene el valor correspondiente a la posicin de memoria que desea escribir. En este caso, Niple no controla que la direccin ingresada no supere el lmite mximo de cantidad de registros que contiene el modelo seleccionado dado que no se puede predeterminar que valor tendr el registro seleccionado al ejecutarse el programa. Mediante este tipo de acceso (por direccin variable) el microcontrolador acceder a la direccin correspondiente al valor que contiene el registro cada vez que se ejecute el bloque actual. Una vez seleccionada la direccin a escribir, debe indicar el dato que desea grabar en la memoria. Puede ingresar un valor literal o seleccionar un registro el cual contiene le valor que desea grabar. Si selecciona la opcin un Literal, debe seleccionar el tipo de dato a grabar y luego debe ingresar el valor que desea grabar en la memoria. Si selecciona la opcin un Registro, debe seleccionar el registro que contiene el valor a grabar en la memoria.

Por ltimo, puede ingresar un comentario.

Pgina 121 de 133

Niple v5.6 - Programacin Visual de Microcontroladores Reloj de Tiempo Real RTC PCF8583 Declaracin del Dispositivo
Ingrese a la seccin de Dispositivos y seleccione la opcin Reloj Tiempo Real en la lista de nuevo dispositivo.

Se carga la pantalla de Declaracin y Configuracin del RTC. Niple incluye 2 modelos diferentes de RTC, los cuales se incluyen en la lista de dispositivos en la parte superior-izquierda de la pantalla. Seleccione el RTC PCF8583.

El PCF8583 funciona por comunicacin I2C. Seleccione los pines correspondientes a las seales SDA y SCL en las listas correspondientes. Por ltimo presione el botn Ingresar que se encuentra en la parte derecha de la pantalla.

Pgina 122 de 133

Niple v5.6 - Programacin Visual de Microcontroladores

Implementando el PCF8583 en el Diagrama de Flujo.


Ingrese a la seccin de Rutinas Bsicas/Dispositivos/Reloj Tiempo Real en el rbol de herramientas. Al cargarse la pantalla, Seleccione el dispositivo por su nombre (ID). Las acciones que puede realizar sobre un PCF8583 son: Inicializacin Escritura Lectura

Inicializacin
El PCF8583 debe ser inicializado, la inicializacin asigna una valor inicia de fecha y hora y pone en marcha el reloj/calendario. Por defecto Niple asigna la fecha y hora actual del proyecto. Una vez configurado el Reloj de Tiempo Real se pone en marcha activando un bit interno del reloj. Este bit mantiene el reloj en funcionamiento y Niple programa la inicializacin del reloj para vea este bit para determinar si el reloj ya est funcionando en cuyo caso no se asigna la hora al iniciar el sistema.

Pgina 123 de 133

Niple v5.6 - Programacin Visual de Microcontroladores

Escritura
Puede escribir datos al Reloj de Tiempo Real y asignar los valores de Fecha y Hora del reloj. Para configurar la Fecha actual, ingrese a la Ficha con el nombre Fecha. Seleccione los parmetros que desea configurar (Da, Mes, Ao, Da de la Semana) marcado las opciones correspondientes. Cada uno de estos datos puede ser de tipo Fijo o Variable. Los valores a ingresar pueden ser los siguientes segn el tipo de dato solicitado: Da: - Fijo: entre 01 y 31 inclusive. - Variable: un registro que contiene el valor del da. Mes - Fijo: entre 01 y 12 inclusive. - Variable: un registro que contiene el valor del mes. Ao - Fijo: entre 00 y 03 inclusive. - Variable: un registro que contiene el valor del ao. Da Semana - Fijo: entre Domingo y Sbado. - Variable: un registro que contiene el valor del da de la semana. La siguiente imagen muestra una configuracin de fecha Fija:

Pgina 124 de 133

Niple v5.6 - Programacin Visual de Microcontroladores

La siguiente imagen muestra una configuracin de fecha Variable:

Para configurar la Hora actual, ingrese a la Ficha con el nombre Hora. Seleccione los parmetros que desea configurar (Formato de Horas, Hora, Minutos, Segundos) marcado las opciones correspondientes. Cada uno de estos datos puede ser de tipo Fijo o Variable. Los valores a ingresar pueden ser los siguientes segn el tipo de dato solicitado: Formato de Hora: - Fijo: puede seleccionar el formato de 12 o 24 horas. Horas

Pgina 125 de 133

Niple v5.6 - Programacin Visual de Microcontroladores


- Fijo: depende del formato de hora seleccionado. Para el formato de 12 horas, puede seleccionar entre las 00 AM..11 AM y 00 PM..11PM, Y para el formato de 24 horas puede seleccionar entre 0 y 23 inclusive. - Variable: un registro que contiene el valor de las horas. Minutos - Fijo: entre 00 y 59 inclusive. - Variable: un registro que contiene el valor de los minutos. Segundos - Fijo: entre 00 y 59 inclusive. - Variable: un registro que contiene el valor de los segundos. La siguiente imagen muestra una configuracin de Hora Fija:

La siguiente imagen muestra una configuracin de Hora variable:

Pgina 126 de 133

Niple v5.6 - Programacin Visual de Microcontroladores Configuracin de Alarmas


El PCF8583 incluye un Pin de Alarma que el cual se pone en estado Bajo (0V) cada vez que se produce una alarma. Mientras una alarma no se produce el pin queda en estado alto (5 V). Al producirse una alarma en el PCF8583, internamente se activa una bandera (Bit) de alarma y el pin de alarma se pone en estado bajo y se mantiene as mientras la bandera de alarma permanece activada. La bandera de alarma debe ser limpiada por software. El PCF8583 incluye alarmas por Fecha/Hora o por Temporizacin. La configuracin de alarma por Fecha/Hora le permite generar distintos tipos de alarmas: Alarma Diaria: esta alarma se activa cada vez que coinciden la hora (horas, minutos y segundos) configurada como alarma con la hora actual del reloj (horas, minutos y segundos actuales). Alarma semanal: la alarma semanal se activa cuando coincide el da de la semana con el alguno de los 2 das de semana que puede configurar como alarmas. Alarma Fechada: se activa cada vez que coinciden los datos de Fecha/Hora configurados como alarma con los valores de Fecha/Hora actuales. Cada una de estas alarmas puede ser configurada con valores Fijos o Variables. Los valores a ingresar pueden ser los siguientes segn el tipo de dato solicitado: Alarma Diaria: Horas - Fijo: depende del formato de hora seleccionado. Para el formato de 12 horas, puede seleccionar entre las 00 AM..11 AM y 00 PM..11PM, Y para el formato de 24 horas puede seleccionar entre 0 y 23 inclusive. - Variable: un registro que contiene el valor de las horas. Minutos - Fijo: entre 00 y 59 inclusive. - Variable: un registro que contiene el valor de los minutos.

Pgina 127 de 133

Niple v5.6 - Programacin Visual de Microcontroladores

Alarma por Fecha Da - Fijo: entre 01 y 31 inclusive. - Variable: un registro que contiene el valor del da seleccionado. Mes - Fijo: entre 01 y 12 inclusive. - Variable: un registro que contiene el valor del mes seleccionado. Horas - Fijo: depende del formato de hora seleccionado. Para el formato de 12 horas, puede seleccionar entre las 00 AM..11 AM y 00 PM..11PM, Y para el formato de 24 horas puede seleccionar entre 0 y 23 inclusive. - Variable: un registro que contiene el valor de las horas. Minutos - Fijo: entre 00 y 59 inclusive. - Variable: un registro que contiene el valor del da seleccionado. Debe generar el cdigo correspondiente al da. Los cdigos correspondientes a los das son los siguientes:

Pgina 128 de 133

Niple v5.6 - Programacin Visual de Microcontroladores Lectura


Para leer la Fecha o la Hora actual seleccione los datos que desea consultar (Da, Mes, Ao, Da de la Semana, Horas, Minutos, Segundos) y luego seleccione el registro donde desea almacenar cada uno de los datos obtenidos. No es necesario que obtenga todos los datos correspondientes a la hora, sino que, puede obtener slo los datos que necesita.

Pgina 129 de 133

Niple v5.6 - Programacin Visual de Microcontroladores

Registro Desplazamiento Ingresar valor y rotar


Esta funcin rota el valor de un BIT en un registro que puede contener hasta 64 bits de tamao, el cual es tratado como si fuese un registro comn. Cada vez que se produce la condicin de reloj, desplaza un 1(uno) o un 0 (cero), dependiendo de la condicin de entrada se cumple o no, en el registro. El usuario deber declarar BIT en las posiciones que desee, y luego debe programar que suceder cuando estos tengan valor 0(cero) o 1(uno). En el ejemplo de la figura, se utiliza el registro de desplazamiento para el control de una mquina envasadora de estuches, que contiene 64 estuches en todo su largo, y la posicin 61 corresponde al pateador de estuches fuera de peso. Se podra decir que cada vez que est activada la expulsin de un producto fuera de peso y este BIT sea uno, el sistema de expulsin funcionar. 1) En Tamao del registro, escriba el nmero de bits a utilizar, con un mximo de 64. 2) En Ingrese los datos de la posicin escriba el nombre al BIT que desee y complete el cuadro correspondiente a Funcin. 3) Repita esta operacin hasta declarar la cantidad de bits que desee. 4) Seleccione la seal de Reloj, que producir la rotacin de todos sus bits. 5) Elija si el registro se va a rotar cuando el BIT reloj sea 1(uno) o 0(cero). 6) Seleccione que condicin se tiene que cumplir para que sea introducido un 1(uno) al registro. 7) Haga clic en Ingresar. Las casillas de verificacin Y o O corresponden a las operaciones lgicas AND y OR inclusiva correspondientemente.

Pgina 130 de 133

Niple v5.6 - Programacin Visual de Microcontroladores

IMPORTANTE: Procedimiento para programacin de los PIC 12F6xx.


Los micros de las familia de PIC 12F6xx requieren un procedimiento especial para ser programados. Estos micros requieren de un valor de calibracin ubicado en final de la memoria de programa que permite garantizar la correcta calibracin del oscilador interno.

Este procedimiento es necesario realizarlo para todos los tipos de programadores de PIC.

Por esto: Es necesario recuperar este valor antes de utilizar por utilizar por primera el micro.

A continuacin, vamos a utilizar el PIC12F675 y el software de programacin IcProg. Seleccione el modelo correcto de PIC. En este caso el 12F675.

El valor de calibracin puede variar de un chip a otro. Por esto, debe comenzar realizando una lectura de la memoria flash del micro. Para ello, presione el botn para realizar el proceso de lectura .

Al finalizar la lectura del micro, se obtiene el contenido de la memoria flash (memoria de programa). Dado que an el micro no ha sido utilizado, todas las posiciones de memoria deben contener el valor 3FFF a excepcin de la ltima direccin (0x03FF). Esta ltima direccin de memoria flash contiene el valor de calibracin del microcontrolador (en formato hexadecimal).

En nuestro ejemplo el valor de calibracin del PIC actualmente utilizado es 0x3428.

Es aconsejable tomar nota del valor de calibracin. Y mejor an, puede grabar el este valor pegando un papel en la parte inferior del PIC. Este procedimiento es recomendable cuando trabaja con varios PIC. Recuerde que el cdigo de calibracin puede variar de un PIC a otro.

Pgina 131 de 133

Niple v5.6 - Programacin Visual de Microcontroladores

Cargue el archivo .HEX que desea programar en ICProg. Al realizar esto, el valor de calibracin del PIC16F675 fue sustituido por el valor hexadecimal por defecto $3FFF.

Haga doble clic sobre esta ltima posicin de memoria con el fin de asignar el valor de calibracin correspondiente.

En la zona de valor hexadecimal

, ingrese el valor de calibracin anteriormente obtenido.

Para nuestro ejemplo, el valor corresponde a 3428.

Presione el botn OK. Ahora el programa esta listo para grabar el PIC. En la fase de programacin, ICPROG comienza leyendo la memoria del PIC con el fin de comparar el contenido de la ltima direccin con el valor de calibracin ingresado manualmente.

Pgina 132 de 133

Niple v5.6 - Programacin Visual de Microcontroladores


Si el cdigo de calibracin que contiene el PIC es el mismo que el que se encuentra en la ltima posicin de memoria del archivo a grabar, contina la grabacin y por ltimo muestra el mensaje que el PIC ha sido grabado correctamente y con esto queda finalizada la grabacin del PIC.

Si el cdigo de calibracin que contiene el PIC no es el mismo que se encuentra la ltima posicin de memoria del programa a grabar, se muestra un mensaje indicado este problema y pregunta si desea sobrescribir el valor que actualmente se encuentra en el PIC con el valor contenido en la ultima posicin del archivo a grabar.

Si responde SI, se graba el valor de calibracin contenido en la ultima posicin del archivo. Si responde NO, se graba el programa pero no se cambia el valor de configuracin del PIC.

Si Ud. no est completamente seguro que el valor contenido en la ltima posicin del archivo corresponde al valor de calibracin del PIC, seleccione la opcin Cancelar vuelva a realizar la lectura de la memoria del micro para obtener el valor de calibracin.

Para grabar el mismo programa en distintos microcontroladores, debe actualizar el valor de calibracin de cada PIC en la ltima posicin de memoria del archivo a grabar.

Pgina 133 de 133

También podría gustarte