1/5/2010

FUNDAMENTOS DE PROTON BASIC

PROTON IDE

       El compilador Proton Basic es un lenguaje de programación de nueva generación que hace mas fácil y rápido el manejo de microcontroladores Pic micro de Microchip. El lenguaje Basic es mucho más fácil de leer y escribir que el lenguaje ensamblador Microchip.

       El Proton Basic produce un código 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 Protón Basic


Identificadores

        Un identificador es simplemente un nombre. Son usados en Pronto Basic como etiquetas de líneas y nombres de variables. Un identificador es cualquier secuencia de letras, dígitos y símbolos, aunque no deben comenzar con un dígito. Los identificadores no distinguen las letras mayúsculas de las minúsculas, por lo que etiqueta, ETIQUETA, Etiqueta son todas tratadas como equivalentes. Aunque las etiquetas pueden tener cualquier número de caracteres de longitud, Protón Basic solamente reconoce los primeros 32.


Etiquetas

       Para marcar líneas que el programa puede desear referenciar con comandos GOTO ó GOSUB, Proton BAsic usa tiquetas de línea y no permite número de línea y no requiere que cada línea sea etiquetada. Cualquier línea puede comenzar con una etiqueta de línea que es simplemente un identificador seguido por dos puntos (:)

ejemplo

                                  here:


                                 Goto here

Variables

       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 automáticamente 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 es bit, byte , word , dword or float.

Algunos ejemplos de declaracion de varibles de cada tipo son:

DIM   Var1      AS BYTE  ' Crea una  variable de 8-bit sin signo  (0 - 255)

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

Alias

       DIM también 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 [tamaño] as tipo


       Etiqueta es cualquier identificador, excluyendo palabras claves, como se describió anteriormente.

       Tipo es BIT, BYTE ó WORD. Número de elementos es cuantos lugares en el arreglo se desean. Algunos ejemplos de creación de arreglo son los siguientes:

                             DIM sharks[10] as byte


                             DIM var3[10] as Word

         La primera ubicación dentro del arreglo es el elemento cero. Dada la forma en que los arreglos están localizados en memoria hay límites de tamaño 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 número constante. Si el número 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 Numéricas

       Proton BAsic permite definir constantes numéricas 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 ´ valor decimal 100

                           %100 ´ valor binario para el decimal 4.

                          $100 ´ valor hexadecimal para el decimal 256.

Pines

       A los pines de Microcontrolador, se puede acceder de diferentes modos. El mejor camino para especificar un pin para una operación, es simplemente usar sus nombres PORT y un número de bit:

                            PORTB.1=1 ‘ Coloca PORTB, bit 1 a 1

 
      Para recordar fácilmente 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 operación.


Comentarios

       Un comentario de Protón Basic comienza con la palabra clave REM o el apóstrofe (´). Todos los demás caracteres de esa línea se ignoran. REM es una única palabra clave y no es una abreviación de REMark, por lo tanto, los nombres de variables pueden comenzar con REM (aunque REM por sí mismo no es válido).


Declaraciones múltiples

       Para permitir programas mas compactos y agrupamientos lógicos de comandos relacionados, Proton Basic soporta el uso de (:) para separar comandos ubicados en la misma línea. Los siguientes dos ejemplos son equivalentes.

                            W2 = W0
                            W0 = W1
                            W1 = W2
Es lo mismo que:

                            W2 = w0 : W0 = W1 : W1 = W2

En los dos casos, el tamaño del código generado es el mismo.


Operadores Matemáticos

       Protón Basic efectúa todas las operaciones matemáticas en orden jerárquico. Esto significa que existe precedencia para los operadores .Multiplicación y división son efectuados antes que suma y resta , por ejemplo.

       Para asegurarse que las operaciones son efectuadas en el orden que se desea, se usan paréntesis para agrupar las operaciones.

                                       A = ( B + C ) * ( D - E )

       Todas las operaciones matemáticas se realizan sin signo y con una precisión de 16 bit.


Los operadores soportados son :

Operador matemático Descripción

                            + Suma

                            - Resta

                            * Multiplicación

                            ** 16 bits superiores de la multiplicación

                            */ 16 nits medios de la multiplicación

                             / División

                            // Resto (módulo)

                           << Desplazamiento izquierdo

                           >> Desplazamiento derecho

                          ABS Valor absoluto

                          COS Coseno

                          DIG Digito

                          SIN Seno

                          SQR Raiz cuadrada


Operadores lógicos

       Los operadores lógicos difieren de las operaciones de bit inteligente. Entregan un resultado CIERTO / FALSO de su operación .Valores 0 son tratados como falso. Cualquier otro valor es cierto. Se usan junto a operadores de comparación en una declaración IF .. THEN .Los operadores soportados son :


Operador Descripción

        AND o && AND logico

        OR o I I OR logico

        XOR o ^ ^ OR exclusivo logico

        NOT AND NAND logico

        NOT OR NOR 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              Ejemplo
                 =                     Igualdad                X = Y
                <>                  desigualdad             X <> Y
                 <                     menor que             X < Y
                 >                    mayor que              X > Y
                <=              menor o igual que        X <= Y
                >=              mayor o igual que        X >= Y


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 sección de lenguaje ensamblador, lo que es inaccesible mediante Protón Basic .

        Dentro de los comandos de Protón Basic mas estudiados para la elaboración del diseño se describen los Siguientes:


END

        Detiene la ejecución 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 instrucción SLEEP continua dentro de un loop . Un END , STOP ó GOTO deben ser colocados al final de un programa para evitar pasar del límite 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 número 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 ( quizás por un loop de demora ). El valor de Inc es sumado a ( ó restado si se especifica “-“ ) Count .Si no se define una cláusula STEP , se incrementa Count en uno . Si Count no pasó End ó desbordó el tipo de variable , la ejecución vuelve al paso 2) . Si el loop necesita contar más de 255 ( Count > 255 ) , se debe usar una variable de tamaño word .


IF ...THEN

        IF Comp { AND/OR Comp ... } THEN
                {Declaración}
        ELSE
              { Declaración}
       ENDIF

        Efectúa una ó más comparaciones .Cada término 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 interrupción en lenguaje ensamblador .Esta es la forma de manejar interrupciones con la menor latencia y el menor overhead . El segundo método es escribir un handler ( manejador ) de interrupciones.Es similar a una subrutina , pero termina con un RESUME . Cuando ocurre una interrupción , se marca con una bandera .Cuando la ejecución de la declaración que se estaba ejecutando termina , el programa salta al handler de interrupciones indicado en Label.

        Una vez que termina el trabajo del handler , una declaración RESUME envía el programa de vuelta a donde estaba cuando ocurrió la interrupción , tomando todo como lo dejó .


DISABLE y ENABLE

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

No hay comentarios:

Publicar un comentario en la entrada