Niple - Manual de Usuario - Español

242
Niple v4.0 - Programación Visual de Microcontroladores Página 1 de 242 Programación Visual de Microcontroladores Para PIC 12F6xx, 16F84, 16F6xx y 16F87x Versión 4.0 Manual de Usuario

description

Microcontroladores pic

Transcript of Niple - Manual de Usuario - Español

Page 1: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 1 de 242

Programación Visual de Microcontroladores

Para PIC 12F6xx, 16F84, 16F6xx y 16F87x

Versión 4.0

Manual de Usuario

Page 2: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 2 de 242

Importante

Como utilizar este manual

Existe una serie de características, módulos y funciones que son comunes a todas las versiones de Ni-

ple. Tanto el diseño de las pantallas como así también la metodología de utilización e implementación de

muchos de estos módulos no varían de una versión a otra.

Por esto, los manuales de las diferentes versiones comparten una importante cantidad de información y

si los mismos se imprimen por separado, se estaría generando una considerable cantidad de información

duplicada.

Dado que este manual ha sido diseñado para incluir las características de todas las versiones de Niple

4.0 hemos organizado la i n formación en 2 partes.

La primer parte consiste en toda aquella informaci ón que resulta común a todas las versiones, esto es,

información general y conceptos básicos sobre micro controladores, introducción a Niple, principios básicos

y generales de programación con Niple y la descripción de los módulos comunes a todas las versiones.

La segunda parte consiste en las características particulares de cada l ínea de microcontroladores y las

descripciones de los módulos específicos de cada versión de Niple.

Page 3: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 3 de 242

Índice COMO UTILIZAR ESTE MANUAL ________________________________________________________________________ 2

INTRODUCCIÓN A LOS MICROCONTROLADORES _______________________________________________ 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 Líneas de Entrada/Salida (E/S), (Puertos) ___________________________________________________________ 16 Módulos Temporizadores Internos (TMRs)__________________________________________________________ 16

UTILIZANDO UN MICROCONTROLADOR _________________________________________________________________ 18 NIPLE: PROGRAMACIÓN VISUAL DE MICROCONTROLADORES PIC__________________________________________ 19

INTRODUCCIÓN A NIPLE _________________________________________________________________________ 20

FUNCIONES DISPONIBLES ____________________________________________________________________________ 21 HERRAMIENTAS ADICIONALES ________________________________________________________________________ 22

METODOLOGÍA DE PROGRAMACIÓN CON NIPLE _______________________________________________ 23

CONCEPTOS BÁSICOS ____________________________________________________________________________ 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 Interpretación de los Bloques ______________________________________________________________________ 26 Selección de Bloques o Vínculos ___________________________________________________________________ 28 Mover un Bloque_________________________________________________________________________________ 28 Estirar un Bloque ________________________________________________________________________________ 29 Borrar Bloques __________________________________________________________________________________ 29 Editar Bloques ___________________________________________________________________________________ 29 Duplicar Bloques ________________________________________________________________________________ 30 Habilitar e Inhabilitar Bloques ____________________________________________________________________ 31

VÍNCULOS (FLECHAS) _______________________________________________________________________________ 32 Crear un Vínculo_________________________________________________________________________________ 33 Cambiar el estilo de un Vínculo____________________________________________________________________ 33 Borrar Vínculos __________________________________________________________________________________ 34

Page 4: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 4 de 242

INGRESO DE DATOS _________________________________________________________________________________ 34 Control de ingreso de nombres de registros _________________________________________________________ 34 Control de ingreso de valores Literales _____________________________________________________________ 34

MODOS DE TRABAJO “NIVEL DE USUARIO” ____________________________________________________________ 35

RUTINAS DE USUARIO ____________________________________________________________________________ 36

EXPORTAR RUTINA DE USUARIO______________________________________________________________________ 36 IMPORTAR UNA RUTINA DE USUARIO__________________________________________________________________ 38 EXPORTAR IMAGEN _________________________________________________________________________________ 39

PROGRAMANDO CON NIPLE _____________________________________________________________________ 40

CREAR UN NUEVO PROYECTO. ________________________________________________________________________ 40 DECLARACIÓN DE REGISTROS ________________________________________________________________________ 40 BORRAR UN REGISTRO ______________________________________________________________________________ 40 DECLARACIÓN DE BITS ______________________________________________________________________________ 40 BORRAR UN BIT DE USUARIO _________________________________________________________________________ 40 CAMBIAR EL NOMBRE A UN BIT DE USUARIO ___________________________________________________________ 40 INSERTAR BLOQUES_________________________________________________________________________________ 41

Descripción de las funciones ______________________________________________________________________ 43

MÓDULOS 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

Page 5: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 5 de 242

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 BÁSICAS __________________________________________________________________________________ 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

Conversión Analógica/Digital (A/D)________________________________________________________________ 57 Activar/Desact. A/D _____________________________________________________________________________ 57 Conversión A/D_________________________________________________________________________________ 58

EEPROM _______________________________________________________________________________________ 64 Leer EEPROM__________________________________________________________________________________ 64 Grabar EEPROM ________________________________________________________________________________ 65

Funciones Lógicas _______________________________________________________________________________ 65 Comparar Bit ___________________________________________________________________________________ 65 Comparar Registro (8 Bits) ________________________________________________________________________ 66 Comparar Registro (16 Bits) _______________________________________________________________________ 67

Matemáticas_____________________________________________________________________________________ 68 8 Bits _________________________________________________________________________________________ 68

Adición (8) __________________________________________________________________________________ 68 Sustracción (8)________________________________________________________________________________ 69 División (8) __________________________________________________________________________________ 69 Multiplicación (8) _____________________________________________________________________________ 70 Reg(8) a BCD ________________________________________________________________________________ 70

Cálculos a 16 Bits ________________________________________________________________________________ 71 Adición (16) _________________________________________________________________________________ 71 Sustracción (16) _______________________________________________________________________________ 71 Multiplicación (16) ____________________________________________________________________________ 72 Reg (16) a BCD_______________________________________________________________________________ 72

Page 6: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 6 de 242

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

Visualización____________________________________________________________________________________ 92 Display de 7 segmentos ___________________________________________________________________________ 92

Multiplexado _________________________________________________________________________________ 92 Multiplexado (4511) ___________________________________________________________________________ 96

Pantalla LCD __________________________________________________________________________________ 100 Configurar LCD _____________________________________________________________________________ 101 Utilizando más de una pantalla LCD _____________________________________________________________ 105 Generar un nuevo mensaje _____________________________________________________________________ 106 Visualizando valores variables en un mensaje ______________________________________________________ 110 Mostrar Mensaje _____________________________________________________________________________ 112 Optimización del código 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 Configuración de Fecha __________________________________________________________________________ 129 Configuración de Hora __________________________________________________________________________ 130 Configuración de Alarmas ________________________________________________________________________ 132 Comandos ____________________________________________________________________________________ 135 Leer PCF8583 _________________________________________________________________________________ 136

Registro Desplazamiento_________________________________________________________________________ 138 Ingresar valor y rotar ____________________________________________________________________________ 138

INTERRUPCIONES __________________________________________________________________________________ 140 Configurar Interrup. _____________________________________________________________________________ 140 Fin de la Interrupción ___________________________________________________________________________ 140

Page 7: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 7 de 242

RUTINAS DE USUARIO______________________________________________________________________________ 140

NIPLE PARA PIC 12F6XX _________________________________________________________________________ 141

CARACTERÍSTICAS TÉCNICAS DE LOS PIC 12F6XX______________________________________________________ 141 Conexión de los PIC 12F6xx _____________________________________________________________________ 142 El puerto del PIC 12F6xx ________________________________________________________________________ 142

IMPORTANTE: PROCEDIMIENTO PARA PR OGRAMACIÓN DE LOS PIC 12F6XX._____________________________ 143 MÓDULOS ESPECÍFICOS DE NIPLE PARA PIC 12F6XX____________________________________________________ 146

Crear un nuevo proyecto. ________________________________________________________________________ 146 Declaración de Registros ________________________________________________________________________ 148

Declaración de un Registro de Usuario ______________________________________________________________ 148 Declaración de Bits _____________________________________________________________________________ 149

Dec laración de un Bit de Usuario __________________________________________________________________ 150 Puerto _________________________________________________________________________________________ 150

Configurar Puerto A ____________________________________________________________________________ 150 El PIN A5 como Reset o Entrada Digital __________________________________________________________ 151 Los pines A6 y A7 como Oscilador externo o Entradas/Salidas Digitales _________________________________ 151 El módulo Comparador Analógico _______________________________________________________________ 152 Configuración de los canales A/D________________________________________________________________ 155

Comunicaciones ________________________________________________________________________________ 158 RS232 _______________________________________________________________________________________ 158

RS232 – Enviar ______________________________________________________________________________ 158 RS232 – Recibir _____________________________________________________________________________ 161

Configurar Interrupciones _______________________________________________________________________ 162

NIPLE PARA PIC 16F84 ___________________________________________________________________________ 163

CARACTERÍSTICAS TÉCNICAS DEL PIC 16F84 __________________________________________________________ 163 Conexión del PIC 16F84_________________________________________________________________________ 164 Los puertos del PIC 16F84 _______________________________________________________________________ 164

MÓDULOS ESPECÍFICOS DE NIPLE PARA PIC 16F84 _____________________________________________________ 165 Crear un nuevo proyecto. ________________________________________________________________________ 165 Declaración de Registros ________________________________________________________________________ 166 Declaración de un registro de usuario_____________________________________________________________ 167 Puertos ________________________________________________________________________________________ 168

Configurar Puerto A ____________________________________________________________________________ 168 Configurar Puerto B_____________________________________________________________________________ 169

Comunicaciones ________________________________________________________________________________ 170 RS232 _______________________________________________________________________________________ 170

RS232 – Enviar datos _________________________________________________________________________ 170 RS232 – Recibir datos_________________________________________________________________________ 173

Configurar Interrup. _____________________________________________________________________________ 174

NIPLE PARA PIC 16F6XX _________________________________________________________________________ 175

Page 8: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 8 de 242

CARACTERÍSTICAS TÉCNICAS DE LOS PIC 16F6XX______________________________________________________ 175 Conexión de los PIC 16F6xx _____________________________________________________________________ 176

LOS PUERTOS DEL PIC 16F6XX ______________________________________________________________________ 176 MÓDULOS ESPECÍFICOS DE NIPLE PARA PIC 16F6XX____________________________________________________ 177

Crear un nuevo proyecto. ________________________________________________________________________ 177 Declaración de Registros ________________________________________________________________________ 179

Declaración de un Registro de Usuario ______________________________________________________________ 180 Declaración de Bits _____________________________________________________________________________ 180

Declaración de un Bit de Usuario __________________________________________________________________ 181 Configurar el Puerto A __________________________________________________________________________ 182

El PIN A5 como Reset o Entrada Digital ____________________________________________________________ 182 Los pines A6 y A7 como Oscilador externo o Entradas/Salidas Digitales ___________________________________ 183 Los Comparadores analógicos _____________________________________________________________________ 184

Configurar el Puerto B __________________________________________________________________________ 189 Comparadores Analógicos _______________________________________________________________________ 190 El Módulo CCP_________________________________________________________________________________ 193

Modo Captura _________________________________________________________________________________ 194 Modo Comparación _____________________________________________________________________________ 198 Modo PWM ___________________________________________________________________________________ 203

Comunicaciones ________________________________________________________________________________ 207 RS232 _______________________________________________________________________________________ 207

RS232 – Enviar ______________________________________________________________________________ 207 RS232 – Recibir _____________________________________________________________________________ 208

Configurar Interrup. _____________________________________________________________________________ 209

NIPLE PARA PIC 16F87X__________________________________________________________________________ 210

CARACTERÍSTICAS TÉCNICAS DE LOS PIC 16F87X ______________________________________________________ 210 Conexión de los PIC 16F87x _____________________________________________________________________ 211 Los puertos del PIC 16F87x ______________________________________________________________________ 212

MÓDULOS ESPECÍFICOS DE NIPLE PARA PIC 16F87X____________________________________________________ 213 Crear un nuevo proyecto. ________________________________________________________________________ 213 Declaración de Registros ________________________________________________________________________ 215

Declaración de un Registro de Usuario ______________________________________________________________ 216 Declaración de Bits _____________________________________________________________________________ 216

Declaración de un Bit de Usuario __________________________________________________________________ 217 Puertos ________________________________________________________________________________________ 218

Configurar Puerto A ____________________________________________________________________________ 218 Configuración de los canales A/D __________________________________________________________________ 219 Configurar Puerto B_____________________________________________________________________________ 221 Configurar Puerto C_____________________________________________________________________________ 223 Configurar Puerto D ____________________________________________________________________________ 225 Configurar Puerto E_____________________________________________________________________________ 226

Módulos CCP __________________________________________________________________________________ 226

Page 9: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 9 de 242

Modo Captura _________________________________________________________________________________ 226 Modo Comparación _____________________________________________________________________________ 231 Modo PWM ___________________________________________________________________________________ 236

Comunicaciones ________________________________________________________________________________ 240 RS232 _______________________________________________________________________________________ 240

RS232 – Enviar ______________________________________________________________________________ 240 RS232 – Recibir _____________________________________________________________________________ 240

CONFIGURAR INTERRUP .____________________________________________________________________________ 242

Page 10: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 10 de 242

Introducción a los microcontroladores

¿Que es un microcontrolador? Los microcontroladores hicieron su aparición a principio de los ’80 y se trata de un circuito integrado pro-

gramable 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 volátil, es decir, que no se pierden los

datos cuando el circuito es desconectado)

• Puertos de Entrada/Salida (Pines de E/S)

• e incluso muchos modelos de

microcontroladores incorporan distintos

módulos “periféricos”, como pueden ser;

conversores analógico/digital (A/D), módulos

PWM (control por ancho de pulso), módulos de

comunicaciones seriales o en paralelo, y más.

Todo esto lo podemos encontrar dentro del mismo circuito integrado.

Cada vez existen más productos que incorporan microcontroladores con el fin de aumentar sustancial-

mente sus prestaciones, reducir su tamaño y costo, mejorar su confiabilidad y disminuir el consumo de

energía.

Los microcontroladores “PIC”

Los microcontroladores denominados “PIC” corresponden exclusivamente a la marca “Microchip”. PIC

significa "Peripheral Interface Controller" y fue desarrollado por Microchip a principio de los 80.

Existe una gran cantidad de modelos de microcontroladores cuyas características y prestaciones varían

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 características y prestaciones son bastante similares.

Cuando compramos un microcontrolador, la memoria del mismo se encuentra “vacía” y para que funcio-

ne es necesario que sea “programado”, es decir que, el desarrollador debe escribir un programa que con-

tenga todos los procesos que el microcontrolador debe ejecutar.

Este programa se escribe en un lenguaje llamado “Assembler” (ensamblador) cuya principal característi -

ca es su alta complejidad ya que se trata de un lenguaje “de bajo nivel”, es decir, que se encuentra “más

cercano” al lenguaje de la máquina que del lenguaje humano.

Por esto, sólo los técnicos altamente capacitados están en condiciones de realizar desarrollos electróni-

cos que incluyan microcontroladores. Incluso a estos especialistas les implica un gran esfuerzo intelectual y

mucho tiempo de desarrollo.

Page 11: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 11 de 242

Estructura de un microcontrolador

Básicamente, un microcontrolador esta compuesto por los siguientes componentes:

• Procesador o CPU (del inglés Central Prossesing Unit o Unidad Central de Proceso).

• Memoria para el programa tipo ROM.

• Memoria RAM para contener los datos.

• Líneas de E/S para comunicarse con el exterior.

• Diversos módulos para el control de periféricos (temporizadores, Puertas Serie y Paralelo,

CAD: Conversores Analógico/Digital, CDA: Conversores Digital/Analógico, etc.).

El procesador o CPU Es el elemento más importante del microcontrolador y determina sus principales características, tanto a

nivel hardware como software. La CPU (Central Processing Unit o Unidad Central de Proceso) se encarga la

decodificación y ejecución del programa.

Actualmente, existen 3 tipos de arquitectura de procesadores:

• CISC (Computadores de Juego de Instrucciones Complejo): Disponen de más de 80 ins -

trucciones en su repertorio, algunas de las cuales son muy sofisticadas y potentes, requi-

riendo muchos ciclos para su ejecución. Una ventaja de los procesadores CISC es que

ofrecen instrucciones complejas que actúan como macros.

• RISC (Computadores de Juego de Instrucciones Reducido): En estos procesadores el re-

pertorio 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 Específico): En los microcontroladores des -

tinados a aplicaciones muy concretas, el juego de instrucciones, además de ser reducido,

es "específico", o sea, las instrucciones se adaptan a las necesidades de la aplicación pre-

vista.

Memoria ROM

La memoria ROM es una memoria no volátil, es decir, que no se pierden los datos al desconectar el

equipo y se destina a contener el programa d e instrucciones que gobierna la aplicación. Los microcontrola-

dores disponen de capacidades de ROM comprendidas entre 512 bytes y 8 k bytes.

Existen distintos tipos de memorias ROM, la cual determinará la aplicación del microcontrolador.

• ROM con máscara: Es una memoria no volátil de sólo lectura cuyo contenido se graba du-

rante la fabricación del chip. El elevado costo del diseño de la máscara sólo hace aconseja-

ble el empleo de los microcontroladores con este tipo de memoria cuando se precisan can-

tidades superiores a varios miles de unidades.

• OTP: El microcontrolador contiene una memoria no volátil de sólo lectura "programable una

sola vez" por el usuario. OTP (One Time Programmable). Es el usuario quien puede escribir

Page 12: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 12 de 242

el programa en el chip mediante un senci llo grabador controlado por un programa desde

una PC. La versión OTP es recomendable cuando es muy corto el ciclo de diseño del pro-

ducto, o bien, en la construcción de prototipos y series muy pequeñas. Tanto en este tipo de

memoria como en la EPROM, se suele usar la encriptación mediante fusibles para proteger

el código contenido.

• EPROM: Los microcontroladores que disponen de memoria EPROM (Erasable Program-

mable Read OnIy Memory) pueden borrarse y grabarse muchas veces. La grabación se rea-

liza, como en el caso de los OTP, con un grabador gobernado desde un PC. Si, posterior-

mente, 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 cápsulas

son de material cerámico y son más caros que los microcontroladores con memoria OTP

que están hechos con material plástico.

• EEPROM: Se trata de memorias de sólo lectura, las cuales se puede escribir y borrar eléc-

tricamente. EEPROM (Electrical Erasable Programmable Read OnIy Memory). Tanto la pro-

gramación como el borrado, se realizan eléctricamente desde el propio grabador y bajo el

control programado de un PC. Es muy cómoda y rápida la operación de grabado y la de bo-

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

to" que confieren una gran flexibilidad y rapidez a la hora de realizar modificaciones en el

programa de trabajo. El número de veces que puede grabarse y borrarse una memoria EE-

PROM es finito, por lo que no es recomendable una reprogramación continua. Son muy idó-

neos para la enseñanza y la Ingeniería de diseño. Se va extendiendo en los fabricantes la

tendencia de incluir una pequeña zona de memoria EEPROM en los circuitos programables

para guardar y modificar cómodamente una serie de parámetros que adecuan el dispositivo

a las condiciones del entorno. Este tipo de memoria es relativamente lenta.

• FLASH: Se trata de una memoria no volátil, de bajo consumo, que se puede escribir y bo-

rrar. Funciona como una ROM y una RAM pero consume menos y es más pequeña. A dife-

rencia de la ROM, la memoria FLASH es programable en el circuito. Es más rápida y de

mayor densidad que la EEPROM. La alternativa FLASH está recomendada frente a la EE-

PROM cuando se precisa gran cantidad de memoria de programa no volátil. Es más veloz y

tolera más ciclos de escritura y bor rado.

Memoria RAM La memoria RAM es una memoria volátil, es decir, que se pierden los datos al desconectar el equipo, y

se destina a guardar las variables y los datos. Los microcontroladores disponen de capacidades de RAM

comprendidas entre 20 y 512 bytes .

Page 13: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 13 de 242

Registros y Bits Un registro es una posición de memoria en la cual se puede almacenar un dato. Es decir que la memoria

esta dividida en pequeñas “partes” llamadas “Registros”.

Dentro de la memoria, cada registro se identifica mediante un número, el cual se denomina “Dirección de

memoria” y generalmente está expresado en formato Hexadecimal. El primer registro de una memoria co-

rresponde a la dirección 00H.

Dado que identificar a cada registro mediante un número hexadecimal puede resultar muy complejo a la

hora de diseñar el programa, existe la posibilidad de asignar un “nombre” a una dirección de registro. En

general, este nombre está directamente relacionado con la función que cada registro cumple dentro del sis-

tema.

Los registros no solo son utilizados por el programador (usuario) para almacenar los datos que la aplica-

ción debe procesar, sino que, además, sirven para controlar todo el funcionamiento del microcontrolador en

su conjunto. Esta función, la cumple un conjunto de registros que ya vienen “Predefinidos” desde la fábrica.

Es decir, que el fabricante asigna las funciones de configuración y control del microcontrolador en un grupo

de registros y el usuario no puede modificar la función 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 información que un sistema digital puede procesar y solo puede contener

los valores lógicos 0 y 1.

La palabra BIT proviene de la contracción de las palabras “Binary Digit”.

Los sistemas digitales representan la información en forma de bits porque sus circuitos sólo pueden te-

ner 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 posición que ocupa dentro del registro, siendo el primer Bit el número 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 identificación.

En un registro se puede almacenar una combinación 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.

Page 14: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 14 de 242

Esta característica de procesar números (“Dígitos”) es lo que da el nombre a la “Electrónica Digital”. La

electrónica digital procesa números formados por combinaciones de ceros y unos. Cualquier señal analógi-

ca debe ser “digitalizada”, es decir, convertida a números, 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 número entre

0 y 255, expresado en sistema Binario, esto es, en base 2. Para interpretar dicho número debemos realizar

el cálculo de conversión de base para poder expresarlo en sistema decimal.

El siguiente ejemplo muestra el desarrollo de un cálculo de conversión de base de sistema binario (base

2) a sistema decimal (base 10):

Se llama “Peso Binario” al valor que representa un Bit según la posición que ocupa dentro del registro. El

Bit que está ubicado más 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 más 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 cálculo de conversión de binario a decimal, es, directamente sumar los va-

lores de los pesos binarios de los bits cuyo valor sea 1.

Page 15: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 15 de 242

El sistema hexadecimal es un sistema en base 16 y consta de 16 dígitos diferentes que son: del 0 al 9 y

luego de la letra “A” a la “F”, es decir, 10 dígitos numéricos y seis caracteres alfabéticos.

El sistema hexadecimal se usa como forma simplificada de representación de números binarios y debido

a que 16 es una potencia de 2 (2^4=16), resulta muy sencilla la conversión de los números del sistema bina-

rio al hexadecimal y viceversa.

Mediante el sistema hexadecimal podemos representar un valor numérico de 8 bits utilizando sólo 2 dígi-

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

pondiente a los 4 bits más significativos se lo denomina “Nibble Alto”.

El sistema hexadecimal es utilizado para identificar las direcciones de registros de las memorias en sis-

temas digitales porque permite representar el valor de un Nibble con sólo 1 digito, ya que:

Esto permite representar números grandes utilizando unos pocos dígitos.

Por ejemplo:

En la programación de microcontroladores , es habitual utilizar los 3 sistemas de numeración (Binario,

Decimal y Hexadecimal) dependiendo del proceso que necesitemos realizar. Por eso es fundamental tener

claros estos conceptos.

Page 16: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 16 de 242

Líneas de Entrada/Salida (E/S), (Puertos) Los microcontroladores cue ntan con una serie de pines destinados a entrada y salida de datos o señales

digitales. A estos pines se les denomina “Puerto”.

Como mencionamos anteriormente, todo el funcionamiento del microcontrolador está controlado a través

de los registros. Los puertos no son la excepción, también están controlados por los registros. Por esto, un

puerto no puede estar formado por más de 8 pines; 1 Pin por cada Bit de un registro. Un puerto si puede es-

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

Módulos Temporizadores Internos (TMRs) Un temporizador interno (TMR) es un módulo de hardware incluido en el mismo microcontrolador el cual

está especialmente diseñado para incrementar au tomáticamente el valor de un registro asociado al TMR

cada vez que el módulo TMR recibe un pulso. A este pulso se lo llama “señal de reloj”.

El módulo TMR siempre incrementa el valor del registro asociado, nunca decrementa dicho valor.

Algunos microcontroladores pueden incluir más de un módulo TMR y la señal de reloj de cada uno de és-

tos puede ser de origen interno o externo.

Si el origen de la señal de reloj está configurado como externo, el módulo temporizador puede ser utili-

zado como un contador de eventos externos, incrementando el TMR con cada pulso recibido mediante el

pin correspondiente.

Si el origen de la señal 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

ejecución de una instrucción, lo cual se puede calcular con la siguiente fórmula:

( 1 / ( Frec. Osc. / 4) )

Donde “Frec. Osc.” es la frecuencia del oscilador utilizado.

Dado que la velocidad de ejecución del microcontrolador corresponde a ¼ de la velocidad del cristal utili-

zado, cada ciclo de programa se ejecuta en un tiempo determinado según 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 fórmula =

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

dremos calcular el tiempo transcurrido.

Page 17: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 17 de 242

El incremento del TMR se realiza de manera automática y de forma paralela a la ejecución del resto del

programa. Esto significa que el programa no debe “controlar” el incremento del TMR, lo cual sí debe reali -

zarse 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 temporización.

Entonces el TMR puede ser utilizado como temporizador mientras el microcontrolador ejecuta otros pro-

cesos.

Por ejemplo: si diseñamos un programa que encienda y apague un led cada 1 segundo, el microcontro-

lador 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 además de temporizar, por ejemplo, mostrar

valores en dígitos 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 re-

sultado tendremos que los displays se apagan mientras el microcontrolador se encuentra temporizando.

En este caso, se utiliza un TMR para realizar la temporización mientras el microcontrolador se ocupa de

mostrar los datos en los displays.

En general los microcontroladores cuentan con una interrupción por desbordamiento del TRM, es decir

que, el microcontrolador se interrumpe cuando el TMR0 pasa de 255 (B’11111111’) a 0 (B’00000000’) en los

