Nuestro compilador-ensamblador PicSC.
Como el objetivo del proyecto es divertirse, y como el lenguaje
ensamblador de microchip no nos gusta nada, estamos desarrollando un
compilador-ensamblador propio, a medio camino de un compilador de C y un ensamblador
tradicional.
Pero vayamos por partes:
Primero, para compilar, tracear, depurar, .. programas para el PIC
16F84 (o cualquier otro) necesitamos bajarnos de microchip (www.microchip.com) el entorno
de desarrollo MPLAB, además de la documentacion propia del chip (hay varios documentos
pdf).
El entorno de desarrolo MPLAB no está mal (al estilo de los
tradicionales Borland), pero el lenguaje ensamblador en este caso particular es penoso.
Aparte de la escasez de instrucciones (35 en total), la sintaxis es antinatural, nunca
acaba uno de acostumbrarse.
Visto lo anterior, estamos desarrollando el compilador-ensamblador
PicSC (Pic Simple Compiler) que permite escribir las instrucciones propias del asm en un
modo similar a como se escriben instrucciones en C. Además se añaden otras instrucciones
que pueden traducirse en dos o más instrucciones asm, un evaluador de expresiones que
permite escribir expresiones matemáticas sencillas, y se irá añadiendo funcionalidad
según se vaya necesitando.
El compilador PicSC no genera código máquina, hemos preferido
generar código ASM de microchip, de este modo podemos tracear y depurar con MPLAB.
Bajate el compilador haciendo click aquí.
El compilador se acompaña de ejemplos y documentacion varia, en
cualquier caso a continuación mostramos algo de código PicSC (el código no tiene
sentido, es solo un ejemplo del estilo de código que compila PicSC)
Ejemplo de cídigo para PicSC:
//un comentario de una sola linea
/*
un comentario multilinea
*/
// algunas definiciones de constantes
#define UNO 1
#define DOS (UNO + 1)
//inclusion de otro fichero
#include "declaraciones.h"
//declaracion de variables
byte var1 @ 0x20;
byte var2 @ 0x21;
//inicio del código
org 0
goto main
main:
var1 = 0;
var2 = 0;
var1 = ++var2;
var1 |= var2;
var1 = var1 + var2;
....
....
.... continuará ;-)
|