Sunteți pe pagina 1din 239

Niple v4.

0 - Programacin Visual de Microcontroladores

Programacin Visual de Microcontroladores

Para PIC 12F6xx, 16F84, 16F6xx y 16F87x Versin 4.0 Manual de Usuario

Pgina 1 de 239

Niple v4.0 - Programacin Visual de Microcontroladores

Importante

Como utilizar este manual

Existe una serie de caractersticas, mdulos y funciones que son comunes a todas las versiones de Niple. Tanto el diseo de las pantallas como as tambin la metodologa de utilizacin e implementacin de muchos de estos mdulos no varan de una versi n a otra. Por esto, los manuales de las diferentes versiones comparten una importante cantidad de informacin y si los mismos se imprimen por separado, se estara generando una considerable cantidad de informacin duplicada. Dado que este manual ha sido diseado para incluir las caractersticas de todas las versiones de Niple 4.0 hemos organizado la i n formacin en 2 partes. La primer parte consiste en toda aquella informaci n que resulta com n a todas las versiones, esto es, informacin general y conceptos bsicos sobre micro controladores, introducci n a Niple, principios bsicos y generales de programacin con Niple y la descripci n de los mdulos comunes a todas las versiones. La segunda parte consiste en las caractersticas particulares de cada lnea de microcontroladores y las descripciones de los mdulos especficos de cada versin de Niple.

Pgina 2 de 239

Niple v4.0 - Programacin Visual de Microcontroladores

ndice
COMO UTILIZAR ESTE MANUAL ________________________________________________________________________ 2 INTRODUCCIN A LOS M ICROCONTROLADORES _______________________________________________ 10 QUE ES UN MICROCONTROLADOR ? ___________________________________________________________________ 10 LOS MICROCONTROLADORES PIC ___________________________________________________________________ 10 Estructura de un microcontrolador _________________________________________________________________ 11 El procesador o CPU _____________________________________________________________________________ 11 Memoria ROM___________________________________________________________________________________ 11 Memoria RAM ___________________________________________________________________________________ 12 Registros y Bits __________________________________________________________________________________ 13 Lneas de Entrada/Salida (E/S), (Puertos) ___________________________________________________________ 16 Mdulos Temporizadores Internos (TMRs) __________________________________________________________ 16 UTILIZANDO UN MICROCONTROLADOR _________________________________________________________________ 18 NIPLE : PROGRAMACIN VISUAL DE MICROCONTROLADORES PIC__________________________________________ 19 INTRODUCCIN A NIPLE _________________________________________________________________________ 20 FUNCIONES DISPONIBLES ____________________________________________________________________________ 21 HERRAMIENTAS ADICIONALES ________________________________________________________________________ 22 METODOLOGA DE PROGRAMACIN CON NIPLE _______________________________________________ 23 CONCEPTOS BSICOS ____________________________________________________________________________ 24 LA INTERFAZ DE NIPLE ______________________________________________________________________________ 24 ENTORNOS _________________________________________________________________________________________ 25 Crear un nuevo Entorno __________________________________________________________________________ 25 Seleccionar el Entorno actual de trabajo____________________________________________________________ 26 Borrar un Entorno _______________________________________________________________________________ 26 BLOQUES __________________________________________________________________________________________ 26 Interpretacin de los Bloques ______________________________________________________________________ 26 Seleccin de Bloques o Vnculos ___________________________________________________________________ 28 Mover un Bloque_________________________________________________________________________________ 28 Estirar un Bloque ________________________________________________________________________________ 29 Borrar Bloques __________________________________________________________________________________ 29 Editar Bloques ___________________________________________________________________________________ 29 Duplicar Bloques ________________________________________________________________________________ 30 Habilitar e Inhabilitar Bloques ____________________________________________________________________ 31 VNCULOS (FLECHAS ) _______________________________________________________________________________ 32 Crear un Vnculo_________________________________________________________________________________ 33 Cambiar el estilo de un Vnculo____________________________________________________________________ 33 Borrar Vnculos __________________________________________________________________________________ 34

Pgina 3 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


INGRESO DE D ATOS _________________________________________________________________________________ 34 Control de ingreso de nombres de registros _________________________________________________________ 34 Control de ingreso de valores Literales _____________________________________________________________ 34 M ODOS DE TRABAJO N IVEL DE USUARIO ____________________________________________________________ 35 RUTINAS DE USUARIO ____________________________________________________________________________ 36 EXPORTAR RUTINA DE USUARIO ______________________________________________________________________ 36 IMPORTAR UNA R UTINA DE USUARIO__________________________________________________________________ 38 EXPORTAR I MAGEN _________________________________________________________________________________ 39 PROGRAMANDO CON NIPL E _____________________________________________________________________ 40 CREAR UN NUEVO PROYECTO. ________________________________________________________________________ 40 DECLARACIN DE REGISTROS ________________________________________________________________________ 40 BORRAR UN R EGISTRO ______________________________________________________________________________ 40 DECLARACIN DE BITS ______________________________________________________________________________ 40 BORRAR UN B IT DE USUARIO _________________________________________________________________________ 40 CAMBIAR EL NOMBRE A UN BIT DE USUARIO ___________________________________________________________ 40 INSERTAR BLOQUES _________________________________________________________________________________ 41 Descripcin de las funciones ______________________________________________________________________ 43 MDULOS COMUNES A TODAS LAS VERSIONES DE NIPLE______________________________________ 43 INSTRUCCIONES ____________________________________________________________________________________ 43 Instrucciones orientadas a Registros _______________________________________________________________ 43
ADDWF_______________________________________________________________________________________ 43 ANDWF_______________________________________________________________________________________ 44 CLRF _________________________________________________________________________________________ 44 CLRW ________________________________________________________________________________________ 44 COMF ________________________________________________________________________________________ 45 DECF_________________________________________________________________________________________ 45 DECFSZ ______________________________________________________________________________________ 45 INCF _________________________________________________________________________________________ 46 INFCSZ _______________________________________________________________________________________ 46 IORWF _______________________________________________________________________________________ 46 MOVF ________________________________________________________________________________________ 47 MOVWF ______________________________________________________________________________________ 47 RLF __________________________________________________________________________________________ 47 RRF __________________________________________________________________________________________ 48 SUBWF _______________________________________________________________________________________ 48 SWAPF _______________________________________________________________________________________ 48 XORWF_______________________________________________________________________________________ 49

Instrucciones orientadas a Bits ____________________________________________________________________ 49


BCF __________________________________________________________________________________________ 49 BSF __________________________________________________________________________________________ 49

Pgina 4 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


BTFSC ________________________________________________________________________________________ 50 BTFSS ________________________________________________________________________________________ 50

Instrucciones orientadas a Literales ________________________________________________________________ 50


ADDLW ______________________________________________________________________________________ 50 ANDLW ______________________________________________________________________________________ 51 IORLW _______________________________________________________________________________________ 51 MOVLW ______________________________________________________________________________________ 51 SUBLW _______________________________________________________________________________________ 52 XORLW_______________________________________________________________________________________ 52

Instrucciones de Control __________________________________________________________________________ 52


CLRWDT _____________________________________________________________________________________ 52 NOP __________________________________________________________________________________________ 53 SLEEP ________________________________________________________________________________________ 53

RUTINAS BSICAS __________________________________________________________________________________ 53 Iniciar Programa ________________________________________________________________________________ 53 Asignar Valor ___________________________________________________________________________________ 54


Asignar valor a un Bit ____________________________________________________________________________ 54 Asignar valor a un Registro ________________________________________________________________________ 55 Puertos ________________________________________________________________________________________ 56

Configurar Puerto _______________________________________________________________________________ 56


Leer Puerto_____________________________________________________________________________________ 56 Escribir Puerto __________________________________________________________________________________ 56

Conversin Analgica/Digital (A/D)________________________________________________________________ 57


Activar/Desact. A/D _____________________________________________________________________________ 57 Conversin A/D_________________________________________________________________________________ 58

EEPROM _______________________________________________________________________________________ 64
Leer EEPROM__________________________________________________________________________________ 64 Grabar EEPROM ________________________________________________________________________________ 65

Funciones Lgicas _______________________________________________________________________________ 65


Comparar Bit ___________________________________________________________________________________ 65 Comparar Registro (8 Bits) ________________________________________________________________________ 66 Comparar Registro (16 Bits) _______________________________________________________________________ 67

Matemticas_____________________________________________________________________________________ 68
8 Bits _________________________________________________________________________________________ 68 Adicin (8) __________________________________________________________________________________ 68 Sustraccin (8) ________________________________________________________________________________ 69 Divisin (8) __________________________________________________________________________________ 69 Multiplicacin (8) _____________________________________________________________________________ 70 Reg(8) a BCD ________________________________________________________________________________ 70

Clculos a 16 Bits ________________________________________________________________________________ 71


Adicin (16) _________________________________________________________________________________ 71 Sustraccin (16) _______________________________________________________________________________ 71 Multiplicacin (16) ____________________________________________________________________________ 72 Reg (16) a BCD_______________________________________________________________________________ 72

Pgina 5 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


BCD a Reg (16) _______________________________________________________________________________ 73

Escalar _________________________________________________________________________________________ 73 Comunicaciones _________________________________________________________________________________ 74


RS232 ________________________________________________________________________________________ 74 RS485 ________________________________________________________________________________________ 74 Modo Maestro ________________________________________________________________________________ 75 Modo Esclavo ________________________________________________________________________________ 83

Tablas __________________________________________________________________________________________ 89
Crear una nueva tabla ____________________________________________________________________________ 90 ConsultarTabla__________________________________________________________________________________ 91

Temporizadores__________________________________________________________________________________ 91
Tiempos por Bucles ______________________________________________________________________________ 91

Visualizacin ____________________________________________________________________________________ 92
Display de 7 segmentos ___________________________________________________________________________ 92 Multiplexado _________________________________________________________________________________ 92 Multiplexado (4511) ___________________________________________________________________________ 96 Pantalla LCD __________________________________________________________________________________ 100 Configurar LCD _____________________________________________________________________________ 101 Utilizando ms de una pantalla LCD _____________________________________________________________ 105 Generar un nuevo mensaje _____________________________________________________________________ 106 Visualizando valores variables en un mensaje ______________________________________________________ 110 Mostrar Mensaje _____________________________________________________________________________ 112 Optimizacin del cdigo Assembler ______________________________________________________________ 113 Comandos __________________________________________________________________________________ 113

Teclado ________________________________________________________________________________________ 116


Teclado Matricial_______________________________________________________________________________ 116

Memorias EEPROM I2C_________________________________________________________________________ 117


Leer Memoria EEPROM I2C _____________________________________________________________________ 117 Escribir Memoria EEPROM I2C___________________________________________________________________ 119

Memorias RAM _________________________________________________________________________________ 123


Leer Memoria RAM I2C_________________________________________________________________________ 123 Escribir Memoria RAM I2C ______________________________________________________________________ 125

Reloj de Tiempo Real ____________________________________________________________________________ 128


Configurar el PCF8583 __________________________________________________________________________ 128 Configuracin de Fecha __________________________________________________________________________ 129 Configuracin de Hora __________________________________________________________________________ 130 Configuracin de Alarmas ________________________________________________________________________ 132 Comandos ____________________________________________________________________________________ 135 Leer PCF8583 _________________________________________________________________________________ 136

Registro Desplazamiento_________________________________________________________________________ 138


Ingresar valor y rotar ____________________________________________________________________________ 138

INTERRUPCIONES __________________________________________________________________________________ 140 Configurar Interrup. _____________________________________________________________________________ 140 Fin de la Interrupcin ___________________________________________________________________________ 140

Pgina 6 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


RUTINAS DE USUARIO ______________________________________________________________________________ 140 NIPLE PARA PIC 12F6XX _________________________________________________________________________ 141 CARACTERSTICAS TCNICAS DE LOS PIC 12F6XX______________________________________________________ 141 Conexin de los PIC 12F6xx _____________________________________________________________________ 142 El puerto del PIC 12F6xx ________________________________________________________________________ 142 M DULOS ESPECFICOS DE NIPLE PARA PIC 12F6XX____________________________________________________ 143 Crear un nuevo proyecto. ________________________________________________________________________ 143 Declaracin de Registros ________________________________________________________________________ 145
Declaracin de un Registro de Usuario ______________________________________________________________ 145

Declaracin de Bits _____________________________________________________________________________ 146


Declaracin de un Bit de Usuario __________________________________________________________________ 147

Puerto _________________________________________________________________________________________ 147


Configurar Puerto A ____________________________________________________________________________ 147 El PIN A5 como Reset o Entrada Digital __________________________________________________________ 148 Los pines A6 y A7 como Oscilador externo o Entradas/Salidas Digitales _________________________________ 148 El mdulo Compara dor Analgico _______________________________________________________________ 149 Configuracin de los canales A/D________________________________________________________________ 152

Comunicaciones ________________________________________________________________________________ 155


RS232 _______________________________________________________________________________________ 155 RS232 Enviar ______________________________________________________________________________ 155 RS2 32 Recibir _____________________________________________________________________________ 158

Configurar Interrupciones _______________________________________________________________________ 159 NIPLE PARA PIC 16F84 ___________________________________________________________________________ 160 CARACTERSTICAS TCNICAS DEL PIC 16F84 __________________________________________________________ 160 Conexin del PIC 16F84_________________________________________________________________________ 161 Los puertos del PIC 16F84 _______________________________________________________________________ 161 M DULOS ESPECFICOS DE NIPLE PARA PIC 16F84 _____________________________________________________ 162 Crear un nuevo proyecto. ________________________________________________________________________ 162 Declaracin de Registros ________________________________________________________________________ 163 Declaracin de un registro de usuario_____________________________________________________________ 164 Puertos ________________________________________________________________________________________ 165
Configurar Puerto A ____________________________________________________________________________ 165 Configurar Puerto B_____________________________________________________________________________ 166

Comunicaciones ________________________________________________________________________________ 167


RS232 _______________________________________________________________________________________ 167 RS232 Enviar datos _________________________________________________________________________ 167 RS232 Recibir datos_________________________________________________________________________ 170

Configurar Interrup. _____________________________________________________________________________ 171 NIPLE PARA PIC 16F6XX _________________________________________________________________________ 172 CARACTERSTICAS TCNICAS DE LOS PIC 16F6XX______________________________________________________ 172

Pgina 7 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


Conexin de los PIC 16F6xx _____________________________________________________________________ 173 LOS PUERTOS DEL PIC 16F6XX ______________________________________________________________________ 173 M DULOS ESPECFICOS DE NIPLE PARA PIC 16F6XX____________________________________________________ 174 Crear un nuevo proyecto. ________________________________________________________________________ 174 Declaracin de Registros ________________________________________________________________________ 176
Declaracin de un Registro de Usuario ______________________________________________________________ 177

Declaracin de Bits _____________________________________________________________________________ 177


Declaracin de un Bit de Usuario __________________________________________________________________ 178

Configurar el Puerto A __________________________________________________________________________ 179


El PIN A5 como Reset o Entrada Digital ____________________________________________________________ 179 Los pines A6 y A7 como Oscilador externo o Entradas/Salidas Digitales ___________________________________ 180 Los Comparadores analgicos _____________________________________________________________________ 181

Configurar el Puerto B __________________________________________________________________________ 186 Comparadores Analgicos _______________________________________________________________________ 187 El Mdulo CCP_________________________________________________________________________________ 190
Modo Captura _________________________________________________________________________________ 191 Modo Comparacin _____________________________________________________________________________ 195 Modo PWM ___________________________________________________________________________________ 200

Comunicaciones ________________________________________________________________________________ 204


RS232 _______________________________________________________________________________________ 204 RS232 Enviar ______________________________________________________________________________ 204 RS232 Recibir _____________________________________________________________________________ 205

Configurar Interrup. _____________________________________________________________________________ 206 NIPLE PARA PIC 16F87 X __________________________________________________________________________ 207 CARACTERSTICAS TCNICAS DE LOS PIC 16F87X ______________________________________________________ 207 Conexin de los PIC 16F87x _____________________________________________________________________ 208 Los puertos del PIC 16F87x______________________________________________________________________ 209 M DULOS ESPECFICOS DE NIPLE PARA PIC 16F87X ____________________________________________________ 210 Crear un nuevo proyecto. ________________________________________________________________________ 210 Declaracin de Registros ________________________________________________________________________ 212
Declaracin de un Registro de Usuario ______________________________________________________________ 213

Declaracin de Bits _____________________________________________________________________________ 213


Declaracin de un Bit de Usuario __________________________________________________________________ 214

Puertos ________________________________________________________________________________________ 215


Configurar Puerto A ____________________________________________________________________________ 215 Configuracin de los canales A/D __________________________________________________________________ 216 Configurar Puerto B_____________________________________________________________________________ 218 Configurar Puerto C_____________________________________________________________________________ 220 Configurar Puerto D ____________________________________________________________________________ 222 Configurar Puerto E _____________________________________________________________________________ 223

Mdulos CCP __________________________________________________________________________________ 223


Modo Captura _________________________________________________________________________________ 223

Pgina 8 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


Modo Comparacin _____________________________________________________________________________ 228 Modo PWM ___________________________________________________________________________________ 233

Comunicaciones ________________________________________________________________________________ 237


RS232 _______________________________________________________________________________________ 237 RS232 Enviar ______________________________________________________________________________ 237 RS232 Recibir _____________________________________________________________________________ 237

CONFIGURAR I NTERRUP .____________________________________________________________________________ 239

Pgina 9 de 239

Niple v4.0 - 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 mdulos perifricos,

incorporan como

distintos ser;

pueden

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 microcontrolado res 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 implic a un gran esfuerzo intelectual y mucho tiempo de desarrollo.

Pgina 10 de 239

Niple v4.0 - 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: Co nversores 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 ins trucciones 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 r epertorio 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 des tinados 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 previs ta.

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 11 de 239

Niple v4.0 - 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 m aterial 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 b orrar. Funciona como una ROM y una RAM pero consume menos y es ms pequea. A dif erencia de la ROM, la memoria FLASH es programable en el circuito. Es ms rpida y de mayor densidad que la EEPROM. La alternativa F LASH 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 d esconectar 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 12 de 239

Niple v4.0 - 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 sis tema. 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 q ue 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 13 de 239

Niple v4.0 - 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 bas e 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 14 de 239

Niple v4.0 - 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 15 de 239

Niple v4.0 - 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 16 de 239

Niple v4.0 - 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 r esultado 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 17 de 239

Niple v4.0 - 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 es critura 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 baj o 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 18 de 239

Niple v4.0 - 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 proces o 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 program ador. 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 dom inar 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 progr amacin.

Pgina 19 de 239

Niple v4.0 - 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; e s 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.

Introduccin a Niple
Niple es un Entorno Visual de Desarrollo para p rogramacin 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. Disee 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 m s 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.

Pgina 20 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


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.

Modelos de PIC soportados por Niple: Niple para PIC 12F6xx 12F629 12F675

Niple para PIC 16F84 16F84

Niple para PIC 16F6xx 16F627 16F628 16F648

Niple para PIC 16F87x 16F870 16F873 16F874 16F876 16F877

Velocidades de reloj soportadas: 4 Mhz, 10 Mhz, 20 Mhz.

Funciones disponibles
Las funciones disponibles dependen del modelo de microcontrolador utilizado pero en general podemos mencionar: Seleccin del cristal utilizado (4, 10 o 20 Mhz) Asignacin de valores a registros y bits Configuracin y manejo de interrupciones Manejo de rutinas de usuario Confi guracin, Lectura y Escritura de puertos Lectura / Escritura de EEPROM interna del PIC Funciones de comparacin de registros y bits (condiciones =, >, <, >=, <=, <>) Manejo automtico de tablas Temporizadores por bucle (de tiempo fijo o variable)

Pgina 21 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


Visualizacin de datos en dgitos 7 segmentos ( nodo comn y Ctodo comn) Ingreso de datos por teclado matricial (3x3 y 3x4) Visualizacin de datos en pantallas LCD (16x2, 20x2 y 20x4) Manejo de memorias EEPROM 24Cxxx por comunicacin I2C Manejo de memorias RAM PCF8570 por comunicacin I2C. Manejo de reloj/calendario de tiempo real PCF8583, con control de alarmas por fecha. Configuracin y manejo de temporizadores internos (TMR0, TMR1 y TMR2) Comunicaciones RS232 por cdigo y por USART Comunicaciones RS485 Comparadores analgicos Conversin A/D. La cantidad de canales depende del modelo de micro Mdulos CCP (Compara, Captura y PWM) Clculos matemticos: (+, - , / , *, en 8 o 16 bits), conversin a BCD Escalado de valores de un rango a otro (a 8 y 16 bits) Manejo de registros de desplazamiento

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

Pgina 22 de 239

Niple v4.0 - 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 As sembler . 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 error es, 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

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

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 es tructuras 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: Asignacin de valores

Pgina 23 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


Manejo de puertos Manejo de EEPORM Funciones Lgicas Funciones matemticas Comunicaciones Etc.

Interrupciones: En sta categora se encuentran todas las funciones de configuracin y manejo de las interrupciones. Niple presenta las interrupciones disponibles de acuerdo al m odelo de PIC que se est utilizando. 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. Es ta categora incluye las funciones de declaracin e insercin de llamadas a rutinas de usuario.

Conceptos bsicos
La interfaz de Niple
Elementos de la pantalla.

Pgina 24 de 239

Niple v4.0 - Programacin Visual de Microcontroladores 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 cdigo. 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, Subruti nas 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 Progr ama 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 pue den 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.

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 inicio de entorno con el texto correspondiente y un bloque de inhabilitacin del GIE (Habilitador general de Interrupciones) para que ninguna otra interrupcin suspenda la ejecucin de la actual interrupcin. Si usted est utilizando otra interrupcin de mayor prioridad, sim plemente borre o deshabilite ste bloque. Cuando declara una Rutina de Usuario, Niple genera un nuevo entorno con el nombre que usted asig n a la rutina y le coloca el prefijo usr_ (abreviacin de la palabra usuario). Inserta de manera automtica el bloque de Inicio de Entorno.

Pgina 25 de 239

Niple v4.0 - Programacin Visual de Microcontroladores 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 una parte del 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:

Salida de datos. Escribir un valor en un puerto Inicio Fin. Se utiliza como inicio o fin de un entorno. (en paralelo, no serial)

Instruccin. Cualquiera de las 35 instrucciones en cdigo assember.

Asignacin.

Este

bloque

representa

la

asignacin de un valor a un registro o un bit.

Configuracin de un Puerto. Leer un dato de la memoria EEPROM.

Ingreso de datos. Leer el valor de un puerto (en paralelo), modo Captura, modo Comparacin. Almacenar un dato en la memoria EEPROM.

Pgina 26 de 239

Niple v4.0 - Programacin Visual de Microcontroladores

Condicin. Evala una condicin y deriva la ejecucion del programa en funcin del resultado de la evaluacin.

Comunicaciones Seriales RS232. Envo y recepcin de un conjunto de datos por RS232 mediante protocolo de usuario diseado en Niple. Configuracin. Este bloque corresponde a configuracin perifricos. de Interrupcin y mdulos

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

