martes, 8 de mayo de 2012

MikroBasic

MikroBasic

En esta entrada hablare acerca del MikroBasic ya que actualmente es en donde estoy empezando a realizar mi proyecto y un minitutorial para hacer un codigo sencillo.

Esta IDE se utiliza para codificar lo que realizara el PIC, como su nombre lo indica se codifica mediante el lenguaje BASIC (tambien hay una version para lenguaje C que se llama MikroC).

Ya que utiliza BASIC, esto ha hecho que muchos usuarios lo utilicen para hacer sus codigos.

La características mas destacadas de este, es la inclusión de un IDE (entorno de desarrollo integrado o en inglés Integrated Development Environment) que hace muy cómoda la programación, ya que resalta la sintaxis del lenguaje, proporciona acceso muy rápido a la excelente ayuda incluida, estadísticas sobre el uso de recursos del microcontrolador, y muchas ventajas mas.

Descargarlo

Se puede descargar de la pagina de mikroElektronica

Pero con la particularidad que cuesta (pero hay una version DEMO que solamente puedes codificar y generar el archivo que ocupa el pic). Para mi y a muchos con solo bajar el demo seria mas que suficiente.

La otra forma seria desde alguna otra pagina de internet y con un Parche para que puedas tener acceso a todas las funciones que puedes hacer en el.

Tutorial MikroBasic

Primeramente abrimos el archivo y creamos un nuevo proyecto, y seguimos las intrucciones (entre algunos seleccionamos el PIC a utilizar, la fecuencia del reloj del pic, donde se guardara y si quieres utilizar todas las librerias que tienes disponible en mikrobasic).




Despues de esto consistira en empezar a codificar, por default Mikrobasic nos muestra lo siguiente:


Basico

Lo basico que debe de contener cualquier codigo de mikroBasic es el siguiente:



De esto lo obligatorio para que nos compile es lo de program y lo relacionado al main (La imagen que les mostre anteriormente).

Continuando:

'.- Para los comentarios. No se permiten comentarios de mas de una linea.

delay_ms(Tiempo).- Espera un tiempo en milisegundos antes de continuar con lo siguiente

Los nombres de nuestras variables, procedimientos, funciones, constantes, etc pueden contener letras desde la “a” hasta “z” y desde la “A” hasta “Z”, el guión bajo (“_”) y los dígitos del “0” al “9”, el punto . no puede ser usado para estos. El primer carácter no puede ser un digito. MikroBasic no distinguen entre mayusculas y minisculas, es decir que “Total”, “total” y “TOTAL” son nombres de la misma variable, y podemos usar cualquiera de ellos por igual.

Variables: Al igual que en otros dialectos Basic, las variables son objetos cuyo valor puede cambiar con la ejecución del programa. Deben declararse con dim antes de ser usadas. La sintaxis de dim es:

          dim Variables as tipodelasvariables

La lista de tipos son  incluyen Byte (8 bits, con valores de 0 a 255), Word (2 bytes, o 16 bits, con valores de 0 a 65535) y Longint (con valores desde -2147483648 a 2147483647). No son los únicos, la lista completa de tipos se puede consultar en la documentación del compilador. 

Algunos ejemplos validos de dim son:

           dim i, j, k as byte
           dim contar, temp as word
           dim cadena as longint[100]

Bucles o Ciclos

En MikroBasic se tienen solamente los siguientes:

Ciclo For.- En cada ciclo variable se incrementa en 1 si step no esta presente ya que este nos indica cuanto sera el incremento.

                           for variable = valor_inicial to valor_final [step incremento]
                                    Instrucciones a repetir
                           next variable

Ciclo While.- Como la expresión se evalúa al comenzar el ciclo, puede ocurrir que si al comenzar el programa la expresión sea falsa las instrucciones a repetir no se ejecuten nunca.

                           while expresión
                                     Instrucciones a repetir
                           wend

Si deseas hacer un ciclo infinito en expresion le pones TRUE

Ciclo DO – LOOP (Do - While): En este caso, las instrucciones a repetir se repiten mientras la expresión sea verdadera. Al evaluarse al final del ciclo, el grupo de instrucciones a repetir se ejecutaran al menos una vez.

                          do
                                       Instrucciones a repetir
                          loop until expresión

Cualquiera es estas tres formas de crear un bucle puede ser interrumpida si dentro de las instrucciones a repetir se coloca la instrucción break. Al ejecutarla, el control del programa salta a la sentencia escrita inmediatamente a continuación de next, wend o loop until, según el caso.

Elecciones (Decisiones)

Tenemos solamente el if o if-else o el switch (conocido en mikrobasic como case):

If.- Todas las instrucciones tienen que ir despues del then para que se ejecutan, la forma de declararlo es

                           if expresión then
                                            instrucciones
                           end if

