Está en la página 1de 25

Introduccin

El siguiente curso de programacin de microcontroladores Pic no requiere conocimientos previos en el tema. Est especialmente destinado para los electrnicos que quieran dar sus primeros pasos (o los siguientes) en este interesante (y en general desconocido) rincn de la electrnica. Tambin esta dedicado para aquellos ingenieros o tcnicos que no quieren perder el tren de la tecnologa. Los Microcontroladores son integrados capaces de ser programados desde nuestra PC, y seguir una secuencia. Utilizados en todas partes del mundo creo que sera bueno no quedarnos afuera. Los PIC, fabricados por Microchip, son microcontroladores que por su bajo costo (desde 2 dlares o menos) y sus altas prestaciones pueden ser utilizadas en pequeos y grandes proyectos. Nosotros en este curso les presentaremos los Pic en general, pero por sobretodo haremos hincapi en la utilizacin de uno de los Pic mas conocidos en el mercado. El Pic 16F84. Este es un Pic ideal para aquellas personas que recin comienzan con este tipo de tecnologa. El 16F84 es un Pic de muy bajo costo (menos de 7,5 dlares), y es capas de ser escrito y borrado hasta 1000 veces. De esta manera sabemos que podemos practicar con un microcontrolador y realizar prototipos, sin gastar demasiado dinero. Con sus 13 entradas salidas programables podemos hacer una variedad de proyectos que no pueden dejar de intentar practicar esta tecnologa. Adems posee 64 bytes de EEProm, capas de guardar informacin importante acerca del usuario y guardarla por ms que este se desconecte de la batera. Posee 1 Mb de memoria destinada al programa pero con cdigo lo suficientemente comprimido como para poder aprovechar al mximo la memoria. Oscilador a cristal o a RC de velocidad media (4Mhz o 20Mhz en los Hs) podemos controlar interesantes proyectos que sern de mi agrado conocer. Adems cuatro fuentes de interrupcin diferentes para llamar la atencion en cualquier momento. Esta introduccin creo que se ha extendido bastante pero ser bueno ensearles los materiales que utilizaremos en este curso. Necesitaremos en primer lugar, su atencin y dedicacin, pues ustedes sern los que tendrn que aprender esta tecnologa. Por otro lado necesitaremos un programa para escribir el cdigo fuente (programa que llevar el Pic en sus entraas). Existe una gran variedad de programas en la web y en el mercado, algunos que trabajan bajo dos, Windows o Linux, pero nosotros utilizaremos el MPlab (R), distribuido por Microchip, y de distribucin gratuita. Lo podremos bajar del sitio de Microchip o con el simple llenado de un formulario en la pagina de esta empresa nos lo mandarn en forma gratuita a nuestro hogar. Con el escribiremos el cdigo, lo compilaremos y lo simularemos, todo en nuestra Pc. Por ultimo necesitaremos de un grabador de Pic, Existen en la red muchos grabadores de libre distribucin. En el curso utilizaremos el Propic, es una

placa genrica capas de tomar muchos de los Pic actualmente existentes, incluso el 16F84. Por supuesto que si deseamos utilizar la grabadora de Pic deberemos tener un Pic. En el curso aprenderemos como Programar los Pic, y he tratado de ser lo mas practico posible poniendo ha su disposicin una gran variedad de ejemplos como as proyectos de todo tipo. Creo que es todo, Buena suerte y no se pierdan que los necesito para mi futura fama :-)

Seteando todo para empezar tranquilos

El MPlab es un programa. El MPlab es un programa. No es inteligente y no sabe que hacer por si solo. Es mas, les debemos dar las ordenes una a una y muy bien explicadas para que este las entienda. Estas ordenes estarn acompaadas por parametros que le dirn a la mquina como se realizar esa tara. De otra manera, esta no se ejecutar. Antes que nada nos encontramos con que el cdigo no se crea en cualquier lado. Se escribir en un archivo (similar a un archivo de texto comn y corriente) que tendr la extensin *.asm. El cdigo se ejecuta de arriba hacia abajo empezando de la primer lnea de cdigo y terminando en la ltima. Es decir que cuando leamos el cdigo que hemos escrito, comenzaremos de la misma manera que si leyeramos una carta. Adems en el Mplab podemos generar libreras (trozos de cdigo que se comparten en distintos proyectos), cuya extensin es *.inc. Con ellos nos ahorrararemos tipeo, y todo estar mas organizado. Como la memoria del microcontrolador es muy limitada, el cdigo debe ser escrito en el pic de una manera comprimida. El MPlab se encargar de comprimir el cdigo y dejarnoslo en un archivo *.hex. En este archivo se encuentra todo nuestro cdigo escrito en Hexadecimal. Es decir que el codigo que verdaderamente habamos escrito en varias hojas de trabajo ahora solo es un parrafito de numeros y letras. Empecemos ahora si con el programa. Una vez instalado el MPlab(R), nos encontraremos con la siguiente ventana:

