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:
-
Comentario descriptivo del programa (utilizar una cabecera estandarizada).
-
Definir el microcontrolador que se usará (con las directivas LIST e INCLUDE).
-
Introducir las opciones de compilación (que serán vistas más adelante) (opcional).
-
Establecer las constantes que se usarán (con la directiva EQU).
-
Reservar espacios de memoria (directiva RES) (si es necesario).
-
Configurar los puertos.
-
Desarrollar el programa con comentarios, en lo posible explicando cada línea de código..
-
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.
-
Colocar las rutinas en el mismo sitio, todas contiguas.
-
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.