Вы находитесь на странице: 1из 8

FUNDAMENTOS DE PROTON BASIC

PROTON IDE
El compilador Proton Basic es un lenguaje de programacin de nueva generacin que hace mas fcil y rpido el manejo de microcontroladores Pic micro de Microchip. El lenguaje Basic es mucho ms fcil de leer y escribir que el lenguaje ensamblador Microchip. El Proton Basic produce un cdigo que puede ser programado para una variedad de micro controladores PIC que tengan de 8 a 68 pins y varias opciones en el chip incluyendo convertidores A/D, temporizadores y puertos seriales. Bases del Protn Basic

Identificadores Un identificador es simplemente un nombre. Son usados en Pronto Basic como etiquetas de lneas y nombres de variables. Un identificador es cualquier secuencia de letras, dgitos y smbolos, aunque no deben comenzar con un dgito. Los identificadores no distinguen las letras maysculas de las minsculas, por lo que etiqueta, ETIQUETA, Etiqueta son todas tratadas como equivalentes. Aunque las etiquetas pueden tener cualquier nmero de caracteres de longitud, Protn Basic solamente reconoce los primeros 32.

Etiquetas Para marcar lneas que el programa puede desear referenciar con comandos GOTO GOSUB, Proton BAsic usa tiquetas de lnea y no permite nmero de lnea y no requiere que cada lnea sea etiquetada. Cualquier lnea puede comenzar con una etiqueta de lnea que es simplemente un identificador seguido por dos puntos (:) ejemplo here:

Goto Variables

here

Variables es donde se guardan datos en forma temporaria en el programa. Son creadas usando la palabra clave DIM. Pueden ser bits , bytes, word, dword, float y string. El Espacio para cada variable es automticamente destinado en la memoria RAM del microcontrolador. El formato para crear una variable es el siguiente:

DIM etiqueta

AS

tipo

Etiqueta es cualquier identificador excluyendo palabras claves como se describe anteriormente. Tipo Algunos
DIM DIM DIM DIM DIM DIM

es

bit, de
BYTE

byte declaracion
' Crea una

, de

word varibles
de

, de
8-bit

dword cada
sin signo

or tipo
(0 -

float. son:
255)

ejemplos
Var1 AS

variable

Var2 AS BIT ' Crea una variable de un simple bit (0 1) Var3 AS WORD ' Crea una variable de 16-bit sin signo (0 65535) Var4 AS DWORD ' Crea a variable de 32-bit con signo (-2147483647 , +2147483647) Var5 AS FLOAT ' Crea una variable de 32-bit punto flotante. ST AS STRING * 20 ' Crea una cadena con capacidad de 20 caracteres (8-bit)

Alias DIM tambin puede ser usado para crear un alias para una variable. Esto es muy til para acceder al interior de una variable. Dim Var1 as Var2 Var2 es otro nombre de var1

Dim VAr3 as Portb.1 asigna el alias Var3 a la patilla RB0 Arreglos Los arreglos de variables pueden ser creados en una manera similar a las variables. Dim Etiqueta [tamao] as tipo

Etiqueta es cualquier identificador, excluyendo palabras claves, como se describi anteriormente. Tipo es BIT, BYTE WORD. Nmero de elementos es cuantos lugares en el arreglo

se

desean.

Algunos

ejemplos DIM

de

creacin

de

arreglo

son as

los

siguientes: byte

sharks[10]

DIM

var3[10]

as

Word

La primera ubicacin dentro del arreglo es el elemento cero. Dada la forma en que los arreglos estn localizados en memoria hay lmites de tamao para cada tipo.

Constantes Las llamadas constantes pueden ser creadas de manera similar a las variables. Puede ser mas conveniente usar un nombre de constante en lugar de un nmero constante. Si el nmero necesita ser cambiado, nicamente puede ser cambiando en un lugar del programa donde se define la constante. No pueden guardarse datos variables dentro de una constante. Ejemplos : Dim Mice as 4.13

En este ejemplo la constante mice es de 4,13 y la misma no puede ser modificada durante el transcurso del programa.

Constantes

Numricas

Proton BAsic permite definir constantes numricas en tres bases: decimal, binario y hexadecimal. Valores binarios son definidos usando el prefijo % y valores hexadecimales usando el prefijo $. Los valores decimales se toman por defecto y no requieren prefijo. Ejemplos: 100 %100 $100 Pines A los pines de Microcontrolador, se puede acceder de diferentes modos. El mejor camino para especificar un pin para una operacin, es simplemente usar sus nombres PORT y un nmero de bit: PORTB.1=1 Coloca PORTB, bit 1 a 1 valor valor valor binario hexadecimal para para decimal el el decimal decimal 100 4. 256.

Para recordar fcilmente para qu puede ser usado un pin, debe serle asignado un

nombre usando el comando DIM. De esta manera, el nombre puede ser utilizado luego en cualquier operacin.

Comentarios Un comentario de Protn Basic comienza con la palabra clave REM o el apstrofe (). Todos los dems caracteres de esa lnea se ignoran. REM es una nica palabra clave y no es una abreviacin de REMark, por lo tanto, los nombres de variables pueden comenzar con REM (aunque REM por s mismo no es vlido).

Declaraciones

mltiples

Para permitir programas mas compactos y agrupamientos lgicos de comandos relacionados, Proton Basic soporta el uso de (:) para separar comandos ubicados en la misma lnea. Los siguientes dos ejemplos son equivalentes. W2 W0 W1 Es W2 En los dos casos, lo = el w0 tamao : del W0 mismo = W1 : W1 es el = = = = W0 W1 W2 que: W2 mismo.