temporizadores de 8 bits y cuando pasa de 65535 (B’11111111_111111’) a 0 (B’00000000_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 más ciclos. De es-

ta manera, estamos multiplicando la cantidad de ciclos que deben ejecutarse para realizar un incremento

del TMR. Al prescalador también 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.

Page 18: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 18 de 242

Utilizando un microcontrolador Como mencionamos anteriormente, el microcontrolador tiene una memoria de programa, donde graba-

mos las instrucciones necesarias para que el micro realice el trabajo que necesitamos. Cuando compramos

un microcontrolador, la memoria de programa viene vacía. Para que un microcontrolador funcione es nece-

sario “programarlo”.

Los microcontroladores se programan en un lenguaje de programación llamado Ensamblador (en inglés

Assembler) cuya principal característica es su altísima complejidad.

Los lenguajes de programación se clasifican según el “Nivel” de programación en:

• Lenguaje de “Alto Nivel”: permite que los algoritmos se expresen en un nivel y estilo de es -

critura fácilmente legible y comprensible por el hombre. En la actualidad se trata de lengua-

jes de tipo visual.

• Lenguaje de “Bajo Nivel”: el usuario se acerca un poco más al lenguaje de maquina. Permi-

ten un acceso más am plio al control físico de la maquina (hardware).

• Lenguaje Ensamblador: Podríamos considerarlo el lenguaje de más bajo nivel. El usuario

escribe código en el mismo “idioma” del procesador. Se tiene control total del sistema. Es

necesario un conocimiento de la arquitectura mecánica del procesador para realizar una

programación efectiva. El lenguaje de programación 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 más al lenguaje humano y que los len-

guajes de bajo Nivel se asemejan más al lenguaje de máquina y en el lenguaje ensamblador el usuario de-

be programar en el propio “idioma del procesador”.

El microcontrolador sólo entiende de números, es decir que, el código Assembler (texto) no puede ser

procesado directamente por el microcontrolador. Para poder grabar el programa en el micro, primero debe-

mos convertir el texto del código Assembler a números, en general, en formato hexadecimal. A este proceso

se le llama “Compilación”.

Page 19: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 19 de 242

Una vez desarrollado el código Assembler , el mismo debe ser “compilado”. Esto se realiza con un “soft-

ware compilador” el cual se puede obtener de manera gratuita desde la página Web del fabricante del mi-

crocontrolador.

El archivo compilado tiene una extensión .hex.

Por último, después de compilado, el programa está listo para ser grabado al microcontrolador. Esto rea-

liza mediante una “placa programadora”. A ésta placa programadora, comúnmente se la llama “programa-

dor”. 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 continuación se presenta un resumen del proceso de desarrollo del código y grabación de un micro-

controlador:

1) Escribir el código Assembler . Se genera un archivo con extensión ASM.

2) Compilar el código Assembl er. Se genera un archivo con extensión HEX.

3) Grabar (transferir) el programa desde la PC al microcontrolador mediante un programa-

dor.

De estos 3 pasos, el primero insume el 98 % de tiempo y esfuerzo y es aquí donde Niple le ofrece sus

ventajas.

Niple: Programación Visual de microcontroladores PIC

Como mencionamos en los párrafos anteriores, la programación de los microcontroladores resulta una

tarea muy compleja dado que el usuario debe conocer la arquitectura del procesador y además debe domi-

nar el lenguaje de programación “Ensamblador”. Si bien existen distintas versiones del lenguaje C o Basic

adaptadas a la programación de

microcontroladores, todavía la programación

resulta muy compleja por el alto grado de

abstracción que implica.

Niple es un entorno de desarrollo visual

para programación de microcontroladores

PIC. Con Niple, el usuario sólo diseña un

diagrama de flujo de manera totalmente

visual y en alto nivel de programación, en

lenguaje humano, y el software genera el

código Assembler de manera auto mática.

Además, el software controla y supervisa

todo el proceso de diseño, advirtiendo al

usuario sobre posibles errores en la lógica del programa que se está diseñando. Esta ventaja no la tiene

ningún otro lenguaje de progr amación.

Page 20: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 20 de 242

De ésta manera Niple ofrece la posibilidad de realizar desarrollos con microcontroladores con un mínimo

de esfuerzo.

El principal objetivo de Niple es facilitar al máximo la programación de los microcontroladores. Para esto ,

el software ofrece un entorno totalmente visual, donde todo el sistema se adapta a las características del

modelo de microcontrolador seleccionado; es decir que; carga el mapa de memoria con sus respectivos

nombres de registros y bits, asigna las funciones correspondientes a cada Registro y Bit dentro del sistema,

ajusta el tamaño de la memoria EEPROM, activa los módulos correspondientes, etc. Es decir que, Ud. ten-

drá disponible sólo las características que corresponden al modelo de micro en uso.

El concepto de la programación es que el usuario se concentre en “qué es lo que quiere hacer”, y Niple

“sabe cómo hacerlo”. Es decir que el usuario sólo se dedica a diseñar la estructura lógica del proceso que

desea realizar y el software se encarga de resolver todo el desarrollo del código Assembler , controlando

hasta el más mínimo detalle.

Introducción a Niple

Niple es un “Entorno Visual de Desarrollo para programación de Microcontroladores PIC”.

Con Niple podrá programar los PIC a través del diseño de un diagrama de flujo de manera gráfica y de

alto nivel de programación, sin necesidad de escribir código Assembler, o escribiendo la menor cantidad de

código, convirtiéndose en la forma más rápida, sencilla y productiva de desarrollar proyectos con microcon-

troladores PIC.

Diseñe un diagrama de flujo de manera gráfica y en “lenguaje humano” mientras Niple realiza el trabajo

pesado por Ud., controlando errores lógicos o de configuración, realizando cálculos, coordinando la interac-

ción entre las distintas partes del proyecto y generando de manera automática el código Assembler.

Estas características, 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 produc-

tividad.

Entre las principales prestaciones que Niple ofrece podemos destacar:

ü Entono Visual de Alto Nivel de programación:

• Niple ofrece una metodología de programación totalmente visual y en lenguaje humano.

• Bloques estandarizados, lo cual facilita la interpretación del proyecto.

• Ud. se concentra en “Que Hacer“ y Niple se encarga de “Como Hacerlo”.

• Control automático de errores lógicos.

• Supervisa el ingreso de datos.

ü Control automático de registros y bits:

• Controla la existencia de todos los registros y bits necesarios para el correcto funcionamien-

to del proyecto en el momento de generar el código 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.

Page 21: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 21 de 242

ü Corrección automática de errores lógicos

• Controla la correcta configuración de los puertos.

• Controla la configuración y activación de las interrupciones.

• Supervisa la creación de vínculos entre bloques.

ü Generación del Código Assembler:

• Control automático de la sintaxis del código generado.

• Control automático del cambio de página.

• Generación automática 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:

ü Selección del cristal utilizado (4, 10 o 20 Mhz)

ü Asignación de valores a registros y bits

ü Configuración y manejo de interrupciones

ü Manejo de rutinas de usuario

ü Configuración, Lectura y Escritura de puertos

ü Lectura / Escritura de EEPROM interna del PIC

ü Funciones de comparación de registros y bits (condiciones =, >, <, >=, <=, <>)

ü Manejo automático de tablas

ü Temporizadores por bucle (de tiempo fijo o variable)

Page 22: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 22 de 242

ü Visualización de datos en dígitos 7 segmentos (Ánodo común y Cátodo común)

ü Ingreso de datos por teclado matricial (3x3 y 3x4)

ü Visualización de datos en pantallas LCD (16x2, 20x2 y 20x4)

ü Manejo de memorias EEPROM 24Cxxx por comunicación I2C

ü Manejo de memorias RAM PCF8570 por comunicación I2C.

ü Manejo de reloj/calendario de tiempo real PCF8583, con control de alarmas por fecha.

ü Configuración y manejo de temporizadores internos (TMR0, TMR1 y TMR2)

ü Comunicaciones RS232 por código y por USART

ü Comunicaciones RS485

ü Comparadores analógicos

ü Conversión A/D. La cantidad de canales depende del modelo de micro

ü Módulos CCP (Compara, Captura y PWM)

ü Cálculos matemáticos: (+, - , / , *, en 8 o 16 bits), conversión a BCD

ü Escalado de valores de un rango a otro (a 8 y 16 bits)

ü Manejo de registros de desplazamiento

Herramientas adicionales ü Interfase de comunicación RS232. Comunicaciones a 8 o 16 bits con visualización en distin-

tos formatos (decimal, hexadecimal, binario, texto, o modo gráfico).

Page 23: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 23 de 242

Metodología de programación con Niple

La metodología de programación en Niple consiste en el diseño de un diagrama de flujo de manera to-

talmente visual y de alto nivel de programación.

Esto significa que Ud. no escribe código en Assembler adaptándose al “lenguaje” del micro, sino que, por

el contrario, Ud. realiza el diseño del programa de manera gráfica, seleccionando opciones a través de pan-

tallas claras e intuitivas, y donde el sistema se adapta al “lenguaje humano” y luego “traduce” a código 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 están presentando información y datos concretos acerca de cada parte

del proceso, lo cual facilita aún más la interpretación del programa.

Además, el diagrama de flujo le permite tener una “visión general” del proyecto.

El proceso de diseño del diagrama de flujo consiste en insertar bloques y vincularlos por medio de fl e-

chas.

Durante éste proceso, Niple controla y advierte de posibles errores, tanto de la lógica del programa como

en la configuración del sistema (configuración de puertos, interrupciones, etc.).

En el margen derecho de la pantalla se encuentra el “Árbol de Herramientas”. Este consiste en una es-

tructura de árbol donde se encuentran todas las funciones que pueden ser insertadas como bloques en el

diagrama de flujo y que generan un código Assembler.

Los bloques se encuentran agrupados en distintos niveles organizados por categoría para facilitar la

búsqueda de un bloque en particular.

En el primer nivel se organizan por tipo de función donde se encuentran los siguientes ítems:

Instrucciones: Esta categoría incluye todas instrucciones en Assembler . A su vez se organizan

por tipo de instrucción:

• Instrucciones orientadas a Registros

• Instrucciones orientadas a Bits

• Instrucciones orientadas a Literales

• Instrucciones orientadas a Control

• Todas las instrucciones ordenadas alfabéticamente

El objetivo de Niple es utilizar lo menos posible los bloques de instrucciones ya que éstos blo-

ques equivalen a programar en código Assembler .

Rutinas Básicas : Las rutinas básicas son módulos prediseñados y se encargan de resolver un

proceso en particular (una configuración, una comparación, un cálculo, etc.). Ud. puede formar es -

tructuras lógicas muy complejas de manera rápida y sencilla a partir de la combinación de rutinas

básicas.

Utilice las rutinas básicas para programar dentro de cualquier “Entorno”.

Las rutinas básicas están organizadas por tipo de rutina:

• Asignación de valores

Page 24: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 24 de 242

• Manejo de puertos

• Manejo de EEPORM

• Funciones Lógicas

• Funciones matemáticas

• Comunicaciones

• Etc.

Interrupciones: En ésta categoría se encuentran todas las funciones de configuración y manejo

de las interrupciones. Niple presenta las interrupciones disponibles de acuerdo al modelo de PIC

que se está utilizando.

Rutinas de usuario: Ud. puede diseñar sus propias funciones o procedimientos para solucionar

un problema en particular (siempre combinando distintas rutinas básicas) y luego llamarlos desde

distintas partes del programa (subrrutinas). Esto le permite por un lado, la creación de funciones o

procedimientos personalizados y por otro lado, la optimización del código Assembler generado, ya

que las rutinas de usuario sólo se escriben una vez y luego se insertan “llamadas” a las mismas. Es -

ta categoría incluye las funciones de declaración e inserción de llamadas a rutinas de usuario.

Conceptos básicos

La interfaz de Niple Elementos de la pantalla.

Page 25: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 25 de 242

Entornos En general, un programa para PIC es organizado en distintas “secciones” con el fin de facilitar la com-

presión y al mismo tiempo optimizar el código por medio de la reutilización de código.

El objetivo de cada una de éstas “secci ones” es resolver un problema en particular y reciben distintos

nombres según la función 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 ex-

cepción 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 automática y es el encar-

gado de “coordinar” la ejecución de todo el programa (incluyendo el resto de los entornos). En

un proyecto sólo puede haber sólo un entorno llamado “Programa Principal” y no puede ser bo-

rrado.

- 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 límite máximo en

la cantidad de entornos de subrutina que puede incluir en un proyecto. Las subrutinas pueden

devolver o no un resultado (Funciones y Procedimientos respectivamente). Para ejecutar una

subrutina debe ser “llamada” o invocada.

- Entornos de Interrupciones: Son funciones o procedimientos que se ejecutan al producirse un

llamado a interrupción. Cada interrupción tiene un nombre predeterminado y el usuario no pue-

de cambiar éste nombre. La cantidad máxima de “Interrupción” corresponde al número de inte-

rrupciones de incluye cada modelo de microcontrolador. En tiempo de ejecución, se accede al

entorno de una interrupción de manera automática, al generarse un llamado a interrupción. O

sea que no se puede “predecir” el momento exacto en que se producirá una interrupción. Esto

afecta al sistema de chequeo de errores.

Crear un nuevo Entorno Un entorno se genera de manera automática al insertar interrupciones o rutinas de usuario en el proyec-

to. Cuando inserta una interrupción en el proyecto, Niple coloca de manera automática el bloque inicio de

entorno con el texto correspondiente y un bloque de inhabilitación del GIE (Habilitador general de Interrup-

ciones) para que ninguna otra interrupción suspenda la ejecución de la actual interrupción.

Si usted está utilizando otra interrupción de mayor prioridad, simplemente borre o deshabilite éste blo-

que. 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_” (abreviación de la palabra usuario). Inserta de manera automática

el bloque de “Inicio de Entorno”.

Page 26: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 26 de 242

Seleccionar el Entorno actual de trabajo Para conmutar entre los distintos entornos, sólo 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 símbolo que representa una parte del proceso.

Cada bloque presenta información según su forma, su color y el texto que contiene, e identifican una

función en particular.

Interpretación de los Bloques Cada forma de bloque está directamente asociada a un tipo de función, esto le facilita la interpretación

del programa con sólo echarle un vistazo general:

Tipo de función según la forma del bloque:

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

entorno.

Instrucción. Cualquiera de las 35 instrucciones

en código assember.

Configuración de un Puerto.

Ingreso de datos. Leer el valor de un puerto

(en paralelo), modo Captura, modo Comparación.

Salida de datos. Escribir un valor en un puerto

(en paralelo, no serial)

Asignación. Este bloque representa la

asignación de un valor a un registro o un bit.

Leer un dato de la memoria EEPROM.

Almacenar un dato en la memoria EEPROM.

Page 27: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 27 de 242

Condición. Evalúa una condición y deriva la

ejecucion del programa en función del resultado

de la evaluación.

Configuración. Este bloque corresponde a

configuración de Interrupción y módulos

periféricos.

Activar – Desactivar Interrupciones.

Cálculo matemático.

Conversión Decimal a BCD ó BCD a

Decimal.

Consultar Tabla.

Comunicaciones Seriales RS232. En vío y

recepción de un dato por RS232.

Comunicaciones Seriales RS232. Envío y

recepción de un conjunto de datos por RS232

mediante protocolo de usuario diseñado en Niple.

Temporización por bucle. Calcula y genera los

bucles necesarios para esperar un tiempo

determinado.

Visualizar valores en display de 7 segmentos

por el método del multiplexado.

Registro de desplazamiento. Ingresar un valor

y rotar.

Llamada a subrutina (call).

Page 28: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 28 de 242

Selección de Bloques o Vínculos 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 vínculos se presenta 1 nodo en la mitad de la flecha.

Puede seleccionar uno o más bloques o vínculos de varias maneras.

• Haciendo un clic sobre el bloque o sobre el vínculo.

• Manteniendo presionada la tecla “ALT” o la tecla “CRTL” puede ir incorporando más bloques o

vínculos a la selección actual.

• Puede seleccionar varios bloques y vínculos de la siguiente manera:

- Marque un punto en el área de trabajo (no sobre un bloque)

- Presione el botón izquierdo del mouse y arrastre sin soltar el botón, se mostrará un rectán-

gulo en línea de trazos.

- Al soltar el botón del mouse, se seleccionarán todos los bloques y vínculos que son inclui-

dos en el área seleccionada.

Mover un Bloque Seleccione el bloque que desea desplazar y sin soltar el botón izquierdo del mouse y arrastre hasta ubi-

car el bloque en la nueva posición. Puede mover varios bloques simultáneamente.

Note que todos los bloques que dependen del bloque seleccionado se mueven en conjunto de manera

rígida. Esto se debe a que el modo “Arrastrar bloques” se encuentra activado. Si conmuta a modo “Arrastrar

bloques” desactivado sólo se desplaza el bloque seleccionado.

Para conmutar entre el modo “Arrastrar bloques” Activado y Desactivado ingrese al menú “Opcio-

nes/Diagramas de Flujo/Activar Arrastre”.

a) Posición original.

b) Modo “Arrastrar bloques” Activado.

c) Modo “Arrastrar bloques” Desactivado

Utilice el comando “Edición/Deshacer” para restablecer la posición anterior del bloque.

Page 29: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 29 de 242

Estirar un Bloque Al seleccionar un bloque se muestran 9 nodos (8 alrededor y 1 en el centro del símbolo seleccionado).

Para modificar el tamaño del bloque, haga un clic en uno de los 8 nodos periféricos y, sin soltar el botón iz-

quierdo del mouse, arrastre hasta alcanzar el tamaño deseado.

a) Tamaño del bloque original

b) Bloque estirado

Utilice el comando “Edición/Deshacer” para restablecer el tamaño 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 botón derecho del mouse. Se desplegara un

“menú contextual” y presione la opción “Borrar Símbolo” (o la opción “Borrar” si ha seleccionado varios blo-

ques o vínculos).

Utilice el comando “Edición/Deshacer” para recuperar los bloques borrados.

Editar Bloques Muchas veces es necesario cambiar el valor de algún parámetro u opción a un bloque ya insertado de-

ntro del diagrama de flujo. Para esto tiene 2 opciones:

1. Puede borrar el bloque e insertarlo nuevamente seleccionado los parámetros deseados. Si

elige ésta opción deberá realizar los vínculos de manera manual.

2. Puede editar el bloque y asignarle nuevos valores a los parámetros solicitados. Para esto no

necesita borrar el bloque ni realizar los vínculos nuevamente.

Para editar un bloque, selecciónelo y luego haga un clic con el botón derecho del mouse para que se

presente el menú contextual, y elija la opción “Editar”.

Page 30: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 30 de 242

Para que el men ú contextual presente la opción “Editar”, sólo debe estar seleccionado el bloque a ser

editado. Si selecciona más de 1 elemento, ya sean bloques o vínculos, el menú no presentará la opción

“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 parámetros seleccionados.

Proceda a cambiar los valores o las opciones y presione el botón “Ingresar”.

Con respecto al chequeo de errores, es importante tener en cuenta que rige el mismo criterio que para la

inserción de bloques. O sea que, si el bloque a editar está vinculado a otro bloque, se realizará el chequeo

de errores “en línea”. 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 opción “Duplicar” un Bloque en combinación con la “Edición” de bloques puede ayu-

darle a ahorrar tiempo de diseño, ya que es común realizar operaciones similares en distintas partes de pro-

yecto, donde sólo cambian algunos parámetros.

Ud. puede realizar una copia de la “estructura lógica” del programa y luego editar los bloques necesarios.

Esto le resultara más cómodo que insertar todos los bloques nuevamente.

Para duplicar un bloque, selecciónelo y

luego haga un clic con el botón derecho del

mouse para que se presente el menú

contextual, y elija la opción “Duplicar”.

Además, puede duplicar uno o más

bloques a la vez.

Page 31: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 31 de 242

Habilitar e Inhabilitar Bloques Durante la fase de diseño del proyecto, es habitual que durante las pruebas, Ud. necesite anular una par-

te del proceso par que no sea ejecutada.

Por medio de las opciones “Habilitar Bloque“ e “Inhabilitar Bloque” puede anular la ejecución uno o más

bloques sin necesidad de borrarlos o de alterar la lógica del programa.

Para inhabilitar un bloque, selecciónelo y luego haga un clic con el botón derecho del mouse para que se

presente el menú contextual, y elija la opción “Inhabilitar”.

Un bloque deshabilitado no es considerado en el momento del chequeo de errores “en línea” y tampoco

genera el código Assembler .

No puede inhabilitar bloque correspondiente a una “Decisión” (símbolo “Rombo”) dado que estos bloques

tienen 2 salidas.

Para Habilitar un bloque, selecciónelo y luego haga un clic con el botón derecho del mouse para que se

presente el menú contextual, y elija la opción “Habilitar”.

Page 32: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 32 de 242

Vínculos (Flechas) Un vínculo está representado por una Flecha que une a 2 o más bloques y determina el flujo del proceso.

Los vínculos determinan la secuencia y el orden de ejecución del programa.

Esto significa en que es muy importante tener en cuenta el sentido en que se genera el vínculo (bloques

de origen y de destino).

El bloque desde donde parte el vínculo de denomina “Bloque de Origen” y el bloque al cual llega “Bloque

de Destino” y puede identificarlos visualmente porque el vínculo presenta una “Punta de Flecha” en extremo

correspondiente al bloque de destino.

Le secuencia de ejecución del programa es; primero se ejecuta el “Bloque de Origen” y a continuación el

“Bloque de Destino”.

Existe un criterio a tener en cuenta a la hora de realizar vínculos entre bloques y Niple lo supervisa de

manera automática:

• Cada Bloque debe tener solo un Vínculo de salida. A excepción de los bloques de Decisión

(Rombo) que necesariamente deben tener 2 salida (Si la condición se cumple y si la condición

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 código Assembler, Niple supervisa que todos los bloques se encuen-

tren correctamente vinculados. En el caso de existir un error de vínculos, Niple lo informa y suspende la co-

dificación del Assembler.

Page 33: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 33 de 242

Crear un Vínculo Para crea un vínculo 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 botón mouse, arrastre hasta el “Bloque de Destino ” y suelte el botón del mouse.

Un vínculo puede adoptar distintas formas de acuerdo a la disposición de los Bloques de Origen y Desti -

no. A éstas formas se les llama “Estilo” del vínculo.

Cambiar el estilo de un Vínculo Para cambiar el estilo de un vínculo;

1) Seleccione el vínculo y presione el botón derecho del mouse.

2) Se mostrará un menú contextual con los distintos estilos que puede adoptar un vínculo.

3) Seleccione el estilo deseado.

Page 34: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 34 de 242

Borrar Vínculos Para eliminar un vínculo;

1) Seleccione el vínculo y presione el botón derecho del mouse.

2) Se mostrará un menú contextual.

3) Seleccione la opción “Borrar Flecha”.

También puede borrar un vínculo seleccionándolo y presionando la tecla “Suprimir”.

Ingreso de Datos Niple controla de manera automática cada dato ingresado al sistema, ya sean nombres de registro, valo-

res literales u opciones (generalmente numéricas). 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 parámetro para una función, 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 demás previ ene los posibles

errores de “tipeo” por parte del usuario al ingresar el nombre del registro.

Si necesita seleccionar como parámetro, el nombre de un registro “Predefinido” y no aparece en lista,

consulte el tema “Conceptos Básicos / Modo de Usuario”.

En general, junto a la “lista de registros”, Niple presenta el Botón “Nuevo”. Este botón le carga la pantalla

de declaración de registros.

De ésta manera, si necesita ingresar como parámetro el nombre de un registro que aún no ha sido decla-

rado, tiene la posibilidad de declararlo y seleccionarlo sin necesidad de cancelar la pantalla actual.

Al cargar la pantalla “declaración de Registros” puede declarar más de un registro nuevo antes de volver

a la función actual.

Pero al retornar, Niple seleccionará de manera automática 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 automática el ingreso de datos, y admite sólo

los valores permitidos para el formato seleccionado.

Page 35: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 35 de 242

Si ingresa un valor no permitido, Niple lo muestra de color rojo y no permite continuar con el proceso ac-

tual hasta no corregir el valor ingresado.

Cuando ingresa un número en formato Binario, Niple lo acepta como válido sólo cuando se han ingres a-

do los 8 dígitos que conforman el número. Esto garantiza la correcta interpretación del valor ingresado.

Modos de Trabajo “Nivel de Usuario” Dado que Niple está especialmente diseñado para quienes se inician en la programación de microcontro-

ladores PIC, el sistema ofrece 2 modos de trabajo según el nivel de experiencia o conocimiento técnico del

usuario:

• Modo de Usuario Inicial: Sólo se permite el acceso y visualización 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 configuración 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

restricción. Niple supone que el usuario tiene pleno conocimiento de las acciones que se está realizan-

do, y no advierte sobre de los riesgos de modificar el valor de los registros de configuración o control.

Por defecto Niple inicia la sesión de trabajo en modo “Usuario Inicial”.

Para conmutar entre Modo de Usuario Inicial y Experto ingrese al menú “Opciones/Nivel de Usuario”.

Page 36: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 36 de 242

Rutinas de Usuario

Ud. puede diseñar sus propias funciones o procedimientos para solucionar un problema en particular

(siempre combinando distintas rutinas básicas) y luego llamarlos desde distintas partes del programa (sub-

rrutinas). Esto le permite por un lado, la creación de funciones o procedimientos personalizados y por otro

lado, la optimización del código Assembler generado, ya que las rutinas de usuario sólo se escriben una vez

y luego se insertan “llamadas” a las mismas. Esta categoría incluye las funciones de declaración e inserción

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

tensión .RUT, para luego poder ser utilizada en otros proyectos. De esta manera puede crear una librería 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 botón derecho del mouse para mostrar el menú contextual y seleccione la opción

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

Page 37: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 37 de 242

Page 38: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 38 de 242

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 librería 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ú “Archi-

vo/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 advertenci a, ya que, al generar el código Assembler, pueden ocurrir errores si

la rutina utiliza algún módulo que no existe en el modelo de PIC actualmente utilizado.

Por ejemplo, si la rutina fue generada con una versión 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.

Page 39: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 39 de 242

Exportar Imagen Puede generar un archivo de imagen del diagrama de flujo para realizar la documentación del proyecto.

La imagen es generada en formato .wmf y corresponde un archivo de tipo vectorial. Este formato es están-

dar 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 documentación

técnica.

Al ingresar al Menú “Archivo/Exportar Imagen”, tiene 2 opciones para generar imágenes:

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 según el siguiente formato:

