Hola nuevamente a
los tutoriales de Artes
Electrónicas Pachani, continuando con el curso de programacion del microcontrolador pic 16f877A en MikroC, aquí en adelante 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.
Comenzamos en un lenguaje de alto nivel
Bien
sabemos por lo dicho antes
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.
Cual
la ventaja de aprender C, básicamente puedo decir que la mayoría de
los lenguajes de programación se han basado en C debido a sus
flexibilidad y métodos para interpretar los problemas, por ejemplo
tenemos a Java que ha asimilado buena parte de las características
de C, otro buen ejemplo es, el lenguaje de programación de Arduino
que tiene muchas sentencias e interpretación que se parecen a C.
Mis
proyectos en C
Ya
en el anterior tutorial aprendimos a programar un proyecto. Ahora
trataremos de continuar con la estructura de un programa en lenguaje
C, este relativamente simple, por lo cual trataremos de respetar esta
plantilla:
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
2.-
Realizar un
programa que controle
las luces de una habitación, por medio de una serie de interruptores
(Switch’s) colocados en la habitación
.
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, las lamparas puede ser un bit de cualquier puerto
de nuestro microcontrolador de modo que yo escogeré el puerto A, de
modo que cumpla con las características de nuestro programa. Ahora
los interruptores están colocados de modo que controlan solo una
lampara lo cual facilita nuestro programa pues controlan solo un bit.
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:
1).-
Inicializamos los puertos A y B de modo que es como ir al banco 1,
para
llamarlos.
2).- Debido a que el puerto A tiene dos características
especiales, lo habilitaremos para que pueda trabajar como puerto de
entrada y salida digital con la instrucción ADCON1, de esta manera
todos los pines del puerto A se podrán utilizar como un puerto de
E/S digital, de igual manera podemos trabajar con el puerto E.
3).- Habilitamos a los puertos A como entrada de datos y
puerto B como salida de datos, por medio de la instrucción TRIS
como lo hemos estado haciendo.
4).- Por medio de la sentencia WHILE (1) , siempre verdad, se
cumple que el puerto B es igual al contenido del puerto A, de este
modo siempre se mostrara los datos del puerto A en el puerto B.
Por
ultimo una
ves escrito el archivo en ejer01.c
lo copiaremos a nuestro IDE de MikroC, lo compilaremos y luego
obtendremos el archivo ejer01.hex.
Simulación
en MikroC
De
este modo hemos obtenido el archivo ejer01.hex . Ya
que no hemos tenido problemas dentro de las instrucciones para
nuestro programa ahora debemos de comprobar que nuestro código
funciona de manera adecuada en el simulador proteus.
Simulación
en Proteus
Una vez simulado y compilado en MikroC obtendremos los siguientes
archivos:
Los archivos mas importantes son el ejer01.hex y ejer01.c
, el primero para poder instalar en nuestro microcontrolador y
simular en Proteus , el segundo es el archivo que facilita crear
nuestro archivo para compilar que seria como el archivo *.asm pero
para la versión en C, ya que el interprete se encargar de realizar
la traducción para obtener el archivo ejer01.hex .
Primero cargamos el archivo ejer01.hex para que se pueda
iniciar con la simulación, para lo cual primero cargamos solamente
el archivo HEX, si nuestras instrucciones son las adecuadas la mejor
manera sera verla en la simulación.
Algunas observaciones que tenemos que tener en mente son las
siguientes:
1).- Cuando utilizamos la instrucción ADCON1, es una instrucción
que dedica al puerto A y E que tiene los pines como entrada analógico
de principio, en puertos de E/S digital, ahora el pin RA4 no es un
pin analógico y mas bien es un pin ST comparador Schmitt Trigger
(ST) se caracteriza porque su salida estará siempre en uno de los
dos niveles binarios posibles (1 o 0), sin importar el nivel de
voltaje de entrada (tomando en cuenta los límites máximos), por
tanto el pin RA4 trabaja como salida de drenaje abierto , es decir es
un pin de entrada/salida digital.
Con todas estas observaciones se trata de aprender mas de los
microntroladores, ahora en cuanto a la configuración de los
microcontroladores todo dependerá de la hoja de datos que ellos
poseen pues el microcontrolador 16F877A casi no varia del 18F4550
pues ambos tienen las mismas entradas salvo que a cada puerto se le
an adicionado mas características, de a poco con los ejemplo iremos
viendo estas características. A medida que suba otro tutorial iré
subiendo mas información con otro ejemplo, espero que toda la
información te sea de utilidad y os espero en otro 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 7 de Abril 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 7
de Abril 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;





