jueves, 2 de noviembre de 2017

Análisis y diseño de programas en ensamblador para PIC ( PARTE 3)


Sean bienvenidos nuevamente a los tutoriales de Artes Electrónicas Pachani, hoy vamos a continuar con la serie de tutoriales dedicados a mis experiencias en PIC, este tutorial (tambien guia ) está dirigido a lectores novatos, aficionados (hobbistas), estudiantes, que deseen implementar programas para microcontroladores en lenguaje ensamblador (ASM), para el desarrollo de aplicaciones.

Conociendo y programando al Microcontrolador


Figura 3.1.- Conociendo las necesidades de la aplicación para el manejo del PIC.
 
Ya en el anterior tutorial aprendimos de los nemonicos mas utilizados para construir el código Fuente. Ahora que conocemos el juego de instrucciones para el microcontrolador PIC, podemos determinar las acciones que realizara el microcontrolador con cada instrucción, la complejidad de los mismos dependerá de nuestra habilidad de Programación y la lógica que usemos para resolver un determinado problema.

Como programar al microcontrolador
Recordemos que las instrucciones para los microcontrolador PIC de la familia 16F cumplen con las siguientes condiciones:


Figura 3.2.- Conociendo al PIC.
 
a).-Juego de instrucciones reducido:
El set de 35 instrucciones en el PIC16F84A, de igual manera para el PIC16f628 (versión mejorada de PIC16F84) y PIC16F877A. Es la utilizada en toda la familia PIC 16F .
Cuando ya hablamos de la serie PIC 18F, las cosas cambian, el numero de instrucciones se incrementa a 71 instrucciones, debido a que sta serie ya cuenta con conectividad USB, es decir puede comunicarse con la PC por el puerto USB que este tiene, para ello construiremos un circuito base para dicha comunicación en su momento.

b).-Sencillas y rápidas:
Esto se refiere al tiempo de ejecución de las instrucciones, con un cristal de 4 Mhz cada instrucción de realiza en un ciclo maquina que es mismo que decir un ciclo de instrucción, y solo las de salto precisan 2 ciclos.
De esta manera un dispositivo con un cristal de cuarzo de 4 MHz realizara 1 millon de instrucciones por segundo.

c).-Ortogonalidad:
Se refiere a la ubicación de los operandos que manejan es muy flexible. Cualquier objeto del procesador puede actuar como origen o como destino. Esto dependerá de la destreza con que se tenga en cuanto a la asignación en el registro de direcciones para cuando se realicen los ejercicios.

d).-Formato uniforme de las instrucciones:
Todas las instrucciones tienen una longitud fija de bits. Esta característica significa un notable ahorro de la memoria de programa y una facilidad en la construcción de compiladores.

e).-Formato uniforme de los datos.
Lo cual nos hace pensar que el lenguaje ensamblador "es complejo por su sencillez". Esto quiere decir que, a diferencia de los lenguajes de alto nivel, aquí no hay funciones que solucionen y simplifiquen algoritmos, es decir que hay que implementar hasta los pasos más elementales para la resolución de un programa especifico.

Estructura de nuestro proyecto
Acá considero un aspecto importante en cuanto a la forma como programemos nuestro código fuente, es bueno tener un habito en cuanto a la forma como presentemos nuestro código y la manera como agrupemos nuestros archivos para un determinado proyecto. Es decir tener una carpeta única donde se agrupen cada una de las librerías y código fuente que escribamos de modo que nada se pierda.
Un buen ejemplo de ello es cuando simulemos en Proteus 7.9 los archivos que utilicemos deben estar dentro de la carpeta del proyecto, así como el programa en ensamblador. Si bien cada uno puede adoptarel modo de ordenar sus archivos de la forma que mas le agraden y ayuden para ser más productivo. Ver figura 3.3 :
  • Los ficheros de código fuente llevarán la extensión *.ASM
  • Los ficheros de listado llevarán la extensión *.LST
  • Los ficheros de código objeto llevarán la extensión *.OBJ
  • Los ficheros de errores llevarán la extensión *.ERR
  • Los ficheros ejecutables en formato Intel Hex llevarán la extensión *.HEX


Figura 3.3.- Imagen del contenido de una carpeta de proyecto ejemplo01 en Proteus 7.9.
 
Código Fuente
Cuando escribamos nuestro programa en *.ASM tomemos las siguientes consideraciones:
  1. Comentario descriptivo del programa (utilizar una cabecera estandarizada).
  2. Definir el microcontrolador que se usará (con las directivas LIST e INCLUDE).
  3. Introducir las opciones de compilación (que serán vistas más adelante) (opcional).
  4. Establecer las constantes que se usarán (con la directiva EQU).
  5. Reservar espacios de memoria (directiva RES) (si es necesario).
  6. Configurar los puertos.
  7. Desarrollar el programa con comentarios, en lo posible explicando cada línea de código..
  8. Los nemónicos escritos en minúscula y las constantes y variables en mayúscula hacen que el código escrito sea más visible.
  9. Colocar las rutinas en el mismo sitio, todas contiguas.
  10. Dibujar diagramas de flujo o escribir pseudocódigo.

Su estructura en un programa puede ser la siguiente:


Figura 3.4.- El programa ejemplo01.asm visto desde en MpLab.

 
Para la simulación de microcontroladores PIC vamos a utilizar el programa Proteus 7.x para adelante ( en sus versiones de pruebas que yo simulo en mi computadora), también se puede utilizar versiones de Proteus que mas convengan de acuerdo a las capacidades de nuestras computadoras, por ejemplo yo tengo una Pentium 4 con un microprocesador de 2,4 Ghz , 750Mb de de memoria RAM y un disco duro de 80 GB. Por lo que los programas que utilice si bien suficientes para la computadora que utilice, para muchos les parecerá mínimo.
También existen opciones libres de pago, de programadores y simuladores,tanto en Windows como en Linux los cuales mencionare en su momento y realizare su debido tutorial.
Como material adicional y de apoyo es bueno tener las tablas de nemonicos del anterior tutorial impreso de modo que nos sirva de material de consulta (Figura3,5), el IDE de MPLAB y Proteus es de gran ayuda para simular y ver gráficamente que pasa con el código que escribimos y verificar la valides de los mismos vamos a similar.



Figura 3.5.- Tabla de Nemonicos.


  Para finalizar este tutorial la simulaciones en los programas como MpLab y MikroC sera ahí donde practicaremos la parte de simulación de programas para luego generar los paquetes *.HEX para cargar por medio de un programador como el Pickit2 o Grabador Universal hacia el Microcontrolador.

Bien espero les sea de utilidad este material y síganme en el siguiente 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.- Enrique Palacios , Fernando Ramiro y Lucas J. López, Microcontrolador PIC16F84 Editorial Alfa Omega; Publicado el año 2004;[Fecha de consulta 21 de Febrero de 2017].
2.-Christian Bodignton Estava; Mikro Basic ; descargada de WWW.CONEXIONELECTRONICA.COM;
Publicado el año 2010; [Fecha de consulta 5 de Marzo de 2017].

Software utilizados:
1.- MpLab version 8.92 descargado de la pagina oficial de Microchip;
2.- Protues7.9 , descargado de www.factecnologia.blogspot.com , en el apartado de Microprocesadores 1.


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