determinado.

Clculo matemtico.

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

Conversin Decimal a BCD Decimal.

BCD a

Registro de desplazamiento. Ingresar un valor Consultar Tabla. y rotar.

Comunicaciones Seriales RS232. Envo y recepcin de un dato por RS232.

Llamada a subrutina (call).

Pgina 27 de 239

Niple v4.0 - Programacin Visual de Microcontroladores 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 s e 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 arrastr e 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 a ctivado. 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.

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

Pgina 28 de 239

Niple v4.0 - Programacin Visual de Microcontroladores 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).

Utilice el comando Edicin/Deshacer para recuperar los b loques 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.

Pgina 29 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


Para que el men contextual presente la opcin Editar, slo debe estar seleccionado el bloque a ser editado. S i 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 cheque no se realizar.

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.

Pgina 30 de 239

Niple v4.0 - Programacin Visual de Microcontroladores 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. 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.

Pgina 31 de 239

Niple v4.0 - Programacin Visual de Microcontroladores 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 orde n 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.

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 Des tino. 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 c odificacin del Assembler.

Pgina 32 de 239

Niple v4.0 - Programacin Visual de Microcontroladores Crear un Vnculo


Para crea 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.

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 con textual con los distintos estilos que puede adoptar un vnculo. 3) Seleccione el estilo deseado.

Pgina 33 de 239

Niple v4.0 - Programacin Visual de Microcontroladores 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 selecciona 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.

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 carga r 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.

Pgina 34 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


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 ingres ado 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.

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 35 de 239

Niple v4.0 - 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 declar acin 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). 3) Presione el botn derecho del mouse para mostrar el men contextual y seleccione la opcin Exportar Rutina. 4) Niple solicita el nombre del archivo donde guardar la rutina de usuario. Por defecto, sugiere el nombre de la rutina de usuario.

Pgina 36 de 239

Niple v4.0 - Programacin Visual de Microcontroladores

Pgina 37 de 239

Niple v4.0 - 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.

Pgina 38 de 239

Niple v4.0 - Programacin Visual de Microcontroladores 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 un a 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 . Por ejemplo, en el siguiente proyecto sern

generados los archivos: Ejemplo7_Programa Principal.wmf Ejemplo7_usr_calculo1.wmf Ejemplo7_usr_calculo2.wmf Ejemplo7_usr_calculo3.wmf

Donde cada archivo contiene la imagen del entorno correspondiente.

Pgina 39 de 239

Niple v4.0 - Programacin Visual de Microcontroladores

Programando con Niple


Crear un nuevo proyecto.
Para consultar sobre la creacin de un nuevo proyecto remtase la seccin correspondiente a las rutinas especficas de cada versin de Niple.

Declaracin de Registros
Para consultar sobre la declaracin de registros remtase la seccin correspondiente a las rutinas especficas de cada versin de Niple.

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.

Declaracin de Bits
Para consultar sobre la declaracin de Bits remtase a la seccin correspondiente a los mdulos especficos de cada versin de Niple.

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.

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

Pgina 40 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


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. P ara solucionar esto, Niple le brinda la posibilidad de actualizar de manera automtica todos los bloques que hacen referencia al BIT renombrado. 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 nom bre asignado. Por ejemplo: puede renombrar el Bit RA0 por Rele1 y a partir de entonces slo se refiere al mismo como Rele1.

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 man era 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.

Pgina 41 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


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 automti ca.

Pgina 42 de 239

Niple v4.0 - 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) Rutinas Bsicas 3) Interrupciones 4) Rutinas de Usuario

Mdulos comunes a todas las versiones de Niple


Los mdulos que se describen a continuacin son vlidos para todas las versiones de Niple.

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

ADDWF
Suma el valor de W y un registro.

Parmetros: Registro F: Nombre registro que se quiere sumar a W.

Destino

(d): Indica

en

donde

ser

guardado el resultado de la operacin.

Pgina 43 de 239

Niple v4.0 - Programacin Visual de Microcontroladores ANDWF


Realiza una operacin lgica AND entre W y un registro.

Parmetros:

Registro

F: Nombre de registro a

combinar con W.

Destino (d) : Indica en donde ser guardado el resultado de la operacin.

CLRF
Borra el contenido de un registro.

Parmetros:

Registro limpiar.

F: Nombre de registro a

CLRW
Borra el contenido del registro W.

Esta

instruccin

no

contiene

parmetros.

Pgina 44 de 239

Niple v4.0 - Programacin Visual de Microcontroladores COMF


Devuelve el complemento de un registro.

Parmetros:

Registro F: Nombre de registro del que se quiere obtener el complemento.

Destino (d): Indica

en

donde

ser

guardado el resultado de la operacin.

DECF
Decrementa el valor de un registro en 1.

Parmetros:

Registro

F:

Nombre de registro a

decrementar.

Destino (d): Indica en donde ser guardado el resultado de la operacin.

DECFSZ
Decrementa un registro y evala si el resultado es igual a 0. Si el valor del registro decrementado es 0, el diagrama de flujo sigue por el camino del SI, de lo contrario toma el camino del NO.

Parmetros:

Registro

F:

Nombre de registro a

decrementar.

Destino (d): Indica en donde ser guardado el resultado de la operacin.

Pgina 45 de 239

Niple v4.0 - Programacin Visual de Microcontroladores INCF


Incrementa el valor de un registro en 1.

Parmetros:

Registro

F:

Nombre de registro a

incrementar.

Destino (d): Indica en donde ser guardado el resultado de la operacin.

INFCSZ
Incremente un registro. Si el valor de un registro y evala si el resultado de igual a 0.

Parmetros:

Registro

F: Nombre de registro a

incrementar.

Destino (d): Indica en donde ser guardado el resultado de la operacin.

IORWF
Realiza una operacin lgica OR Inclusive entre W y un registro.

Parmetros:

Registro

F: Nombre de registro a

utilizar en la operacin.

Destino (d): Indica en donde ser guardado el resultado de la operacin.

Pgina 46 de 239

Niple v4.0 - Programacin Visual de Microcontroladores MOVF


Mueve el contenido del registro.

Parmetros:

Registro

F: Nombre de registro a

utilizar en la operacin. Destino (d): Indica en donde ser guardado el registro.

MOVWF
Mueve el contenido del registro W a otro registro.

Parmetros:

Registro F: Nombre de registro destino.

RLF
Rota un BIT el contenido del registro haca la izquierda, incorporando el Carry al registro.

Parmetros:

Registro F: Nombre de registro a rotar.

Destino (d): Indica en donde ser guardado el resultado de la rotacin.

Pgina 47 de 239

Niple v4.0 - Programacin Visual de Microcontroladores RRF


Rota un BIT el contenido del registro ha ca la derecha, incorporando el Carry al registro.

Parmetros:

Registro F: Nombre de registro a rotar.

Destino (d): Indica en donde ser guardado el resultado de la rotacin.

SUBWF
Resta el valor de un registro (F) al valor de W.

Parmetros:

Registro F: Nombre de registro a restar.

Destino (d): Indica en donde ser guardado el resultado de la operacin.

SWAPF
Intercambia los nibbles bajo y alto de registro.

Parmetros:

Registro modificar.

F: Nombre de registro a

Destino (d): Indica en donde ser guardado.

Pgina 48 de 239

Niple v4.0 - Programacin Visual de Microcontroladores XORWF


Realiza una operacin lgica OR exclusiva entre el registro y W.

Parmetros:

Registro

F: Nombre de registro a

utilizar en la operacin.

Destino (d): Indica en donde ser guardado el resultado de la operacin.

Instrucciones orientadas a Bits BCF


Limpia un BIT, o sea que, lo pone a 0.

Parmetros:

Registro F: Nombre de registro en donde se encuentra el BIT.

Nombre del BIT: Indica el nombre del BIT a modificar.

BSF
Setea un BIT, o sea que, lo pone a 1.

Parmetros:

Registro F: Nombre de registro en donde se encuentra el BIT.

Nombre del BIT: Indica el nombre del BIT a modificar.

Pgina 49 de 239

Niple v4.0 - Programacin Visual de Microcontroladores BTFSC


Consulta el valor del BIT, si es 0, se descarta una instruccin y ejecuta la siguiente.

Parmetros:

Registro F: Nombre de registro en donde se encuentra el BIT.

Nombre del BIT: Indica el nombre del BIT a consultar.

BTFSS
Consulta el valor del BIT, si es 1, se descarta una instruccin y ejecuta la siguiente.

Parmetros:

Registro F: Nombre de registro en donde se encuentra e l BIT.

Nombre del BIT: Indica el nombre del BIT a consultar.

Instrucciones orientadas a Literales ADDLW


Suma un literal con W.

Parmetros:

Literal K: Valor hexadecimal, decimal, o binario a sumar.

Pgina 50 de 239

Niple v4.0 - Programacin Visual de Microcontroladores ANDLW


Realiza una operacin lgica entre el literal (K) y W.

Parmetros:

Literal K: Valor hexadecimal, decimal, o binario a utilizar en la operacin.

IORLW
Realiza una operacin lgica OR inclusiva entre el literal (K) y W.

Parmetros:

Literal K: Valor hexadecimal, decimal, o binario a utilizar en la operacin.

MOVLW
Asigna el valor del literal (K) a W.

Parmetros:

Literal K: Valor hexadecimal, decimal, o binario a mover.

Pgina 51 de 239

Niple v4.0 - Programacin Visual de Microcontroladores SUBLW


Resta a W el valor del literal (K).

Parmetros:

Literal K: Valor hexadecimal, decimal, o binario a mover.

XORLW
Realiza una operacin lgica OR exclusiva entre W y el valor del literal (K).

Parmetros:

Literal K: Valor hexadecimal, decimal, o binario a utilizar en la operacin.

Instrucciones de Control CLRWDT


Borra el contenido del registro Watchdog y su prescalador .

Pgina 52 de 239

Niple v4.0 - Programacin Visual de Microcontroladores NOP


Instruccin que se utiliza para consumir un ciclo de reloj.

Parmetros:

Repetir : Se refiere al nmero de NOP a introducir.

SLEEP
El procesador es puesto en modo Standby con el oscilador detenido.

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
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.

Pgina 53 de 239

Niple v4.0 - Programacin Visual de Microcontroladores 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 Nombre del BIT se selecciona el nombre del BIT al cual se asignar el valor. Al seleccionar el BIT, Niple presenta informacin seleccionado: En la primera lnea se muestra el nmero de BIT y el registro al cual pertenece. Y en la segunda, se muestra la descripcin o comentario correspondiente al BIT. 2 renglones referida al con BIT

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

Filtrar los bits por registro

Puede

filtrar

la

lista

de

Nombres de Bit para que slo muestre los bits declarados en un registro determinado. Esto resulta muy prctico cuando est

trabajando en Modo de Usuario Experto (se muestran todos los bits del sistema), o cuando ha declarado Usuario. muchos Bits de

Si desea filtrar la lista de bits, active la casilla de verificacin Por registro y seleccione el nombre del registro. De manera automtica se mostrarn todos los bits declarados en el registro seleccionado. Representacin grfica

Pgina 54 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


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

Ejemplos

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. 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 Nuevo 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. En la sintaxis corresponde al Origen. Las opciones disponibles son: Un valor Literal. Esto es, un valor constante. Niple controla de manera automtica el ingreso de lit erales, 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 un 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 Nuevo, 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 55 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


Ejemplos:

Al Registro Dato se le asigna el valor Decimal 00.

Al registro Dato se le asigna e l valor Binario 11011101.

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

Puertos Configurar Puerto


Para consultar sobre la configuracin de los puertos, remtase a la seccin correspondiente a las rutinas especficas de cada versin de Niple.

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). Lo primero que debe seleccionar es el tipo de dato desea escribir en el puerto. Seleccione el tipo de dato y el valor a escribir en el puerto. Niple supervisa la configuracin del puerto seleccionado de manera automtica y advierte si el puerto no est completamente com o 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.

Pgina 56 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


Una vez ingresado los datos solicitados presione el botn Ingresar. 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.

Conversin Analgica/Digital (A/D) Activar/Desact. A/D


Este mdulo es vlido para los modelos de PIC de la lnea 16F87x y para el modelo de PIC 12F675. Para utilizar los mdulos de conversin Analgica/Digital (A/D) primero debe configurar los canales de conversin A/D, y luego debe Activar el mdulo de conversin A/D. Para obtener ayuda acerca de la configuracin de los canales A/D, consulte el tema Rutinas_bsicas/Puertos/Configurar Puerto. Para activar el mdulo de conversin A/D, ingrese al rbol de herramientas y seleccione la funcin Rutinas Bsicas / AD / Activar-Desact. A/D como se muestra en la imagen de la derecha :

Pgina 57 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


Se presenta la pantalla Activar Desactivar conversor A/D. 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 y el estado actual del mdulo de conversin (Activado o Desactivado). En la parte inferior se presentan opciones de Activar o Desactivar el mdulo de conversin A/D. Seleccione la opcin deseada y presione el botn Ingresar.

Recuerde que est actuando sobre todo el mdulo de conversin A/D independientemente de la cantidad de canales configurados. O sea que, si habilita el mdulo, est habilitando todos los canales disponibles y cada canal no puede ser habilitado o inhabilitado de manera independiente.

Representacin Grfica:

Sintaxis: A/D = Estado

Donde: El parmetro Estado puede adoptar algunos de los siguientes valores: Activado Desacti vado Ejemplos: Activar el mdulo A/D Desactivar el mdulo A/D

Conversin A/D
Este mdulo es vlido para los modelos de PIC de la lnea 16F87x y para el modelo de PIC 12F675.

Para poder realizar una conversin Analgica/Digital (A/D) primero debe realizar los siguientes pasos: Configurar los canales de lectura A/D. Para esto, consulte configuracin del puerto A. Activar el mdulo de conversin A/D. Para esto consulte Activar/Desct. A/D.

Una vez configurado y activado el mdulo A/D, est en condici ones de realizar una conversin A/D.

Pgina 58 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


Ingrese al rbol de herramientas y seleccione la opcin Insertar / Rutinas Bsicas / A/D / Conversin A/D como se muestra en la imagen de la derecha. 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 El estado actual del mdulo de conversin A/D (Activado o Desactivado).

Lo primero que Niple le solicita, es que 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, N iple 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. A continuacin se presentan algunos ejemplos de sta caracterstica. En cada caso, compare la informacin de la configuracin actual del Puerto, con la cantidad de canales A/D disponibles, y con la lista de canales A/D que Niple ofrece como canales disponibles.

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.

Pgina 59 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


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 a dcon0) 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.

Elija la manera de realizar la conversin que Ud. desea, seleccionando la opcin correspondiente. Sea cual fuere la opcin que Ud. elija, a continuacin Niple le solicita que seleccione los registros donde guardar el resultado de la conversin A/D. Si bien el conversor A/D del 12F675, realiza la conversin AD con una resolucin a 10 bits, Ud. puede seleccionar la resolucin de con la cual realizar la conversin A/D, que puede ser a 8 o a 10 Bits.

Si selecciona la resolucin a 8 bits, el sistema configura de manera automtica la alineacin del r esultado de la medi cin hacia la izquierda y toma como resultado el registro Alto, ignorando los 2 bits menos significativos.

Pgina 60 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


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

Niple le permite realizar varias lectu ras y promediarlas con lo cual se obtienen mediciones ms esta bles.

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

Pgina 61 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


Si elige la opcin Generar una interrupcin al finalizar la conversin, Niple chequea de forma automt ica el estado de los siguientes habilitadores de int e rrupciones:

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. producir. El modo de conversin por interrupcin no permite realizar el promedio automtico. De lo contrario, la interrupcin no se

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

Al presionar el botn Ingresar, Niple realiza distintas acciones segn del tipo de conversin A/D seleccionado (por Bucles o por Interrupcin).

Conversin A/D por Bucles: Se inserta el bloque

correspondiente a la conversin A/D como lo muestra la siguiente imagen.

Pgina 62 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


Conversin A/D por Interrupcin: Niple inserta de manera automtica los siguientes bloques : Activacin de las interrupciones Conversin A/D Genera de manera automtica el entorno Interrupcin por A/D dentro del cual se insertan los bloques de asignacin que recuperan el resultado de la conversin A/D.

En la siguiente ilustracin se muestran los bloques y el Entorno insertados automticamente.

En la siguiente imagen se muestran los bloques insertados de manera automtica dentro del entorno Interrupcin por A/D.

Pgina 63 de 239

Niple v4.0 - 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.

EEPROM Leer EEPROM


Lee u n 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 variable,

seleccione de la lista el registro en donde est contenida la direccin. En guardar la el lista Registro donde el

dato,

seleccione

registro destino.

Presione el botn ingresar.

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

Pgina 64 de 239

Niple v4.0 - Programacin Visual de Microcontroladores Grabar EEPROM


Graba un literal o un registro en la memoria EEPROM del microcontrolador.

En escribir,

posicin

de

memoria entre Fija

a las o

seleccione de

opciones Variable . Si

direccin

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.

Funciones Lgicas
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 resul tado 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. Puede filtrar todos los bits correspondientes a un registro determinado.

Pgina 65 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


Para esto seleccione la casilla de verificacin Por Registro y a continuacin seleccione de la lista el nombre del registro del cual se quieren filtrar todos los bits declarados en l. Para verificar que realmente se ha seleccionado el BIT deseado, Niple le ofrece informacin acerca del mismo. La informacin presentada es: nmero de BIT, nombre del registro al cual pertenece y comentario asociado al BIT. 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 pri mer 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 qu e, en tiempo de ejecucin, el proceso tomara este camino si el resultado de la evaluacin es falso.

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

Pgina 66 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


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 ingres ar un comentario al bloque. Un a vez ingresados todos los datos solicitados, presiones el botn Ingresar.

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 Nuevo que se encuentra a la derecha de la lista de registros correspondiente. Este bloque debe ser vin culado 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 cor responde a la salida NO, es decir que, en tiempo de ejecucin, el proceso tomara este camino si el resultado de la evaluacin es falso.

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, s eleccione los registros que desea compa rar. A continuacin comparacin. La comparacin puede realizarla con seleccione el opera dor de

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. Pgina 67 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


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 Ingre sar.

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 Nuevo 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 ejecu cin, el proceso tomar este camino si el resultado de la evaluacin es falso.

Matemticas 8 Bits Adicin (8)


Realiza una operacin matemtica de Adicin, utilizando como sumandos un valor literal o un registro. El resultado puede ser guardado en W o 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 S umando1. Repita la operacin anterior en Sumando2. En Resultado, seleccione entre las opciones en el registro W o en otro regist ro. Si seleccion a la opcin en otro registro, seleccione de la lista el registro en donde quiere guardar el resultado de la operacin.

Pgina 68 de 239

Niple v4.0 - Programacin Visual de Microcontroladores Sustraccin (8)


Realiza una operacin matemtica de sustraccin, utilizando como minuendo y sustraendo un valor literal o un registro. El resultado puede ser guardado en W o 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 entre las

opciones en el registro W o en otro registro. Si selecciono la opcin en otro registro, seleccione de la lista el registro en donde quiere guardar el resultado de la oper acin. Haga clic en Ingresar.

Divisin (8)
Realiza una operacin matemtica de divisin, utilizando como divisor valores de un literal o un registro. El resultado puede ser guardado en W o 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 Di videndo. Repita la operacin anterior en Divisor. En Resultado, seleccione entre las opciones en el registro W o en ot ro registro.

Si selecciono la opcin en otro registro, seleccione de la lista el registro en donde quiere guardar el resultado de la operacin.

Haga clic en Ingresar.

Pgina 69 de 239

Niple v4.0 - Programacin Visual de Microcontroladores Multiplicacin (8)


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 puede ser guardado en W o en otro 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 entre las

opciones en el registro W o en otro registro.

Si selecciono la opcin en otro registro, seleccione de la lista el registro en donde quiere guardar el resultado de la operacin.

Haga clic en Ingresar.

Reg(8) 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.

Haga clic en Ingresar.

Pgina 70 de 239

Niple v4.0 - Programacin Visual de Microcontroladores Clculos a 16 Bits Adicin (16)


Realiza una operacin matemtica de Adicin de valores a 16 bits, utilizando como sumandos un valor literal o el valor formado por 2 registros. El resultado puede es guardado en 2 registros. En Sumando1 seleccione entre las opciones un literal o del valor de 2 Registros. Si seleccion la opcin Registros,

seleccione de la lista el registro a utilizar como Sumando1. Repita la operacin anterior en Sumando2.

En Resultado, seleccione entre las opciones en el registro W o en otro registro. Seleccione los registros donde guardar el resultado de la operacin. Haga clic en Ingresar.

Sustraccin (16)
Realiza una operacin matemtica de sustraccin con valores a 16 bits, utilizando como numerador o denominador un valor literal o el valor de 2 registros. El resultado es guardado en ot ros 2 registros. En Denominador seleccione entre las

opciones un literal o el valor de 2 Registros. Si seleccion la opcin Registros,

seleccione de la lista los registros a utilizar como Denominador. Repita la operacin anterior en Sustraendo. Seleccione los registros donde guardar el resultado de la operacin.

Haga clic en Ingresar.

Pgina 71 de 239

Niple v4.0 - Programacin Visual de Microcontroladores Multiplicacin (16)


Realiza una operacin matemtica de Multiplicacin con valores a 16 bits,

utilizando como multiplicador valores de un literal o el valor contenido en 2 registros. El resultado puede es guardado en 4 registros. En Multiplicando seleccione entre las opciones un literal o el valor de 2 Registros.

Si

seleccion a

la

opcin

Registros,

seleccione de la lista el registro a utilizar como Multiplicando.

Repita

la

operacin

anterior

en

Multiplicador. Seleccione los registros donde guardar el resultado de la operacin.

Haga clic en Ingresar.

Reg (16) a BCD


Realiza el clculo de conversin de un n mero contenido en 2 registros a BCD, es decir, descomponerlo en unidad, decena, centena, unidad de mil y decena de mil.

Seleccione el registro que contiene el valor a descomponer.

Seleccione

los

registros

donde

desea

almacenar el resultado de la descomposicin a U, D, C, U de mil y D de mil.

Haga clic en Ingresar.

Pgina 72 de 239

Niple v4.0 - Programacin Visual de Microcontroladores BCD a Reg (16)


Realiza el clculo de conversin de un nmero contenido en 2 registros en unidad, a BCD, decena, es decir,

descomponerlo

centena,

unidad de mil y de cena de mil.

Seleccione el registro que contiene el valor a descomponer.

Seleccione

los

registros

donde

desea

almacenar el resultado de la descomposicin a U, D, C, U de mil y D de mil.

Haga clic en Ingresar.

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 puls o es controlado por medio de un valor a 10 bits contenido en los registros

AnchoPulso1 y AnchoPulso2. A 5000 Hz el rango vli do para el control del ancho de pulso esta comprendido entre 0 y 200. Partiendo de esto, Ud. ne cesita escalar el valor contenid o 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 obti ene un valor proporcional, es decir, el mismo porcentaje o relacin entre el rango de destino con respecto al rango de origen.

