Está en la página 1de 55

INTRODUCCIÓN

Hoy en día la automatización es parte de la vida del hombre, al hablar de


automatización esta implícito el termino de tarjeta de control, estas son
programadas algorítmicamente e interactúan con una serie de componente,
como los sensores, las cuales les suministran información a la tarjeta de
control, para el monitoreo de las variable presente un proceso, y los
actuadores, permiten la modificación de la variable, sustituyendo en cierta
forma la mano del hombre, la programación de la tarjeta se realiza
directamente en un circuito integrado la cual pudiera ser un microprocesador o
microcontrolador, funcionando estos como el cerebro del sistema.

La programación de los microprocesadores y los microcontroladores, se ha


considerado una tarea compleja, inicialmente se programaba en código
assembler y lenguaje C, a medida que ha avanzado la tecnología han surgido
una serie de lenguaje de programación orientado a la programación de
microcontroladores, MPLAB inicialmente facilitaba la tarea de la programación
en código assembler, lenguaje C para programar micros solo se le era mas
fácil a pocos programadores, pero estas dos herramientas eran poco didáctica
y engorrosa a la hora de realizar una pequeña tarea, picbasic le dio un sentido
un poco mas orientado a objeto, pero no era suficientemente didáctico, luego
surgió NIPLE un software que facilitaba en gran forma la programación, pero
con ciertas limitaciones como, el manejo de variable punto flotantes, limitación
en el numero de micros a programar, paginación de memoria, además se tenia
que disponer de tiempo, componentes y herramienta para verificar el
funcionamiento del programa, hasta que llego FLOWCODE, el único programa
que permite la programación y prueba virtual, contando con diversas
herramienta avanzadas, programando un numero considerable de familia de
microcontroladores como lo son PIC, AVR y ARM, resolviendo el problema del
manejo de variable, dando paso a crear herramientas propias de usuario, en
flowcode, código assembler y lenguaje C.

El presente manual ilustra de forma detallada el uso de las herramientas


básicas de Flowcode así como también las conexiones básicas a nivel de
hardware. Esta herramienta permitirá la inclusión de nuevos programadores
de microcontroladores PIC, AVR y ARM, abriendo un mundo de soluciones en
el área de automatización y control, en las diversas rama de la ciencia como:
robótica, meca trónica, electromedicina entre otras.

1
FLOWCODE PROGRAMA ORIENTADO A LA PROGRAMACIÓN DE
MICROCONTROLADORES PIC.

Objetivo general.

Estudiar y manejar el programa de Flowcode, para que los participantes


puedan programar a cualquier microcontrolador PIC .

Objetivo específicos.

Describir de forma breve la función, programación y aplicaciones de los


microcontroladores.

Conocer el Entorno Flowcode.

Estudiar las herramientas y configuraciones básicas que posee flowcode


para realizar los ejercicios pautados en el curso.

Elaborar los ejercicios establecidos en el curso, incorporando mejoras en


las aplicaciones exigidas.

Conocer las conexiones básicas a nivel de hardware para la elaboración


de montajes prototipos.

Herramientas requeridas en curso.

1. Herramientas Físicas.

Los recursos utilizados para impartir el curso son: pizarra acrílica, marcador,
lapto, video bean, protoboard con montaje de prueba, tarjeta programadora.

2. Herramientas Virtuales Software.

Power Point, Word, Flowcode, Labview y WINPIC800 3.55B.

Metodología.

Basado en el método científico, una vez estudiado las aplicación y evolución


de la programación de los microcontroladores, se procederá a conocer el
entorno y las herramientas básicas de flowcode, posteriormente se realizaran
ejercicios prácticos, siendo estos dirigidos por el instructor, cuando los mismos
estén funcionando de manera virtual en el programa, cada usuario deberá
compilar el programa en flowcode y extraer en un pendriver el archivo .hex
generado por el compilador que posee flowcode, luego el estudiante se dirigirá
al montaje de prueba, donde se cargara en el micro el programa realizado,
verificando el funcionamiento real del programa a nivel de hardware. Se

2
pueden realizar los ejercicios de forma individual o en grupo (máximo de 2
personas).

Dirigido.

A estudiante del último nivel de su carrera y/o profesionales con


conocimientos básico de electrónica analógica y digitales, con intereses a fines
a la programación y diseño de tarjetas de control.

Evaluado.

Promediando las evaluaciones de todos ejercicios, bajo los criterios de:

Deficiente: no cumplió con ninguno de los requerimientos del ejercicio.


Regular: cumplió medianamente con los requerimientos del ejercicio.
Bueno: cumplió con casi todos los requerimiento del ejercicio.
Sobre saliente: cumplió con todos los requerimientos.
Excelente: cumplió con todos los requerimiento y realizo mejoras.

Número de participante:

De 8 a 20 participantes máximo de acuerdo al espacio del laboratorio, donde se


impartirá el curso.

3
Contenido de Flowcode para Pic.

• Definición de Flowcode.

• Configuración del entorno Flowcode.

• Estudio del entorno de Flowcode, conociendo las herramienta de


diagrama de flujo y herramienta virtuales tipo hardware.

• Ejemplo de programación simulación y practica, usando diodo led con


secuencia de tiempo para aplicaciones de semáforos.

• Ejemplo de programación simulación y practica, usando diodo led y


potenciómetro, para aplicaciones de monitoreo y control on-off.

• Ejemplo de programación simulación y practica, usando potenciómetro y


displays , para aplicaciones de indicadores.

• Ejemplo de programación simulación y practica, usando potenciómetro y


pantalla lcd, con operaciones matemáticas, regla de tres formulas y
variable punto flotante, para aplicaciones de control de precisión.

• Ejemplo de programación simulación y practica usando pantalla lcd y


teclado matricial, para aplicaciones de control de acceso.

• Ejemplo de programación simulación y practica usando potenciómetro,


pantalla lcd y comunicación rs232. con aplicaciones en Labview. para
sistemas de adquisición datos y control.

• Ejemplo de programación simulación y practica usando el modo pwm,


como generador de señales.

• Ejemplo de programación simulación y practica referente a la creación


de macro o subrutina, bajo lenguaje Flowcode, lenguaje c ó código
assembler.

• Ejemplo de programación simulación y practica del uso de las


interrupciones timer0 y timer1 para realizar tarea cada cierto tiempo
determinado.

• Estudio de ejercicios de comunicación usb, lcd grafico y motores pasó a


paso. potenciómetro digital, y dac 10bits.

• Estudio de circuitos para activación de cargas dc, ac (sw de estado


sólidos).

4
Estudio de Flowcode para PIC y sus aplicaciones. La herramienta del futuro
para la programación de Microcontroladores.

Al hablar de automatización está implícito el término de tarjeta de control,


estas son programadas algorítmicamente e interactúan con una serie de
componentes, como lo son los sensores y actuadores, la programación de la
tarjeta se realiza directamente en un circuito integrado, las cuales pudieran ser
un microprocesador o microcontrolador, funcionando estos como el cerebro del
sistema. Al realizar un estudio sistemático de las diversas herramientas de
programación existentes en el mercado en el área de microcontroladores y
microprocesadores, arrojo como resultado que el programa mas completo para
la programación de microcontroladores es Flowcode, un novedoso programa
orientado a la programación de diversos microcontroladores tipo AVR, ARM y
PIC, único software de programación de micro, que posee dos ambientes
simultaneo, uno de programación de diagrama de flujo y otro de simulación lo
que lo hace exclusivo, contando con múltiples herramientas virtuales tipo
hardware como: Interruptores, Pulsadores, Diodo Led, Display, LCD, GLCD,
Teclado Matricial, RS232, USB, PWM, Interrupciones, EEPROM, Timer,
Bluetooth, GPS, Ethernet, X.10, Servomotores, Motores Paso a Paso, Módulos
RF, Protocolo TCPIP, Webserver, entre otros, puede trabajar con mas de 47
tipos de sensores y mas 150 aplicaciones de la empresa matriz multimedia,
mas otras aplicaciones externa, permitiendo además al usuario realizar
herramientas propias en Flowcode, Lenguaje C o Código Assembler, contando
con su propio compilador, y programador. A través del método científico se
realizo un estudio teórico práctico de Flowcode, la cual permitió la elaboración
de un manual de Flowcode para PIC, este brindara a los investigadores de esta
área, múltiples soluciones en materia de automatización, el mismo viene
sustentando por un curso teórico práctico ha impartirse en el IUT Cumana y su
extensión de Punta de Mata. Con miras a ser extendido a otros institutos del
país.