“NombreProyecto_NombreEntorno.WMF”.

Por esto, Niple solicita el nombre del proyecto y sugiere el nombre actual del proyecto.

Si Ud. aún no ha ingresado un nombre al proyecto, Niple sugiere “NombreProyecto”. En el caso de gene-

rar archivos de imagen de todo el proyecto, Niple genera un archivo para cada entorno .

Por ejemplo, en el siguiente proyecto serán

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.

Page 40: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 40 de 242

Programando con Niple

Crear un nuevo proyecto. Para consultar sobre la creación de un nuevo proyecto remítase la sección correspondiente a las rutinas

específicas de cada versión de Niple.

Declaración de Registros

Para consultar sobre la declaración de registros remítase la sección correspondiente a las rutinas especí-

ficas de cada versión de Niple.

Borrar un Registro Seleccione el registro a borrar y presione la tecla “Suprimir”.

Sólo 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 se-

rán borrados todos los bits éste contenga y le pregunta si desea continuar con la operación de borrado del

registro.

Tiene la posibilidad de cancelar la operación de borrado respondiendo NO a la pregunta.

Y si responde afirmativamente se borrará el registro junto con la totalidad de los bits asociados.

Declaración de Bits Para consultar sobre la declaración de Bits remítase a la sección correspondiente a los módulos especí-

ficos de cada versión de Niple.

Borrar un Bit de Usuario Seleccione el BIT a borrar y presione la tecla “Suprimir”.

Sólo 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 descripción del mismo.

Para esto seleccione el BIT que desea renombrar y presione la tecla “Enter”.

A continuación Niple pregunta si desea cambiar el nombre del BIT actualmente seleccionado.

Si responde afirmativamente se muestra la pantalla “Renombrar un Bit” donde se presentan el nombre y

la descripción del BIT actualmente seleccionado.

Ingrese el nuevo nombre del registro y la nueva descripción y a continuación presione el botón “Renom-

brar”.

Page 41: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 41 de 242

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

ra solucionar esto, Niple le brinda la posibilidad de actualizar de manera automática todos los bloques que

hacen referencia al BIT renombrado.

Niple le pregunta si desea que actualice de manera automática los diagramas de flujo con el nuevo nom-

bre de Bit.

Si responde afirmativamente Niple actualiza todos los bloques de todo el proyecto de manera automáti-

ca.

Además 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 más fácilmente los Pines del microcontro-

lador indicando directamente el nuevo nombre asignado.

Por ejemplo: puede renombrar el Bit RA0 por Rele1 y a partir de entonces sólo se refiere al mismo como

Rele1.

Insertar Bloques Tenga en cuenta que cada bloque debe estar unido a otro bloque por medio de un vínculo (flecha).

Esta flecha indica el sentido de ejecución del programa.

De ésta manera se establece la secuencia y el orden en que va a ser ejecutado el programa.

El vínculo lo puede realizar de forma manual o de forma automática.

Para que el vínculo se realice de forma automática debe seleccionar el bloque previo antes de insertar el

nuevo bloque.

Niple supervisa de manera automática los errores lógicos solo cuando los vínculos se realizan de mane-

ra automática, o sea, cuando se inserta un nuevo bloque habiendo seleccionado previamente el bloque pre-

cedente.

Cuando el vínculo se realiza de manera manual, no se realiza el chequeo automático de errores. En es-

te caso, Niple lo advierte a través del siguiente mensaje.

Si elige la opción “NO” se cancela la operación de inserción de bloque.

Si elige la opción “SI”, Niple le permitirá insertar un bloque, pero no se realizará el chequeo de errores en

línea dado que no es posible determinar el contexto en el cual será insertado el nuevo bloque. Además, el

nuevo bloque será insertado en la esquina superior derecha del diagrama de flujo y el vínculo deberá reali -

zarlo manualmente.

Page 42: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 42 de 242

Para insertar un bloque siga los siguientes pasos:

1) Seleccione el bl oque al cual vincular el nuevo bloque a ser insertado. (Para generar el vínculo de

manera automática y chequear errores).

2) Haga doble clic para desplegar el “Árbol de Herramientas” y localice la función de que necesite,

desplegando y recorriendo el árbol de herramientas.

3) Una vez localizada la función que quiere insertar, haga doble clic en el nombre de la misma para

cargar la pantalla con las opciones y parámetros de la función. Una vez seleccionadas las opcio-

nes e ingresados los parámetros, presione e l botón “Ingresar”.

4) De ésta manera se insertará el bloque y será vinculado de manera automática.

Page 43: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 43 de 242

Descripción de las funciones Los bloques se encuentran agrupados en distintos niveles organizados por categoría para facilitar la

búsqueda de un bloque en particular.

En el primer nivel se organizan por tipo de función donde se encuentran los siguientes ítems:

1) Instrucciones

2) Rutinas Básicas

3) Interrupciones

4) Rutinas de Usuario

Módulos comunes a todas las versiones de Niple

Los módulos que se describen a continuación son válidos para todas las versiones de Niple.

Instrucciones

Esta categoría incluye todas instrucciones en Assembler . A su vez se organizan por tipo de instrucción:

El objetivo de Niple es utilizar lo menos posible los bloques de instrucciones ya que éstos bloques equi-

valen a programar en código Assembler.

Instrucciones orientadas a Registros

ADDWF Suma el valor de W y un registro.

Parámetros:

Registro F: Nombre registro que se

quiere sumar a W.

Destino (d): Indi ca en donde será

guardado el resultado de la operación.

Page 44: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 44 de 242

ANDWF Realiza una operación lógica AND entre W y un registro.

Parámetros:

Registro F: Nombre de registro a

combinar con W.

Destino (d) : Indica en donde será

guardado el resultado de la operaci ón.

CLRF Borra el contenido de un registro.

Parámetros:

Registro F: Nombre de registro a

limpiar.

CLRW Borra el contenido del registro W.

Esta instrucción no contiene

parámetros.

Page 45: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 45 de 242

COMF Devuelve el complemento de un registro.

Parámetros:

Registro F: Nombre de registro del que

se quiere obtener el complemento.

Destino (d): Indica en donde será

guardado el resultado de la operación.

DECF Decrementa el valor de un registro en 1.

Parámetros:

Registro F: Nombre de registro a

decrementar.

Destino (d): Indica en donde será

guardado el resultado de la operación.

DECFSZ

Decrementa un registro y evalúa 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”.

Parámetros:

Registro F: Nombre de registro a

decrementar.

Destino (d): Indica en donde será

guardado el resultado de la operación.

Page 46: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 46 de 242

INCF Incrementa el valor de un registro en 1.

Parámetros:

Registro F: Nombre de registro a

incrementar.

Destino (d): Indica en donde será

guardado el resultado de la operación.

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

Parámetros:

Registro F: Nombre de registro a

incrementar.

Destino (d): Indica en donde será

guardado el resultado de la operación.

IORWF

Realiza una operación lógica OR Inclusive entre W y un registro.

Parámetros:

Registro F: Nombre de registro a

utilizar en la operación.

Destino (d): Indica en donde será

guardado el resultado de la operación.

Page 47: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 47 de 242

MOVF Mueve el contenido del registro.

Parámetros:

Registro F: Nombre de registro a

utilizar en la operación.

Destino (d): Indica en donde será guar-

dado el registro.

MOVWF Mueve el contenido del registro W a otro registro.

Parámetros:

Registro F: Nombre de registro destino.

RLF Rota un BIT el contenido del registro hacía la izquierda, incorporando el Carry al registro.

Parámetros:

Registro F: Nombre de registro a rotar.

Destino (d): Indica en donde será

guardado el resultado de la rotación.

Page 48: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 48 de 242

RRF Rota un BIT el contenido del registro hacía la derecha, incorporando el Carry al registro.

Parámetros:

Registro F: Nombre de registro a rotar.

Destino (d): Indica en donde será guar-

dado el resultado de la rotación.

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

Parámetros:

Registro F: Nombre de registro a restar.

Destino (d): Indica en donde será

guardado el resultado de la operación.

SWAPF Intercambia los nibbles bajo y alto de registro.

Parámetros:

Registro F: Nombre de registro a

modificar.

Destino (d): Indica en donde será

guardado.

Page 49: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 49 de 242

XORWF Realiza una operación lógica OR exclusiva entre el registro y W.

Parámetros:

Registro F: Nombre de registro a

utilizar en la operación.

Destino (d): Indica en donde será

guardado el resultado de la operación.

Instrucciones orientadas a Bits

BCF

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

Parámetros:

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.

Parámetros:

Registro F: Nombre de registro en

donde se encuentra el BIT.

Nombre del BIT: Indica el nombre del

BIT a modificar.

Page 50: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 50 de 242

BTFSC Consulta el valor del BIT, si es 0, se descarta una instrucción y ejecuta la siguiente.

Parámetros:

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 instrucción y ejecuta la siguiente.

Parámetros:

Registro F: Nombre de registro en

donde se encuentra el BIT.

Nombre del BIT: Indica el nombre del

BIT a consultar.

Instrucciones orientadas a Literales

ADDLW Suma un literal con W.

Parámetros:

Literal K: Valor hexadecimal, decimal, o

binario a sumar.

Page 51: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 51 de 242

ANDLW Realiza una operación lógica entre el literal (K) y W.

Parámetros:

Literal K: Valor hexadecimal, decimal, o

binario a utilizar en la operación.

IORLW Realiza una operación lógica OR inclusiva entre el literal (K) y W.

Parámetros:

Literal K: Valor hexadecimal, decimal, o

binario a utilizar en la operación.

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

Parámetros:

Literal K: Valor hexadecimal, decimal, o

binario a mover.

Page 52: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 52 de 242

SUBLW Resta a W el valor del literal (K).

Parámetros:

Literal K: Valor hexadecimal, decimal, o

binario a mover.

XORLW Realiza una operación lógica OR exclusiva entre W y el valor del literal (K).

Parámetros:

Literal K: Valor hexadecimal, decimal, o

binario a utilizar en la operación.

Instrucciones de Control

CLRWDT Borra el contenido del registro Watchdog y su prescalador.

Page 53: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 53 de 242

NOP Instrucción que se utiliza para consumir un ciclo de reloj.

Parámetros:

Repetir : Se refiere al número de NOP a

introducir.

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

Rutinas Básicas

Las rutinas básicas son módulos prediseñados y se encargan de resolver un proceso en particular (una

configuración, una comparación, un cálculo, etc.).

Puede formar estructuras lógicas muy complejas de manera rápida y sencilla a partir de la combinación

de rutinas básicas.

Utilice las rutinas básicas para programar dentro de cualquier “Entorno”.

Las rutinas básicas están 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 automática.

Al bloque de “Iniciar” no puede ingresar ningún vínculo. Solo acepta un

vínculo de salida.

Page 54: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 54 de 242

Asignar Valor

Asignar valor a un Bit Esta función permite asignarle un valor a un BIT.

Dado que un Bit representa un

valor Binario, sólo 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 2 renglones con

información referida al BIT

seleccionado:

En la primera línea se muestra el número de BIT y el registro al cual pertenece.

Y en la segunda, se muestra la descripción o comentario correspondiente al BIT.

Una vez seleccionado el BIT, se muestra una lista de valores de asignación (0 y 1). Seleccione el valor

deseado.

Por ultimo, puede ingresar un comentario adiciona a la función.

Filtrar los bits por registro

Puede filtrar la lista de

Nombres de Bit para que sólo

muestre los bits declarados en un

registro determinado. Esto resulta

muy práctico cuando está

trabajando en “Modo de Usuario

Experto” (se muestran todos los

bits del sistema), o cuando ha

declarado muchos Bits de

Usuario.

Si desea filtrar la lista de bits, active la casilla de verificación “Por registro” y seleccione el nombre del re-

gistro. De manera automática se mostrarán todos los bits declarados en el registro seleccionado.

Representación gráfica

Page 55: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 55 de 242

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 función 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

aún no ha sido declarado, mediante el botón

“Nuevo” puede declarar el registro sin necesidad

de cancelar la operación 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 automática el ingreso de lite-

rales, para obtener mayor información consulte el tema “Conceptos Básicos / Ingreso de Datos”.

- El valor de otro registro. Esta opción es equivalente a “copiar” el contenido de un registro. Si en tiem-

po de ejecución se modifica el contenido del registro, estamos frente a una asignación de tipo varia-

ble.

Al igual que con el campo registro, el botón “Nuevo”, le permite declarar un nuevo registro sin necesidad

de cancelar la operación.

Por último puede ingresar un comentario.

Representación gráfica:

Sintaxis:

Destino = Origen

Esto se interpreta como: “al registro ‘Destino’ se le asigna el valor de ‘Origen’”.

Page 56: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 56 de 242

Ejemplos:

Al Registro “Dato” se le asigna el valor Decimal 00.

Al registro “Dato” se le asigna el valor Binario 11011101.

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

Puertos

Configurar Puerto Para consultar sobre la configuración de los puertos, remítase a la sección correspondiente a las rutinas

específicas de cada versión 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 configuración del puerto

seleccionado de manera automática 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, igual-

mente Niple le advierte para asegurarse que Ud. tiene pleno conocimiento de la actual configuración.

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 configuración del puerto

seleccionado de manera automática y advierte si el

puerto no está completamente como Salida.

Si bien el hecho de escribir un pin configurado

como entrada no es considerado un error,

igualmente Niple le advierte para asegurarse que Ud. tiene pleno conocimiento de la actual configuración.

Page 57: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 57 de 242

Una vez ingresado los datos solicitados presione el botón Ingresar.

Representación gráfica

Sintaxis

Puerto = Valor

Esto se interpreta como: “en ‘Puerto’ escribir ‘Valor’”.

Donde:

El parámetro ‘Puerto’ muestra el nombre del puerto:

A = Puerto A

B = Puerto B

C = Puerto C

D = Puerto D

El parámetro ‘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 B’10001111’ en el puerto B.

Conversión Analógica/Digital (A/D)

Activar/Desact. A/D Este módulo es válido para los modelos de PIC de la línea 16F87x y para el modelo de PIC 12F675.

Para utilizar los módulos de conversión Analógica/Digital (A/D) primero debe configurar los canales de

conversión A/D, y luego debe “Activar” el módulo de conversión A/D.

Para obtener ayuda acerca de la configuración de los canales A/D,

consulte el tema “Rutinas_básicas/Puertos/Configurar Puerto”.

Para activar el módulo de conversión A/D, ingrese al árbol de

herramientas y seleccione la función “Rutinas Básicas / AD / Activar-Desact.

A/D” como se muestra en la imagen de la derecha :

Page 58: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 58 de 242

Se presenta la pantalla “Activar – Desactivar conversor A/D.

En esta pantalla se muestra toda la información

relacionada con el estado actual del módulo de conversión

A/D. Esto es: Configuración actual del puerto, Cantidad de

canales A/D disponibles y el estado actual del módulo de

conversión (Activado o Desactivado).

En la parte inferior se presentan opciones de Activar o

Desactivar el módulo de conversión A/D.

Seleccione la opción deseada y presione el botón

“Ingresar”.

Recuerde que está actuando sobre todo el módulo de conversión A/D independientemente de la cantidad

de canales configurados. O sea que, si habilita el módulo, está habilitando todos los canales disponibles y

cada canal no puede ser habilitado o inhabilitado de manera independiente.

Representación Gráfica:

Sintaxis:

A/D = Estado

Donde:

El parámetro “Estado” puede adoptar algunos de los siguientes valores:

Activado

Desactivado

Ejemplos:

Activar el módulo A/D

Desactivar el módulo A/D

Conversión A/D Este módulo es válido para los modelos de PIC de la línea 16F87x y para el modelo de PIC 12F675.

Para poder realizar una conversión Analógica/Digital (A/D) primero debe realizar los siguientes pasos:

• Configurar los canales de lectura A/D. Para esto, consulte configuración del puerto A.

• Activar el módulo de conversión A/D. Para esto consulte Activar/Desct. A/D.

Una vez configurado y activado el módulo A/D, está en condiciones de realizar una conversión A/D.

Page 59: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 59 de 242

Ingrese al árbol de herramientas y seleccione la opción “Insertar / Rutinas Básicas / A/D / Conversión

A/D” como se muestra en la imagen de la derecha.

Se presenta la pantalla “Conversión Analógica / Digital”.

En esta pantalla se muestra toda la información relacionada con el estado

actual del módulo de conversión A/D. Esto es:

• Configuración actual del puerto

• Cantidad de canales A/D disponibles

• El estado actual del módulo de conversión A/D (Activado o Desactivado).

Lo primero que Niple le solicita, es que seleccione el

canal A/D que desea utilizar. La lista desplegable lla-

mada “Canal a Leer” contiene todos los canales A/D que

se encuentra disponibles.

En esta lista se muestra el número de canal junto al

correspondiente nombre de Bit. De esta manera, Niple

le facilita la identificación 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, sólo los canales que actualmente están disponibles

de acuerdo a la configuración actual del puerto.

A continuación se presentan algunos ejemplos de

ésta característica.

En cada caso, compare la información de la configu-

ración actual del Puerto, con la cantidad de canales A/D

disponibles, y con la lista de canales A/D que Niple ofre-

ce como canales disponibles.

Una vez seleccionado el canal por el cual realizar la conversión A/D, Niple le solicita que seleccione una

de las 2 maneras que tiene de realizar la conversión. Las explicaremos brevemente.

Page 60: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 60 de 242

Una conversión A/D puede realizarse de 2 maneras:

1) Mediante un bucle; esperando hasta que finalice la conversión:

El PIC no realiza ninguna otra tarea que no sea “esperar” a que el BIT “go_done” (BIT 2 del registro ad-

con0) se ponga en 0, lo cual indica que la conversión ha finalizado.

2) Iniciar la conversión y generar una interrupción al finalizar la conversión A/D:

El PIC inicia la conversión y continúa ejecutando el resto del código mientras se realiza la conversión

A/D. Cuando termina de realizar la conversión se produce una interrupción por “Fin de Conversión A/D”.

Elija la manera de realizar la conversión que Ud. desea, seleccionando la opción correspondiente.

Sea cual fuere la opción que Ud. elija, a

continuación Niple le solicita que seleccione los

registros donde guardar el resultado de la conversión

A/D.

Si bien el conversor A/D del 12F675, realiza la

conversión AD con una resolución a 10 bits, Ud. pue-

de seleccionar la resolución de con la cual realizar la

conversión A/D, que puede ser a 8 o a 10 Bits.

Si selecciona la resolución a 8 bits, el sistema

configura de manera automática la alineación del re-

sultado de la medición hacia la izquierda y toma

como resultado el registro “Alto”, ignorando los 2 bits menos significativos.

Page 61: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 61 de 242

Si selecciona la resolución a 10 bits, el sistema configura automáticamente la alineación del resul tado de

la medición hacia la derecha y toma como resultado los 2 registros de la conversión A/D.

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

Para esto, active la opción “Realizar promedio”.

Seleccione la cantidad de mediciones que desea realizar. Niple realiza todas las lecturas y realiza el

promedio de manera automática.

Niple le da la opción de esperar un tiempo entre

las mediciones seleccionadas.

Page 62: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 62 de 242

Si elige la opción “Generar una interrupción al finalizar la

conversión”, Niple chequea de forma automática el estado

de los siguientes habilitadores de interrupciones:

• “GIE” (Habilitador general de interrupciones)

• PEIE (Habilitador general de interrupciones por

periféricos, a los cuales pertenece el módulo de

conversión A/D).

• ADIE (Interrupción por Fin de Conversión A/D)

Si alguno de los habilitadores anteriormente

mencionados NO se encuentra “Activado”, Niple ofrece la

opción de activarlo para que la interrupción se produzca

normalmente. De lo contrario, la interrupción no se

producirá.

El modo de conversión “por interrupción” no permite realizar el promedio automático.

Si decide no activar estos habilitadores, la interrupción no se producirá y por ende, el fin de la conversión

A/D no será “detectado”.

Al presionar el botón “Ingresar”, Niple realiza distintas acciones según del tipo de conversión A/D selec-

cionado (por Bucles o por Interrupción).

Conversión A/D por Bucles:

Se inserta el bloque

correspondiente a la conversión

A/D como lo muestra la siguiente

imagen.

Page 63: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 63 de 242

Conversión A/D por Interrupción:

Niple inserta de manera automática los siguientes bloques:

• Activación de las interrupciones

• Conversión A/D

• Genera de manera automática el entorno “Interrupción por A/D” dentro del cual se

insertan los bloques de asignación que recuperan el resultado de la conversión A/D.

En la siguiente ilustración se muestran los bloques y el Entorno insertados automáticamente.

En la siguiente imagen se muestran los bloques insertados de manera automática dentro del entorno “In-

terrupción por A/D”.

Page 64: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 64 de 242

Representación gráfica:

Sintaxis:

Registro1, Registro2 = A/D(Nro_Canal)

Donde:

Registro1 = Nombre de un Registro

Registro2 = Nombre de un Registro

Nro_Canal = Número de canal en el cual se realiza la conversión A/D.

Ejemplos:

A los registros “Dato1” y “Dato2” se asigna el resultado de la conversión A/D.

Genera una interrupción la finalizar la conversión A/D.

EEPROM

Leer EEPROM Lee un dato de la memoria EEPROM del microcontrolador y lo guarda en un registro.

Seleccione entre las opciones de

dirección Fija o Variable .

Si elige la opción variable,

seleccione de la lista el registro en

donde está contenida la dirección.

En la lista Registro donde

guardar el dato, seleccione el

registro destino.

Presione el botón i ngresar.

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

Page 65: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 65 de 242

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

En posición de memoria a

escribir, seleccione entre las

opciones de dirección Fija o

Variable .

Si elige la opción variable,

seleccione de la lista el registro en

donde está contenida la dirección.

En Valor a grabar , seleccione

entre las opciones un literal o un

registro.

Si selecciona la opción un

registro, seleccione de la lista el

registro que desea guardar en la EE-

PROM

Presione le botón Ingresar .

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

Funciones Lógicas Las funciones lógicas permiten realizar evaluaciones (comparaciones) de registros y bits con valores lite-

rales (constantes) o con los valores contenidos en otros registros y bits (variables).

Comparar Bit Este bloque evalúa si el valor del BIT seleccionado es 0 o 1 y deriva el flujo del proceso en función del

resul tado de la evaluación.

En el campo “BIT a eva-

luar”, seleccione el nombre

BIT del que desea comparar

el valor y a continuación se-

leccione 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 regis-

tro determinado.

Page 66: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 66 de 242

Para esto seleccione la casilla de verificación “Por Registro” y a continuación 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 información acerca del

mismo. La información presentada es: número 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 d atos, presione el botón Ingresar.

Este bloque debe ser vinculado a 2 bloques de salida:

El primer bloque de salida insertado corresponde a la salida “SI”, es decir que, en tiempo de ejecución el

proceso “tomará” este camino si el resultado de la evaluación es verdadero.

El segundo bloque de salida insertado corresponde a la salida “NO”, es decir que, en tiempo de ejecu-

ción, el proceso “tomara” este camino si el resultado de la evaluación es falso.

Comparar Registro (8 Bits)

Evalúa el valor de un regis tro, utilizando como valor de comparación un literal o el valor de otro registro.

En la lista “Registro a evaluar”,

seleccione el registro que desea comparar.

A continuación seleccione el operador de

comparación.

Un registro puede ser comparado con un

valor literal (constante) o con el valor de

otro registro (variable).

Seleccione el tipo de valor de

comparación marcando en la casilla de

opción correspondiente

Page 67: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 67 de 242

Si selecciona la opción “un Registro”, seleccione de la lista el registro que contiene el valor de compara-

ción, de lo contrario, ingrese el valor literal de comparación.

Por último puede ingresar un comentario al bloque.

Un a vez ingresados todos los datos solicitados, presiones el botón “Ingresar”.

Los operadores de comparación 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 botón

“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 ejecución el

proceso “tomará” este camino si el resultado de la evaluación es verdadero.

El segundo bloque de salida insertado corresponde a la salida “NO”, es decir que, en tiempo de ejecu-

ción, el proceso “tomara” este camino si el resultado de la evaluación es falso.

Comparar Registro (16 Bits)

Evalúa un valor formado por 2 registros

(valor a 16 bits), utilizando como valor de

comparación un literal comprendido entre 0 y

65535, o comparándolo con el valor formado

por otros 2 registros (16 bits).

En la lista “Registros a evaluar”, s e-

leccione los registros que desea comparar. A

continuación seleccione el operador de

comparación.

La comparación puede realizarla con

respecto a un valor literal (constante) o con el

valor de otros 2 registros (variable). Se-

leccione el tipo de valor de comparación

marcando en la casilla de opción correspon-

diente.

Page 68: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 68 de 242

Si selecciona la opción “Registros”, seleccione de la lista los registros que contienes el valor de compa-

ración, de lo contrario, ingrese el valor literal de comparación.

Por último puede ingresar un comentario al bloque.

Un a vez ingresados todos los datos solicitados, presiones el botón “Ingresar”.

Los operadores de comparación 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 botón

“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 ejecución el

proceso “tomará” este camino si

el resultado de la evaluación es

verdadero.

El segundo bloque de salida

insertado corresponde a la salida

“NO”, es decir que, en tiempo de

ejecución, el proceso “tomará”

este camino si el resultado de la

evaluación es falso.

Matemáticas

8 Bits

Adición (8) Realiza una operación matemática de Adición,

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 opción el valor de un Registro,

seleccione de la lista el registro a utilizar como Su-

mando1.

Repita la operación an terior en Sumando2.

En Resultado, seleccione entre las opciones en

el registro W o en otro registro.

Si seleccion a la opción en otro registro, seleccione de la lista el registro en donde quiere guardar el resul-

tado de la operación.

Page 69: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 69 de 242

Sustracción (8) Realiza una operación matemática de sustracción, utilizando como minuendo y sustraendo un valor lite-

ral 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 opción el valor de un

Registro, seleccione de la lista el registro a

utilizar como minuendo.

Repita la operación anterior en sustraendo.

En Resultado, seleccione entre las

opciones en el registro W o en otro registro.

Si selecciono la opción en otro registro,

seleccione de la lista el registro en donde

quiere guardar el resultado de la operación.

Haga clic en Ingresar.

División (8) Realiza una operación matemática de

división, 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 opción el valor de un

Registro, seleccione de la lista el registro a

utilizar como Dividendo.