Pgina 73 de 239

Niple v4.0 - Programacin Visual de Microcontroladores Comunicaciones RS232


Para consultar sobre los mdulos de comunicacin RS232, rem tase a la seccin correspondiente a las rutinas especficas de cada versin de Niple.

RS485
Si bien el mdulo RS485 est disponible en todas las versiones de Niple, en los modelos 16F84 y los modelos de la lnea 12F6xx no se encuentra la opcin de comunicacin por USART dado que estos modelos de PIC no disponen en un mdulo USART. Dado que, salvando la diferencia antes mencionada, el mdulo de comunicacin RS485 se utiliza de la misma manera y cuenta con las mismas opciones, hemos decidido poner este bloque en la seccin de rutinas comunes.

La comunicacin RS2485 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 informaci n al resto de los de micros denomina dos 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 escla vos a una distancia m xima 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 au tonoma.

Niple soporta la interfaz D S75176 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.

Pgina 74 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


A continuacin se muestra un esquema de la estructura de un proyecto tpico de implementacin de una red RS485.

Modo Maestro
Para ingresar a los mdulos de RS485 ingrese al rbol de herramientas como lo muestra la imagen de la derecha. Se presenta la pantalla Comunicacin RS485 Dispositivo Maestro. Niple le permite utilizar el mdulo USART para realizar las comunicaciones RS485. Seleccione el modo de comunicacin , por mdulo USART o por cdigo.

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 pre establecidos para ser utilizados por el mdulo USART.

Pgina 75 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


Niple le recomienda NO utilizar el mdulo USART para realizar comunicaciones RS485 en modo Maestro dado que la mayor parte del control ( envo y recepcin de datos) se realiza por cdigo y no por interrupciones de USART. Por ejemplo, cuando un PIC en modo maestro solicita datos a otro micro en modo Esclavo, el maestro, sabe que debe esperar la respuesta del esclavo y tambin cuantos datos debe recibir como respuesta. Es decir, que en este caso, la recepcin de los datos es totalmente previsible. Por esto no es necesario utilizar la interrupcin por USART para la recepcin de los datos del esclavo.

Es recomendable utilizar el mdulo USART para el tipo de comunicacin RS232, por ejemplo para recibir datos desde una PC, lo cual s puede resultar totalmente imprevisible y la interrupcin por USART resulta de vital importancia.

En el modo de comunicacin por cdigo Niple le permite seleccionar los pines de TX y RX. Dado que no se utiliza el mdulo USART del PIC En ambos modos de comunicacin, debe seleccionar el pin de seleccin de TX/RX.

Luego seleccione la velocidad de comunicacin.

Luego debe seleccionar el tipo de conexin del bus RS485.

Niple soli cita este el tipo de conexin ya que en una comunicacin Punto a Punto el maestro se cone cta con un esclavo de manera directa, es decir que no se configura una red con varios esclavos, sino que se conecta un solo esclavo, y eso implica que no es necesario asignarle un nro. de esclavo y por ende, Niple no requiere este dato.

Pgina 76 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


Si por el contrario selecciona la opcin Red, esto significa que el dispositivo maestro va estar conectado a una red de varios micros esclavos y por esto solicita que se indique el nro de esclavo al cual se va a dirigir el comando. En este caso vamos a utilizar la opcin Red para mostrar como Niple solicita el nro de esclavo. Observe que en la lnea de texto debajo de la velocidad de comunicacin Niple incluye una breve descripcin sobre el tipo de comunicacin seleccionado.

Al seleccionar la opcin de conexin, Niple ya le puede mostrar la configuracin del hardware correspondiente.

Luego seleccione la funcin que el maestro debe realizar :

Para interpretar mejor cada una de las f unciones disponibles, aclaramos los significamos que damos a las siguientes palabras: Comando: Enviar una orden a un esclavo a partir de la cual el esclavo realiza una determ inada 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 procesos antes de enviar los datos solicitados. A partir de este punto, las opciones de la pantalla dependen de la funcin s eleccionada Pgina 77 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


A continuacin se describen cada una de estas funciones: Enviar comandos: El maestro enva uno o ms comandos a un esclavo y no espera respuesta del mismo. Al seleccionar la funcin de Enviar comando, Niple presenta la solapa de Enviar datos donde debe

espe cificar los bytes que desea enviar como comandos .

Interrogar esclavo: Enva uno o ms comandos a modo de solicitud de datos donde el esclavo debe

responder. El maestro espera a que el esclavo enve los datos de

respuesta. Niple muestra las solapas de Enviar datos y Recibir datos.

Recibir datos: Recibe datos desde un esclavo. Muestra la solapa Recibir datos.

Pgina 78 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


A continuacin vamos a describir las secciones de Enviar datos y Recibir datos las cuales son comunes a todas las funciones.

Enviar Comandos En esta seccin se indican cuales son los comandos o datos a enviar. Como mencionamos anteriormente, si selecciona el modo de conexin Punto a punto no necesita especificar el nro. de esclavo.

Pero si ha seleccionado el modo de conexin en Red deber indicar el nro de esclavo al cual va a enviar el dato o comando.

El nro de esclavo puede ser un valor Fijo (un literal) o un valor variable (un r egistro). Si selecciona el tipo de valor Fijo , estar haciendo que el PIC enve el

comando siempre al mismo esclavo.

Mientras que si elige la opcin Variable el PIC puede enviar el dato o comando a diferentes esclavos segn el valor que

contenga el registro seleccionado como variable. De esta manera puede generar una estructura cclica para enviar comando o consultas a diferentes esclavos modificando solo el valor del regis tro seleccionado como variable.

A continuacin debe seleccionar la cantidad de comandos que desea enviar. Niple le permite enviar hasta 5 comandos l o cuales representan hasta 5 niveles de comandos.

Pgina 79 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


Por ejemplo. Supongamos que disea un proyecto con la siguiente arquitectura.

En este caso vamos a disear un protocolo de comunicacin formado por 3 niveles de comandos. Nivel 1 = Comando. Indica el comando que debe ejecutar el esclavo cuyos valores posibles pueden ser: 01 Habilitar sensor 02 Inhabilitar sensor 03 Leer sensor

Nivel 2 = Tipo de sensor. Este valor es de tipo parmetro. 01 Tipo sensor A 02 Tipo sensor B

Nivel 3 = Nro. de sensor a leer . 01 Sensor 1 02 Sensor 2

El primer nivel de comandos es el Comando propiamente dicho y los 2 niveles restantes podemos interpretarlos como Pa rmetros los cuales indican sobre qu sensor se desea ejecutar el comando.

De esta maner a, por ejemplo: Para activar el sensor Tipo A, Nro. 1 del primer esclavo debe enviar la siguiente secuencia de coman dos 01, 01, 01, 01. Para leer el valor del sensor Tipo A, Nro.1 del esclavo 2 debe enviar la siguiente secuencia de comandos 03, 02, 01, 01.

Pgina 80 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


De esta manera se utilizan 3 niveles de comandos. (Previamente se enva e l Nro. de esclavo).

En cada uno de los 5 niveles puede generar hasta 256 comandos (o

parmetros), con lo cual se puede generar una gran cantidad de comandos o aplicar una gran cantidad de parmetros lo cual facilita el desarrollo proyectos fcilmente escalables. Niple administra el envo de todos los datos de comandos de manera automtica. Seleccione la cantidad de comandos que desea enviar.

Cada uno de estos comandos puede ser de tipo Fijo o Variable.

Recibir Respuesta En esta seccin se indica como reci bir los datos que envan los esclavos. Recuerde que esta seccin solo esta disponible para las funcione Interrogar

Esclavo y Recibir Datos.

Primero ingrese la cantidad de registros que espera recibir desde el dispositivo esclavo. La grilla de r e cepcin de datos se ajusta automticamente la cantidad de datos ingresados.

Pgina 81 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


Luego debe seleccionar los registros

donde guardar cada uno de los bytes e r cibidos. Para esto haga un clic en la celda de la grilla correspondiente al byte a recibir.

Seleccione el registro en el cual desea guardar el byte recibido.

Checksum Niple le permite calcular el checksum de manera automtica. Para esto active la opcin Calcular e incluir el checksum al enviar y recibir los datos que se encuentra en la seccin Configuracin . Al seleccionar la opcin de checksum, se agregar automticamente 2 registros, que son en los cuales se va a realizar el clculo. En el caso del envo de datos se calcula de manera automtica el checksum y se realiza el envo de los bytes de CRC (checksum). En el caso de la recepcin de datos, se reciben los bytes de CRC y se calcula y verifica el checksum poniendo a 0 el bit rx_ok (bit 0 del registro _np_banderas).

Por ltimo, presione el botn Ingresar.

Pgina 82 de 239

Niple v4.0 - Programacin Visual de Microcontroladores Modo Esclavo


Para ingresar al mdulo de RS485 Dispositivo Esclavo ingrese al rbol de herramientas como lo muestra la imagen de la derecha. Se presenta la pantalla Comunicacin RS485 Dispositivo Maestro. Niple le permite utilizar el mdulo USART para realizar las comunicaciones RS485. Seleccione el modo de comunicacin, por mdulo USART o por cdigo. 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.

Niple le recomienda NO utilizar el mdulo USART para realizar comunicaciones RS485 en modo Maestro dado que la mayor parte del control (envo y recepcin de datos) se realiza por cdigo y no por interrupciones de USART. Por ejemplo, cuando un PIC en modo maestro solicita datos a otro micro en modo Esclavo, el esclavo sabe cuando comandos debe esperar. Es decir, que en este caso, la recepcin de los datos es totalmente pr evisible. Por esto no es necesario utilizar la interrupcin por USART para la recepcin de los datos del esclavo.

Es recomendable utilizar el mdulo USART para el tipo de comunicacin RS232, por ejemplo para recibir datos desde una PC, lo cual s puede resultar totalmente imprevisible y la interrupcin por USART resulta de vital importancia.

En el modo de comunicacin por cdigo Niple le permite seleccionar los pines de TX y RX. Dado que no se utiliza el mdulo USART del PIC. En ambos modos de comunicacin, debe seleccionar el pin de seleccin de TX/RX. Luego seleccione la velocidad de

comunicacin.

Pgina 83 de 239

Niple v4.0 - Programacin Visual de Microcontroladores

Luego debe seleccionar el tipo de conexin del bus RS485.

Niple solicita este el tipo de conexin ya que en una comunicacin Punto a Punto el maestro se conecta con un esclavo de manera directa, es decir que no se configura una red con varios esclavos, sino que se conecta un solo esclavo, y eso implica que no es necesario asignarle un nro. de esclavo y por ende, Niple no requiere este dato.

Si por el contrario selecciona la opcin Red, esto significa que el dispositivo maestro va estar conectado a una red de varios micros esclavos y por esto es necesario indicar que nro. de esclavo es el que corresponde al dispositivo actual .

Al seleccionar la opcin de conexin, Niple ya le puede mostrar la configuracin del hardware correspondiente.

El nro. de dispositivo se puede asignar de manera Fija o Variable. En este punto, es muy importante tener en cue nta que el nro. de dispositivo Fijo implica tener que cambiar el programa (reprogramar el PIC) para cambiar el nro. de dispositivo dado que este nmero no se pue de cambiar una vez que ha sido compilador el programa y grabado en el PIC. En un proyecto formado por una red de micros, es muy comn que todos micros esclavos realicen los mismos procesos. Es decir que un micro esclavo bien podra trabajar en cualquiera de los puntos de control ocupado por cualquiera de l os otros esclavos.

Pgina 84 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


Y para que un micro pueda ser utilizado en el lugar de cualquiera de los otros micros esclavos es indispensable que el nro. de esclavo pueda ser modific ado sin necesidad de reprogramar el PIC. Esto se logra utilizando un nro. de esclavo variable. Y haciendo que el micro obtenga el nro. de esclavo al iniciar el programa.

Luego seleccione la funcin que el dispositivo esclavo debe realizar:

Para interpretar mejor cada una de las funciones disponibles, aclaramos los significamos que damos a las siguientes palabras: Consulta : Recibir una orden desde el maestro y responder enviando uno o varios datos . Comando: Recibir una orden desde el maestro y realizar una determinada accin pero esta accin no incluye el envo de una respuesta hacia el maestro. Respuesta : Enviar datos al maestro.

A partir de este punto, las opciones de la pantalla dependen de la funcin seleccionada A continuacin se describen cada una de e stas funciones: Responder consulta : Se reciben los comandos desde el maestro y enva uno o ms datos como respuesta . Al seleccionar esta funcin, Niple

presenta las solapas

de Recibir

comandos y Enviar Respuesta.

Pgina 85 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


Recibir comandos : Recibe uno o ms comandos desde el maestro. Niple muestra las solapas de Recibir com andos .

Recibir datos: Recibe datos desde un esclavo. Muestra la solapa Recibir datos.

continuacin

vamos

describir

las

secciones de Recibir

Comandos y Enviar

Respuestas las cuales son comunes a todas las funciones.

Recibir Comandos En esta seccin se indica como recibir los comandos que enva el maestro . Recuerde que esta seccin solo esta disponible para las funcione Responder Consulta y Recibir Comandos. Como mencionamos anteriormente, en una red 485, cada dispositivo esclavo se identifica mediante un nmero de esclavo. En la seccin Configuracin se defini el valor que identifica al dispositivo actual. Ahora debe seleccionar el registro en el cual guardar el nro. de dispositivo enviado por el maestro. Al recibir los datos, Niple compara automticamente el valor del dispositivo actual con el nro. de esclavo recibido desde el maestro y determina si el esclavo esta enviando comandos al dispositivo actual. Si el nro. de esclavo actual no coincide con el enviado por el maestro, Niple ignora el resto de los comando de manera automtica.

Pgina 86 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


Si el nro. de esclavo enviado por el maestro coincide con el nro. de dispositivo actual, Niple recibe y ejecuta el resto de los comandos de manera automtica. Seleccione el registro en el cual recibir el nro de dispositivo.

El registro del nro. de esclavo recibido NO ES EL MISMO que el registro de nro de esclavo seleccionado en la seccin Configuracin . Debe seleccionar un registro diferente al utilizado para guardar el nro de esclavo a ctual.

Primero

seleccione

la

cantidad

de

comandos (byte) que espera recibir desde el dispositivo maestro.

Seleccione cada uno de los registros en los cual es desea guardar los comandos recibido.

Pgina 87 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


Enviar Respuesta Para enviar la respuesta al a maestro, primero debe seleccionar la cantidad de registros que desea e nviar.

Al ingresar la cantidad de registro, la grilla se adapta automticamente a la cantidad de datos a enviar.

Para seleccionar el valor a enviar como respuesta en cada byte seleccione el byte correspondiente en la grilla de datos a enviar.

En la parte inferior, seleccione el tipo de dato Fijo o Variable. Si enve un dato de tipo Fijo como respuesta, el PIC siempre enviar el mismo dato.

Mientras que si selecciona el tipo de datos variable, Niple enva el dato guardado en el registro seleccionado.

Una vez seleccionado el valor a enviar, presione el botn OK. Repita esta operacin para cada byte de la grilla de datos a enviar.

Pgina 88 de 239

Niple v4.0 - Programacin Visual de Microcontroladores Tablas


Una tabla consiste en una metodol oga de programacin a travs de la cual se pueden realizar consultas obteniendo un valor de resultado en fun cin de un valor de entrada (ndice). Por ejemplo: la siguiente tabla devuelve el cdigo ASCII correspondiente al valor ingresado como ndice. ndice Valor Resultado 0 D48 1 D49 2 D50 3 D51 4 D52 5 D53 6 D54 7 D55 8 D56 9 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 89 de 239

Niple v4.0 - 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 libr era de tablas. Para crear una tabla ingrese al men Declar acin / 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 sal tearse ninguno de ellos. Para ingresar nuevos elementos a la ta bla 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 t abla 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 c reada en distintos proyectos sin necesidad de volver a de clararla cada vez que la necesite.

Pgina 90 de 239

Niple v4.0 - Programacin Visual de Microcontroladores ConsultarTabla


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.

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 91 de 239

Niple v4.0 - Programacin Visual de Microcontroladores Visualizacin Display de 7 segmentos Multiplexado


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 combi nacin binaria correspondiente a cada valor. Niple le permite utilizar hasta 8 displays conectados en paralelo.

Primero seleccione el tipo de display a utilizar, esto es: nodo Comn o Ctodo Comn.

Una vez seleccionado el tipo de display a utilizar, Niple le presenta informacin acerca del estado de los puertos. Esta informacin es importante a la hora de seleccionar los pines de conexin de los displays.

Si algn puerto an no ha sido configurado, Niple le ofrece la oportunidad de configurarlo. Pero lo recomendable es cancelar el cuadro de visualizacin en displays, configurar el puerto en el inicio del programa y volver cargar el mdulo de visualizacin por displays.

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

A continuacin debe seleccionar los valores a visualizar en cada display. Pgina 92 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


En cada display se puede visualizar el valor de un registro o u n 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.

2) O puede visualizar un valor constante (un valor literal): en este caso se muestra siempre el mismo v alor. 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 v ara si se trata de un display tipo nodo comn o Ctodo comn, Niple controla el cdigo gen erado segn el tipo de display. Una vez ingresados los valores que desea visualizar en cada display, debe seleccionar los pines correspondientes al

multiplexado, es decir, los pines a travs de los cuales se habilita y se deshabilita cada display en el proceso de multiplexado.

Pgina 93 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


Debajo de cada display se encuentra una lista desplegable. En cada una de estas listas seleccione el pin al cual se conecta el comn de cada display. Niple como vlidas, presenta opciones solo los

pines de los puertos que se encuentra como

configurados salida. Una seleccionados

vez los

pines de habilitacin de cada display,

Niple le solicita que seleccione los pines correspon dientes al

bus de datos. En este caso se trata de 7 pines, uno por cada barra de los display.

El criterio de seleccin de los pines del bus de datos es el mismo que para los pines de habilitacin de los displays.

Pgina 94 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


Una vez seleccionados los pines correspondientes al bus de datos. Niple solicita que ingrese el tiempo de muestreo, es decir, el tiempo que permanece encendido cada display en el proceso de multiplexado. Por defecto se asigna el valor de 200 uS. En general, no es necesario cambiar este valor.

Cuando seleccione los pines tanto de habilitacin de los displays como los pines del bus de datos, Niple controla que no se repitan los pines seleccionados, dado que esto producira un error en el proceso de multiplexado. Al repetir alguno de los pines solicitados, Niple los presenta en color rojo y deshabilita el botn Ingresar.

Una vez ingresados todos los parmetros necesarios. Puede consultar el esquema de conexi n que se muestra en la solapa esquema.

Puede realizar una impresin del esquema de conexin haciendo un clic en el boto Imprimir.

Por ltimo presione el botn Ingresar.

Pgina 95 de 239

Niple v4.0 - Programacin Visual de Microcontroladores Multiplexado (4511)


Este mdulo permite visualizar valores en displays de 7 segmentos mediante u codificador CD4511 para generar la combinacin binaria correspondiente a cada valor. Una de las

ventajas de este tipo de visualizacin es

que solo se requieren 4 bits para el bus da datos a diferencia de los 7 bits requeridos para la visualizacin sin codificador. Niple utilizar displays le permite 8

hasta

conectados

en paralelo. Prim ero seleccione el tipo de display a utilizar.

Una vez seleccionado el tipo de display a utilizar, Niple le presenta informacin acerca del estado de los puertos. Esta informacin es importante a la hora de seleccionar los pines de conexin de los displays. Si algn puerto an no ha sido configurado, Niple le ofrece la oportunidad de configurarlo. Pero lo recomendable es

cancelar el cuadro de visualizacin en displays, configurar

el puerto en el inicio del volver mdulo visualizacin displays. Luego le solicita que seleccione la programa cargar y el de por

cantidad de displays a utilizar esto es, entre 2 y 8. A continuacin

debe seleccionar los

Pgina 96 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


valores a visualizar en cada display. En cada display se puede visualizar el valor de un registro o un valor li teral. Para esto debe hacer un doble clic en la imagen de cada display.

Al hacer doble clic en la imagen de un display se presenta la pantalla de Mostrar un valor en un display. Mediante la utilizacin del codificador CD4511 solo puede visualizar valores numricos. Es decir que no puede crear sus propios smbolos ya que el codificador CD4511 no reconoce dichos cdigos. Por esto solo puede visualizar el valor que contiene un registro: este valor puede ser variable y no requiere la codificacin mediante tabla ya que sta tarea la realiza el CD4511. Niple informa acerca de esto en la pantalla. Una vez ingresados los valores que desea visualizar en cada display, debe seleccionar los pines correspondientes al multiplexado, es decir, los pines a travs de los cuales se habilita y se deshabilita cada display en el proceso de multiplexado. Debajo de cada display se encuentra una lista desplegable. En cada una de estas listas seleccione el pin al cual se conecta el comn de cada display. Niple presenta como opciones vlidas, solo los pines de los puertos que se encuentra configurados como salida.

Pgina 97 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


Una vez seleccionados los pines de habilitacin de cada display, Niple le solicita que seleccione los pines correspondientes al bus de datos. En este caso se trata de 4 pines los cuales son conectados al CD4511. El criterio de seleccin de los pines del bus de datos es el mismo que para los pines de habilitacin de los displays.

Una vez seleccionados los pines correspondientes al bus de datos. Niple solicita que ingr ese el tiempo de muestreo, es decir, el tiempo que permanece encendido cada display en el proceso de multiplexado. Por defecto se asigna el valor de 200 uS. En general, no es necesario cambiar este valor.

Cuando seleccione los pines tanto de habilitacin de los displays como los pines del bus de datos, Niple controla que no se repitan los pines seleccionados, dado que esto producira un error en el proceso de multiplexado. Al repetir alguno de los pines solicitados, Niple los presenta en color rojo y deshabilita el botn Ingresar.

Pgina 98 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


Una vez ingresados todos los parmetros necesarios. Puede consultar el esquema de conexin que se muestra en la solapa esquema.

Puede realizar una impresin del esquema de conexin haciendo un clic en el boto Imprimir.

Por ltimo presione el botn Ingresar.

Pgina 99 de 239

Niple v4.0 - 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 disti ntos pines del microcontrolador. Niple administra las rutinas de control de manera au tomtica. Ud., solo de indica que mensaje desea visualizar en cada una de las pantallas LCD.

En la versin de Niple para PIC 16F6xx puede controlar hasta 8 p antallas LCD y en la versin Para PIC 16F84 puede controlar 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 hasta 7 pantallas

manera automtica.

Principales caractersticas: Pgina 100 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


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 mensaj e .

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 al rbol de herramientas en:

Insertar/Rutinas Bsicas/Visualizacin/Pantalla LCD/Configurar LCD

Pgina 101 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


Al realizar un doble clic en Configurar LCD se presenta la pantalla Configuracin de LCD.

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 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.

Pgina 102 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


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.

Si selecciona el bus de datos a 8 pines, Niple utiliza un puerto completo.

Pgina 103 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