If-Else.- Es lo mismo que un if solo que le agregamos else despues del then.

                            if expresión then
                                           instrucciones
                                           else
                                                    instrucciones
                            end if

Select-Case.- Consiste en una expresión y una lista de sus posibles valores. Las instrucciones a continuación del case else, si existen, se ejecutan en caso de que selector tome un valor para el que no exista una rama case disponible.

                            select case selector
                                          case valor_1
                                                    instrucciones_1
                                          ...
                                         case valor_n
                                                    instrucciones_n
                                         case else
                                                    instrucciones por si no se cumple ninguno
                          end select
Saltos

Son los que nos permiten saltos incondicionales:

GOTO.- Generalmente desaconsejada, esta instrucción nos permite transferir el control a cualquier punto dentro del programa. A pesar de estar demostrado que es posible construir cualquier programa sin utilizar nunca esta instrucción, se utiliza con cierta frecuencia. El control del programa se transfiere a la línea que tenga la etiqueta utilizada en el goto:

                         for i = 0 to n
                         for j = 0 to m
                                   ...
                                   if desastre
                                              goto Error
                                   end if
                                   ...
                                   next j
                                   next i
                         .
                         .
                         .
                        Error: ' código para manejar el error. . .

GOSUB – RETURN: Funciona de manera similar a GOTO, pero con la ventaja de que el control del programa regresa a la instrucción despues de GOSUB luego de ser ejecutado el return. Esto la hace ideal para crear subrutinas que pueden ser llamadas varias veces y/o desde distintos puntos del programa

                                  gosub mi_rutina
                                            instrucciones
                                            ...
                                            mi_rutina: ´código de la subrutina
                                                        ...
                                  Return

Funciones y Procedimietos

Funciones:

                 sub function nombre_de_la_funcion(lista_de_parametros) as tipo
                                     declaracion de variables
                                     Cuerpo de la funcion
                 end sub

Procedimientos:

                 sub procedure nombre_del_procedimiento(lista_de_parametros)
                                     declaracion de variables
                                     Cuerpo del procedimiento
                end sub

La diferencia de cada uno es que las Funciones regresan valores y el procedure solo realiza algo que le programes y no regresa algun parametro.

Uso con PIC

Para utilizar esto con el pic hay que definir ciertas cosas.

Primeramente definir si los pins TrisA (Puertos A) y TrisB (Puertos B) del pic son entradas o salidas, esto se puede hacer de varias formas de:

TRIS(A ó B) = 0 ó 1 : Configura TODOS los pines del puerto A ó B como salidas ó entradas respectivamente.

TRIS(A ó B) = %11110000 : Configura los pines del 4 al 7 como entradas y los demás como salidas. El “%” indica que el numero a continuación esta en binario.

TRIS(A ó B) = 240 : Hace lo mismo que la anterior: 240 en decimal es lo mismo que 11110000 en binario. (128 + 64 + 32 + 16 + 0 + 0 + 0 + 0 = 240)

TRIS(A ó B) = 255 : Configura todo el puerto (A ó B) como entradas. Si el puerto solo tiene 5 bits conectados a pines físicos, los otros 3 bits se ignoran.


Despues de esto seria el codificar todo el codigo normalmente.

Si se desea hacer uso de los puertos, o para alguna comparación, se hara de la siguiente forma:

port(A ó B).número del pin del puerto seleccionado = 1 ó 0 (Encendido o Apagado);

Si se desea encender o apagar todos los links de un puerto se puede hacer mediante forma binaria o decimal.

PORTB = 1 ' Enciendo los LEDs conectados al puerto(A ó B)
PORTB = 0 ' Apago los LEDs conectados al puerto(A ó B)
PORTB = %111111111 ' Enciendo los LEDs conectados al puerto(A ó B)
PORTB = 000000 ' Apago los LEDs conectados al puerto(A ó B)

Al final incluyo un codigo donde se incluye todo lo mencionado:


Y por ultimo un video de youtube en el que realizan algo con Pic usando mikroBasic


Bibliografías

http://www.mikroe.com/eng/products/view/9/mikrobasic-pro-for-pic/
http://www.4shared.com/file/44321561/4281bbcc/Mikrobasic-Espaol.html
http://www.neoteo.com/mikrobasic-primera-parte

4 comentarios:

  1. Muy bien; cuida la ortografía. 10 pts.

    ResponderEliminar
  2. Saludos cordiales soy nuevo en programación de pic, he echo algunos programas sencillos, encendido y apagado de led y secuencia con pic 16f628a - 16f684a etc. Pero me he atascado con el pic 12f675 no logro configurar los pines de salida les agradecería que me ayuden con un pequeño ejemplo de parpadeo de led o secuencia. Gracias por su aporte... :)
    mi correo: electronic_david@hotmail.com

    ResponderEliminar