Hola nuevamente a
los tutoriales de Artes
Electrónicas Pachani, continuano con el curso de programacion del
microcontrolador PIC 18F4550 en ensamblador
en el entorno MikroC ,esta serie de tutoriales esta dirigido para
lectores novatos, aficionados (hobbistas), estudiantes, que deseen
implementar programas para microcontroladores en MikroC.
Un
lenguaje de alto nivel
Poniendo
a prueba nuestro conocimiento
con un ejercicio mas practico en Ensamblador
vamos a desarrollar programas
para resolver una necesidad.
Mis proyectos en C
La
estructura de un programa en lenguaje C, es relativamente simple, por
lo cual vamos a respetar la plantilla y la secuencia de pasos para
tener una mejor idea del programa:
1er
Paso.- 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
(
principal ).
2do
paso.- Hacer
las declaraciones de funciones diseñadas por el desarrollador para
las tareas específicas en su programa si
es necesario para el programa.
3er
paso.- 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 aplica
la estructura del
programa:
Problema
3.-
Realizar un
programa que copie
los bits del puerto D hacia el puerto B.
Solución.-
Pensemos
cuales
son las necesidades de
nuestro proyecto!
Primero
realizaremos
un diagrama de flujo (si
fuera necesario Psuedocodigo)
que trate de explicar lo mejor posible nuestro código
de manera secuencial, la
información que
generemos de
nuestro programa nos
va dar una idea de las capacidades de nuestro microcontrolador,
esta
información ayuda
tambien otros programadores sobre
como funciona nuestro código.
Diagrama
de Flujos
Analizamos las capacidades de nuestro microcontrolador, los lamparas
(o leds) van a ser los bits de nuestro microcontrolador en nuestro
caso los bits del puerto B que lo habilitaremos como salida de datos.
Al puerto D lo vamos a configurar como puerto de entrada de datos.
En nuestro diagrama vamos a utilizar una variable “x” esta
nos va ser de utilidad pues hará de puente entre el mundo exterior y
el microcontrolador.
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,
luego lo copiare en MicroC (pero
puedes omitir e ir al IDE de MikroC para poder programar directo):
Una breve explicación de como sigue la secuencia del anterior
programa:
1).-
Configuramos
el
puerto B
para que trabaje como salida y
puerto
D configuramos como entrada.
2).- La variable x es utilisada para copiar los
datos del puerto D, luego el valor de la variable se utiliza para
cargar al acumulador W del microcontrolador, los datos que son
guardados en la variable se puede utilizar para varias operaciones
dentro del microcontrolador.
3).- Una vez hayamos cargado al acumulador W, podemos mostrar
al mundo exterior por medio del registro LATB , de ese modo lo
visualizamos los datos.
Por
ultimo una
vez
escrito nuestro
codigo
lo copiaremos a nuestro IDE de MikroC, lo compilaremos y luego
obtendremos el archivo lab04.hex.
Simulación
en MikroC
Una vez tenemos nuestro codigo copiamos dentro del entorno de MikroC
, de modo que luego compilamos:
Una
vez compilado
nuestro programas hemos
obtenido el archivo lab04.hex
para
luego
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 lab04.hex y
lab04.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
lab04.hex .
Aqui cargo el lab04.asm a mi proteus 7.5
Aca cargamos el hexadecimal del proyecto para poder simular:
Cargamos el archivo lab04.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
Tenemos que tener en mente lo siguiente:
1).- Usar una variable x como puente entre el microcontrolador
y el mundo exterior .
2).- Podemos aprovechar los datos obtenidos de fuera del
microcontrolador como la variable x , para otro tipo de
operaciones como control de sensores y datos para aplicaciones
concretas.
1).- Trabajar con el puerto B se debe tener en mente las
características del mismo, los bits del puerto B pueden entregar
alrededor de 40mA , es inútil para encender leds de alta potencia y
mas aun tratar de encender luces (o focos) de gran potencia , para
poder aprovechar esta salida por parte del microcontrolador debemos
de utilizar Relay’s mecánicos o bien de estado solido como los
opto-acopladores .
Veamos el video resumen de como se configura el microcontrolador para
resolver el problema:
Con todo lo aprendido hoy 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 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 12 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 14
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.