A continuacin seleccione los pines correspondientes al bus de datos. Para esto debe seleccionar el puerto correspondiente en la lista Puerto. 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. Una vez seleccionados los pines correspondientes al bus de datos, presione el botn Asignar 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). Cuando activa la casilla de verificacin de un pin de control, Niple le muestra informacin acerca del pin seleccionado y los valores de control correspondientes (0 y 1). Al igual que en el caso de los pines del bus de datos, una vez que haya seleccionado el puerto y el pin correspondiente, presione el botn Asignar.

Una vez ingresados todos los datos solicitados, presione el botn Insertar y en el diagrama de flujo actual se insertara un bloque de tipo configuracin con las caractersticas seleccionadas. Si desea modificar alguna de stas cara ctersticas, seleccione el bloque y presione la tecla Enter. O bien puede seleccionar el bloque, hacer un clic con el botn derecho del mouse y seleccionar la opcin Editar Blo que. La configuracin de la pantalla LCD se realiza solo una vez en un proyecto.

Pgina 104 de 239

Niple v4.0 - Programacin Visual de Microcontroladores Utilizando ms de una pantalla LCD


Niple le permite controlar ms de una pantalla LCD. Para esto, los pines correspondientes al bus de d atos 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 con figurado. Para esto debe ingresar al rbol de herramientas y seleccionar el comando Configurar LCD. Cuando Niple carga la pantalla Configurar LCD, supervisa si ya existe alguna otra configuracin de LCD en todo el proyecto, si esto es as, Niple asume que se trata de un segundo LCD. Entonces informa al usuario mediante el siguiente mensaje:

Como lo describe el mensaje, Niple utilizara los pines del bus de datos y los pines de control del LCD RS y RW para el nuevo LCD y estas opciones permanecern inhabilitadas al cargarse la pantalla Configurar LCD. Slo deber seleccionar el pin correspondiente al control E para el nuevo LCD.

Pgina 105 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


Seleccione el BIT correspondiente al pin de control E del LCD. Por ltimo presione la el botn Ingresar.

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 Bsi cas/Visualiza-

cin/Pantalla 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 mens aje.

Pgina 106 de 239

Niple v4.0 - 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 la ms adelante), Caracteres

seleccione Invisibles.

opcin

Adems la opcin Limpiar pantalla se presenta como activada. Esta opcin realiza una lim pieza de la pantalla antes de visualizar el mensaje. Esto significa que cualquier ser borrado que

completamente

mensaje

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.

Dado que el objetivo de Niple es minimizar al mximo la posibilidad de error, ofr ece 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. Pgina 107 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


Por esto, si la opcin Limpiar Pantalla se desmarca, se activa la opcin Ubicar e l 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 y del parpadeo. Una vez seleccionadas todas las opciones de la configuracin del mensaje, se activa la Solapa Mens aje.

A continuacin debe ingresar el mensaje propiamente dicho. 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.

Pgina 108 de 239

Niple v4.0 - Programacin Visual de Microcontroladores

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 109 de 239

Niple v4.0 - 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 m anera 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.

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 v alor ser mostrado en la correspondiente variable.

Pgina 110 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


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 si ha configurado el cursor como Visible, Niple le solicita que ingrese la ubicacin donde quiere visualizar el cursor.

Pgina 111 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


Por ltimo presione el Botn Ingresar. 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 parte y puede en caso desde del ser

cualquier programa visualizado LCD en

cualquier 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.

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

Pgina 112 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


Primero debe selecciona r 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 Ingresar, Niple ingresa 2 bloques. En el primer bloque se declara el LCD seleccionado como LCD Actual. El segundo bloque corresponde a la visualizacin del mensaje (llamada a rutina de usuario). El mensaje ser visualizado en el LCD que est definido como actual.

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 u n 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 eje cutan stas configuraciones cuando el mensaje no esta siendo visualizado en el LCD actual.

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.

Pgina 113 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


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.

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

Pgina 114 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


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 d e 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 independient emente 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 microcontrolador 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 115 de 239

Niple v4.0 - Programacin Visual de Microcontroladores Teclado 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 pones 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 116 de 239

Niple v4.0 - Programacin Visual de Microcontroladores Memorias EEPROM I2C Leer Memoria EEPROM I2C
Para leer datos de memorias EEPROM de la familia 24Cxx x. Ingrese al rbol de herramientas a:

Se presenta la pantalla Leer Memoria EEPROM 24Cxxx. Seleccione el modelo de memoria que desea utilizar. Al seleccionar el modelo, N iple le muestra la cant idad de registros de 8 bits que contiene el modelo seleccionado.

Luego debe seleccionar los pines de seal de reloj y de datos

correspondientes al bus I2C. Primero seleccione el puerto y luego el pin correspondiente.

Una vez seleccionados los pines del bus I2C, debe seleccionar el nmero de dispositivo al cual 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 correspon dientes de cada dispositivo. La cantidad de disposit ivos 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 117 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


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 Fi ja 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.

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

Pgina 118 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


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 EEPROM en el diagrama de flujo.

Escribir Memoria EEPROM I2C


Para guardar datos de memorias EEPROM de la familia 24Cxxx ingrese al rbol de herramien tas como se muestra en la imagen de la derecha: Se presenta la pantalla Escribir Memoria EEPROM 24Cxxx.

Seleccione el modelo de memoria que desea utilizar. Al seleccionar el modelo, Niple le muestra la cantidad de registros de 8 bits que contiene el modelo seleccionado. Luego debe seleccionar los pines de seal de reloj y de datos

correspondientes al bus I2C. Primero seleccione el puerto y luego el pin correspondiente. Una vez seleccionados los pines del bus I2C, debe seleccionar el nmero de dispositivo al cual desea acceder.

Pgina 119 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


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

seleccio nado. 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.

Pgina 120 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


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 pred eterminar 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 indicar el a escribir, que debe desea

dato

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.

Pgina 121 de 239

Niple v4.0 - Programacin Visual de Microcontroladores

Por ltimo, puede ingresar un comentario.

Una vez ingresados los parmetros requeridos, puede visualizar el esquema de conexin.

Pgina 122 de 239

Niple v4.0 - Programacin Visual de Microcontroladores Memorias RAM Leer Memoria RAM I2C
Niple le permite utilizar memorias RAM. Actualmente soporta la memoria PCF8570 la cual tiene una capacidad de 256 registros. Esto le permite aumentar considerablemente la capacidad de procesamiento de los PIC, sobre todo, los que tienen menos capacidad de memoria. Puede conectar hasta 8 memorias en un bus I2C. Para leer datos de la memoria RAM ingrese al rbol de herramientas como se muestra en la imagen de la derecha: Se presenta la pantalla Leer memoria RAM por I2C. Seleccione el modelo de memoria que desea utilizar. Al seleccionar el modelo, Niple le muestra la cantidad de registros de 8 bits que contiene el modelo seleccionado. Actualmente, memoria RAM Niple soporta pero la en

PCF8570

futuras versiones se irn agregando ms modelos. Luego debe seleccionar los pines de seal de reloj y de datos

correspondientes al bus I2C. Primero seleccione el puerto y luego el pin correspondiente. Una vez seleccionados los pines del bus I2C, debe seleccionar el nmero de dispositivo al cual desea acceder. Recuerde que puede conectar

varios dispositivos en paralelo formando una red, en la cual, a cada dispositivo se le asigna un n mero. Este nmero de dispositivo se configura conectado los pines corresp on dientes 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 123 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


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 Va riable. Si selecciona el tipo de direccin Fija debe ingresar la posicin de mem oria 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 al el registro el

seleccionado programa.

ejecutarse

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 seleccion ar el registro donde guardar el dato obtenido desde la memoria. Por ltimo, puede ingresar un c omentario.

Pgina 124 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


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


Niple le permite utilizar memorias RAM. Actualmente soporta la memoria PCF8570 la cual tiene una capacidad de 256 registros. Esto le permite aumentar considerablemente la capacidad de procesamiento de los PIC, sobre todo, los que tienen menos capacidad de memoria. Puede conectar hasta 8 memorias en un bus I2C. Para escribir datos de la memoria RAM ingrese al rbol de herramientas como se muestra en la imagen de la derecha: Se presenta la pantalla Escribir memoria RAM por I2C. Seleccione el modelo de memoria que desea utilizar. Al seleccionar el modelo, Niple le muestra la cantidad de registros de 8 bits que contiene el modelo seleccionado. Luego debe seleccionar los pines de seal de reloj y de datos correspondientes al bus I2C. Primero seleccione el puerto y luego el pin correspondiente. Una vez seleccionados los pines del bus I2C, debe seleccionar el nme ro de dispositivo al cual desea acceder. Recuerde varios que pued e en conectar paralelo

dispositivos

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 Pgina 125 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


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

seleccio nado. 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. Me diante 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 r egistro seleccionado al ejecutarse el progr ama. 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 126 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


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 v alor 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.

Una

vez

ingresados

los

parmetros

requeridos, puede visuali zar el esquema de conexin.

Pgina 127 de 239

Niple v4.0 - Programacin Visual de Microcontroladores Reloj de Tiempo Real Configurar el PCF8583
El reloj de tiempo real PCF8583 controla fechas y horas de manera autnoma y precisa, sin necesidad que el microcontrolador se ocupe de esto ahorrando, cdigo y tiempo de proceso. Para poder utilizar el reloj de tiempo real PCF8583, primero debe configurarlo. Para esto ingrese al rbol de herramientas como se muest ra en la imagen de la derecha. Se presenta la pantalla Configuracin Reloj / Calendario PCF8583 (I2C). Primero debe seleccionar los pines de seal de reloj y de datos correspondientes al bus I2C. Primero seleccione el puerto y luego el pin correspondiente.

Una vez seleccionados los pines del bus I2C, debe seleccionar el nmero de dispositivo al cual 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. Puede conectar un mximo de 2 dispositivos en un a red. Tenga en cuenta que cdigo de dispositivo del PCF8583 es el mismo que el cdigo de las memorias EEPROM. Por esto, cuando disea una red I2C compuesta por memorias EEPROMs y reloj PCF8583, debe asignar los nmeros de dispositivos como si se tratara del mismo tipo de dispositivos. Primero debe seleccionar el modo de trabajo, los cuales pueden ser reloj de 32768 Khz. o reloj 50 Hz. Al seleccionar el modo de trabajo, se habilitan las solapas denominadas Fecha, Hora y Alarmas.

Pgina 128 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


Puede configurar cualquiera de estos parmetros de manera independiente, es decir, que no debe configurar todos los parmetros, sino, slo los que necesite .

Configuracin de Fecha
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 in clusive. - 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 129 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


La siguiente imagen muestra una configuracin de fecha Variable:

Configuracin de Hora
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 - 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.

Pgina 130 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


La siguiente imagen muestra una configuracin de Hora Fija:

La siguiente imagen muestra una configuracin de Hora variable:

Pgina 131 de 239

Niple v4.0 - 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 pr oduce 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 132 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


Alarma Semanal: Dia1 y Dia2 - Fijo: entre Domingo a Sbado. - Variable: un registro que contiene el valor del da seleccionado. Debe generar el cdigo c orrespondiente al da. Los cdigos correspondientes a los das son los siguientes: Domingo Lunes Martes Mircoles Jueves Viernes Sbado b00000001 b00000010 b00000100 b00001000 b00010000 b00100000 b01000000

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 133 de 239

Niple v4.0 - Programacin Visual de Microcontroladores

La configuracin de alarma por Temporizacin le permite realizar temporizacin independientemente de la fecha, por ejemplo, 5 segundos, 35 minutos 3 horas: El tipo de temporizacin puede ser Fijo Variable: La siguiente imagen muestra una alarma por temporizacin Fija.

La siguiente imagen muestra una temporizacin Variable:

Pgina 134 de 239

Niple v4.0 - Programacin Visual de Microcontroladores

Comandos
Puede enviar comandos al reloj PCF8583. Para esto, ingrese a la solapa Comandos y seleccione la opcin Comandos. Luego marque las opciones correspondientes a los comandos que desea enviar al reloj.

Pgina 135 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


Una vez ingresados los parmetros requeridos, puede visualizar el esquema de conexi n.

Leer PCF8583
Para leer la informacin del reloj PCF8583, ingrese al rbol de herramientas como lo muestra la imagen de la derecha : Se presenta la pantalla Leer el Reloj / Calendario PCF8583 (I2C). Primero debe seleccionar los pines de seal de reloj y de datos correspondientes al bus I2C. Primero seleccione el puerto y luego el pin correspondiente. Una vez seleccionados los pines del bus I2C, debe seleccionar el nmero de dispositivo al cual 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. Puede conectar un mximo de 2 dispositivos en un a red. Tenga en cuenta que cdigo de dispositivo del PCF8583 es el mismo que el cdigo de las memorias EEPROM. Por esto, cuando disea una red I2C compuesta por memorias

EEPROMs y reloj PCF8583, debe asignar los nmeros de dispositivos como si se tratase del mismo tipo de dispositi vos.

Pgina 136 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


Para leer la Fecha Actual, ingrese a la seccin Fecha.

Seleccione los datos que desea consultar (Da, Mes, Ao, Da de la Semana) 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. Proceda del mismo modo si desea leer la Hora Actual. Como lo muestra la siguiente imagen, no es necesario que obtenga todos los datos correspondientes a la hora, sino que, puede obtener slo los datos que necesita.

Pgina 137 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


Por ltimo, puede consultar el esquema de conexin.

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 c orresponde 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 c orrespondiente 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).

Pgina 138 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


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 139 de 239

Niple v4.0 - Programacin Visual de Microcontroladores Interrupciones


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

Configurar Interrup.
Para consultar la configuracin de las interrupciones consulte la seccin correspondiente a las rutinas especficas de cada versi n de Niple.

Fin de la Interrupcin
Inserta en el diagrama el smbolo correspondiente a fin de interrupcin. Este solo se podr insertar en el entorno de interrupcin, si intenta insertarlo en otro entorno, Niple mu estra un mensaje de error y no llevar a cabo la insercin del smbolo. Para cargar el smbolo, haga doble clic sobre el men Fin de interrupcin .

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 (subru tinas). 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 ca tegora incluye las funciones de declaracin e insercin de llamadas a rutinas de usuario.

Pgina 140 de 239

Niple v4.0 - Programacin Visual de Microcontroladores

Niple para PIC 12F6xx


Caractersticas tcnicas de los PIC 12F6xx
Inicialm ente todos los microcontroladores incorporaron la arquitectura de Von Neumann, la cual se c aracteriza por disponer de una sola memoria principal donde se almacenan los datos y las instrucciones. A esta memoria se accede a travs de un sistema de buses nic o (direcciones, datos y control). Los microcontroladores de la familia 12F6xx, al igual que el resto de los microcontroladores de la actualidad, estn diseados con la arquitectura Harvard. La arquitectura Harvard dispone de dos memorias independientes; una que contiene slo instrucciones, y otra donde se almacenan los datos. Ambas memorias cuentan con sus respectivos sistemas de buses de acceso y es posible realizar operaciones de acceso (lectura o escritura) simultneamente en ambas memorias.

Entre las principales caractersticas del PIC 16F84 podemos destacar:

Voltaje de alimentacin: 5VCC. CPU RISC Circuito Integrado de 8 pines. 6 Pines de configurables como Entrada o Salida. Frecuencia operacin mxima: 20 Mhz. Memoria Flash: 12F629 12F675 = x Kbytes = x Kbytes

Memoria de Datos: 12F629 12F675 = x Bytes = x Bytes

Memoria de Datos EEPROM: 12F629 12F675 = x Bytes = x Bytes

1 Temporizador interno de 8 bits (TMR0). 1 Temporizador interno de 16 bits (TMR1). 1 Comparador Anal gico Conversores Analgico-Digital: 12F675 = 4 canales

Como mencionamos anteriormente, para que un microcontrolador funcione es necesario grabarle un programa en su interior. Este programa ser ledo y ejecutado lnea a lnea por la CPU. Para que la CPU funcione, debe contar con un generador de impulsos de reloj externo que sincroniza el funcionamiento de

Pgina 141 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


todo el sistema. Los micro co ntroladores de La lnea 12F6xx incluyen un oscilador interno lo cual permite utilizar el PIC sin necesidad de un oscilador externo.

En general se utiliza u n cristal como origen de la seal de reloj externa. El microcontrolador ejecuta cada instruccin (1 ciclo de programa) a de la velocidad del cristal utilizado. En general, un ciclo de programa corresponde a una lnea de cdigo Assembler .

Por ejemplo, si utilizamos un cristal de 4 Mhz, el microcontrolador estar ejecutando el cdigo a una v elocidad de 1 Mhz. Es decir que, ejecutar 1.000.000 de lneas de cdigo del programa por segundo. Por lo tanto, cada lnea de cdigo se ejecutar en 1 microsegundo (1/ 1.000.000 Seg.).

Conexi n de los PIC 12F6xx

El puerto del PIC 12F6xx


Los microcontroladores de la familia 12F6xx disponen de 1 puerto formado por 4 pines.

Pgina 142 de 239

Niple v4.0 - Programacin Visual de Microcontroladores Mdulos especficos de Niple para PIC 12F6xx Crear un nuevo proye cto.
Para crear un nuevo p royecto ingrese al men Archivo\Nuevo Proyecto... Se presentar la pantalla de Nuevo Proyecto. En primer lugar debe

seleccionar el modelo PIC que ser utilizado para desarrollar el proyecto. Es importante saber que en Niple, todo el sistema de

adapta de acuerdo al modelo de PIC seleccionado los bits, (los

registros, EEPROM,

memoria

perifricos,

interrupciones, etc.). Tenga en cuenta que una vez creado el proyecto no puede cambiar el modelo de PIC. Una vez seleccionado el modelo de PIC a utilizar Niple l e solicita que ingrese los siguientes datos: Datos del Proyecto: Nombre del proyecto: Nombre descriptivo del proyecto (No es el nombre de Archivo). Descripcin del proyecto: Ingrese una descripcin para identificar el proyecto Fecha: Por defecto Niple presenta la fecha actual del sistema. Nombre del Autor: Niple asigna el nombre del titular de la licencia como Autor del proyecto. Este nombre no puede ser modificado.

Pgina 143 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


Si bien los datos del proyecto son opcionales se recomienda ingresar estos datos para la correcta identificacin del proyecto en el futuro.

Datos del archivo Nombre del archivo: Niple utiliza la extensin .NPL para los archivos de proyecto. Seleccione la unidad y la carpeta donde guardar el nuevo proyecto. Al selecciona la carpeta, Niple mues tra todos los proyecto existentes en la misma. No puede r epetir el nombre de un archivo de proyecto.

Una vez ingresados todos los datos necesarios, presione el botn Crear.

Al crear un nuevo proyecto se cargan todas las caractersticas del modelo de PI C seleccionado.

Adems se genera de manera automtica el entorno del Programa Principal y se inserta el bloque de Inicio del programa.

Todos los proyectos deben tener un entorno de Programa Principal. Este entorno no puede ser borrado. Y cada entorno de Programa Principal debe tener un bloque de Inicio de Programa.

Pgina 144 de 239

Niple v4.0 - Programacin Visual de Microcontroladores Declaracin de Registros


En Niple la declaracin de registros se realiza de manera visual trabajando directamente sobre el mapa de memoria. Para ingresar a la pantalla de declaracin de registros, seleccione o por el medio men de la

Declaracin\Registros

combinacin de teclas CTRL+R. En esta pantalla se presenta el mapa de memoria.

La lnea 12F6xx cuenta con 2 bancos de memoria, las cuales son presentadas en 1 solapa.

Cada registro est identificado con una direccin de registro la cual est expresada en formato hexadecimal.

El mapa de memoria de datos presenta los distintos los tipos de registros con diferentes colores.

Registros Predefinidos por el PIC (Color Naranja): Corresponde a registros de configuracin y control del sistema. Estos registros se declaran de manera automtica en el momento de crear el proyecto y no pueden ser borrados. Cada uno de estos registros cumple con una funcin predeterminada. Registros de Usua rio (Color Verde): Corresponde a la memoria disponible para que el usuario declare sus propios registros. Registros inhabilitados (Color Gris): Corresponde a la memoria no disponible. Estas direcciones de memoria no pueden ser utilizadas.

Declaracin de un Registro de Usuario


Para declarar un registro de usuario debe hacer un clic en una posicin de memoria libre correspondiente a los registros de tipos Usuario (color verde). Al hacer clic, se le solicita que ingrese el nombre del registro a declarar. Niple controla la validez del nombre del registro que se est declarando, esto es: Que no est siendo ya utilizado por otro registro o BIT. No se permiten nombres de registros como A, B, C, D, E que pueden llegar a confundirse con un nombre de pue rto. Que no contenga caracteres no vlidos. Que el nombre no contenga ms de 20 caracteres de largo. Que el nombre no corresponda a una instruccin o comando.

Pgina 145 de 239

Niple v4.0 - Programacin Visual de Microcontroladores Declaracin de Bits


En Niple la declaracin de Bits se realiza de manera totalmente visual trabajando directamente sobre el mapa de memoria. Puede ingresar a la pantalla de declaracin de bits a travs del men Declaracin\Bits o a travs de la combinacin de teclas CTRL+B.

La memoria de datos se encuentra organizada en 2 bancos, las cuales son presentadas en una solapa. El mapa de memoria de datos presenta los distintos los tipos de registros con diferentes colores. A la vez se muestra un detalle de los bits que conforman cada registro.

Registros Predefinidos por el PIC (Color Naranja): Corresponde a registros de configuracin y control del sistema. Estos registros se declaran de manera automtica en el momento de crear el proyecto y no pueden ser borrados. Cada uno de estos registros cumple con una funcin predeterminada.

Registros de Usuario (Color Verde): Corresponde a la memoria disponible para que el usuario declare sus propios registros.

Registros deshabilitados (Color Gris): Corresponde a la memoria no disponible. Estas direcciones de memoria no pueden ser utilizadas.

Haciendo un clic sobre el nombre de un BIT se muestra en la parte inferior de la pantalla toda informacin correspondiente al BIT seleccionado.

Pgina 146 de 239

Niple v4.0 - Programacin Visual de Microcontroladores Declaracin de un Bit de Usuario


Antes de declarar un BIT de usuario debe haber declarado primero el registro de usuario al cual pertenece el BIT que desea declarar. Una vez declarado el registro de usuario, ingrese a la pantalla de Declaracin de Bits y seleccione el nmero de BIT que desea declarar. Esto se hace haciendo un clic sobre la posicin de BIT correspondiente dentro registro de usuario y respondiendo afirmativamente cuando le pregunta si desea declara un nuevo BIT. Luego le solicita que ingrese el nombre y la descripcin del nuevo BIT.

Niple controla la validez del nombre del BIT que se est declarando, esto es: Que no est siendo ya utilizado por un registro o BIT. No se permiten nombres de bits como A, B, C, D y E que pueden llegar a confundirse con un nombre de puerto. Que no contenga caracteres no vlidos. Que el nombre no contenga ms de 20 caracteres de largo. Que el nombre no corresponda a una instruccin o comando.

Puerto Configurar Puerto A