Repita la op eración anterior en Divisor.

En Resultado, seleccione entre las opciones

en el registro W o en otro registro.

Si selecciono la opción en otro registro,

seleccione de la lista el registro en donde quiere guardar el resultado de la operación.

Haga clic en Ingresar.

Page 70: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 70 de 242

Multiplicación (8) Realiza una operación matemática de Multiplicación con registros o valores a 8 bits, utilizando como mul-

tiplicador 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 opción el valor de un

Registro, seleccione de la lista el registro a

utilizar como Multiplicando.

Repita la operación anterior en

Multiplicador.

En Resultado, seleccion e entre las

opciones en el registro W o en otro registro.

Si selecciono la opción en otro registro,

seleccione de la lista el registro en donde

quiere guardar el resultado de la operación.

Haga clic en Ingresar.

Reg(8) a BCD Realiza el cálculo de conversión de un número 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

descomposición a U, D y C.

Haga clic en Ingresar.

Page 71: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 71 de 242

Cálculos a 16 Bits

Adición (16) Realiza una operación matemática de Adición de valores a 16 bits, utilizando como sumandos un valor li-

teral 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 opción “Registros”,

seleccione de la lista el registro a utilizar como

Sumando1.

Repita la operación 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 operación.

Haga clic en Ingresar.

Sustracción (16) Realiza una operación matemática de

sustracción con valores a 16 bits, utilizando

como numerador o denominador un valor literal

o el valor de 2 registros. El resultado es

guardado en otros 2 registros.

En Denominador seleccione entre las

opciones un literal o el valor de 2 Registros.

Si seleccionó la opción “Registros”,

seleccione de la lista los registros a utilizar

como Denominador.

Repita la operación anterior en Sustraendo.

Seleccione los registros donde guardar el

resultado de la operación.

Haga clic en Ingresar.

Page 72: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 72 de 242

Multiplicación (16) Realiza una operación matemática de

Multiplicación 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 op-

ciones un literal o el valor de 2 Registros.

Si selecciona la opción “Registros”,

seleccione de la lista el registro a utilizar

como Multiplicando.

Repita la operación anterior en

Multiplicador.

Seleccione los registros donde guardar el

resultado de la operación.

Haga clic en Ingresar.

Reg (16) a BCD Reali za el cálculo de conversión 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 descomposición a

U, D, C, U de mil y D de mil.

Haga clic en Ingresar.

Page 73: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 73 de 242

BCD a Reg (16) Realiza el cálculo de conversión 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 descomposición a U,

D, C, U de mil y D de mil.

Haga clic en Ingresar.

Escalar La función “Escalar” permite, a partir de un valor dentro de un rango “origen”, calcular el valor proporcio-

nal correspondiente a un rango “destino”.

Por ejemplo: Los registros “Dato1” y “Dato2” contienen el resultado de una conversión A/D, es decir, un

valor a 10 bits entre 0 y 1023.

Ahora suponga que desea controlar el ancho de pulso del PWM a 5000 Hz. El ancho de pulso es contro-

lado por medio de un valor a 10 bits

contenido en los registros

“AnchoPulso1” y “AnchoPulso2”. A

5000 Hz el rango válido para el

control del ancho de pulso esta

comprendido entre 0 y 200.

Partiendo de esto, Ud. necesita

escalar el valor contenido en los

registros “Dato1” y “Dato2” de un

rango 0..1023, a un rango 0..200 y

asignarlo a los registros

“AnchoPulso1” y “AnchoPulso2”.

De esta manera se obti ene un

valor proporcional, es decir, el mismo

porcentaje o relación entre el rango

de destino con respecto al rango de

origen.

Page 74: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 74 de 242

Comunicaciones

RS232 Para consultar sobre los módulos de comunicación RS232, rem ítase a la sección correspondiente a las

rutinas específicas de cada versión de Niple.

RS485 Si bien el módulo RS485 está disponible en todas las versiones de Niple, en los modelos 16F84 y los

modelos de la línea 12F6xx no se encuentra la opción de comunicación por USART dado que estos mode-

los de PIC no disponen en un módulo USART.

Dado que, salvando la diferencia antes mencionada, el módulo de comunicación RS485 se utiliza de la

misma manera y cuenta con las mismas opciones, hemos decidido poner este bloque en la sección de ruti -

nas comunes.

La comunicación 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 fun-

cionamiento de la red, enviando comandos y solicitando información al resto de los de micros denominados

“esclavos ”. En general , los dispositivos esclavos responden enviando los datos solicitados por el maestro o

ejecutan comandos enviados por el maestro.

Una red 485 puede estar formada por hasta 256 dispositivos esclavos a una distancia máxima aprox. de

1200 metros y cada dispositivo esclavo debe estar identificado por un “número de dispositivo”.

En general, el micro maestro es un modelo de micro “grande” y se encarga de realizar los procesos prin-

cipales (Ingreso de datos al sistema, interfaz con el usuario, LCD, display de 7 segmentos, conexión a PC,

etc.) mientras que los dispositivos esclavos, generalmente son micros más pequeños que realizan los pro-

cesos “distribuidos”, es decir, los procesos locales propios de cada punto de control y pueden contar con un

alto grado de autonomía.

Niple soporta la interfaz DS75176 para realizar las comunicaciones RS485.

La comunicación RS485 requiere de 3 pines:

§ un pin de Transmisión (TX) , configurado como salida

§ un pin de Recepción (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 “Transmisión“ y “Recepción” respecti -

vamente y si el esclavo debe responder con algún dato al maestro, ambos micros deben cambiar el estado

de sus interfaces (“Maestro” en modo recepción y “Esclavo” en modo Transmisión) mediante el pin de con-

trol del la interfaz (DS75176). Y cuando termine el envío de datos al maestro, deben volver a conmutar el

modo de sus interfaces al estado inicial. Niple coordina de manera automática el cambio de modo de trabajo

(TX/RX) de las interfaces.

Page 75: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 75 de 242

A continuación se muestra un esquema de la estructura de un proyecto típico de implementación de una

red RS485.

Modo Maestro Para ingresar a los módulos de RS485 ingrese al árbol de herramientas

como lo muestra la imagen de la derecha.

Se presenta la pantalla “Comunicación RS485 – Dispositivo Maestro”.

Niple le permite utilizar el módulo USART para realizar las comunicaciones

RS485.

Seleccione el modo de comunicación , por módulo USART o por código.

Si selecciona el modo de comunicación por USART, Niple selecciona de

manera automática los pines correspondientes a TX y RX e inhabilita los mismos, dado que los mismos ya

vienen preestablecidos para ser utilizados por el módulo USART.

Page 76: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 76 de 242

Niple le recomienda NO utilizar el módulo USART para realizar comunicaciones RS485 en modo “Maes-

tro” dado que la mayor parte del control (envío y recepción de datos) se realiza por código y no por interrup-

ciones de USART.

Por ejemplo, cuando un PIC en modo “maestro” solicita datos a otro micro en modo “Esclavo”, el maes-

tro, “sabe” que “debe esperar” la respuesta del esclavo y también cuantos datos debe recibir como respues-

ta. Es decir, que en este caso, la recepción de los datos es totalmente “previsible”.

Por esto no es necesario utilizar la interrupción por USART para la recepción de los datos del esclavo.

Es recomendable utilizar el módulo USART para el tipo de comunicación RS232, por ejemplo para recibir

datos desde una PC, lo cual sí puede resultar totalmente imprevisible y la interrupción por USART resulta de

vital importancia.

En el modo de comunicación “por código” Niple le permite seleccionar los pines de TX y RX. Dado que

no se utiliza el módulo USART del PIC

En ambos modos de comunicación, debe seleccionar el pin de selección de TX/RX.

Luego seleccione la velocidad de comunicación.

Luego debe seleccionar el tipo de conexión del bus RS485.

Niple solicita este el tipo de conexión ya que en una comunicación “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.

Page 77: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 77 de 242

Si por el contrario selecciona la opción “Red”, esto significa que el dispositivo maestro va estar conecta-

do a una red de varios micros esclavos y por esto solicita que se indique el nro de esclavo al cual se va a di-

rigir el comando.

En este caso vamos a utilizar la opción “Red” para mostrar como Niple solicita el nro de esclavo. Obser-

ve que en la línea de texto debajo de la velocidad de comunicación Niple incluye una breve descripción so-

bre el tipo de comunicación seleccionado.

Al seleccionar la opción de conexión, Niple ya le puede mostrar la configuración del hardware correspon-

diente.

Luego seleccione la “función” que el maestro debe realizar :

Para interpretar mejor cada una de las funciones 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 determi-

nada acción pero esta acción no incluye el envío de una “respuesta” desde el esclavo hacia el

maestro.

• Interrogar: Solicitar un dato a un esclavo, en general el esclavo responde inmediatamente sin

realizar ningún procesos antes de enviar los datos solicitados.

A partir de este punto, las opciones de la pantalla dependen de la función seleccionada

Page 78: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 78 de 242

A continuación se describen cada una de estas funciones:

• Enviar comandos: El maestro envía

uno o más comandos a un esclavo y

no espera respuesta del mismo. Al

seleccionar la función de “Enviar

comando”, Niple presenta la solapa

de “Enviar datos” donde debe

especificar los bytes que desea enviar

como comandos .

• Interrogar esclavo: Envía uno o más

comandos a modo de “solicitud de

datos” donde el es clavo debe

responder. El maestro espera a que

el esclavo envíe 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”.

Page 79: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 79 de 242

A continuación vamos a describir las secciones de “Enviar datos” y “Recibir datos” las cuales son comu-

nes a todas las funciones.

Enviar Comandos

En esta sección se indican cuales son los comandos o datos a enviar.

Como mencionamos anteriormente, si selecciona el modo de conexión “Punto a punto” no necesita es-

pecificar el nro. de esclavo.

Pero si ha seleccionado el modo de conexión en “Red” deberá indicar el nro de esclavo al cual va a en-

viar el dato o comando.

El nro de esclavo puede ser un valor

“Fijo” (un literal) o un valor variable (un re-

gistro).

Si selecciona el tipo de valor “Fijo” ,

estará haciendo que el PIC envíe el

comando siempre al mismo esclavo.

Mientras que si elige la opción “Variable”

el PIC puede enviar el dato o comando a

diferentes esclavos según el valor que

contenga el registro seleccionado como

variable. De esta manera puede generar una

estructura “cíclica” para enviar comando o consultas a diferentes esclavos modificando solo el valor del

regis tro seleccionado como variable.

A continuación debe seleccionar la cantidad de comandos que desea enviar.

Niple le permite enviar hasta 5 comandos lo cuales representan hasta 5 niveles de comandos.

Page 80: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 80 de 242

Por ejemplo. Supongamos que diseña un proyecto con la siguiente arquitectura.

En este caso vamos a diseñar un protocolo de comunicación 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 “parámetro”.

• 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 in-

terpretarlos como “Parámetros” los cuales indican sobre qué sensor se desea ejecutar el comando.

De esta manera, por ejemplo:

§ Para activar el sensor Tipo “A”, Nro. 1 del primer esclavo debe enviar la siguiente

secuencia de comandos “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”.

Page 81: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 81 de 242

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

En cada uno de los 5 niveles puede

generar hasta 256 comandos (o

parámetros), con lo cual se puede generar

una gran cantidad de comandos o aplicar

una gran cantidad de parámetros lo cual

facilita el desarrollo proyectos fácilmente

escalables.

Niple administra el envío de todos los

datos de comandos de manera automática.

Seleccione la cantidad de comandos que desea enviar.

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

Recibir Respuesta

En esta sección se indica como recibir los

datos que envían los esclavos.

Recuerde que es ta sección 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 recepción de datos se

ajusta automáticamente la cantidad de datos

ingresados.

Page 82: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 82 de 242

Luego debe seleccionar los registros

donde guardar cada uno de los bytes reci-

bidos. 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 automática.

Para esto active la opción “Calcular e incluir el

checksum al enviar y recibir los datos” que se

encuentra en la sección “Configuración”.

Al seleccionar la opción de checksum, se

agregar automáticamente 2 registros, que son en

los cuales se va a realizar el cálculo.

En el caso del envío de datos se calcula de

manera automática el checksum y se realiza el

envío de los bytes de CRC (checksum).

En el caso de la recepción 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 botón “Ingresar”.

Page 83: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 83 de 242

Modo Esclavo Para ingresar al módulo de “RS485 – Dispositivo Esclavo“ ingrese al árbol

de herramientas como lo muestra la imagen de la derecha.

Se presenta la pantalla “Comunicación RS485 – Dispositivo Maestro”.

Niple le permite utilizar el módulo USART para realizar las comunicaciones

RS485.

Seleccione el modo de comunicación, por módulo USART o por código.

Si selecciona el modo de comunicación por USART, Niple selecciona de

manera automática los pines correspondientes a TX y RX e inhabilita los

mismos, dado que los mismos ya vienen preestablecidos para ser utilizados por el módulo USART.

Niple le recomienda NO utilizar el módulo USART para realizar comunicaciones RS485 en modo “Maes-

tro” dado que la mayor parte del control (envío y recepción de datos) se realiza por código y no por interrup-

ciones 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 recepción de los datos es totalmente

“previsible”.

Por esto no es necesario utilizar la interrupción por USART para la recepción de los datos del esclavo.

Es recomendable utilizar el módulo USART para el tipo de comunicación RS232, por ejemplo para recibir

datos desde una PC, lo cual sí puede resultar totalmente imprevisible y la interrupción por USART resulta de

vital i mportancia.

En el modo de comunicación “por código”

Niple le permite seleccionar los pines de TX

y RX. Dado que no se utiliza el módulo

USART del PIC.

En ambos modos de comunicación, debe

seleccionar el pin de selección de TX/RX.

Luego seleccione la velocidad de

comunicación.

Page 84: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 84 de 242

Luego debe seleccionar el tipo de conexión del bus RS485.

Niple solicita este el tipo de conexión ya que en una comunicación “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 opción “Red”, esto significa que el dispositivo maestro va estar conecta-

do a una red de varios micros esclavos y por esto es necesario indicar que nro. de esclavo es el que corres-

ponde al dispositivo actual .

Al seleccionar la opción de conexión, Niple ya le puede mostrar la configuración del hardware correspon-

diente.

El nro. de dispositivo se puede asignar de manera “Fija” o “Variable”.

En este punto, es muy importante tener en cuenta que el nro. de dispositivo “Fijo” implica tener que cam-

biar el programa (reprogramar el PIC) para

cambiar el nro. de dispositivo dado que este

número no se puede 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 común que todos micros esclavos realicen los

mismos procesos. Es decir que un micro esclavo bien podría trabajar en cualquiera de los puntos de control

ocupado por cualquiera de los otros esclavos.

Page 85: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 85 de 242

Y para que un micro pueda ser utilizado en el lugar de cualquiera de los otros micros esclavos es indis-

pensable que el nro. de esclavo pueda ser modificado sin necesidad de reprogramar el PIC.

Esto se logra utilizando un nro. de esclavo “variable”. Y haciendo que el micro obtenga el nro. de escla-

vo al iniciar el programa.

Luego seleccione la “función” que el dispositivo esclavo debe reali zar:

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 acción pero esta

acción no incluye el envío de una “respuesta” hacia el maestro.

• Respuesta : Enviar datos al maestro.

A partir de este punto, las opciones de la pantalla dependen de la función seleccionada

A continuación se describen cada una de estas funciones:

• Responder consulta: Se reciben los

comandos desde el maestro y envía

uno o más datos como respuesta . Al

seleccionar esta función, Niple

presenta las solapas de “Recibir

comandos” y “Enviar Respuesta”.

Page 86: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 86 de 242

• Recibir comandos : Recibe uno o

más comandos desde el maestro.

Niple muestra las solapas de “Recibir

comandos”.

• Recibir datos: Recibe datos desde

un esclavo. Muestra la solapa “Recibir

datos”.

A continuación vamos a describir las

secciones de “Recibir Comandos” y “Enviar

Respuestas ” las cuales son comunes a todas las funciones.

Recibir Comandos

En esta sección se indica como recibir los comandos que envía el maestro .

Recuerde que esta sección solo esta disponible para las funcione “Responder Consulta” y “Recibir Co-

mandos”.

Como mencionamos anteriormente, en una red 485, cada dispositivo esclavo se identifica mediante un

“número de esclavo”. En la sección “Configuración” 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 automáticamente el valor del dispositivo actual con el “nro. de escla-

vo” 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 co-

mando de manera automática.

Page 87: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 87 de 242

Si el nro. de esclavo enviado por el maestro coincide con el nro. de dispositivo actual, Niple recibe y eje-

cuta el resto de los comandos de manera automática.

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

do en la sección “Con figuración” .

Debe seleccionar un registro diferente al utilizado para guardar el nro de esclavo actual.

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.

Page 88: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 88 de 242

Enviar Respuesta

Para enviar la respuesta al a maestro,

primero debe seleccionar la cantidad de

registros que desea enviar.

Al ingresar la cantidad de registro, la grilla

se adapta automáticamente 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 envíe un dato de tipo “Fijo” como

respuesta, el PIC siempre enviará el mismo dato.

Mientras que si selecciona el tipo de datos variable, Niple envía el dato guardado en el registro seleccio-

nado.

Una vez seleccionado el valor a enviar, presione el botón “OK”.

Repita esta operación para cada byte de la grilla de datos a enviar.

Page 89: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 89 de 242

Tablas Una tabla consiste en una metodología de programación a través de la cual se pueden realizar consultas

obteniendo un valor de resultado en función de un valor de entrada (índice).

Por ejemplo: la siguiente tabla devuelve el código ASCII correspondiente al valor ingresado como índice.

Índice Valor Resultado 0 D’48’ 1 D’49’ 2 D’50’ 3 D’51 4 D’52’ 5 D’53’ 6 D’54’ 7 D’55 8 D’56’ 9 D’57’

El procedimiento consiste en sumar al registro contador de programa (registro PCL) el valor correspon-

diente al índice, esto produce que la ejecución del programa “salte” la cantidad de posiciones correspon-

diente 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 ins-

trucción “CALL”.

En el siguiente ejemplo en código Assembler se describe el principio de funcionamiento de una consulta

por tabla.

Page 90: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 90 de 242

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 extensión TBL. De esta manera Ud.

puede crear su propia librería de tablas.

Para crear una tabla ingrese al menú Declar a-

ción / Generador de tablas / Tabla estándar.

Niple le muestra la pantalla de “declaración 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 automática ya que no

debe “sal tearse” ninguno de ellos.

Para ingresar nuevos elementos a la tabla

presione el botón “Agregar un valor”.

Si detecta de ha cometido un error al ingresar alguno de los valores de la tabla, puede editarlo haciendo

doble clic sobre el elemento a corregir.

Una vez ingresados todos lo valores que conforman la tabla presione el botón “Ingresar”.

Al presionar el botón “Ingresar” Niple guarda la tabla

actual en un archivo con extensión .TBL

A continuación le solicita que ingrese el nombre del

archivo de tabla.

De esta manera podrá utilizar la tabla recién creada en

distintos proyectos sin necesidad de volver a declararla cada

vez que la necesite.

Page 91: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 91 de 242

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 temporización Fija puede genera temporizaciones entre 10 Microsegundos y 255 Segundos con

una precisión 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.

Page 92: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 92 de 242

Visual ización

Display de 7 segmentos

Multiplexado

Este módulo permite visualizar valores en displays de 7 segmentos mediante conexión a 7 bits, es decir,

sin la utilización de un codificador para generar la combinación 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 Común o Cátodo Común.

Una vez seleccionado el tipo de display a utilizar, Niple le presenta información acerca del estado de los

puertos. Esta información es importante a la hora de seleccionar los pines de conexión de los displays.

Si algún puerto aún no ha sido configurado, Niple le ofrece la oportunidad de configurarlo. Pero lo reco-

mendable es cancelar el cuadro de visualización en displays, configurar el puerto en el inicio del programa y

volver cargar el módulo de visualización por displays.

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

A continuación debe seleccionar los valores a visualizar en cada display.

Page 93: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 93 de 242

En cada display se puede visualizar el valor de un registro o un valor literal.

Para seleccionar el valor a visualizar en cada dígito 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 codificación mediante tabla, seleccione la

tabla.

2) O puede visualizar un valor constante (un valor literal): en

este caso se muestra siempre el mismo valor. Al seleccionar la

opción “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 número o símbolo que

desea visualizar. Niple genera el código binario correspondiente

de manera automática. Este código binario varía si se trata de un

display tipo Ánodo común o Cátodo común, Niple controla el

código gen erado según 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 través de los cuales se habilita y

se deshabilita cada display en el proceso de multiplexado.

Page 94: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 94 de 242

Debajo de cada display se encuentra una lista desplegable.

En cada una de estas listas seleccione el pin al cual se conecta el común de cada display.

Niple presenta

como opciones

válidas, solo los

pines de los puertos

que se encuentra

configurados como

salida.

Una vez

seleccionados los

pines de habilitación

de cada display,

Niple le solicita que

seleccione los pines

correspondientes al

bus de datos. En este

caso se trata de 7

pines, uno por cada

barra de los display.

El criterio de selección de los pines del bus de datos es el mismo que para los pines de habilitación de

los displays.

Page 95: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 95 de 242

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 habilitación de los displays como los pines del bus de datos, Niple

controla que no se repitan los pines seleccionados, dado que esto produciría un error en el proceso de mul-

tiplexado.

Al repetir alguno de los pines solicitados, Niple los presenta en color rojo y deshabilita el botón “Ingresar”.

Una vez ingresados todos los parámetros necesarios. Puede consultar el esquema de conexi ón que se

muestra en la solapa “esquema”.

Puede realizar una impresión del esquema de conexión haciendo un clic en el boto “Imprimir”.

Por último presione el botón “Ingresar”.

Page 96: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 96 de 242

Multiplexado (4511) Este módulo permite visualizar valores en displays de 7 segmentos mediante u codificador CD4511 para

generar la combinación binaria correspondiente a cada valor.

Una de las

ventajas de este tipo

de visualización es

que solo se requieren

4 bits para el bus da

datos a diferencia de

los 7 bits requeridos

para la visualización

sin codificador.

Niple le permite

utilizar hasta 8

displays conectados

en paralelo.

Primero

seleccione el tipo de

display a utilizar.

Una vez seleccionado el tipo de display a utilizar, Niple le presenta información acerca del estado de los

puertos. Esta información es importante a la hora de seleccionar los pines de conexión de los displays.

Si algún puerto aún no ha sido configurado, Niple le ofrece la oportunidad de configurarlo. Pero lo reco-

mendable es

cancelar el cuadro

de visualización en

displays, configurar

el puerto en el inicio

del programa y

volver cargar el

módulo de

visualización por

displays.

Luego le solicita

que seleccione la

cantidad de displays

a utilizar esto es,

entre 2 y 8.

A continuación

debe seleccionar los

Page 97: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 97 de 242

valores a visualizar en cada display.

En cada display se puede visualizar el valor de un registro o un valor literal.

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 utilización del codificador CD4511

solo puede visualizar valores numéricos. Es decir

que no puede crear sus propios símbolos ya que el

codificador CD4511 no reconoce dichos códigos.

Por esto solo puede visualizar el valor que

contiene un registro: este valor puede ser variable

y no requiere la codificación 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 corres-

pondientes al multiplexado, es decir, los pines a través 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 común de cada display.

Niple presenta como opciones válidas, solo los pines de los puertos que se encuentra configurados como

salida.

Page 98: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 98 de 242

Una vez seleccionados los pines de habilitación de cada display, Niple le solicita que seleccione los pi-

nes correspondientes al bus de datos. En este caso se trata de 4 pines los cuales son conectados al

CD4511.

El criterio de selección de los pines del bus de datos es el mismo que para los pines de habilitación de

los displays.

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 habilitación de los displays como los pines del bus de datos, Niple

controla que no se repitan los pines seleccionados, dado que esto produciría un error en el proceso de mul-

tiplexado.

Al repetir alguno de los pines solicitados, Niple los presenta en color rojo y deshabilita el botón “Ingresar”.

Page 99: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 99 de 242

Una vez ingresados todos los parámetros necesarios. Puede consultar el esquema de conexión que se

muestra en la solapa “esquema” .

Puede realizar una impresión del esquema de conexión haciendo un clic en el boto “Imprimir”.

Por último presione el botón “Ingresar”.

Page 100: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 100 de 242

Pantalla LCD Niple le permite controlar más de 1 pantalla LCD de manera simultánea 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 distin-

tos pines del microcontrolador. Niple administra las rutinas de control de manera automática. Ud., solo de

indica que mensaje desea visualizar en cada una de las pantallas LCD.

En la versión de Niple para

PIC 16F6xx puede controlar

hasta 8 pantallas LCD y en la

versión Para PIC 16F84 puede

controlar hasta 7 pantallas

LCD.

Como siempre, en Niple,

tanto las configuraciones de

las pantallas LCD, las configu-

raciones y diseños de los de

los mensajes y los comandos

se realiza de manera visual y

en alto nivel de programación.

Niple genera todo el código

Assembler necesario de

manera automática.

Principales características:

Page 101: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 101 de 242

• Control de múltiples Pan tallas LCD de manera simultanea.

• Configuración visual de mensajes.

• Bus de datos a 4 y 8 bits configurable por el usuario.

• Mensajes con valores variables.

• Conversión automática de formato numérico a código ASCII para valores variables.

• Edición y ajuste de mensajes y comandos de manera visual.

• Envío de comandos al LCD:

ü Apagar la Pantalla

ü Encender la Pantalla

ü Limpiar la pantalla

ü Ubicación del cursor a Inicio

ü Ubicación del cursor

ü Configuración del Cursor

ü Desplazamiento del cursor

ü Desplazamiento de la Pantalla

• Envío de caracteres al LCD de manera independiente de un mensaje (para ingreso de da-

tos)

• Código Assembler optimizado: Cuando actualiza un mensaje en un LCD, si el mensaje con-

tiene 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 ejecución del pro-

grama.

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. Visualiza r el mensaje

5. Opcionalmente se pueden enviar comandos o caracteres independientemente de un mensaje.

Configurar LCD Una vez configurado el puerto donde conectar el LCD debe proceder a configurar el LCD de la siguiente

manera:

Seleccione el bloque al cual vincular el nuevo bloque de configuración de LCD.

Ingrese al árbol de herramientas en:

Insertar/Rutinas Básicas/Visualización/Pantalla LCD/Configurar LCD