Aqu nos encontramos como en cualquier programa con una Barra de men (File, Proyect, Edit, ...), Una Barra de Comandos (son los iconitos que aparecen debajo de la Barra de Men, son accesos rpidos a los comandos mas comunes), y un Barra de Ttulo (la de mas arriba en donde aparece el nombre del proyecto abierto). Todo el cdigo y las libreras debern estar contenidas en un solo proyecto. Este proyecto para los que no saben programacin ser algo as como una carpeta que contendr todos los archivos que utiliza un mismo programa. De esta manera cuando nosotros le pidamos al MPlab por ejemplo simular nuestro programa, este sabr cuales son los archivos que utiliza nuestro programa Entonces creemos un proyecto nuevo. Vamos a la barra de men, Proyect, New Proyect. Nos pedir la ubicacin y el nombre del nuevo proyecto. Le pondremos un nombre como Inicio.pjt y lo guardaremos en algn sitio que luego lo encontremos. Todo el proyecto, cdigo fuente y las libreras debern estar en una misma carpeta. Damos el ok a la ventana. Nos aparecer una ventana de Edicin del Proyecto. Por el momento le daremos Ok sin mirar mucho pues nos faltara el archivo de cdigo. OK Estamos como al principio. No cambio nada excepto la Barra de Ttulo que ahora tiene el nombre y la ubicacin de nuestro proyecto. Ahora debemos crear un crear un archivo que contenga todo el cdigo fuente. Entonces vayamos a la Barra de men, File, New. Aqu es donde escribiremos el cdigo fuente pero primero debemos guardar el archivo. Para esto en la

Barra de men, File, Save as..., y lo guardaremos con el nombre Inicio.asm en la misma carpeta del proyecto. Ahora tenemos un proyecto que no tiene asignado ningn archivo de cdigo fuente (node) y un archivo de cdigo fuente aislado, por eso debemos enlazarlos. Vayamos a la Barra de men, Proyect, Edit proyect, y se abrir una ventana que ya hemos visto antes. Busquemos el botn Add Node y presionemos sobre l. Encontraremos el archivo Inicio.asm y ponemos Ok. Otra cosa que debemos cambiar es en la opcin Development Mode debemos presionar el botn Change. All se abrir una ventana en donde tendremos que setear varias cosas. En la solapa Tools, pondremos el nombre del integrado (processor) y algo muy importante, por lo general por defecto esta seteado la opcin None(Editor Only), all pondremos la opcin MPLAB-SIM (Simulator). Si esta est en Only Editor, podremos escribir el cdigo pero no nos dejar simularlo en la PC. En el nombre del integrado pondremos 16f84 que es con el que trabajaremos dado su bajo precio y su buena performance. En la solapa Clock, pondremos la frecuencia de oscilador y el tipo de oscilador de nuestro micro. Aqu pondremos oscilador XT y frecuencia de 4Mhz. Las dems solapas por ahora no las tocaremos. Si todo sali bien debera quedar as:

Ya casi estamos listos para empezar a escribir el cdigo. Si aun no apareci la ventana de texto (donde se escribir el cdigo), pondremos en File, Open..., y pondremos el archivo asm que deseamos modificar. Bien ya tenemos el editor de texto, ya tenemos un proyecto, que nos falta... Debemos crear el *.hex. Este se crea automticamente cuando compilamos el programa por primera vez. Por ahora no nos haremos problema y empecemos con el cdigo.

Empezando con el programa