En Niple, la configuracin de los puertos se realiza de manera totalmente visual, trabajando directamente sobre una imagen del PIC. Los microcontroladores de la lnea 12F6xx pueden configurar 3 o 6 pines como puertos de E/S. Si configura el PIC para que funcione con oscilador interno, los pines correspondientes al oscilador externo pueden ser utilizados como puerto E/S. Lo mismo ocurre con el pin de RESET.

Pgina 147 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


En la pantalla de configuracin del Puerto A, se presenta una imagen del PIC con las descripciones de todos los pines. En cada pin del puerto se muestra una casilla de verificacin, a travs de la cual el pin es configurado como entrada o salida.

El PIN A5 como Reset o Entrada Digital


Este pin 3 del puerto (pin 4 del microcontrolador) puede ser utilizado como pin de RESET del microcontrolador. Cuando no lo utilizamos como RESET, este pin solo puede ser utilizado como Entrada digital. La funcin de este pin la seleccionamos desde el panel de control que se encuentra a la derecha del diagrama de flujo. Al seleccionar la configuracin de Pin 4 como Pin de RESET, Niple bloquea de manera automtica la configuracin de este pin del puerto A en la pantalla de configuracin de puerto.

Los pines A6 y A7 como Oscilador externo o Entradas/Salidas Digitales


Cuando utilizamos el microcontrolador configurado con un oscilador externo, el mismo se conecta a los pines A6 y A7. Si utilizamos el microcontrolador con el oscilador interno del micro, estos pines pueden ser utilizados como Entradas/Salidas Digitales. La configuracin de estos pines se controla de manera automtica funcin de en la

velocidad de reloj seleccionada en le panel de control

que se encuentra a la derecha del

diagrama de flujo. Si una de interno, selecciona configuracin oscilador Niple

habilita de manera automtica los

pines 6 y 7 del puerto A para ser utilizados como

Entradas o Salidas Digitales.

Pgina 148 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


Las siguiente imagen muestra las configuraciones del pin de reset y del oscilador externo y como afectan la disponibilidad de los pines del puerto.

El mdulo Comparador Analgico


La lnea 12F6xx cuenta con 1 mdulo comparador Analgico. Este se encuentra en los pines 0, 1 2 del puerto. Por defecto, en Niple el mdulo comparador se inicializa desconectado.

Para

configurar

el

mdulo

comparador, marque la opcin Habilitar comparador analgico que se encuentra en el extremo superior izquierdo de la pantalla de configuracin del puerto.

Pgina 149 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


Se presenta la pantalla de seleccin y configuracin del m odo de trabajo de los mdulos comparadores. Seleccione la configuracin de comparadores que desea utili zar.

Puede seleccionar alguna de las siguientes configuraciones:

Pgina 150 de 239

Niple v4.0 - Programacin Visual de Microcontroladores

Pgina 151 de 239

Niple v4.0 - Programacin Visual de Microcontroladores

Una vez seleccionado el mod o de operacin del comparador, presione el botn Ingresar. De manera automtica Niple asigna las configuraciones a los pines correspondientes.

Una vez seleccionada la configuracin deseada, presione el botn Ingresar.

Configuracin de los canales A /D


El mdulo de conversin A/D solo esta disponible en el modelo de PIC 12F675. EL 12F629 no tiene conversores A/D. Cuando alguno de los pines GP0, GP1, GP2 o GP4 es configurado como entrada, sta puede utilizarse como entrada digital o como una conversin analgica/digital (A/D). Por esto, se presenta una segunda casilla de verificacin donde se especifica el tipo de lectura a realizar. Por defecto se presenta opcin D que significa Entrada Digital. Pgina 152 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


Haciendo un clic en la casilla de verificacin se conmuta a Conversin A/D, representada por una A.

Si configurar al menos una entrada como Conversin A/D, en la parte inferior -izquierda de la pantalla se visualiza un cuadro de configuracin del voltaje de referencia para el mdulo de conversin A/D.

El voltaje de referencia (+) puede ser configurado como referencia Interna (V+= Vdd) o como referencia externa (V+ = RA1). Si elige algn voltaje de referencia como externo, el pin correspondiente (RA1) queda inhabilitado en la pantalla para que no pueda ser utilizado como entrada o como salida.

Pgina 153 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


Representacin grfica

Sintaxis Puerto = Valor_Configuracin Esto se interpreta como: el puerto A es configurado como Valor_Configuracin.

Donde: El parmetro Valor_Configuracin puede contener alguno de los siguientes cdigos: S = Salida Digital E = Entrada Digital A = Canal de Conversin A/D + = Voltaje de referencia externa positiva (para conversin A/D o Comparador analgico) - = Voltaje de referencia negativa (para conversin A/D o Comparador analgico) X = Bit no disponible. C = Salida de comparador analgico

Ejemplos

Pgina 154 de 239

Niple v4.0 - Programacin Visual de Microcontroladores Comunicaciones RS232 RS232 Enviar


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 micro controladores o a una PC.

Primero seleccione el pin por el cual transmitir los datos y la velocidad de comunicacin. Luego, ingrese la cantidad de bytes que desea transmitir. Seleccione los datos a enviar. Puede enviar datos fijos (literales) o variables (registros).

Para seleccionar el dato a enviar haga un clic en la grilla. Ingrese el tipo de dato y el valor a enviar. Luego presione el botn OK.

Para enviar un dato de tipo Fijo (literal).

Pgina 155 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


Para enviar un dato de tipo Variable (registro).

Cuando se envan ms de un dato, Niple le permite esperar un tiempo entre un dato y otro. Seleccione la opcin Esperar entre datos e ingrese el tiempo en mS que desea esperar.

Por ltimo, Niple le ofrece la opcin de calcular y enviar el checksum de manera automtica. Al seleccionar la opcin de calcular y enviar el checksum Niple agrega de manera automtica los registros necesarios para calcular el checksum.

Pgina 156 de 239

Niple v4.0 - Programacin Visual de Microcontroladores

Al presionar el botn ingresar, se inserta el bloque en el diagrama de flujo.

Pgina 157 de 239

Niple v4.0 - Programacin Visual de Microcontroladores RS232 Recibir


El protocolo RS232 es utilizado generalmente para comunicacin con el puerto serial de las computad oras (puertos COM). Este mdulo le permite recibir datos mediante el protocolo de comunicacin RS232 ya sea desde otros microcontroladores o desde una PC. Primero seleccione el pin por el cual transmitir los datos y la velocidad de comunicacin.

Luego seleccione la cantidad de registros que desea recibir.

Luego ingrese los registros donde desea guardar cada uno de los datos recibidos.

Niple le permite calcular y verificar el checksum de los datos recibidos. Al seleccionar esta opcin, automticamente se agregan los registros correspondientes a la recepcin de los bytes de checksum.

Pgina 158 de 239

Niple v4.0 - Programacin Visual de Microcontroladores

Por ltimo presione el botn Ingresar.

Configurar Interrupciones
Permite configurar todas las opciones posibles para las interrupciones RB0, TMR0 y Watchdog. En el primer caso, el usuario podr seleccionar si la interrupcin se activa mientras transcurre el flanco descendente o el ascendente, mientras que para las restantes, podr seleccionar la tasa de divisin para el escalado de los tiempos. 1) Seleccione la interrupcin a configurar, para esto haga clic sobre las casillas de verificacin disponibles para cada caso. 2) Si selecciono Interrup. por RB0, haga clic en lo botones de opcin correspondientes a Interrup. por flanco Ascendente descendente. 3) Si selecciono Interrup. por TMR0, seleccione de la lista la Tasa de divisin y el Origen de la seal de reloj. Haga clic en Ingresar. o Interrup. por flanco

Pgina 159 de 239

Niple v4.0 - Programacin Visual de Microcontroladores

Niple para PIC 16F84


Caractersticas tcnicas del PIC 16F84
Inicialmente todos los microcontroladores incorporaron la arquitectura de Von Neumann, la cua l se caracteriza por disponer de una sola memoria principal donde se almacenan los datos y las instrucciones. A esta memoria se accede a travs de un sistema de buses nico (direcciones, datos y control). Los microcontroladores PIC 16F84, al igual que el resto de los microcontroladores de la actualidad, estn diseados con la arquitectura Harvard. La arquitectura Harvard dispone de dos memorias independientes; una que contiene slo instrucciones, y otra donde se almacenan los datos. Ambas memorias cuentan con sus respectivos sistemas de buses de acceso y es posible realizar operaciones de acceso (lectura o escrit ura) simultneamente en ambas memorias.

Entre las principales caractersticas del PIC 16F84 podemos destacar: Voltaje de alimentacin: 5VCC. CPU RISC Circuito Integrado de 18 pines. 13 Pines de configurables como Entrada o Salida. Frecuencia operacin mxima: 10 Mhz. Memoria Flash: 1 Kbytes Memoria de Datos: 68 bytes Memoria de Datos EEPROM: 64 bytes 1 Temporizador interno de 8 bits. 3 Interrupciones.

Como mencionamos anteriormente, para que un microcontrolador funcione es necesario grabarle un programa en su interior. Este programa ser ledo y ejecutado lnea a lnea por la CPU. Para que la CPU funcione, debe contar con un generador de impulsos de reloj externo que sincroniza el funcionamiento de todo el sistema. Como origen de la seal de reloj externa se utiliza un cristal. El microcontrolador ejecuta cada instruccin (1 ciclo de programa) a de la velocidad del cristal utilizado. En general, un ciclo de programa corresponde a una lnea de cdigo Assembler . Por ejemplo, si utilizamos un cristal de 4 Mhz, el microcontrolador estar ejecutando el cdigo a una velocidad de 1 Mhz. Es decir que, ejecutar 1.000.000 de lneas de cdigo del programa por segundo. Por lo tanto, cada lnea de cdigo se ejecutar en 1 microsegundo (1/1.000.000 Seg.). Lo microcontroladores de la lnea 16F6xx pueden ser configurados para que el origen de la seal de reloj sea a trabes de un oscilador interno. Con esto, puede prescindir del oscilador externo y utilizar los pines correspondientes a la entrada del oscilador como pines E/S. Dado que el oscilador interno no es tan preciso como un cristal, un microcontrolador configurado con para ejecutar con oscilador interno puede tener un error importante en las temporizaciones.

Pgina 160 de 239

Niple v4.0 - Programacin Visual de Microcontroladores Conexi n del PIC 16F84

Los puertos del PIC 16F84


Los microcontroladores PIC 16F84 disponen de 2 puertos denominados Puerto A y Puerto B de 5 y 8 pines respectivamente, los cuales pueden ser configurados como Entrada o Salida. La configuracin de los puertos se realiza mediante los registros TRISA y TRISB, y por medio de los registros PORTA y PORTB se accede directamente a cada uno de los pines de los puertos.

Pgina 161 de 239

Niple v4.0 - Programacin Visual de Microcontroladores Mdulos especficos de Niple para PIC 16F84 Crear un nuevo proyecto.
Para crear un nuevo proyecto ingrese al men Archivo \ Nuevo Proyecto... Se presentar la pantalla de Nuevo Proyecto donde Niple le solicita que ingrese los siguientes datos:

Datos del proyecto Nombre del proyecto: Nombre descriptivo del proyecto (No es el nombre de Archivo). Descripcin del proyecto: Ingrese una descripcin para identificar el proyecto Fecha: Por defecto Niple presenta la fecha actual del sistema. Nombre del Autor: Niple asigna el nombre del titular de la licencia como Autor del proyecto. Este nombre no puede ser modificado.

Si bien los datos del proyecto son opcionales se recomienda ingresar estos datos para la correcta identificacin del proyecto en el futuro.

Datos del archivo Nombre del archivo: Niple utiliza la extensin .NPL para los archivos de proyecto. Seleccione la unidad y la carpeta donde guardar el nuevo proyecto. Al selecciona la carpeta, Niple muestra todos los proyecto existentes en la misma. No puede repetir el nombre de un archivo de proyecto. Una vez ingresados todos los datos necesarios, presione el botn Crear. Pgina 162 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


Al crear un nuevo proyecto se cargan todas las caractersticas del modelo de PIC seleccionado. Adems se genera de manera automtica el entorno del Programa Principal y se inserta el bloque de Inicio del programa.

Todos los proyectos deben tener un entorno de Programa Principal. Este entorno no puede ser borrado. Y cada entorno de Programa Principal debe tener un bloque de Inicio de Programa.

Declaracin de Registros
En Niple la declaracin de registros se realiza de manera visual trabajando directamente sobre el mapa de memoria.

Para ingresar a la pantalla de declaracin de registros, seleccione el men Declaracin \ Registros o por medio de la combinacin de teclas CTRL+R.

En esta pantalla se presenta el mapa de memoria. Cada registro est identificado con una direccin de registro la cual est expresada en formato hexadecimal.

Pgina 163 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


El mapa de memoria de datos presenta los disti ntos los tipos de registros con diferentes colores.

Registros Naranja):

Predefinidos

por

el

PIC (Color

Corresponde

registros

de

configuracin

control del sistema. Estos registros se declaran de manera automtica en el momento de crear el proyecto y no pueden ser borrados. Cada uno de estos registros cumple con una funcin

predeterminada.

Registros de Usuario (Color Verde): Corresponde a la memoria disponible para que el usuario declare sus propios registros.

Registros deshabilitados (Color Gris): Corresponde a la memoria no disponible. Estas direcciones de memoria no pueden ser utili zadas.

Declaracin de un registro de usuario


Para declarar un registro de usuario debe hacer un clic en una posicin de memoria libre correspondiente a los registros de tipos Usuario (color verde). Al hacer clic, se le solicita que ingrese el nombre del registro a declarar.

Niple controla la validez del nombre del registro que se est declarando, esto es: - Que no est siendo ya utilizado por otro registro o BIT. - No se permiten nombres de registros como A, B que pueden llegar a confundirse con un nombre de puerto. - Que no contenga caracteres no vlidos. - Que el nombre no contenga ms de 20 caracteres de largo. - Que el nombre no corresponda a una instruccin o comando.

Pgina 164 de 239

Niple v4.0 - Programacin Visual de Microcontroladores Puertos Configurar Puerto A


En Niple, la configuracin de los puertos se realiza de manera totalmente visual, trabajando directamente sobre una imagen del PIC. El puerto A est conformado slo por 5 bits (RA0 RA4). En la pantalla de configuracin del Puerto A, se pres enta una imagen del PIC con las descripciones de todos los pines. En cada pin al

correspondiente

puerto A se muestra una casilla de

verificacin, a travs de la cual el pin es configurado entrada o salida. Una seleccionada vez la como

configuracin correcta, presione el botn Ingresar.

Representacin grfica

Sintaxis Puerto = Valor_Configuracin Esto se interpreta como: el puerto A es configurado como Valor_Configuracin.

Donde: El parmetro Valor_Configuracin puede contener alguno de los siguientes cdigos: S = Salida Digital E = Entrada Digital Ejemplos

Pgina 165 de 239

Niple v4.0 - Programacin Visual de Microcontroladores Configurar Puerto B


En Niple, la configuracin de los puertos se realiza de manera totalmente visual, trabajando directamente sobre una imagen del PIC. En la pantalla de configuracin del

Puerto B, se presenta una imagen del PIC con las descripciones de todos los pines. En cada pin al

correspondiente

puerto B se muestra una casilla de

verificacin, a travs de la cual el pin es configurado como

entrada o salida. Una vez seleccionada la configuracin deseada, presione el botn Ingresar.

Representacin grfica

Sintaxis Puerto = Valor_Configuracin Esto se interpreta como: el puerto B es configurado como Valor_Configuracin.

Donde: El parmetro Valor_Configuracin puede contener alguno de los siguientes cdigos: S = Salida Digital E = Entrada Digital Ejemplos

Pgina 166 de 239

Niple v4.0 - Programacin Visual de Microcontroladores Comunicaciones RS232 RS232 Enviar datos
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 micro controladores o a una PC.

Primero seleccione el pin por el cual transmitir los datos y la velocidad de comunicacin. Luego, ingrese la cantidad de bytes que desea transmitir. Seleccione los datos a enviar. Puede enviar datos fijos (literales) o variables (registros).

Para seleccionar el dato a enviar haga un clic en la grilla. Ingrese el tipo de dato y el valor a enviar. Luego presione el botn OK.

Para enviar un dato de tipo Fijo (literal).

Pgina 167 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


Para enviar un dato de tipo Variable (registro).

Cuando se envan ms de un dato, Niple le permite esperar un tiempo entre un dato y otro. Seleccione la opcin Esperar entre datos e ingrese el tiempo en MS que desea esperar.

Por ltimo, Niple le ofrece la opcin de calcular y enviar el checksum de manera automtica. Al seleccionar la opcin de calcular y enviar el checksum Niple agrega de manera automtica los registros necesarios para calcular el checksum.

Pgina 168 de 239

Niple v4.0 - Programacin Visual de Microcontroladores

Al presionar el botn ingresar, se inserta el bloque en el diagrama de flujo.

Pgina 169 de 239

Niple v4.0 - Programacin Visual de Microcontroladores RS232 Recibir datos


El protocolo RS232 es utilizado generalmente para comunicacin con el puerto serial de las computad oras (puertos COM). Este mdulo le permite recibir datos mediante el protocolo de comunicacin RS232 ya sea desde otros microcontroladores o desde una PC. Primero seleccione el pin por el cual transmitir los datos y la velocidad de comunicacin.

Luego seleccione la cantidad de registros que desea recibir.

Luego ingrese los registros donde desea guardar cada uno de los datos recibidos.

Niple le permite calcular y verificar el checksum de los datos recibidos.

Al seleccionar esta opcin, automticamente se agregan los registros correspondientes a la recepcin de los bytes de checksum.

Pgina 170 de 239

Niple v4.0 - Programacin Visual de Microcontroladores

Por ltimo presione el botn Ingresar.

Configurar Interrup.
Permite configurar todas las opciones posibles para las interrupciones RB0, TMR0 y Watchdog. En el primer caso, el usuario podr seleccionar si la interrupcin se activa mientras transcurre el flanco descendente o el ascendente, mientras que para las restantes, podr seleccionar la tasa de divisin para el escalado de los tiempos. 1) Seleccione la interrupcin a

configurar, p ara esto haga clic sobre las casillas de verificacin disponibles para cada caso. 2) Si selecciono Interrup. por RB0 , haga clic en lo botones de opcin correspondientes a Interrup. por flanco Ascendente o descendente. 3) Si selecciono Interrup. por TMR0, seleccione de la lista la Tasa de divisin y el Origen de la seal de reloj. Haga clic en Ingresar. Interrup. por flanco

Pgina 171 de 239

Niple v4.0 - Programacin Visual de Microcontroladores

Niple para PIC 16F6xx


Caractersticas tcnicas de los PIC 16F6xx
Inicialmente todos los microcontroladores incorporaron la arquitectura de Von Neumann, la cual se caracteriza por disponer de una sola memoria principal donde se almacenan los datos y las instrucciones. A esta memoria se accede a travs de un sistema de buses nico (direcciones, datos y control). Los microcontroladores de la familia 16F6xx, al igual que el resto de los microcontroladores de la actualidad, estn diseados con la arquitectura Harvard. La arquitectura Harvard dispone de dos memorias independientes; una que contiene slo instrucciones, y otra donde se almacenan los datos. Ambas memorias cuentan con sus respectivos sistemas de buses de acceso y es posible realizar operaciones de acceso (lectura o escritura) simultneamente en ambas memorias.

Voltaje de alimentacin: 5VCC. CPU RISC Circuito Integrado de 18 pines. 16 Pines de configurables como Entrada o Salida. Frecuencia operacin mxima: 20 Mhz. Memoria Flash: 16F627 = 1 Kbytes 16F628 = 2 Kbytes 16F648 = 4 Kbytes

Memoria de Datos: 16F627 = 224 bytes 16F628 = 224 bytes 16F648 = 256 bytes

Memoria de Datos EEPROM: 16F627 = 128 bytes 16F628 = 128 bytes 16F648 = 256 bytes

2 Temporizadores internos de 8 bits. 1 Temporizador interno de 16 bits. 1 Mdulo CCP (Captura, Comparacin y PWM). 1 Mdulo de comunicaciones USART. 2 Comparadores analgicos. 10 Interrupciones.

Como mencionamos anteriormente, para que un microcontrolador funcione es necesario grabarle un programa en su interior. Este programa ser ledo y ejecutado lnea a lnea por la CPU. Para que la CPU funcione, debe contar con un generador de impulsos de reloj externo que sincroniza el funcionamiento de todo el sistema.

Pgina 172 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


Generalmente, para origen de la seal de reloj externa utilizamos un cristal. El microcontrolador ejecuta cada instruccin (1 ciclo de programa) a de la velocidad del cristal utilizado. En general, un ciclo de programa corresponde a una lnea de cdigo Assembler. Por ejemplo, si utilizamos un cristal de 4 Mhz, el microcontrolador estar ejecutando el cdigo a una velocidad de 1 Mhz. Es decir que, ejecutar 1.000.000 de lneas de cdigo del programa por segundo. Por lo tanto, cada lnea de cdigo se ejecutar en 1 microsegundo (1/1.000.000 Seg.). Lo microcontroladores de la lnea 16F6xx pueden ser configurados para que el origen de la seal de reloj sea a travs de un oscilador interno. Con esto, puede prescindir del oscilador externo y utilizar los pines correspondientes a la entrada del oscilador como pines E/S. Dado que el oscilador interno no es tan preciso como un cristal, un microcontrolador configurado con para ejecutar con oscilador interno puede tener un error importante en las temporizaciones.

Conexi n de los PIC 16F6xx

Los puertos del PIC 16F6xx


Los microcontroladores de la familia 16F6xx disponen de 2 puertos denominados Puerto A y Puerto B. Ambos puertos cuentan con 8 pines que pueden ser configurados como Entrada o Salida.

La

configuracin

de

los

puertos

se

realiza

mediante los registros TRISA y TRISB, y por medio de los registros PORTA y PORTB se accede directamente a cada uno de los pines de los puertos.

Pgina 173 de 239

Niple v4.0 - Programacin Visual de Microcontroladores Mdulos especficos de Niple para PIC 16F6xx Crear un nuevo proyecto.
Para crear un nuevo proyecto ingrese al men Archi vo\Nuevo Proyecto... Se presentar la pantalla Proyecto. En primer lugar de Nuevo

debe seleccionar el modelo PIC que ser utilizado desarrollar proyecto. Es importante para el

saber que en Niple, todo el sistema de adapta de acuerdo al modelo de PIC (los bits,

seleccionado registros, los

memoria EEPROM, perifricos, interrupciones, etc.).

Tenga en cuenta que una vez creado el proyecto no puede cambiar el modelo de PIC. El Botn Caractersticas de la Lnea 16F6xx presenta un cuadro comparativo con las caractersticas de cada uno de los modelos de PIC que componen la lnea 16F6xx.

De sta manera Niple lo ayuda a seleccionar el modelo de PIC a utilizar.

Una vez seleccionado el modelo de PIC a utilizar Niple le solicita que ingrese los siguientes datos:

Pgina 174 de 239

Niple v4.0 - Programacin Visual de Microcontroladores

