Microcontroladores
PIC – Curso de Programación en MikroC
Bienvenido nuevamente a
los tutoriales de Artes
Electrónicas Pachani, continuando en este
curso vamos a conocer las capacidades del microcontrolador PIC
18F4550, vamos realizar programas en el entorno MikroC ,esta serie de
tutoriales esta dirigido para lectores novatos, aficionados
(hobbistas) y estudiantes.
Evaluemos
el estado de un bit
Capitulo
02.
Bifurcaciones
y bucles
Antes
de iniciar este proyecto,
sabemos que los
puertos del PIC se configuran
de modo que funcionen tanto de entrada como de salida y
posteriormente el programa
principal se encierra en un
bucle
infinito. Para configurar los puertos como salida o como entrada se manipula el registro TRIS. Cada puerto cuenta con su respectivo registro TRIS, esto hace alusión a los tres estádos posibles, alto, bajo, y alta impedancia.
infinito. Para configurar los puertos como salida o como entrada se manipula el registro TRIS. Cada puerto cuenta con su respectivo registro TRIS, esto hace alusión a los tres estádos posibles, alto, bajo, y alta impedancia.
Los
registros TRIS cuentan con el mismo número de bits del puerto, por
ejemplo el puerto B o PORTB del
PIC18F4550
cuenta con 8 bits, por lo
tanto el TRISB también tiene 8 bits. Los bits de los registros
TRIS, son correspondientes al puerto, y definen bit a bit el estádo
del puerto.
Si
un bit en el TRIS es 0 el mismo bit en el puerto es de
salida, y si el bit del TRIS
es 1 el mismo bit del puerto es de entrada
o está en alta
impedancia. Para
entender este concepto con mayor claridad observe y analice el
siguiente laboratorio.
Problema
01.-
Realizar un
programa que analice
el estado del bit RB0 y que cuando RB0=1 muestre por el bit RA0 una
señal conmutada
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 primero
en un editor de texto
(esto
es alternativo pues podemos ir directo al IDE MikroC ),
luego lo copiaremos
y compilar:
na 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 A como salida de datos
por medio de la instrucción TRIS como lo hemos estado haciendo.
4).- Ahora cargamos al resgistro LATA ← 0x00h.
5).- Luego que una vez se ha cargado el registro LATA=0x00h ,
vamos a verificar el estado del bit RB0.
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).- Al tener el control del estado de un bit ( RB0 en nuestro caso)
podemos trabajar de modo que se convierta en la base de una condición
de control para el inicio de una secuencia de programas o también
para el inicio de dicho evento como el arranque de un motor, el paro
de un sistema de maquinas , etc ..
2).- Otra facilidad que tenemos a nuestro favor es el uso de
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.
Veamos el video resumen de como se configura el microcontrolador para
resolver el problema:
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 19 de mayo 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 19
de mayo de
2020].
3.- Eduardo Garcia Breijio;
Compilador_C_CCS_y_simulador_PROTEUS_para_microcontroladores_PIC;
Publicado el año 2008;
[Fecha de consulta 19 de mayo
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.