Primero debemos tomar algunas clases generales acerca del cdigo. Que es el cdigo? El cdigo ser la lista de ordenes que seguir el micro. En el pondremos todos los pasos que efectuar el mismo. El PIC es microcontrolador, capaz de seguir nuestras indicaciones. Otros componentes, son fijos, tales como compuertas, memorias, etc. Los microcontroladores son integrados capaces de seguir una secuencia programada. Esto quiere decir que se programa. Como lo programamos? Nuestra Pc ser la interfase Hombre-Microcontrolador. Todos los microcontroladores poseen una memoria de programa, en la cual contendr todos los pasos a seguir. El cdigo como en

cualquier lista se empezar a leer la primera lnea, luego la segunda y as sucesivamente, salvo que se especifique lo contrario. El cdigo se escribir en la ventana en blanco que aparece para en el MPlab. Ahora pasaremos a conocer las partes del programa. En la siguiente seccin pondremos en vista un cdigo fuente de parte de un programa, no vale la pena copiarlo y ejecutarlo ya que su fin es solo de mostrar las partes de los programas. Echemos un vistazo al siguiente cdigo:

LIST p=16F84

Listado del PIC que se utilizar

status equ 03h portb equ 06h trisb equ 86h rp0 equ 5 rbie equ 3 rbif equ 0 intcon equ 0bh loop equ 0dh loop2 equ 0eh loop3 equ 0fh loop4 equ 10h w equ 00h

Encabezado o header, son las equivalencias

goto inicio

Cdigo

dormir bcf intcon,rbif bsf intcon,rbie SLEEP bcf intcon,rbie bcf intcon,rbif return retardo100mS movlw d'100' movwf loop2 finretardo1 nop nop nop nop nop call retardo1mS movlw d'100' decfsz loop2 goto finretardo1 return

Funciones (Ya es parte del cdigo)

;****************************************** Rems: No es parte del cdigo son ;* Principal * anotaciones nuestras. El ;****************************************** compilador las pasar de largo inicio bsf status,rp0 bsf trisb,2 bcf status,rp0 reinicia call dormir bsf portb,2 call retardo100mS bcf portb,2 goto reinicia Programa principal (Cdigo)

end

Sentencia de Fin del programa

No explicaremos instantneamente todas las partes del programa pero me parece un buen momento para explicar las header, ya que estas las tendremos que tener en claro desde el principio.

En el cdigo cuando apareca: status equ 03h portb equ 06h trisb equ 86h rp0 equ 5 Lo que queramos decirle al programa es que cada vez que escribamos la palabra status, cuando compile el programa lo cambie por lo que le sigue a equ. Es decir que Status equivaldr a 03h. Es decir que cada vez que queremos escribir 03 hexadecimal en el cdigo, sera lo mismo poner status. Depende de donde pondramos la palabra status, esta correspondera a un numero o correspondera a la direccion 03 de memoria Veamos los siguientes ejemplos para redondear el tema. bsf 03h,3 bsf 03h,status bsf status, 3 (sintaxis: Bsf xxx,b) Para los que no conocen las instrucciones del asembler, BSF pone un 1 en el bit b del registro de direccion xxx (si deseas ver mas acerca de esta instruccion, visita la lista de instrucciones ) Volviendo, en los tres ejemplos se realiza lo mismo. En la primera, el cdigo es confuso, en el segundo tambien pues ese status no significa mucho que lleve el valor 3 pero aqui se ve que se usa como constate. en la tercera linea el codigo toma color pues se pone un 1 en el bit 3 del registro ubicado en la direccion status (03h). Por otro lado debemos tener en cuenta que pueden existir varias header con el mismo valor pero no pueden existir una header con dos valores. Volveremos a las partes del programa luego. Como se programa?. Debemos ser prolijos al programar. En un primer momento solo nos debe preocupar que es lo que queremos hacer. Organizarnos en papel y lapiz marcando las partes importantes del codigo ayudara mucho. Es conveniente el uso de rems pues estos nos ayudarn en todo momento. Estos no ocupan memoria en el pic pues no se escriben en l. El uso adecuado de los nombres de funciones como as tambin el de las equivalencias nos ayudarn muchsimo, pues tendremos bien etiquetados todas las partes del cdigo segn el uso que les demos . Escribir un cdigo fuente es muy fcil, escribir el primer cdigo fuente es muy difcil. Planeemos un proyecto simple con el 16F84 Que tal si queremos simplemente encender un led ubicado en la pata uno del integrado (Ra2).