Page 102: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 102 de 242

Al realizar un doble clic en “Configurar LCD” se presenta la pantalla “Configuración de LCD”.

En Niple, la configuración de un LCD consiste en seleccionar de qué manera será conectado el LCD al

microcontrolador.

La configuración de un LCD se realiza sólo 1 vez.

Dado que Niple puede controlar más de 1 LCD de manera simultanea, en esta pantalla se presenta el

número de LCD que está siendo configurado.

Primero debe seleccionar el tamaño 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 código generado como en le tiempo de ejecución del programa y, por el contrario, los 4 pines

que se ahorra pueden ser de gran importancia.

Una vez seleccionado el tamaño del bus de datos, debe seleccionar los pines a los cuales conectar el

LCD.

Page 103: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 103 de 242

Si selecciona el bus de datos a 4 bits, Niple le ofrece la posibilidad de utilizar los 4 pines de mayor o me-

nor peso de un mismo puerto. Esto simplifica el código Assembler generado.

Además, 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.

Page 104: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 104 de 242

A continuación 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 se-

leccionado.

Una vez seleccionados los pines correspondientes al bus de datos, presione el botón “Asignar”

Por último debe seleccionar los pines del control del LCD. Para esto haga un clic en la casilla de verifica-

ción correspondiente a cada pin de control (RS, RW, E).

Cuando activa la casilla de verificación de un pin de control, Niple le muestra información 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 botón “Asignar”.

Una vez ingresados todos los datos solicitados,

presione el botón Insertar y en el diagrama de flujo ac-

tual se insertara un bloque de tipo “configuración” con

las características seleccionadas.

Si desea modificar alguna de éstas cara cterísticas,

seleccione el bloque y presione la tecla “Enter”. O bien

puede seleccionar el bloque, hacer un clic con el

botón derecho del mouse y seleccionar la opción

“Editar Bloque”.

La configuración de la pantalla LCD se realiza solo

una vez en un proyecto.

Page 105: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 105 de 242

Utilizando más de una pantalla LCD Niple le permite controlar más de una pantalla LCD. Para esto, los pines correspondientes al bus de da-

tos 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 habi-

lita e inhabilita las distintas pantallas LCD de manera automática de acuerdo al programa que Ud. está des-

arrollando.

Si desea utilizar más de un LCD, el mismo debe ser configurado. 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 configuración 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 permanecerán inhabilitadas al cargarse la pantalla “Configurar

LCD”. Sólo deberá seleccionar el pin correspondiente al control “E” para el nuevo LCD.

Page 106: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 106 de 242

Seleccione el BIT corres pondiente al pin de control E del LCD.

Por último presione la el botón “Ingresar”.

Generar un nuevo mensaje

La metodología de visualización de

mensajes en Niple consiste en generar un

mensaje. Esto implica configurar la pantalla,

el cursor y diseñar el mensaje propiamente

dicho.

Una vez “diseñado” el mensaje, puede ser

aplicado a cualquier LCD mediante el módulo

de visualización de mensajes.

Para generar un nuevo mensaje ingrese al

árbol de herramientas a la sección:

Insertar/Rutinas Básicas/Visualiza-

ción/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

mensaje.

Page 107: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 107 de 242

Además muestra el número de mensaje correspondiente.

Una vez ingresado el nombre, Niple nuestra las opciones de configuración de pantalla.

Por defecto la opción “Visualización 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 algún motivo Ud. desea que el

mensaje se cargue en el LCD pero que

permanezca invisible para luego mostrarlo

con el comando “Encender Pantalla” (ver

envío de comandos más adelante),

seleccione la opción “Caracteres

Invisibles”.

Además la opción “Limpiar pantalla” se

presenta como activada.

Esta opción realiza una limpieza de la

pantalla antes de visualizar el mensaje.

Esto significa que será borrado

completamente cualquier mensaje que

haya sido visualizado antes de mostrar el actual mensaje.

Si esta opción se inhabilita, Niple no realiza la limpieza de la pantalla y existe la posibilidad de “superpo-

sición de mensajes”.

Al inhabilitar la opción “Limpiar Pantalla” Niple advierte lo anteriormente mencionado mediante el siguien-

te mensaje.

Dado que el objetivo de Niple es minimizar al máximo la posibilidad de error, ofrece esta opción como

habilitada para que realice la limpieza de la pantalla antes de visualizar el mensaje actual.

La limpieza de la pantalla incluye la ubicación del cursor al inicio del LCD, esto es, en la línea 1, carácter

1. Por esto, si la opción “Limpiar Pantalla” se encuentra activada, entonces, la opción “Ubicar el cursor en el

Inicio” se encuentra inhabilitada dado que la limpieza de pantalla incluye esta función.

Page 108: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 108 de 242

Por esto, si la opción “Limpiar Pantalla” se desmarca, se activa la opción “Ubicar el cursor”.

A continuación debe seleccionar la configuración del cursor.

Si seleccione la opción “Cursor

Invisible”. La opción “Visualización

de parpadeo” se configura de

manera automática como “Sin

parpadeo”.

Seleccione la configuración del

cursor y del parpadeo.

Una vez seleccionadas todas

las opciones de la configuración

del mensaje, se activa la “Solapa

Mensaje”.

A continuación 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.

Page 109: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 109 de 242

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

to ingresado. De esta manera puede ajustar la visualización del texto.

En la siguiente imagen, el texto ha sido desplazado hacia la derecha para ajustarlo al centro de la panta-

lla.

Page 110: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 110 de 242

El botón “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 va-

riable. Se presentará la pantalla de selección 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 número, antes de ser enviado al LCD debemos convertirlo a su corres-

pondiente código ASCII ya que el LCD solo puede mostrar caracteres ASCII. Además si el número es mayor

a 9 debemos enviar realizar la conversión 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 número

a código ASCII de manera automática. Para esto debe

seleccionar la opción “Convertir valor numérico a código

ASCII”. La cual se encuentra seleccionada de manera

predeterminada.

Si lo que desea enviar no corresponde a un valor

numérico sino a un código ASCII que Ud. ya tiene defi -

nido en el programa, debe marcar la opción “No

convertir valor numéri co a código ASCII”.

Al ingresar la variable, la misma se presenta en la grilla de mensaje como un símbolo de interrogación y

de color celeste. Se muestra como un símbolo de interrogación dado que Niple no puede “predecir” que va-

lor será mostrado en la correspondiente variable.

Page 111: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 111 de 242

Si desea consultar a qué valor corresponde a una variable. Haga un clic sobre la celda donde se encuen-

tra la variable y Niple le mostrará a que valor corresponde la misma como lo muestra la imagen anterior.

El formato del texto pu ede ser uno de los 2 siguientes:

1) ? = ASCII(Nombre_Registro):

Esto significa que la variable

corresponde al carácter 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 código

ASCII.

Por último si ha configurado el cursor como “Visible”, Niple le solicita que ingrese la ubicación donde

quiere visualizar el cursor.

Page 112: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 112 de 242

Por último presione el Botón “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” desde

cualquier parte del

programa y puede ser

visualizado en cualquier

LCD en caso de estar

utilizando más de 1 LCD.

Además, para minimizar

al máximo las posibilidades

de error de visualización,

Niple incluye la configura-

ción 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

configuración de la pantalla, o la configuración y ubicación del cursor cada vez que desea visualizar el men-

saje. 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 Básicas/Visualización/Pantalla LCD /Mostrar Mensaje

Se presentará la pantalla “Mostrar un mensaje en LCD”.

Page 113: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 113 de 242

Primero debe seleccionar el LCD en el cual debe desea visualizar el mensaje y a continuación indica el

nombre del mensaje a visualizar. De esta manera un mismo mensaje puede ser visualizado en cualquier

LCD.

Al presionar el botón “Ingresar”, Niple ingresa 2 bloques. En el primer bloque se declara el LCD seleccio-

nado como “LCD Actual”. El segundo bloque corresponde a la visualización del mensaje (llamada a rutina

de usuario). El mensaje será visualizado en el LCD que esté definido como actual.

Optimización del código Assembler

Niple incluye un algoritmo de optimización de para

ahorrar recursos en tiempo de ejecución (del PIC). Niple

administra los mensajes que están siendo visualizados

en cada LCD y “sabe” en todo momento que mensaje se

está visualizando en cada LCD. Incluso si un proyecto

incluye solo 1 LCD, Niple sabe qué menaje está siendo

visualizando en el LCD.

Cuando desea visualizar un mensaje en un LCD que

ya esta mostrando en dicho mensaje, Niple solo ac-

tualiza 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 ejecución.

Lo mismo ocurre con la configuración de la pantalla y

la configuración y ubicación del cursor. Solo se ejecutan

é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 aún más el manejo de las pantallas LCD, algunos comandos le permite realizar reconfigura-

ciones de pantalla o cursor.

Los comandos disponibles son los siguientes.

• Apagar la pantalla: Este comando apaga los caracteres. No incluye opciones.

Page 114: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 114 de 242

• Encender la pantalla: Visualiza los caracteres. Opcionalmente puede ubicar y reconfi-

gurar 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 renglón 1, cará c-

ter 1. Este comando no incluye opciones.

• Ubicar el cursor: Ubica el cursor en la posición que indique el usuario. Opcionalmente

puede reconfigurar la visualización del cursor.

• Configurar el cursor: Permite reconfigurar el cursor. Este comando requiere que nec e-

sariamente configure la visualización de los caracteres.

Page 115: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 115 de 242

• Desplazar el cursor: Permite realizar un desplazamiento del cursor hacia la izquierda o

hacia la derecha. Opcionalmente puede ingresar un retardo entre cada desplazamiento.

• Desplazar la pantalla: Permite realizar un desplazamiento de la pantalla hacia la iz-

quierda o hacia la derecha. Opcionalmente puede ingresar un retardo entre cada des-

plazamiento. Este comando produce un efecto visual de desplazamiento del mensaje.

Enviar caracteres Además de configurar la visualización de mensajes, Niple le permite enviar caracteres independiente-

mente de un mensaje.

Esto es muy común cuando se realizan proyectos con ingreso de datos, los cuales son mostrados en la

pantalla LCD. Por ejemplo; Ud. diseña el mensaje de solicitud de ingreso de datos. En general, en estos ca-

sos, configura el cursor como visible e intermitente y lo ubica en la posición donde el usuario debe “ingresar

el mensaje” y luego espera el ingreso de los datos. Cada vez que el usuario ingresa un dato, el microcontro-

lador lo captura, por interrupción por ejemplo, y lo envía a la pantalla LCD donde el usuario puede visualizar

los datos que esta ingresando.

Este “envío” de datos al LCD, corresponde a la

función de Niple de envío de carácter .

Niple le permite enviar un carácter o un texto.

Además le permite enviar los caracteres a la

actual posición del cursor o definir una posición de

visualización determinada. Si necesita enviar un

valor numérico guardado en un registro, Niple le

ofrece la posibilidad de convertirlo a código ASCII

de manera automática.

Page 116: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 116 de 242

Teclado

Teclado Matricial El módulo 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 interrupción por RB4 -7 se encuentre activada. Si la interrupción no se encuentra ac-

tivada no permite en ingreso del módulo.

Dado que se utiliza la interrupción por RB4-7, Niple requiere que los pines correspondientes a las co-

lumnas del teclado matricial sean conectados a los pones RB4-7, mientras que le permite seleccionar libre-

mente los la conexión 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.

Page 117: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 117 de 242

Memorias EEPROM I2C

Leer Memoria EEPROM I2C Para leer datos de memorias EEPROM de la familia 24Cxxx.

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, Niple le muestra la cantidad

de registros de 8 bits que contiene el

modelo seleccionado.

Luego debe seleccionar los pines

de señal 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

número de dispositivo al cual desea

acceder.

Recuerde que puede conectar va-

rios dispositivos en paralelo formando

una red, en la cual, a cada dispositivo

se le asigna un numero. Este número

de dispositivo se configura conectado

los pines correspondientes de cada

dispositivo. La cantidad de dispositi-

vos que puede incluir en una red de-

pende del modelo de memoria que

esta utilizando. Niple controla de ma-

nera automática la cantidad de dispo-

sitivos que puede conectar en función

del modelo seleccionado.

Page 118: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 118 de 242

Luego debe seleccionar la dirección de memoria que desea leer desde la memoria EEPROM.

Primero debe selecciona el tipo de dirección, la cual puede ser “Fija” o “Variable”.

Si selecciona el tipo de dirección “Fija” debe ingresar la posición de memoria a leer en formato decimal.

Niple controla que la dirección ingresada no supere el límite máximo de cantidad de regist ros que contiene

le modelo seleccionado. Mediante este tipo de acceso (por dirección fija) el microcontrolador accederá a la

dirección ingresada cada vez que se ejecute el bloque actual.

Si selecciona el tipo de dirección

“Variable” debe seleccionar el registro

que contiene el valor correspondiente a

la posición de memoria que desea leer.

En este caso, Niple no controla que

la dirección ingresada no supere el

límite máximo 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

dirección variable) el microcontrolador

accederá a la dirección correspondiente al valor que contiene el registro cada vez que se ejecute el bloque

actual.

Una seleccionada la dirección a leer, debe seleccionar el registro donde guardar el dato obtenido desde

la memoria.

Por último, puede ingresar un comentario.

Page 119: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 119 de 242

Una vez ingresados los parámetros

requeridos, puede visualizar el

esquema de conexión.

Por último, presione el botón

“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 herramientas 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 señal 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

número de dispositivo al cual desea

acceder.

Page 120: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 120 de 242

Recuerde que puede conectar varios dispositivos en paralelo formando una red, en la cual, a cada dis-

positivo se le asigna un numero. Este número de dispositivo se configura conectado los pines correspon-

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 automática la

cantidad de dispositivos que puede

conectar en función del modelo

seleccionado.

Luego debe seleccionar la

dirección de memoria que desea leer

desde la memoria EEPROM.

Primero debe selecciona el tipo de

dirección, la cual puede ser “Fija” o

“Variable”.

Si selecciona el tipo de dirección

“Fija” debe ingresar la posición de

memoria a leer en formato decimal.

Niple controla que la dirección ingresada no supere el límite máximo de cantidad de registros que contiene

le modelo seleccionado. Mediante este tipo de acceso (por dirección fija) el microcontrolador accederá a la

dirección ingresada cada vez que se ejecute el bloque actual.

Si selecciona el tipo de dirección “Variable” debe seleccionar el registro que contiene el valor correspon-

diente a la posición de memoria que desea leer.

Page 121: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 121 de 242

En este caso, Niple no controla que la dirección ingresada no supere el límite máximo de cantidad de re-

gistros que contiene el modelo seleccionado dado que no se puede predeterminar que valor tendrá el regis-

tro seleccionado al ejecutarse el programa.

Mediante este tipo de

acceso (por dirección variable)

el microcontrolador accederá a

la dirección correspondiente al

valor que contiene el registro

cada vez que se ejecute el

bloque actual.

Una vez seleccionada la

dirección 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 opción “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 opción “un

Registro”, debe seleccionar el

registro que contiene el valor a

grabar en la memoria.

Page 122: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 122 de 242

Por último, puede ingresar un comentario.

Una vez ingresados los parámetros requeridos, puede visualizar el esquema de conexión.

Page 123: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 123 de 242

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, Niple soporta la

memoria RAM PCF8570 pero en

futuras versiones se irán agregando

más modelos.

Luego debe seleccionar los pines

de señal 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

número de dispositivo al cual desea

acceder.

Recuerde que puede conectar

varios dispositivos en paralelo fo r-

mando una red, en la cual, a cada dis-

positivo se le asigna un número. Este

número 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 automática la cantidad de

dispositivos que puede conectar en función del modelo seleccionado.

Page 124: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 124 de 242

Luego debe seleccionar la dirección de memoria que desea leer desde la memoria RAM.

Primero debe selecciona el tipo de dirección, la cual puede ser “Fija” o “Variable”.

Si selecciona el tipo de dirección “Fija” debe ingresar la posición de mem oria a leer en formato decimal.

Niple controla que la dirección ingresada no supere el límite máximo de cantidad de registros que contiene

le modelo seleccionado. Mediante este tipo de acceso (por dirección fija) el microcontrolador accederá a la

dirección ingresada cada vez que se ejecute el bloque actual.

Si selecciona el tipo de dirección

“Variable” debe seleccionar el registro

que contiene el valor correspondiente

a la posición de memoria que desea

leer.

En este caso, Niple no controla que

la dirección ingresada no supere el

límite máximo 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 dirección variable) el microcontrolador accederá a la dirección corres-

pondiente al valor que contiene el registro cada vez que se ejecute el bloque actual.

Una seleccionada la dirección a leer, debe seleccionar el registro donde guardar el dato obtenido desde

la memoria.

Por último, puede ingresar un comentario.

Page 125: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 125 de 242

Una vez ingresados los parámetros

requeridos, puede visualizar el

esquema de conexión.

Por último, presione el botón “Ingre-

sar“ 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 señal de reloj y de datos corres-

pondientes al bus I2C. Primero selec-

cione el puerto y luego el pin corres-

pondiente.

Una vez seleccionados los pines

del bus I2C, debe seleccionar el

número 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 número de dispositivo se con-

figura conectado los pines correspondientes de cada dispositivo. La cantidad de dispositivos que puede

Page 126: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 126 de 242

incluir en una red depende del modelo

de memoria que esta utilizando. Niple

controla de manera automática la

cantidad de dispositivos que puede

conectar en función del modelo

seleccionado.

Luego debe seleccionar la dirección

de memoria que desea leer desde la

memoria RAM.

Primero debe selecciona el tipo de

dirección, la cual puede ser “Fija” o

“Variable”.

Si selecciona el tipo de dirección

“Fija” debe ingresar la posición de

memoria a leer en formato decimal.

Niple controla que la dirección

ingresada no supere el límite máximo

de cantidad de registros que contiene le modelo seleccionado. Mediante este tipo de acceso (por dirección

fija) el microcontrolador accederá a la dirección ingresada cada vez que se ejecute el bloque actual.

Si selecciona el tipo de dirección “Variable” debe seleccionar el registro que contiene el valor correspon-

diente a la posición de memoria que

desea leer. En este caso, Niple no

controla que la dirección ingresada no

supere el límite máximo de cantidad

de registros que contiene el modelo

seleccionado dado que no se puede

predeterminar que valor tendrá el re-

gistro seleccionado al ejecutarse el

progr ama.

Mediante este tipo de acceso (por dirección variable) el microcontrolador accederá a la dirección corres-

pondiente al valor que contiene el registro cada vez que se ejecute el bloque actual.

Page 127: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 127 de 242

Una vez seleccionada la dirección 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 opción “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 opción “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 parámetros

requeridos, puede visualizar el esquema de

conexión.

Page 128: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 128 de 242

Reloj de Tiempo Real

Configurar el PCF8583 El reloj de tiempo real PCF8583 controla fechas y horas de manera autónoma y precisa, sin necesidad

que el microcontrolador se “ocupe” de esto ahorrando, código 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 muestra en la

imagen de la derecha.

Se presenta la pantalla “Configuración Reloj / Calendario PCF8583

(I2C)”.

Primero debe seleccionar los pines de señal

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 número de dispositivo al cual

desea acceder.

Recuerde que puede conectar varios disposi-

tivos en paralelo formando una red, en la cual, a

cada dispositivo se le asigna un numero. Este

número de dispositivo se configura conectado los

pines correspondientes de cada dispositivo.

Puede conectar un máximo de 2 dispositivos en

un a red.

Tenga en cuenta que código de dispositivo

del PCF8583 es el mismo que el código de las

memorias EEPROM. Por esto, cuando diseña

una red I2C compuesta por memorias EEPROMs

y reloj PCF8583, debe asignar los números 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”.

Page 129: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 129 de 242

Puede configurar cualquiera de estos parámetros de manera independiente, es decir, que no debe confi -

gurar todos los parámetros, sino, sólo los que necesite.

Configuración de Fecha Para configurar la Fecha actual, ingrese a la “Ficha” con el nombre “Fecha”.

Seleccione los parámetros que desea configurar (Día, Mes, Año, Día de la Semana) marcado las opcio-

nes correspondientes. Cada uno de estos datos puede ser de tipo “Fijo” o “Variable”.

Los valores a ingresar pueden ser los siguientes según el tipo de dato solicitado:

• Día:

- Fijo: entre 01 y 31 inclusive.

- Variable : un registro que contiene el valor del día.

• Mes

- Fijo: entre 01 y 12 inclusive.

- Variable : un registro que contiene el valor del mes.

• Año

- Fijo: entre 00 y 03 inclusive.

- Variable : un registro que contiene el valor del año.

• Día Semana

- Fijo: entre Domingo y Sábado.

- Variable : un registro que contiene el valor del día de la semana.

La siguiente imagen muestra una configuración de fecha “Fija”:

Page 130: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 130 de 242

La siguiente imagen muestra una configuración de fecha “Variable”:

Configuración de Hora Para configurar la Hora actual, ingrese a la “Ficha” con el nombre “Hora”.

Seleccione los parámetros 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 según 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, pue-

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

Page 131: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 131 de 242

La siguiente imagen muestra una configuración de Hora “Fija”:

La siguiente imagen muestra una configuración de Hora variable:

Page 132: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 132 de 242

Configuración de Alarmas El PCF8583 incluye un “Pin de Alarma” que el cual se pone en estado “Bajo” (0V) cada vez que se pro-

duce 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 Temporización.

La configuración 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 día de la semana con el alguno

de los 2 días 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 según el tipo de dato solicitado:

Alarma Diaria :

• Horas

- Fijo: depende del formato de hora seleccionado. Para el formato de 12 horas, puede seleccio-

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

Page 133: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 133 de 242

Alarma Semanal:

• Dia1 y Dia2

- Fijo: entre Domingo a Sábado.

- Variable: un registro que contiene el valor del día seleccionado. Debe generar el código co-

rrespondiente al día. Los códigos correspondientes a los días son los siguientes:

Domingo b’00000001’

Lunes b’00000010’

Martes b’00000100’

Miércoles b’00001000’

Jueves b’00010000’

Viernes b’00100000’

Sábado b’01000000’

Alarma por Fecha

• Día

- Fijo: entre 01 y 31 inclusive.

- Variable : un registro que contiene el valor del día 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 seleccio-

nar 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 día seleccionado. Debe generar el código co-

rrespondiente al día. Los códigos correspondientes a los días son los siguientes:

Page 134: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 134 de 242

La configuración de alarma por Temporización le permite realizar temporización independientemente de

la fecha, por ejemplo, 5 segundos, 35 minutos ó 3 horas:

El tipo de temporización puede ser “Fijo” ó “Variable”:

La siguiente imagen muestra una alarma por temporización Fija.

La siguiente imagen muestra una temporización Variable:

Page 135: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 135 de 242

Comandos

Puede enviar comandos al reloj PCF8583. Para esto, ingrese a la solapa “Comandos” y seleccione la

opción “Comandos”.

Luego marque las opciones correspondientes a los comandos que desea enviar al r eloj.

Page 136: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 136 de 242

Una vez ingresados los parámetros requeridos, puede visualizar el esquema de conexión.

Leer PCF8583 Para leer la información 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 señal 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

número 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 número de dispositivo se configura

conectado los pines correspondientes de cada

dispositivo. Puede conectar un máximo de 2

dispositivos en un a red.

Tenga en cuenta que código de dispositivo

del PCF8583 es el mismo que el código de las

memorias EEPROM. Por esto, cuando diseña

una red I2C compuesta por memorias

EEPROMs y reloj PCF8583, debe asignar los

números de dispositivos como si se tratase del

mismo tipo de dispositivos.

Page 137: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 137 de 242

Para leer la “Fecha Actual”, ingrese a la sección “Fecha”.

Seleccione los datos que desea consultar (Día, Mes, Año, Día de la Semana) y luego seleccione el regis-

tro 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 sólo

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 sólo los datos que necesita.

Page 138: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 138 de 242

Por último, puede consultar el esquema de conexión.

Registro Desplazamiento

Ingresar valor y rotar Esta función rota el valor de un BIT en un registro que puede contener hasta 64 bits de tamaño, el cual

es tratado como si fuese un registro común. Cada vez que se produce la condición de reloj, desplaza un

1(uno) o un 0 (cero), dependiendo de la condición 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 desplaza-

miento para el control de una máquina envasadora de estuches, que contiene 64 estuches en todo su largo,

y la posición 61 corresponde al pateador de estuches fuera de peso. Se podría decir que cada vez que esté

activada la expulsión de un producto fuera de peso y este BIT sea uno, el sistema de expulsión funcionará.

1) En Tamaño del registro, escriba el número de bits a utilizar, con un máximo de 64.

2) En Ingrese los datos de la posición escriba el nombre al BIT que desee y complete el cuadro co-

rrespondiente a Función.

3) Repita esta operación hasta declarar la cantidad de bits que desee.

4) Seleccione la señal de Reloj , que producirá la rotación de todos sus bits.

5) Elija si el registro se va a rotar cuando el BIT reloj sea 1(uno) o 0(cero).

Page 139: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 139 de 242

6) Seleccione que condición se tiene que cumplir para que sea introducido un 1(uno) al registro.

7) Haga clic en Ingresar .

Las casillas de verificación “Y” o “O” corresponden a las operaciones lógicas AND y OR inclusiva corres-

pondientemente.

Page 140: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 140 de 242

Interrupciones En ésta categoría se encuentran todas las funciones de configuración y manejo de las interrupciones.

Niple presenta las interrupciones disponibles de acuerdo al modelo de PIC que se está utilizando.

Configurar Interrup. Para consultar la configuración de las interrupciones consulte la sección correspondiente a las rutinas

específicas de cada versión de Niple.

Fin de la Interrupción Inserta en el diagrama el símbolo correspondiente a fin de interrupción. Este solo se podrá insertar en el

entorno de interrupción, si intenta insertarlo en otro entorno, Niple muestra un mensaje de error y no llevará

a cabo la inserción del símbolo.

Para cargar el símbolo, haga doble clic sobre el menú Fin de interrupción .

Rutinas de Usuario Ud. puede diseñar sus propias funciones o procedimientos para solucionar un problema en particular

(siempre combinando distintas rutinas básicas) y luego llamarlos desde distintas partes del programa (sub-

rutinas). Esto le permite por un lado, la creación de funciones o procedimientos personalizados y por otro

lado, la optimización del código Assembler generado, ya que las rutinas de usuario sólo se escriben una vez

