sábado, 12 de marzo de 2011

Practicas con el PIC16F628A (también #foreveralone o recuperando el tiempo perdido ;) )

En vacaciones me puse a estudiar con más entusiasmo que nunca la programación de microcontroladores, tanto que hasta le perdí el miedo al lenguaje ensamblador =P y hasta hice unos programitas ahi para observar como funcionan los registros del pic, los famosos trisb, portb, porta, trisa, status, option reg, etc etc.

Solo hice tres programas en ensamblador: prender y apagar un led, un contador del 0 al 9 con un display de 7 segmentos y finalmente la lectura de un teclado matricial en el portb.

Después me pasé a programar en lenguaje c usando el compilador de CCS: PicC. Ahi he desarrollado todos mis programas para pic. Ahi voy poco a poco, paso lento pero seguro, ya acabé el primer módulo de un curso que me rolaron.

Este primer módulo del que hablo es introductorio mas que a los pics, al lenguaje de programación. Solo es una práctica con un semáforo y otra con un dado. Mas que nada para conocer la sintaxis del lenguaje y las estructuras de control que maneja. Yo como dije anteriormente usé lenguaje c para programar. Lo que estaba en basic lo hice en c y listo, funciona exactamente igual :D


Bueno, aquí está la evidencia de las prácticas:
La primera consiste en la realización de un programa que simule el comportamiento de un semáforo. El programa en si es muy sencillo y la implementación del circuito aun más.
El semáforo tiene dos modos de funcionamiento, el normal con los intervalos de tiempo entre los colores verde, amarillo y rojo; y el funcionamiento de cuando se "desconfiguran " (?) que sólo muestra el color amarillo.
El circuito, conforme avance seré mas ordenado en la implementación =P
No me detengas ahora... que acabo de empezar y me gusta =P


La seguunda práctica es un poco más compleja, es para conocer las estructuras de selección del lenguaje de programación que es case e if y una de las de repetición que es for, hay más estructuras pero en este ejemplo solo manejan esas. Se trata de un dado electrónico, se presiona un botón y se selecciona un número al azar entre 1 y 6. Para hacer más interesante la cosa el autor de lo módulos sugiere usar una bocina y aprovechar el display para dar la sensación de que en verdad se eligió un número al azar.
El circuito, con todo y bocina :D
ñ_ñ

Ahi voy con los pics, se a donde quiero llegar con todo este rollo. No quiero limitarme al desarrollo de aplicaciones para computadora, también quiero entrarle a la robótica y el desarrollo de dispositivos. Me da un poco de vegüenza esto ya que se supone que estos circuitos son de segundo semestre y yo apenas en quinto semestre los estoy haciendo, aunque me reconforta un poco saber que hay quienes estan en octavo de ingeniería en informática y no saben y querran saber nada de esto :) porque o bien ya son unos expertos en el desarrollo de aplicaciones (web entre ellas) para distintas plataformas como android, ipad, el extinto symbian, etc, o porque se la han pasado toda la carrera tonteando aqui y allá con las "clases" que nos dan los maestros. Yo se que es lo que quiero, tengo un objetivo y lo cumpliré :D.
 
Jaja, le pongo de fondo música legendaria al primer video y al segundo algo de "The darkness", ya me imagino que rolas usaré cuando desarrolle algo mucho más chido :D.

En otras cosas... ya aprendí algo de programación orientada a objetos en php y como usar los objetos para la gestión de bases de datos, ya quiero que mi prof de manejadores de bases de datos nos diga que rayos vamos a desarrollar para empezar cuanto antes. De antemano solo se que se trata de la ejecución del script directamente por linea de comandos mas una aplicación local mas otra aplicación web que checará el prof en internet :D.

Bueno retornando a los pics, para los que lo necesiten, publico el código fuente y el archivo de simulación en proteus en este link.

Eso es todo por el momento, ahora a estudiar la comunicación rs232,  me despido entonces no si obsequiarles unos wallpapers a todos y en especial a los forevealone xD:



Por cierto... antes de que se me olvide. Usé el pic16f628a, en los videos se ve en ambas protos un pic "chonchote", el que acompaña al semáforo es un 16f677a y el que está al lado del dado es el 18f4550 que tiene capacidad de comunicarse directamente con el puerto usb de la pc :P.
Saludos!