lunes, 29 de marzo de 2021

Microcontroladores PIC – Curso de Programación en MikroC (Parte 5 )


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 Mundopor 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.


Microcontroladores PIC – Curso de Programación en MikroC (Parte 6 )

Microcontroladores PIC – Curso de Programación en MikroC Bienvenido nuevamente a los tutoriales de Artes Electrónicas Pachani , con...