y luego se insertan “llamadas” a las mismas. Esta categoría incluye las funciones de declaración e inserción

de llamadas a rutinas de usuario.

Page 141: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 141 de 242

Niple para PIC 12F6xx

Características técnicas de los PIC 12F6xx

Inicialmente todos los microcontroladores incorporaron la arquitectura de Von Neumann, la cual se ca-

racteriza por disponer de una sola memoria principal donde se almacenan los datos y las instrucciones. A

esta memoria se accede a través de un sistema de buses único (direcciones, datos y control).

Los microcontroladores de la familia 12F6xx, al igual que el resto de los microcontroladores de la actuali-

dad, están diseñados con la arquitectura Harvard. La arquitectura Harvard dispone de dos memorias inde-

pendientes; una que contiene sólo 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 (lec-

tura o escritura) simultáneamente en ambas memorias.

Entre las principales características del PIC 16F84 podemos destacar:

• Voltaje de alimentación: 5VCC.

• CPU RISC

• Circuito Integrado de 8 pines.

• 6 Pines de configurables como Entrada o Salida.

• Frecuencia operación máxima: 20 Mhz.

• Memoria Flash:

ü 12F629 = x Kbytes

ü 12F675 = x Kbytes

• Memoria de Datos:

ü 12F629 = x Bytes

ü 12F675 = x Bytes

• Memoria de Datos EEPROM:

ü 12F629 = x Bytes

ü 12F675 = x Bytes

• 1 Temporizador interno de 8 bits (TMR0).

• 1 Temporizador interno de 16 bits (TMR1).

• 1 Comparador Analógico

• Conversores Analógico-Digital:

ü 12F675 = 4 canales

Como mencionamos anteriormente, para que un microcontrolador funcione es necesario grabarle un

programa en su interior. Este programa será leído y ejecutado línea a línea por la CPU. Para que la CPU

funcione, debe contar con un generador de impulsos de reloj externo que sincroniza el funcionamiento de

Page 142: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 142 de 242

todo el sistema. Los micro controladores de La línea 12F6xx incluyen un oscilador interno lo cual permite uti -

lizar el PIC sin necesidad de un oscilador externo.

En general se utiliza un cristal como origen de la señal de reloj externa. El microcontrolador ejecuta cada

instrucción (1 ciclo de programa) a ¼ de la velocidad del cristal utilizado. En general, un ciclo de programa

corresponde a una línea de código Assembler .

Por ejemplo, si utilizamos un cristal de 4 Mhz, el microcontrolador estará ejecutando el código a una ve-

locidad de 1 Mhz. Es decir que, ejecutará 1.000.000 de líneas de código del programa por segundo. Por lo

tanto, cada línea de código 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.

Page 143: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 143 de 242

IMPORTANTE: Procedimiento para programación de los PIC 12F6xx. Los micros de las familia de PIC 12F6xx requieren un procedimiento especial para ser programados.

Estos micros requieren de un valor de calibración ubicado en final de la memoria de progr ama que per-

mite garantizar la correcta calibración del oscilador interno.

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

Por esto:

Es necesario recuperar este valor antes de utilizar por utiliza r por primera el micro .

A continuación, vamos a utilizar el PIC12F675 y el software de programación IcProg.

Seleccione el modelo correcto de PIC. En este caso el 12F675.

El valor de calibración puede variar de un chip a otro. Por esto, debe comenzar realizando una lectura de

la memoria flash del micro. Para ello, presione el botón para realizar el proceso de lectura .

Al finalizar la lectura del micro, se obtiene el contenido de la memoria flash (memoria de programa). Da-

do que aún el micro no ha sido utilizado, todas las posiciones de memoria deben contener el valor 3FFF a

excepción de la última dirección (0x03FF).

Esta última dirección de memoria flash contiene el valor de calibración del microcontrolador (en formato

hexadecimal).

En nuestro ejemplo el valor de calibración del PIC actualmente utilizado es 0x3428.

Es aconsejable tomar nota del valor de calibración. Y mejor aún, puede grabar el este valor pegando un

papel en la parte inferior del PIC. Este procedimiento es recomendable cuando trabaja con varios PIC. Re-

cuerde que el código de calibración puede variar de un PIC a otro.

Cargue el archivo .HEX que desea programar en ICProg.

Page 144: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 144 de 242

Al realizar esto, el valor de calibración del PIC16F675 fue sustituido por el valor hexadecimal por defecto

$3FFF.

Haga “doble clic” sobre esta última posición de memoria con el fin de asignar el valor de calibración corres-

pondiente.

En la zona de valor hexadecimal , ingrese el valor de calibración anteriormente obtenido .

Para nuestro ejemplo, el valor corresponde a 3428.

Presione el botón “OK”.

Ahora el programa esta listo para grabar el PIC.

En la fase de programación, ICPROG comienza leyendo la memoria del PIC con el fin de comparar el

contenido de la última dirección con el valor de calibración ingresado manualmente.

Page 145: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 145 de 242

Si el código de calibración que contiene el PIC es el mismo que el que se encuentra en la última posición

de memoria del archivo a grabar, continúa la grabación y por último muestra el mensaje que el PIC ha sido

grabado correctamente y con esto queda finalizada la grabación del PIC.

Si el código de calibración que contiene el PIC no es el mismo que se encuentra la última posición de

memoria del programa a grabar, se muestra un mensaje indicado este problema y pregunta si desea so-

brescribir el valor que actualmente se encuentra en el PIC con el valor contenido en la ultima posición del

archivo a grabar.

Si responde “SI”, se graba el valor de calibración contenido en la ultima posición del archivo.

Si responde “NO”, se graba el programa pero no se cambia el valor de configuración del PIC.

Si Ud. no está completamente seguro que el valor contenido en la última posición del archivo correspon-

de al valor de calibración del PIC, seleccione la opción “Cancelar” vuelva a realizar la lectura de la memoria

del micro para obtener el valor de calibración.

Para grabar el mismo programa en distintos microcontroladores, debe actualizar el valor de calibración

de cada PIC en la última posición de memoria del archivo a grabar.

Page 146: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 146 de 242

Módulos específicos de Niple para PIC 12F6xx

Crear un nuevo proye cto. Para crear un nuevo proyecto 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

registros, los bits, memoria

EEPROM, periféricos,

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 le solicita que ingrese los siguientes datos:

Datos del Proyecto:

• Nombre del proyecto: Nombre descriptivo del proyecto (No es el nombre de Archivo).

• Descripción del proyecto: Ingrese una descripción 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.

Page 147: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 147 de 242

Si bien los datos del proyecto son opcionales se recomienda ingresar estos datos para la correcta identi -

ficación del proyecto en el futuro.

Datos del archivo

Nombre del archivo: Niple utiliza la extensión .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 re-

petir el nombre de un archivo de proyecto.

Una vez ingresados todos los datos necesarios, presione el botón “Crear”.

Al crear un nuevo proyecto se cargan todas las características del modelo de PIC seleccionado.

Además se genera de manera automática 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 borra-

do. Y cada entorno de Programa Principal debe tener un bloque de “Inicio” de Programa.

Page 148: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 148 de 242

Declaración de Registros En Niple la declaración de registros se realiza de manera visual trabajando directamente sobre el mapa

de memoria.

Para ingresar a la pantalla de declaración de

registros, seleccione el menú

“Declaración\Registros” o por medio de la

combinación de teclas CTRL+R.

En esta pantalla se presenta el mapa de

memoria.

La línea 12F6xx cuenta con 2 bancos de

memoria, las cuales son presentadas en 1 “solapa”.

Cada registro está identificado con una “dirección

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 configuración y control del sistema. Estos registros se declaran de manera

automática en el momento de crear el proyecto y no pueden ser borrados. Cada uno de estos registros

cumple con una función predeterminada.

Registros de Usuario (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.

Declaración de un Registro de Usuario Para declarar un registro de usuario debe hacer un clic en una posición de memoria libre correspondien-

te a los registros de tipos “Usuario” (color verde). Al hacer clic, se le solicita que ingrese el nombre del regis-

tro 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 confundir-

se con un nombre de puerto.

• Que no contenga caracteres no válidos.

• Que el nombre no contenga más de 20 caracteres de largo.

• Que el nombre no corresponda a una instrucción o comando.

Page 149: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 149 de 242

Declaración de Bits En Niple la declaración de Bits se realiza de manera totalmente visual trabajando directamente sobre el

mapa de memoria.

Puede ingresar a la pantalla de declaración de bits a través del menú “Declaración\Bits” o a través de la

combinación 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 configuración y control

del sistema. Estos registros se declaran de manera automática en el momento de crear el proyecto y no

pueden ser borrados. Cada uno de estos registros cumple con una función 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 informa-

ción correspondiente al BIT seleccionado.

Page 150: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 150 de 242

Declaración de un Bit de Usuario Antes de declarar un BIT de usuario debe haber declarado primero el registro de usuario al cual pertene-

ce el BIT que desea declarar.

Una vez declarado el registro de usuario, ingrese a la pantalla de Declaración de Bits y seleccione el

número de BIT que desea declarar. Esto se hace haciendo un clic sobre la posición 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 descripción 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 confundir-

se con un nombre de puerto.

• Que no contenga caracteres no válidos.

• Que el nombre no contenga más de 20 caracteres de largo.

• Que el nombre no corresponda a una instrucción o comando.

Puerto

Configurar Puerto A

En Niple, la configuración de los puertos se realiza de manera totalmente visual, trabajando directamente

sobre una imagen del PIC.

Los microcontroladores de la línea 12F6xx pueden configurar 3 o 6 pines como puertos de E/S. Si confi -

gura el PIC para que funcione con “oscilador interno”, los pines correspondientes al oscilador externo pue-

den ser utilizados como puerto E/S.

Lo mismo ocurre con el pin de “RESET”.

Page 151: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 151 de 242

En la pantalla de configuración 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 verificación, a través 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 microcon-

trolador. Cuando no lo utilizamos como RESET, este pin solo puede ser utilizado como Entrada digital. La

función de este pin la seleccionamos desde el panel de control que se encuentra a la derecha del diagrama

de flujo .

Al seleccionar la configuración de Pin 4 como “Pin de RESET”, Niple bloquea de manera automática la

configuración de este pin del puerto A en la pantalla de configuración 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 configuración

de estos pines se

controla de manera

automática en

función de la

velocidad de reloj

seleccionada en le

panel de control

que se encuentra a

la derecha del

diagrama de flujo.

Si selecciona

una configuración

de oscilador

interno, Niple

habilita de manera

automática los

pines 6 y 7 del

puerto A para ser

utilizados como

Entradas o Salidas

Digitales.

Page 152: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 152 de 242

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 módulo Comparador Analógico La línea 12F6xx cuenta con 1

módulo comparador Analógico.

Este se encuentra en los pines 0,

1 2 del puerto. Por defecto, en

Niple el módulo comparador se

inicializa desconectado.

Para configurar el módulo

comparador, marque la opción

“Habilitar comparador analógico”

que se encuentra en el extremo

superior izquierdo de la pantalla

de configuración del puerto.

Page 153: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 153 de 242

Se presenta la pantalla de selección y configuración del modo de trabajo de los módulos comparadores.

Seleccione la configuración de comparadores que desea util i zar.

Puede seleccionar alguna de las siguientes configuraciones:

Page 154: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 154 de 242

Page 155: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 155 de 242

Una vez seleccionado el modo de operación del comparador, presione el botón “Ingresar”.

De manera automática Niple asigna las configuraciones a los pines correspondientes.

Una vez seleccionada la configuración deseada, presione el botón “Ingresar”.

Configuración de los canales A/D El módulo de conversión A/D solo esta disponible en el modelo de PIC 12F675. EL 12F629 no tie ne con-

versores 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 conversión analógica/digital (A/D).

Por esto, se presenta una segunda casilla de verificación donde se especifica el tipo de lectura a realizar.

Por defecto se presenta opción ‘D’ que significa “Entrada Digital”.

Page 156: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 156 de 242

Haciendo un clic en la casilla de verificación se conmuta a “Conversión A/D”, representada por una ‘A’.

Si configurar al menos una entrada como Conversión A/D, en la parte inferior-izquierda de la pantalla se

visualiza un cuadro de configuración del voltaje de referencia para el módulo de conversión A/D.

El voltaje de referencia (+) puede ser configurado como referencia Interna (V+= Vdd) o como referencia

externa (V+ = RA1).

Si elige algún 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.

Page 157: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 157 de 242

Representación gráfica

Sintaxis

Puerto = Valo r_Configuración

Esto se interpreta como: “el puerto ‘A’ es configurado como ‘Valor_Configuración’”.

Donde:

El parámetro ‘Valor_Configuración’ puede contener alguno de los siguientes códigos:

S = Salida Digital

E = Entrada Digital

A = Canal de Conversión A/D

+ = Voltaje de referencia externa positiva (para conversión A/D o Comparador analógico)

- = Voltaje de referencia negativa (para conversión A/D o Comparador analógico)

X = Bit no disponible.

C = Salida de comparador analógico

Ejemplos

Page 158: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 158 de 242

Comunicaciones

RS232

RS232 – Enviar

El protocolo RS232 es utilizado para comunicación con el puerto serial de las computadoras (puertos

COM).

Este módulo le permite enviar datos

mediante el protocolo de comunicación

RS232 ya sea a otros microcontroladores

o a una PC.

Primero seleccione el pin por el cual

transmitir los datos y la velocidad de

comunicación.

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 botón OK.

Para enviar un dato de tipo “Fijo” (literal).

Page 159: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 159 de 242

Para enviar un dato de tipo “Variable” (registro).

Cuando se envían más de un dato, Niple le permite esperar un tiempo entre un dato y otro.

Seleccione la opción “Esperar entre datos” e ingrese el tiempo en mS que desea esperar.

Por último, Niple le ofrece la opción de calcular y enviar el “checksum” de manera automática.

Al seleccionar la opción de calcular y enviar el checksum Niple agrega de manera automática los regis-

tros necesarios para calcular el checksum.

Page 160: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 160 de 242

Al presionar el botón ingresar, se inserta el bloque en el diagrama de flujo.

Page 161: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 161 de 242

RS232 – Recibir El protocolo RS232 es utilizado generalmente para comunicación con el puerto serial de las computado-

ras (puertos COM).

Este módulo le permite recibir datos mediante el

protocolo de comunicación RS232 ya sea desde otros

microcontroladores o desde una PC.

Primero seleccione el pin por el cual transmitir los

datos y la velocidad de comunicación.

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 opción, automáticamente se agregan los registros correspondientes a la recepción de

los bytes de checksum.

Page 162: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 162 de 242

Por último presione el botón “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 interrupción se activa mientras transcurre el flanco des-

cendente o el ascendente, mientras que para las restantes, podrá seleccionar la tasa de división para el es-

calado de los tiempos.

1) Seleccione la interrupción a

configurar, para esto haga clic sobre las

casillas de verificación disponibles para

cada caso.

2) Si selecciono Interrup. por RB0,

haga clic en lo botones de opción

correspondientes a Interrup. por flanco

Ascendente o Interrup. por flanco

descendente.

3) Si selecciono Interrup. por TMR0,

seleccione de la lista la Tasa de división y

el Origen de la señal de reloj.

Haga clic en Ingr esar.

Page 163: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 163 de 242

Niple para PIC 16F84

Características técnicas del PIC 16F84 Inicialmente todos los microcontroladores incorporaron la arquitectura de Von Neumann, la cual se ca-

racteriza por disponer de una sola memoria principal donde se almacenan los datos y las instrucciones. A

esta memoria se accede a través 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, están

diseñados con la arquitectura Harvard. La arquitectura Harvard dispone de dos memorias independientes;

una que contiene sólo 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 escritu-

ra) simultáneamente en ambas memorias.

Entre las principales características del PIC 16F84 podemos destacar:

• Voltaje de alimentación: 5VCC.

• CPU RISC

• Circuito Integrado de 18 pines.

• 13 Pines de configurables como Entrada o Salida.

• Frecuencia operación máxima: 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á leído y ejecutado línea a línea 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 señal de reloj externa se utiliza un cristal. El microcontrolador ejecuta cada instrucción

(1 ciclo de programa) a ¼ de la velocidad del cristal utilizado. En general, un ciclo de programa corresponde

a una línea de código Assembler .

Por ejemplo, si utilizamos un cristal de 4 Mhz, el microcontrolador estará ejecutando el código a una ve-

locidad de 1 Mhz. Es decir que, ejecutará 1.000.000 de líneas de código del programa por segundo. Por lo

tanto, cada línea de código se ejecutará en 1 microsegundo (1/1.000.000 Seg.).

Lo microcontroladores de la línea 16F6xx pueden ser configurados para que el origen de la señal de reloj

sea a trabes de un oscilador interno. Con esto, puede prescindir del oscilador externo y utilizar los pines co-

rrespondientes 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 pa-

ra ejecutar con oscilador interno puede tener un error importante en las temporizaciones.

Page 164: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 164 de 242

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 configuración 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.

Page 165: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 165 de 242

Módulos específicos 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).

Descripción del proyecto: Ingrese una descripción 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 nom-

bre no puede ser modificado.

Si bien los datos del proyecto son opcionales se recomienda ingresar estos datos para la correcta identi -

ficación del proyecto en el futuro.

Datos del archivo

Nombre del archivo: Niple utiliza la extensión .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 botón “Crear”.

Page 166: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 166 de 242

Al crear un nuevo proyecto se cargan todas las características del modelo de PIC seleccionado.

Además se genera de manera automática 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 borra-

do. Y cada entorno de Programa Principal debe tener un bloque de “Inicio” de Programa.

Declaración de Registros

En Niple la declaración de registros se realiza de manera visual trabajando directamente sobre el mapa

de memoria.

Para ingresar a la pantalla de declaración de registros, seleccione el menú “Declaración \ Registros” o

por medio de la combinación de teclas CTRL+R.

En esta pantalla se presenta el mapa de memoria.

Cada registro está identificado con una “dirección de registro” la cual está expresada en formato hexade-

cimal.

Page 167: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 167 de 242

El mapa de memoria de datos presenta los distin-

tos los tipos de registros con diferentes colores.

Registros Predefinidos por el PIC (Color

Naranja):

Corresponde a registros de configuración y

control del sistema. Estos registros se declaran de

manera automática en el momento de crear el

proyecto y no pueden ser borrados. Cada uno de

estos registros cumple con una función

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.

Declaración de un registro de usuario

Para declarar un registro de usuario debe hacer un clic en una posición de memoria libre correspondien-

te a los registros de tipos “Usuario” (color verde). Al hacer clic, se le solicita que ingrese el nombre del regis-

tro 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 conteng a caracteres no válidos.

- Que el nombre no contenga más de 20 caracteres de largo.

- Que el nombre no corresponda a una instrucción o comando.

Page 168: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 168 de 242

Puertos

Configurar Puerto A En Niple, la configuración de los puertos se realiza de manera totalmente visual, trabajando directamente

sobre una imagen del PIC.

El puerto A está conformado sólo por 5 bits (RA0 – RA4).

En la pantalla de

configuración del

Puerto A, se presenta

una imagen del PIC

con las descripciones

de todos los pines.

En cada pin

correspondiente al

puerto A se muestra

una casilla de

verificación, a través

de la cual el pin es

configurado como

entrada o salida.

Una vez

seleccionada la

configuración correcta, presione el botón “Ingresar”.

Representación gráfica

Sintaxis

Puerto = Valor_Configuración

Esto se interpreta como: “el puerto ‘A’ es configurado como ‘Valor_Configuración’”.

Donde:

El parámetro ‘Valor_Configuración’ puede contener alguno de los siguientes códigos:

S = Salida Digital

E = Entrada Digital

Ejemplos

Page 169: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 169 de 242

Configurar Puerto B En Niple, la configuración de los puertos se realiza de manera totalmente visual, trabajando directamente

sobre una imagen del PIC.

En la pantalla de

configuración 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

verificación, a través

de la cual el pin es

configurado como

entrada o salida. Una

vez seleccionada la

configuración

deseada, presione el botón “Ingresar”.

Representación gráfica

Sin taxis

Puerto = Valor_Configuración

Esto se interpreta como: “el puerto B es configurado como ‘Valor_Configuración’”.

Donde:

El parámetro ‘Valor_Configuración’ puede contener alguno de los siguientes códigos:

S = Salida Digital

E = Entrada Digital

Ejemplos

Page 170: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 170 de 242

Comunicaciones

RS232

RS232 – Enviar datos

El protocolo RS232 es utilizado para comunicación con el puerto serial de las computadoras (puertos

COM).

Este módulo le permite enviar datos

mediante el protocolo de comunicación

RS232 ya sea a otros microcontroladores

o a una PC.

Primero seleccione el pin por el cual

transmitir los datos y la velocidad de

comunicación.

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 botón OK.

Para enviar un dato de tipo “Fijo” (literal).

Page 171: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 171 de 242

Para enviar un dato de tipo “Variable” (registro).

Cuando se envían más de un dato, Niple le permite esperar un tiempo entre un dato y otro.

Seleccione la opción “Esperar entre datos” e ingrese el tiempo en MS que desea esperar.

Por último, Niple le ofrece la opción de calcular y enviar el “checksum” de manera automática.

Al seleccionar la opción de calcular y enviar el checksum Niple agrega de manera automática los regis-

tros necesarios para calcular el checksum.

Page 172: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 172 de 242

Al presionar el botón ingresar, se inserta el bloque en el diagrama de flujo.

Page 173: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 173 de 242

RS232 – Recibir datos El protocolo RS232 es utilizado generalmente para comunicación con el puerto serial de las computado-

ras (puertos COM).

Este módulo le permite recibir datos mediante el

protocolo de comunicación RS232 ya sea desde otros

microcontroladores o desde una PC.

Primero seleccione el pin por el cual transmitir los

datos y la velocidad de comunicación.

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 opción, automáticamente se agregan los registros correspondientes a la recepción de

los bytes de checksum.

Page 174: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 174 de 242

Por último presione el botón “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 interrupción se activa mientras transcurre el flanco des-

cendente o el ascendente, mientras que para las restantes, podrá seleccionar la tasa de división para el es-

calado de los tiempos.

1) Seleccione la interrupción a

configurar, para esto haga clic sobre las

casillas de verificación disponibles para

cada caso.

2) Si selecciono Interrup. por RB0 ,

haga clic en lo botones de opción

correspondientes a Interrup. por flanco

Ascendente o Interrup. por flanco

descendente.

3) Si selecciono Interrup. por TMR0,

seleccione de la lista la Tasa de división

y el Origen de la señal de reloj.

Haga clic en Ingresar.

Page 175: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 175 de 242

Niple para PIC 16F6xx

Características técnicas de los PIC 16F6xx Inicialmente todos los microcontroladores incorporaron la arquitectura de Von Neumann, la cual se ca-

racteriza por disponer de una sola memoria principal donde se almacenan los datos y las instrucciones. A

esta memoria se accede a través 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 actuali-

dad, están diseñados con la arquitectura Harvard. La arquitectura Harvard dispone de dos memorias inde-

pendientes; una que contiene sólo 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 (lec-

tura o escritura) simultáneamente en ambas memorias.

• Voltaje de alimentación: 5VCC.

• CPU RISC

• Circuito Integrado de 18 pines.

• 16 Pines de configurables como Entrada o Salida.

• Frecuencia operación máxima: 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 Módulo CCP (Captura, Comparación y PWM).

• 1 Módulo de comunicaciones USART.

• 2 Comparadores analógicos.

• 10 Interrupciones.

Como mencionamos anteriormente, para que un microcontrolador funcione es necesario grabarle un

programa en su interior. Este programa será leído y ejecutado línea a línea 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.

Page 176: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 176 de 242

Generalmente, para origen de la señal de reloj externa utilizamos un cristal. El microcontrolador ejecuta

cada instrucción (1 ciclo de programa) a ¼ de la velocidad del cristal utilizado. En general, un ciclo de pro-

grama corresponde a una línea de código Assembler.

Por ejemplo, si utilizam os un cristal de 4 Mhz, el microcontrolador estará ejecutando el código a una ve-

locidad de 1 Mhz. Es decir que, ejecutará 1.000.000 de líneas de código del programa por segundo. Por lo

tanto, cada línea de código se ejecutará en 1 microsegundo (1/1.000.000 Seg.).

Lo microcontroladores de la línea 16F6xx pueden ser configurados para que el origen de la señal de reloj

sea a través de un oscilador interno. Con esto, puede prescindir del oscilador externo y utilizar los pines co-

rrespondientes 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 pa-

ra 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 configuración 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.

Page 177: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 177 de 242

Módulos específicos de Niple para PIC 16F6xx

Crear un nuevo proyecto. Para crear un nuevo proyecto 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

registros, los bits,

memoria EEPROM, periféricos, interrupciones, etc.).

Tenga en cuenta que una vez creado el

proyecto no puede cambiar el modelo de

PIC.

El Botón “Características de la Línea

16F6xx” presenta un cuadro comparativo

con las características de cada uno de los

modelos de PIC que componen la línea

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:

Page 178: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 178 de 242

Datos del proyecto

Nombre del proyecto: Nombre descriptivo del proyecto (No es el nombre de Archivo).

Descripción del proyecto: Ingrese una descripción 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 nom-

bre no puede ser modificado.

Si bien los datos del proyecto son opcionales se recomienda ingresar estos datos para la correcta identi -

ficación del proyecto en el futuro.

Datos del archivo

Nombre del archivo: Niple utiliza la extensión .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 botón “Crear”.

Al crear un nuevo proyecto se cargan todas las características del modelo de PIC seleccionado.

Además se genera de manera automática 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 borra-

do. Y cada entorno de Programa Principal debe tener un bloque de “Inicio” de Programa.

Page 179: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 179 de 242

Declaración de Registros En Niple la declaración de registros se realiza de manera visual trabajando directamente sobre el mapa

de memoria.

Para ingresar a la pantalla de declaración de

registros, seleccione el menú “Declaración\Registros”

o por medio de la combinación de teclas CTRL+R.

En esta pantalla se presenta el mapa de memoria.

La línea 16F6xx cuenta con 4 páginas de

memoria, las cuales son presentadas en 2 “solapas”.

Cada registro está identificado con una “dirección

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 configuración y

control del sistema. Estos registros se declaran de

manera automática en el momento de crear el

proyecto y no pueden ser borrados. Cada uno de estos registros cumple con una función predeterminada.

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

sus propios registros.

Page 180: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 180 de 242

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

