Aprender a Programar en PROTON Compiler

download Aprender a Programar en PROTON Compiler

of 12

Transcript of Aprender a Programar en PROTON Compiler

  • 7/29/2019 Aprender a Programar en PROTON Compiler

    1/12

    Aprender a programar en PROTON compiler

    Proton Compiler

    A partir de este momento vamos a colocar una serie de ejemplos sencillos que muestran

    como iniciarse con este compilador para micros, con esto no pretendo que despus de leeresta serie de articulos ud. sea experto en microcontroladores, pero si intento que muchaspersonas que estn interesadas en los PICs puedan comenzar haciendo sus primeros

    programas de una forma sencilla, no piense que vamos a hacer todo el trabajo por ud. aqui

    es donde necesitamos que cada uno ponga su parte, leyendo y familiarizandose con el

    compilador y sus instrucciones, y eso ya corre por su cuenta.-

    Primeramente necesitamos tener los programas instalados as que si est interesado a

    prepararse.-

    Puede descargarproton en su versin lite, cuya limitacin es la cantidad de 50 lneas de

    cdigo y no mas de 4 modelos diferentes de pics dos de la serie 12fxxx y dos de la serie16fxxx, para comenzar ser mas que suficiente

    Con respecto a Proteus la version demo no permite grabar nuestros trabajos y no permite

    mas que jugar con los ejemplos que tiene el programa por defecto.-

    Supongo que mas de uno tendr un protoboard, entonces puede optar por usarlo para armarlos circuitos de prueba que colocaremos.

    Primer programa con PROTON (titilar un Led)

    Proton Compiler

    Como habamos comentado antes vamos a tratar de explicar de manera sencilla algunos

    ejemplos que sean el punto de partida para quien quiera aprender, primero lo primero y

    como en todos los lenguajes tenemos el ejemplo de encender un Led a una frecuenciaestablecida, de por ejemplo 500ms que es 1/2 segundo.

    Para este caso y de aqu en mas, como son muchas las instrucciones que tiene el compilador

    vamos a ir describiendo las que intervienen en nuestro cdigo y cada uno puede sacar sus

    conclusiones, para esto tendrn que leer el manual para seguir aprendiendo.

    Doy por sentado que todos los que sigan estos ejemplos tienen claro que es unmicrocontrolador pic, en este caso el famoso y muy reconocido PIC16f84A, un detalle

    importante es que antes de seguir adelante con los ejemplos lean bien el datasheet del

    mismo y se familiarizen con sus puertos y registros internos.

    Hay mucha informacin en la red con respecto a esto, grficos y esquemticos que

    muestran la disposicin de pines, etc.

    http://www.cirware.com.ar/blog/?p=139http://www.cirware.com.ar/blog/?cat=1http://www.picbasic.org/proton_lite.phphttp://www.picbasic.org/proton_lite.phphttp://www.cirware.com.ar/blog/?p=146http://www.cirware.com.ar/blog/?cat=1http://www.cirware.com.ar/blog/?p=139http://www.cirware.com.ar/blog/?cat=1http://www.picbasic.org/proton_lite.phphttp://www.cirware.com.ar/blog/?p=146http://www.cirware.com.ar/blog/?cat=1
  • 7/29/2019 Aprender a Programar en PROTON Compiler

    2/12

    De todas maneras en laweb de microchippueden descargar el datasheet de este micro.-

    Bueno seores comencemos !

    Abrimos el Proton compiler y ponemos en FILE > NEW

    Muy bien ahora vamos a observar la hoja de trabajo en blanco con la cabecera donde van a

    estar los datos de nuestro cdigo

    Ya tienes todo listo para empezar, solo resta colocar el cdigo y estaremos muy cerca de

    encender el LED

    Ahora observa en este detalle que se muestra a continuacin

    http://www.microchip.com/http://www.microchip.com/http://www.microchip.com/http://www.cirware.com.ar/blog/wp-content/uploads/2008/07/ventana-proton.jpghttp://www.cirware.com.ar/blog/wp-content/uploads/2008/07/new.jpghttp://www.microchip.com/
  • 7/29/2019 Aprender a Programar en PROTON Compiler

    3/12

    Se puede observar como al declarar con Device = 16f84A , el compilador automticamenteidentifica el micro y se prepara para que trabajemos con el.

    En la imagen anterior se ve como ya est cargado el cdigo en el programa, puedes hacer lo

    mismo copiando lo que coloco a continuacin y pasamos a explicar cada parte del

    programa

    **********************************************************

    * Name : primer programa titilar un led *

    * Author : [DOPPELBLOG] www.cirware.com.ar/blog *

    * Notice : Copyright 2008 [PROTON IDE] *

    * : All Rights Reserved *

    * Date : 25/07/2008 *

    * Version : 1.0 *

    * Notes : Nuestro primer programa con pics usando un *

    * : PIC16F84A corriendo a 4 MHZ *

    **********************************************************

    ******************* declaramos el pic a usar y el cristal*

    Device = 16F84A en nuestro caso vamos a utilizar este pic

    XTAL 4

    ************ renombramos al PORTB.1 como LED*************

    Symbol LED = PORTB.1

    ****************definiciones de puertos*******************

    TRISB.1 = 0 puerto B.1 como salida

    PORTB = 0 iniciamos todo el puerto B apagado

    DelayMS 30 pequea pausa de 30 milisegundos

    ****************** aqui empieza el programa****************

    main:

    High LED encendemos el LED

    DelayMS 500 esperamos 1/2 segundo

    Low LED apagamos el Led

    DelayMS 500 esperamos 1/2 segundo

    GoTo main volvemos a la etiqueta main

    End

    http://www.cirware.com.ar/blog/wp-content/uploads/2008/07/declaracin.jpg
  • 7/29/2019 Aprender a Programar en PROTON Compiler

    4/12

    Programar en Proton Compiler (3 parte)

    Proton Compiler

    Ya copiaron el cdigo en el compilador? muy bien entonces vamos a ver que significa cada

    linea de este pequeo programa.

    Como primera observacin vamos a notar que al copiar nuestro cdigo vemos lo siguiente

    en el Code Explorer, esta es una barra de exploracin donde podemos ver el rbol denuestro cdigo, es muy til ya que el nombre del pic que aparece arriba como nombre de

    carpeta es el que nosotros hemos indicado en el cdigo y si presionamos el + de esta

    carpeta podemos ver los registros de este micro.-

    adems vemos que se han agregado otros nombres al code explorer como son XTAL, LED

    y main que justamente son directivas que ha enviado nuestro cdigo al compilador para

    saber que cosas y nombres vamos a usar.

    Pues bien lo primero que tenemos es:

    Device = 16F84A para decirle al compilador que pic usaremos

    XTAL 4 vamos a usar un cristal de 4 MHZ

    y vamos a lo siguiente:

    Aqui usamos Symbol para ponerle un alias al bit 1 del puerto B entonces la sintaxis sera:

    Syntax

    SYMBOL nombre{ = } valor

    En nuestro caso queda como sigue

    Symbol LED = PORTB.1

    http://www.cirware.com.ar/blog/?p=229http://www.cirware.com.ar/blog/?cat=1http://www.cirware.com.ar/blog/wp-content/uploads/2008/07/imgname.jpghttp://www.cirware.com.ar/blog/?p=229http://www.cirware.com.ar/blog/?cat=1
  • 7/29/2019 Aprender a Programar en PROTON Compiler

    5/12

    Que significa esto? ahora nuestro PORTB.1 pasa a llamarse LED con esto logramos mejor

    entendimiento para nuestro programa ya que cuando tengamos que activar PORTB.1 (oseael bit 1 del PORTB) de ahora en mas nos referimos a LED

    vamos con lo que sigue

    TRISB.1 = 0 puerto B.1 como salida

    PORTB = 0 iniciamos todo el puerto B apagado

    TRISB es un registro de direccin de datos de nuestro pic, con esto indicamos que pinestienen que ser de salida y que pines sern de entrada, en nuestro caso vamos a encender un

    LED por eso debemos configurar el pin donde se conecte el LED como salida para que

    encienda.

    Para eso hemos puesto TRISB.1 que quiere decir que el bit 1 del PORTB ser salida, oseael pin 7 de nuestro microcontrolador.-

    PORTB=0 le est indicando al compilador que todo el PORTB arrancar en 0 oseaapagado.-

    Lo siguiente que podemos ver es:

    DelayMS 30

    como su nombre lo indica es un DELAY osea una pausa en MS (milisegundos) que en este

    caso es 30milisegundos

    Seguimos y nos encontramos con la etiqueta main:

    main:

    High LED encendemos el LED

    DelayMS 500 esperamos 1/2 segundo

    Low LED apagamos el Led

    DelayMS 500 esperamos 1/2 segundo

    GoTo main volvemos a la etiqueta main

    End

    Aqui tenemos nuestro programa, que hace que se active el LED conectado a la patita 7 de

    nuestro pic

    High LED

    decimos que ponga en alto (1) a LED, que como dijimos mas arriba es el bit 1 del PORTB

    luego tenemos la pausa

    DelayMS 500

  • 7/29/2019 Aprender a Programar en PROTON Compiler

    6/12

    aqui hacemos un delayms de 500 milisegundos que es 1/2 segundo, hasta aqui mantenemos

    el LED encendido por 1/2 segundo

    luego viene

    Low LED

    con Low enviamos un 0 a LED, por lo tanto el PORTB1 se apaga

    luego otro

    DelayMS 500

    hacemos una pequea pausa nuevamente de 1/2 con lo que mantenemos apagado el LED

    por este tiempo

    y finalmente encontramos

    GoTo main

    donde le decimos que vuelva a la etiqueta main:

    que a pasado hasta aqui? podemos decir que el led se encendio por 1/2 segundo y luego seapago por 1/2 segundo al encontrarse con GoTo comenz de nuevo en main y as

    sucesivamente en un loop infinito por lo que si armamos el circuito logramos ver que

    enciende cada 1/2 segundo.-

    Este programita es por dems sencillo, pero es el comienzo.-

    en el prximo post otro ejemplo agregando mas cosas, pueden ver el circuito que se utiliza

    para este ejemplo en la siguiente imagen.-

    Programar con Proton Compiler (4 parte)

    http://www.cirware.com.ar/blog/?p=233http://www.cirware.com.ar/blog/wp-content/uploads/2008/07/ejemplouno.jpghttp://www.cirware.com.ar/blog/?p=233
  • 7/29/2019 Aprender a Programar en PROTON Compiler

    7/12

    Proton Compiler

    Armaron el circuito? probaron el cdigo? ...Muy bien! seguimos con los ejemplos de

    Protn y que mejor para seguir conociendo a este fabuloso compilador que ver masejemplos, con esto aprenderemos ms instrucciones y nos acostumbramos a la estructura de

    programacin.-

    Ampliando un poco el tema de definicin de puertos para utilizarlos como entrada salida

    podemos utilizar la siguiente sintaxis usando TRIS

    TRISB = %00000001

    Podemos observar que esto difiere de la definicin que hicimos en el primer ejemplo, por

    que?

    hay 8 nmeros entre 0 y 1 que corresponden a los bits del puerto, en este caso el

    puerto B, y se leen de derecha a izquierda, el 1 que se ve arriba corresponde al BIT0 del

    puerto B y significa que ese bit ser ENTRADA si por el contrario tuvieramos

    TRISB = %00001100

    Vemos que el BIT0 y el BIT1 son SALIDAS, el BIT2, BIT3 son ENTRADAS y finalmente

    los BIT5, 6, 7 y 8 son SALIDAS

    repasando: 0 significa SALIDA y 1 significa ENTRADA .-

    Tambin podemos referirnos a un BIT en particular de la siguiente forma

    TRISB.2 = 0 BIT2 del PORTB como salida

    otro ejemplo:

    TRISB.7 = 1 BIT7 del PORTB como entrada

    Si bien no est el ejemplo existe TRISA y se utiliza de la misma forma y es para el puertoA

    Despus del ejemplo ms bsico y primordial, vamos a agregarle un pulsador y un led

    ms al programa anterior para que al presionar el pulsador poder elegir entre dos

    efectos por llamarle de alguna manera, que seran: titilar y alternar.

    http://www.cirware.com.ar/blog/?cat=1http://www.cirware.com.ar/blog/?cat=1
  • 7/29/2019 Aprender a Programar en PROTON Compiler

    8/12

    El circuito es muy sencillo, se han omitido la etapa del cristal y del reset para simplificar eldibujo pero recuerden que si lo van a probar en la realidad tendrn que agregarlos.-

    ********************************************************** Name : titilar y alternar *

    * Author : [DOPPELBLOG] www.cirware.com.ar/blog *

    * Notice : Copyright 2008 *

    * : All Rights Reserved *

    * Date : 30/07/2008 *

    * Version : 1.0 *

    * Notes : un pulsador y dos leds, se elije entre la*

    * : funcin titilar y alternar *

    *********************************************************

    Device = 16F84A

    XTAL = 4

    *******************definiciones***************************

    Dim btn As Byte defino btn como variable del tipo byte

    Symbol LED1 PORTB.1 portb.1 ahora se llama LED1

    Symbol LED2 PORTB.2 portb.1 ahora se llama LED2

    Symbol pulsador PORTB.3 portb3 ahora se llama pulsador

    PORTB = 0 apago todo el puerto B

    TRISB = %00000100 DEFINO ENTRADAS Y SALIDAS

    **************************aqui comienza el program********

    titilar: DelayMS 10 delay de 10 ms

    High LED1 enciendo el led1

    High LED2 enciendo el led2

    DelayMS 250 pausa de 1/4 de seg

    Low LED1 apago el led1

    Low LED2 apago el led2

    DelayMS 250 pausa de 1/4 de segButton pulsador,0,10,5,btn,1,alternar ver texto

    GoTo titilar vuelvo a la rutina titilar

    alternar: DelayMS 10 delay de 10 ms

    High LED1 enciendo el led1

    Low LED2 apago el led2

    DelayMS 250 pausa de 1/4 de seg

    Low LED1 apago el LED1

    High LED2 enciendo el led2

    DelayMS 250 pausa de 1/4 de seg

    http://www.cirware.com.ar/blog/wp-content/uploads/2008/07/example-titilar-o-alternar.jpg
  • 7/29/2019 Aprender a Programar en PROTON Compiler

    9/12

    Button pulsador,0,10,5,btn,1,titilar

    GoTo alternar vuelvo a la rutina alternar

    End fin del programa

    veamos que hace este sencillo cdigo, primero definimos el pic a usar y el cristal como yalo habiamos visto recuerdan?

    Bien aqui explicaremos algo nuevo y es la instruccin BUTTON, segn la sintaxis del

    manual sera de la siguiente forma

    BUTTONPin ,DownState ,Delay , Rate , Workspace , TargetState , Label

    Esa sera la estructura bsica del BUTTON

    Pin a PORT.BIT, constant, or variable (0 15), that specifies the I/O pin to use. Thispin will automatically be set to input.

    DownState a variable, constant, or expression (0 or 1) that specifies which logical

    state occurs when the button is pressed.Delay a variable, constant, or expression (0 255) that specifies how long the button

    must be pressed before auto-repeat starts. The delay is measured in cycles of the Button

    routine. Delay has two special settings: 0 and 255. If Delay is 0, Buttonperforms no

    debounce or auto-repeat. If Delay is 255, Buttonperforms debounce, but no auto-repeat.Rate a variable, constant, or expression (0 255) that specifies the number of cycles

    between auto-repeats. The rate is expressed in cycles of the Button routine.

    Workspace a byte variable used by Button for workspace. It must be cleared to 0before being used by Button for the first time and should not be adjusted outside of the

    Button command.

    TargetState a variable, constant, or expression (0 or 1) that specifies which state the

    button should be in for a branch to occur. (0 = not pressed, 1 = pressed).Labela label that specifies where to branch if the button is in the target state.Button pulsador,0,10,5,btn,1,alternar

    Pin = sera en nuestro caso pulsador el puerto de entrada a usar, automticamente

    tambin coloca este pin como entrada.-

    Downstate = en nuestro ejemplo es 0, es el estado que queremos cuando presionamos elpulsador puede ser 0 1.-

    Delay = sera 10 en el ejemplo y es el tiempo que tiene que pasar antes que suceda la auto-

    repeticin.-

    Rate = 5 en nuestro ejemplo, es el nmero de ciclos que tienen que pasar entre las auto-repeticiones.-

    Workspace = es un buffer que usa el comando para funcionar (btn)

  • 7/29/2019 Aprender a Programar en PROTON Compiler

    10/12

    Target state = especifica el estado del button en el que debe estar BUTTON para que

    suceda la accin, 0sin presionar (sera al soltar el pulsador) y 1 al presionar.- (nuestrocaso es 1).-

    Label = etiqueta que especifica donde salta la instruccin al producirse la accin (ejemplo:

    alternar)

    Explicado lo anterior se habrn dado cuenta que btn es la variable que usa la instruccin

    button para funcionar y a la cual le podemos poner cualquier nombre.-

    *******************definiciones***************************

    Dim btn As Byte defino btn como variable del tipo byte

    Luego sigue la definicion de ALIAS y la definicin de puertos

    Symbol LED1 PORTB.1 portb.1 ahora se llama LED1

    Symbol LED2 PORTB.2 portb.1 ahora se llama LED2Symbol pulsador PORTB.3 portb3 ahora se llama pulsador

    PORTB = 0 apago todo el puerto B

    TRISB = %00000100 defino las entradas y salidas a utilizar

    Y nos encontramos ahora con las rutinas (NOTA: los asteriscos y nmeros son para seguir

    el curso del programa pero no forman parte del mismo)

    titilar: ****(901)**** DelayMS 10 delay de 10 ms

    High LED1 enciendo el led1

    High LED2 enciendo el led2

    DelayMS 250 pausa de 1/4 de seg

    Low LED1 apago el led1Low LED2 apago el led2

    DelayMS 250 pausa de 1/4 de seg

    Button pulsador,0,10,5,btn,1,alternar ****(123)****

    GoTo titilar vuelvo a la rutina titilar

    alternar: *****(456)*****DelayMS 10 delay de 10 ms

    High LED1 enciendo el led1

    Low LED2 apago el led2

    DelayMS 250 pausa de 1/4 de seg

    Low LED1 apago el LED1

    High LED2 enciendo el led2DelayMS 250 pausa de 1/4 de seg

    Button pulsador,0,10,5,btn,1,titilar ****(678)****

    GoTo alternar vuelvo a la rutina alternar

    End fin del programa

    Como vern est todo el cdigo explicado y si estudiaron lo anterior lo nico que les

    llamar la atencin el la instruccin BUTTON que para resumir podemos decir que elprograma al llegar a esta instruccin verifica si est presionado el pulsador, si se encuentra

  • 7/29/2019 Aprender a Programar en PROTON Compiler

    11/12

    presionado salta a la etiqueta alternar****(123)**** que es la que se encuentra en primer

    lugar, sale de esa rutina y comienza alternar****(456)****, de lo contrario se quedarealizando la tarea de la rutina titilar hasta detectar que se ha presionado el pulsador.-

    Una vez dentro de la rutina alternar ****(456)**** vern que los leds encienden

    alternadamente, hasta que nuevamente se presione el pulsador****(678)**** y nuevamenteretorna a la rutina titilar****(901)**** realizando esto infinitamente hasta que presionennuevamente y se vuelve a repetir todo.-

    Si tienen dudas por el funcionamiento de este programa pueden dejar sus comentarios y

    sern respondidos en la medida que sea posible.-

    Programador de Pics (Gpic USB) por WillyP

    Hardware de programacin

    Hace tiempo que anda por la red, un programador de microcontroladores Pic free, el GPICUSB, con una muy buena interfaz de usuario y adems de todo esto, soporta muchsimos

    micros Pic, muchos estudiantes y autodidactas ya han probado que el GPIC USB se estconvirtiendo en una excelente opcin a la hora de programar nuestros proyectos, est

    probado en Windows7 y funciona perfectamente.-

    Toda la informacin necesaria para su construccin la pueden obtener del sitio de WillyPwww.sitionica.com.ar

    Una imagen del software que se utiliza con el GPIC USB

    Una imagen de la placa terminada!! y lista para funcionar

    http://www.cirware.com.ar/blog/?p=249http://www.cirware.com.ar/blog/?cat=5http://www.sitionica.com.ar/http://www.cirware.com.ar/blog/wp-content/uploads/2010/01/gpicsoft1.jpghttp://www.cirware.com.ar/blog/?p=249http://www.cirware.com.ar/blog/?cat=5http://www.sitionica.com.ar/
  • 7/29/2019 Aprender a Programar en PROTON Compiler

    12/12

    http://www.cirware.com.ar/blog/wp-content/uploads/2010/01/prg21.jpg