Date post: | 04-Apr-2018 |
Category: |
Documents |
Upload: | hectorlopez |
View: | 243 times |
Download: | 3 times |
of 12
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=17/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.jpg7/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=17/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=2337/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=17/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.jpg7/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