Datos del proyecto Nombre del proyecto: Nombre descriptivo del proyecto (No es el nombre de Archivo). Descripcin del proyecto: Ingrese una descripcin para identificar el proyecto Fecha: Por defecto Niple presenta la fecha actual del sistema. Nombre del Autor: Niple asigna el nombre del titular de la licencia como Autor del proyecto. Este nombre no puede ser modificado.

Si bien los datos del proyecto son opcionales se recomienda ingresar estos datos para la correcta identificacin del proyecto en el futuro.

Datos del archivo Nombre del archivo: Niple utiliza la extensin .NPL para los archivos de proyecto. Seleccione la unidad y la carpeta dond e guardar el nuevo proyecto. Al selecciona la carpeta, Niple muestra todos los proyecto existentes en la misma. No puede repetir el nombre de un archivo de proyecto.

Una vez ingresados todos los datos necesarios, presione el botn Crear.

Al crear un nuevo proyecto se cargan todas las caractersticas del modelo de PIC seleccionado. Adems se genera de manera automtica el entorno del Programa Principal y se inserta el bloque de Inicio del programa.

Todos los proyectos deben tener un entorno de Programa Principal. Este entorno no puede ser borrado. Y cada entorno de Programa Principal debe tener un bloque de Inicio de Programa.

Pgina 175 de 239

Niple v4.0 - Programacin Visual de Microcontroladores

Declaracin de Registros
En Niple la declaracin de registros se realiza de manera visual trabajando directamente sobre el mapa de memoria. Para ingresar a la pantalla de declaracin de registros, seleccione el men Declaracin\Registros o por medio de la combinacin de teclas CTRL+R. En esta pantalla se presenta el mapa de memoria. La lnea 16F6xx cuenta con 4 pginas de memoria, las cuales son presentadas en 2 solapas. Cada registro est identificado con una direccin de registro la cual est expresada en formato hexadecimal.

El mapa de memoria de datos presenta los distintos los tipos de registros con diferentes colores.

Registros

Predefinidos

por

el

PIC

(Color

Naranja): Corresponde a registros de configuracin y control del sistema. Estos registros se declaran de manera automtica en el momento de crear el proyecto y no pueden ser borrados. Cada uno de estos registros cumple con una funcin predeterminada. Registros de Usuario (Color Verde): Corresponde a la memoria disponible para que el usuario declare sus propios registros. Pgina 176 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


Registros deshabilitados (Color Gris): Corresponde a la memoria no disponible. Estas di recciones de memoria no pueden ser utilizadas.

Declaracin de un Registro de Usuario


Para declarar un registro de usuario debe hacer un clic en una posicin de memoria libre correspondiente a los registros de tipos Usuario (color verde). Al hacer clic, se le solicita que ingrese el nombre del registro a declarar.

Niple controla la validez del nombre del registro que se est declarando, esto es: Que no est siendo ya utilizado por otro registro o BIT. No se permiten nombres de registros como A, B, C, D, E que pueden llegar a confundirse con un nombre de puerto. Que no contenga caracteres no vlidos. Que el nombre no contenga ms de 20 caracteres de largo. Que el nombre no corresponda a una instruccin o comando.

Declaracin de Bits
En Niple la declaracin de Bits se realiza de manera totalmente visual trabajando directamente sobre el mapa de memoria. Puede ingresar a la pantalla de declaracin de bits a travs del men Declaracin\Bits o a travs de la combinacin de teclas CTRL+B.

Pgina 177 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


La memoria de datos se encuentra organizada en 4 bancos o pginas, las cuales son presentadas una en cada solapa de la pantalla de declaracin de Bits El mapa de memoria de datos presenta los distintos los tipos de registros con diferentes colores. A la vez se muestra un detalle de los bits que conforman cada registro. Registros Predefinidos por el PIC (Color Naranja): Corresponde a registros de configuracin y control del sistema. Estos registros se declaran de manera automtica en el momento de crear el proyecto y no pueden ser borrados. Cada uno de estos registros cumple con una funcin predeterminada. Registros de Usuario (Color Verde): Corresponde a la memoria disponible para que el usuario declare sus propios registros. Registros deshabilitados (Color Gris): Corresponde a la memoria no disponible. Estas direcciones de memoria no pueden ser utilizadas.

Haciendo un clic sobre el nombre de un BIT se muestra en la parte inferior de la pantalla toda informacin correspondiente al BIT seleccionado.

Declaracin de un Bit de Usuario


Antes de declarar un Bit de usuario, es necesario que previamente haya declarado el registro de usuario al cual pertenece el Bit. Una vez declarado el registro de usuario, ingrese a la pantalla de Declaracin de Bits y seleccione el nmero de Bit que desea declarar. Esto se hace haciendo un clic sobre la posicin de Bit correspondiente dentro registro de usuario y respondiendo afirmativamente cuando le pregunta si desea declara un nuevo Bit. Luego le solicita que ingrese el nombre y la descripcin del nuevo Bit.

Pgina 178 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


Niple controla la validez del nombre del Bit que se est declarando, esto es: Que no est siendo ya utilizado por un registro o Bit. No se permiten nombres de bits como A, B, C, D, E que pueden llegar a confundirse con un nombre de puerto. Que no contenga caracteres no vlidos. Que el nombre no contenga ms de 20 caracteres de largo. Que el nombre no corresponda a una instruccin o comando.

Configurar el Puerto A
En Niple, la configuracin de los puertos se reali za de manera totalmente visual. En la pantalla de configuracin del

Puerto A, se presenta una imagen del PIC con las descripciones de todos los pines. En cada pin al

correspondiente

puerto A se muestra una casilla de

verificacin, a travs de la cual el pin es configurado entrada o salida. El puerto A est conformado por 8 como

pines. De los cuales, a los pines 5 a 7 se les pueden asignar las siguientes funciones:

El PIN A5 como Reset o Entrada Digital


Este pin 5 del puerto A (pin 4 del microcontrolador) puede ser utilizado como pin de RESET del microcontrolador. Cuando no lo utilizamos como RESET, este pin solo puede ser utilizado como Entrada digital. La funcin de este pin la seleccionamos desde el panel de control que se encuentra a la derecha del diagrama de flujo.

Pgina 179 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


Al seleccionar la configuracin de Pin 4 como Pin de RESET, Niple bloquea de manera automtica la configuracin de este pin del puerto A en la pantalla de configuracin de puerto.

Los pines A6 y A7 como Oscilador externo o Entradas/ Salidas Digitales


Cuando utilizamos el microcontrolador con un oscilador externo, el mismo se conecta a los pines A6 y A7. Si utilizamos el microcontrolador con el oscilador interno del micro, estos pines pueden ser utilizados como Digita les. La configuracin de estos pines se controla de manera automtica en funcin de la velocidad de reloj s eleccionada en le panel de control que se encuentra a la derecha del Entradas/Salidas

diagrama de flujo Si selecciona de una oscilador de

configuracin interno, Niple

habilita

manera automtica los pines 6 y 7 del puerto A para ser utilizados como Entradas o

Salidas Digitales.

Pgina 180 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


Por el contrario, si utiliza un oscilador externo, Niple inhabilita los pines 6 y 7 del puerto A dado que es all donde debe conectar el cristal.

Los Comparadores analgicos


La lnea 16F6xx cuenta con 2 comparadores Analgicos. Estos se encuentran en los pines 0 al 3 del puerto A. Por defecto, en Niple los mdulos comparadores se inicializan desconectados. Para configurar los mdulos de los comparadores, marque la opcin Habilitar comparadores que se encuentra en el extremo superior izquierdo de la pantalla de configuracin del puerto A.

Pgina 181 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


Se presenta la pantalla de seleccin y configuracin del modo de trabajo de los mdulos comparadores. Seleccione la configuracin de comparadores que desea utilizar.

Puede seleccionar alguna de las siguientes configuraciones:

Pgina 182 de 239

Niple v4.0 - Programacin Visual de Microcontroladores

Pgina 183 de 239

Niple v4.0 - Programacin Visual de Microcontroladores

Una vez seleccionado el modo de operacin de los comparadores, presione el botn Ingresar.

Pgina 184 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


De manera automtica Niple asigna las configuraciones a los pines correspondientes a los comparadores.

Una vez seleccionada la configuracin deseada, presione el botn Ingresar. Si el chequeo de la configuracin seleccionada resulta ser correcta, Niple inserta el bloque en el diagrama.

Representacin grfica

Sintaxis Puerto = Valor_Configuracin Esto se interpreta como: el puerto A es configurado como Valor_Configuracin.

Donde: El parmetro Valor_Configuracin puede contener alguno de los siguientes cdigos : S = Salida Digital E = Entrada Digital + = Pin positivo de un mdulo comparador - = Pin positivo de un mdulo comparador

Pgina 185 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


X = Bit no disponible. Ejemplos

Configurar el Puerto B
En Niple, la configuracin de los puertos se realiza de manera totalmente visual, trabajando directamente sobre una imagen del PIC.

En la pantalla de configuracin del Puerto B, se presenta una imagen del PIC con las descripciones de todos los pines. En cada pin correspondiente al puerto B se muestra una casilla de verificacin, a travs de la cual el pin es configurado como entrada o salida. Una vez seleccionada la configuracin deseada, presione el botn Ingresar. Representacin grfica

Sintaxis Puerto = Valor_Configuracin Esto se interpreta como: el puerto B es configurado como Valor_Configuracin. Donde: El parmetro Valor_Configuracin puede contener alguno de los siguientes cdigos: S = Salida Digital E = Entrada Digital

Pgina 186 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


Ejemplos

Comparadores Analgicos
Los microcontroladores de la lnea 16F6xx incluyen 2 mdulos comparadores analgicos. Un mdulo comparador analgico est compuesto por 2 entradas (Vin+ y Vin-) y una salida (Vout), la cual se activa en funcin del estado de las entadas.

El mdulo comparador activa (o desactiva) la salida Vout cuando el voltaje en la entrada Vin+ sea mayor al voltaje de la entrada Vin-. Para implementar un comparador, primero debe configurar los pines correspondientes. Esto se realiza junto con la configuracin del puerto A. Consulte el tema Configuracin del puerto A. Luego de haber configurado el puerto A debe configurar el modo de funcionamiento del mdulo comparador. Una vez que el mdulo comparador ha sido configurado, el mismo funciona de manera independiente de la ejecucin del resto del programa, es decir que el programa no debe atender el funcionamiento del comparador.

Cada vez que la condicin de comparacin se cumple segn lo configurado, se activa un BIT por cada mdulo comparador (Bits C1VOUT y C2VOUT, bits 6 y 7 del regis tro CMCON respectivamente). Puede configurar una interrupcin por comparadores. Esta se ejecuta cada vez que cambia el estado de alguno de las 2 banderas de los mdulos compradores. Debe determinar por software cual es el comprador que genera la interrupcin. Niple controla esto de manera automtica.

Una vez seleccionada la configuracin de los comparadores, debe configurar el mdulo de funcionamiento de cada uno de los mismos. Para esto ingrese al rbol de herramientas como se muestra en la siguiente image n:

Se presenta la pantalla de configuracin del comparador.

Pgina 187 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


En la parte superior de la pantalla se muestra la configuracin del puerto A y de los comparadores.

A continuacin debe seleccionar el modo de funcionamiento del comparador seleccionado. S eleccione como poner la salida (0 1) cuando el voltaje en la entrada Vin+ sea mayor a la entrada Vin-. Si est utilizando alguna de las configuraciones de comparadores Multiplexados , se activa la opcin de seleccin de comparador por multiplexado. Debe seleccionar el comparador que desea utilizar.

Pgina 188 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


Si la configuracin seleccionada es 4 entradas multiplexadas, debe seleccionar el voltaje de referencia interno. Este voltaje est predefinido y puede seleccionar cualquiera de los siguientes voltajes:

0.21 V,

0.42 V,

0.63 V,

0.84 V,

1.04 V,

1.25 V,

1.46 V,

1.67 V,

1.88 V,

2.08 V,

2.29 V,

2.50V, 2.71 V, 2.92 V, 3.13 V, 3.28 V, 3.44 V, 3.59 V.

Adems los micros de la familia 16F6xx cuentan con una interrupcin por Compara dores Analgicos. La interrupcin se produce cada vez que cambia el estado del BIT de salida de un mdulo comparador (bits C1Vout y C2Vout). El software debe mantener la informacin del estado actual de cada BIT de salida de los mdulos comparadores para poder determinar cual fue el comparador que gener la interrupcin. Niple administra esta informacin y determina de manera automtica cual es el comparador que produjo la interrupcin. Para activar las interrupciones por comparadores analgicos debe activar la opcin Generar Interrupcin.

Al activar la opcin Generar Interrupcin, Niple revisa el estado de las interrupciones y detecta si las interrupciones necesarias se encuentran activadas. Si alguna de las interrupciones no se encuentra activada, Niple le presenta la posibilidad de activarlas activando los cuadros de verificacin correspondientes. Cuando se ingresa una interrupcin por comparadores analgicos, Niple genera de manera automtica el registro de banderas y declara los bits de banderas de estado actual de cada uno de los mdulos comparadores.

Pgina 189 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


Los bits de banderas del estado de los comparadores se denominan C1_INTE y C2_INTE. Adems, Niple inserta de manera automtica los bloques de evaluacin de las banderas de salida de cada mdulo para determinar cual es el mdulo que produjo la interrupcin.

Se inserta un bloque de evaluacin para cada mdulo comparador. El diagrama de flujo de la interrupcin queda preparado para que Ud. programe lo que desea realizar al producirse la interrupcin por cada uno de los mdulos comparadores.

El Mdulo CCP
Los microcontroladores de la lnea 16F6xx incluyen 1 mdulo de Captura, Comparacin y Modulacin por ancho de pulso, llamado CCP1. Los registros de control y trabajo del mdulo CCP1 son: CCP1C ON direccin 17h y CCP1RH-CCP1RL direcciones 16h y 15h.

El mdulo CCP puede trabajar en tres modos diferentes, que son:

- Modo Captura - Modo Comparacin - Modo Modulacin por Ancho de Pulso, PWM

Pgina 190 de 239

Niple v4.0 - Programacin Visual de Microcontroladores

Modo Captura
Antes de pasar a desarrollar la metodologa de programacin con Niple, realizaremos una breve descripcin del modo Captura a modo de repaso general.

El modo Captura recupera el estado de cuenta del TMR1 y lo guarda en los registros CCPR1H y CCPR1L.

El Pin RB3 debe estar configurado como Entrada.

El TMR1 debe estar configurado con la opcin Origen de seal de reloj = Reloj Interno. (Recuerde que tambin el TMR1 puede ser configurado para que incremente mediante una seal externa).

La captura se realiza cada vez que ocurre alguno de los siguientes eventos en el Pin RB3, esto se configura mediante los 4 primeros bits de los registros CCP1CON:

1) Un flanco ascendente. 2) Un flanco descendente. 3) Cada 4 flancos ascendentes. 4) Cada 16 flancos ascendentes.

Cada vez que se realiza una captura, se activa el Bit 2 del registro PIR1 (Bit CCP1IF). Adems puede generarse una interrupcin, si previamente fue configurado el Bit 2 del registro PIE1 (CCP1IE).

Programando el modo Captura en Niple

Para poder utilizar el Modo Captura primero deb e realizar los siguientes pasos: Configur e y active el temporizador interno TMR1. Configur e el Pin correspondiente al mdulo CCP como Entrada.

Pgina 191 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


Una vez realizados los pasos previos necesarios ya esta en condiciones de realizar una Captura. Ingrese al rbol de herramientas y seleccione la opcin Insertar / Rutinas Bsicas / Mdulo CCP / Config. y Activar CCP1 como se muestra en la siguiente figura. Se presenta la pantalla Mdulo CCP1. Es importante aclarar que los 3 modos (Captura, Comparacin y PWM) se programan en la misma pantalla ya que pertenecen al mismo mdulo. Seleccione el modo Comparacin en la lista desplegable denominada Modo a utilizar. Para garantizar el correcto funcionamiento, Niple chequea de manera automtica si previamente han sido c onfigurados el temporizador TMR1 y el Pin RB3 como entrada. Si todo est correctamente configurado, Niple permite comenzar a de no seleccionar lo contrario, con las no los opciones permite requisitos

correspon dientes, continuar hasta

contar

anteriormente mencionados. En primer lugar debe seleccionar la configuracin del evento que provoca la captura. Para este caso, seleccione la opcin 1 Flanco Ascendente.

Pgina 192 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


A continuacin seleccione una de las 2 maneras que tiene de realizar la captura. Esperar en un bucle hasta que termine la Captura: El PIC no realiza ninguna otra tarea que no sea esperar a que el Bit 2 del registro PIE1 (Bit CCP1IE) se ponga en 1, lo cual indica que se ha realizado una captura.

1)

No esperar y generar una interrupcin por Fin de Captura: Se configura el modo Captura y contina ejecutando el resto del cdigo. Cuando se realiza la captura se produce una interrupcin por Fin de Captura.

Sea

cual

fuere

la

opcin

seleccionada,

continuacin le solicita que seleccione los registros donde gua rdar el resultado de la captura. Si ha seleccionado la opcin No esperar y generar una interrupcin, Niple chequea el estado de las interrupciones y ofrece la posibilidad de habilitar las interrupciones que se encuentran deshabilitadas. La siguiente ilustracin muestra este caso.

Por ltimo puede ingresar un comentario.

Pgina 193 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


Una vez seleccionados todos lo parmetros, presione el botn Ingresar. La siguiente ilustracin muestra el bloque insertado con los pasos anteriormente realizados.

En la siguiente imagen se muestran el bloque y el entorno de Interrupcin por CCP1 que son insertados en el tipo de captura por interrupcin. La siguiente imagen muestra los bloques insertados en el entorno del Programa Principal

Pgina 194 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


La siguiente imagen muestra el entorno de Interrupcin por CCP1 y los bloques que se insertan de manera automtica.

Modo Comparacin
En este modo, el microcontrolador compara de manera constante los registros CCPR1H y CCPR1L con el valor actual de TMR1. Cuando los valores son iguales, puede llegar a producirse alguno de los 3 eventos segn la configuracin seleccionada. Estos eventos son: - Poner a 1 el Pin RB3. - Poner a 0 el Pin RB3. - Generar una interrupcin. Esta opcin no afecta al Pin RB3.

El Pin RB3 debe estar confi gurado como Salida.

Si el TMR1 es configurado con la opcin Origen de seal de reloj = Reloj Externo, entonces este mdulo puede ser utilizado como contador de eventos que al llegar al valor deseado se produzca una accin determinada sin necesidad de es tar monitoreando el estado de cuenta.

Pgina 195 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


Si el TMR1 es configurado con la opcin Origen de seal de reloj = Reloj Interno, entonces este mdulo puede ser utilizado para generar eventos en un determinado periodo. Cada vez que se realiza una comparacin, se activa el Bit 2 del registro PIR1 (CCP1IF). Adems puede generarse una interrupcin, si previamente fue configurado el Bit 2 del registro PIE1 (CCP1IE).

Programando el modo Comparacin en Niple

Para poder utilizar el Modo Comparacin primero debe realizar los siguientes pasos: - Configurar y activar el temporizador interno TMR1. - Configurar el Pin RB3 como Salida.

Una vez realizados los pasos previos necesarios ya esta en condiciones de realizar una Comparacin. Ingrese al rbol de herramientas y seleccione la opcin Insertar / Rutinas Bsicas / Mdulo CCP / Con fig. y Activar CCP1 como se muestra en la imagen de la derecha . Se presenta la pantalla Mdulo CCP1. Es importante aclarar que los 3 modos (Captura, Comparacin y PWM) se programan en la misma pantalla ya que pertenecen al mismo mdulo. Seleccione el modo Comparacin en la lista desplegable denominada Modo a utilizar. Para garantizar el correcto funcionamiento, Niple chequea de manera sido automtica si el

previamente

han

configurados

temporizador TMR1 y el Pin RB3 como Salida. Si todo est correctamente configurado, Niple permite comenzar a seleccionar las opciones correspon dientes, de lo contrario, no permite continuar hasta no contar con los requisitos anteriormente mencionados.

En primer lugar debe seleccionar el valor de Comparacin. O sea, el valor hasta el cual desea que el temporizador interno TRM1

incremente. Dado que el temporizador TMR1 est formado por 2 registros (TRM1H y TMR1L), el valor de comparacin tambin corresponde a un nmero de 16 bits.

Pgina 196 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


Niple le ofrece la posibilidad de asignar el valor de comparacin mediante un valor Literal (valor constante) o mediante el valor contenido en 2 registros (valor Va riable) ofreciendo una mayor versatilidad. De sta manera Ud. puede a justar el valor de comparacin a sus necesidades.

Por ejemplo: Si desea desarrollar un sistema contador que realice una determinada accin al llegar a la cuenta de 1000. Entonces debe seleccionar las opciones Valor Literal, Tipo Decimal y 1000 como valor de comparacin. Tenga en cuenta que no podr cambiar el valor de comparacin dado que se trata de un valor constante. Si en el futuro desea cambiar el valor de comparacin, deber generar nuevamente el cdigo

Assembler , compilar el archivo .hex y grabar nuevamente el PIC.

Una forma ms verstil de realizar esto es: asignando el valor de comparacin como

variable, por ejemplo, mediante 2 registros llamados cant_max_1 y cant_max_2. Esto le permite disear el programa para poder

actualizar el valor de comparacin mediante algn sistema de Set Point (por RS232, Teclado, o pulsadores que incrementen y decrementen estos valores) y se guarde (por

ejemplo) los valores de estos 2 registros en la memoria EEPROM.

A continuacin seleccione el eve nto a realizar cuando el TMR1 llegue al estado de cuenta del valor de comparacin. Aqu tiene 3 opciones: - Poner a 1 el Pin RB3. - Poner a 0 el Pin RB3. - Generar una interrupcin. Esta opcin no afecta al Pin RB3.

Si elige alguna de las 2 primeras opciones. Niple se solicita que seleccione una de las 2 maneras que tiene de realizar la comparacin. 1) Esperar en un bucle hasta que termine la Comparacin: El PIC no realiza ninguna otra tarea que no sea esperar a que el Bit 2 del registro PIE1 (CCP1IE) se ponga en 1. 2) No esperar y generar una interrupcin por Fin de Comparacin: Se configura el modo Comparacin y contina ejecutando el resto del cdigo. Cuando el valor del TMR1 es igual a valor de compar acin, se produce una interrupcin por Fin de Comparacin.

Pgina 197 de 239

Niple v4.0 - Programacin Visual de Microcontroladores

Si ha seleccionado la opcin No esperar y generar una interrupcin..., Niple chequea el estado de las interrupciones y ofrece la posibilidad de habilitar las interrupciones que se encuentran deshabilitadas. La siguiente ilustracin muestra es te caso.

Pgina 198 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


Por ltimo puede ingresar un comentario. Una vez seleccionados todos lo parmetros, presione el botn Ingresar. La siguiente ilustracin muestra el bloque insertado con los pasos anteriormente realizados.

