Autor Tema: Ayuda con lector RFID & 18f458  (Leído 1104 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado learsi

  • PIC10
  • *
  • Mensajes: 2
Ayuda con lector RFID & 18f458
« en: 27 de Diciembre de 2011, 22:01:25 »

Que tal amigos del foro, soy nuevo en esto de rfid, tengo un problema con este codigo, no puedo lograr que funcione. Lo que intento realizar es leer diferentes tarjetas transponders de rfid, lograr activar un display contador con salida en rb0 cada se cumpla la condicion del if que esta al final del switch,  al obtener un codigo rfid de cada grupo . el modulo es de texas instruments RI-K3A-001A-00; el printf que viene en el codigo es el comando de lectura para este modulo, la comunicacion serie funciona bn ambos sentidos, lo que necesito es que todo el tiempo este leyendo; pero este funciona bien solo una vez, mi duda es como hago para ciclarlo y esté todo el tiempo leyendo.. 
Nota el dato se encuentra en el cuarto byte de la cadena que se lee.
01 09 0C F3 B0 8F 0A 00 00 00 00 C3

  A continuación coloco el codigo..... :(

Código: [Seleccionar]

#use delay(clock= 10000000)
#fuses HS,NOWDT,NOPROTECT,NOPUT,NOBROWNOUT,NOLVP,NOCPD,NODEBUG,NOWRT
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7, bits=8,ERRORS)

char z=0;
int const lenbuff=20;

int i,n;
char base,base1,base2,base3,base4,base6;
char string[12];     


#int_rda
void serial_isr() {

   base=0x00;
   base1=0x00;
   base2=0x00;
   base3=0x00;
   base4=0x00;
   base6=0x00;
   
      if(kbhit()){
   
      for(n=0;n<12;n++)           // n<12
         {
         string[n]=getchar();   
         base=string[0];         //01
         base1=string[1];        //09
         base2=string[2];        //0D     
         base3=string[3];        //AB  <---DATO
         base4=string[4];
         base6=string[6];
         
                   
       
         
         }
         
      }

}


void main()
{
 
   
   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_CLOCK_DIV_2);
   setup_psp(PSP_DISABLED);
   setup_spi(SPI_SS_DISABLED);
   setup_wdt(WDT_OFF);
   setup_timer_0(RTCC_INTERNAL);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_timer_3(T3_DISABLED|T3_DIV_BY_1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);


char focos=0;
char sockets=0;
char clavijas=0;
char combinados=0;

      inicio:
      int x=0;
      int  c3=0;
      output_high(PIN_C0);  //NONE
      output_high(PIN_C1);
      c3=c3+1;
      goto orden;                                                                                                                                                                                                                                                                                                                                                 
     
      uno:
      output_low(PIN_C0);  //MUX ANT 1
      output_low(PIN_C1);
     
      c3=c3+1;
     
     // for(n=0;n<20;n++)
     // delay_ms(100);
     
      goto orden;
     
      dos:
      output_high(PIN_C0);  //MUX ANT 2
      output_low(PIN_C1);
     
      c3=c3+1;
     
      //for(n=0;n<20;n++)
      //delay_ms(100);
     
      goto orden;
     
      tres:
      output_low(PIN_C0);  //MUX ANT 3
      output_high(PIN_C1);
     
      c3=c3+1;
     
      //for(n=0;n<20;n++)
      //delay_ms(100);
     
      goto orden;
   
//<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>     

   orden:
     
     enable_interrupts(global);
     enable_interrupts(int_rda);
 
     
           
       printf("%c%c%c%c%c", 0x01, 0x02, 0x08, 0x32, 0x38);
       delay_ms(200);
       
       // write_eeprom(z,base3);
       // z++;
         
     
                                   
 
 
      switch(base3)           // ANTENA 1     focos
             {                   
          case 0x8D:      // Transponder 1     //
               focos =100;
               break;
          case 0xD6:      // Transponder 2
               focos =100;
               break;
          case 0xEC:      // Transponder 3
               focos =100;
               break;     
          case 0xD4:      // Transponder 4
               focos =100;
               break;
          case 0xE7:      // Transponder 5
               focos =100;
               break;
          case 0x76:      // Transponder 6
               focos =100;
               break;
          case 0x9F:      // Transponder 7
               focos =100;
               break;
          case 0x81:      // Transponder 8
               focos =100;
               break;
          case 0x7F:      // Transponder 9
               focos =100;
               break;
          case 0xEB:      // Transponder 10
               focos =100;
               break;
          case 0x82:      // Transponder 11
               focos =100;
               break;
          case 0x4F:      // Transponder 12
               focos =100;
               break;       
          case 0x0F:      // Transponder 1      //0x31    ANTENA 2  sockets
               sockets = 10;
               break;
          case 0x77:      // Transponder 2
               sockets = 10;
               break;
          case 0x3A:      // Transponder 3
               sockets = 10;
               break;
          case 0xC4:      // Transponder 4
               sockets = 10;
               break;
          case 0xA6:      // Transponder 5
               sockets = 10;
               break;
          case 0x83:      // Transponder 6
               sockets = 10;
               break;
          case 0xE0:      // Transponder 7
               sockets = 10;
               break;
          case 0xF3:      // Transponder 8
               sockets = 10;
               break;
          case 0x18:      // Transponder 9
               sockets = 10;
               break;
          case 0xC3:      // Transponder 10
               sockets = 10;
               break;
          case 0xDE:      // Transponder 11
               sockets = 10;
               break;
          case 0x36:      // Transponder 12
               sockets = 10;
               break;           
          case 0x8E:      // Transponder 1       // ANTENA 3   clavijas
               clavijas=1;
               break;
          case 0xDD:      // Transponder 2
               clavijas=1;
               break;
          case 0x01:      // Transponder 3
               clavijas=1;
               break;
          case 0xDC:      // Transponder 4
               clavijas=1;
               break;
          case 0x19:      // Transponder 5
               clavijas=1;
               break;
          case 0x96:      // Transponder 6
               clavijas=1;
               break;
          case 0xBC:      // Transponder 7
               clavijas=1;
               break;
          case 0xDF:      // Transponder 8
               clavijas=1;
               break;
          case 0xF5:      // Transponder 9
               clavijas=1;
               break;
          case 0xF4:      // Transponder 10
               clavijas=1;
               break;
          case 0x99:      // Transponder 11
               clavijas=1;
               break;
          case 0x0E:      // Transponder 12
               clavijas=1;
               break;
          case 0x75:      // Transponder 1C
               combinados=2;
               break;
          case 0x51:      // Transponder 2C
               combinados=2;
               break;
          case 0xC2:      // Transponder 3C   
               combinados=2;
               break;
          case 0x50:      // Transponder 4C
               combinados=2;
               break;     
               default:  output_high(PIN_C4);    //B0
               break;   
             } 
             
         if(input(pin_a0)==0)
            {delay_ms(200); //antirebote   //400
               output_high(PIN_B1);}
   
                                     
         
         int8 a1,a2,x1,x2,x3,x4;
         if(focos==1)
         {x1=100;}
         if(sockets==1)
         {x2=10;}
         if(clavijas==1)
         {x3=1;}
         if(combinados==1)
         {x4=2;}
         
         
         
         a1=(focos)+(sockets)+(clavijas);
         a2=(focos)+(combinados);
         
           
               
         if((a1==111)||(a2==102)) 
         {output_high(PIN_B0);
         
         goto inicio;}
         else
                       
                                             
         if (c3==1)   
            {goto uno;}   
         if (c3==2)   
            {goto dos;}         
         if (c3==3)   
            {goto tres;}
         if (c3==4)   
            {goto inicio;}
       
   
     

}


Espero que me puedan ayudar, estoy un poco agotado, gracias.


 

anything