Como cualquier
sistema a microprocesador, también para los PIC es necesario
preparar un programa que le permita desarrollar su trabajo.
Un programa esta constituido
por una lista de instrucciones en secuencia, cadauna de las cuales identifican
unívocamente las funciones de base que los PIC estan en grado de desarrollar.
Cada instrucción esta representada por un código operativo ( en ingles operation
code o más brevemente opcode ) a 14 bit y es memorizada en
una posición de memoria EEPROM. Tal memoria en el PIC16F84 dispone de 1024 posiciones
cada una de las cuales esta en grado de contener una sola instrucción. Un ejemplo
de opcode en anotación binaria viene reportado enseguida.
00 0001 0000 0000B
Pero es muy probable que opcode
venga representado en notación hexadecimal
es decir:
0100H
Que representas exactamente el
mismo valor pero en forma más breve. La letra H al final del
valor 0100, indica el tipo de notación (hexadecimal). El mismo valor puede ser
representado en assembler con la notación 0x100 derivada del lenguaje C o H´0100´.
Estos códigos, completamente
privados de sentido para un ser humano, son los únicos que el PIC estan en grado
de entender. Para facilitar la tarea al programador, se recurre a algunos instrumentos
y convenciones para hacer las instrucciones más comprensibles.
La primera convención es aquella
de asociar a cada opcode ( en total 35 para él PIC16F84 ) una sigla mnemónica
es decir, una sigla que ayude a recordar el significado de la instrucción.
Regresando a nuestro ejemplo
el opcode 0100H corresponde a la instrucción mnemónica CLRW
que es la forma breve de la instrucción CLEAR W
REGISTER es decir, acera el registro W (veremos mas adelante que significa).
Otras convenciones permiten de
definir las variables, las constantes, las etiquetas (label) de referencia a
las direcciones de memoria, etc. El conjunto de estas convenciones actas para
facilitar la escritura de un programa para los PIC viene llamado lenguaje
assembler. Un programa escrito en lenguaje assembler puede ser escrito
en un PC utilizando cualquier procesador de palabra o editor en grado de generar
archivos de tipo ASCII. Un archivo ASCII o, mejor dicho, un archivo de texto
que contenga un programa en assembler viene llamado source o fuente
assembler.
Una vez preparado nuestro source
assembler (veremos mas adelante como), es necesario un programa en grado de
traducir las instrucciones mnemónicas y todas las otras formas convencionales
con las cuales fue escrito nuestro source en una serie de números ( los opcode
) reconocibles directamente por el PIC. Este programa se llama compilador
assembler o assemblador.
En la figura siguiente viene
esquematizado el flujo de operaciones y el archivo (file) que se genera para
pasar de un source assembler a un PIC programado.

Como se dijo la primera operación
a efectuar es escribir el sourse assembler y su memorización en un archivo (
file ) de texto con extensión .ASM. Para hacer esto hemos dicho que es necesario
utilizar un editor ASCII es decir, un programa de escritura como por ejemplo
el NOTEPAD.EXE de Windows o el EDIT.EXE de
MS/DOS©. Es posible generar este archivo también con programas de elaboración
de texto mas sofisticados tales como Word© o Wordperfec teniendo el cuidado
de memorizar siempre el archivo producido in formato texto y no en formato nativo.
Esto para evitar que se memoricen los caracteres de control de formateo del
texto que el compilador assembler no esta en grado de tratar.
En nuestro primer experimento
practico utilizaremos el archivo LED.ASM
El paso sucesivo es la compilación
del source es decir, la transformación en opcode de los códigos mnemónicos o
instrucciones assembler en los contenidos.
El compilador assembler que utilizaremos
es el MPASMWIN.EXE producido por Microchip y disponible en
CD-ROM incluido en nuestro Kit o también en site internet de Microchip (http://www.microchip.com).
Como es posible ver, además de
nuestro source con extensión .ASM es necesario entregar al
compilador un segundo archivo producido por Microchip con extensión .INC
diferente según el tipo de PIC que estemos utilizando. En nuestro caso
el archivo es el PIC16F84.INC.Esta source contiene algunas definiciones dependientes
del chip utilizado que veremos mas adelante.
Durante la compilación del sourse,
el compilador assembler genera una serie de archivos con nombre idéntico a la
sourse pero con extensión distinta:
Los archivos .LST, .ERR vienen
utilizados para el control de lo realizado en la compilacion. Solo el archivo
.HEX viene utilizado realmente para programar el PIC. Veamos ahora como.
El archivo .HEX no es un archivo
en formato binario y no corresponden directamente al contenido que deberá tener
la EEPROM del PIC. Pero su formato si corresponde directamente a cuanto será
transferido al PIC en forma legible y con unas instrucciones de más.
Sin entrar ahora en detalles
es útil saber que formato es directamente reconocible por el programador de
PIC que proveerá durante la programación a convertir en binario, el cual contiene
además del opcode otras informaciones que se suman a las direcciones en las
cuales serán transferidos los opcode.
En el paso sucesivo analizaremos nuestro primer source assembler y veremos buena
parte de las convenciones utilizadas en el lenguaje assembler.