Example #1
0
File: main.c Project: bealr/MFRC522
void main(void) {
    
    int i;
    char status;
    char str[100];
    
    init(); // initialize PIC
    init_soft_uart();
    init_SPI(); 
    
    
    GIE = 0; // disable all PIC's interrupts 
    
    LATB2 = 0; // LED0 off
    for (i=0;i<100;i++) __delay_ms(10);
    
    uart_write_s("init ok !\n\r");
    
    init_RC522();
        
    while (1)
    {
        status = MFRC522_Request(PICC_REQIDL, str); // check if card is present
        if (status == MI_OK)
        {
            uart_write_s("ok card ! \n\r");
            
            if (MFRC522_ReadCardSerial(str) == MI_OK) // get UID
            {
                uart_write_s("UID = ");     // and display it
                uart_write_hex_c(*(str+0));
                uart_write_hex_c(*(str+1));
                uart_write_hex_c(*(str+2));
                uart_write_hex_c(*(str+3));
                uart_write_s("\n\r");
            }
            
            LATB2 = 1;                         // blink LED0
            for (i=0;i<10;i++) __delay_ms(10); // .
            LATB2 = 0;                         // .
            for (i=0;i<10;i++) __delay_ms(10); // .
            LATB2 = 1;                         // .
            for (i=0;i<10;i++) __delay_ms(10); // .
            LATB2 = 0;                         // .
            for (i=0;i<10;i++) __delay_ms(10); // .
            LATB2 = 1;                         // .
            for (i=0;i<10;i++) __delay_ms(10); // .
            LATB2 = 0;                         // .
            for (i=0;i<10;i++) __delay_ms(10); // .
        }
        
        //for (i=0;i<50;i++) __delay_ms(10);
        LATB2 = 1;      // Blink LED0, visual normal operation works, before watchdog dev
        __delay_ms(10);
        LATB2 = 0;
        __delay_ms(10);
    }
    
    return;
}
void main()
{
  char UID[6];
  unsigned char TagType;
  char size;
//  char i;
  UART_init();
  //Inicializa Soft SPI
   SPI_init(0);

  //inicializa o modulo RFID
  MFRC522_Init();
  
  TRIS_LED1 = 0;
  TRIS_BUTTON = 1;
  TRIS_OUTPUT1 = 0;
  for(int i=0;i<10;i++)
  {
      LED1 = 1;
      __delay_ms(250);
      LED1 = 0;
      __delay_ms(250);
  }
  while(1)
  {
      if(BUTTON == 0)
      {
          num++;
      }
      if(num==8)
      {
          clear_list_cards();
          printf("Lista apagada\n\r");
          num=0;
          LED1 = 1;
          for(char i=0;i<10;i++)__delay_ms(100);
          LED1 = 0;
      }
      //Letura
    if( MFRC522_isCard( &TagType ) )
    {
      //Exibe o tipo do cartão na serial
      printf("Tipo de Tag: %u\n\r",TagType);
      //Faz a leitura do numero de serie
      if( MFRC522_ReadCardSerial( UID ) )
      {
        //Só mostra que um cartão foi lido
        LED1 = 1;
        printf("Codigo: ");
        for(int i=0; i < 5; i++)
        {
            printf("%X ",UID[i]);
        }
        printf("\n\r");

        //Gravação
        if(BUTTON == 0)
        {
            record_card(UID);
            num = 0;
            printf("Cartão cadastrado\n\r");
            LED1=1;
            __delay_ms(250);
            LED1=0;
        }
        //Comparação
        if(compare_card(UID))
        {
            OUTPUT1=1;
            printf("Cartão reconhecido!\n\r");
            for(char i=0;i<8;i++)__delay_ms(250);//2 segundos
            OUTPUT1=0;
        }
        else
        {
            printf("Cadastre o cartão\n\r");
        }
//        size = MFRC522_SelectTag( UID );
      }
      //Estado de hibernação
      //MFRC522_Halt();
    }
    LED1 = 0;
    __delay_ms(250);
  }
}