En la siguiente imagen se muestran el bloque y el entorno de interrupcin por Interrupcin por CCP1 que son insertados en el tipo de comparacin por interrupcin. La primera imagen muestra los bloques insertados en el entorno del Programa Principal y la segunda imagen muestra el entorno de Interrupcin por CCP1 y los bloques que se insertan de manera automtica.

Pgina 199 de 239

Niple v4.0 - Programacin Visual de Microcontroladores

Modo PWM
En este modo, el microcontrolador genera un pulso a una determinada frecuencia en el Pin RB3 y cuyo ancho de pulso (tiempo de duracin del nivel alto dentro del ciclo) puede ser variable.

La frecuencia generada (o periodo del ciclo) se controla por medio del registro PR2 y su valor se calcula mediante la siguiente frmula: Periodo = 1 / Frecuencia_a_generar PR2 = (Periodo / (4 * Tosc * Predivisor_de_TRM2)) 1 Donde: Tosc (Tiempo de oscilacin) = 1 / Frecuencia_Cristal

Si desea obtener el periodo que genera un determinado valor de PR2: Periodo = (PR2 + 1) * 4 * Tosc * Predivisor_de_TRM2

El ancho de pulso es controlado mediante un valor de 10 bits el cual s e calcula con la siguiente frmula: Ancho_Pulso = Periodo * (Porcentaje_Ancho_Pulso / 100) Valor_Ancho_Pulso = Ancho_Pulso / (Tosc * Predivisor_de_TRM2) Donde: Porcentaje_Ancho_Pulso = Porcentaje de ancho de pulso deseado. Ej: Porcentaje_Ancho_Pulso = 50 (Control por ancho de pulso del 50%).

Adems, el valor Valor_Ancho_Pulso debe estar organizado de la siguiente manera:

Pgina 200 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


Los bits 0 y 1 se ubican en los bits 4 y 5 del registro CCP1CON, respectivamente. Y los bits 2 a 9 se ubican en el registro CCPR1L segn se indica en la siguiente imagen.

Es importante tener en cuenta que el rango de valores para el control del ancho de pulso es variable y depende de la frecuencia generada. O sea que, si bien el control del ancho de pulso se realiza mediante un valor de 10 bits, el rango 0 1023 no corresponde al 0% y 100% respectivamente. Por ejemplo: - Para una frecuencia de 1000 Hz., el control del ancho de pulso debe estar entre los valores 0 y 1000. - Para una frecuencia de 2500 Hz., el control del ancho de pulso debe estar entre los valores 0 y 400. - Para una frecuencia de 5000 Hz., el control del ancho de pulso debe estar entre los valores 0 y 500.

Programando el PWM con Niple Para poder utilizar el Modo PWM primero debe realizar los siguientes pasos: - Configurar y activar el temporizador interno TMR2. - Configurar el Pin RB3 como Salida.

Una vez realizados los pasos previos necesarios ya esta en condiciones de configurar el PWM.

Ingrese al rbol de herramientas y seleccione la opcin Insertar / Rutinas Bsicas / Mdulo CCP / Config. y Activar CCP1 como se muestra en la siguiente figura.

Pgina 201 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


Se presenta la pantalla Mdulo CCP1. Es importante aclarar que los 3 modos (Captura, Comparacin y PWM) se programan en la misma pantalla ya que pertenecen al mismo mdulo. Seleccione el modo PWM en la lista desplegable denominada Modo a utilizar. Para garantizar el correcto funcionamiento, Niple chequea de manera automtica si previamente han sido configurados el temporizador TMR2 y el Pin RB3 como Salida. Si todo est correctamente configurado, Niple permite comenzar a de no seleccionar lo contrario, con las no opciones permite requisitos

correspon dientes, continuar hasta

contar

los

anteriormente mencionados. En primer lugar Niple le presenta informacin acerca de la configuracin del temporizador TMR2. En este caso se muestra el valor de configuracin del Prescalado, dado que este valor se utiliza para realizar los clculos necesarios para generar tanto la frecuencia de salida como el control del ancho de pulso.

Lo primero que debe determinar es la frecuencia que desea generar.

Seleccione la opcin Tipo de Frecuencia = Fija. A continuacin ingrese la frecuencia que desea generar. Niple calcula y muestra automticamente el rango vlido de frecuencias que puede generar. Este rango depende de Prescalado del temporizador TMR2 y de la veloci dad del cristal utilizado. A modo de ilustracin generaremos una

frecuencia de 5000 Hz. Observe que mientras Ud. ingresa el valor de la frecuencia a generar, Niple calcula de manera automti ca el valor correspondiente el registro PR2. Una vez ingresada la frecuencia, proceda a configurar el control por ancho de pulso.

Pgina 202 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


Para esto seleccione el tipo de control a realizar que puede realizarse de 2 maneras segn sus necesidades: 1) Control por ancho de pulso Fijo: se genera un control por ancho de pulso constante a un determinado porcentaje del perodo y este porcentaje no podr ser modificado. (Es decir, para modificar este porcentaje de control de ancho de pulso deber volver a generar el cdigo ASM, compilar el archivo .hex y volver a grabar el PIC).

2)

Control por ancho de pulso Variable: el valor de configuracin del ancho de pulso se realiza por medio de 2 registros (recuerde que se trata de un valor a 10 bits). Seleccione los registros que contienen el valor. Niple calcula y muestra de manera automtica el rango de valores permitidos para el control del ancho de pulso. Debe prestar especial atencin de asignar a los registros seleccionados, un valor que se encuen tre dentro de es te rango.

Para facilitar esto, Niple cuenta con el mdulo de escalar un valor. Consulte el mdulo de funcin matemtica Escalar un valor.

Pgina 203 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


Por ltimo puede ingresar un comentario. Una vez seleccionados todos lo parmetros, presione el botn Ingres ar.

La siguiente ilustracin muestra el bloque insertado con los pasos anteriormente realizados.

Comunicaciones RS232 RS232 Enviar


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. Primero debe selecciona el tipo de

comunicacin a realizar la cual puede ser mediante mdulo USART. La USART es un mdulo de comunicaciones que los modelos de la lnea 16F6xx incluyen. Es decir que todo el procedimiento de envo de los datos se realiza de manera automtica mientras que si se realiza por cdigo, se generar el cdigo Assembler necesario para realizar el envo de los datos.

Pgina 204 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


La diferencia radica en que el mdulo USART prepara el dato e inicia el envo y luego vuelve a segu i r 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 form a 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.

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 dato a enviar.

RS232 Recibir
El protocolo RS232 es utilizado generalmente para comunicacin con el puerto serial de las computad oras (puerto COM). Este mdulo le permite recibir datos mediante el protocolo de comunicacin RS232 ya sea desde otros microcontroladores o desde una PC. Primero debe selecciona el tipo de

comunicacin a realizar la cual puede ser mediante mdulo USART. La USART es un mdulo de

comunicaciones que los modelos de la lnea 16F6xx incluyen. Es decir que todo el

procedimiento de envo de los datos se realiza de manera automtica mientras a diferencia del tipo de comunicacin por cdigo que se generar el cdigo Assembler necesario para realizar el envo de los datos. En primer lugar debe seleccionar el tipo de comunicacin: por USART o por Cdigo. Si selecciona el modo de comunicacin por USART, el sistema seleccionar de manera automtica el pin de recepcin. Este pin no puede ser modificado dado que el mdulo USART determina el pin (por hardware) para la recepcin de datos. A continuacin debe seleccionar el registro donde guardar el dato recibido.

Por ltimo seleccione la velocidad de comunicacin.

Pgina 205 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


Si selecciona el modo de comunicacin por USART, se debe activar la interrupcin por recepcin por USART. Si esto no se realiza, el sistema no detectar cuando un dato sea recibido. Por esto, Niple chequea si las interrupciones correspondientes han sido activadas:

GIE = habilitador general de interrupciones PEIE = Habilitador de interrupciones por perifricos RCIE = Habilitador de interrupcin por Recepcin en USART.

Si alguna de stas banderas de interrupcin no ha sido activada, no se producir la interrupcin al recibir un dato y por ende, el micro no detectar cuando recibe un dato.

Por esto, Niple supervisa si estas interrupciones estn correctamente activadas. Si Niple detecta que las interrupciones no han sido activadas, por defecto, ofre ce la posibilidad de activarlas.

Por ltimo presione le botn Ingresar.

Configurar Interrup.
Permite configurar todas las opciones posibles para las interrupciones.

Seleccione la interrupcin a configurar, para esto haga clic sobre las casillas de verificacin

disponibles para cada caso.

Haga clic en Ingresar.

Pgina 206 de 239

Niple v4.0 - Programacin Visual de Microcontroladores

Niple para PIC 16F87x


Caractersticas tcnicas de los PIC 16F87x
Inicialmente todos los microcontroladores incorporaron la arquitectura de Von Neumann, la cual se caracteriza por disponer de una sola memoria principal donde se almacenan los datos y las instrucciones. A esta memoria se accede a travs de un sistema de buses nico (direcciones, datos y control). Los microcontroladores de la familia 16F87x, al igual que el resto de los microcontroladores de la actual idad, estn diseados con la arquitectura Harvard. La arquitectura Harvard dispone de dos memorias independientes; una que contiene slo instrucciones, y otra donde se almacenan los datos. Ambas memorias cuentan con sus respectivos sistemas de buses de acceso y es posible realizar operaciones de acceso (lectura o escritura) simultneamente en ambas memorias. Voltaje de alimentacin: 5VCC. CPU RISC Circuito Integrado de 18 pines. Pines de configurables como Entrada o Salida: 16F870/3/6 16F874/7 = 22 pines = 33 pines

Frecuencia operacin mxima: 20 Mhz. Memoria Flash: 16F870/3/4 16F876/7 = 4 Kbytes = 8 Kbytes

Memoria de Datos: 16F870/3/4 16F876/7 = 192 Bytes = 368 Bytes

Memoria de Datos EEPROM: 16F870/3/4 16F876/7 = 128 Bytes = 256 Bytes

2 Temporizadores internos de 8 bits. 1 Temporizador interno de 16 bits. Mdulos CCP (Captura, Comparacin y PWM): 16F870 = 1 mdulo

16F873/4/6/7 = 2 mdulos

1 Mdulo de comunicaciones USART. Conversores Analgico-Digital: 16F870/3/6 16F874/7 = 5 canales = 8 canales

Interrupciones: 16F870/3/6 16F874/7 = 13 = 14

Pgina 207 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


Como mencionamos anteriormente, para que un microcontrolador funcione es necesario grabarle un programa en su interior. Este programa ser ledo y ejecutado lnea a lnea por la CPU. P ara que la CPU funcione, debe contar con un generador de impulsos de reloj externo que sincroniza el funcionamiento de todo el sistema.

Como origen de la seal de reloj externa utilizamos un cristal. El microcontrolador ejecuta cada instruccin (1 ciclo de programa) a de la velocidad del cristal utilizado. En general, un ciclo de programa corresponde a una lnea de cdigo Assembler .

Por ejemplo, si utilizamos un cristal de 4 Mhz, el microcontrolador estar ejecutando el cdigo a una velocidad de 1 Mhz. Es decir que, ejecutar 1.000.000 de lneas de cdigo del programa por segundo. Por lo tanto, cada lnea de cdigo se ejecutar en 1 microsegundo (1/1.000.000 Seg.).

Conexin de los PIC 16F87x

Pgina 208 de 239

Niple v4.0 - Programacin Visual de Microcontroladores Los puertos del PIC 16F87x
Los microcontroladores de la familia 16F87x disponen de 3 o 5 puertos segn el modelo de microcontrolador: Puerto A = 6 pines (5 pines A/D) Puerto B = 8 pines Puerto C = 8 pines Puerto D = 8 pines Puerto E = 3 pines (3 pines A/D)

Pgina 209 de 239

Niple v4.0 - Programacin Visual de Microcontroladores Mdulos especficos de Niple para PIC 16F87x Crear un nuevo proyecto.
Para crear un nuevo proyecto ingrese al men Archivo \Nuevo Proyecto... Se pantalla Proyecto. En debe primer lugar el presentar de la

Nuevo

seleccionar

modelo PIC que ser utilizado para

desarrollar el proyecto. Es importante

saber que en Niple, todo el sistema de

adapta de acuerdo al modelo de PIC (los bits,

seleccionado registros, memoria los

EEPROM,

perifricos, interrupciones, etc.). Tenga en cuenta que una vez creado el proyecto no puede cambiar el modelo de PIC. El Botn Caractersticas de la Lnea 16F87x presenta un cuadro comparativo con las caractersticas de cada uno de los modelos de PIC que componen la lnea 16F87x.

Pgina 210 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


De sta manera Niple lo ayuda a seleccionar el modelo de PIC a utilizar. Una vez seleccionado el m odelo de PIC a utilizar Niple le solicita que ingrese los siguientes datos:

Datos del proyecto Nombre del proyecto: Nombre descriptivo del proyecto (No es el nombre de Archivo). Descripcin del proyecto: Ingrese una descripcin para identificar el proyecto Fecha: Por defecto Niple presenta la fecha actual del sistema. Nombre del Autor: Niple asigna el nombre del titular de la licencia como Autor del proyecto. E ste nombre no puede ser modificado.

Si bien los datos del proyecto son opcionales se recomien da ingresar estos datos para la correcta identificacin del proyecto en el futuro. Datos del archivo Nombre del archivo: Niple utiliza la extensin .NPL para los archivos de proyecto. Seleccione la unidad y la carpeta donde guardar el nuevo proyecto. Al selecciona la carpeta, Niple muestra todos los proyecto existentes en la misma. No puede r epetir el nombre de un archivo de proyecto.

Una vez ingresados todos los datos necesarios, presione el botn Crear.

Al crear un nuevo proyecto se cargan todas las c aractersticas del modelo de PIC seleccionado. Adems se genera de manera automtica el entorno del Programa Principal y se inserta el bloque de Inicio del programa.

Pgina 211 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


Todos los proyectos deben tener un entorno de Programa Principal. Este entorno no puede ser borrado. Y cada entorno de Programa Principal debe tener un bloque de Inicio de Programa.

Declaracin de Registros
En Niple la declaracin de registros se realiza de manera visual trabajando directamente sobre el mapa de memoria. Para ingresar a la pantalla de declaracin de registros, seleccione o por el medio men de la

Declaracin\Registros

combinacin de teclas CTRL+R. En esta pantalla se presenta el mapa de memoria.

La lnea 16F87x cuenta con 4 pginas de memoria, solapas. Cada registro est identificado con una las cuales son presentadas en 2

direccin de registro la cual est expresada en formato hexadecimal.

El mapa de memoria de datos presenta los distintos los tipos de registros con diferentes colores.

Pgina 212 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


Registros Predefinidos p or el PIC (Color Naranja): Corresponde a registros de configuracin y control del sistema. Estos registros se declaran de manera automtica en el momento de crear el proyecto y no pueden ser borrados. Cada uno de estos registros cumple con una funcin pred eterminada. Registros de Usuario (Color Verde): Corresponde a la memoria disponible para que el usuario declare sus propios registros. Registros deshabilitados (Color Gris): Corresponde a la memoria no disponible. Estas direcciones de memoria no pueden ser utilizadas.

Declaracin de un Registro de Usuario


Para declarar un registro de usuario debe hacer un clic en una posicin de memoria libre correspondiente a los registros de tipos Usuario (color verde). Al hacer clic, se le solicita que ingrese el nombre del registro a declarar. Niple controla la validez del nombre del registro que se est declarando, esto es: Que no est siendo ya utilizado por otro registro o BIT. No se permiten nombres de registros como A, B, C, D, E que pueden llegar a confundirse con un nombre de puerto. Que no contenga caracteres no vlidos. Que el nombre no contenga ms de 20 caracteres de largo. Que el nombre no corresponda a una instruccin o comando.

Declaracin de Bits
En Niple la declaracin de Bits se realiza de manera totalmente visual trabajando directamente sobre el mapa de memoria. Puede ingresar a la pantalla de declaracin de bits a travs del men Declaracin\Bits o a travs de la combinacin de teclas CTRL+B.

Pgina 213 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


La memoria de datos se encuentra organizada en 4 bancos o pginas, las cuales son presentadas una en cada solapa de la pantalla de declaracin de Bits El mapa de memoria de datos presenta los distintos los tipos de registros con diferentes colores. A la vez se muestra un detalle de los bits que conforman cada registro.

Registros Predefinidos por el PIC (Color Naranja): Corresponde a registros de configuracin y control del sistema. Estos registros se declaran de manera automtica en el momento de crear el proyecto y no pueden ser borrados. Cada uno de estos registros cumple con una funcin predeterminada.

Registros de Usuario (Color Verde): Corresponde a la memoria disponible para que el usuario declare sus propios registros.

Registros deshabilitados (Color Gris): Corresponde a la memoria no disponible. Estas direcciones de memoria no pueden ser utilizadas.

Haciendo un clic sobre el nombre de un BIT se muestra en la parte inferior de la pantalla toda informacin correspondiente al BIT seleccionado.

Declaracin de un Bit de Usuario


Antes de declarar un BIT de usuario debe haber declarado primero el registro de usuario al cual pertenece el BIT que desea declarar.

Una vez declarado el registro de usuario, ingrese a la pantalla de Declaracin de Bits y seleccione el nmero de BIT que desea declarar. Esto se hace haciendo un clic sobre la posicin de BIT correspondiente dentro registro de usuario y respondiendo afirmativamente cuando le pregunta si desea declara un nuevo BIT. Luego le solicita que ingrese el nombre y la descripcin del nuevo BIT.

Pgina 214 de 239

Niple v4.0 - Programacin Visual de Microcontroladores Puertos Configurar Puerto A


En Niple, la configuracin de los puertos se realiza de manera totalmente visual, trabajando directamente sobre una imagen del PIC. El puerto A est

conformado slo por 5 bits (RA0 RA4). En la pantalla de configuracin d el

Puerto A, se presenta una imagen del PIC con las descripciones de todos los pines. En cada pin al

correspondiente

puerto A se muestra una casilla a de travs

verificacin,

de la cual el pin es configurado como entrada o salida. Cuando utiliza los modelos de micros 16F874 y 16F877, los puertos A y E se configuran juntos ya que los mismos incluyen los pines de los canales A/D y stos deben ser configurados en conjunto. Adems, debido al tamao de estos modelos (de 40 pines) la imagen del micro es demasiado grande para caber en la de Por le

pantalla configuracin. esto, Niple

presenta una barra de desplazamiento en la parte derecha de la pantalla configuracin. de De

esta manera, puede reco rrer la imagen del micro, como lo muestra la siguiente ilustracin.

Pgina 215 de 239

Niple v4.0 - Programacin Visual de Microcontroladores Configuracin de los canales A/D


Cuando alguno de los pines del puerto A (a excepcin del pin RA4) es configurado como entrada, sta puede utilizarse como entrada digital o como una conversin

analgica/digital (A/D). Por esto, se

presenta una segunda casilla de verificacin donde se especifica el tipo de lectura a

realizar. Por presenta defecto opcin se D

que significa Entrada Digital.

Haciendo un clic en la casilla de verificacin se conmuta a Conversin A/D, representada por una A. Si selecciona configurar una entrada como Conversin A/D, en la parte inferior-izquierda de la pantalla se visualiza un cuadro de configuracin del voltaje de referencia para la conversin A/D. El voltaje de referencia puede ser configurado como Referencia Interna (V+= Vdd; V - = Vss); como Ref erencia Externa (V+ = RA3; como combinacin ambas. Si elige algn V- = RA2) o una de

voltaje de referencia como externo, el pin correspondiente (RA2 o RA3) en es la

deshabilitado

pantalla para que no pueda ser utilizado

como entrada o como salida.

Una vez seleccionada la configuracin deseada, presione el botn Ingresar.

Pgina 216 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


Antes de insertar el bloque, Niple chequea que la co nfiguracin seleccionada corresponda a una de las combinaciones vlidas, ya que no puede seleccionar cualquier combinacin de Entradas/Salidas Digitales y Entradas A/D. Por ejemplo: si desea utilizar solo 1 conversor A/D, ste debe ser el BIT RA0, es decir que no tiene manera de configurar el BIT RA1 como nica entrada A/D. Si el resultado de la verificacin configuracin seleccionada Incorrecta, advierte y resulta Niple le da lo la de una de la

posibilidad seleccionar combinacin vlida.

Observe

en

la

siguiente imagen donde se ha seleccionado el BIT RA1 como nica entrada advierte A/D. del Niple error y

ofrece asistencia. Si responde afirmativamente, se presenta un cuadro con todas las combinaciones posibles.

La configuracin seleccionada ser actualizada en la pantalla de configuracin del puerto A.

Una vez seleccionada la configuracin correcta, presione el botn Ingresar.

Pgina 217 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


Si el chequeo de la configuracin seleccionada resulta ser correcta, Niple inserta el bloque en el diagr ama.

Representacin grfica

Sintaxis Puerto = Valor_Configuracin Esto se interpreta como: el puerto A es configurado como Valor_Configuracin.

Donde: El parmetro Valor_Configuracin puede contener alguno de los siguientes cdigos: S = Salida Digital E = Entrada Digital A = Canal de Conversin A/D + = Voltaje de referencia externa positiva (para conversin A/D) - = Voltaje de referencia negativa (para conversin A/D) X = Bit no disponible.

Ejemplos

Configurar Puerto B
En Niple, la configuracin de los puertos se realiza de manera totalmente visual, trabajando directamente sobre una imagen del PIC.

En la pantalla de configuracin del Puerto B, se presenta una imagen del PIC con las descripciones de todos los pines.

En cada pin correspondiente al puerto B se muestra una casilla de verificacin, a travs de la cual el pin es configurado como entrada o salida.

Pgina 218 de 239

Niple v4.0 - Programacin Visual de Microcontroladores

Cuando utiliza los modelos de micros 16F874 y 16F877, los puertos A y E se configuran juntos ya que los mismos incluyen los pines de los canales A/D y stos deben ser configurados en conjunto. Cuando utiliza los modelos 16F874 16F877 (de 40 pines), la imagen del micro es demasiado grande para caber en la pantalla de configuracin. Por esto, Niple le presenta una barra de desplazamiento en la parte derecha de la pantalla de configuracin. De esta manera puede recorrer la imagen del micro, como lo muestra la siguiente ilustracin.

Una vez seleccionada la configuracin deseada, presione el botn Ingresar.

Pgina 219 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


Representacin grfica

Sintaxis Puerto = Valor_Configuracin Esto se interpreta como: el puerto B es configurado como Valor_Configuracin.

Donde: El parmetro Valor_Configuracin puede contener alguno de los siguientes cdigos: S = Salida Digital E = Entrada Digital Ejemplos

Configurar Puerto C
En Niple, la configuracin de los puertos se realiza de manera totalmente visual, trabajando directamente sobre una imagen del PIC.

En la pantalla de configuracin del Puerto C, se presenta una imagen del PIC con las descripciones de todos los pines. En cada pin correspondi ente al puerto C se muestra una casilla de verificacin, a travs de la cual el pin es configurado como entrada o salida.

Pgina 220 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