Palabras claves: diseño, control, programación.

5
CURSO DE FLOWCODE

Flowcode es un programa orientado a la programación de


microcontroladores AVR, ARM y Microchip, la programación se realiza a través
de diagrama de flujo, una vez construido el programa, Flowcode permite
traducir el diagrama de flujo a lenguaje C, o a código assembler (ASM), y a su
vez compila el programa dentro del mismo entorno, genera el código .HEX,
que es el que finalmente se graba en el micro a través de la placa del
programador y su respectivo software. Flowcode tiene 2 ambiente simultáneo,
uno de diagrama de flujo y otro panel de componente hardware, permitiendo
simular el comportamiento del programa a través de una serie de componentes
virtuales tipo hardware colocado en el panel de componente. Flowcode posee
una serie de subrutina que permiten monitorear y/o controlar los componentes
virtuales hardware, permitiendo observar el comportamiento del programa. Sin
necesidad de realizar montaje de pruebas, sino cuando finalmente se va a
montar en la placa prototipo con la garantía que brinda Flowcode de un óptimo
funcionamiento del programa según la simulación respetando sus pruebas de
simulación.

Este programa le permite al programador realizar subrutinas propias, bien


sea Código Assembler o en Lenguaje C, según sea la preferencia del
programador. Para convertirla en macro ó bloque en lenguaje Flowcode, con la
salvedad que ese código no permite la simulación de los componentes.

Conocimientos básicos.

Antes de comenzar a explicar el programa de Flowcode para aquellos que se


están iniciando en esta área de la electrónica, es necesario tener
conocimientos básicos de electrónica analógica y digital, las conexiones
básicas que debe tener un micro para que funcione el programa realizado en
Flowcode, las cuales se va a descargar al microcontrolador a través del
programador.

La figura 1 muestra conexión básica de un microcontrolador, los pines comunes


de conexión en los microcontroladores son:

Mclr : Masterclear
Gnd: Tierra
Vdd: Voltaje positivo
Osc1: Entrada de cristal
Osc2: Salida de cristal

6
Figura 1. Conexiones Básicas de los Microcontroladores.

El Programador

Una vez realizado el programa en Flowcode u otro lenguaje de


programación de micro, se debe compilar el programa en un software
compilador, este genera un archivo con extensión .HEX, en donde el usuario
debe contar con un programador. Este es una tarjeta que se conecta al PC, y
dentro de ella, se inserta el micro a programar, cada programador posee un
software el cual permite que se transfiera el archivo .Hex generado en el
compilador al microcontrolador.

Unos de los programadores más versátil económico que programa diversos


microcontroladores, es el programador WINPIC800 3.55B, la cual permite
detectar el micro en la tarjeta, programarlo y a la vez permite probar el
programa sin necesidad de sacar el micro de la tarjeta, suministrándole la
energía del puerto USB al circuito, la figura 2 muestra la conexión ha realizar,
se recomienda dejar libre los pines rb6 y rb7, pudiéndose utilizar estos pines en
el circuito, solo como salida de led, hay que conectar los pines de vdd y gnd del
micro a 5vdc y gnd del programador.

7
Figura 2. Conexión Física del Programador.

8
Pasos para configurar el entorno FlowCode

Antes de comenzar a programar, al abrir el programa lo primero que se ve


es una subventana, en donde le pregunta al programador si se va crear un
nuevo programa o se va abrir un programa existente, elegimos la opción nuevo.
La cual se observa la figura 3.

Figura 3. Primer Entorno de Flowcode.

Luego de elegir la opción nuevo se abre una nueva ventana, en la cual el


programador debe elegir el modelo del microcontrolador a usar. Visto en la
figura 4.

Figura 4. Elección del Micro a Utilizar.

Posteriormente se abrirá el entorno de flowcode, si el entorno no esta en


español, damos clic en la opción view y luego el ultimo ítems de global
options ó opción y en la opción “override languaje” se cambia la opción a
español.

9
Una vez establecido el idioma, procedemos a elegir el cristal que va utilizar
el micro en el montaje. Volvemos a elegir la opción view y luego elegimos
Project options.

En la figura 5 se puede observa la ventana Project Options, en ella se


encuentra la configuración del programa por ejemplo en target se observa el
modelo de micro a utilizar, la velocidad del reloj que se vaya utilizar en un
posible montaje, la velocidad de simulación entre otros parámetros.

Figura 5. Opciones de Proyecto

En la opción view es importante que este seleccionado todas las herramientas


y panel tal como se ilustra en la figura 6

Figura 6. Opciones de View (vista).

10
Herramienta de comando: son todos los comandos de diagrama de flujo.
Herramienta de componentes: son todos los componentes virtuales que
posee flowcode.
Chip: micro utilizado en el programa.
Panel: es el entorno donde se colocan los componentes virtuales.

Pasos a la hora de estructurar un programa en Flowcode.

Una vez configurado el entorno Flowcode referente al lenguaje, tipo de micro a


utilizar, velocidad del cristal a usar en el circuito, y la visualización de todas las
herramientas para realizar el programa, se procede a realizar los siguientes
pasos.

Establecer los elementos virtuales que requiere el programa e insertarlo


en el entorno de componente.

Una vez insertado el componente se selecciona el mismo y se procede a


dar click a la derecha del usuario en la opción Ext Properties, allí el
usuario podrá modificar las características físicas de los componentes,
así como elegir otra serie del mismo componente.

Luego el usuario debe entrar en la opción Connections, allí se debe


establecer las conexiones del componente en el microcontrolador.

En la opción ayuda el usuario podrá consultar al programa, acerca del


funcionamiento del componente virtual elegido si lo desea.

Los primero macros que se acostumbran a insertar son los de


configuración de elementos virtuales claro esta, en el caso de utilizar
elementos virtuales con operación de inicialización. Los macros de
inicialización no deben estar en ciclos repetitivos.

Los siguientes macros a insertar son los de interrupción si el programa


utiliza interrupción.

Posteriormente se acostumbran a utilizar etiquetas o ciclos repetitivos y


dentro de ellos, múltiples operaciones de acuerdo a la lógica del
programa.

Una vez realizado toda la estructura del programa en la opción Chip se


elije configurar para establecer las opciones de compilador, el cual se
explica mas detalladamente en el presente manual, una vez configurado
estas opciones, el usuario podrá traducir y compilar el programa en ASM
(código assembler) lenguaje C y código .Hex que es el que finalmente
se grabara en el microcontrolador a través de la tarjeta programadora
por medio de un PC y un software.

11
ENTORNO FLOWCODE

SÍMBOLO DE HERRAMIENTAS VIRTUALES

Autor: Ing. Ulises Gómez Figura 7. Entorno Flowcode.


IUT Cumana Ext. Punta de Mata
www.electronicalatianoamericana.com 1era Revisión
Apure _ Venezuela
ulitronic@cantv.net 12
Símbolo para Insertar Led

