Microcontroladores: Lenguajes de Programación (Diagrama de flujo)

avatar

Es un gusto poder saludarles de nuevo para continuar con los aprendizajes sobre microcontroladores, estamos en la etapa de lenguajes de programación y ya hemos visto algunos como ensamblador, C y escalera.

Cuando tienes tantos lenguajes o modos de programación disponibles para un chip significa que realmente es un elemento de gran utilidad, de lo contrario no se hubiese invertido tanto tiempo y recursos para hacer su uso lo más fácil que se pueda.

Recuerdo de mis cursos de informática cuando iniciaba con los conocimientos en programación que nos enseñaban algunas fáses para conseguir el programa de forma ordenada: analisis del requerimiento, diseño del algoritmo, diagrama de flujo, programar, depurar, compilar. Pero con este lenguaje de programación mientras diseñamos el diagrama de flujo estamos creando el programa de forma simultánea. Sí, programación por diagrama de flujo.

Ejemplo de un programa con diagrama de flujo. Fuente: electronico

Un diagrama de flujo es una forma de representar algoritmos complejos en una forma simple y fácil de entender, está conformado por bloques que varían su figura y conectores que representan el camino por donde fluye el programa para pasar al siguiente bloque.

Dentro de cada bloque se pueden establecer funciones o condiciones que modifican la variable o toman acciones en el programa cuando el flujo llega hasta estos determinados bloques que a su vez permiten cambiar la dirección en que fluye el programa, todos estos bloques estan interconectados por líneas que establecen las posibles rutas del programa.

Para alguién con un minimo conocimiento en programación esto debería ser un tema conocido, sin embargo escribo mis artículos pensando en todos y cada uno de mis lectores.

La programación de microcontroladores mediante diagrama de flujo es posible gracias a un software llamado Flowcode el cual brinda un entorno de programación/simulación fácil y atractivo.

Descripción del Entorno de Flowcode (Versión 4). Fuente: @electronico

A la hora de crear un programa el "entorno de componentes" se combina con las "herramientas para diagramas de flujos" haciendo innecesaria la escritura de códigos en cualquier otro lenguaje para ejecutar funciones.

Cuando se añade un componente en el entorno de componentes los bloques ofrecen opciones para manipular el componente añadido, Pero ilustremos esto intentando encender un led.

Primero creamos un diagrama simple usando solo el bloque "macro de componentes" (se explicarán los bloques disponibles en los parrafos siguientes). Lo que veremos es que mientras el entorno de componentes esté vacío este bloque no tendrá opciones disponibles.

Bloque macro de componentes sin ningún componente que operar. Fuente: @electronico.

Ahore vamos a añadir un LED y veremos que aparecerán en el mismo bloque las opciones para manipular su funcionamiento (encender o apagar).

Como ven, se pueden crear programas sin necesidad de escribir ningún código sino usando solo bloques en un diagrama de flujo. Las acciones se llevan a cabo mediante los bloques en combinación con los componentes usados, ahora vamos a dar una pequeña descripción de cada bloque disponible.

El bloque input sirve para escribir un valor en un puerto configurado como entrada en el micro a nivel de bits o en todo el puerto completo según se seleccione.

Bloque input. Fuente: @electronico

El bloque output sirve para escribir un valor en un puerto configurado como salida, en un bit específico de este puerto o en el puerto completo según se desee.

Bloque output. Fuente: @electronico

El bloque Delay sirve para añadir retardos antes de ejecutar el siguiente bloque, estos retardos pueden ser en segundos (s), milisegundos (ms) o en microsegundos (us).

Bloque Delay. Fuente: @electronico

El bloque Decisión evalúa si se cumplen las condiciones establecidas y elije la siguiente ruta a seguir según sea el resultado (si se cumple/no se cumple).

Bloque decisión. Fuente: @electronico

Switch es un bloque que ejecuta la misma operación que la función switch en C, evalúa una condición y genera diferentes operaciones para diferentes resultados.


Bloque Switch. Fuente: @electronico

Este simbolo representa un Punto de conexión para establecer "saltos" dentro del programa, se podría decir que este es un punto de "caída" y para acceder a él se necesita un punto de salto etiquetado con el mismo nombre. Cuando el flujo del programa pasa por este punto no ocurre nada, pero cuando pasa por el "punto de salto" que tiene la misma etiqueta el flujo salta a este punto.

Punto de conexión. Fuente: @electronico

Este bloque es una instrucción de salto (goto) y hace que el programa se dirija a cualquier otro lugar del diagrama donde se haya colocado el símbolo "punto de conexión (descrito en el parrafo anterior) que tenga la misma etiqueta.

Bloque ir a punto de conexión. Fuente: @electronico

Loop crea un bucle while o until, mientras las condiciones se cumplan se ejecutarán todos los bloques encerrados en este bucle.

