viernes, 19 de marzo de 2021

Microcontroladores PIC – Curso Programación en MikroC ( *.asm) (Parte 5)

Hola nuevamente a los tutoriales de Artes Electrónicas Pachani, continuando con el curso de programacion del microcontrolador PIC 18F4550, aprenderemos a realizar programas 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


Para la visualización de datos es muy común el uso de displays de 7 segmentos en este tutorial
revisaremos las diferentes formas de manejo y control de estos dispositivos, con el propósito de que tengamos las herramientas suficientes para resolver las necesidades que pudiera resolver. El manejo de los mismos con otros módulos como los teclados hexadecimales es otra que las aplicaciones que abordamos en los siguientes tutoriales.

Manejo de display 7 Segmentos
En ciertas aplicaciones donde se disponen de suficientes líneas del puerto del microcontrolador se puede aplicar el su uso de manera directa. En la figura, se muestra el circuito del display conectado al puerto D del microcontrolador. Se utiliza un display de cátodo común por lo que el terminal común del display se conecta a VCC . También se podría utilizar un display cátodo común.

Así mismo, como cuando se utiliza un driver decodificador de 7 segmentos, se debe tener cuidado de utilizar las resistencias limitado-res de corriente para conectar los segmentos del display al puerto y evitar que se produzcan posibles sobre-corrientes que puedan afectar al puerto o al segmento del display. Resistencias con valores entre 220Ω y 330Ω, son comunes utilizar para activar los segmentos del display.

Ahora considerando que los datos que salen al puerto D se debe elaborar la tabla de datos decodificados para manejar por software y obtener los números respectivos hagamos uso de la configuración de un display de 7 segmentos como se ve:

La tabla, muestra los valores para activar los segmentos de un display cátodo común, recuerde que el display de cátodo común con un nivel alto (0) el segmento se desactiva y con un nivel bajo (1) el segmento se activa.

g
f
e
d
c
b
a
Equivalencia Hexadecimal
Numero en el display
0
1
1
1
1
1
1
0x3F
0
0
0
0
0
1
1
0
0x06
1
1
0
1
1
0
1
1
0x5B
2
1
0
0
1
1
1
1
0x4F
3
1
1
0
0
1
1
0
0x66
4
1
1
0
1
1
0
1
0x6D
5
1
1
1
1
1
0
1
0x7D
6
0
0
0
0
1
1
1
0x07
7
1
1
1
1
1
1
1
0x7F
8
1
1
0
0
1
1
1
0x67
9


Tabla de datos decodificados para utilizar 7 segmentos.

Resolvamos un ejemplo practico que aplique lo anterior estudiado.

Problema 3.- Realizar un programa que controle un display de 7 segmentos de modo que cuente de 0 a 9, con un delay de 0.625 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 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 base a la anterior estructura para un programa, resolvamos el problema:


Solución.- En el siguiente 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, luego lo copiare en MicroC:


Una breve explicación de como sigue la secuencia del anterior programa:


1).- Limpiamos el puerto B para que trabaje como puerto de salida.
2).- Habilitamos a los puertos B como salida de datos por medio de la instrucción TRIS como lo hemos estado haciendo.
3).- El registro de sentido de datos es TRISB. Al programar un bit de TRISB con un valor de 1 se consigue que el pin correspondiente del puerto B trabaje como entrada es decir, coloca el driver de salida en alta impedancia. Al programar un bit de TRISB con 0 se logra que el pin correspondiente del puerto B opere como salida es decir, coloca el contenido del latch de salida en el pin seleccionado. Cada pin de este puerto tiene un pull up interno (resistencia conectada a VDD ).
4).- Ahora cargamos una secuencia de bits que se iran mostrando por el puerto B por medio del registro LATB, es importante recordar que este es modo como mostramos al mundo exterior los datos que iremos cargando al acumulador W.
Por ultimo una ves escrito el archivo en lab03.c lo copiaremos a nuestro IDE de MikroC, lo compilaremos y luego obtendremos el archivo lab03.hex.

Simulación en MikroC
 Una vez tenemos nuestro codigo copiamos dentro del entorno de MikroC , de modo que luego compilamos:


Una vez obtenido el archivo lab05.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 lab05.hex y lab05.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.


 Aquí cargo el lab05.asm a mi proteus 7.5


 Al momento de simular vemos que cumple con nuestro código que hemos diseñado :  


Algunas observaciones
Tenemos que tener en mente lo siguientes:
1).- Al procesar el Microcontrolador los datos e información podemos requerir la visualización de estos datos ahí que el 7 segmentos nos puede ser de gran ayuda para visualizar los datos procesador por parte del microcontrolador, estos por ejemplo son visualizar los números que se pueden introducir por el puerto de entrada, de una operación matemática, el resultado del tratamiento de un sensor, etc .

Veamos el video resumen de como se configura el microcontrolador para resolver el problema:



Ver y/o descargar el video

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 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].
3.- Eduardo Garcia Breijio; Compilador_C_CCS_y_simulador_PROTEUS_para_microcontroladores_PIC; Publicado el año 2008; [Fecha de consulta 19 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...