Microcontroladores
PIC – Programación en C
Hola nuevamente a
los tutoriales de Artes
Electrónicas Pachani, continuando con esta serie de tutoriales en donde explico mis experiencias con el microcontrolador PIC 18F4550, al realizar programas en el entorno MikroC ,esta serie de tutoriales
esta dirigido para lectores novatos, aficionados (hobbistas) y
estudiantes.
Un
lenguaje de alto nivel
Capitulo
01.
Manejo
de registros de Control
En
este tutorial vamos a trabajar en lenguaje C, empecemos entendiendo
las características de los registros TRISx, PORTx y LATx . Para el
manejo de datos, sabemos que cada
puerto dentro del
microcontrolador
posee una E/S al
cual esta asociado los
3 registros, comprendamos
como trabajan :
Registro TRIS : mediante este registro se configuran
cada una de las líneas de E/S del puerto como:
ENTRADA (bit correspondiente
a ' 1 ' [
un nemonico IN
])
SALIDA (bit
correspondiente a ' 0 ' [
un nemonico OUT]).
Registro PORT : mediante este registro se puede LEER
el nivel en el pin de E/S (Entrada de
Datos)
Registro LAT : mediante este registro se ESCRIBIR
el valor de del pin de E/S (Salida de
Datos)
De ahí que la serie
de tutoriales a partir de ahora ira con la necesidad de comprender y
manejar los datos (sin adentrarnos de momento a Bifurcaciones y
Ciclos).
Laboratorio
Empecemos
con los ejercicios que a nosotros nos interesa para comprender lo
anterior mencionado.
Problema
01.-
Realizar un
programa ‘Hola
Mundo’ por
el puerto B, con un
delay de 0.5
seg
.
Antes
de empezar la estructura de un programa en lenguaje C, nosotros
seguiremos la siguiente plantilla y la secuencia de pasos para tener
una mejor idea para programar y resolver nuestra necesidad:
1er
Paso.- Es
indispensable declarar las variables globales que consideres
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 y la función main.
2do
paso.-
El paso a seguir es
hacer las declaraciones de funciones diseñadas para las tareas
específicas en tu
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 base a la anterior estructura
para un programa, resolvamos
el problema:
Solución.-
Hagamos
uso de un
diagrama
de flujo trataremos
de
explicar lo mejor posible nuestro código
de manera secuencial es
decir
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.
Ahora
que
tenemos nuestro diagrama de flujo podemos empezar a escribir nuestro
codigo en C ,escribamos
el siguiente código según nuestra receta anterior, para
facilitar las instrucciones del programa, yo lo muestro primer en un
editor de texto
(esto
es alternativo pues podemos ir directo al IDE MikroC ),
luego lo copiaremos
y compilar:
Una breve explicación de como sigue la secuencia del anterior
programa:
1).-
Primero
habilitamos los puertos como entrada / salida digital con
ADCON1
← 0x0Fh , ademas deshabilitamos tanto el comparador
análogo
CMCON←
0x07h y
las interrupciones Globales INTCON ← 0x00h.
2).-
Limpiamos
el
puerto B
para que trabaje como puerto de salida.
3).- Habilitamos a los puertos B como salida de datos
por medio de la instrucción TRIS como lo hemos estado haciendo.
4).- Ahora cargamos al resgistro LATB ← 0x00h.
5).- Luego que una vez se ha cargado el registro LATB=0x00h ,
vamos a realizar un complemento del registro LATB = ~ LATB ( es decir
antes LATB= 0x00h ahora
LATB=0xFFh ).
6).- Por ultimo se muestra el contenido de LATB hacia el
exterior, con lo cual para poder visualizar vamos hacer uso del
Delay_ms(500) , pues sino lo hacemos así no podremos visualizar el
cambio, sin olvidar que vamos a realizar el bucle dentro el programa.
Por
ultimo una
ves escrito el archivo en lab06.txt
lo
copiaremos a nuestro IDE de MikroC, lo compilaremos y luego
obtendremos el archivo lab06.hex.
Simulación
en MikroC
Una vez tenemos nuestro código copiamos dentro del entorno de MikroC
, de modo que luego compilamos:
Una
vez
obtenido el archivo lab06.hex
ahora
debemos de comprobar que nuestro código funciona de manera adecuada
para
ello vamos a usar el
simulador proteus.
Simulación
en Proteus
Una vez simulado y compilado en MikroC obtendremos los siguientes
archivos:
Los archivos mas importantes son el lab06.hex
y lab06.asm, 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.
Aquí cargo el lab06.hex a mi proteus 7.5
Ahora cargamos el lab06.asm, para la simulacion.
Al momento de simular vemos que cumple con nuestro código que hemos
diseñado:
Veamos el cambio
Algunas
observaciones
Tenemos que tener en mente lo siguientes:
1).- Nuestro primer Hola Mundo como hemos visto es bastante sencillo
por que cuando trabajamos en C , las librerías que posee IDE de
MikroC como el Delay_ms() , han hecho que sea mas sencillo y
por ende el numero de lineas de código han sido mas cortos.
Al
final
Con todo lo aprendido de los microcontroladores, vemos que podemos
aprovechar las capacidades de los mismos para resolver necesidades
del dia a dia en nuestras vidas. Para concluir, 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 los espero en el
próximo 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 en pdf 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 14 de Abril de 2020].
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 18
de Abril de
2020].
3.- Eduardo Garcia Breijio;
Compilador_C_CCS_y_simulador_PROTEUS_para_microcontroladores_PIC;
Publicado el año 2008;
[Fecha de consulta 18
de Abril de 2020].
Software
utilizados:
1.-
MikroC_PRO_PIC_2016_Build.6.6.3
descargado de la pagina oficial de Microchip.
2.- Proteus v 7.5
, simulado en linuxMint
19,4 por medio del programa Wine.
3.-
Editor de texto libre, se puede descargar de Internet, es un editor
GNU Linux.
4.-
OpenProg , programador de microcontroladores PIC-AVR.
Hardware
utilizados:
1.-
Placa de Programación basado en los esquemas de OpenProg.
2.-
Placa entrenadora desarrollado en base al microcontrolador Pic
18F4550.
3.-
Placas modulo de leds , botoneras e interruptores.