Símbolo Para Insertar Hasta 8 Led

Símbolo Para Insertar Display

Símbolo Para Insertar hasta 4 Display.

Símbolo Para Insertar Pantalla LCD.

Símbolo para Insertar Pantalla GLCD Gráfica.

Símbolo Para Insertar Interruptor.

Símbolo Para Insertar Hasta 8 Interruptores.

Símbolo para Insertar Potenciómetro Analógico.

Símbolo para Insertar Teclado Matricial.

Símbolo que Inserta Instrumento para Observar el Contenido de la Memoria del


Micro.

Símbolo que Inserta Instrumento para Observar la Señal PWM Generada.

Símbolo que Inserta Instrumento que Simula la Comunicación entre el Micro y un


PC por RS232.

Símbolo que Inserta Instrumento que Simula la Comunicación entre el Micro y


dispositivo que Maneje i2c.

Símbolo que Inserta Motores Servomotor.

Símbolo que Inserta Motor Paso a Paso.

13
Manejo del Protocolo SPI.

Manejo de Protocolo Para el Manejo de USB Modo Esclavo Módulo Matriz.

Manejo de Protocolo para el Manejo de USB.

Manejo de Módulos Externos RF.

Manejo de Protocolo TCPI Módulos Matriz.

Manejo de Protocolo TCPI Para Publicar Datos en Servidor Web Módulos Matriz.

Manejo de Protocolo Bluetooht Módulos Matriz.

Manejo de Protocolo para el Manejo de Memorias Micro SD Módulos Matriz

Manejo de Protocolo Para Manejar Música Módulos Matriz

Manejo del GPS Módulos Matriz

Manejo de los Motores del Carrito Matriz

14
EXPLICACIÓN BÁSICA DE LOS SIMBOLOS DE FLOWCODE: el cuadro 1
denota los símbolos existentes en Flowcode y su función básica.
Este símbolo se utiliza para leer en un bit o todo el puerto del
micro

Este símbolo se utiliza para escribir en un bit o todo el puerto


del micro

Este símbolo es un bloque D de delay o demora


Este símbolo es un condicional usados con variable y
constante con operaciones con o sin paréntesis y comandos
como: =,<><, <=, >, >=,>>, <<,
Este símbolo es una estructura de casos

Símbolo A: Etiqueta para definir un salto

Símbolo A para Salto a etiqueta

Loop al incluir este símbolo se incluyen 2 símbolo


permitiendo repetirse de manera infinita o N veces lo que
esta dentro del ciclo.
Símbolo usado para llamar un macro hecho por el usuario o
crear uno nuevo

Símbolo usado para llamar macro o subrutinas para


manipular los componentes insertado

Operaciones matemática : con paréntesis ( ), =, <>,+, -, *, /,


MOD, <, <=, >, >=,>>, <<, NOT, AND, OR, XOR NOT, AND,
OR, Exclusive OR

Conversiones de formato string, flotante, entero

Activación y llamado a subrutinas dentro de la interrupción

Este símbolo permite crear un bloque realizando las


operaciones en código assembler o lenguaje c

Símbolo para insertar comentario

Cuadro1. Símbolos de Diagrama de Flujo de Flowcode

15
Insertar y editar un bloque.

Para insertar un bloque se debe a puntar el puntero del mouse sobre el


símbolo deseado, manteniendo click izquierdo del mouse presionado permite
arrastrar el símbolo y colocarlo donde el usuario lo desee. Para editar un
bloque el usuario debe dar doble clic sobre el bloque a editar, para modificar
y/o insertar operaciones. Se puede seleccionar múltiples bloque al igual que la
opción de cortar de paint, y arrastras donde desee el usuario esos múltiples
bloque.

El símbolo de ayuda este presente en todas las ventanas de


configuración de los bloques del diagrama de flujo, la cual a la hora que el
usuario tenga alguna duda la satisfaga.

Creación de variables de usuario

La mayoría de los bloque en su configuración posee un botón de Variable,


allí el usuario podrá crear los tipos de variable que considere necesario utilizar
en el programa, y a su vez utilizarla en el bloque a programar, dando doble
ciclo sobre la variable se copiara en la caja de texto de configuración del bloque
una vez creada, la figura 8 muestra el entorno de la creación y selección de
variables.

Los tipos de variable son:

Byte: la cual es un registro de 8 bits.


Entero: la cual es un número que oscile entre -32768 a 32767
Secuencia: variable orientada a cadena de caracteres string de código ascci.
Hasta 20 dígitos.
Punto flotante: variable que almacena valores positivos negativos y con
decimales.

La figura 8. Entorno de la Creación y Selección de Variables.

16
Manejo de formatos:

Todos los bloques de configuración a la hora de pedir el valor de una


variable, el usuario debe elegir el tipo de variable que solicita el programa, tiene
dos opciones, tomar una variable del tipo que se solicita, o colocar un valor
constantes, las cuales podrá ser dependiendo del formato de la variable.

Flowcode admite valores entre el intervalo -32768 a 32767 de todos sus


formatos numericos. Es decir no maneja coherentemente valores numéricos
fuera de ese intervalo, manejándose de forma circular o modular.

A nivel numérico a la ahora que se desea asignar un valor a un variable


numérica constante como byte y entero (int) se puede introducir de tres forma.

En decimal: se coloca el número deseado: 255


En hexadecimal: se coloca el número hexadecimal deseado con el
prefijo 0x ejemplo: 0xFF
En binario se coloca el número binario deseado con el prefijo 0b
ejemplo: 0b11111111

Las variables float (punto flotante) admiten números con signo y decimales,
para definir los decimales deben ser a través de un punto ejemplo 1.23

Las variables string (secuencia) admiten cadena de caracteres a través de


las comillas como por ejemplo “hola usuario” además a la hora de crear la
variable por defecto admite hasta 20 caracteres, y el usuario puede reducir a
esta cadena si lo requiere, editando la variable y bajando este numero.

17
Explicación y configuración de los bloque de diagrama de flujo
contenidos en flowcode.

El bloque I esta sigla proviene del idioma ingles (in: entrada), este
bloque puede ser orientado a un bit específico del puerto o a todo el puerto
como registro.

Para lectura de un bits, en la caja de texto variable, el ejemplo de la figura 9


ilustra la lectura del porta,0 (ra0) la cual es un pin físico del micro, el valor de
este bit se almacena en la variable “VALOR1” la cual tomara el estado de este
bits que puede ser bien sea 0 ó 1.

Figura 9. Símbolo y Configuración, Lectura de un bit en la Variable Valor1.

Para la lectura de un puerto en la caja de texto variable, se elige el registro o


variable de retorno, que va tomar el valor del puerto elegido, en este caso la
variable “resultado” tomara el valor del PUERTO A. si se señala la opción
utilizar enmascaramiento, serán validos solo los bits señalados, y los bits no
seleccionado tomaran automáticamente el valor de 0. Visto en la figura 10.

Figura 10. Símbolo y Configuración en la Variable Resultado se Almacena el


Valor del PuertoA.

18
El bloque O esta sigla proviene del idioma ingles (out: salida), este
bloque puede ser orientado a un bit especifico del puerto, o a todo el
puerto como un registro o variable tipo byte.

Para escribir en un bit, se utiliza específicamente para colocar un 1 o 0, lógico


en la caja de texto variable, a un pin determinado de los puertos del micro. Este
pin, también puede asumir el valor de una variable entera o byte, que puede
estar en 0 o 1. La figura 11 ilustra cómo se coloca un uno lógico en el porta,2
(RA2).

Figura 11. Símbolo y Configuración, Coloca un 1 en el PORTA,2

