htm=bot/picsc.htm ok bot/picsc.htm M a ñ o o o B o t
enobras.gif (30264 bytes)

M a ñ o o o B o t

avion.gif (20860 bytes)

 

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á ;-)