Parte 1 – Introducción a la programación en assembler con el PIC16F877A

Visitas: 1943  
Tiempo total: 35 días con 2:58:16 hrs  

Quemar el código assembler en un PIC es como haber programado movimientos en los objetos físicos de este mundo real. En esta publicación, presento una introducción a como programar en assembler utilizando las funcionalidades que el PIC16F877A ofrece.

El datasheet del PIC16F877A

Para poder utilizar cualquier dispositivo electrónico es necesario buscar en internet su datasheet u hoja de datos, la cual contiene toda la información necesaria para poder utilizar sus funciones.

IDE para programar en assembler

Se necesita un IDE para poder escribir el código assembler y poder generar el .HEX que se quemara en el microcontrolador, en este ejemplo utilize MPLAB IDE, su utilización es bastante simple: al abrir el programa, seleccionamos el menú Project->Project wisard y aparecerá un cuadro de dialgo que nos mostrara las opciones, entre estas la selección del microcontrolador que utilizaremos.

Ahora, seleccionamos el menú File->New, nos abrirá una hoja en blanco en la cual deberemos de escribir el código en ensamblador, cuando terminemos guardamos el archivo como .asm en la misma carpeta del proyecto.

Ahora, archivo .asm que hemos creado lo debemos de agregar a los archivos de nuestro proyecto; en la ventana indicada seleccionamos la carpeta Source Files y presionamos clic derecho, agregando el archivo .asm que guardamos.

Adding asm

Para poder generar el archivo .HEX final, debemos de ir a el menú Project->Build all, si el código .asm tiene algún error MPLAB nos lo mostrara, si no observaremos el mensaje Build succeeded.

mplab

Es necesario configurar el oscilador que utilizara el microcontrolador en el cual quemaremos el código .HEX, para esto nos dirigimos a el menú Configure->Congiruation bits; el oscilador sirve para indicar a qué velocidad funcionara el PIC, la opción seleccionada debe de ser XT (cristal externo).

configuration bits

Simulador de circuitos

Antes de quemar el código en un PIC, es necesario simular el circuito para comprobar que todo funciona correctamente, para esto utilizamos ISIS Proteus.

proteus

En mi primer intento por instalar Proteus, observe un mensaje de una instalación .NET faltante, seguí con la instalación pero Proteus no me permitía abrir el editor ISIS para agregar los elementos del circuito. Por este motivo es necesario que la instalación transcurra sin ningún percance para evitar perder el tiempo.

Para crear un proyecto en Proteus, es simple: en el menú File->New Project, ahora que lo hemos creado necesitamos abrir una pestaña ISIS para diagramar el circuito.

isis

En ISIS, la siguiente imagen explica cómo es que debemos de agregar elementos al editor grafico.

ISIS elementos

  1. Seleccionamos Component mode
  2. En la parte superior de la lista de elementos, seleccionamos Pick device.
  3. Podemos escribir palabras clave o navegar a través de sus categorías.
  4. Por último, seleccionamos Ok.

En el paso 1 también podemos seleccionar otros elementos, que listan directamente por categorías los dispositivos electrónicos. Ahora, supongamos que utilizo el cuadro de dialogo Pick device para encontrar el PIC16F877A, y ahora está en el editor grafico:

pic16f877a

Para poder simular el código ensamblador, debemos de darle doble clic al PIC en ISIS y seleccionar Program file, esto nos permitirá seleccionar el .HEX.

add HEX

Parte 2

En la siguiente parte se explicara cómo utilizar el Datasheet para entender las instrucciones y la asignación de valores a las variables del PIC16F877 antes de llamar alguna instrucción o asignar valores a otras variables; se utilizara el ejemplo de encender y apagar un led y una secuencia de leds, así como también como utilizar el convertidor analógico digital CAD.

Para ver la parte 2, por favor sigue el siguiente enlace:

http://www.elconspirador.com/2015/12/25/parte-2-introduccion-a-la-programacion-en-assembler-con-el-pic16f877a/

Referencias

[http://www.utp.edu.co/~eduque/arquitec/PIC16F877.pdf]
[http://perso.wanadoo.es/luis_ju/pic3/pic3_reg.html]
[http://www.circuitoselectronicos.org/2009/04/ejemplos-sencillos-para-el.html]
[http://micropic.galeon.com/instrucciones.htm#call]
[https://es.wikipedia.org/wiki/PIC16F87X]
[http://perso.wanadoo.es/luis_ju/pic/pic04.html]
[https://es.wikipedia.org/wiki/Se%C3%B1al_anal%C3%B3gica]
[https://www.youtube.com/watch?v=5xvxQvLghW0]
[https://www.youtube.com/watch?v=k3w2F857jq4]
[https://www.youtube.com/watch?v=iwGHgkpRUew]
[https://www.youtube.com/watch?v=O_6NIm6encw]
[https://www.youtube.com/watch?v=sEfSu9Szjv8]
[https://carlosalbertosainz.wordpress.com/2014/04/28/practica-4-manejo-del-convertidor-analogico-digital/]
[http://tutor.al-williams.com/pic-inst.html]
[http://www.circuitoselectronicos.org/2011/02/retardos-por-software-en-los.html]
[http://es.ncalculators.com/digital-computation/hex-decimal-converter.htm]
[http://es.ncalculators.com/digital-computation/binary-decimal-converter.htm]
[http://www.binaryhexconverter.com/hex-to-binary-converter]
[http://www.wolframalpha.com]


Para recibir boletines de información, por favor escribe tu correo electrónico:

Por favor ingrese un correo electrónico valido.
Registrado correctamente!