Para escribir en un puerto completo, en la caja de texto variable, se puede


colocar un valor entre 0 y 255 o se elige la variable, que posee el valor que va
tomar el puerto elegido, en este caso si se señala la opción utilizar
enmascaramiento serán validos solo los bits señalados, y los no seleccionado
tomaran automáticamente el valor de 0. Vista en la figura 12.

Figura 12. Símbolo y Ejemplo de Configuración Coloca el Número 125 en el


PORTB.

19
El bloque con la letra D, esta sigla proviene del idioma ingles (delay:
demora), este bloque produce un retardo de tiempo que puede ser en
microsegundo, milisegundo ó segundo. Según sea la exigencia del programa,
en la caja de texto Tiempo de Demora o Variable, se puede colocar un valor
de 0 a 1000 o que el tiempo varié de acuerdo con la variación de una variable
externa, elegida por el usuario en el botón variable. La figura 13 ilustra la
ventana de programación del bloque.

Figura 13. Símbolo y Configuración de Demora.

Este es un bloque condicional que permite realizar una operación


condicional usados con variable y/o constante con comandos como: =, <>, ,
MOD, <, <=, >, >=,>>, <<. Este bloque presenta una pequeña dificulta con los
símbolo >, < a nivel de teclado, para colocarlos se sugiere presionar el botón
de ayuda “?” y de allí copiarlo para posteriormente pegarlo. El ejemplo de la
figura 14, pregunta si la variable valorx es mayor o igual a 125, si es afirmativo
en la vía si se coloco un bloque de ingreso colocando un cero en el porta,0
(ra0), en la vía negada se coloco un bloque de ingreso colocando un 1 en el
porta,0 (ra0), por defecto la opción SI se encuentra en la vía horizontal, y la
opción NO en la vía vertical, pero si señala la opción intercambiar Si o No
podrá intercambiar las vías del rombo condicional, como un gusto particular del
usuario. La figura 14 ilustra la ventana del condicional y el bloque.

Figura 14. Símbolo, Configuración y Ejemplo del Uso del Condicional

20
Este símbolo es una estructura de caso de igualdad, la cual permite al
usuario tomar hasta 10 decisiones o vías diferentes, de acuerdo con los
valores establecidos por el mismo. En el ejemplo ilustrado en la figura 15.
Pregunta por 3 opciones si la variable valorx es igual a 1 ó 40 ó 100,

Si es igual a 1 se coloco un bloque demora de 1segundo


Si es igual a 40 se coloco un bloque demora de 2 milisegundos
Si es igual a 100 se coloco un bloque demora de 3 segundos

Figura 15. Símbolo, Configuración y Ejemplo de la Estructura de Caso.

Este símbolo es una etiqueta de punto de conexión para salto, por


defecto viene denotado con letras, pero en la caja de texto opción label
(etiqueta) se puede cambiar la letra por un nombre determinado por el usuario.

La figura 16 denota el valor por defecto y la figura 17 ilustra que la etiqueta A


es cambiada por la palabra ciclo.

Figura16. Símbolo, Configuración de Punto de Conexión por Defecto Denota


con Letra.

21
Figura 17. Símbolo, Configuración de Punto de Conexión con Etiqueta
Modificada Denota con la Palabra Ciclo.

Este símbolo es un salto a una etiqueta, de punto de conexión para


salto, en la pestaña de ir a punto de conexión, se muestran todas las etiquetas
o puntos de conexión existentes en el programa, en donde el usuario debe
elegir la etiqueta de salto que requiere. La figura 18. Muestra el símbolo y la
configuración de la ventana.

Figura 18. Símbolo, Configuración de Salto a Punto de Conexión a la Etiqueta


Ciclo.

Este símbolo es de un ciclo repetitivo e incluye en el diagrama dos


símbolos, por defecto viene seleccionado el Bucle Mientras con el valor
1, configurado como un ciclo infinito, la cual debe comenzar al principio
según la selección por defecto, toda la lógica que se encuentre dentro del ciclo
se repetirá indefinidamente. Véase la figura 19 para mayor ilustración.

Figura 19. Símbolo, Configuración de Bucle o Ciclo Repetitivo

22
El ejemplo visto en la figura 20. Ilustra que si se cumple la condición, de
que la variable resultado sea igual 125, resultado = 125”, comenzara desde el
principio realizando todas las operaciones que están dentro del ciclo y al llegar
al final volverá a preguntar por la condición nuevamente, y si no se cumple la
condición si ira al final del ciclo, obviando todas operaciones dentro del mismo.
Regresando nuevamente a preguntar por la condición. Al llegar al final del
bucle siempre regresa a preguntar por la condición, donde se dictaminara, si se
obvian o no, las operaciones dentro del ciclo. De acuerdo a la pregunta a través
de los operandos: =, <>, <, <=, >, >=, >>, <<.

Figura 20. Símbolo, Configuración de Bucle o Ciclo Repetitivo Condicional

Si se selecciona la opción Loop Until (repetir hasta), se debe establecer el


numero de veces que se desea que se repita el ciclo, y por ende las
operaciones que se encuentran dentro del mismo se ejecutaran de manera
cronológica, tal como se encuentran dentro del ciclo.

Este símbolo representa los macro de la herramientas virtuales que


posee flowcode, dando doble clic sobre este símbolo, se abrirá una
subventana tal como se muestra en la figura 21, en la caja de texto
Componente se Pueden observar todos los componente tipos hardware
insertado por el usuario en el panel de componente, y en la caja de texto Macro
se encuentras todas funciones que contiene Flowcode para programar y/o
controlar el componente seleccionado.

23
Figura 21. Símbolo, Configuración de Macro de Componente

La figura 22 muestra la elección del macro del diodo led, le permite


encender o apagar colocándolo en alto o en bajo un pin del puerto
permitiendo al programador obtener una variable de retorno del estado del led.

Figura 22. Configuración de Macro de Componente Diodo Led.

La figura 23 muestra la elección del macro de un suiche, permite realizar tres


operaciones.

-ReadState: permite leer el estado del interruptor asignado a un pin del puerto
1ò 0.
-WaitUntilHigh: se queda el macro en un ciclo repetitivo hasta que el interruptor
asignado a un puerto del PIC pase ha estado alto.

-WaitUntillow: se queda el macro en un ciclo repetitivo hasta que el interruptor


asignado a un puerto del PIC pase ha estado bajo.

24
Figura 23. Configuración de Macro de Componente Interruptor.

El macro elegido en la figura 24 es el del display de cuatro dígitos y solicita tres


parámetros en el botón variable el usuario insertara las variables separadas por
coma(,)

Digit(BYTE): es el número del display contado de izquierda a derecha dentro


del display de 4 dígitos. Son 4 posiciones 0,1,2,3.
Value(BYTE): es el valor que va asumir ese display.
DecimalPont: es el punto del display 0 desactivado 1 activado.

Nota: es importante destacar que la impresión entre macro de displays,


debe estar un retardo de al menos 5 mseg.

Figura 24. Configuración de Macro de Componente Display de 4 Dígitos.

El macro elegido en la figura 25 es de un display, este solicita dos parámetros,


en el botón variable el usuario encertara las variables separadas por coma(,)

Value(byte): valor que va asumir el dysplay


DecimalPont: es el punto del display, 0 desactivado 1 activado

25
Figura 25. Configuración de Macro de Componente Display.

En la figura 26 se aprecia el macro del lcd es elemento muy importante consta


de varios comandos entre ellos tenemos

Start: se utiliza para inicializar el lcd, antes de usar el lcd se debe inicializar,
esta operación se realiza solo una vez, por eso se recomienda no utilizarse en
un ciclo repetitivo.