memoria no pueden ser utilizadas.

Declaración de un Registro de Usuario Para declarar un registro de usuario debe hacer un clic en una posición de memoria libre correspondien-

te a los registros de tipos “Usuario” (color verde). Al hacer clic, se le solicita que ingrese el nombre del regis-

tro 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 confundir-

se con un nombre de puerto.

• Que no contenga caracteres no válidos.

• Que el nombre no contenga más de 20 caracteres de largo.

• Que el nombre no corresponda a una instrucción o comando.

Declaración de Bits

En Niple la declaración de Bits se realiza de manera totalmente visual trabajando directamente sobre el

mapa de memoria.

Puede ingresar a la pantalla de declaración de bits a través del menú “Declaración\Bits” o a través de la

combinación de teclas CTRL+B.

Page 181: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 181 de 242

La memoria de datos se encuentra organizada en 4 bancos o páginas, las cuales son presentadas una

en cada ”solapa” de la pantalla de declaración 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 configuración y control

del sistema. Estos registros se declaran de manera automática en el momento de crear el proyecto y no

pueden ser borrados. Cada uno de estos registros cumple con una función 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 informa-

ción correspondiente al BIT seleccionado.

Declaración de un Bit de Usuario Antes de declarar un Bit de usuario, es necesario que previamente haya de clarado el registro de usuario

al cual pertenece el Bit.

Una vez declarado el registro de usuario, ingrese a la pantalla de Declaración de Bits y seleccione el

número de Bit que desea declarar. Esto se hace haciendo un clic sobre la posición 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 descripción del nuevo Bit.

Page 182: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 182 de 242

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 válidos.

• Que el nombre no contenga más de 20 caracteres de largo.

• Que el nombre no corresponda a una instrucción o comando.

Configurar el Puerto A En Niple, la configuración de los puertos se realiza de manera totalmente visual.

En la pantalla de

configuración del

Puerto A, se presenta

una imagen del PIC

con las descripciones

de todos los pines.

En cada pin

correspondiente al

puerto A se muestra

una casilla de

verificación, a través

de la cual el pin es

configurado como

entrada o salida.

El puerto A está

conformado por 8

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

controlador. Cuando no lo utilizamos como RESET, este pin solo puede ser utilizado como Entrada digital.

La función de este pin la seleccionamos desde el panel de control que se encuentra a la derecha del dia-

grama de flujo.

Page 183: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 183 de 242

Al seleccionar la configuración de Pin 4 como “Pin de RESET”, Niple bloquea de manera automática la

configuración de este pin del puerto A en la pantalla de configuración 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 Entradas/Salidas

Digitales.

La configuración de estos

pines se controla de manera

automática en función de la

velocidad de reloj seleccionada

en le panel de control que se

encuentra a la derecha del

diagrama de flujo

Si selecciona una

configuración de oscilador

interno, Niple habilita de

manera automática los pines 6

y 7 del puerto A para ser

utilizados como Entradas o

Salidas Digitales.

Page 184: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 184 de 242

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 analógicos La línea 16F6xx cuenta con 2 comparadores Analógicos. Estos se encuentran en los pines 0 al 3 del

puerto A. Por defecto, en Niple los módulos comparadores se inicializan desconectados.

Para configurar los módulos de los comparadores, marque la opción “Habilitar comparadores” que se en-

cuentra en el extremo superior izquierdo de la pantalla de configuración del puerto A.

Page 185: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 185 de 242

Se presenta la pantalla de selección y configuración del modo de trabajo de los módulos comparadores.

Seleccione la configuración de comparadores que desea utilizar.

Puede seleccionar alguna de las siguientes configuraciones:

Page 186: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 186 de 242

Page 187: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 187 de 242

Una vez seleccionado el modo de operación de los comparadores, presione el botón “Ingresar”.

Page 188: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 188 de 242

De manera automática Niple asigna las configuraciones a los pines correspondientes a los comparado-

res.

Una vez seleccionada la configuración deseada, presione el botón “Ingresar”.

Si el chequeo de la configuración seleccionada resulta ser correcta, Niple inserta el bloque en el diagra-

ma.

Representación gráfica

Sintaxis

Puerto = Valor_Configuración

Esto se interpreta como: “el puerto ‘A’ es configurado como ‘Valor_Configuración’”.

Donde:

El parámetro ‘Valor_Configuración’ puede contener alguno de los siguientes códigos:

S = Salida Digital

E = Entrada Digital

+ = Pin positivo de un módulo comparador

- = Pin positivo de un módulo comparador

Page 189: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 189 de 242

X = Bit no disponible.

Ejemplos

Configurar el Puerto B En Niple, la configuración de los puertos se realiza de manera totalmente visual, trabajando directamente

sobre una imagen del PIC.

En la pantalla de configuración 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 verificación, a través de la cual el pin

es configurado como entrada o salida.

Una vez seleccionada la configuración deseada, presione el botón “Ingresar”.

Representación gráfica

Sintaxis

Puerto = Valor_Configuración

Esto se interpreta como: “el puerto B es configurado como ‘Valor_Configuración’”.

Donde:

El parámetro ‘Valor_Configuración’ puede contener alguno de los siguientes códigos:

S = Salida Digital

E = Entrada Digital

Page 190: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 190 de 242

Ejemplos

Comparadores Analógicos Los microcontroladores de la línea 16F6xx incluyen 2 módulos comparadores analógicos.

Un módulo comparador analógico está compuesto por 2 entradas (Vin+ y Vin-) y una salida (Vout), la

cual se activa en función del estado de las entadas.

El módulo 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 configuración del puerto A. Consulte el tema “Configuración del puerto A”.

Luego de haber configurado el puerto A debe configurar el modo de funcionamiento del módulo compa-

rador. Una vez que el módulo comparador ha sido configurado, el mismo funciona de manera independiente

de la ejecución del resto del programa, es decir que el programa no debe atender el funcionamiento del

comparador.

Cada vez que la condición de comparación se cumple según lo configurado, se activa un BIT por cada

módulo comparador (Bits C1VOUT y C2VOUT, bits 6 y 7 del registro CMCON respectivamente).

Puede configurar una interrupción por comparadores. Esta se ejecuta cada vez que cambia el estado de

alguno de las 2 banderas de los módulos compradores. Debe determinar por software cual es el comprador

que genera la interrupción. Niple controla esto de manera automática.

Una vez seleccionada la configuración de los comparadores, debe configurar el módulo de funcionamien-

to de cada uno de los mismos. Para esto ingrese al árbol de herramientas como se muestra en la siguiente

imagen:

Se presenta la pantalla de configuración del comparador.

Page 191: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 191 de 242

En la parte superior de la pantalla se muestra la configuración del puerto A y de los comparadores.

A continuación debe seleccionar el modo de funcionamiento del comparador seleccionado. Seleccione

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 opción de

selección de comparador por multiplexado. Debe seleccionar el comparador que desea utilizar.

Page 192: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 192 de 242

Si la configuración 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.

Además los micros de la familia 16F6xx cuentan con una interrupción por Comparadores Analógicos. La

interrupción se produce cada vez que cambia el estado del BIT de salida de un módulo comparador (bits

C1Vout y C2Vout).

El software debe mantener la información del estado actual de cada BIT de salida de los módulos com-

paradores para poder determinar cual fue el comparador que generó la interrupción. Niple administra esta

información y determina de manera automática cual es el comparador que produjo la interrupción.

Para activar las interrupciones por comparadores analógicos debe activar la opción “Generar Interrup-

ción”.

Al activar la opción “Generar Interrupción”, Niple revisa el estado de las interrupciones y detecta si las in-

terrupciones necesarias se encuentran activadas.

Si alguna de las interrupciones no se encuentra activada, Niple le presenta la posibilidad de activarlas

activando los cuadros de verificación correspondientes.

Cuando se ingresa una interrupción por comparadores analógicos, Niple genera de manera automática

el registro de banderas y declara los bits de banderas de estado actual de cada uno de los módulos compa-

radores.

Page 193: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 193 de 242

Los bits de banderas del estado de los comparadores se denominan “C1_INTE” y “C2_INTE”.

Además, Niple inserta de manera automática los bloques de evaluación de las banderas de salida de ca-

da módulo para determinar cual es el módulo que produjo la interrupción.

Se inserta un bloque de evaluación para cada módulo comparador. El diagrama de flujo de la interrup-

ción queda preparado para que Ud. programe lo que desea realizar al producirse la interrupción por cada

uno de los módulos comparadores.

El Módulo CCP Los microcontroladores de la línea 16F6xx incluyen 1 módulo de Captura, Comparación y Modulación

por ancho de pulso, llamado CCP1.

Los registros de control y trabajo del módulo CCP1 son: CCP1CON dirección 17h y CCP1RH-CCP1RL

direcciones 16h y 15h.

El módulo CCP puede trabajar en tres modos diferentes, que son:

- Modo Captura

- Modo Comparación

- Modo Modulación por Ancho de Pulso, PWM

Page 194: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 194 de 242

Modo Captura Antes de pasar a desarrollar la metodología de programación con Niple, realizaremos una breve descrip-

ción 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 opción “Origen de señal de reloj” = Reloj Inter no. (Recuerde que

también el TMR1 puede ser configurado para que incremente mediante una señal externa).

La captura se realiza cada vez que ocurre alguno de los siguientes eventos en el Pin RB3, esto se confi -

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

Además puede generarse una interrupción, si previamente fue configurado el Bit 2 del registro PIE1

(CCP1IE).

Programando el modo Captura en Niple

Para poder utilizar el Modo Captura primero debe realizar los siguientes pasos:

§ Configur e y active el temporizador interno TMR1.

§ Configur e el Pin correspondiente al módulo CCP como Entrada.

Page 195: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 195 de 242

Una vez realizados los pasos previos necesarios ya esta en condiciones de realizar una Captura.

Ingrese al árbol de herramientas y seleccione la opción “Insertar / Rutinas

Básicas / Módulo CCP / Config. y Activar CCP1” como se muestra en la

siguiente figura.

Se presenta la pantalla “Módulo CCP1”. Es importante aclarar que los 3

modos (Captura, Comparación y PWM) se programan en la misma pantalla ya

que pertenecen al mismo módulo.

Seleccione el modo Comparación en la lista desplegable denominada

“Modo a utilizar”.

Para garantizar el correcto funcionamiento, Niple chequea de manera

automática si previamente han sido configurados el temporizador TMR1 y el Pin RB3 como entrada.

Si todo está correctamente 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 la configuración

del evento que provoca la captura.

Para este caso, seleccione la opción “1 Flanco

Ascendente”.

Page 196: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 196 de 242

A continuación 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 “es-

perar” 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 interrupción por

Fin de Captura: Se configura el modo

Captura y continúa ejecutando el resto del

código. Cuando se realiza la captura se

produce una interrupción por “Fin de

Captura”.

Sea cual fuere la opción seleccionada, a

continuación le solicita que seleccione los registros

donde guardar el resultado de la captura.

Si ha seleccionado la opción “No esperar y

generar una interrupción”, Niple chequea el estado

de las interrupciones y ofrece la posibilidad de

habilitar las interrupciones que se encuentran

deshabilitadas.

La siguiente ilustración muestra este caso.

Por último puede ingresar un comentario.

Page 197: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 197 de 242

Una vez seleccionados todos lo parámetros, presione el botón “Ingresar”.

La siguiente ilustración muestra el bloque insertado con los pasos anteriormente realizados.

En la siguiente imagen se muestran el bloque y el entorno de “Interrupción por CCP1” que son insertados

en el tipo de captura “por interrupción”.

La siguiente imagen muestra los bloques insertados en el entorno del “Programa Principal”

Page 198: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 198 de 242

La siguiente imagen muestra el entorno de “Interrupción por CCP1” y los bloques que se insertan de ma-

nera automática.

Modo Comparación 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

según la configuración seleccionada.

Estos eventos son:

- Poner a 1 el Pin RB3.

- Poner a 0 el Pin RB3.

- Generar una interrupción. Esta opción no afecta al Pin RB3.

El Pin RB3 debe estar configurado como Salida.

Si el TMR1 es configurado con la opción “Origen de señal de reloj” = Reloj Externo, entonces este módu-

lo puede ser utilizado como contador de eventos que al llegar al valor deseado se produzca una acción de-

terminada sin necesidad de estar monitoreando el estado de cuenta.

Page 199: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 199 de 242

Si el TMR1 es configurado con la opción “Origen de señal de reloj” = Reloj Interno, entonces este módulo

puede ser utilizado para generar eventos en un determinado periodo.

Cada vez que se realiza una comparación, se activa el Bit 2 del registro PIR1 (CCP1IF).

Además puede generarse una interrupción, si previamente fue configurado el Bit 2 del registro PIE1

(CCP1IE).

Programando el modo Comparación en Niple

Para poder utilizar el Modo Comparación 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 Comparación.

Ingrese al árbol de herramientas y seleccione la opción “Insertar / Rutinas

Básicas / Módulo CCP / Config. y Activar CCP1” como se muestra en la imagen

de la derecha.

Se presenta la pantalla “Módulo CCP1”. Es importante aclarar que los 3

modos (Captura, Comparación y PWM) se programan en la misma pantalla ya

que pertenecen al mismo módulo.

Seleccione el modo Comparación en la lista

desplegable denominada “Modo a utilizar”.

Para garantizar el correcto funcionamiento,

Niple chequea de manera automática si

previamente han sido configurados el

temporizador TMR1 y el Pin RB3 como Salida.

Si todo está correctamente 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

Comparación. 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 comparación también corresponde a

un número de 16 bits.

Page 200: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 200 de 242

Niple le ofrece la posibilidad de asignar el valor de comparación mediante un valor Literal (valor constan-

te) o mediante el valor contenido en 2 registros (valor Variable) ofreciendo una mayor versatilidad.

De ésta manera Ud. puede ajustar el valor de comparación a sus necesidades.

Por ejemplo: Si desea desarrollar un sistema “contador” que realice una determinada acción al llegar a la

cuenta de 1000. Entonces debe seleccionar las opciones “Valor Literal”, Tipo “Decimal” y “1000” como “valor

de comparación”. Tenga en cuenta que no

podrá cambiar el valor de comparación dado

que se trata de un valor constante. Si en el

futuro desea cambiar el “valor de comparación”,

deberá generar nuevamente el código

Assembler , compilar el archivo .hex y grabar

nuevamente el PIC.

Una forma más versátil de realizar esto es:

asignando el valor de comparación como

variable, por ejemplo, mediante 2 registros

llamados “cant_max_1” y “cant_max_2”. Esto le

permite diseñar el programa para poder

actualizar el “valor de comparación” mediante

algún 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 continuación seleccione el evento a realizar cuando el TMR1 llegue al estado de cuenta del “valor de

comparación”. Aquí tiene 3 opciones:

- Poner a 1 el Pin RB3.

- Poner a 0 el Pin RB3.

- Generar una interrupción. Esta opción 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 comparación.

1) Esperar en un bucle hasta que termine la Comparación: 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 interrupción por Fin de Comparación: Se configura el modo Compara-

ción y continúa ejecutando el resto del código. Cuando el valor del TMR1 es igual a valor de com-

paración, se produce una interrupción por “Fin de Comparación”.

Page 201: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 201 de 242

Si ha seleccionado la opción “No esperar y generar una interrupción...”, Niple chequea el estado de las

interrupciones y ofrece la posibilidad de habilitar las interrupciones que se encuentran deshabilitadas.

La siguiente ilustración muestra este caso.

Page 202: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 202 de 242

Por último puede ingresar un comentario.

Una vez seleccionados todos lo parámetros, presione el botón “Ingresar”.

La siguiente ilustración muestra el bloque insertado con los pasos anteriormente realizados.

En la siguiente imagen se muestran el bloque y el entorno de interrupción por “Interrupción por CCP1”

que son insertados en el tipo de comparación “por interrupción”.

La primera imagen muestra los bloques insertados en el entorno del “Programa Principal” y la segunda

imagen muestra el entorno de “Interrupción por CCP1” y los bloques que se insertan de manera automática.

Page 203: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 203 de 242

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 duración 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 fórmula:

Periodo = 1 / Frecuencia_a_generar

PR2 = (Periodo / (4 * Tosc * Predivisor_de_TRM2)) – 1

Donde:

Tosc (Tiempo de oscilación) = 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 fórmula:

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

Además, el valor “Valor_Ancho_Pulso” debe estar organizado de la siguiente manera:

Page 204: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 204 de 242

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 según 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 anc ho 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 opción “Insertar / Rutinas Básicas / Módulo CCP / Con-

fig. y Activar CCP1” como se muestra en la siguiente figura.

Page 205: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 205 de 242

Se presenta la pantalla “Módulo CCP1”. Es importante aclarar que los 3 modos (Captura, Comparación y

PWM) se programan en la misma pantalla ya que

pertenecen al mismo módulo.

Seleccione el modo PWM en la lista desplegable

denominada “Modo a utilizar”.

Para garantizar el correcto funcionamiento, Niple

chequea de manera automática si previamente han

sido configurados el temporizador TMR2 y el Pin

RB3 como Salida.

Si todo está correctamente 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 Niple le presenta información

acerca de la configuración del temporizador TMR2.

En este caso se muestra el valor de configuración

del Prescalado, dado que este valor se utiliza para

realizar los cálculos 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 opción “Tipo de Frecuencia” = Fija.

A continuación ingrese la frecuencia que desea

generar.

Niple calcula y muestra automáticamente el

rango válido de frecuencias que puede generar.

Este rango depende de Prescalado del temporizador

TMR2 y de la velocidad del cristal utilizado.

A modo de ilustración generaremos una

frecuencia de 5000 Hz.

Observe que mientras Ud. ingresa el valor de la

frecuencia a generar, Niple calcula de manera

automática el valor correspondiente el registro PR2.

Una vez ingresada la frecuencia, proceda a

configurar el control por ancho de pulso.

Page 206: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 206 de 242

Para esto seleccione el tipo de control a realizar que puede realizarse de 2 maneras según sus necesi-

dades:

1) Control por ancho de pulso Fijo: se genera un control por ancho de pulso constante a un determi-

nado porcentaje del período y este porcentaje no podrá ser modificado. (Es decir, para modificar

este porcentaje de control de ancho de pulso deberá volver a generar el código ASM, compilar el

archivo .hex y volver a grabar el PIC).

2) Control por ancho de pulso Variable: el valor de configuración 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 automática el rango de valores permitidos

para el control del ancho de pulso. Debe prestar especial atención de asignar a los registros selec-

cionados, un valor que se encuentre dentro de este rango.

Para facilitar esto, Niple cuenta con el módulo de “escalar un valor”. Consulte el módulo de función ma-

temática “Escalar un valor”.

Page 207: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 207 de 242

Por último puede ingresar un comentario.

Una vez seleccionados todos lo parámetros, presione el botón “Ingresar”.

La siguiente ilustración muestra el bloque insertado con los pasos anteriormente realizados .

Comunicaciones

RS232

RS232 – Enviar El protocolo RS232 es utilizado para

comunicación con el puerto serial de las

computadoras (puertos COM). Este módulo le

permite enviar datos mediante el protocolo de

comunicación RS232 ya sea a otros micro-

controladores o a una PC.

Primero debe selecciona el tipo de

comunicación a realizar la cual puede ser

mediante módulo USART.

La USART es un módulo de comunica-

ciones que los modelos de la línea 16F6xx in-

cluyen. Es decir que todo el procedimiento de

envío de los datos se realiza de manera

automática mientras que si se realiza “por

código”, se generará el código Assembler necesario para realizar el envío de los datos.

Page 208: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 208 de 242

La diferencia radica en que el módulo USART prepara el dato e inicia el envío y luego vuelve a segui r

ejecutando el resto del código del programa sin necesidad de realizar todo el proceso de envío del dato ya

que este se realiza de manera automática y en forma paralela a la ejecución del resto del programa. Mien-

tras que si se realiza “por código”, la ejecución del programa realiza todo el proceso de envío del dato.

Si selecciona el modo de envío “por USART”, el sistema selecciona de manera automática el pin de

transmisión correspondiente. Este pin no puede ser modificado dado que el módulo USART utiliza un de-

terminado pin para el envío de datos.

Si selecciona el modo de envío “por Código”, el sistema le solicita que seleccione el pin de transmisión

por el cual quiere realizar la comunicación.

A continuación debe seleccionar la velocidad de comunicación .

Por último seleccione el dato a enviar.

RS232 – Recibir El protocolo RS232 es utilizado generalmente para comunicación con el puerto serial de las computado-

ras (puerto COM).

Este módulo le permite recibir datos mediante el protocolo de comunicación RS232 ya sea desde otros

microcontroladores o desde una PC.

Primero debe selecciona el tipo de

comunicación a realizar la cual puede ser

mediante módulo USART.

La USART es un módulo de

comunicaciones que los modelos de la línea

16F6xx incluyen. Es decir que todo el

procedimiento de envío de los datos se realiza

de manera automática mientras a diferencia

del tipo de comunicación “por código” que se

generará el código Assembler necesario para

realizar el envío de los datos.

En primer lugar debe seleccionar el tipo de

comunicación: “por USART” o “por Código”.

Si selecciona el modo de comunicación por

USART, el sistema seleccionará de manera

automática el pin de recepción. Este pin no puede ser modificado dado que el módulo USART determina el

pin (por hardware) para la recepción de datos.

A continuación debe seleccionar el registro donde guardar el dato recibido.

Por último seleccione la velocidad de comunicación.

Page 209: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 209 de 242

Si selecciona el modo de comunicación “por USART”, se debe activar la interrupción por recepción por

USART. Si esto no se realiza, el sistema no “detectará” cuando un dato sea recibido. Por esto, Niple che-

quea si las interrupciones correspondientes han sido activadas:

GIE = habilitador general de interrupciones

PEIE = Habilitador de interrupciones por periféricos

RCIE = Habilitador de interrupción por Recepción en USART.

Si alguna de éstas banderas de interrupción no ha sido activada, no se producirá la interrupción al recibir

un dato y por ende, el micro no detectará cuando recibe un dato.

Por esto, Niple supervisa si estas interrupciones están correctamente activadas. Si Niple detecta que las

interrupciones no han sido activadas, por defecto, ofrece la posibilidad de activarlas.

Por último presione le botón “Ingresar”.

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

Seleccione la interrupción a configurar, para esto

haga clic sobre las casillas de verificación

disponibles para cada caso.

Haga clic en Ingresar.

Page 210: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 210 de 242

Niple para PIC 16F87x

Características técnicas de los PIC 16F87x Inicialmente todos los microcontroladores incorporaron la arquitectura de Von Neumann, la cual se ca-

racteriza por disponer de una sola memoria principal donde se almacenan los datos y las instrucciones. A

esta memoria se accede a través 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 actuali-

dad, están diseñados con la arquitectura Harvard. La arquitectura Harvard dispone de dos memorias inde-

pendientes; una que contiene sólo 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 (lec-

tura o escritura) simultáneamente en ambas memorias.

• Voltaje de alimentación: 5VCC.

• CPU RISC

• Circuito Integrado de 18 pines.

• Pines de configurables como Entrada o Salida:

ü 16F870/3/6 = 22 pines

ü 16F874/7 = 33 pines

• Frecuencia operación máxima: 20 Mhz.

• Memoria Flash:

ü 16F870/3/4 = 4 Kbytes

ü 16F876/7 = 8 Kbytes

• Memoria de Datos:

ü 16F870/3/4 = 192 Bytes

ü 16F876/7 = 368 Bytes

• Memoria de Datos EEPROM:

ü 16F870/3/4 = 128 Bytes

ü 16F876/7 = 256 Bytes

• 2 Temporizadores internos de 8 bits.

• 1 Temporizador interno de 16 bits.

• Módulos CCP (Captura, Comparación y PWM):

ü 16F870 = 1 módulo

ü 16F873/4/6/7 = 2 módulos

• 1 Módulo de comunicaciones USART.

• Conversores Analógico-Digital:

ü 16F870/3/6 = 5 canales

ü 16F874/7 = 8 canales

• Interrupciones:

ü 16F870/3/6 = 13

ü 16F874/7 = 14

Page 211: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 211 de 242

Como mencionamos anteriormente, para que un microcontrolador funcione es necesario grabarle un

programa en su interior. Este programa será leído y ejecutado línea a línea 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 señal de reloj externa utilizamos un cristal. El microcontrolador ejecuta cada instruc-

ción (1 ciclo de programa) a ¼ de la velocidad del cristal utilizado. En general, un ciclo de programa corres-

ponde a una línea de código Assembler .

Por ejemplo, si utilizamos un cristal de 4 Mhz, el microcontrolador estará ejecutando el código a una ve-

locidad de 1 Mhz. Es decir que, ejecutará 1.000.000 de líneas de código del programa por segundo. Por lo

tanto, cada línea de código se ejecutará en 1 microsegundo (1/1.000.000 Seg.).

Conexión de los PIC 16F87x

Page 212: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 212 de 242

Los puertos del PIC 16F87x Los microcontroladores de la familia 16F87x disponen de 3 o 5 puertos según el modelo de microcontro-

lador:

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)

Page 213: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 213 de 242

Módulos específicos de Niple para PIC 16F87x

Crear un nuevo proyecto. Para crear un nuevo proyecto 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

registros, los bits,

memoria EEPROM,

periféricos, interrupciones, etc.).

Tenga en cuenta que una vez creado el proyecto no puede cambiar el modelo de PIC.

El Botón “Características de la Línea 16F87x” presenta un cuadro comparativo con las características de

cada uno de los modelos de PIC que componen la línea 16F87x.

Page 214: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 214 de 242

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:

Datos del proyecto

Nombre del proyecto: Nombre descriptivo del proyecto (No es el nombre de Archivo).

Descripción del proyecto: Ingrese una descripción 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. Es-

te nombre no puede ser modificado.

Si bien los datos del proyecto son opcionales se recomienda ingresar estos datos para la correcta identi -

ficación del proyecto en el futuro.

Datos del archivo

Nombre del archivo: Niple utiliza la extensión .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 re-

petir el nombre de un archivo de proyecto.

Una vez ingresados todos los datos necesarios, presione el botón “Crear”.

Al crear un nuevo proyecto se cargan todas las características del modelo de PIC seleccionado.

Además se genera de manera automática el entorno del Programa Principal y se inserta el bloque de

“Inicio” del programa.

Page 215: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 215 de 242

Todos los proyectos deben tener un entorno de “Programa Principal”. Este entorno no puede ser borra-

