Вы находитесь на странице: 1из 14

MIGUEL TORRES TORRITI En la figura 6 se muestra el circuito para el Ejemplo 1.

Con excepcin de los componentes conectados a RB7 (pin 13), los cuales corresponden a elementos especficos del ejemplo, el resto de los componentes constituyen la circuitera mnima para el funcionamiento del PIC16F84. El LED conectado a RB7 se encender de acuerdo al estado de la variable led en el cdigo del Programa del micro controlador. Cuando el estado lgico de la variable led es 1, un voltaje de 5 V ser aplicado al LED. Para limitar el exceso de corriente que podra daar el LED o el puerto del PIC se coloca una resistencia en serie con el LED. Una configuracin alternativa es conectar desde Vdd (5 V) el LED en serie con la resistencia a RB7. Esto causara que el LED se encienda cuando la variable led tenga un estado lgico 0. Al disear otras aplicaciones es importante tener presente la corriente mxima que puede entregar o recibir un pin en el caso de la lgica positiva o negativa, respectivamente. 4. Ejemplo 2: Programacin en PICC Lite 4.1. Descripcin. Este ejemplo ilustra la respuesta a estmulos externos utilizando interrupciones implementada en lenguaje C para el compilador PICC Lite. El programa permite encender y apagar un LED al presionar un botn pulsador. Antes de encender o apagar el LED este parpadea tres veces anunciando el cambio de estado. 4.2. Paso 1: Instalacin y Configuracin del Compilador PICC Lite. (1) Obtenga el MPLAB IDE en: http://www.microchip.com/ (2) Instale el MPLAB siguiendo todos los de la instalacin. (3) Obtenga el compilador PICC Lite en: http://www.htsoft.com/products/compilers /PICClite.php (4) Instale el compilador siguiendo todos los pasos de la instalacin.

3.6. Circuito del Ejemplo 1.

Figura 6. Circuito del ejemplo 1. (5) Una vez instalado el PICC Lite, inicie el MPLAB IDE y actualice la lista de compiladores para que funcione junto con PICC Lite mediante los siguientes pasos: (a) En la opcin de la barra de men elija Project/Set Language Tool Locations/HITECH Universal Toolsuite... (b) Elija la opcin HI-TECH Universal ToolSuite/Executables/HI-TECH/C Compiler y fije la ubicacin donde instalo el compilador picl.exe, por ejemplo: C:\Program\Files\HITECH\Software\PICC\lite\9.60\bin\picl.ex (c) Si es necesario agregue la ubicacin donde se ubiquen archivos include (.h) bajo la opcin HI-TECH Universal ToolSuite/Default Search Path & Directories/Include Search Path. 4.3. Paso 2: Creacin del Proyecto en MPLAB IDE. (1) Cree un directorio donde guardara los archivos del proyecto, por ejemplo: ej2. (2) Copie los archivos delay.h y delay.c ubicados en la directorio: C:\Program\Files\HITECH\Software\PICC\lite\9.60\samples o donde haya instalado PICC Lite a la carpeta del proyecto que creo en el paso anterior. (3) Elija la opcin de la barra de men Project/Project Wizard y luego presione Next.

(4) Elija el C seleccionando PIC16F84A. (5) Elija la herramienta de compilacin activa HI-TECH Universal ToolSuite y actualice la ubicacin del compilador de ser necesario. (6) Escriba el nombre del proyecto, por ejemplo:ej2, y luego fije la ubicacin del directorio del proyecto creado en el paso 1. (7) Seleccione los archivos delay.h y delay.c, y agrguelos al proyecto con el botn Add. (8) Si todas las opciones elegidas estn
1: #include <pic.h> 2: #include "delay.h" 3: 4: // Configuration Bits (a.k.a. Fuses) 5: // Estas lneas son opcionales, ya que se pueden fijar externamente 6: // en MPLAB IDE bajo la opcin de la barra de men 7: // <Configure/Configuration Bits...> 8: // Definiciones: 9: // RC/HS/XT/LP: Oscilador RC, High-speed XTAL, XTAL, Low-power XTAL 10: // WDT: Watchdog Timer (EN/DIS: Enable, Disable) 11: // PWRT: Power-up Timer (EN/DIS: Enable, Disable) 12: // PROTECT: Code write protection 13: __CONFIG(XT&WDTDIS&PWRTDIS&PROTEC T); 14: //__CONFIG(RC&WDTEN&PWRTEN&UNPROT ECT); 15: 16: //#define XTAL_FREQ 20MHZ 17: 18: #define PORTBIT(adr, bit) ((unsigned)(&adr)*8+(bit)) 19: 20: // Variables Globales 21: static volatile bit led @ PORTBIT(PORTB,7); 22: static volatile bit boton = 0; 23: 24: // Funcion Interrupcion