cdigo

generado

Operadores

Matemticos

Protn Basic efecta todas las operaciones matemticas en orden jerrquico. Esto significa que existe precedencia para los operadores .Multiplicacin y divisin son efectuados antes que suma y resta , por ejemplo. Para asegurarse que las operaciones son efectuadas en el orden que se desea, se usan parntesis para agrupar las operaciones. A = ( B + C ) * ( D E )

Todas las operaciones matemticas se realizan sin signo y con una precisin de 16 bit.

Los Operador

operadores

soportados matemtico +

son

: Descripcin Suma

* ** */ 16 16 bits nits superiores medios / // << >> ABS COS DIG SIN SQR Raiz Resto Desplazamiento Desplazamiento Valor de de la la

Resta Multiplicacin multiplicacin multiplicacin Divisin (mdulo) izquierdo derecho absoluto Coseno Digito Seno cuadrada

Operadores

lgicos

Los operadores lgicos difieren de las operaciones de bit inteligente. Entregan un resultado CIERTO / FALSO de su operacin .Valores 0 son tratados como falso. Cualquier otro valor es cierto. Se usan junto a operadores de comparacin en una declaracin IF .. THEN .Los operadores soportados son :

Operador AND OR XOR NOT NOT o o ^ o I ^ AND OR && I OR AND OR exclusivo NAND NOR

Descripcin logico logico logico logico logico

NOT

XOR

NXOR

logico

Relational operators are used to compare two values as shown in the list below. The result can be used to make a decision regarding program flow.

Operadores

del

tipo Expression

de

Relacion

Los Operadores de Relacion son usados para comparar dos valores como se muestra en la lista abajo. El resultado es boleano y pouede ser usado para tomar deiciones en el flujo del programa. Operador = <> < > <= >= Relacion Igualdad desigualdad menor que mayor que menor o igual que mayor o igual que Ejemplo = Y <> Y < Y > Y <= Y >= Y

X X X X X X

CALL

etiqueta

Ejecuta la subrutina ensamblador llamada etiqueta. Normalmente se usa GOSUB para ejecutar una subrutina .La principal diferencia entre GOSUB y CALL, es que con sta ltima no se chequea la existencia de etiquetas hasta el momento de ensamblar. Usando CALL se puede acceder a una etiqueta en una seccin de lenguaje ensamblador, lo que es inaccesible mediante Protn Basic . Dentro de los comandos de Protn Basic mas estudiados para la elaboracin del diseo describen los Siguientes:

se

END Detiene la ejecucin del proceso y entra en modo de baja potencia .Todos los pins de I/O permanecen en el estado en que se encuentran ,END trabaja ejecutando una instruccin SLEEP continua dentro de un loop . Un END , STOP GOTO deben ser colocados al final de un programa para evitar pasar del lmite de la misma u comience nuevamente .

FOR

..

NEXT

FOR

Count

Start

TO

End

{STEP

{-}

Inc} {Body}

NEXT

{Count}

El loop FOR .. NEXT permite a los programas ejecutar un nmero de declaraciones ( Body ) un numerode veces , usando una variable como contador . Debido a su complejidad y versatilidad , es mejor describirla paso a paso . El valor de Start se asigna a la variable ndice ,Count , que puede ser una variable de cualquier tipo . Se ejecuta el Body . Body es opcional y puede ser omitido ( quizs por un loop de demora ). El valor de Inc es sumado a ( restado si se especifica - ) Count .Si no se define una clusula STEP , se incrementa Count en uno . Si Count no pas End desbord el tipo de variable , la ejecucin vuelve al paso 2) . Si el loop necesita contar ms de 255 ( Count > 255 ) , se debe usar una variable de tamao word .

IF IF Comp { AND/OR Comp ...

...THEN } THEN {Declaracin} ELSE Declaracin} ENDIF

Efecta una ms comparaciones .Cada trmino Comp puede relacionar una variable con una constante otra variable e incluye uno de los operadores listados anteriormente . En la segunda forma, IF..THEN puede ejecutar condicionalmente un grupo de declaraciones que sigan al THEN. Las declaraciones deben estar seguidas por un ELSE o un ENDIF para completar la estructura.

ON

INTERRUPT

GOTO

Label

Permite el manejo de las interrupciones del micro controlador por medio de una subrutina . Existen dos formas de manejar interrupciones usando Proton Basic . La primera es escribir una subrutina de interrupcin en lenguaje ensamblador .Esta es la forma de manejar interrupciones con la menor latencia y el menor overhead . El segundo mtodo es escribir un handler ( manejador ) de interrupciones.Es similar a una subrutina , pero termina con un RESUME . Cuando ocurre una interrupcin , se marca con una bandera .Cuando la ejecucin de la declaracin que se estaba ejecutando termina , el programa salta al handler de interrupciones indicado en Label.

Una vez que termina el trabajo del handler , una declaracin RESUME enva el programa de vuelta a donde estaba cuando ocurri la interrupcin , tomando todo como lo dej .

DISABLE

ENABLE

Permiten que distintas secciones de un programa se ejecuten sin la posibilidad de ser interrumpidas .El lugar ms notorio para usar DISABLE es justo antes del actual handler de interrupciones. O el handler puede ser colocado antes que la declaracin ON INTERRUPT ya que la bandera de interrupciones no se chequea antes del primer ON INTERRUPT en un programa .