Bien siempre en todo programa de PIC hecho en el MPlab deber llevar las siguientes dos lneas: LIST p=16F84 End Ok. La primera lnea le esta indicando al Mplab que listado de Microcontrolador se utilizar. Como utilizaremos el Pic 16F84 el listado deber ser el mismo. La segunda lnea le dir donde termina el programa. En el medio de estas dos ir todo el cdigo. Para encender el led nos basta solo con cuatro lneas ms de cdigo: LIST p=16F84 bsf 3,5 bcf 85,2 bcf 3,5 bsf 5,2 end Ja los pesque sin entender nada. Es fcil. La primera y ultima lnea ya la hemos analizado. La segunda y la quinta son muy parecidas y la tercera y cuarta tambin. Veamos que significa las sentencias bcf y bsf Bcf: Bit Clear Flag Bsf: Bit Set Flag. Esto quiere decir que pondr una bandera (Flag) o no en algn Bit. Vemos que cada lnea de bxf contiene adems dos nmeros. Estos sern el primero para el registro y el segundo para el numero de bit. Es decir que la segunda lnea pondr un uno (una bandera) en el bit cinco del registro tres. De la misma manera en la tercer lnea de cdigo tendremos que pondr en cero el bit dos del registro ochenta y cinco. Bueno pero que significado tienen los registros 3 y 85 antes nombrados. Son los registros de "estado" y "Tris A" Es decir que este programa lo que hace es acceder primero al registro de estado y modificar la paginacin de este (Rp0 es el bit 5 del registro status), de este modo podremos acceder a la segunda columna de registros. Recordemos que el registro Tris a esta en el banco uno de los bancos de registro. Luego de eso, modificamos la entrada-salida Ra2 (Bit 2 del registro tris), colocando a

esta como salida de datos. Ahora debemos volver al banco cero para poder acceder al registro PortA. Entonces modificamos la paginacin del registro status volviendo el bit 5 (Rp0) a cero. Ahora si estamos preparados para escribir directamente en el puerto. Recuerden que por defecto el PIC tendr a todas la entradas-salidas (tanto los puertos Ra y Rb), colocadas como entrada de datos, por eso es que las debemos setear antes de usar (Si uno intenta escribir una entrada el MPlab no genera ningn error, simplemente no hace nada). Esto si lo compilamos y lo simulamos, funciona, pero que pasa si venimos dentro de unos das y vemos el cdigo nuevamente. Nos resultar difcil recordar que 03 equivale a status y que 85 equivale a Tris A. Para ello ordenemos un poco el cdigo y llamemos a las cosas por su nombre: LIST p=16F84 Status equ 03h Rp0 equ 5 TrisA equ 85h PortA equ 05h bsf Status,Rp0 bcf TrisA,2 bcf Status,Rp0 bsf PortA ,2 end No es verdad que esta mejor. Y que tal si les ponemos algunas anotaciones nuestras. Estas llevarn al principio el punto y coma, entonces de esta manera, el compilador no tomar en cuenta el resto de la lnea: LIST p=16F84 * Header *

Status equ 03h Rp0 equ 5 TrisA equ 85h PortA equ 05h * Programa Principal *

bsf Status,Rp0 bcf TrisA,2 bcf Status,Rp0 bsf PortA ,2 end ;Este es el fin

Fjense como se estiro nuestro programa. En esta parte hemos explicado las sentencias "bsf", "bcf", y parte de algunos registros como el "TrisA", "PortA" y "Status". Si queres, Aqui tenes todas las instrucciones del ascembler de pic bien explicadas. Que les parece si lo simulamos para ver que es lo que pasara en el PIC. Para ello pasaremos a la siguiente parte.

Compilando y simulando el programa

Un programa medianamente normal no se escribe hasta el final sin ninguna prueba en el medio, pues es muy probable que hayan algunos errores. En la bsqueda de errores, cuanto menor cantidad de cdigo tengamos que revisar, es mejor. Por eso es que cada tanto tiempo, debemos compilar el proyecto y simularlo. Si deseamos escribir todo el cdigo de corrido, lo podemos hacer, pero de seguro tendremos ms errores que matusaln. Para compilar debe primero guardarse el proyecto y luego ir a proyecto Make Proyect. Este nos crear el proyecto y una ventana nos indicar los errores que tenemos.