Clear: función para limpiar el lcd y se utiliza mayormente antes comenzar a


imprimir un mensaje completo en la lcd:

PrintNumber(BYTE number, or INT number); permite imprimir en la lCD una


variable tipo byte o entero.

PrintString(STRING String): permite imprimir un string por ejemplo “hola” o


variable de secuencia hasta 20 dígitos.

PrintASCII: se utiliza para imprimir un caracter.

Command: permite enviar un comando al lcd para ello se debe tener la lista de
ellos.

Cursor (x, y): define la posición del cursor, x: es el del número carácter en la
línea comenzando desde el carácter 0, y: es el número de línea de la pantalla,
comenzando desde la linea0.

ClearLine(BYTE Line_Number): limpia una línea especifica en la lcd

ScrollDisplay(BYTE Direction, BYTE Num_Positions)

Si BYTE Direction= 0 entonces rotara el mensaje a la izquierda


Si BYTE Direction= 1 entonces rotara el mensaje a la derecha
BYTE Num_Positions: a partir de qué carácter ocurrirá la rotación.

26
Figura 26. Configuración de Macro de Componente LCD.

Nota: Después de imprimir un mensaje completo se acostumbra a dejar un


retardo o delay entre 50mseg a 200mseg, especialmente cuando se imprimen
una variable int, para darle tiempo de retención a la memoria del lcd.

La figura 27 ilustra el macro del teclado, el cual permite obtener el número


presionado en el teclado en código ascii o en número entero.

Nota: cuando se esta trabajando con el teclado matricial en ciertas


ocasiones especiales, los bloques de retardo (delay) el tiempo se divide
entre 10, es decir que si se desea obtener un retardo de 1 seg, hay que
colocar un delay de 10 seg.

Figura 27. Configuración de Macro de Componente Teclado Matricial.

27
El macro visto en la figura 28 del modulo rs232, le da opción al usuario de
enviar o recibir, bien sea en código ascii carácter a carácter o una cadena de
caracteres en una variable string o secuencia.

Figura 28. Configuración de Macro de Componente RS232.

El macro visto en la figura 29, se observan las diferente operaciones que posee
Flowcode para manipular el modulo PWM.

Figura 29. Configuración de Macro de Componente PWM.

28
Este símbolo es un macro o subrutina para realizar operaciones
aritmético lógica, inclusive se pueden utilizar formulas donde
intervengan varias variables del mismo tipo, los operandos con variables como
byte y Int, son: ( ), =, <>,+, -, *, /, MOD,>>(rotar a la derecha), << (rotar a la
izquierda), NOT, AND, OR, XOR NOT, AND, OR, dando doble clic sobre este
símbolo, se abrirá una subventana tal como se muestra en la figura 30,

Nota: Es importante destacar que a la hora de realizar operaciones


matemáticas o lógicas, se deben operar de la siguiente forma, es decir
byte con byte, int con int, int con byte o viceversa. float con float, string
con string. Al menos que se utilice una función especial de Flowcode
donde intervengan varios tipos de variables. No se deben realizar
operaciones entre formatos no explicito en la presente nota, como por
ejemplo entre una variable de número entero y una variable de número
flotantes.

En matemática, la aritmética MOD modular es un sistema aritmético para


clases de equivalencia((Clase de números con signo)) de números enteros
llamadas clases de congruencia. Algunas veces se le llama, sugerentemente,
aritmética del reloj, ya que los números 'dan la vuelta' tras alcanzar cierto valor
(el módulo).

Por ejemplo, 23 mod 12 = 11. (Estos cálculos mod 12 son lo que se hace
cuando se convierte la hora de un reloj 24-horas a un reloj 12-horas).

Operaciones con número flotantes

Para realizar operaciones con números flotante solo se deben utilizar


las funciones que posee Flowcode para operar con ellas, las cuales se
explican a continuación:

float = fadd(float, float) - suma de dos números flotantes

float = fsub(float, float) - resta de dos números flotantes

float = fmul(float, float) - Multiplicación de dos números flotantes

float = fdiv(float, float) - División de dos números flotantes

float = fmod(float, float) - MOD de dos números flotantes

Las siguientes operaciones Retorna el valor 1 al byte si se cumple la condición


y 0 si no se cumple.

byte = isinf(float) - verifica si un número flotantes es infinito

29
byte = isnan(float) - Comprobaciones para ver si el punto flotante no es
un número

byte = float_eq(float, float) - compara si dos números flotantes son iguales

byte = float_ge(float, float) - Compara dos números de punto flotante para ver si
uno de ellos es mayores o igual respecto a otro

byte = float_le(float, float) - Compara dos números de punto flotante para ver si
uno de ellos es mayores respecto a otro.

byte = float_lt(float, float) Compara dos números de punto flotante para ver si
uno de ello es menor respecto a otro

int = random() - genera un número aleatorio desde -32768 <=> 32767

Así se tiene por ejemplo:

Tal como se puede observar en la figura 27. En la ventana de configuración


de operaciones, en este bloque se pueden realizar múltiples operaciones
matemáticas con el uso de las funciones matemáticas.

En el botón de funciones están disponibles todas las funciones requeridas


para trabajar en la caja de cálculos, y en el botón variable podemos encontrar
todas las variables existentes en el programa para su utilización en las
operaciones.

Figura 30. Símbolo, Configuración del Macro de Operaciones.

30
Este símbolo se utiliza para colocar comentario a una altura
predeterminada del diagrama de flujo, con el fin de dar una orientación en la
operación, para su mejor compresión, a la hora de analizar un programa estos
comentario son de gran ayuda. Véase la figura 31.

Figura 31. Símbolo, Configuración del Bloque de Comentario

Este símbolo posee funciones que permite la manipulación de variables


string ó secuencia para conversión de variables tipo byte, in,t y float a string
entre otras, tal como muestra la figura 32.

En el botón de funciones están disponibles todas las funciones para


trabajar con string, y en el botón variable podemos encontrar todas las
variables existentes en el programa para su utilización en las operaciones.

En la figura se 32 ilustra el uso de este bloque para transforma una variable


flotante en este caso la variable denominada float5 en una variable de
secuencia string.

31
Figura 32. Símbolo, Configuración del Bloque de Manipulación de String.

Para la suma por ejemplo.

Si Dato1 [20] = "Hola"


Si Dato2 [10] = "Cerebro"
Total [20]

Total = Dato1 + Dato2

Entonces después de la suma la variable Total = “Hola Cerebro”.

Función ToString$(value)

Pasa una variable numérica ó constante a string.

Ejemplo, valor es una variable string y valorx= es una variable de números


enteros

valor = ToString$(12345); almacena 12345 como una cadena a string

valor = ToString$(valorx); pasa el dato de la variable valor a una cadena a


string

Función ToUpper$(string)
Si Str1= hello
Cambias las letras a mayúsculas.
TestStr = ToUpper$(Str1)
TestStr es ahora "HELLO "

32
Función ToLower$(string)
Si Str1= HELLO
Cambias las letras a minúsculas.
TestStr = ToLower$(Str1)
TestStr es ahora "hello "

Función Length$(string)
Si Str1= HELLO
Retorna el número de caracteres
RetVal = Length$(Str1)
RetVal es ahora 5

Función: Right$(string, size)


Str1= “hello “
string: variable string
size: número de caracteres

El siguiente ejemplo ilustra que la variable “Str1” tomaran solo los 3 caracteres
que están a la derecha de la variable tomando en cuenta que si Str1= “hello “ al
tomar los último 3 caracteres de la derecha queda "lo "quedando la variable
TestStr "lo “

TestStr = Right$(Str1, 3)
Ahora la variable TestStr es "lo "

