Instrucciones de Preprocesado en PICC

Bueno les cuento , un problema que tuve y pude resolver, por medio de las instrucciones de preprocesado, ya las habia escuchado varias veces y me habian dicho que eran muy utiles en especial para la depuracion…

El problema era el siguiente con el PIC18LF26K22 quería depurar por medio del serial numero 2 es decir los pines B6 y B7, pero estos pines también se usan en la interrupción de cambio de puerto de RB4-RB7, entonces la solución fue cuando quería depurar utilizaba el puerto serial y deshabilitaba la interrupción de RB4-RB7, y cuando quería utilizar la interrupción de RB4-RB7 no utilizaba el puerto serial, y para utilizar el uno o el otro simplemente tenia que comentar una linea de codigo, bueno no mas explicaciones, el codigo:

// Licencia: GPL
#include <18LF26K22.h>
#device adc=16

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES WDT128                   //Watch Dog Timer uses 1:128 Postscale
#FUSES INTRC_IO                 //Internal RC Osc, no CLKOUT
#FUSES NOPLLEN                  //4X HW PLL disabled, 4X PLL enabled in software
#FUSES PUT                      //Power Up Timer
#FUSES NOBROWNOUT               //No brownout reset
#FUSES WDT_SW                   //No Watch Dog Timer, enabled in Software
#FUSES NOPBADEN                 //PORTB pins are configured as digital I/O on RESET
#FUSES NOMCLR                   //Master Clear pin used for I/O
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOXINST                  //Extended set extension and Indexed Addressing mode disabled (Legacy mode)

#use delay(int=8000000)

#define DEBUG     // Comment line out for no debug

#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8,stream=PORT1)

#ifdef  DEBUG
#use rs232(baud=9600,parity=N,xmit=PIN_B6,rcv=PIN_B7,bits=8,stream=DEBUG_S)
#endif

#use fast_io(B)
#use fast_io(C)

int1  ini;

#int_RB
void  RB_isr(void)
{
   ini=1;
}

#int_RDA
void  RDA_isr(void)
{

}

void main()
{
   int i;

   #ifdef  DEBUG
   set_tris_b(0b10111111); // con tx habilitado
   #else
   set_tris_b(0b11111111); // con tx deshabilitado
   #endif
   set_tris_c(0b10111111); // con tx habilitado
   ini = 0;
   setup_timer_3(T3_DISABLED|T3_DIV_BY_1);
   setup_timer_4(T4_DISABLED,0,1);
   setup_comparator(NC_NC_NC_NC);// This device COMP currently not supported by the PICWizard
   #ifndef DEBUG
   enable_interrupts(INT_RB);
   #endif
   #ifdef  DEBUG
   enable_interrupts(INT_RDA2);
   #endif
   enable_interrupts(INT_RDA);
   enable_interrupts(GLOBAL);
   setup_oscillator(OSC_8MHZ|OSC_INTRC|OSC_31250|OSC_PLL_OFF);

   fprintf(PORT1,__TIME__);
   #ifdef  DEBUG
   fprintf(DEBUG_S,"funciona...");
   #endif
   i=0;

   while (TRUE)
   {
      delay_ms(300);
      fprintf(PORT1,"%2u \n\r",i);
      if (ini == 1) {fprintf(PORT1,"Pulsador.. \n\r");ini=0;}
      i++;
   }
}

y listo si se quiere depurar tan solo se deja la linea habilitada la linea 19, en caso contrario simplemente se comenta esta linea

Acerca de desarr0ll0
Desarrollo libre para todos.....

Deja un comentario