Cuando utiliza los modelos 16F874 16F877 (de 40 pines), la imagen del micro es demasiado grande para caber en la pantalla de configuracin. Por esto, Niple le presenta una barra de desplazamiento en la parte derecha de la pantalla de configuracin. De esta manera puede recorrer la imagen del micro, como lo muestra la siguiente ilustracin.

Una vez seleccionada la configuracin des eada, presione el botn Ingresar.

Representacin grfica

Sintaxis Puerto = Valor_Configuracin Esto se interpreta como: el puerto C es configurado como Valor_Configuracin.

Donde: El parmetro Valor_Configuracin puede contener alguno de los siguientes cdigos: S = Salida Digital E = Entrada Digital Ejemplos

Pgina 221 de 239

Niple v4.0 - Programacin Visual de Microcontroladores Configurar Puerto D


En Niple, la configuracin de los puertos se realiza de manera totalmente visual, trabajando directamente sobre una imagen del PIC. En la pantalla de configuracin del Puerto D se presenta una imagen del PIC con las descripciones de todos los pines. En cada pin al

correspondiente

puerto D se muestra una casilla de

verificacin, a travs de la cual el pin es configurado entrada o salida. Niple le presenta una barra de como

desplazamiento en la parte derecha de la pantalla de

configuracin. De esta manera puede

recorrer la imagen del micro, como lo muestra la siguiente ilustracin. Una vez seleccionada la configuracin deseada, presione el botn Ingresar .

Representacin grfica

Sintaxis Puerto = Valor_Configuracin Esto se interpreta como: el puerto C es configurado como Valor_Configuracin.

Donde: El parmetro Valor_Configuracin puede contener alguno de los siguientes cdigos: S = Salida Digital E = Entrada Digital Ejemplo

Pgina 222 de 239

Niple v4.0 - Programacin Visual de Microcontroladores Configurar Puerto E


En Niple, el puerto E se configura junto con el puerto A. Consulte la configuracin del puerto A.

Mdulos CCP
Los microcontroladores de la lnea 16F87x pueden contener 1 2 mdulos de Captura, Comparacin y Modulacin por ancho de pulso (CCP), llamados CCP1 y CCP2. La cantidad de mdulos CCP disponibles depende del modelo de PIC. Para ambos casos tienen registros de control o configuracin y registros de trabajo. Los registros de control y trabajo para el mdulo CCP1 son: CCP1CON direccin 17h y CCP1RH-CCP1RL direcciones 16h y 15h, mientras que para el mdulo CCP2 son: CCP2CON direccin 1Dh y CCP2RH-CCP2RL direcciones 16h y 15h.

Asignacin de bits a los registros CCPxCON, x puede tomar el valor 1 o 2. CCPxX 5 CCPxY 4 CCPxM3 CCPxM2 CCPxM1 CCPxM0 3 2 1 0

Los mdulos pueden trabajar en tres mod os diferentes, que son: - Modo Captura - Modo Comparacin - Modo Modulacin por Ancho de Pulso, PWM

CCPxM3-0 0000 0100 0101 0110 0111 1000 1001 1010 1011 11xx

Modo de trabajo para los mdulos CCP Mdulo desconectado. Modo captura cada flanco descendente. Modo captura cada flanco ascendente. Modo captura cada 4 flancos ascendente. Modo captura cada 16 flancos ascendente. Modo comparacin que activa la salida RC. Modo comparacin que desactiva la salida RC. Modo comparacin que genera una interrupcin en el programa. Modo comparacin que genera un disparo para cada mdulo. Modo PWM

Modo Captura
Antes de pasar a desarrollar la metodologa de programacin con Niple, realizaremos una breve descripcin del modo Captura a modo de repaso general. El modo Captura recupera el estado de cuenta del TMR1 y lo guarda en los registros CCPR1H y CCPR1L para el mdulo CCP1 o en los registros CCPR2H y CCPR2L para el mdulo CCP2. Para el mdulo CCP1, el Pin RC2 debe estar configurado como Entrada y para el mdulo CCP2, el Pin RC1 debe estar configurado como Entrada.

El TMR1 debe estar configurado con la opcin Origen de seal de reloj = Reloj Interno. (Recuerde que tambin el TMR1 puede ser configurado para que increment e mediante una seal externa).

Pgina 223 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


La captura se realiza cada vez que ocurre alguno de los siguientes eventos en el Pin correspondiente a cada mdulo, esto se configura mediante los 4 primeros bits de los registros CCP1CON y CCP2CON: 1) Un flanco ascendente. 2) Un flanco descendente. 3) Cada 4 flancos ascendentes. 4) Cada 16 flancos ascendentes. Cada vez que se realiza una captura, se activa el BIT 2 (CCP1IF) del registro PIR1, o el BIT 0 (CCP2IF) del registro PIR2. Adems puede generarse una interrupcin, si previamente fue configurado el BIT 2 (CCP1IE) del registro PIE1 o el BIT 0 (CCP2IE) del registro PIE2.

Programando el modo Captura en Niple Para poder utilizar el Modo Captura primero debe realizar los siguientes pasos: Configurar y activar el temporizador interno TMR1. Configurar el Pin correspondiente al mdulo CCP como Entrada.

En este caso trabajamos sobre el modo Captura del mdulo CCP1, pero lo desarrollado a continuacin es valido tambin para el modo Captura del mdulo CCP2. Una vez realizados los pasos previos necesarios ya esta en condiciones de realizar una Captura.

Ingrese al rbol de herramientas y seleccione la opcin Insertar / Rutinas Bsicas / Mdulos CCP / Mdulo CCP1 / Config. y Activar CCP1 como se muestra en la imagen de la derecha. Se presenta la pantalla Mdulo CCP1. Es importante aclarar que los 3 modos (Captura, Comparacin y PWM) se programan en la misma pantalla ya que pertenecen al mismo mdulo.

Seleccione el modo Comparacin en la lista desplegable denominada Modo a utilizar.

Para garantizar el correcto funcionamiento, Niple chequea de manera automtica si previamente han sido configurados el temporizador TMR1 y el Pin correspondiente al mdulo, en este caso el Pin RC2 como entrada.

Si todo esta correctamente confi gurado, Niple permite comenzar a seleccionar las opciones correspondientes, de lo contrario, no permite continuar hasta no contar con los requisitos anteriormente mencionados.

Pgina 224 de 239

Niple v4.0 - Programacin Visual de Microcontroladores

En primer lugar debe seleccionar la configuracin del evento que provoca la captura. Para este caso, seleccione de la lista desplegable la opcin 1 Flanco Ascendente.

Pgina 225 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


A continuacin seleccione 1 de las 2 maneras que tiene de realizar la captura.

1) Esperar en un bucle hasta que termine la Captura: El PIC no realiza ninguna otra tarea que no sea esperar a que el BIT 2 (CCP1IE) del registro PIE1 se ponga en 1, lo cual indica que se ha realizado una captura.

2) No esperar y generar una interrupcin por Fin de Captura: Se configura el modo Captura y conti na ejecutando el resto del cdigo. Cuando se realiza la captura se produce una interrupcin por Fin de Captura.

Sea

cual

fuere

la

opcin

seleccionada,

continuacin le solicita que seleccione los registros donde guardar el resultado de la captura.

Si ha seleccionado la opcin No esperar y generar una interrupcin, Niple chequea el estado de las interrupciones y ofrece la posibilidad de habilitar las interrupciones que se encuentran deshabilitadas.

La ilustracin de la derecha muestra este caso.

Por ltimo puede ingresar un comentario. Una vez seleccionados todos lo parmetros, presione el botn Ingresar.

Pgina 226 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


La siguiente ilustracin muestra el bloque insertado con los pasos anteriormente realizados.

En la siguiente imagen se muestran el bloque y el entorno de Interrupcin por CCP1 que son insertados en el tipo de captura por interrupcin. La siguiente imagen muestra los bloques insertados en el entorno del Programa Principal .

Pgina 227 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


La siguiente imagen muestra el entorno de Interrupcin por CCP1 y los bloques qu e se insertan de manera automtica.

Modo Comparacin
En este modo, el microcontrolador compara de manera constante los registros CCPR1H y CCPR1L con el valor actual de TMR1. Cuando los valores son iguales, puede llegar a producirse alguno de los 3 event os segn la configuracin seleccionada. Estos eventos son: - Poner a 1 el Pin RC2 para CCP1 o el Pin RC1 para CCP2. - Poner a 0 el Pin RC2 para CCP1 o el Pin RC1 para CCP2. - Generar una interrupcin. Esta opcin no afecta al Pin RC2 para CCP1 o el Pin RC1 para CCP2.

Para el mdulo CCP1, el Pin RC2 debe estar configurado como Salida y para el CCP2 el Pin RC1 debe estar configurado como Salida.

Si el TMR1 es configurado con la opcin Origen de seal de reloj = Reloj Externo, entonces este mdulo puede ser utilizado como contador de eventos que al llegar al valor deseado se produzca una accin determinada sin necesidad de estar monitoreando el estado de cuenta.

Si el TMR1 es configurado con la opcin Origen de seal de reloj = Reloj Interno, entonces este mdulo puede ser utilizado para generar eventos en un determinado periodo.

Pgina 228 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


Cada vez que se realiza una comparacin, se activa el BIT 2 (CCP1IF) del registro PIR1, o el BIT 0 (CCP2IF) del registro PIR2. Adems puede generarse una interrupcin, si pr eviamente fue configurado el BIT 2 (CCP1IE) del registro PIE1 o el BIT 0 (CCP2IE) del registro PIE2.

Programando el modo Comparacin en Niple Para poder utilizar el Modo Comparacin primero debe realizar los siguientes pasos: - Configurar y activar el temporizador interno TMR1. - Configurar el Pin correspondiente al mdulo CCP como Salida.

En este caso trabajamos sobre el modo Comparacin del mdulo CCP1, pero lo desarrollado a continuacin es vlido tambin para el modo Comparacin del mdulo CCP2. Una vez realizados los pasos previos necesarios ya esta en condiciones de realizar una Comparacin. Ingrese al rbol de herramientas y seleccione la opcin Insertar / Rutinas Bsicas / Mdulos CCP / Mdulo CCP1 / Config. y Activar CCP1 como se muestra en la imagen de la derecha . Se presenta la pantalla Mdulo CCP1. Es importante aclarar que los 3 modos (Captura, Comparacin y PWM) se programan en la misma pantalla ya que pertenecen al

mismo mdulo.

Seleccione el modo Comparacin en la lista desplegable denominada Modo a utilizar. Para garantizar el correcto funcionamiento, Niple chequea de manera sido automtica si el

previamente

han

configurados

temporizador TMR1 y el Pin correspondiente al mdulo, en este caso el Pin RC2 como Salida. Si todo esta cor rectamente configurado, Niple permite comenzar a seleccionar las opciones correspondientes, de lo contrario, no permite continuar hasta no contar con los requisitos anteriormente mencionados. En primer lugar debe seleccionar el valor de Comparacin. O sea, el valor hasta el cual desea que el temporizador interno TRM1 incremente. Dado que el temporizador TMR1 est formado por 2 registros (TRM1H y TMR1L), el valor de comparacin tambin corresponde a un nmero de 16 bits.

Pgina 229 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


Niple le ofrece la posibilidad de asignar el valor de comparacin mediante un valor Literal (valor constante) o mediante el valor contenido en 2 registros (valor Variable) ofreciendo una mayor versatilidad. De esta manera Ud. puede ajustar el valor de comparacin a sus necesidades.

Si Ud. desea desarrollar un sistema contador que realice una determinada accin al llegar a la cuenta de 1000. Entonces debe seleccionar las opciones Valor Literal, Tipo Decimal y 1000 como valor de comparacin. Tenga en cuenta que no podr cambiar el valor de comparacin dado que se trata de un v alor constante. Si en el futuro desea cambiar el valor de comparacin, deber generar nuevamente el cdigo Assembler, compilar el archivo .hex y grabar nuevamente el PIC.

Una forma ms verstil de realizar esto es: asignar el valor de comparacin como variable, por ejemplo, mediante 2 registros llamados cant_max_1 y cant_max_2. Esto le permite disear el programa para poder actualizar el valor de comparacin mediante algn sistema de Set Point (por RS232 , Teclado, o pulsadores que incrementen y decrementen estos valores) y se guarde (por ejemplo) los valores de estos 2 registros en la memoria EEPROM.

A continuacin seleccione el evento a realizar cuando el TMR1 llegue al estado de cuenta del valor de comparacin. Aqu tiene 3 opciones: - Poner a 1 el Pin correspondiente. - Poner a 0 el Pin correspondiente. - Generar una interrupcin. Esta opcin no afecta al Pin correspondiente el Mdulo CCP.

Si elige alguna de las 2 primeras opciones. Niple se so licita que seleccione una de las 2 maneras que tiene de realizar la comparacin.

1)

Esperar en un bucle hasta que termine la Comparacin: El PIC no realiza ninguna otra tarea que no sea esperar a que el BIT 2 (CCP1IE) del registro PIE1 se ponga en 1, lo cual finalizado la comparacin. indica que ha

2)

No esperar y generar una interrupcin por Fin de Comparacin: Se configura el modo Comparacin y contina ejecutando el resto del cdigo. Cuando el valor del TMR1 es igual a valor de comparacin, se produce una interrupcin por Fin de Compara cin.

Pgina 230 de 239

Niple v4.0 - Programacin Visual de Microcontroladores

Si ha seleccionado la opcin No esperar y generar una interrupcin..., Niple chequea el estado de las interrupciones y ofrece la posibilidad de habilitar las interrupciones que se encuentran deshabilitadas. La siguiente ilustracin muestra este caso.

Pgina 231 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


Por ltimo puede ingresar un comentario. Una vez seleccionados todos lo parmetros, presione el botn Ingresar.

La siguiente ilustracin muestra el bloque insertado con los pasos anteriormente realizados.

En la siguiente imagen se muestran el bloque y el entorno de interrupcin por Interrupcin por CCP1 que son insertados en el tipo de comparacin por interrupcin. La siguiente imagen muestra los bloques insertados en el entorno del Programa Principal.

Pgina 232 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


La siguiente imagen muestra el entorno de Interrupcin por CCP1 y los bloques que se insertan de manera automtica.

Modo PWM
En este modo, el microcontrolador genera un pulso a una determinada frecuencia en el Pin correspondiente al mdulo CCP y cuyo ancho de pulso (tiempo de duracin del nivel alto dentro del ciclo) puede ser variable. La frecuencia generada (o periodo del ciclo) se controla por medio del registro PR2 y su valor se calcula mediante la siguiente frmula: Periodo = 1 / Frecuencia_a_generar PR2 = (Periodo / (4 * Tosc * Predivisor_de_TRM2)) 1 Donde: Tosc (Tiempo de oscilacin) = 1 / Frecuencia_Cristal

Si desea obtener el periodo que genera un determinado valor de PR2: Periodo = (PR2 + 1) * 4 * Tosc * Predivisor_de_TRM2

El ancho de pulso es controlado mediante un valor de 10 bits el cual se calcula con la siguiente frmula: Ancho_Pulso = Periodo * (Porcentaje_Ancho_Pulso / 100) Valor_Ancho_Pulso = Ancho_Pulso / (Tosc * Predivisor_de_TRM2) Donde: Porcentaje_Ancho_Pulso = Porcentaj e de ancho de pulso deseado. Ej: Porcentaje_Ancho_Pulso = 50 (Control por ancho de pulso del 50%).

Pgina 233 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


Adems, el valor Valor_Ancho_Pulso debe estar organizado de la siguiente manera: Los bits 0 y 1 se ubican en los bits 4 y 5 del registro CCP1CON, respec tivamente. Y los bits 2 a 9 se ubican en el registro CCPR1L segn se indica en la siguiente imagen.

Es importante tener en cuenta que el rango de valores para el control del ancho de pulso es variable y depende de la frecuencia generada. O sea que, si bien el control del ancho de pulso se realiza mediante un valor de 10 bits, el rango 0 1023 no corresponde al 0% y 100% respectivamente. Por ejemplo: - Para una frecuencia de 1000 Hz., el control del ancho de pulso debe estar entre los valores 0 y 1000. - Para una frecuencia de 2500 Hz., el control del ancho de pulso debe estar entre los valores 0 y 400. - Para una frecuencia de 5000 Hz., el control del ancho de pulso debe estar entre los valores 0 y 500.

Programando el PWM con Niple Para poder utilizar e l Modo PWM primero debe realizar los siguientes pasos: - Configurar y activar el temporizador interno TMR2. - Configurar el Pin correspondiente al mdulo CCP como Salida.

En este caso trabajamos sobre el modo PWM del mdulo CCP1, pero lo desarrollado a continuacin es valido tambin para el modo PWM del mdulo CCP2. Una vez realizados los pasos previos necesarios ya esta en condiciones de configurar el PWM. Ingrese al rbol de herramientas y seleccione la opcin Insertar / Rutinas Bsicas / Mdulos CCP / Mdulo CCP1 / Config. y Activar CCP1 como se muestra en la siguiente figura. Se presenta la pantalla Mdulo CCP1. Es importante aclarar que los 3 modos (Captura, Comparacin y PWM) se programan en la misma pantalla ya que pertenecen al mismo mdulo. Seleccione el modo PWM en la lista desplegable denominada Modo a utilizar.

Pgina 234 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


Para garantizar el correcto funcionamiento, Niple chequea de manera automtica si previamente han sido configurados el temporizador TMR2 y el Pin correspondiente al mdulo, en este caso el Pin RC2 como Salida. Si todo esta correctamente configurado, Niple permite comenzar a de no seleccionar lo contrario, con las no opciones permite requisitos

correspon dientes, continuar hasta

contar

los

anteriormente mencionados. En primer lugar Niple le presenta informacin acerca de la configuracin del temporizador TMR2. En este caso se muestra el valor de configuracin del Prescalado, dado que este valor se utiliza para realizar los clculos necesarios para generar tanto la frecuencia de salida como el control del ancho de pulso. Lo primero que debe determinar es la frecuencia que desea generar. Seleccione la opcin Tipo de Frecuencia = Fija. A continuacin ingrese la frecuencia que desea generar. Niple calcula y muestra automticamente el rango vlido de frecuencias que puede generar. Este rango depende de Prescalado del temporizador TMR2 y de la velocidad del cristal utilizado. A modo de ilustracin vamos a generar una frecuencia de 5000 Hz. Observe que mientras Ud. ingresa el valor de la frecuencia a generar, Niple calcula de manera

automti ca el valor correspondiente el registro PR2. Una vez ingresada la frecuencia, proceda a configurar el control por ancho de pulso. Para esto seleccione el tipo de control a realizar que puede realizarse de 2 maneras segn sus neces idades: 1) Control por ancho de pulso Fijo: se genera un control por ancho de pulso constante a un determina do porcentaje del perodo y e ste porcentaje no podr ser modificado. (Es decir, para modificar este porcentaje de control de ancho de pulso deber volver a generar el cdigo ASM, compilar el archivo .hex y volver a grabar el PIC).

Pgina 235 de 239

Niple v4.0 - Programacin Visual de Microcontroladores


2) Control por ancho de pulso Variable: el valor de configuracin del ancho de pulso se realiza por medio de 2 registros (recuerde que se trata de un valor a 10 bits). Seleccione los registros que contienen el valor. Niple calcula y muestra de manera automtica el rango de valores permitidos para el control del ancho de pulso. Debe prestar especial atencin de asignar a los registros seleccionados, un valor que se encue ntre dentro de este rango. Para facilitar esto, Niple cuenta con el mdulo de escalar un valor. Consulte el mdulo de funcin matemtica Escalar un valor.

Por ltimo puede ingresar un comentario. Una vez seleccionados todos lo parmetros, presione el botn Ingresar. La siguiente ilustracin muestra el bloque insertado con los pasos anteriormente realizados.

Pgina 236 de 239

Niple v4.0 - Programacin Visual de Microcontroladores Comunicaciones RS232 RS232 Enviar


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. Primero debe selecciona el tipo de

comunicacin a realizar la cual puede ser mediante mdulo USART. La USART es un mdulo de

comunicaciones que los modelos de la lnea 16F87x incluyen. Es decir que todo el

procedimiento de envo de los datos se realiza de manera automtica mientras que si se realiza por cdigo, se generar 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 segui r 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. 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 dato a enviar.

RS232 Recibir
El protocolo RS232 es utilizado generalmente para comunicacin con el puerto serial de las computad oras (puertos COM). Este mdulo le permite recibir datos mediante el protocolo de comunicacin RS232 ya sea desde otros microcontroladores o desde una PC.

Pgina 237 de 239

Niple v4.0 - Programacin Visual de Microcontroladores

Primero debe selecciona el tipo de comunicacin a realizar la cual puede ser mediante mdulo USART. La USART es un mdulo de comunicaciones que los modelos de la lnea 16F87x incluyen. Es decir que todo el procedimiento de envo de los datos se realiza de manera automtica mientras a diferencia del tipo de comunicacin por cdigo que se generar el cdigo Assembler necesario para realizar el envo de los datos. En primer lugar debe seleccionar el tipo de comunicacin: por USART o por Cdigo. Si selecciona el modo de comunicacin por USART, el sistema seleccionar de manera automtica el pin de recepcin. Este pin no puede ser modificado dado que el mdulo USART determina el pin (por hardware) para la recepcin de datos. A continuacin debe seleccionar el registro donde guardar el dato recibido. Por ultimo seleccione la velocidad de comunicacin.

Si selecciona el modo de comunicacin por USART, se deben activar las interrupcin por recepcin por USART. Si esto no se realiza, el sistema no detectar cuando un dato sea recibido. Por esto, Niple chequea si las interrupciones correspondientes han sido activadas: GIE = habilitador general de interrupciones PEIE = Habilitador de interrupciones por perifricos RCIE = Habilitador de interrupcin por Recepcin en USART.

Si alguna de estas banderas de interrupcin no ha sido activada, no se producir la interrupcin al recibir un dato y por ende, el micro no detectar cuando recibe un dato. Por esto, Niple supervisa si estas interrupciones estn correctamente activadas. Si Niple detecta que las interrupciones no han sido activadas, por defecto, ofrece la posibilidad de activarlas. Por ltimo presione le botn Ingresar.

Pgina 238 de 239

Niple v4.0 - Programacin Visual de Microcontroladores Configurar Interrup.


Permite configurar todas las opciones posibles para las interrupciones RB0, TMR0 y Watchdog. En el primer caso, el usuario podr seleccionar si la interrupcin se activa mientras transcurre el flanco descendente o el ascendente, mientras que para las restantes, podr seleccionar la tasa de divisin para el escalado de los tiempos.

1) Seleccione la interrupcin a configurar, para es to haga clic sobre las casillas de verificacin dispon ibles para cada caso. 2) Si selecciono Interrup. por RB0, haga clic en lo botones de opcin correspondientes a Interrup. por flanco Ascendente o Interrup. por flanco descendente. 3) Si selecciono Interr up. por TMR0 , seleccione de la lista la Tasa de divisin y el Origen de la seal de reloj . Haga clic en Ingresar.

Pgina 239 de 239

S-ar putea să vă placă și