Función: Mid$(string, start, size)

string: variable string


Start: posición de inicio
size: número de caracteres a tomar

El siguiente ejemplo ilustra según la función si la variable Str1= “hello” al usar


la función Mid$(Str1, 2, 3) tomara de la variable str1 los caracteres a partir del
carácter 2, y el número de caracteres a tomar es 3.

TestStr = Mid$(Str1, 2, 3)
TestStr is ahora "llo"

Compare$(string1, string2, compare_type)

String1= variable de secuencia1


String2= variable de secuencia2
compare_type = variable de retorno de resultado

Compara 2 string o variable de secuencia, y retorna un byte correspondiente al


siguiente resultado

33
0 = si los string o variable de secuencia son iguales
1 = string1>string2
255 = string2>string1

El tercer parámetro compare_type determina la sensibilidad del caso


0 = sensibilidad estricta
1 = sensibilidad flexible

Ejemplo

Si Str1 = "ABC"
Si Str2 = "abc"

RetVal = Compare$(Str1, Str2, 0)

La variable RetVal es ahora 255 dado que a pesar que son las misma letras el
caso es de sensibilidad estricta porque unas letras están en mayúsculas y otras
en minúsculas, según la posición que ocupan estos caracteres en el código
ASCII string2>string1

Dado el ejemplo anterior RetVal es ahora 255

Ahora si RetVal = Compare$(Str1, Str2, 1)

RetVal es ahora 0 porque es un caso de sensibilidad flexible por ende las dos
variables son idénticas debido a que son las misma letras así que una este
mayúsculas y otras en minúsculas.

Si Str2 = Str1

RetVal = Compare$(Str1, Str2, 0)

RetVal es 0 porque ambos string son idénticos.

Función FloatToString$(): convierte un número flotante a string.

Ejemplo: pasa la variable de número flotante “resultado” a una variable de


números string denominada valorx.

Valorx= FloatToString$(resultado)

Función StringToInt$(): convierte un string a un número entero

Ejemplo
Pasa la variable string “result” a un número entero almacenado en la variable
de números entero retx.

34
retx=StringToInt$(result):

Función StringToFloat$(): convierte un string a un número flotante


Ejemplo
Pasa una variable string “result” a un número flotante almacenado en la
variable de número flotante Valorx.

Valorx=StringToFloat$(result):

Función NumberToHex$(): convierte un número a código hexadecimal.

Ejemplo
Pasa la variable de número entera “estex” a un código hexadecimal en la
variable Verx.

Verx= NumberToHex$(estex)

Este símbolo se utiliza para llamar o crear un macro. Un macro es una


operación que permite al usuario crear su una rutina de usuario ò
herramienta, la cual podrá utilizar en cualquier programa si lo desea, la figura
33 ilustra la configuración de este bloque. Los macros creados estarán en la
caja de texto macro, y podrán ser editados en el botón OK&Editar Macro.

Pasos para Crear un macro o subrutina

Damos doble sobre el botón crear nuevo macro.

Figura 33. Configuración del Bloque para Llamar o a un Macro.

35
Tal como se muestra en la figura 34. En la caja de texto Nombre del Nuevo
Macro se debe colocar el nombre del macro que se va a realizar,
preferiblemente con un nombre asociado a la operación del macro.

En la caja de texto Descripción del Nuevo macro: si es de preferencia del


programador da una breve explicación de la función del nuevo macro a realizar,
a manera de ilustración

Crear un macro como un macro de usuario propia del programa.

En la figura 31. Si el usuario no va a crear un macro como una herramienta de


usuario para exportar, sencillamente establece el nombre del nuevo macro y le
da ok. Luego procede a dar click al botón OK&Editar Macro, visto en la figura
32, luego se abrirá una nueva sub-ventana, de panel de diagrama de flujo
donde el programador podrá estructurar el nuevo macro.

Crear un macro de herramienta de usuario para exportar y usar en otros


programas.

Si el usuario va a Crear un macro herramienta, debe utilizar las cajas de texto


de, Parámetros, Variables locales, Tipo de retorno

En la caja de texto de Parámetros en editar parámetros, se establecen las


variables que el macro les va a solicitara al programador que introduzca, sobre
las cuales se realizaran operaciones, dentro del macro.

En la caja de texto de Variables locales en editar variable, se establecen las


variables que se va a utilizar en el macro, las cuales van a trabajar con las
variables de parámetros,

En la caja de texto de Tipo de retorno, se elige el tipo de variable que


retornara el macro una vez utilizado, siendo este el último resultado de la última
operación que se realizo dentro del macro dentro del macro. De tal forma se
recomienda no tomar esta variable como resultado que se espera de la
operación, si no utilizar variables declaradas en el programa principal y dentro
macro tomara el valor de una operación determinada deseada por el
programador.

36
Figura 34. Configuración del Bloque Crear Nuevo Macro.

Una vez establecidas todas las variables se les da al botón ok, luego se
abrirá la ventana de Propiedades Macro como se muestra en la figura 35, si el
macro elegido se construyó como herramienta le solicitara al usuario, la
variable de los parámetros según su tipo y la variable de retorno si ese macro
posee variable de retorno. Luego Se procede a dar click a el botón OK&Editar
Macro, posteriormente se abrirá una nueva sub-ventana, de panel de diagrama
de flujo, donde el programador podrá estructurar el macro herramienta a
exportar.

Figura 35. Configuración del Bloque de Macro

37
Como exportar (sacar) una Macro ó subrutina herramienta, para
convertirla en una herramienta

Una vez creada y estructurada la subrutina o macro en el panel superior,


elegimos la opción Macro y elegimos exportar. Se abrirá una ventana como la
de la figura 36. Allí mostrara todas las subrutina que se encuentran el
programa, una vez elegida el macro a exportar se abrirá otra ventana, que le
permitirá al programador guardar la subrutina en una dirección deseada para
su uso particular.

Figura 36. Ventana de Exportar Macro.

Como importar (introducir) una Macro ó subrutina herramienta, para


utilizarla en un programa

Primero se debe tener el macro ó subrutina, y la dirección donde se


encuentra, en el panel superior, elegimos la opción Macro en la opción
importar. Se abrirá una ventana donde le solicita al programador la dirección
donde se encuentra la subrutina, una vez localizada y señalada, se insertara
automáticamente en el programa, y se abrirá una nueva ventana de diagrama
de flujo donde se encuentra la secuencia lógica del nuevo macro insertado,
estando disponible en ese momento en el símbolo del macro, para ser llamado,
y se declaran automáticamente las variables del macro selecionado en el
programa.

Como realizar macros ó subrutinas, que generen varias variables de


retorno en un programa determinado.

Si el usuario requiere que el macro retorne varios valores en varias


variables, entonces dentro del macro o subrutina el usuario debe, igualar las
variables locales a las variables del programa y al exportar la subrutina se

Autor: Ing. Ulises Gómez IUT Cumana Ext. Punta de Mata


www.electronicalatianoamericana.com 1era Revisión
Apure _ Venezuela
ulitronic@cantv.net 38
guardara como una herramienta. Cuando el usuario desee utilizar él macro la
importara, y todas las variables del programa donde se creó la subrutina o
macro, se crearan automáticamente en el programa, dando como resultado
varias variables de retorno. Si existen previamente variables con el mismo
nombre de algunas de las variables de la subrutina o macro el programa
Flowcode lo detectara y le dará una sugerencia para cambiar el nombre.

Como aparecer los macros y la pantalla principal(main) en el entorno de


programa.

Existen dos forma

1.- En la opción Macro que esta en la parte superior del menú, se le da la