conformes, presiones Next, de lo contrario retroceda a los pasos anteriores y haga las correcciones necesarias. (9) Elija la opcin de la barra de men File/New para crear el archivo que contendr el programa del ejemplo. Escriba el cdigo que se muestra a continuacin y guarde el archivo con extensin .c, por ejemplo con el nombre ej2.c en el directorio del proyecto. Para guardar el archivo utilice la opcin File/Save As.
25: static void interrupt isr(void) 26: { 27: if(INTF){ // -Flag Interrupcin en pin INT -28: // INTE = 0; // Deshabilita interrupciones en pin INT 29: boton = 1; // Boton presionado 30: INTF = 0; // Limpia flag de interrupcin INTF 31: } 32: } 33: 34: // Rutina Parpadeo 35: void blink(void){ // Parpadea el una veces antes de cambiar 36: // de estado 37: char i; 38: for(i=0;i<5;i++){ 39: DelayMs(125);} 40: led = !led; 41: for(i=0;i<5;i++){ 42: DelayMs(255);} 43: led = !led; 44: for(i=0;i<5;i++){ 45: DelayMs(125);} 46: led = !led; 47: for(i=0;i<5;i++){ 48: DelayMs(255);} 49: led = !led; 50: } 51: 52: // Rutina Principal 53: void main(void){ 54: led = 1; 55: // OPTION = 0b00000111; // Fija PS0-PS2 Pre-escaladores del 56: // Watchdog Timer WDTR 57: TRISB = 0b00000001; // Fija el pin RB0 en como entrada

58: // (en alta impedancia). 59: INTE = 1; // Habilitacion de interrupciones externas. 60: GIE = 1; // Habilitacion global de interrupciones. 61: // ei(); // Habilita todos los tipos de interruptciones 62: // di(); // Deshabilita todas las interrupciones 63: 64: for(;;){ // -- Loop sin fin -

65: if(boton){ // Boton presionado 66: boton = 0; // Limpia flag del boton presionado 67: led = !led; // Cambia el estado del led 68: DelayUs(10); // Espera 10 microsegundos 69: blink(); 70: // INTE = 1; // Habilita interrupciones en pin INT 71: } 72: } 73: }

Comentarios Generales del Programa: En la lnea 1 se incluye las definiciones generales para la compilacin empleando PICC Lite. Estas definiciones especifican direcciones de memoria de programa, interrupciones, puertos de entrada y salida de cada C.. En la lnea 2 se incluye el archivo delay.h especifico a este ejemplo con las definiciones de las funciones de retardo delayUs() y delayMs(). Estas funciones reciben como argumento un nmero entero entre 0 y 255 para generar retardos de microsegundos o milisegundos, respectivamente. En el caso de la funcin delayUs() se recomienda utilizar valores bastante menores a 255. En lenguaje C // indica el inicio de un comentario en una lnea. Comentarios de mltiples lneas pueden realizarse colocando /* al inicio y */ al final de la seccin de comentarios. En la lnea 13 se utiliza la macro __CONFIG() para fijar los bits de configuracin tambin conocidos como fuses (fusibles). Estos indican al C el tipo de oscilador, tpicamente un cristal (XT), la habilitacin del Watchdog Timer, la habilitacin delPower-up Timer y la proteccin contra escritura de la memoria. Esta lnea es opcional, si no se fija en el programa, los bits de configuracin debern fijarse mediante la opcin Configure/Configuration Bits... de la barra de men.

La lnea 16 muestra la manera de definir la frecuencia del cristal. Esta opcin ya fue agregada a las opciones de compilacin, por lo que no es necesaria en el cdigo. Si se quisiese definir en el cdigo, deber removerse de las opciones de compilacin y colocarse antes de los #include <...>, ya que es requerida por las rutinas de retardo especificadas en delay.h. La lnea 18 permite indicar un bit especifico de una direccin de memoria adr mediante el texto PORT(adr, bit). Como las direcciones de memoria son bytes, el valor de bit puede estar entre 0 y 7. En la lnea 21 se utiliza la definicin PORT(adr, bit) para asignar el bit 7 del puerto B a la variable led, es decir la variable led est asociada a RB7 en el pin 13. La variable botn se define de manera similar en la lnea 22 y se emplea ms adelante para indicar si el pulsador ha sido presionado o no. Ambas variables son declaradas como static volatile bit. El tipo bit indica que son un bit de un registro. El calificador volatile se utiliza para indicar al compilador que no est garantizado que la variables retendrn su valor entre llamadas sucesivas. Esto evita que el optimizador elimine mltiples referencias a las variables que de otro modo pudiesen ser consideradas redundantes, ya que eliminarlas podra alterar el comportamiento del programa. Todas las variables que estn asociadas

a puertos (pines) de entrada/salida o que son modificadas en rutinas de interrupcin siempre deben ser declaradas volatile. El calificador static se emplea para indicar al compilador que reserve una posicin fija de la RAM para almacenar la variable. Aquellas variables que no son static se crean en posiciones que son asignadas en forma dinmica a medida que se necesitan. Entre las lneas 25 y 32 se define la funcin interrupcin isr(void) empleando el calificador interrupt. El nombre de la funcin no tiene importancia. La funcin interrupcin es ejecutada cuando ocurre cualquiera de las interrupciones posibles, por ejemplo un overflow del timer o un cambio de estado en el pin RB0. La variable INTF (flag de interrupcin) cambiara de 0 a 1 cuando se produce una interrupcin externa en RB0 (pin 4). Otros flags de interrupcin son el del timer (T0IF) y las interrupciones por cambio de estado en alguno de los pines 4, 5, 6 o 7 del puerto B (RBIF). Todos estos flags, as como los bits de habilitacin de interrupciones GIE, INTE,

Figura 7. Rebote del botn. Las funcin blink(void) se utiliza para hacer parpadear el led cambiando su estado repetidas veces por periodos de tiempo controlados por la funcin DelayMs(...). La funcin main(void) contiene parte del programa principal. En primer lugar se enciende el LED colocando su estado en 1 (lnea 54). En la lnea 57 se fija el pin RB0 como una entrada. El registro

T0IE, RBIE, son bits del registro INTCON. Ms informacin sobre las interrupciones y su manejo se pueden encontrar en la hoja de especificaciones del C PIC16F84 o tambin en: http://www.mikroe.com/en/books/picbook/ 2_07chapter.htm En el cdigo del programa la funcin de interrupcin se encarga de reconocer el evento colocando nuevamente en 0 el flag de interrupcin INTF y colocando la variable botn en 1 para indicar que el botn fue presionado. La des habilitacin de la interrupciones se puede realizar fijando INTE en 0 como se muestra en la lnea 28. Sin embargo, en la prctica las funciones de retardo hacen innecesaria la lnea 28, por esta razn ha sido comentada. El propsito de deshabilitar las interrupciones externas es evitar nuevas interrupciones por rebotes del botn pulsador. El rebote de un botn se refiere a las oscilaciones que se producen antes de que el botn se cierre completamente y la tensin se nivele en su valor final. Este fenmeno se muestra en la figura 7. TRISB se utiliza para indicar los pines del puerto B que son de alta impedancia (entradas). Siempre al iniciar todo programa es importante fijar los bits que sern utilizados como entradas de los puertos A y B. Esto se realiza asignando un 1 a los bits correspondientes de los registros TRISA y TRISB. Luego se habilitan las interrupciones (lneas 59 y 60). Una alternativa es utilizar la funcin ei() comentada en la lnea 61. Por ltimo se inicia un loop sin fin, el cual permanentemente est detectando el estado de la variable botn, la cual cambiara a 1 si ocurre una interrupcin externa. De ser as, se reconoce que el botn pulsador fue presionado colocando la variable de estado botn nuevamente en 0. Luego, el estado de la variable led se invierte mediante el operador ! de negacin, es decir si estaba en 0 se coloca en 1, y si estaba en 1 se coloca en 0. Antes de cambiar de estado finalmente, se hacer parpadear al LED

invocando la funcin blink(void) creada para dicho propsito. La lnea para volver habilitar las interrupciones (lnea 70) fue comentada, puesto que estas no son deshabilitadas en ningn momento. Si estas fuese deshabilitadas por la funcin interrupcin en la lnea 28, entonces sera necesario volverlas a habilitar en la lnea 70 para poder reconocer nuevas interrupciones. (10) Agregue el archivo con el cdigo en lenguaje C (creado en el paso anterior al proyecto) empleando la opcin Project/Add Files to Project..., y (11) De la lista de archivos del proyecto, seleccione con el botn derecho del mouse el ttulo del proyecto, por ejemplo ej2.mcb. Del men desplegado elija la opcin Save para grabar el proyecto. 4.4. Paso 3: Compilacin del Proyecto con PICC Lite. (1) Seleccione la opcin Project/Build Options.../Project. Luego seleccione la seccin Compiler y agregue la siguiente definicin de macro: XTAL_FREQ=20MHZ Esto agregara la opcin de compilacin DXTRAL_FREQ=20MHZ (ver el paso siguiente). Alternativamente puede definir la macro con el pragma: #define XTAL_FREQ 20MHZ antes de colocar las lneas #include <...># en el cdigo del programa. La definicin de esta macro es necesaria para ajustar el ciclo de operacin de las rutinas de retardo a la frecuencia del cristal oscilador. (2) Existen dos opciones para compilar el programa: MPLAB IDE: Para compilar el proyecto seleccione la opcin de la barra de men Project/Build o presione las teclas CTRL+F10. Se abrir una ventana con el nombre Output, la cual mostrara el estado de la compilacin. Lnea de Comando: Para compilar el proyecto para la versin actual del PIC16F84, el PIC16F84A, con un cristal

seleccione el archivoej2.c creado en el paso anterior. Verifique que el tipo de archivo esta fijado en Source (*.c, *.as) y que la opcin Auto esta seleccionada. Presione Open, esto deber agregar el archivo a a seccin Source Files en la ventana con la lista de archivos del proyecto. Otra manera de agregar un archivo es seleccionando con el botn derecho del mouse la seccin deseada en la lista de archivo del proyecto. En este caso, la seccin sera Source Files. Del men desplegado elija la opcin Add Files y siga los pasos ya explicados en este punto para seleccionar el archivo. de 20 MHz desde la lnea de comando en una ventana DOS ejecute las siguientes instrucciones: picl --chip=16F84A DXTAL_FREQ=20MHZ -C delay.c picl --chip=16F84A DXTAL_FREQ=20MHZ -C ej2.c picl --chip=16F84A DXTAL_FREQ=20MHZ -oej2.cof -mej2.map delay.obj ej2.obj Alternativamente puede ejecutar las instrucciones con ms opciones, por ejemplo, fijando el formato de los mensajes de error y advertencias, la generacin de cdigo Assembly, definiendo el tipo de dato para los caracteres, etc., como se muestra a continuacin. picl -q -g --asmlist --chip=16F84A "--errformat=Error [%n] %f; %l.%c %s" "--msgformat=Advisory[%n] %s" "--warnformat=Warning [%n] %f; %l.%c %s" -P --char=unsigned -DXTAL_FREQ=20MHZ -C delay.c picl -q -g --asmlist --chip=16F84A "--errformat=Error [%n] %f; %l.%c %s" "--msgformat=Advisory[%n] %s" "--warnformat=Warning [%n] %f; %l.%c %s" -P --char=unsigned -DXTAL_FREQ=20MHZ -C ej2.c picl -q -g --asmlist --chip=16F84A "--errformat=Error [%n] %f; %l.%c %s" "--msgformat=Advisory[%n] %s"

"--warnformat=Warning [%n] %f; %l.%c %s" -P --char=unsigned -DXTAL_FREQ=20MHZ -oej2.cof mej2.map delay.obj ej2.obj Es importante considerar que las lneas anteriores deben ser ejecutadas en una sola lnea. Por razones de espacio estas fueron divididas en tres lneas en este documento. En ambos casos la compilacin se ejecutar por partes, primero de los archivos con las definiciones para las funciones de retardo delayUs() y delayMs(). Luego se compila el cdigo principal del ejemplo. Finalmente, se realiza el proceso de unin (linking) de los cdigos objetos delay.obj y ej2.obj para generar el archivo ej2.hex con el cdigo de mquina para el C. En todos los casos la compilacin se realiza con todas las optimizaciones (espacio, velocidad, Assembler) activas. Es importante que estas estn activas para este ejemplo, ya que las funciones de retardo las requieren. En otros casos, es posible desactivar o controlar el nivel de optimizaciones con la opcin --OPT<=type>, donde <=type> puede tomar distintos valores que se especifican en el manual del compilador PICC Lite. 4.5. Paso 4: Programacin del C. Puede programar el C usando el MPLAB IDE si posee algn programador Microchip como el PICSTART Plus. A continuacin se explican los pasos de programacin desde MPLAB IDE asumiendo que ha realizado los pasos descritos en la etapa de creacin del proyecto y compilacin. Si el archivo .hex fue creado usando el PICC mediante compilacin fuera del ambiente MPLAB IDE, deber entonces realizar los siguientes pasos: (1) Verifique las opciones de configuracin de MPLAB IDE. En particular verifique en la opcin Configure/Select Device... de la barra de men que el dispositivo corresponde al

C PIC16F84 o 16F84A. Verifique tambin que los bits de configuracin de la opcin Configure/Configuration Bits... de la barra de men son: Oscillator = XT,Watchdog Timer = Off, Power Up Timer = Off, Code Protect = On. (2) Seleccione el hardware programador, por ejemplo el PICSTART Plus, empleando la opcin Programmer/Select Programmer de la barra de men. (3) Borre la memoria del C presionando el icono de pgina en blanco a C o la opcin Programmer/Erase Flash Device de la barra de men. (4) Programe el dispositivo presionando el icono de pgina llena (amarilla) a C o la opcin Programmer/Program de la barra de men. (5) Normalmente el programador entregara un mensaje indicando si la programacin fue exitosa. Sin embargo, si desea verificar si efectivamente la programacin se realiz en forma correcta, emplee el botn de verificacin (pgina con check) o la opcin Programmer/Verify de la barra de men. Tambin puede ver los contenidos de la memoria del C utilizando la opcin View/Program Memory de la barra de men. Si la programacin se realiz en forma correcta tanto el cdigo compilado como el cdigo ledo de vuelta del C deben tener el mismo checksum que se muestra en la barra de men del MPLAB IDE. 4.6. Circuito del Ejemplo 2. En la figura 8 se muestra el circuito para el Ejemplo 2. Como se puede apreciar en la figura, el circuito de este ejemplo es muy similar al del Ejemplo 1. La nica modificacin al circuito del ejemplo anterior es la adicin de un botn pulsador B1 entre 5 V y RB0/INT con una resistencia Pull-Down R3. La resistencia Pull-Down mantiene el puerto en LOW (0), mientras el pulsador no sea presionado y cambie la seal a HIGH (1). Si se desea que la interrupcin se genere al soltar el botn, entonces debern

intercambiarse la resistencia Pull-Down por el botn pulsador.

Las aplicaciones posibles del PIC16F84 solo estn limitadas por la imaginacin. En Internet pueden encontrarse aplicaciones sorprendentemente creativas a pesar de la simplicidad y restricciones de este C bsico. 5.1. PIC16F87x. El PIC16F87x es el ms popular para aplicaciones de nivel intermedio, y es una excelente opcin cuando se requieren ms lneas de entrada/salida, convertidores A/D, seales PWM, comunicacin serial por hardware, entre otros aspectos. Existen versiones con distintas caractersticas como el tamao de la memoria y nmero de pines. Una vez que se ha dominado adecuadamente el PIC16F84, adquirir los conocimientos para utilizar este nuevo PIC es considerablemente ms fcil. El costo de la versin PIC16F877, que es la que cuenta con ms caractersticas de la serie, es aproximadamente el doble que el del PIC16F84 con valores entorno a USD $10 versus USD $ 5. 5.2. Freescale MC68HC08. Otros fabricantes pueden tener productos considerablemente diferentes, tanto en su funcionamiento, instrucciones de CPU o mtodo de programacin. Sin embargo, los Cs de nivel de entrada (entry-level) tienen mucho en comn. Este es el caso de los Cs Freescale MC68HC08 (originalmente Motorola HC08). Estos fueron introducidos al mercado para competir con los Cs de Microchip. A pesar que actualmente la popularidad y disponibilidad de herramientas de software para estos Cs es an menor que la de los Cs PIC, esta familia de dispositivos tiene ciertos atractivos, como un menor costo frente al PIC16F84, convertidores A/D en casi todas sus versiones, seales PWM, oscilador interno, y la disponibilidad gratuita del popular entorno de desarrollo CodeWarrior. Adems estn disponibles en encapsulados de 8 y 16 pines. Para

Figura 8. Circuito del ejemplo 2. 5. Desarrollos ms all de este Documento existe una variedad de Cs y posibles aplicaciones tan grande que puede parecer abrumadora al punto de dificultar o confundir la decisin de cmo abordar nuevos temas y cul es el mejor camino a seguir. En esta seccin se sugieren algunos caminos para involucrarse en el desarrollo de aplicaciones ms complejas. Para dominar el PIC16F84 u otros Cs es esencial conocer y comprender a cabalidad la hoja de datos del C provista por el fabricante. Microchip provee tambin de documentos llamados Application Notes (Notas de Aplicacin), los cuales describen tcnicas especficas, aplicaciones y su implementacin con un gran nivel de detalles. Estos documentos son muy ilustrativos, fciles de comprender y mantienen la rigurosidad tcnica de los fabricantes. Por otro lado, existe una gran cantidad de ejemplos y recursos en libros y la Internet. Consulte las numerosas referencias incluidas al final de este documento. Se recomienda en particular leer y hacer los ejemplos presentados en [11]. En la seccin de educacin de Microchip tambin es posible encontrar referencias de varios libros sobre los Cs PIC [23].

mayor informacin consulte la seccin de micro controladores de Freescale (http://www.freescale.com/). Agradecimientos Este tutorial fue posible gracias a una versin anterior del tutorial preparad por Juan Pablo

se proporciona (usando MPLAB + HITECH C compilador). Se requieren los pasos siguientes para configurar los bits de configuracin para PIC12F675. Paso 1: El primer paso para empezar a escribir los bits de configuracin es comprobar "Caractersticas especiales de la CPU" en la seccin de la hoja de datos del PIC12F675. En esta seccin, captulo primero se trata de "bits de configuracin". Usted debe leer esta seccin y determinar cules son los valores que usted quiere poner en los bits de configuracin. Paso 2: Abra el archivo "pic12f675.h" en el directorio " C: \ Archivos de programa \ HITECH Software \ PICC \ 9.83 \ include " . En el inicio de se definen este archivo de configuracin bits macros. Instantnea de estas macros se muestra a continuacin.

Cmo establecer PIC12F675 bits de configuracin en el cdigo?


Este mensaje proporciona el mtodo para establecer los bits de configuracin en el cdigo para el micro controlador PIC12F675. Usted tiene que fijar los bits de configuracin con el fin de hacer que el trabajo micro controlador PIC correctamente. Aqu voy a explicar el procedimiento de seleccin de los bits de configuracin para el PIC12F675. Un cdigo de ejemplo tpico para ajustar los bits de configuracin en el cdigo tambin

Figura 1. Bits de configuracin configurar macros

Paso 3: Aqu tenemos que elegir macros adecuadas para ser utilizadas en el cdigo para configurar correctamente los bits de configuracin. En la figura anterior, es claro que si quiero elegir oscilador interno del PIC12F675 con el mantenimiento de GP4 y GP5 como propsito general pines IO , entonces tengo que seleccionar la macro FOSC_INTRCIO. Del mismo modo, para convertir watchdog off, WDTE_OFF macro se puede utilizar. De esta manera se pueden seleccionar todas las macros. Para cada bit de configuracin que tenemos que elegir entre algunos macros. Por ejemplo, para el temporizador de vigilancia permitir a poco, tenemos que elegir entre WDTE_ON o WDTE_OFF. Si queremos activar el temporizador de vigilancia, entonces WDTE_ON macro se debe utilizar en el cdigo. Pero si

queremos desactivar la vigilancia, entonces WDTE_OFF macro se debe utilizar en el cdigo para establecer el bit de configuracin en consecuencia. Del mismo modo, puede seleccionar macros adecuadas para otros bits de configuracin.

Cdigo
Podemos programar los bits de configuracin en el cdigo utilizando __CONFIG macro[1] . El cdigo para hacer un parpadeo del LED con PIC12F675 [2] A continuacin se muestra en la figura. Usted puede ver cmo __CONFIG se utiliza macro aqu, para ajustar los bits de configuracin que desee en el cdigo.

Hay que colocar la __CONFIG macro fuera de la funcin principal, preferiblemente en el inicio del archivo. Todas las macros seleccionadas se separan con la Y (AND operador) en el cdigo. En este cdigo de bits de configuracin seleccionados para PIC12F675 son [3] , Oscilador interno se selecciona con GP4 y GP5 como pines IO. Watchdog est desactivado. Poder temporizador est activada. GP3/MCLR pin es utilizado como IO pin digital, en lugar de un pin de reset maestro. Deteccin a Brown est habilitada.

Proteccin del cdigo de memoria del programa est desactivada. Proteccin del cdigo de memoria de datos est desactivado. Mediante este procedimiento se puede escribir fcilmente los valores de bit de configuracin en el cdigo. Puedes dejar tus comentarios en la seccin de comentarios a continuacin.

Cmo escribir bits de configuracin para micro controladores PIC?


Muchas veces nos enfrentamos al problema de escribir los bits de configuracin (configuracin de fusibles) para micro controladores PIC. Este mensaje proporciona una manera fcil de resolver este problema con la ayuda de un ejemplo de PIC18F452 micro controlador (usando MPLAB con HI-TECH compilador C), pero el mtodo se puede aplicar a cualquier micro controlador PIC. Paso 1: Para cualquier configuracin de bits de configuracin del microcontrolador PIC se dan en la seccin "Caractersticas especiales de la CPU" en la hoja de datos. En primer lugar tenemos que entender lo que la configuracin de bits de configuracin exactas que necesitamos para nuestro controlador PIC de la hoja de datos. Paso 2: Despus de explorar la configuracin de bits de configuracin en la ficha tcnica, tenemos que buscar lo que el archivo de cabecera exacta se est utilizando en el cdigo. Por ejemplo, para cualquier microcontrolador PIc incluimos htc.h archivo en el proyecto. Este archivo se encuentra en la ruta de acceso " C: \ Archivos de programa \ HI-TECH Software \ PICC-18 \ PRO \ 9.65 \ include . "(tengo PRO C18 HI-TECH instalado para microcontrolador PIC18F452 Para PIC16, PIC12 etc El camino ser " C: \ Archivos de programa \ HI-TECH Software

\ PICC \ PRO \ 9.65 \ include "). Busque el archivo y abrirlo. Tendr algo as como:

Figura 1. archivo htc.h para microcontroladores PIC

Por HI-TECH PICC-18 " pic18.h se est incluyendo el archivo ". Abrir este archivo (No estar presente en la misma carpeta). Busque el nombre de su microcontrolador PIC en este archivo (Use CTRL + F y escribir el nmero de controlador, por ejemplo 18F452 y apriete buscar). Por ejemplo, para el PIC18F452 que era algo as como:

Figura 2. Archivo PIC18.h para microcontroladores PIC

As que en realidad " pic18fxx2.h archivo "se utiliza para el microcontrolador PIC18F452. Paso 3: Abra el " pic18fxx2.h archivo "y encontrar la configuracin de fusibles en el mismo. Se ver algo como esto,

Figura 3. Bits de configuracin de macros

Aqu puedes encontrar todas las macros necesarias para escribir los bits de configuracin. Por ejemplo, para PIC18F452 he seleccionado HSPLL (HS + PLL activado) etc. Paso 4: En el manual de HI-TECH C para escribir bits de configuracin se menciona que (figura siguiente),

La Figura 4. Manual de HI-TECH C de la configuracin de programacin de los bits

Por lo tanto, podemos programar los bits de configuracin en el cdigo utilizando el '__CONFIG macro '. Por ejemplo, hay 7 palabras de configuracin del microcontrolador PIC18F452, despus de seleccionar los ajustes de configuracin que desee el cdigo resultante fue,

Figura 5. Simple cdigo toggle LED para PIC18F452

Ejemplos de #define

En el cdigo anterior, los ajustes seleccionados para PIC18F452 son,


Conmutacin oscilador se desactiva y se utiliza el modo SA junto con PLL. Brownout, PWRT y WDT se desactivan. Mdulo CCP2 est unido a la clavija de RC1. DEBUG est activada, programacin de bajo voltaje se activa y la pila sobre el flujo provocar reiniciar. La memoria es sin proteccin (legible). La memoria se puede escribir. Boot Block no protegido. Puedes dejar tus comentarios en la seccin de comentarios a continuacin.

#define x y: le indica al preprocesador reemplace el texto "x" por el texto "y" justo antes de la compilacin. #define PI 3.1415926535897932384626 -Esto hace que donde aparezca el texto "PI", el compilador entienda el nmero 3.1415926535897932384626*/ #include carga ficheros de inclusin (include files), ficheros de cabecera (header files) o simplemente cabeceras, y los inserta en el cdigo fuente (en el punto de la directiva) que desde ese momento queda sustituida por el texto contenido en el fichero. Tiene tres versiones: #include <nombre_de_cabecera> #include "nombre_de_cabecera" #include macro_identificador Ejemplos #include <stdio.h> #include "D:\Cabeceras\Cpp\versiones.h" #include VERSIONUS ..... #define VERSIONUS "D:\Cabeceras\Cpp\ VersionUs." En la primera y la segunda versin de la sintaxis no se intenta ninguna macrosustitucin. En otras palabras: nombre_de_cabecera debe ser un nombre vlido de fichero con una extensin. Tradicionalmente esta extensin es .h (por "header"). La diferencia entre ambas se limita al mecanismo empleado para localizar el fichero a incluir: La primera forma supone que el fichero, generalmente con la extensin .h, ser buscado en el directorio de cabeceras estndar (generalmente /usr/include/CC). La segunda forma se utiliza para cualquier fichero situado en directorio distinto al de cabeceras estndar. Debe incluir de forma explcita su "paht" para que pueda ser cargado por el preprocesador. La ausencia de "path" supone el directorio actual (donde est el fuente que se compila). En estos casos solo se busca en el directorio indicado. La tercera versin supone que el primer carcter no blanco despus de #include no

NOTA: solucin al error: Halting build on first failure as requested porque no se incluye el archivo htc.h. RTA: PICC-18 versin 9.50, as como PICC 9.50, dsPICC 9.60, y las ltimas versiones de otros compiladores, tienen este archivo. PICC-18 8.35PL3 y versiones anteriores no lo hacen - se debe reemplazar la lnea de cdigo: -------------# Include <htc.h>-----------------Con la lnea de cdigo: -----------# Include <pic18.h>----------------O la lnea: -------------# Include <pic.h>------------------(O, por supuesto, la actualizacin a la ltima versin del compilador, pero no nos fuerce a hacer eso). -------------------Marcos Pappin - HI-TECH Software
DIRECTIVAS C: #define: es una directiva del preprocesador de C que sirve para definir constantes literales o macros. En C y C++, las lneas de cdigo que empiezan con # son directivas del preprocesador. Este se encarga no de compilar, sino de realizar modificaciones en el texto del cdigo fuente, como reemplazar un smbolo definido con #define por un texto, o incluir un archivo en otro archivo, con #include. Tambin para indicar parmetros al compilador, con #pragma.

es < (60) ni " (34) y que hay definida una macro que puede transformarmacro_identificador en un nombre de cabecera vlido en el formato <nombre_de_cabecera> o "nombre_ de_cabecera". En cualquiera de los tres casos el resultado es el mismo. El preprocesador elimina la lnea #include y la reemplaza con el texto completo del fichero de cabecera en dicho punto [1]. Por tradicin los #include se colocan siempre al comienzo del fichero fuente, pero desde luego su situacin tiene influencia en el mbito y duracin de los identificadores que haya en el fichero a incluir.

Вам также может понравиться