do. Y cada entorno de Programa Principal debe tener un bloque de “Inicio” de Programa.

Declaración de Registros En Niple la declaración de registros se realiza

de manera visual trabajando directamente sobre el

mapa de memoria.

Para ingresar a la pantalla de declaración de

registros, seleccione el menú

“Declaración\Registros” o por medio de la

combinación de teclas CTRL+R.

En esta pantalla se presenta el mapa de

memoria.

La línea 16F87x cuenta con 4 páginas de

memoria, las cuales son presentadas en 2

“solapas”.

Cada registro está identificado con una

“dirección 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.

Page 216: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 216 de 242

Registros Predefinidos por el PIC (Color Naranja): Corresponde a registros de configuración y control

del sistema. Estos registros se declaran de manera automática en el momento de crear el proyecto y no

pueden ser borrados. Cada uno de estos registros cumple con una función 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.

Declaración de un Registro de Usuario Para declarar un registro de usuario debe hacer un clic en una posición de memoria libre correspondien-

te a los registros de tipos “Usuario” (color verde). Al hacer clic, se le solicita que ingrese el nombre del regis-

tro 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 confundir-

se con un nombre de puerto.

• Que no contenga caracteres no válidos.

• Que el nombre no contenga más de 20 caracteres de largo.

• Que el nombre no corresponda a una instrucción o comando.

Declaración de Bits

En Niple la declaración de Bits se realiza de manera totalmente visual trabajando directamente sobre el

mapa de memoria. Puede ingresar a la pantalla de declaración de bits a través del menú “Declaración\Bits”

o a través de la combinación de teclas CTRL+B.

Page 217: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 217 de 242

La memoria de datos se encuentra organizada en 4 bancos o páginas, las cuales son presentadas una

en cada ”solapa” de la pantalla de declaración 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 configuración y control

del sistema. Estos registros se declaran de manera automática en el momento de crear el proyecto y no

pueden ser borrados. Cada uno de estos registros cumple con una función 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 nom bre de un BIT se muestra en la parte inferior de la pantalla toda informa-

ción correspondiente al BIT seleccionado.

Declaración de un Bit de Usuario Antes de declarar un BIT de usuario debe haber declarado primero el registro de usuario al cual pertene-

ce el BIT que desea declarar.

Una vez declarado el registro de usuario, ingrese a la pantalla de Declaración de Bits y seleccione el

número de BIT que desea declarar. Esto se hace haciendo un clic sobre la posición 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 descripción del nuevo BIT.

Page 218: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 218 de 242

Puertos

Configurar Puerto A En Niple, la configuración de los puertos se realiza de manera totalmente visual, trabajando directamente

sobre una imagen del

PIC.

El puerto A está

conformado sólo por 5

bits (RA0 – RA4).

En la pantalla de

configuración del

Puerto A, se presenta

una imagen del PIC

con las descripciones

de todos los pines.

En cada pin

correspondiente al

puerto A se muestra

una casilla de

verificación, a través

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.

Además, debido al tamaño de estos modelos (de 40 pines) la imagen del micro es demasiado grande

para caber en la

pantalla de

configuración. Por

esto, Niple le

presenta una barra de

desplazamiento en la

parte derecha de la

pantalla de

configuración. De

esta manera, puede

“recorrer” la imagen

del micro, como lo

muestra la siguiente

ilustración.

Page 219: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 219 de 242

Configuración de los canales A/D Cuando alguno de los pines del puerto A (a excepción del pin RA4) es configurado como entrada, ésta

puede utilizarse como

entrada digital o como

una conversión

analógica/digital

(A/D).

Por esto, se

presenta una segunda

casilla de verificación

donde se especifica el

tipo de lectura a

realizar.

Por defecto se

presenta opción ‘D’

que significa “Entrada

Digital”.

Haciendo un clic en la casilla de verificación se conmuta a “Conversión A/D”, representada por una ‘A’.

Si selecciona configurar una entrada como Conversión A/D, en la parte inferior-izquierda de la pan talla

se visualiza un cuadro de configuración del voltaje de referencia para la conversión A/D.

El voltaje de referencia puede ser configurado como Referencia Interna (V+= Vdd; V- = Vss); como Refe-

rencia Externa (V+ =

RA3; V- = RA2) o

como una

combinación de

ambas.

Si elige algún

voltaje de referencia

como “externo”, el pin

correspondiente (RA2

o RA3) es

deshabilitado en la

pantalla para que no

pueda ser utilizado

como entrada o como

salida.

Una vez seleccionada la configuración deseada, presione el botón “Ingresar”.

Page 220: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 220 de 242

Antes de insertar el bloque, Niple chequea que la configuración seleccionada corresponda a una de las

combinaciones válidas, ya que no puede seleccionar cualquier combinación 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 ma-

nera de configurar el BIT RA1 como única entrada A/D.

Si el resultado de la

verificación de la

configuración

seleccionada resulta

Incorrecta, Niple lo

advierte y le da la

posibilidad de

seleccionar una

combinación válida.

Observe en la

siguiente imagen donde

se ha seleccionado el

BIT RA1 como única

entrada A/D. Niple

advierte del error y

ofrece asistencia.

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

La configuración seleccionada será actualizada en la pantalla de configuración del puerto A.

Una vez seleccionada la configuración correcta, presione el botón “Ingresar”.

Page 221: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 221 de 242

Si el chequeo de la configuración seleccionada resulta ser correcta, Niple inserta el bloque en el diagra-

ma.

Representación gráfica

Sintaxis

Puerto = Valor_Configuración

Esto se interpreta como: “el puerto ‘A’ es configurado como ‘Valor_Configuración’”.

Donde:

El parámetro ‘Valor_Con figuración’ puede contener alguno de los siguientes códigos:

S = Salida Digital

E = Entrada Digital

A = Canal de Conversión A/D

+ = Voltaje de referencia externa positiva (para conversión A/D)

- = Voltaje de referencia negativa (para conversión A/D)

X = Bit no disponible.

Ejemplos

Configurar Puerto B En Niple, la configuración de los puertos se realiza de manera totalmente visual, trabajando directamente

sobre una imagen del PIC.

En la pantalla de configuración 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 verificación, a través de la cual el pin

es configurado como entrada o salida.

Page 222: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 222 de 242

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 configuración. Por esto, Niple le presenta una barra de desplazamiento en la

parte derecha de la pantalla de configuración. De esta manera puede “recorrer” la imagen del micro, como

lo muestra la siguiente ilustración.

Una vez seleccionada la configuración deseada, presione el botón “Ingresar”.

Page 223: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 223 de 242

Representación gráfica

Sintaxis

Puerto = Valor_Configuración

Esto se interpreta como: “el puerto B es configurado como ‘Valor_Configuración’”.

Donde:

El parámetro ‘Valor_Configuración’ puede contener alguno de los siguientes códigos:

S = Salida Digital

E = Entrada Digital

Ejemplos

Configurar Puerto C En Niple, la configuración de los puertos se realiza de manera totalmente visual, trabajando directamente

sobre una imagen del PIC.

En la pantalla de configuración del Puerto C, se presenta una imagen del PIC con las descripciones de

todos los pines.

En cada pin correspondiente al puerto C se muestra una casilla de verificación, a través de la cual el pin

es configurado como entrada o salida.

Page 224: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 224 de 242

Cuando utiliza los modelos 16F874 ó 16F877 (de 40 pines), la imagen del micro es demasiado grande

para caber en la pantalla de configuración. Por esto, Niple le presenta una barra de desplazamiento en la

parte derecha de la pantal la de configuración. De esta manera puede “recorrer” la imagen del micro, como

lo muestra la siguiente ilustración.

Una vez seleccionada la configuración deseada, presione el botón “Ingresar”.

Representación gráfica

Sintaxis

Puerto = Valor_Configuración

Esto se interpreta como: “el puerto C es configurado como ‘Valor_Configuración’”.

Donde:

El parámetro ‘Valor_Configuración’ puede contener alguno de los siguientes códigos:

S = Salida Digital

E = Entrada Digital

Ejemplos

Page 225: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 225 de 242

Configurar Puerto D En Niple, la configuración de los puertos se realiza de manera totalmente visual, trabajando directamente

sobre una imagen del PIC.

En la pantalla de configuración del Puerto D se presenta una imagen del PIC con las descripciones de

todos los pines.

En cada pin

correspondiente al

puerto D se muestra

una casilla de

verificación, a través

de la cual el pin es

configurado como

entrada o salida.

Niple le presenta

una barra de

desplazamiento en la

parte derecha de la

pantalla de

configuración. De esta

manera puede

“recorrer” la imagen del micro, como lo muestra la siguiente ilustración.

Una vez seleccionada la configuración deseada, presione el botón “Ingresar”.

Representación gráfica

Sintaxis

Puerto = Valor_Configuración

Esto se interpreta como: “el puerto C es configurado como ‘Valor_Configuración’”.

Donde:

El parámetro ‘Valor_Configuración’ puede contener alguno de los siguientes códigos:

S = Salida Digital

E = Entrada Digital

Ejemplo

Page 226: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 226 de 242

Configurar Puerto E En Niple, el puerto E se configura junto con el puerto A.

Consulte la configuración del puerto A.

Módulos CCP Los microcontroladores de la línea 16F87x pueden contener 1 ó 2 módulos de Captura, Comparación y

Modulación por ancho de pulso (CCP), llamados CCP1 y CCP2. La cantidad de módulos CCP disponibles

depende del modelo de PIC.

Para ambos casos tienen registros de control o configuración y registros de trabajo. Los registros de con-

trol y trabajo para el módulo CCP1 son: CCP1CON dirección 17h y CCP1RH-CCP1RL direcciones 16h y

15h, mientras que para el módulo CCP2 son: CCP2CON dirección 1Dh y CCP2RH-CCP2RL direcciones

16h y 15h.

CCPxX CCPxY CCPxM3 CCPxM2 CCPxM1 CCPxM07 6 5 4 3 2 1 0

Asignación de bits a los registros CCPxCON, x puede tomar el valor 1 o 2.

Los módulos pueden trabajar en tres modos diferentes, que son:

- Modo Captura

- Modo Comparación

- Modo Modulación por Ancho de Pulso, PWM

CCPxM3-0

00000100010101100111100010011010101111xx

Modo comparación que genera una interrupción en el programa.Modo comparación que genera un disparo para cada módulo.Modo PWM

Modo captura cada 4 flancos ascendente.Modo captura cada 16 flancos ascendente.Modo comparación que activa la salida RC.Modo comparación que desactiva la salida RC.

Modo de trabajo para los módulos CCPMódulo desconectado.Modo captura cada flanco descendente.Modo captura cada flanco ascendente.

Modo Captura Antes de pasar a desarrollar la metodología de programación con Niple, realizaremos una breve descrip-

ción 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 módulo CCP1 o en los registros CCPR2H y CCPR2L para el módulo CCP2.

Para el módulo CCP1, el Pin RC2 debe estar configurado como Entrada y para el módulo CCP2, el Pin

RC1 debe estar configurado como Entrada.

El TMR1 debe estar configurado con la opción “Origen de señal de reloj” = Reloj Interno. (Recuerde que

también el TMR1 puede ser configurado para que incremente mediante una señal externa).

Page 227: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 227 de 242

La captura se realiza cada vez que ocurre alguno de los siguientes eventos en el Pin correspondiente a

cada módulo, 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.

Además puede generarse una interrupción, 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 módulo CCP como Entrada.

En este caso trabajamos sobre el modo Captura del módulo CCP1, pero lo desarrollado a continuación

es valido también para el modo Captura del módulo CCP2.

Una vez realizados los pasos previos necesarios ya esta en condiciones de

realizar una Captura.

Ingrese al árbol de herramientas y seleccione la opción “Insertar / Rutinas

Básicas / Módulos CCP / Módulo CCP1 / Config. y Activar CCP1” como se

muestra en la imagen de la derecha.

Se presenta la pantalla “Módulo CCP1”. Es importante aclarar que los 3

modos (Captura, Com paración y PWM) se programan en la misma pantalla ya

que pertenecen al mismo módulo.

Seleccione el modo Comparación en la lista desplegable denominada “Modo

a utilizar”.

Para garantizar el correcto funcionamiento, Niple chequea de manera automática si previamente han si-

do configurados el temporizador TMR1 y el Pin correspondiente al módulo, en este caso el Pin RC2 como

entrada.

Si todo esta 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.

Page 228: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 228 de 242

En primer lugar debe seleccionar la configuración del evento que provoca la captura.

Para este caso, seleccione de la lista desplegable la opción “1 Flanco Ascendente”.

Page 229: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 229 de 242

A continuación 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 indi ca que se ha realizado una

captura.

2) No esperar y generar una interrupción por

Fin de Captura: Se configura el modo

Captura y continúa ejecutando el resto del

código. Cuando se realiza la captura se

produce una interrupción por “Fin de

Captura”.

Sea cual fuere la opción seleccionada, a

continuación le solicita que seleccione los registros

donde guardar el resultado de la captura.

Si ha seleccionado la opción “No esperar y generar una interrupción”, Niple chequea el estado de las in-

terrupciones y ofrece la posibilidad de habilitar las

interrupciones que se encuentran deshabilitadas.

La ilustración de la derecha muestra este caso.

Por último puede ingresar un comentario.

Una vez seleccionados todos lo parámetros,

presione el botón “Ingresar”.

Page 230: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 230 de 242

La siguiente ilustración muestra el bloque insertado con los pasos anteriormente realizados.

En la siguiente imagen se muestran el bloque y el entorno de “Interrupción por CCP1” que son insertados

en el tipo de captura “por interrupción”.

La siguiente imagen muestra los bloques insertados en el entorno del “Programa Principal” .

Page 231: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 231 de 242

La siguiente imagen muestra el entorno de “Interrupción por CCP1” y los bloques que se insertan de ma-

nera automática.

Modo Comparación 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

según la configuración seleccionada.

Estos eventos son:

- Poner a 1 el Pin RC2 para CCP1 o e l Pin RC1 para CCP2.

- Poner a 0 el Pin RC2 para CCP1 o el Pin RC1 para CCP2.

- Generar una interrupción. Esta opción no afecta al Pin RC2 para CCP1 o el Pin RC1 para CCP2.

Para el módulo 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 opción “Origen de señal de reloj” = Reloj Externo, entonces este módu-

lo puede ser utilizado como contador de eventos que al llegar al valor deseado se produzca una acción de-

terminada sin necesidad de estar monitoreando el estado de cuenta.

Si el TMR1 es configurado con la opción “Origen de señal de reloj” = Reloj Interno, entonces este módulo

puede ser utilizado para generar eventos en un determinado periodo.

Page 232: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 232 de 242

Cada vez que se realiza una comparación, se activa el BIT 2 (CCP1IF) del registro PIR1, o el BIT 0

(CCP2IF) del registro PIR2.

Además puede generarse una interrupción, si previamente fue configurado el BIT 2 (CCP1IE) del registro

PIE1 o el BIT 0 (CCP2IE) del registro PIE2.

Programando el modo Comparación en Niple

Para poder utilizar el Modo Comparación primero debe realizar los siguientes pasos:

- Configurar y activar el temporizador interno TMR1.

- Configurar el Pin correspondiente al módulo CCP como Salida.

En es te caso trabajamos sobre el modo Comparación del módulo CCP1,

pero lo desarrollado a continuación es válido también para el modo

Comparación del módulo CCP2.

Una vez realizados los pasos previos necesarios ya esta en condiciones de

realizar una Comparación.

Ingrese al árbol de herramientas y seleccione la opción “Insertar / Rutinas

Básicas / Módulos CCP / Módulo CCP1 / Config. y Activar CCP1” como se

muestra en la imagen de la derecha.

Se presenta la pantalla “Módulo CCP1”. Es importante aclarar que los 3

modos (Captura, Comparación y PWM) se programan en la misma pantalla ya

que pertenecen al

mismo módulo.

Seleccione el modo Comparación en la lista

desplegable denominada “Modo a utilizar”.

Para garantizar el correcto funcionamiento,

Niple chequea de manera automática si

previamente han sido configurados el

temporizador TMR1 y el Pin correspondiente al

módulo, en este caso el Pin RC2 como Salida.

Si todo esta correctamente 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

Comparación. 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 comparación también corresponde a un número de 16 bits.

Page 233: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 233 de 242

Niple le ofrece la posibilidad de asignar el valor de comparación mediante un valor Literal (valor constan-

te) o mediante el valor contenido en 2 registros (valor Variable) ofreciendo una mayor versatilidad.

De esta manera Ud. puede ajustar el valor de comparación a sus necesidades.

Si Ud. desea desarrollar un sistema “contador” que realice una determinada acción al llegar a la cuenta

de 1000. Entonces debe seleccionar las opciones “Valor Literal”, Tipo “Decimal” y “1000” como “valor de

comparación”. Tenga en cuenta que no podrá cambiar el valor de comparación dado que se trata de un va-

lor constante. Si en el futuro desea cambiar el “valor de comparación”, deberá generar nuevamente el códi-

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

Una forma más versátil de realizar esto es: asignar el valor de comparación como variable, por ejemplo,

mediante 2 registros llamados “cant_max_1” y “cant_max_2”. Esto le permite diseñar el programa para po-

der actualizar el “valor de comparación” mediante algún sistema de “Set Point” (por RS232, Teclado, o pul-

sadores que incrementen y decrementen estos valores) y se guarde (por ejemplo) los valores de estos 2

registros en la memoria EEPROM.

A continuación seleccione el evento a realizar

cuando el TMR1 llegue al estado de cuenta del

“valor de comparación”. Aquí tiene 3 opciones:

- Poner a 1 el Pin correspondiente.

- Poner a 0 el Pin correspondiente.

- Generar una interrupción. Esta opción

no afecta al Pin correspondiente el Módulo CCP.

Si elige alguna de las 2 primeras opciones.

Niple se solicita que seleccione una de las 2

maneras que tiene de realizar la comparación.

1) Esperar en un bucle hasta que termine la

Comparación: 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 ha

finalizado la comparación.

2) No esperar y generar una interrupción por Fin de Co mparación: Se configura el modo Comparación y

continúa ejecutando el resto del código. Cuando el valor del TMR1 es igual a valor de comparación,

se produce una interrupción por “Fin de Comparación”.

Page 234: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 234 de 242

Si ha seleccionado la opción “No esperar y generar una interrupción...”, Niple chequea el estado de las

interrupciones y ofrece la posibilidad de habilitar las interrupciones que se encuentran deshabilitadas.

La siguiente ilustración muestra este caso.

Page 235: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 235 de 242

Por último puede ingresar un comentario.

Una vez seleccionados todos lo parámetros, presione el botón “Ingresar”.

La siguiente ilustración muestra el bloque insertado con los pasos anteriormente realizados.

En la siguiente imagen se muestran el bloque y el entorno de interrupción por “Interrupción por CCP1”

que son insertados en el tipo de comparación “por interrupción”.

La siguiente imagen muestra los bloques insertados en el entorno del “Programa Principal”.

Page 236: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 236 de 242

La siguiente imagen muestra el entorno de “Interrupción por CCP1” y los bloques que se insertan de ma-

nera automática.

Modo PWM En este modo, el microcontrolador genera un pulso a una determinada frecuencia en el Pin correspon-

diente al módulo CCP y cuyo ancho de pulso (tiempo de duración 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 fórmula:

Periodo = 1 / Frecuencia_a_generar

PR2 = (Periodo / (4 * Tosc * Predivisor_de_TRM2)) – 1

Donde:

Tosc (Tiempo de oscilación) = 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 fórmula:

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

Page 237: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 237 de 242

Además, 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, respectivamente.

Y los bits 2 a 9 se ubican en el registro CCPR1L según 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 i nterno TMR2.

- Configurar el Pin correspondiente al módulo CCP como Salida.

En este caso trabajamos sobre el modo PWM del módulo CCP1, pero lo

desarrollado a continuación es valido también para el modo PWM del módulo

CCP2.

Una vez realizados los pasos previos necesarios ya esta en condiciones de

configurar el PWM.

Ingrese al árbol de herramientas y seleccione la opción “Insertar / Rutinas

Básicas / Módulos CCP / Módulo CCP1 / Config. y Activar CCP1” como se

muestra en la siguiente figura.

Se presenta la pantalla “Módulo CCP1”. Es importante aclarar que los 3

modos (Captura, Comparación y PWM) se programan en la misma pantalla ya

que pertenecen al mismo módulo.

Seleccione el modo PWM en la lista desplegable denominada “Modo a

utilizar”.

Page 238: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 238 de 242

Para garantizar el correcto funcionamiento, Niple chequea de manera automática si previamente han si-

do configurados el temporizador TMR2 y el Pin correspondiente al módulo, en este caso el Pin RC2 como

Salida.

Si todo esta correctamente 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 Niple le presenta información

acerca de la configuración del temporizador TMR2.

En este caso se muestra el valor de configuración

del Prescalado, dado que este valor se utiliza para

realizar los cálculos 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 opción “Tipo de Frecuencia” = Fija.

A continuación ingrese la frecuencia que desea

generar.

Niple calcula y muestra automáticamente el rango válido de frecuencias que puede generar. Este rango

depende de Prescalado del temporizador TMR2 y de la velocidad del cristal utilizado.

A modo de ilustración vamos a generar una

frecuencia de 5000 Hz.

Observe que mientras Ud. ingresa el valor de la

frecuencia a generar, Niple calcula de manera

automática 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 según sus necesi-

dades:

1) Control por ancho de pulso Fijo: se genera un

control por ancho de pulso constante a un

determinado porcentaje del período y este

porcentaje no podrá ser modificado. (Es

decir, para modificar este porcentaje de

control de ancho de pulso deberá volver a

generar el código ASM, compilar el archivo

.hex y volver a grabar el PIC).

Page 239: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 239 de 242

2) Control por ancho de pulso Variable: el valor de configuración 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 automática el rango de valores permitidos para el control del ancho

de pulso. Debe prestar especial atención de asignar a los registros seleccionados, un valor que se encuen-

tre dentro de este rango.

Para facilitar esto, Niple cuenta con el módulo de “escalar un valor”. Consulte el módulo de función ma-

temática “Escalar un valor”.

Por último puede ingresar un comentario.

Una vez seleccionados todos lo parámetros, presione el botón “Ingresar”.

La siguiente ilustración muestra el bloque insertado con los pasos anteriormente realizados.

Page 240: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 240 de 242

Comunicaciones

RS232

RS232 – Enviar

El protocolo RS232 es utilizado para comunicación con el puerto serial de las computadoras (puertos

COM).

Este módulo le permite enviar datos mediante el protocolo de comunicación RS232 ya sea a otros micro-

controladores o a una PC.

Primero debe selecciona el tipo de

comunicación a realizar la cual puede ser

mediante módulo USART.

La USART es un módulo de

comunicaciones que los modelos de la línea

16F87x incluyen. Es decir que todo el

procedimiento de envío de los datos se realiza

de manera automática mientras que si se

realiza “por código”, se generará el código

Assembler necesario para realizar el envío de

los datos.

La diferencia radica en que el módulo

USART prepara el dato e inicia el envío y

luego vuelve a segui r ejecutando el resto del

código del programa sin necesidad de realizar

todo el proceso de envío del dato ya que este se realiza de manera automática y en forma paralela a la eje-

cución del resto del programa. Mientras que si se realiza “por código”, la ejecución del programa realiza todo

el proceso de envío del dato.

Si selecciona el modo de envío “por USART”, el sistema selecciona de manera automática el pin de

transmisión correspondiente. Este pin no puede ser modificado dado que el módulo USART utiliza un de-

terminado pin para el envío de datos.

Si selecciona el modo de envío “por Código”, el sistema le solicita que seleccione el pin de transmisión

por el cual quiere realizar la comunicación.

A continuación debe seleccionar la velocidad de comunicación.

Por último seleccione el dato a enviar.

RS232 – Recibir El protocolo RS232 es utilizado generalmente para comunicación con el puerto serial de las computado-

ras (puertos COM).

Este módulo le permite recibir datos mediante el protocolo de comunicación RS232 ya sea desde otros

microcontroladores o desde una PC.

Page 241: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 241 de 242

Primero debe selecciona el tipo de comunicación a realizar la cual puede ser mediante módulo USART.

La USART es un módulo de comunicaciones que los modelos de la línea 16F87x incluyen. Es decir que

todo el procedimiento de envío de los datos se realiza de manera automática mientras a diferencia del tipo

de comunicación “por código” que se generará el código Assembler necesario para realizar el envío de los

datos.

En primer lugar debe seleccionar el tipo de comunicación: “por USART” o “por Código”.

Si selecciona el modo de comunicación por USART, el sistema seleccionará de manera automática el pin

de recepción. Este pin no puede ser modificado dado que el módulo USART dete rmina el pin (por hardware)

para la recepción de datos.

A continuación debe seleccionar el registro donde guardar el dato recibido.

Por ultimo seleccione la velocidad de comunicación.

Si selecciona el modo de comunicación “por USART”, se deben activar las interrupción por recepción por

USART. Si esto no se realiza, el sistema no “detectará” cuando un dato sea recibido. Por esto, Niple che-

quea si las interrupciones correspondientes han sido activadas:

GIE = habilitador general de interrupciones

PEIE = Habilitador de interrupciones por periféricos

RCIE = Habilitador de interrupción por Recepción en USART.

Si alguna de estas banderas de interrupción no ha sido activada, no se producirá la interrupción al recibir

un dato y por ende, el micro no detectará cuando recibe un dato.

Por esto, Niple supervisa si estas interrupciones están correctamente activadas. Si Niple detecta que las

interrupciones no han sido activadas, por defecto, ofrece la posibilidad de activarlas.

Por último presione le botón “In gresar”.

Page 242: Niple - Manual de Usuario - Español

Niple v4.0 - Programación Visual de Microcontroladores

Página 242 de 242

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 interrupción se activa mientras transcurre el flanco des-

cendente o el ascendente, mientras que para las restantes, podrá seleccionar la tasa de división para el es-

calado de los tiempos.

1) Seleccione la interrupción a configurar, para esto haga clic sobre las casillas de verificación disponi-

bles para cada caso.

2) Si selecciono Interrup. por RB0, haga clic en lo botones de opción correspondientes a Interrup. por

flanco Ascendente o Interrup. por flanco descendente.

3) Si selecciono Interrup. por TMR0 , seleccione de la lista la Tasa de división y el Origen de la señal

de reloj .

Haga clic en Ingresar.