opción Mostrar, allí el programa le permite visualizar todos los macros y el
programa principal (main), de esta manera se puede visualizar, en el entorno
de programa tantos la estructura del macro como la del programa principal de
forma selectiva.

2.-Cuando se maximiza la ventana de un macro automáticamente


se desaparece el entorno del programa principal, en la parte
superior de la pantalla a la derecha, se habilitaran de forma
paralela, tres botones para cerrar minimizar o maximizar el ambiente con la
estructura del macro, permitiéndole al usuario tener el acceso a todos los
macros existente y el programa principal.

Como eliminar o crear variables una vez creado el macro.

En este caso, primero hay que tener abierto la estructura del macro en el
entorno del programa. Posteriormente dar clic en la opción Macro y luego en la
opción editar

Nota: Las operaciones con las variables parámetros dentro de un macro


nuevo, a pesar que Flowcode permite realizar varias operaciones con ellas, se
recomienda que solo se hagan 1 sola operación, a partir de allí se respalden en
variables del programa, porque el mismo se tiende a perder cuando se realizan
múltiples operaciones con las variables de parámetros.

Este símbolo se utiliza para configurar y habilitar las interrupciones


y crear subrutinas o macro, para que se ejecuten dentro de la
interrupción, en la caja de texto interrumpir por defectos Flowcode trae 5 tipos
de interrupciones. Véase la figura 37.

39
En el botón Propiedades se abrirá otra ventana para configurar la interrupción
elegida en la caja de texto Interrumpir en:

TMR0: Interrupción por desborde timer0.


TMR1: interrupción por desborde timer1.
TMR2: Interrupción por coincidencia time2 a PR2
INT: Interrupción por flanco en el pin rb0.
PORT: Por cambio de estado en algún pin entre RB4 a RB7.

Figura 37. Ventana de Configuración de Interrupción.

En la figura 38. Muestra la Ventana de Configuración de Propiedades de la


Interrupción por TMR0.

Clock Source Select: la procedencia del clock para el incremento del timer0

Si se elige transiction on TOCKI pin será en modo contador, tomara la señal


de clock que esté presente en el pin ra4. El tiempo que tardara en producirse la
interrupción vendrá determinada por el periodo que este en el pin ra4

Si se elige internal clock (CLKO): tomara la señal del cristal modo


temporizador.

Source Edge Select: se elige si el conteo va hacer en flanco ascendente o


descendente provenientes del clock.

Prescaler Rate: se elige el preescaler que determinara cada cuantos flancos


se incrementara en 1 el tmr0.

En la misma ventana les mostrara la frecuencia en modo temporizador que se


repetirá la interrupción en 1 segundo, si se desea saber este tiempo se debe
dividir 1/(frecuencia de interrupción).

40
Figura 38. Ventana de Configuración de la Interrupción por TMR0.

En la figura 39. Muestra la Ventana de Configuración de propiedades de la


interrupción por TMR1.

Clock Source Select: la procedencia del clock para el incremento del timer0

Prescaler Rate: se elige el preescaler que determinara cada cuantos flancos


se incrementara en 1 el tmr1. En la misma ventana les mostrara la frecuencia
en que se repetirá la interrupción en 1 segundo, si se desea saber este tiempo
se debe dividir 1/(frecuencia de interrupción).

Figura 39. Ventana de Configuración de la Interrupción por TMR1.

En la figura 40. Muestra la Ventana de Configuración de propiedades de la


interrupción por TMR2.

Clock Source Select: la procedencia del clock para el incremento del timer0

Prescaler Rate: se elige el preescaler que determinara cada cuantos flancos


se incrementara en 1 el tmr1.

41
Postcaler Rate: se elige la cantidad de veces que debe ocurrir, la coincidencia
entre pr2 (Rollover) y tmr2 para que deba ocurrir la interrupción.

Rollover Value: es el valor de que tomara el registro pr2, que dictaminara el


tiempo de ocurrencia por interrupción de timer2

En la misma ventana les mostrara la frecuencia en que se repetirá la


interrupción en 1 segundo, si se desea saber este tiempo se debe dividir
1/(frecuencia de interrupción).

Figura 40. Ventana de Configuración de la Interrupción por TMR1.

En la figura 41. Muestra la Ventana de Configuración de propiedades de la


interrupción por flanco en Rb0.
Source Edge Select: se elige si interrupción se producirá por flanco
ascendente o descendente en el pin RB0.

Figura 41. Ventana de Configuración de la Interrupción por RB0.

Una vez configurada la interrupción se procede a crear la subrutina en el botón


crear nuevo macro visto en la figura 42.

42
Este símbolo se utiliza para crear un bloque en lenguaje c ó código
assembler. Una vez insertado el símbolo en el programa se da doble
click sobre el símbolo, abriéndose una ventana tal como se muestra en
la figura 39. Cabe destacar que las operaciones realizadas en este bloque de
código no podrán intervenir en la simulación pero si en el programa que se va a
cargar en el micro, en el mismo orden que se coloco en el programa

una vez mostrado la configuración del bloque código lo primero que se debe
hacer es borrar todo el comentario que muestra en la caja de texto Código C,
se coloca un nombre alusivo a la operación a realizar.

Figura 42. Ventana de Configuración del Bloque para Insertar Condigo en C, o


Assembler.

Insertar código assembler

Para insertar una línea en assembler se antepone las siglas asm antes del
código como por ejemplo asm movlw 50

Para insertar varias instrucciones se coloca

asm

Introduzca el código aquí respetando las reglas de flowcode.

43
Lo que se acostumbra a la hora de insertar código en assembler, si están
involucrados los puertos del micro se deben configurar como entrada o salida,
para proceder a realizar las operaciones requeridas tal como se muestra en la
figura 43.

Figura 43. Ventana de Configuración para Insertar Código Assembler


Manejando los Puertos del PIC y Variables de Flowcode.

Insertar lenguaje C

A la hora de insertar código de lenguaje C, hay que tomar en cuenta las


reglas de Flowcode descrita en el presente manual, referente al uso de las
variables, llamada a macro y salto a etiquetas, trabajar en lenguaje c permite
realizar operaciones matemáticas mas directas, utilizando las funciones de
Flowcode

La figura 44 ilustra el siguiente ejemplo.

LED7Seg40_ShowDigit : es una función orientada a una herramienta virtual,


que permite utilizar un display de 4 dígitos y (2, FCV_COUNT2, 1), son 3
parámetros, que en este caso el display 2, tomara el valor de la variable
COUNT2, y activara el punto del display(1), manejando de esta forma los
parámetros que solicita esa función, para manejar el componente virtual,
igualmente en lenguaje C se puede utilizar los opertandos <, <=, >, ( ), =, <>,+,
-, *, /, MOD,>>, <<, NOT, AND, OR, XOR NOT, AND, OR, >=,>>, <<.

44
Figura 44. Ventana de Configuración en Lenguaje C Manejando Funciones de
Flowcode.

Lo que se acostumbra a la hora de insertar lenguaje C, si se desea utilizar


los puertos del PIC como entrada o salida, inicialmente se deben configurar tal
como se muestra en la figura 45.

Figura 45. Ventana de Configuración para Insertar Lenguaje C Manejando los


Puertos del PIC.

Reglas de Flowcode para manejar: variables, macro de Flowcode y puntos de


conexión.

45
Manejo de Variables de Flowcode en Lenguaje C y Código Assembler.

Por ejemplo si el programador desea usar una variable declarada en Flowcode


como por ejemplo “VALORX” para utililizar esta variable:

En lenguaje C se debe anteponerle el prefijo: FCV_ para utilizar la


variable VALORX quedando FCV_VALORX, los registros especiales se
deben escribir en letras minúsculas como: portb, status, en lenguaje c
se pueden utilizar sin ninguna complicación, sin anteponer ninguna sigla

