Hola nuevamente a
los tutoriales de Artes
Electrónicas Pachani, de aquí en adelante
vamos a iniciar un nuevo viaje en la programacion de microcontroladores PIC16F877A en MikroC, En este curso iremos aprendiendo sobre las características de C por ello
este tutorial está dirigido a lectores novatos, aficionados
(hobbistas), estudiantes, que deseen implementar programas para
microcontroladores en lenguaje C.
Comencemos en un lenguaje de alto nivel
Para
empezar diremos que el compilador de alto nivel en lenguaje C utiliza
estructuras que facilitan la programación, optimiza las operaciones
matemáticas y los procesos, por medio del uso de funciones
predefinidas y las no predefinidas que nosotros
mismos podemos crear, así
como el uso de un conjunto de variables, de tipo carácter, entero, y
punto decimal.
Básicamente
el compilador crea automáticamente el código ensamblador y a su vez
un código similar consignado en un archivo con extensión *.hex,
este archivo es el resultado del compilador dado que este servirá
para programar eléctricamente el microcontrolador y también con el
mismo se puede realizar la simulación en Proteus.
Mi
primer proyecto en C
Ya
en el anterior tutorial aprendimos como crear un proyecto, de aquí
en adelante nos ocuparemos de la programación. La estructura de un
programa en lenguaje C, este relativamente simple.
1er
Paso.- Es indispensable
declarar las variables globales que el desarrollador considere
necesarias para el funcionamiento del programa, estás variables
globales son reconocidas por todos los puntos de código del programa
incluidas las funciones propias del desarrollador y la función main.
2do
paso.- El paso a seguir
es hacer las declaraciones de funciones diseñadas por el
desarrollador para las tareas específicas en su programa.
3er
paso.- Posteriormente se
declara la función main
y al comienzo de está se deben declarar las variables que se
requieran dentro de la misma. El código que sigue debe configurar e
inicializar los puertos y módulos del microcontrolador que sean
indispensables en la aplicación.
4to
paso.- Por último se
edita el código que contiene el aplicativo concreto del programa. En
el siguiente ejemplo se puede ver cómo hacer una estructura para un
programa:
Problema
1.- Realizar un
programa que encienda
una lampara en lo alto
de una baliza de telecomunicaciones.
Solución.-
De
la misma manera como iniciamos en nuestros anteriores proyectos
primero vamos a etiquetar nuestro proyecto de manera similar a los
programas realizados en Ensamblador. Esto nos ayudara para tener
información de nuestro programa tanto para poder hacer
modificaciones nuestras o bien para que otra persona, tenga
información sobre como funciona nuestro código.
Según el programa debemos de interpretarlo a nivel del
microcontrolador, de modo que esa lampara puede ser un bit de
cualquier puerto de nuestro microcontrolador de modo que yo escogeré
el puerto A el bit RA0, de modo que cumpla con las características
de nuestro programa.
Ahora
escribamos el siguiente código según nuestra receta anterior, para
facilitar las instrucciones del programa yo lo muestro primer en un
editor de programas llamado Pluma, luego lo copiare en MicroC:
Habrán
notado que la parte de la declaración de las variable globales como
las funciones propias no están escritas con alguna instrucción,
esto es porque de momento no lo necesitamos pues solo nos basta con
realizar la programación en la función principal.
Bien
en la función principal tenemos la configuración del puerto A,
primero llamamos al puerto donde trabajaremos , luego dado la
características del puerto A lo habilitamos de modo que pueda
trabajar como un puerto de entrada y salida digital, y luego lo
habilitamos como un puerto de salida.
Luego
tenemos un ciclo iterativo while
repite o ejecuta un fragmento de programa siempre y cuando la
condición contenida en el while
sea verdadera. De modo que en este caso por while(1), colocara un
SET(1) al bit RA0 por un tiempo según la instrucción Delay_ms(500),
de igual manera se repite para CLEAR (0) con el mismo tiempo.
Simulación
Primero
compilemos nuestro programa en MicroC, abrimos y escribimos nuestro
código en la hoja de programación de MicroC:
Una
vez escrito las instrucciones vamos a la pestaña de Build, según la
imagen siguiente:
Una
vez compilado el programa en la parte inferior de nuestro IDE veremos
lo siguiente:
Primero
vemos la ubicación del programa compilado , luego los archivos
generados para nuestro proyecto, ademas de las características del
programa generado pues nos indica el tamaño como memoria ram
que utiliza para ser ejecutado dentro del microcontrolador como
tamaño del mismo.
Dentro
de nuestro proyecto veremos los siguientes archivos generados:
De
este grupo de archivos utilizaremos el archivo ejer01.hex ,
que lo utilizaremos para su simulación en programas de circuitos
como Proteus.
Simulación
en Proteus
Una
vez se ha generado el archivo ejer01.hex , podemos utiliza
este archivo para simulación y para grabarlo de manera directa hacia
nuestro microcontrolador por medio de un grabador Pickit2 de modo que
ya funcione como debe:
Primer
cargamos al microcontrolador el archivo ejer01.hex para que
pueda realizar la emulación, luego veremos si la simulación
responde a nuestras expectativas.
Primero:
Como
vemos en la imagen el programa enciende el led de salida de modo que
cumple con la primera parte de nuestro programa.
Segundo:
Aquí
el led de salida esta apagado aproximadamente a los 500m[s] según
nuestro programa y luego vuelve a encender el LED de manera
indefinida tal cual lo haría una lampara de Baliza de
Telecomunicaciones.
Para
finalizar el tutorial como habrán notado el programa responde a
nuestros expectativas, con todo lo aprendido hoy se puede decir que
programación en C no es nada difícil, pero hay algo que ronda por
mi cabeza, como sera el programa en ensamblador, haber dentro de la
carpeta del proyecto esta también un archivo ejer01.asm el
cual tiene las instrucciones para esas pocas lineas veamos :
Al ver las instrucciones en ensamblador de nuestro programa escrito
en C, veo que es la diferencia es grande, ademas del numero de
instrucciones en ensamblador, la manera como el interprete C, realiza
el Delay en ensamblador es un tanto interesante, lo bueno de C es lo
amigable de programación , pero cuando tengamos limitaciones mi
consejo es realizar ciertas rutinas en ensamblador para reducir el
numero de instrucciones de el compilador C, eso lo veremos mas
adelante con los ejercicios .
Bueno de aquí en adelante nos olvidaremos de esto siempre y cuando
la memoria de nuestro microcontrolador no este comprometida, pero
ademas de momento como estamos aprendiendo a programar ya cuando tengamos mas experiencia veremos que algunas instrucciones
pueden interpretar de mejor manera con la ayuda de nuestro Diagrama
de flujos, el cual utilizaremos en los siguientes ejercicios. Nos
vemos hasta el siguiente Tutorial.
Todo el material que aquí se encuentra es de mi autoría, ademas de
una recopilación de información de Internet de recursos que se
pueden descargar como libros los cuales son usados como referencia
para los ejercicios y los ejemplos. Cualquier consulta la puedes
realizar en la parte de comentarios.
Bibliografia:
1.- Juan Ricardo Clavijo Mendoza, Diseño y simulación de sistemas
microcontrolados en lenguaje C; Publicado el año 2011;[Fecha de
consulta 27 de Marzo de 2017].
2.-Juan Ricardo Penagos Plazas; Cómo programar en lenguaje C los
microcontroladores PIC16F88, 16F628A y 16F877A; Publicado
el año 2010; [Fecha de consulta 27
de Marzo de 2017].
Software
utilizados:
1.-
MikroC_PRO_PIC_2016_Build.6.6.3
descargado de la pagina oficial de Microchip;
2.-
Pluma. Editor de texto libre, se puede descargar de Internet, es un
editor GNU Linux;