Bloque Loop. Fuente: @electronico

Call macro permite ejecutar una "subrutina" que es un codigo o diagrama pre-programado para ejecutar tareas específicas dentro del programa, este tipo de subrutinas se conocen también como macros.

Bloque Call Macro. Fuente: @electronico

Call Component Macro nos permite llamar subrutinas precargadas en el software para operar los componentes con mayor facilidad, cuando añadimos un componente en el "entorno de componentes" este bloque incluirá las funciones que permiten operarlo de forma automática como se explicó en los primeros párrafos de este mismo artículo.

El bloque Calculation Sirve para llevar a cabo operaciones de cálculo, en el escribimos nuestras operaciones y se ejecutan si el flujo del programa es dirigido a este bloque.

Bloque Calculations. Fuente: @electronico

Este bloque esta dedicado a las interrupciones, permite configurarlas y activarlas cuando se cumplan las condiciones. Una interrupción es como un salto pero puede ocurrir en cualquier instante del programa sin dependencia de la posición del puntero o bloque donde se encuentre el flujo, una vez configurado se ejecutará en el momento que se cumplan las condiciones llamando a una macro que ejectue las taréas programadas para dicha interrupción.

Bloque interrupt. Fuente: @electronica

C code es un bloque que permite programar en C y todo lo programado se ejecuta cuando el flujo llega a este bloque, es muy útil porque complementa la programación por flujo con programación en C creando una forma más potente de programar.

Bloque C Code. Fuente: @electronico

Este último no tiene ninguna operación en el programa, solo es usado para comentar el programa, se puede colocar en cualquier lugar del diagrama.

Son todos los bloques disponibles para crear nuestros programas en diagramas de flujos.

Con esta entrega ya hemos completado los lenguajes de programación con los que podemos crear nuestros programas para microcontroladores (al menos los lenguajes que yo conozco, si conoces algún otro estaría felíz de que lo compartieses en los comentarios).

Pero conocer los lenguajes de programación de la forma que han sido presentados aún no nos habilita para programar, hay características del microcontrolador a usar que debemos conocer y por supuesto, profundizar los conocimientos en el uso del lenguaje que hayamos elegido, pero no te preocupes. Este no es el fin, en los próximos articulos aprenderemos lo que debemos conocer antes de programar y luego vamos a comenzar a crear programas que expliquen como aprovechar la potencia de nuestro microcontrolador.

Por ahora me despido agradeciendote por haber leído mi artículo, esperando que toda esta información pueda ser de mucha utilidad para ti y quedando atento a la sección de comentarios para tus dudas, sugerencias y opiniones sobre el tema.


Artículos relacionados.

Lecturas recomendadas

  • José M. Angulo Usategui, Ignacio Angulo Martínez, Microcontroladores PIC: Diseño práctico de aplicaciones (primera parte)
  • Ronald J. Tocci, Neal S. Widmer, Sistemas digitales: principios y aplicaciones
  • Albert Paul Malvino, Principios de electrónica, Sexta edición.
  • Robert L. Boylestad, Electrónica: Teoría de Circuitos.
  • Timothy J. Maloney, Electrónica Industrial, dispositivos y sistemas.



0
0
0.000
10 comments
avatar

Thanks for your contribution to the STEMsocial community. Feel free to join us on discord to get to know the rest of us!

Please consider delegating to the @stemsocial account (85% of the curation rewards are returned).

Thanks for including @stemsocial as a beneficiary, which gives you stronger support. 
 

0
0
0.000
avatar

I always admire programmes, there was a time I was planning to venture into learning programming but I gave up when I see how fustrating it is

0
0
0.000
avatar

Well it is never too late to learn, I try to make it as easy as possible although the type of programming I am writing about is microcontroller oriented however it can lay the foundation for an introduction to more advanced programming.

Thanks for leaving me your valuable comment, it encourages me to keep doing my best.

0
0
0.000
avatar

Congratulations @electronico! You have completed the following achievement on the Hive blockchain And have been rewarded with New badge(s)

You distributed more than 1500 upvotes.
Your next target is to reach 1750 upvotes.
You received more than 4750 upvotes.
Your next target is to reach 5000 upvotes.

You can view your badges on your board and compare yourself to others in the Ranking
If you no longer want to receive notifications, reply to this comment with the word STOP

Check out the last post from @hivebuzz:

HiveBuzz World Cup Contest - Recap of Day 9
Hive Power Up Day - December 1st 2022
HiveBuzz World Cup Contest - Check your ranking
0
0
0.000
avatar

Señor cybor que gusto leerte, me tenías abandonado. Pensé que mi progreso se había estancado!!

0
0
0.000
avatar

That is a very good tutorial, thanks
!1UP

0
0
0.000