En código assembler se debe anteponerle el prefijo: _FCV_ para utilizar


la variable VALORX quedando _FCV_VALORX
En código assembler si se desea utilizar registro especiales se deben
escribir en letras minúsculas como el portb, status, entre otros se debe
anteponer el símbolo “_” antes del registro especial en cuestión por
ejemplo bsf _portb,2, y las operaciones orientadas a registros, se les
debe colocar el destino del mismo, por ejemplo incf _porta, w; donde si
se coloca la sigla “W” implica que el resultado quedara en el
acumulador y si se coloca la sigla “F” el resultado de la operación se
queda en el registro que aparece en la operación.

Manejo de llamadas de macro de Flowcode en lenguaje C y código


assembler.

Por ejemplo, si el programador desea llamar un macro de herramienta virtual,


de herramienta de usuario o de usuario elaborado e insertado en el
programa como por ejemplo el macro BIN_BCD en:

En Lenguaje C, se debe utilizar : FCM_() para llamar a el macro


BIN_BCD seria FCM_ BIN_BCD ()

En código Assembler se debe utilizar _FCM_() para llamar al macro


BIN_BCD seria _FCM_ BIN_BCD ()

Manejo de Punto de conexión o etiquetas en Flowcode en lenguaje C y


código assembler.

Por ejemplo, si el programador desea saltar a una etiqueta o punto de conexión


llamado por ejemplo CICLO elaborado en el programa del Flowcode, se debe
utilizar

En lenguaje C se utiliza FCC_ para saltar a la etiqueta o punto de conexión


seria FCC_CICLO.

En código assembler se utiliza _FCC_ para saltar a la etiqueta o punto de


conexión seria _FCC_CICLO.

46
Como utilizar el bloque de insertar lenguaje C y/o código assembler en un
bloque macro de herramienta.

Primeramente este bloque debe estar contenido en el macro de herramienta,


las variables que se utilizan el bloque de código, se deben utilizar dentro de la
subrutina en cualquier otra operación, de esta manera una vez que este macro
se importe a otro proyecto las variables que maneje el bloque de código
también serán importada.

Compilar el programa.

A la hora de compilar el programa, Flowcode trae por defecto la


configuración del programa de la empresa MATRIZ MULTIMEDIA, pero si no
se cuenta con el programador de esta empresa, se debe cambiar la
configuración del compilador, para que se genere de manera correcta el
archivo .hex, de tal forma que el programa funcione correctamente a la hora de
que sea programado con otro tipo de programador. Para ello una vez realizado
el programa el usuario debe dar clic en la opción chip que esta en la barra de
herramienta superior y luego en opción configurar. Posteriormente debe elegir
la opción Switch To Expert Config Screen, allí mostrara una subventana, el
usuario solo debe dejar tres opciones apagada y una deshabilitada en el orden
tal como se muestra en la figura 46 presionando luego el botón OK, el usuario
vuelve a dar el clic en la opción chip y finalmente en la opción compilar a hex,
el programa mostrara la ventana de configuración, la cual debe durar cierto
tiempo, mostrando finalmente return =0, implica que el programa se compilo sin
errores, y genero un archivo con el mismo nombre del programa y en la misma
dirección, pero con extensión .hex, Este archivo lo utilizara el usuario para
grabar el micro en el programador de su preferencia.

Figura 46. Configuración del compilador para programadores que no son de la


empresa Matriz Multimedia c.a.

47
Errores de compilación

En ocasione cuando se manejan varias variables en un macro o subrutina,


a la hora de compilar da error, le exige una variable de retorno, en ese caso, se
debe generar una variable de retorno en la subrutina, para desaparecer este
tipo de error de compilación.

A la hora de compilar un programa donde se utilicen herramientas virtuales, se


deben realizar todas las conexiones de ese instrumento virtual con los pines del
micro, si no dará error de compilación.

Algunas veces el compilador se desconfigura y de forma constante envía


error de compilación, en ese caso se debe cerrar flowcode, luego se vuelve
abrir, tomar un programa de la carpeta Flowcode_V4_Examples/Examples
dentro de la carpeta Interrupts se elige el ejercicio 2. Interrupt every second,
luego se guarda en la misma dirección donde esta el programa que le arrojo el
error en la compilación, se compila Interrupt every second en .hex y luego sin
cerrar el programa abre el programa que estaba mostrando el error de
compilación, esta operación soluciona el problema del compilador
reconfigurándolo permitiendo compilar su programa sin problema.

48
CONEXIONES ENTRE LOS COMPONENTES VIRTUALES Y EL MICRO,
TANTO EN EL AMBIENTE FLOWCODE COMO A NIVEL DE HARDWARE

A la hora de hacer las conexiones tanto a nivel virtual en Flowcode, como a


nivel hardware en un montaje prototipo, se deben seguir ciertos parámetros. En
el curso se van a utilizar: leds, interruptores, display, teclado, lcd, convertidores
A/D, RS232, de las cuales se leS dará al lector un diagrama, estos utilizan las
misma conexiones del montaje de prueba, de tal manera que a la hora de
hacer las conexiones virtuales y reales deben tomar como guía las siguientes
figuras para que puedan probar sus programas en el montaje de prueba.

En la figura 47 se observa el componente y la conexión física, que debe tener


la pantalla lcd, referente a los pines del micro del montaje de prueba.

Figura 47. Diagrama de Conexión del LCD.

49
En la figura 48 se observa el entorno de conexión virtual de LCD en flowcde, la
cual debe realizar el alumno en el curso, para poder probar su programa en el
montaje de prueba.

Figura 48. Entorno de conexión virtual del LCD.

En la figura 49. Se observa el componente y la conexión física, que debe tener


el modulo de displays, referente a los pines del micro del montaje de prueba.

Figura 49. Diagrama de Conexión del Módulo de displays.

50
En la figura 50 se observa el entorno de conexión virtual del modulo de displays
en flowcode, la cual debe realizar el alumno en el curso, para poder probar su
programa en el montaje de prueba usando todo el puerto D para la conexión de
llos segmentos desde d0 hasta d7.

Figura 50. Entorno de conexión virtual del modulo displays..


En la figura 51. Se observa el componente y la conexión física, que debe tener
el modulo de displays, referente a los pines del micro del montaje de prueba.

Figura 51. Diagrama de Conexión del teclado matricial 4x4.

51
En la figura 52 se observa el entorno de conexión virtual del teclado en
flowcode, la cual debe realizar el alumno en el curso, para poder probar su
programa en el montaje de prueba.

La figura 53 muestra dos tipos de teclado el de la foto es el que se va utilizar


en el curso, y el del dibujo, es el que trae por defecto Flowcode.

Figura 53. Teclado convencional y teclado de flowcode.

En el caso del teclado, existe una pequeña dificultad dado que el teclado de
Flowcode trae una estructura diferente referente al orden de las teclas
convencional con en que vamos ha utilizar en el curso, para ello Flowcode en
la parte derecha arriba de la opción connections se debe dar clic en la opción
Ext properties automáticamente se abrirá una ventana tal como se muestra en
la figura 54. y por defecto muestra el valor de cada tecla de acuerdo a su
posición del teclado que trae flowcode, para ello el programador debe cambiar
este orden de los valores de las teclas en forma numerica o asccii, en la figura
55 se muestra como se debe cambiar los valores numericos adaptados al tipo
de teclado utilizado en el montaje de prueba.

52
Figura 54. Entorno de propiedades de componente con valores por defectos

Figura 55. Entorno de propiedades de componente con valores modificados de


valores numéricos, adaptados al montaje de prueba.

53
54

También podría gustarte