En este cuadro que contiene el cdigo fuente hemos escrito por error Statis en vez de Status, Como es de suponer, en el cuadro de Build Results nos indicar

el error como Error 113, No existe definicin previa. Si hacemos doble click encima de la oracin que contiene Error (De la ventana de Build Results), esta se posicionar en la lnea de cdigo donde supuestamente esta el error. Los errores no nos dejarn de terminar de compilar el cdigo mientras que los Warnings y los messages si. Estos ltimos son avisos de posibles errores. Hay errores mas complicados como los errores de cambio de bancos: Nosotros estamos en un banco de memoria diferente al banco de memoria al que queremos acceder. Al leer o escribir un dato, leer o escribir cualquier cosa. Este tipo de errores los veremos mas adelante cuando simulemos el proyecto. Para evitar este tipo de errores, se debe tener especial cuidado al escribir el cdigo pues muchas veces no generan un error implcito en el cuadro de Build Results. Hay mas errores que los trataremos mas adelante cuando aparezcan (si no aparecen es que los he evitado :-)) Una vez que terminamos de compilar nuestro proyecto sin ningn error, podemos cerrar la ventana Build Results y empezar a simularlo. En la Barra de herramientas, Windows, Special Funcions Register Windows, nos aparece una ventana como la siguiente con todos los registros especiales. Esta es la que mas se utilizar a la hora de simular un proyecto.

Puede tener cambios si estamos trabajando con diferentes tipos de micros. Los que se encuentran en rojo son los que han cambiado por ultima vez.

Tambin tenemos controles para ver el tiempo en que se realiza una determinada accin. Esta esta en la Barra de Herramientas, Windows, Stopwatch. La ventana es la siguiente:

En la Barra de Herramientas, tenemos todas las cosas necesarias para revisar registros, modificarlos, para ver como se escribir el programa en la memoria del PIC, registrar contadores de tiempo, etc. Sera bueno que probaran cada una de estas para conocer las herramientas que tenemos a la hora de trabajar. Hay diferentes formas de simular proyectos. Podemos ir lnea a lnea viendo como se modifican los registros a medida que pasa el tiempo. Para ello tenemos en la Barra de Herramientas, Debug. Dentro tenemos, entre las mas comunes. La opcin Run (Aqu tenemos la opcin Step (paso por paso), Reset (Resetea), Animate (corre la simulacion paso a paso automaticamente hasta que se presiona Halt), Halt (detener la simulacin), etc.) La opcin de Break Setting, esta para poner una o mas paradas a lo largo del cdigo. Uno corre un programa hasta que esta llega a un Break Point. Tambin lo podemos poner presionando con el botn derecho del mouse sobre la lnea de cdigo que queremos que se detenga. Esta opcin se utiliza mucho cuando hay retardos de tiempo, o tiempos muertos del micro (por ejemplo si prendemos un led debemos esperar al menos 250mS para apagarlo ya que sino no lo veriamos pues la velocidad del micro es muy grande) Tambin tengamos en cuenta que las cosas ms comunes las podemos hacer desde la Barra de comandos. Para saber que es cada una de estas cosas nos posicionamos sobre el icono y sin apretar nada nos aparece un mensaje en la Barra de Estado (es la que esta mas abajo de toda la ventana). En el proyecto anterior veremos que sucede paso por paso:

As es como estamos en un primer momento. Si no estuvisemos as lo que debemos hacer es ir a la Barra de Herramientas, Debug, System Reset. Tambin vale acomodar las ventanas a gusto.

Pasamos el primer paso y vemos que han cambiado algunas cosas: Pcl (Contador del programa), Status (modific el bit 5) (estamos preparados para modificar el banco uno), y como era de esperar hizo un ciclo de reloj en el tiempo de 1uS.

Aqu modific nuevamente a Pcl, y ya modific el Tris A de modo que el bit 2 se puso en posicin de salida. En este caso vemos que se ha modificado tambin el registro T0pre. Este registro es el contador del Timer 0 que no se esta utilizando pero al ser un contador esta contando todo el tiempo. El reloj esta en el segundo ciclo.

Al tercer ciclo ya nos encontramos con que cambio nuevamente el T0pre, el bit 5 del registro Status (se posiciono en el banco 0 del banco de memoria) y el pcl.

Han cambiado algunas cosas. Por lo pronto apareci el Program Memory Window, indicando que llego a la sentencia End. Por otro lado Cambio el Port A poniendo en 1 el bit 2. Tambin cambio el contador de programa y el Timer 0 aunque nosotros no lo utilicemos. Nos encontramos en el cuarto ciclo de trabajo, es decir que nuestro programa tardo 4 micro Segundos en encender un led. Vale aclarar que mas adelante encenderemos varios leds en un solo ciclo de trabajo. Bien ya hemos simulado nuestro proyecto. Los invito que lo modifiquen a gusto poniendo mas puertos como salida y escribindolos uno a uno. Entre otras cosas, tambien podremos simular botones, switches o pulsadores como si estos estubieran conectados a ciertas patas del micro. Es facil de utilizar. Una vez que estemos corrindo el programa, vamos al menu de herramintas a Debug-Simulator Stimulus - Asynchronocs Stimulus y alli aparece un recuadro

con 12 botones. En ellos con el boton derecho del mouse sobre uno de los botones, tendremos varias opciones: Assing pin: sera el pin que deseas estimular con ese boton. Pulse: Es como si fuera un boton sin retencion. Cuando lo aprietas es uno cuando lo sueltas es un cero. Low - high: pone un alto o un bajo en el pin asignado. Si ya tiene un bajo o un alto, este permanecera invariable. Toggle: Cambia de uno a cero y de cero a uno depende de lo que tenga actualmente. Ahora que les parece si hacemos un proyecto de mas atractivo. No se lo pierdan o se les caern los ojos.

En vista de un proyecto ms completo

Bien, el programa anterior fue solo el comienzo. Ahora comenzaremos con lo que realmente interesante. Que les parece si le agregamos algo de interaccin, algo con botones, temporizadores, interrupciones, alarmas indicadoras, controladores... Bueno... vayamos mas despacio. Construyamos entonces un nuevo proyecto. Pero me gustara que para los prximos proyectos no sean creados solo por mi, sino que ustedes participen de esto. Piensen ideas y juntos las podremos escribir y poder publicarlos en este sitio. Que sea un sitio de ayuda y no una pagina de Internet ms. Entonces... Te uns a este grupo? Vamos sin vergenza y escrbeme ya a mi dire: andres@moraldo.com.ar. Ojo que aparecern sus respectivos crditos. Asi lo han hecho muchas personas y me ha llegado montones de ideas para realizar. Asi de a poco las iremos agregando proyectos para practicar e implementar. Veamos el siguiente proyecto que servira mucho a aquellos que tengan ganas de practicar, pues es un proyecto muy practico y es ideal para los que recien empiezan.

Luces Chispeantes Introduccin

Este es una Idea que nos trajo Raul Betancur acerca de un juego de luces que realiza convinaciones segn como lo configuremos. El Proyecto es muy interesante para aquellos que estan siguiendo el curso, porque dan buena prctica para manejo de los micros. Est sobretodo interesante pues maneja algo que aun no hemos visto aqui: El uso de botones y del temporizador. Para los mas adelantados, podrn adems hacer uso de interrupciones y de la

memoria EEProm, ya que esta en nosotros cuan completo ser el proyecto. Invito a todos a compartir esta idea y ponernos en prctica con este proyecto ya que es la nica manera con la que se presentarn las dudas. Tambin quiero darles la posibilidad de que compartan sus ideas enviandome su solucin al problema a andres@moraldo.com.ar. Ademas a todos aquellos que esten interesados se publicar la respuesta del mismo en los proximos das, para que todos puedan compartir e intercabiar opiniones. Si asi lo deseas y crees que tu proyecto vale, enviamelo a andres@moraldo.com.ar de la misma manera que lo hizo Raul y ser publicado en esta pagina web para que todos lo aprendamos. Demosle las gracias Raul Bentacur (raulbeta@hotmail.com), y a todas aquellas personas que mandan a diario sus proyectos (entre ellas estoy yo: andres@moraldo.com.ar) Luces Chispeantes
Idea: Raul Betancur

El controlador tendr dos entradas (E1, E2) y ocho salidas. Las ocho salidas estarn conectadas a 8 LED. De esta manera, controlando las ocho salidas, se puede elegir cules LED estn encendidos y cules no. Note que el estado de los ocho LED se puede describir usando un byte. En consecuencia, una secuencia de estados se puede especificar usando un arreglo de bytes. Para ejecutar una secuencia, basta con poner los bytes respectivos en las salidas, uno tras otro, mantenindolos un tiempo. El controlador podr mostrar cuatro secuencias diferentes las cuales estarn representadas por cuatro arreglos de bytes. La secuencia que se mostrar se selecciona por medio de las entradas, las cuales son controladas por dos conmutadores. DISEO DEL CONTROLADOR El diseo del controlador de luces se describe a continuacin : Los pines 6, 7, 8, 9, 10, 11, 12, 13 corresponden a las salidas RB0/INT, RB1, RB2, RB3, RB4, RB5, RB6 y RB7 (puerto B del PIC). Cada uno de estos pines estn conectados a un LED. Los pines 1 y 2, que corresponden a las salidas RA2 y RA3 (puerto A del PIC), estn conectados a conmutadores. Estos conmutadores determinan cul de las 4 programaciones predefinidas se desea ejecutar.

Cada patrn de programacin de los LED se encuentra almacenado en un arreglo en memoria de 8 bytes. Es decir, 8 datos de 1 byte cada uno, que representan los 8 estados de una secuencia. Dos de los patrones deben ser los siguientes: Patrn 1 ("Auto fantstico") 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000 Patrn 2 ("White Christmas") 01010101 10101010 01010101 10101010 01010101 10101010 Los otros dos patrones quedan a inventiva del programador. Cada byte de la secuencia indica cules LED deben encenderse en la salida Algunas Soluciones Solucion segun Raul Betancur: luchisra.zip (12Kb) Ayuditas para la realizacin: Para detectar los botones apretados se debe proseguir de la siguiente manera:

Se lee el puerto a, se le hace un andlw con el numero correspondiente a las patas de entrada. Luego se carga el registro w con el valor a comparar y se le sustrae el valor anterior. Si el resultado es 0 (es decir que ambos son iguales) en el registro status existe un FLAG que nos lo indicar. (Es el bit Z que corresponde al bit 2 del registro Status). El uso del temporizador no es muy dificil ya que se accede de manera directa. Eso si no olvidemos de ponerle el preescaler en un valor distinto de uno ya que sino nos costara mucho leerlo.(a no ser de utilizar las interrupciones) Bueno nada mas. Si algo no les sale, no se preocupen, esto es solo el comienzo. Armando el grabador de Pic

Para grabar los microcontroladores Pic lo que necesitamos es una placa que ir conectada al puerto paralelo y un programa que enviar nuestro cdigo directo al pic (se entiende que a travez de la placa :-D ) Nosotros generaremos el archivo *.hex con cualquier compilador de Pic, luego abrimos este archivo con el programa que se encuentra al pie de esta pagina y mandamos a escribir el Pic. No podemos utilizar el Mplab para escribir el codigo en el pic, tendremos que utilizar el programa provisto con la placa Dispositivos Soportados por esta placa: PIC12C508, PIC12C509, PIC14000, PIC16C554, PIC16C556, PIC16C558, PIC16C61, PIC16C62, PIC16C62A, PIC16C620, PIC16C621, PIC16C622, PIC16C63, PIC16C63A, PIC16C64, PIC16C64A, PIC16C65, PIC16C65A, PIC16C66, PIC16C66A, PIC16C67, PIC16C67A, PIC16C71, PIC16C710, PIC16C711, PIC16C715, PIC16C72, PIC16C73, PIC16C73A, PIC16C74, PIC16C74A, PIC16C76, PIC16C77, PIC16C83, PIC16CR83, PIC16C84, PIC16CR84, PIC16F84, PicStick. Aqui tenemos la placa armada. Parece facil no? Pues no es dificil. Por eso A empezar a ARMARLAA!!!

Aqui tenemos el positivo y el negativo de la placa grabadora de pic

Tambien necesitaremos las siguientes cosas:

Lista de Componentes: Nos indicara todos los componentes que necesitaremos para armarla, de modo de no tengamos sorpresas en el camino Programa para placa (396 Kb): Sera el programa que utilizaremos para grabar nuestros Pic

DPic (9 Kb): Este pequeo programita nos permitira deducir los posibles errores que tengamos en la placa. De facil uso y muy pequeo. Ademas tiene algunas consideraciones que debemos tener en cuenta cuando armemos la placa.

También podría gustarte